tags : MQTT JMQTT domotique jeedom
- 0. Contexte
- 1. Un peu d'histoire
- 2. Bon et c'est quoi le mqtt au juste ?
- 3. Le choix du brooker
- 4.1.1 Installation de mosquitto sur jeedom
- 4.1.2 Ajouter un brooker sur jmqtt
- 4.2.1 Installation de mosquitto ailleurs que sur jeedom
- 4.2.2 Ajouter ce brooker déporté sur jmqtt
- 5 Crée un équipement
- 5.1 Les templates ?
- 5.2 Si le template n'existe pas ?
- 5.2.1 Les commandes infos (souscrire a un topic)
- BONUS IMPORTANT
- 5.2.2 Les commandes Action (publier sur un topic)
- 6. MQTT EXPLORER SUR PC
- 7. On conclut (loic aime ça ! )
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)
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
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
5 Crée un équipement
En gros pour souscrire et publier sur des topics
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 ?
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)
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)
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.