You are currently viewing Le MQTT : c’est quoi ? comment ça marche ? le principe de JMQTT avec domotique jeedom

Le MQTT : c’est quoi ? comment ça marche ? le principe de JMQTT avec domotique jeedom

tags : MQTT JMQTT domotique jeedom

0. Contexte

Bonjour a tous,
Après avoir été l’un des premiers à utiliser zigbee to mqtt (avec un cc2531 a l’époque) et profité de l’incroyable rapidité du mqtt, j’ai décidé d’utiliser de plus en plus le mqtt notamment pour les objets connectés DIY.
En effet je créé pas mal de sketch perso pour arduino (wemos, esp32, arduino ethernet, …) et j’utilise le mqtt, pour communiquer avec mes objets. cela m’offre une rapidité et une légèreté dans le traitement des informations.
Il était temps de reprendre la base du MQTT pour vous l’expliquer.

1. Un peu d’histoire

Le MQTT a été crée en 1999 par deux développeurs Andy Stanford-Clark et Arlen Nipper. Ils avaient pour objectif de surveiller un oléoduc dans le désert via une connexion satellite (débit faible et un coût très élevé à l’époque) avec un protocole de messagerie fiable, léger, peu gourmand en ressource et en bande passante.
(source wiki pédé)

2. Bon et c’est quoi le mqtt au juste ?

le MQTT est un protocole qui envoi des messages vers un brooker, et qui souscrit à des « topics » pour recevoir des informations et exécuter des actions en fonction des messages envoyés. (modifications de paramètres des objets, actions concrètes)

Schéma d’un réseau MQTT

Le MQTT est un protocole très léger par le simple fait de sa conception :
envoyer du texte sur un brooker ne consomme que très peu de bande passante !
Pour les objets a batterie (exemple une wemos), on peut créer une boucle qui envoie le message avec les informations toutes les X minutes. Donc réactiver le wifi en début de boucle et le couper en fin de boucle afin d’être très peu consommateur d’énergie et gagner en autonomie.


De plus les objets peuvent discuter entre eux directement via le brooker. Si l’objet 1 publie sur le topic 1 et que l’objet 2 est inscrit au topic1 il exécutera directement l’action sans passer par un quelconque assistant domotique.

3. Le choix du brooker

Pour commencer il faudra installer un brooker. Bien souvent mosquitto en local mais il existe aussi des brookers en ligne. Par exemple https://www.hivemq.com/ ou bien https://www.maqiatto.com/.
Personnellement pour des raisons évidentes de « le cloud c’est pas terrible de la merde ! »  je n’utilise que mosquitto sur une machine (virtuelle ou pas) Debian.

4.1.1 Installation de mosquitto sur jeedom

installer le plugin jmqtt ou mqtt2 (l’officiel) et lancer les dépendances : ça y est c’est fait !

4.1.2 Ajouter un brooker sur jmqtt

On clique sur Ajouter un brooker dans la page du plugin

4.2.1 Installation de mosquitto ailleurs que sur jeedom

En ssh, sur une Machine Debian il suffit de lancer ces commandes :

sudo apt install mosquitto 
sudo apt-get install mosquitto-clients 
systemctl status mosquitto   Pour verifier L'etat de mosquitto CTRL+X pour sortir
sudo mosquitto_passwd -c /etc/mosquitto/passwd NOM_UTILISATEUR  on modifie le MDP et le nom d'utilisateur du brooker
nano /etc/mosquitto/conf.d/mosquitto.conf

et on rajoute dans le fichier mosquitto.conf

allow_anonymous true

4.2.2 Ajouter ce brooker déporté sur jmqtt

On clique sur Ajouter un brooker.

5 Crée un équipement

En gros pour souscrire et publier sur des topics

On clique sur Ajouter

On choisit un nom et le brooker

5.1 Les templates ?

Le plugin JMQTT a été abandonné par son développeur …

« L’abandon est un acte barbare »

fondation 30 millions de plugins

Mais il a été adopté par des nouveaux développeurs. ils ont crée une fonction template (à l’époque dispo uniquement en beta ).
Cette fonction sert a crée automatiquement des objets qui sont déjà enregistrés. C’est le cas notamment du spa INTEX que Yogui développeur du projet a mis en ligne : https://youtu.be/50lxF08o_vo

5.2 Si le template n’existe pas ?

On coche Activer et Visible

5.2.1 Les commandes infos (souscrire a un topic)

On s’inscrit au topic1 et on rajoute /# pour dire qu’on écoute tous les sous topics.  
Effectivement le topic peut contenir des sous topics par exemple
Topic1/température ou Topic1/humidité et même des sous sous topics Topic1/Relais/relai1/etat

On donne un nom aux commandes qui nous intéresse et on oublie celles dont on se fout.
Ensuite on enregistre selon les valeurs. N’oubliez pas de modifier le type générique : numérique, autre ou binaire 😉

BONUS IMPORTANT

Pour les commandes binaires il est très important d’utiliser la fonction « répéter les valeurs identiques » pour pouvoir relancer les scenarios.

5.2.2 Les commandes Action (publier sur un topic)

On clique sur Ajouter une commande Action

la commande « ON » correspond a « 1 » et « OFF » correspond à « 0 ».
On publie 1 dans le topic « RFID/RELAY1 » ensuite l’arduino avec Wiegand to mqtt (voir cette video  ==>  https://youtu.be/9cibqWgKid4  pour savoir qu’est-ce que c’est !)  qui est souscrit au topic « RFID/RELAY1 » récupère le message 1 et allume le relai 1

Le plus dur est de trouver les topics qui correspondent aux commandes de  vos équipements.

Mention supplémentaire :  pour zigbee to mqtt il faut rajouter /set en fin de topic pour pouvoir publier les commandes action. zigbee to mqtt sait par conséquent qu’on publie un message sur un topic action. Il joindra l’équipement concerné.
/set sert a « réveiller zigbee to mqtt » il sait qu’il doit envoyer la commande action en zigbee

6. MQTT EXPLORER SUR PC

Quand on commence a utiliser le mqtt ça devient vite le bordel au niveau des topics présent sur le brooker. Il existe un logiciel simple (encore en beta) qui permet de lire tous les topics qui passent par le brooker. (les topics action ne se créent pas automatiquement bien malheureusement)

https://mqtt-explorer.com/

MQTT JMQTT domotique jeedom

Une fois téléchargé et ouvert on donne un nom a sa connexion. On rentre l’adresse ip de son brooker, le port l’user name et le mdp jusque-là rien de compliqué !
On clique sur connect.

Et on retrouvera ici tout ce qui se passe en temps réel sur le brooker. Cela permet aussi de retrouver facilement les topics de vos équipements. vous pouvez même directement les copier pour les coller dans jmqtt 😉.

7. On conclut (loic aime ça ! )

C’est mon premier véritable article. J’espère qu’il vous a plu! on traitera plus tard des sketchs perso pour arduino qui utilisent le mqtt (notamment wiegand to mqtt encore en développement).
Pour conclure, je vous invite a visionner la page YouTube 😉 et de remonter dans le temps pour un petit flashback en 1999. (je vous parle d’un temps que les moins de 20 ans ne peuvent pas connaitre.

Dimitri – Usine a Gaz