Nouveau sur la communauté Jeedom je tente en lisant les différents tutos et les forums de mettre sur pied une solution domotique acceptable.
Pour mes prises connectées TAPO P100 de Tp-link, j’ai trouvé les librairies pythons qui vont bien.
J’arrive a allumer et a éteindre les prises.
J’ai créer un script python qui renvoie une valeur TRUE ou FALSE en fonction de l’état de la prise, mais je n’arrive pas à utiliser cette valeur dans Jeedom pour qu’elle soit afficher. en mode info binaire ou autre la valeur retournée par la fonction est ignorée.
Quelqu’un sait-il comment procéder.
Par avance merci
PS voici le script que j’utilise :
#!/usr/bin/env python3
def action(chaine):
a = chaine.find("device_on")
a = a +11
chaine = chaine[a:]
chaine = chaine[:4]
if chaine == "true":
return True
else:
return False
from PyP100 import PyP100
p100 = PyP100.P100("192.168.0.xxx","xxxxxxxxxxxx@gmail.com","MotDePasse")
p100.handshake()
p100.login()
text = p100.getDeviceInfo()
action (text)
J’ai suivi tes conseils et tout marche à merveille.
Je peux commander les inters et avoir un retour sur leur état. Pour cela j’appelle la fonction p100.getDeviceInfo() et j’isole dans la chaine le fragment qui donne l’état de l’interrupteur pour en tirer une boolénne False ou True.
SI certains utilisent des P100 de Tp-link je peux vous proposer mon code (surement très améliorable ;-))
Bon, chez moi ça veut rien savoir. Ca fonctionne nickel en ligne de commande (RPI4 64bits) mais dans un script Jeedom, le bazar me remonte une erreur d’import du module PyP100:
Erreur exécution de la commande [Système][Tapo][On] : Erreur sur python /var/www/html/plugins/script/data/P100On.py 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last): File "/var/www/html/plugins/script/data/P100On.py", line 3, in from PyP100 import PyP100 ImportError: No module named PyP100
1- j’ai installer les librairies avec la commande : pip3 install PyP100
2- j’ai copier les librairies dans le dossier script de Jeedom : /var/www/html/plugins/script/data/
3- je créer un script action « ON » dont voici le code :
enfin pour connaitre l’état de la prise j’utilise la commande p100.getDeviceInfo()
cette commande renvoie un texte assez long avec a l’intérieur une info de type « device_on »=…
c’est cette info que l’on va récupérer et envoyer à Jeedom.
On créé donc une commande script de type info binaire dont le code est le suivant :
#!/usr/bin/env python3
from PyP100 import PyP100
def action(chaine):
a = chaine.find("device_on")
a = a +11
chaine = chaine[a:]
chaine = chaine[:4]
if chaine == "true":
print("True")
else:
print("False")
return
p100 = PyP100.P100("192.168.0..xxx","identifiant","motdepasse")
p100.handshake()
p100.login()
text = p100.getDeviceInfo()
action(text)
vous récupérerez la valeur 1 si la prise est allumée et 0 dans le cas contraire.
Merci @Jeff75. J’ai tout fait comme indiqué, mais j’ai toujours des erreurs d’import de modules Python sous Jeedom (4.1.24 64bits) alors que tout fonctionne en ligne de commande. A n’y rien comprendre… ou bug Jeedom/plugin ? A propos, quelle est ta config ?
Erreur exécution de la commande [Système][Tapo][Off] : Erreur sur python /var/www/html/plugins/script/data/P100Off.py 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last): File "/var/www/html/plugins/script/data/P100Off.py", line 3, in from PyP100 import PyP100 File "/var/www/html/plugins/script/data/PyP100/PyP100.py", line 73 decode: bytes = b64decode(key.encode("UTF-8")) ^ SyntaxError: invalid syntax