Envoyer des consignes de domoticz à espeasy, c'est moins simple qu'il n'y paraît de premier abord. Ce qui est simple, c'est d'envoyer une valeur de domoticz à espeasy :
On défini dans les rules d'espeasy un evenement qui va recevoir une valeur lors de son appel et la stocker dans une variable :
ex, côté espeasy
et côté domoticz, un script "devices" qui, sur changement de la consigne va l'envoyer à espeasy :
Code : Tout sélectionner
if devicechanged["consigne"] then
commandArray['OpenURL']="http://ip.du.esp.easy/control?cmd=event,GetSP="..otherdevices["consigne"]
end
Et voilà, la valeur de notre consigne est disponible dans la variable %v1% d'espeasy pour en faire ce qu'on veut
Fin de l'histoire ? Malheureusement non

Le problème, c'est qu'un espeasy, ça reboote parfois spontanément, et qu'on n'a pas de moyen de sauver les variables %v1% ou autre pour qu'elle soit disponible après le reboot

. On peut pallier au problème 9x/10 en demandant à espeasy d'informer domoticz de son reboot, de sorte que domoticz puisse renvoyer la valeur de la consigne. Le plus simple pour ça est de définir dans espeasy un device de type "switch" qui pointe sur n'importe quel GPIO non utilisé, de cocher la case "send boot state" et de définir dans domoticz un dummy switch "esp_boot" qui sera ainsi mis à jour lors du reboot de l'esp. On peut alors modifier notre script d'envoi de la consigne comme ceci :
Code : Tout sélectionner
if devicechanged["consigne"] or devicechanged["esp_boot"] then
commandArray['OpenURL']="http://ip.du.esp.easy/control?cmd=event,GetSP="..otherdevices["consigne"]
end
mais voilà, pour fonctionner ceci suppose que le wifi ET domoticz sont OK lors du reboot. Le jour où l'esp reboote pendant (ou à cause) d'une coupure wifi, on est mort ; le jour où ça reboote lorsque domoticz est planté, on est mort aussi.
Pour avoir un truc bien blindé il faut, dans espeasy, venir inhiber tout fontionnement tant qu'une consigne valide n'a pas été reçue, ou prévoir une valeur par défaut plausible pour avoir un comportement dégradé mais acceptable :
Code : Tout sélectionner
On system#boot do
Let 1,valeur_par_defaut
Let 2,0 // Flag 0=valeur par défaut, 1=valeur utilisateur
endon
on GetSP do
Let 1,%eventvalue%
Let 2,1
endon
côté domoticz, au lieu de la détection de boot, on utilise le matériel "pinger" pour détecter la mise en communication des l'esp avec domoticz, et on modifie notre script de la façon suivante ;
Code : Tout sélectionner
if devicechanged["consigne"] or devicechanged["esp_ping"]=="On" then
commandArray['OpenURL']="http://ip.du.esp.easy/control?cmd=event,GetSP="..otherdevices["consigne"]
end
Cette méthode a aussi le mérite de gérer le cas où l'utilisateur de domoticz change la consigne a un moment où l'esp n'écoute pas (tj coupure wifi ?) : la nouvelle consigne sera envoyée dès le rétablissement de la communication.
Avec ça, dans espeasy, on sait à quoi s'en tenir : %v2%=1 On est en fonctionnement normal ; %v2%=0 on est en fonctionnement dégradé. A vous de gérer les deux en fonction de vos contraintes.