https://openhomeautomation.net/control-relay-anywhere-esp8266
https://www.letscontrolit.com/wiki/index.php/Relais
Domotique
ESPEasy + Jeedom : Piloter un relais avec une Wemos Lolin32 Lite
Catégorie : Domotique Publication : 1 avril 2018 Écrit par Webmestre Affichages : 2805
Voici comment on peut commander, à travers le réseau Wifi, un relais à partir d’un module ESP avec le firmware ESPEasy tel que la Wemos Lolin32 Lite. Comme ce module ESP ne « fournit » que du 3,3 Volts via ses broches GPIO, j’ai choisi un relais à 2 canaux pouvant être déclenché avec cette faible tension : https://fr.aliexpress.com/item/1-PCS-2-Canal-Module-de-Relais-3-3-V-Optocoupleur-Lecteur-Panneau-De-Commande-De/32847869020.html
Sources :
- https://www.letscontrolit.com/wiki/index.php/Relais
- https://howtomechatronics.com/tutorials/arduino/control-high-voltage-devices-arduino-relay-tutorial/
I- Branchement
Je compte utiliser ce module pour piloter mon portail de garage qui possède un contact sec (tension de 24V) : il suffit de fermer brièvement ce contact sec pour que ça envoie le signal d’ouverture du portail, le contact n’a pas besoin d’être maintenu. Pour donner l’ordre de fermeture, il suffit de refermer le circuit brièvement. Il n’y a pas de sens précis pour ouvrir ou fermer : une impulsion, le moteur fonctionne dans un sens, une autre impulsion le moteur s’arrête, une autre impulsion il fonctionne en sens inverse. Le relais n’a pas besoin d’être double pour cela mais vu le prix de ce relais (3€ ) et n’ayant pas besoin de compacité, ce n’est pas gênant (ça m’en fait un de secours au cas où…, ou il peut servir à piloter un éclairage…).
J’alimente directement le relais en 3,3V avec le module ESP (qui est lui même alimenté en 5V via sa prise micro-USB) donc je laisse le cavalier entre les 2 broches JDVcc et Vcc. Ce qui simplifie grandement les branchements. En contrepartie, le module ESP n’est pas isolé électriquement grâce à l’optocoupleur de la carte relais et donc il n’est pas protégé en cas de surtension côté relais.
J’utilise la broche 22 de la Lolin32 Lite car elle commande aussi la diode bleue proche d’elle : quand la broche 22 est en tension basse (0V), la diode s’allume. Cependant, ce branchement est problématique car la mise sous tension (après une coupure de courant par exemple) déclenche le relais. Du coup on devra choisir une autre broche… ou pas … (voir plus bas).
Le détecteur d’ouverture de porte est un switch magnétique normalement fermé branché sur la broche 12 et à la masse (GRD). Voir ici pour plus de détails : https://lofurol.fr/joomla/electronique/domotique/158-espeasy-detecter-l-ouverture-et-la-fermeture-d-une-porte
II- Commandes HTML
En branchant sur la broche 22 (je me sers comme ça de la diode bleue reliée à cette broche), si je veux envoyer une impulsion pour fermer le relais, je peux le faire avec cette commande html (qui est traduite en json) dans mon navigateur :?
1 | http://IP_Lolin32_Lite_ESPEasy/control?cmd=GPIO,22,0 |
Pour ré-ouvrir le relais, j’envoie cette commande :?
1 | http://IP_Lolin32_Lite_ESPEasy/control?cmd=GPIO,22,1 |
Par contre, il faudrait que ce contact ne dure 1-2 secondes maxi donc je vais utiliser la commande « pulse » comme ceci (1500 est le temps en millisecondes) :?
1 | http://IP_Lolin32_Lite_ESPEasy/control?cmd=Pulse,22,0,1500 |
Ces commandes html permettent de faire des tests rapides mais ce protocole n’est pas très performant comparé à MQTT qui permettra de communiquer avec mon serveur domotique Jeedom qui est sur mon NAS Synology dans un conteneur Docker.
III- Tester directement dans ESPEasy
En se connectant directement au module via son adresse IP, il est possible de tester des commandes dans l’onglet « Tools » (cf capture ci-contre).
Il suffit de saisir la commande (par exemple : « Pulse,22,0,1500 ») en haut de la page dans la partie « Command » et de l’envoyer en cliquant sur le bouton « Submit ».
IV- Commandes MQTT pour Jeedom
Sources : https://projetsdiy.fr/mosquitto-broker-mqtt-raspberry-pi/
Il faut installer dans Jeedom le plugin stable « Mosquitto MQTT » et regarder sa configuration car nous aurons de connaître ses paramètres pour configurer le module ESP.
Une fois que le plugin MQTT est paramétré dans Jeedom, on va ensuite aller configurer le module ESP dans ESPEasy en choisissant le protocole OpenHAB MQTT (qui fonctionne bien avec Jeedom) dans l’onglet « Controllers ».
Il faut indiquer l’adresse où se trouve le serveur Mosquitto (pas celle de Jeedom) et le port 1883 (8883 si on veut du SSL).
Remarques : On n’indique pas l’adresse interne du conteneur Docker de Jeedom du type (172.17.0.2) et on n’oublie pas de sauvegarder avec le bouton « Submit » en bas.
Partie ci-dessous inutile car on peut commander les broches directement en MQTT.
Ensuite on va sur l’onglet « Devices » et on ajoute un nouvel appareil du type « Switch input – Switch » sur la broche 22.
J’ai appelé cet appareil « relais », ai activé la résistance « pull up » et inversé la logique (je ne sais pas si c’est vraiment utile… vu que ce n’est pas l’état qui m’intéresse car on ne fera qu’une impulsion sur le relais).
Idem pour la « value ».
Dans Jeedom, on va sur le plugin « MQTT » et on ajoute manuellement un nouvel équipement que j’ai intitulé « Bouton ». Ensuite on va dans l’onglet « Commandes » et on ajoute une action sans oublier de lui donner un nom (dans mon cas « Appui »). Puis on saisit ces paramètres :
Topic : /ESP32_Garage/cmd (/nom_de son_module/cmd)
Payload : pulse,22,0,1500 (ça correspond à la commande que l’on a testée plus haut dans ESPEasy).
On peut voir, après avoir sauvegardé, si ça marche en cliquant sur le bouton « Tester » en bout de ligne.
V- Résolution problème de déclenchement du relais lors de la mise sous tension
PROBLÈME : avec le branchement du relais sur la broche GPIO 22, s’il y a une coupure de courant, au ré-allumage du module ESP, cela lance la commande du relais et donc l’ouverture du portail -> Ce n’est pas acceptable.En fait cela dépend de la broche sur laquelle est branché le relais. Voir ici une étude très poussée mais compréhensible et très instructive : http://rabbithole.wwwdotorg.org/2017/03/28/esp8266-gpio.html.En conclusion, sur les modules ESP, il faut privilégier les broches GPIO 4 ou 5 pour éviter ces problèmes de flottement de courant… Encore faut-il trouver les broches de la Wemos Lolin32 Lite (voir son schéma ici : https://wiki.wemos.cc/_media/products:lolin32:sch_lolin32_lite_v1.0.0.pdf).
Et puis, j’ai pensé qu’il est possible de « contrer » ces désagréments au démarrage en passant par ESPEasy.Pour cela, je me suis connecté à mon module via son adresse IP (comme d’hab) et je suis allé dans l’onglet « Hardware », rubrique « GPIO Boot States » et j’ai choisi la broche 16 pour laquelle j’ai indiqué « Output High » (voir la capture ci-contre).
Malheureusement, j’ai toujours ce souci de déclenchement lors du redémarrage… GRR
SOLUTION : En fait, le problème vient de la commande MQTT et de l’option « retain flag » qu’il faut DÉSACTIVER dans Jeedom. Je peux donc continuer à utiliser la broche 22. Source : https://github.com/arendst/Sonoff-Tasmota/issues/612
Attention aussi à :
- l’emplacement du module ESP pour que les ondes Wifi l’atteignent et soient émises sans problème.
- la qualité des connexions (il vaut mieux des soudures que de simples broches enfichées).
VI- Retour d’état d’ouverture au redémarrage de Jeedom
PROBLÈME : Je me suis aperçu qu’après un redémarrage du serveur Jeedom, l’indicateur de l’état de la porte du garage affichait « ouvert » . -> À régler !!! C’est en fait une fausse alerte de Jeedom…
Pour régler ce faux positif, il faut aller dans le firmware ESPEasy du module et dans la partie « Devices », aller sur la ligne du capteur d’ouverture et cocher la case « Send Boot State » :
VII- Conclusion – Coût final – Vidéo
Après pas mal de recherches sur Internet, manipulations, tests, essais,… l’expérience est concluante et très instructive : il est parfaitement possible de piloter une porte de garage ayant déjà une motorisation électrique avec ce matériel pour un coût très faible. L’avantage aussi c’est qu’avec le firmware ESPEasy (qui peut envoyer des notifications par courriel !!!), on n’est pas obligé d’avoir un serveur domotique donc on peut faire des tests à petite échelle. Avec de la récup (fils, plaque d’essai, connecteurs, alimentation USB 5V, …), frais de port compris, on est aux alentours de 8€ pour le matériel ci-dessous :
module ESP générique Wemos Lolin32 Lite : 4,73€ (https://www.aliexpress.com/item/WEMOS-LOLIN32-Lite-V1-0-0-Wifi-Bluetooth-Development-Board-Antenna-ESP-32-ESP32-CH340-CH340G/32843053744.html)
relais double (un simple est suffisant) fonctionnant à 3,3V : 3,01€ (https://www.aliexpress.com/item/1PCS-2-Channel-Relay-Module-3-3V-Optocoupler-Drive-Module-Relay-Control-Board/32847869020.html)
un détecteur magnétique ouverture porte : 0,41€ (https://www.aliexpress.com/item/10Pcs-5Pair-MC-38-MC38-Wired-Door-Window-Sensor-Magnetic-Switch-Home-Alarm-System-Normally-Closed/32685607339.html)
Comme j’utilise Jeedom via une image Docker sur mon NAS Synology 713+, j’ai aussi acheté le plugin « App Mobile » pour 4€ mais cette application permet de tout piloter dans la maison (pas uniquement le portail) via son smatphone et tous les membres de la famille peuvent en profiter.
Histoire de voir ce que ça donne, voici une vidéo illustrant le fonctionnement. On y voit le smartphone avec l’application mobile Jeedom et en arrière plan le garage. En ouvrant bien les yeux (n’hésitez pas à passer en plein écran pour mieux voir l’affichage sur l’écran du smartphone), on voit aussi les messages d’information sur l’état du portail et même les notifications des courriels reçus m’informant que le portail a bougé. Ces notifications ont été réalisées grâce à l’exécution d’un scénario dans Jeedom avec le plugin « Mail » (voir ici pour plus de détails : https://lofurol.fr/joomla/electronique/domotique/161-jeedom-envoyer-differentes-sortes-de-notifications-via-un-scenario).
Piloter un relai ESP Easy depuis Jeedom
Vous l’avez sans doute remarqué mais il n’y a pas de Subscribe Template. Pour piloter des actionneurs, il va donc falloir utiliser une URL (comme sur Domoticz d’ailleurs). Dans cet exemple, nous allons activer/désactiver un relai relié au GPIO 16 (broche D0 de la Wemos D1 Mini).
Retournez dans la configuration de l’objet ESPeasy et allez à l’onglet Commandes puis cliquez sur Ajouter une commande d’action. Faites le deux fois pour ajouter deux commandes.
Dans la première ligne créée, donnez le nom ON. Dans le champ Task et Variable collez gpio,16,1. Dans la seconde ligne, donnez le nom OFF et collez gpio,16,0.
Désactivez l’affichage des deux commandes et sauvegardez.
Dans le champ valeur, le plugin a automatiquement créé l’URL de commande reconnue par ESP Easy.
Vous pouvez tester que le relais s’active et se désactive en appuyant sur Tester.
Créer un bouton de commande virtuel
Allez dans Plugins -> Programmation -> Virtuel puis appuyer sur Ajouter.
Choisissez un objet parent, une catégorie, activez et rendez le visible. Allez dans l’onglet Commandes et ajoutez 2 commandes virtuelles.
Pour la première, indiquez le nom ON. Dans le champ valeur (champ du haut), cliquez sur Rechercher équipement. Recherchez la commande pour activer le relai (ON) comme sur cette photo d’écran. Faites de même pour la commande d’extinction du relai (OFF). Vous pouvez tester que les commandes fonctionnent bien à l’aide du bouton Tester.
Sauvegardez et allez sur le dashboard.
Vous pouvez maintenant piloter vos relais depuis Jeedom, faire des mesures en tout genre, etc… sans aucune programmation grâce à ESP Easy.