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

Forum dédié aux bricolages d'objets connectés IOT et leurs communications avec DomoticZ :
- Remplacement de firmware des prises, modules relais ...
- Fabrication à base d'ESP8266, de NodeMCU, de Weemos et consorts ...
Acebillyfr
Messages : 2
Inscription : 15 avr. 2021, 15:05

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

Message 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.
:)
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

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

Message 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
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Acebillyfr
Messages : 2
Inscription : 15 avr. 2021, 15:05

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

Message par Acebillyfr »

Ca fonctionne, merci !
:)
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

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

Message par Neutrino »

Pour le partage, tu peux nous en dire plus ?
comment tu procèdes ?
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
aleph0
Messages : 328
Inscription : 27 avr. 2016, 08:06
Localisation : Hérault (34)

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

Message 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.
Répondre