[TUTO] piloter une caméra Tp-link Tapo

Bon bah je commence à avoir un script bien conséquent :slight_smile:
J’y vais à petits pas avec les fonctions que j’utilise et que je connais.
Ça donne ça côté tuile (pas du tout optimisée !)
:

Avec des toggles qui lient les commandes get/set adéquates, des listes quand le choix est autre que on/off, et une subtilité pour la liste des presets ) :je modifie la chaîne renvoyée par la fonction getPresets() pour la reformater dans la syntaxe attendue pour une liste (id1|valeur1; etc…) et un bloc code en parallèle copie cette chaîne dans la commande action setPresets pour que la liste soit dynamique (voir ce post).

Il faut encore que je vois comment je traite getFirmwareUpdateStatus, a priori c’est pas très utile sauf si update en cours (ou récent ?). Et que je vois comment faire pour que le bouton StartUpgradeStatus ne s’affiche que si isUpdateAvailable est différent de {}

#!/usr/bin/env python3

from pytapo import Tapo
import sys
  

user="*****"
password="*******"
host="192.168.***.**"
 
def move( X , Y ):
    tapo=Tapo(host, user, password)
    res ={}
    try :
	    res = tapo.moveMotor( X , Y )	
    except :
        print("Camera en butee (X ou Y)")
        res["error_code"] =-1
    if(res.get("error_code")==0) :
        print( 1 )
    else :
        print( -1 )

def getAlarmEnabled():
    tapo=Tapo(host, user, password)
    res=tapo.getAlarm()
    print(res["enabled"])

def getMotionDetection():
	try:
		tapo=Tapo(host,user,password)
		res=tapo.getMotionDetection() 
	except Exception:
		print("getMotionDetection KO")
	else:
		print(1 if res["enabled"] == "on" else 0)
        
def setMotionDetection(State):
    tapo=Tapo(host, user, password)
    try :
    	tapo.setMotionDetection(State)
    except Exception :
        print("setMotionDetection KO")
        
def reboot():
    tapo=Tapo(host, user, password)
    try :
    	tapo.reboot()
    except Exception :
        print("reboot KO")        
        
def getBasicInfo():
    tapo=Tapo(host, user, password)
    print(tapo.getBasicInfo())

def getLED():
    tapo=Tapo(host, user, password)
    res = tapo.getLED()
    print( 1 if res["enabled"] == "on" else 0 )
      
def setLED(State):
    tapo=Tapo(host, user, password)
    res ={}
    try :
        res = tapo.setLEDEnabled(State)
    except Exception :
        print("setLED KO")
        res["error_code"] =-1
    if(res.get("error_code")==0) :
        print( 1 )
    else :
        print( -1 )

def getPrivacyMode():
    tapo=Tapo(host, user, password)
    res = tapo.getPrivacyMode()
    print( 1 if res["enabled"] == "on" else 0 )

def setPrivacyMode(mode):
    tapo=Tapo(host, user, password)
    try :
        tapo.setPrivacyMode(mode)
    except Exception :
        print("setPrivacyMode KO") 

def getDayNightMode():
    tapo=Tapo(host, user, password)
    print(tapo.getDayNightMode())

def setDayNightMode(mode):
    tapo=Tapo(host, user, password)
    try :
        tapo.setDayNightMode(mode)
    except Exception :
        print("setDayNightMode KO") 
    
def getOsd():
    tapo=Tapo(host, user, password)
    print(tapo.getOsd())
      
def getModuleSpec():
    tapo=Tapo(host, user, password)
    print(tapo.getModuleSpec())
    
def getFirmwareUpdateStatus():
    tapo=Tapo(host, user, password)
    res=tapo.getFirmwareUpdateStatus()
    print(res)
    
def isUpdateAvailable():
    tapo=Tapo(host, user, password)
    res=tapo.isUpdateAvailable()
    print(res["result"]["responses"][0]["result"])
    
def getAllNotificationsEnabled():
    tapo=Tapo(host, user, password)
    res= tapo.getNotificationsEnabled()
    print(res["notification_enabled"])

def getRichNotificationsEnabled():
    tapo=Tapo(host, user, password)
    res= tapo.getNotificationsEnabled()
    print(res["rich_notification_enabled"])

