Si vous ne connaissez pas encore MQTT, voilà une bonne occasion de combler ce manque. Il s’agit effectivement d’un service si utile quand on choisit de faire de la domotique DIY qu’il serait dommage de ne pas en profiter, d’autant que l’installation et l’utilisation et on ne peut plus simple.
Finalement, le plus gros problème de MQTT c’est la première approche. En effet, quand on fait quelques recherches on trouve rapidement des explications, mais qui sont parfois assez complexes et cela peut vite décourager de se lancer. Pourtant, quand c’est expliqué de manière simple, le principe de MQTT est assez simple à comprendre.
Comment installer MQTT sur Raspberry Pi avec Mosquitto
MQTT est un protocole hyper léger et donc tout aussi rapide qui révolutionne le monde des objets connectés. On entend de plus en plus parler de MQTT ici et là. Pourtant le protocole n’est pas nouveau. Créé en 1999 par…
Je ne vais pas réexpliquer l’ensemble de ce qu’est MQTT, puisque je l’ai déjà fait dans un autre guide pour le mettre en oeuvre sur un Raspberry Pi. Rapidement, il s’agit d’un protocole de communication qui utilise le réseau IP de la maison comme support (Ethernet ou Wi-Fi), qui se veut très très léger et par conséquent fiable et rapide. De plus, ce protocole qui semble basique de prime abord cache très bien son jeu puisqu’il dispose de QoS ainsi que d’une hiérarchisation intelligente. En bref, on ne parle pas de serveur mais de broker MQTT, et on publie avec des clients sur ce broker dans des topics. Pour les explications simples, complètes et détaillées, je vous invite à consulter cet article.
Passons à présent au sujet principal : Comment installer MQTT sur une machine virtuelle Synology ?
Pourquoi installer MQTT sur une VM ?
La question est pertinente, je dis juste avant que MQTT est très léger, alors pourquoi dédier une VM spécifiquement à ce service ? En effet, un Raspberry Pi peut tout à fait faire l’affaire, mais j’aime hiérarchiser les choses, tout comme le protocole aime le faire, j’aime bien dissocier les usages. D’autant qu’une machine virtuelle ne coûte rien, encore plus pour ce type de serveur puisque le minimum de ressources allouées sera nécessaire. Toutefois, vous pouvez mutualiser cet usage avec d’autres. J’ai par exemple dans mon installation domotique une VM qui se nomme “services” et qui héberge uniquement des outils pour la maison connectée. Sachez enfin que MQTT peut aussi être installé sur le même OS que celui qui héberge votre serveur domotique (Jeedom ou Home Assistant). Mais comme je le dis plus haut, j’aime bien dissocier les choses.
Enfin, gros atout de la VM, cela ne consomme pas plus d’énergie puisque votre NAS est déjà constamment alimenté et surtout vous avez la sécurisation continue de vos données, puisque le NAS dispose de cette faculté à faire de la redondance de ses disques via le RAID, en plus du fait que vous pouvez effectuer régulièrement des images (snapshots) de vos serveurs virtuels afin de pouvoir les restaurer en deux clics en cas de problème.
Temps nécessaire : 40 minutes
Il faudra compter environ 30 à 40 minutes pour cette installation, le plus long étant finalement l’installation de Debian, car l’installation du serveur MQTT en lui-même ne prend pas plus de 2 minutes. Astuce pour la prochaine fois, profitez de ce guide pour installer une Debian à jour et dupliquez-la avant de passer à l’installation de MQTT. Vous aurez alors toujours une Debian clean prête à installer n’importe quoi sans avoir à refaire cette longue phase d’installation d’OS.
- Créer une nouvelle VM sur Synology Virtuel Manager
Créez une nouvelle Machine Virtuelle (linux) et attribuez lui une configuration light. Pas besoin d’une foudre de guerre pour faire tourner MQTT, c’est tout l’avantage.
- Choisir une image de Debian pour démarrer l’installation au boot de la VM
Terminer la création de la VM en choisissant une version de Debian à y installer. L’installation démarrera au premier boot et vous n’aurez plus qu’à suivre les différentes étapes d’installation. Pas utile d’installer la couche graphique sur votre Debian, les performances n’en seront que meilleures !
- Installer Mosquitto sur la VM
Une fois la machine virtuelle demarrée, connectez-vous dessus en SSH, à l’aide de Putty (windows) ou le terminal (Mac OS / Linux), puis lancez l’installation du paquet MQTT à l’aide de la ligne de commande suivante :
sudo apt-get install mosquitto - Vérifier le bon fonctionnement de mosquitto
Si l’installation s’est déroulée sans erreur, votre broker MQTT est normalement opérationnel, mais vous pouvez toutefois jouer la commande de vérification suivante pour confirmer :
systemctl status mosquitto - Tester la connexion avec le nouveau broker MQTT
L’installation de MQTT est on ne peut plus simple comme nous avez pu le constater. Il ne reste plus qu’à initier la première connexion au serveur pour le tester. Pour cela, je vous conseille le très bon logiciel MQTT explorer, qui est un client très pratique pour découvrir et suivre les différents topics de votre maison connectée.
Les paramètres de connexion sont simples également. Par défaut, vous n’avez qu’à disposer de l’adresse IP de votre VM. Le port par défaut est toujours 1883 et il n’y a pas d’authentification par défaut. - Visualiser les différents topics de la maison
Une fois connecté, si vous avez déjà des objets configurés pour dialoguer avec votre serveur (broker) MQTT, vous commencez déjà à les voir apparaître.
- Créer un topic de test
Maintenant, créez un nouveau topic de test pour commencer à remonter l’état d’un périphérique dans MQTT.
Pour cela utiliser le champ “topic” dans la partie droite de la fenêtre de MQTT Explorer et définissez votre premier topic :
Labo/test/device/etat/
Et publiez-le pour le créer : - Visualiser le topic créé
Vous visualisez alors instantanément votre nouveau topic
Votre serveur MQTT est maintenant prêt pour recueillir les états de tous les péripheriques de votre maison connectée.
Pour aller plus loin
Ajoutez des identifiants à votre serveur MQTT
Même si ce n’est pas obligatoire car votre serveur MQTT reste sur votre réseau local, il est toutefois possible d’ajouter une authentification si vous le désirez. Pour ce faire, créez simplement un nouvel utilisateur à l’aide de la commande ci-dessous pour créer l’utilisateur dans le fichier passwd :
sudo mosquitto_passwd -c /etc/mosquitto/passwd user
Si vous désirez renforcer la sécurité de votre nouveau broker MQTT vous pouvez également éditer le fichier /etc/mosquitto/mosquitto.conf et y ajouter les lignes suivantes :
allow_anonymous false
password_file /etc/mosquitto/passwd
Cela aura pour but d’interdir l’accès au serveur aux anonymes et autoriser uniquement votre utilisateur identifié.
Il sera nécessaire de redémarrer MQTT pour prendre en compte les changements. Pour cela, vous devez utiliser la commande suivante :
systemctl restart mosquitto
Fixez l’adresse de votre VM dans votre routeur DHCP
Afin que l’adresse IP de votre nouveau serveur MQTT ne change jamais, il est nécessaire de créer une réservation de cette adresse IP dans votre routeur. Pour cela, que ce soit un switch, ou plus communément votre box internet qui porte le DHCP de votre réseau, la technique est toujours la même quelque soit le périphérique. Il faut simplement se rendre dans les paramètres, onglet DHCP, recherchez le bail en cours de votre serveur et créez une réservation.
Conclusion
Vous savez à présent comment mettre en oeuvre un serveur MQTT au sein de votre maison connectée. A vous les projets domotiques DIY ou l’étape suivante qui est l’installation d’une passerelle Zigbee2MQTT (qui peut d’ailleurs elle aussi être hébergée sur votre VM services).
Enfin, il restera à implémenter votre broker MQTT sous la domotique Jeedom ou Home Assistant pour commencer à faire de la domotique efficace avec ce protocole léger et rapide.
Why not run MQTT in a container?