Écrit par : Webmestre
Catégorie : Domotique
Affichages : 40136

Relais 2 Canal Module 3 3 V OptocoupleurVoici 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 :

 

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

Relais Wemos Lolin32 Lite bb

Remarque : J'en ai aussi profité pour brancher un module DHT22 pour mesurer la température et l'humidité sur le GPIO 2. Voir cet article pour plus d'info : https://lofurol.fr/joomla/electronique/domotique/165-espeasy-temperature-et-humidite-avec-capteur-dht22.

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 :

http://IP_Lolin32_Lite_ESPEasy/control?cmd=GPIO,22,0

Pour ré-ouvrir le relais, j'envoie cette commande :

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) :

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.

 

ESPEasy tester commande

 

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.

Jeedom MQTT Plugin

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).

ESPEasy MQTT

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.

ESPEasy Device Relais1

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.

ESPEasy Device Relais2

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.

Jeedom MQTT Action

V- Résolution problème de déclenchement du relais lors de la mise sous tension

ESPEasy Hardware GPIO Boot States

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 à :

 

Jeedom MQTT Retain Flag

 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" :

ESPEasy detecteur porte 3

 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).

{mp4}Domotique_Garage_web{/mp4}

Maintenant que l'on sait que ça fonctionne, il va falloir se poser des questions quant à la sécurité (chiffrement des communications)... Mais c'est une autre histoire.