Tutoriel : installer Mosquitto MQTT sur Raspberry Pi

Mosquitto : un serveur MQTT facile à installer !

Si vous avez suivi nos nombreux tutoriels domotiques DIY, il est fort probable que vous ayez déjà entendu parler du protocole MQTT. Mais késako?

C’est ce que nous allons voir aujourd’hui avant de vous expliquer comme mettre en œuvre seul, en quelques minutes seulement et pour pas très cher, un serveur utilisant ce protocole très intéressant pour tous ceux qui utilisent une box domotique telle que la nouvelle Jeedom Atlas, la peu onéreuse Home Assistant sur Raspberry Pi ou encore la très efficace Homey Pro.

MQTT, c’est quoi?

Définition

MQTT, ou Message Queuing Telemetry Transport, est un protocole de communication conçu pour les applications M2M (Machine To Machine) et IoT (Internet of Things). Créé en 1999 par Andy Stanford-Clark (IBM) et Arlen Nipper (Arcom), on ne peut pas dire qu’il soit bien nouveau, mais il reste toujours très apprécié en domotique de par sa fiabilité et sa sobriété.

MQTT permet en effet des échanges rapides avec très peu de données – économie de bande passante – sans avoir à interroger un serveur – moins de la latence. Il est en donc précieux dans nos maisons connectées car il est 90 fois plus rapide que le protocole HTTP. Par ailleurs, il nécessite 10 fois moins d’énergie pour envoyer des messages et 170 fois moins pour en recevoir.

Concrètement, chaque message MQTT se compose d’une en-tête fixe de seulement 2 octets, d’une en-tête variable facultative, d’une charge utile de message limitée à 256 Mo et d’un niveau de qualité de service…

Qualité de service (QoS)

MQTT offre une Qualité de service (QoS) à 3 niveaux :

  • QoS 0 : transmission de message sans accusé de réception
  • QoS 1 : transmission de message avec accusé de réception
  • QoS 2 : transmission de message avec accusé de réception et vérification du message transmis afin d’éviter qu’un même message ne soit transmis de plusieurs fois.

Comment ça marche ?

MQTT est un protocole dit « publish / suscribe » permettant aux appareils « edge of network » de publier vers un « broker ».

Bon, OK, ça n’est pas très clair. En français, cela signifie que le serveur appelé broker va publier des topics auxquels des clients vont pouvoir s’abonner. Chaque client peut souscrire à différents topics, et s’agissant d’un protocole bidirectionnel, le broker MQTT va avertir tous les clients abonnés au topic lorsque l’un d’eux y publiera un message.

Exemple : si notre client est un capteur de température ou un thermostat, il va informer son broker MQTT de la température qu’il relève dans un topic appelé « /temperature » auquel sont abonnés nos clients MQTT : application mobile et chaudière connectée. Si notre application se contentera d’enregistrer ces données, notre chaudière va quant à elle l’utiliser pour décider si elle doit ou non s’allumer. Mieux encore, quand cette dernière se mettra en marche, elle notifiera le broker qui, de son côté, informera les autres clients.

Au fond, ça n’est pas bien compliqué, n’est-ce pas?

Le matériel nécessaire

Maintenant que nous savons tout, nous allons passer à la pratique et utiliser du matériel que nous avions en stock : un kit Raspberry Pi 3B+. Vous pouvez évidemment opter pour un Raspberry Pi 4, mais il est bien plus onéreux et son surplus de puissance ne nous sera d’aucune utilité…

Si vous possédez un NAS Synology, vous serez probablement plus intéressé par l’installation sur ce dernier :

À LIRE :
Tutoriel : Mosquitto MQTT sur NAS Synolgy

Installer un broker Mosquitto MQTT sur Raspberry Pi

Nous allons partir du principe que vous avez déjà procédé à l’installation de Raspberry Pi OS sur votre nano-ordinateur du même nom. Si cela n’est pas déjà le cas, nous vous invitons à consulter notre tutoriel. N’ayez crainte, c’est désormais d’une facilité déconcertante !

