Jusqu’a présent j’utilisais une carte Wemos D1 et un afficheur LCD de 2 lignes de 16 caractères pour afficher des informations de ma domotique.

L'arduino Wemos D1 était abonné a deux flux MQTT selon l'appui sur une des touches, soit le flux "maison/aff/2x16A" ou un autre sans le A à la fin pour le débogage.

En gros tous les capteurs de la maison envoient ou reçoivent les ordres via MQTT, c’est très très pratique et permet d’avoir des équipements qui interceptent ou fonctionnent en doublure et permet ainsi une bonne fiabilité.

Avec la démocratisation des cartes à base d’ESP8266 il est devenu très rentables de construire ses propres capteurs sans fils (températures, mouvements, relais...).

Ainsi dans notre cas un simple un chargeur USB + une carte WEMOS D1 + un écran LCD avec touches de commandes nous permet d’avoir un système simple que l’on peut placer où l’on souhaite.

chargeur-usb.jpg

wemos.jpg

ecran-lcd.jpg

Avantage du MQTT s’en faire un deuxième ou troisième pour mettre par exemple dans le bureau et ils fonctionneront tout simplement.

Le programme que j’ai mis dans les Wemos est disponible sur github ici

Dans ma solution de domotique, tous mes capteurs remontent leurs infos sous forme de message de service MQTT ils sont donc diffusés sur le réseau en permanence.

J’ai ensuite un petit PC avec JEEDOM qui via le plugin MQTT de lunarok reçoit toutes ces infos pour les enregistrer ou les traiter.

Sur ce petit PC tourne aussi Mosquitto qui est un gestionnaire MQTT

C’est ensuite dans mon cas un petit scénario Jeedom qui envoi à son tour des messages de service sur le réseau avec comme identification maison/aff/2x16A

Si j’écoute le réseau sur ce flux je vois donc passer des infos de ce genre :

  • maison/aff/2x16A {"L1":"Chauffe en mode:","L2":"Solaire Pure"}
  • maison/aff/2x16A {"L1":"Congelo Cabane ","L2":"-22.5"}[1]
  • maison/aff/2x16A {"L1":"Temp Ext Cabane ","L2":"10.6"}

Pour info dans un terminal sur le serveur Mosquitto il suffit de taper la commande ci-dessous pour observer tous les messages :

  • mosquitto_sub -h localhost -t "#" -v

Pour envoyer un message à l'afficheur la commande ci-dessous dans le même terminal :

  • mosquitto_pub -h 192.168.0.66 -t "maison/aff/2x16A" -m "{\"L1\":\"Mouvement détecté :\",\"L2\":\"Cabane\"}"

Le programme au sein de la Wemos D1 est abonné à maison/aff/2x16A ainsi dès lors q'un message est diffusé sur le réseau il traite celui-ci Ici il va donc devoir traiter 3 messages différents

  • Le premier concerne la façon dont fonctionne mon chauffe-eau ;
  • Le deuxième la température dans mon congélateur situé dans une dépendance;
  • Le troisième indiquant la température extérieure au niveau du sol à l’extérieur de cette dépendance.

Le format des messages est sous forme structurée JSON pour le décoder j’utilise la librairie JSON de Benoît Blanchon

  • L1 correspond à la clef de ce que je dois mémoriser et afficher sur la ligne n°1
  • L2 correspond à la valeur que je dois afficher sur la ligne n°2

Un scénario JEEDOM me permet d'envoyer les messages que je souhaite vers le serveur MQTT

jeedom-scenario.jpg

Pour info la case valeur par exemple pour envoyer l'info congélo est saisie comme suit :

{%22L1%22:%22Congelo%20Cabane%20%20%22,%22L2%22:%22#[Maison][EspEasyD1][Congel Cabane]#%22}

Le programme mémorise dans un double tableau de variables les deux lignes puis affiche en boucle ces messages avec une temporisation rapide. L’appui sur une des touches arrête le défilement et permet d’afficher les messages un par un sans bouclage.

Arduino1.jpg

Arduino2.jpg

Note

[1] Pour info le capteur congelo est basé sur une wemos D1 + sonde 1-wire ds18b20 et le firmware EasyESP