Script Python, problème mise à jour dummy devices
Publié : 05 mars 2018, 22:20
Bonsoir,
J'ai déjà fait quelques scripts Lua pour tester.
A priori, dans un script_time_* le plus simple pour mettre à jour la valeur d'un capteur virtuel était
Mais cela ne déclenche pas la notification nécessaire pour le fonctionnement des script_device_*
Du coup, je suis passé par
Et je tente maintenant avec Python
Les exemples fournis passent par un module DomoticzEvents qui proposent une fonction Command. Impossible à faire marcher sur mon exemple
Du coup, j'ai tenté d'accéder directement à l'url de mise à jour (module urllib.request ou requests). Mais cela déclenche un plantage silencieux du serveur Domoticz
J'ai alors tenté via MQTT avec le module paho.mqtt.publish ; Domoticz ne plante plus, mais le script plante la boucle d'événements.
Nota : bien sûr j'ai testé le code avant dans un script lancé à la main pour contrôler que cela marchait
Pour le moment, je suis obligé de faire un script indépendant lancé via cron toutes les X minutes, alors le script_time semble plus intégré à la solution.
Auriez-vous une idée pour réussir à intégrer cela dans un script_time_* ?
J'ai déjà fait quelques scripts Lua pour tester.
A priori, dans un script_time_* le plus simple pour mettre à jour la valeur d'un capteur virtuel était
Code : Tout sélectionner
commandArray['UpdateDevice'] = idx .. '|0|' .. valDu coup, je suis passé par
Code : Tout sélectionner
commandArray[1] = {['OpenURL']=url..'/json.htm?type=command¶m=udevice&idx=' .. idx .. '&nvalue=0&svalue=' .. val}Et je tente maintenant avec Python
Les exemples fournis passent par un module DomoticzEvents qui proposent une fonction Command. Impossible à faire marcher sur mon exemple
Du coup, j'ai tenté d'accéder directement à l'url de mise à jour (module urllib.request ou requests). Mais cela déclenche un plantage silencieux du serveur Domoticz
Code : Tout sélectionner
import requests
url = 'http://{0}/json.htm?type=command¶m=udevice&idx={1}&nvalue=0&svalue={2};{3};{4}'
req = url.format(domoticzserver, idx, temperature, humidity,humS)
res = requests.get(req)Code : Tout sélectionner
import paho.mqtt.publish as publish
msg = '{ "idx" : {0}, "nvalue" : 0, "svalue" : "{1};{2};{3}" }'
publish.single(topic='domoticz/in',payload=msg.format(idx,temperature, humidity,humS),hostname=domoticzserver)Pour le moment, je suis obligé de faire un script indépendant lancé via cron toutes les X minutes, alors le script_time semble plus intégré à la solution.
Auriez-vous une idée pour réussir à intégrer cela dans un script_time_* ?