À LIRE :
Tutoriel Raspberry Pi OS : l'installation toujours plus facile avec Imager

Installation MQTT sur Raspberry Pi OS

Nous allons utiliser PuTTY, un petit programme permettant de très facilement se connecter à distance à notre Raspberry Pi en SSH.

Installez-le, lancez-le et entrez l’adresse IP de votre Raspberry PI sur le port 22.

Cliquez ensuite sur Open et une nouvelle fenêtre s’ouvre. C’est le terminal dans lequel vous allez saisir vos identifiants d’accès au système Raspberry Pi OS.

Important : si vous n’avez pas déjà modifié le mot de passe par défaut, il est important de le faire avant d’aller plus loin.

Tapez la ligne suivant et sélectionnez ‘Change User Password‘ :

sudo raspi-config

Autre point important, il nous faut vérifier que notre Raspberry Pi est bien à jour… Même si vous venez de l’installer !

sudo apt-get update

Faîtes les mises à jour nécessaires et passons maintenant à l’installation de notre broker MQTT.

sudo apt-get install mosquitto

Si vous êtes familier de Linux, vous ne serez pas surpris que nous vérifions ensuite la bonne exécution en tapant :

systemctl status mosquitto

Tout est ok? Votre écran doit ressembler à ça :

Bravo, vous avez terminé, vous êtes désormais l’heureux propriétaire d’un broker Mosquitto MQTT !

Mais nous n’avons pas terminé pour autant… Comme nous allons vraiment utiliser Mosquitto au quotidien, et pas simplement pour faire un tuto, il nous faut le forcer à se lancer à chaque démarrage de notre Raspberry Pi.

Saisissez cette commande :

sudo systemctl enable mosquitto.service

Sécuriser son broker Mosquitto MQTT

Il est également très important de sécuriser notre service en créant un identifiant Mosquitto et un mot de passe associé (remplacez ID par l’identifiant de votre choix) :

sudo mosquitto_passwd -c /etc/mosquitto/passwd ID

Nous allons ensuite ajouter deux lignes au fichier de configuration de Mosquitto via l’éditeur de texte :

sudo nano /etc/mosquitto/mosquitto.conf
allow_anonymous false 
password_file /etc/mosquitto/passwd
Noubliez pas faire ctrl +o pour sauver, de valider avec Entrée, et de quitter avec ctrl + x
C’est terminé, notre broker Mosquitto MQTT est fin prêt ! Il ne nous reste qu’à nous en servir…

Utiliser un client MQTT

Nous allons relancer notre broker Mosquitto MQTT avec :

sudo systemctl restart mosquitto

Et nous tourner vers un client MQTT gratuit afin de lire et publier très facilement des topics.

Notre préférence va à MQTT Explorer, mais vous en trouverez d’autres si vous préférez. Disponible pour PC et Mac, ce programme va nous être très utile dans le futur en nous permettant de visualiser les topics et leur activité, de les manipuler, et bien entendu de publier des topics MQTT.

  1. Installez le client MQTT Explorer
  2. Renseignez l’adresse IP de votre Raspberry Pi dans « Host »,
  3. Laissez le port 1883
  4. Saisissez vos identifiants dans ‘Username’ et ‘Password’ (ceux choisis pour Mosquitto, pas ceux de Raspberry Pi OS, bien entendu).
Vous pouvez désormais parcourir, créer et modifier à l’envi vos topics MQTT grâce au broker Mosquitto et au client MQTT Explorer. A quoi ça sert ? Eh bien, c’est ce que nous verrons dans de prochains tutoriels domotiques DIY

Pour les plus curieux, vous comprendrez mieux où nous allons avec cette liste d’applications compatibles Mosquitto MQTT :

 

Fasciné par Alexa depuis le jour où je l'ai reçue en bêta test, je me suis peu à peu passionné pour le sujet, avant de me décider à aller plus loin en créant un site avec Jean-Christophe. Une activité qui me permet d'étancher ma soif de nouvelles technologies et de partager mes découvertes sur la plus sympathique des communautés : Les Alexiens.