def setAllNotificationsEnabled(State):
    tapo=Tapo(host, user, password)
    try :
    	tapo.setNotificationsEnabled(State, None )
    except Exception :
        print("setAllNotificationsEnabled KO")

def setRichNotificationsEnabled(State):
    tapo=Tapo(host, user, password)
    try :
    	tapo.setNotificationsEnabled(None, State )
    except Exception :
        print("setRichNotificationsEnabled KO")
        
def getBabyCryDetection():
	try:
		tapo=Tapo(host,user,password)
		res=tapo.getBabyCryDetection() 
	except Exception:
		print("getBabyCryDetection KO")
	else:
		print(1 if res["enabled"] == "on" else 0)
        
def setBabyCryDetection(State):
    tapo=Tapo(host, user, password)
    try :
    	tapo.setBabyCryDetection(State)
    except Exception :
        print("setBabyCryDetection KO")
        
def startFirmwareUpgrade():
    tapo=Tapo(host, user, password)
    try :
    	tapo.startFirmwareUpgrade()
    except Exception :
        print("startFirmwareUpgrade KO")
        
def getPresets():
    tapo=Tapo(host, user, password)
    res=str(tapo.getPresets()).replace("{","").replace("}","").replace("'","").replace(",",";").replace(":","|")
    print(res)

def savePreset(Name):
    tapo=Tapo(host, user, password)
    try :
    	tapo.savePreset(Name)
    except Exception :
        print("savePreset KO")
       
def setPreset(IdPreset):
    tapo=Tapo(host, user, password)
    try :
    	tapo.setPreset(IdPreset, False)  #arbitrairement retry=False mais peut être changé 
    except Exception :
        print("setPreset KO")
        


# ------- Appels des fonctions
if sys.argv[1] == "move":
    move(sys.argv[2] , sys.argv[3] )
elif sys.argv[1] == "reboot":
    reboot()
elif sys.argv[1] == "getAlarmEnabled":
    getAlarmEnabled()
elif sys.argv[1] == "getMotionDetection":
    getMotionDetection()
elif sys.argv[1] == "setMotionDetection":
    setMotionDetection( True if sys.argv[2] == "on" else False )
elif sys.argv[1] == "getBasicInfo":
    getBasicInfo()
elif sys.argv[1] == "getLED":
    getLED()
elif sys.argv[1] == "setLED":
    setLED( True if sys.argv[2] == "on" else False )
elif sys.argv[1] == "getPrivacyMode":
    getPrivacyMode() 
elif sys.argv[1] == "setPrivacyMode":
    setPrivacyMode( True if sys.argv[2] == "on" else False )
elif sys.argv[1] == "getDayNightMode":
    getDayNightMode() 
elif sys.argv[1] == "setDayNightMode":
    setDayNightMode(sys.argv[2])
elif sys.argv[1] == "getOsd":
    getOsd()
elif sys.argv[1] == "getModuleSpec":
    getModuleSpec()
elif sys.argv[1] == "getAllNotificationsEnabled":
    getAllNotificationsEnabled()  
elif sys.argv[1] == "getRichNotificationsEnabled":
    getRichNotificationsEnabled()
elif sys.argv[1] == "setAllNotificationsEnabled":
    setAllNotificationsEnabled( True if       sys.argv[2] == "on" else False )
elif sys.argv[1] == "setRichNotificationsEnabled":
    setRichNotificationsEnabled( True if       sys.argv[2] == "on" else False )
elif sys.argv[1] == "getBabyCryDetection":
    getBabyCryDetection()
elif sys.argv[1] == "isUpdateAvailable":
    isUpdateAvailable()
elif sys.argv[1] == "getFirmwareUpdateStatus":
    getFirmwareUpdateStatus()
elif sys.argv[1] == "getPresets":
    getPresets()
elif sys.argv[1] == "startFirmwareUpgrade":
    startFirmwareUpgrade()
elif sys.argv[1] == "setBabyCryDetection":
    setBabyCryDetection( True if       sys.argv[2] == "on" else False )
elif sys.argv[1] == "savePreset":
    savePreset(sys.argv[2])
elif sys.argv[1] == "setPreset":
    setPreset(sys.argv[2])
  
else: 
    print("sys.argv[1] inconnu")
2 « J'aime »