Page 1 sur 1

Récupérer valeur consigne thermostat dans device ESPEASY ?

Publié : 15 avr. 2021, 15:17
par Acebillyfr
Bonjour à tous !
Petit nouveau dans domoticz, mais pas dans la domotique...
J'ai un NodeMCU flashé avec ESPESASY.
Le NODEMCU fonctionne en autonome, avec le principe des Rules.

Je souhaiterais récupérer la valeur de la variable consigne du widget thermostat de domoticz dans ESPEASY.
L'idée est de pouvoir simplement modifier cette consigne dans domoticz, pour une prise en compte par l'ESPEASY.
Pour l'instant, l'ESPEASY gère la mesure de l'humidité et déclenche un relais si valeur < 50%.

Merci d'avance de votre aide.
:)

Re: Récupérer valeur consigne thermostat dans device ESPEASY ?

Publié : 15 avr. 2021, 21:40
par Neutrino
Il sera plus facile que Domoticz envoie l'info à ESPEasy.
Il faut utiliser un "Generic - Dummy Device" https://www.letscontrolit.com/wiki/inde ... mmy_Device
Et l'alimenter avec quelque chose comme ça : https://www.letscontrolit.com/wiki/inde ... #HTTP_call

Re: Récupérer valeur consigne thermostat dans device ESPEASY ?

Publié : 16 avr. 2021, 11:54
par Acebillyfr
Ca fonctionne, merci !
:)

Re: Récupérer valeur consigne thermostat dans device ESPEASY ?

Publié : 16 avr. 2021, 22:16
par Neutrino
Pour le partage, tu peux nous en dire plus ?
comment tu procèdes ?

Re: Récupérer valeur consigne thermostat dans device ESPEASY ?

Publié : 20 avr. 2021, 09:39
par aleph0
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

Code : Tout sélectionner

on GetSP do 
     Let 1,%eventvalue%
endon
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.