tutoriel – MQTT et JSON : la jonction Arduino – ESP8266 – Domoticz

Une structure d'échanges entre portail et objets basée sur le mode publish - suscribe

Introduction

Pour que chaque objet connecté domestique remplisse son rôle, il a besoin de communiquer avec un portail et avec les autres objets. Le portail permet de visualiser les données remontées par les objets, et aussi d'envoyer des consignes vers les objets. Dans notre architecture Philoc, le portail utilise le logiciel Domoticz, et les objets sont construits sur plateforme Arduino ESP 8266.

Pour des raisons de flexibilité et de robustesse, 100% des échanges se font par messagerie et en mode publish & subscribe - publication & abonnement - . Ils se conforment aux standards du moment, MQTT et JSON.

Cet article s'attache à expliquer la facilité à gérer les communications entre les écrans Domoticz et les objets Arduino ESP 8266, à partir du moment où on utilise quelques principes élémentaires.

Une structure de communication minimaliste, au moins dans un premier temps

Le mode publish-subscribe est bien décrit dans la littérature. Nul besoin de paraphraser, voici un lien efficace : https://fr.wikipedia.org/wiki/Publish-subscribe. Nous  utilisons deux topics - ou catégories - le premier pour les messages émis par les objets, et le second pour les messages émis par le portail.

Nous  bridons les capacités du modèle en excluant les échanges directs entre objets ; c'est le portail qui sert de relais, et, pour faire encore plus simple, les consignes sont dictées par des actions opérateur sur le portail, et non par des automtismes. Vous verrez, ça suffit bien, pour commencer.

Tout ce que nous venons d'évoquer depuis le début de ce paragraphe relève de MQTT, très bien expliqué ici : https://fr.wikipedia.org/wiki/MQTT.

Reste enfin le principe  de structurer chaque message, et de l'attacher à une valeur mesurable ou actionnable sur le terrain, repérable par le biais d'un identificateur. C'est là qu'intervient le standard JSON, à découvrir sous https://fr.wikipedia.org/wiki/JavaScript_Object_Notation .

La réalisation côté portail expliquée à grands pas

Commençons par Domoticz. L'ensemble des entités visualisables ou actionnables sont des objets virtuels - dummy devices - attachés à une structure de codage des valeurs de mesures et consignes à choisir dans une liste qui couvre ... bien au delà de nos besoins. Vous trouverez un très bon guide d'implémentation de Domoticz et MQTT ici : https://www.sigmdel.ca/michel/ha/domo/domo_03_fr.html .

Et bien sûr, voici quelques vues prises sur le portail Philoc, avec déjà des mesures de température, d'hygrométrie, de niveau d'eau, de pression barométrique, de niveau sonore ... les actionneurs, ça sera pour une autre fois, promis.

 

Implémentation côté objets, avec une application Arduino en bibliothèque Philoc

Nous plaçons comme toujours notre dernière application Arduino dans l'espace bibliothèque, accessible aux membres que ça intéresse. L'exemple aurait besoin de commentaires, de mécanismes pour sécuriser les échanges aussi. Le mérite que j'y trouve est de vous aiguiller vers deux bonnes librairies,  ESPHelper ( https://github.com/ItKindaWorks/ESPHelper ) et ArduinoJson ( https://arduinojson.org ) . Elles font tout le travail.

 

Laisser un commentaire