MQTT sur votre raspberry pi

 Bonjour à tous!
Aujourd’hui je vous propose de parler de MQTT. Nous allons voir de quoi il s’agit et comment mettre en place un serveur sur notre Raspberry pi.Spoiler alert! Si vous suivez les différents articles de notre série Domotique sur mesure, ce billet vous sera très probablement utile pour le prochain 😉

MQTT qu’est ce que c’est ?

Commençons par une définition :

MQTT1 (MQ Telemetry Transport) est un protocole de messagerie publish-subscribe basé sur le protocole TCP/IP.

Il a été initialement développé par Andy Stanford-Clark (IBM) et Arlen Nipper (EuroTech), puis offert à la communauté Open Source.

MQTT v3.1.1 est maintenant un standard OASIS, la spécification du protocole est disponible en HTML et PDF.

Wikipédia

MQTT est très largement utilisé dans tous ce qui est IoT (l’internet des objets) car il est léger et ne consomme que très peu de bande passante.

Dans un système MQTT complet nous retrouvons quatre notions importantes:

  • Les publishers : L’origine des messages
  • Les subscribers : La destination des messages
  • Le broker : L’élément qui fait le lien entre les publishers et les subscribers
  • Les topics : Canaux de communications.

Il existe plusieurs broker, dans ce billet nous allons mettre en place mosquitto.

Ce type de système est souvent utilisé afin de mettre en relation différents objets/systèmes de manière simple et économique. Ainsi des périphériques ou personnes pourront publier des messages que chacun sera libre d’interpréter comme il le souhaite. On peut presque le voir comme le Twitter de l’IoT.

Préparation de notre environnement

Avant toute chose nous allons installer un client MQTT sur notre PC afin d’être en mesure de tester notre futur broker. L’un des clients les plus connus est MQTT.fx. J’utiliserai donc cet outil pour mes exemples.

Une fois le client installé nous allons tester que tout fonctionne bien. Lorsque vous ouvrez MQTT.fx vous devriez avoir un écran ressemblant à ceci :

MQTT.fx

MQTT.fx

Cliquez l’engrenage à côté du bouton connect afin d’accéder à la page de gestion des connexions. En bas à gauche cliquez sur « + » afin de créer une nouvelle connexion et remplissez les diverses informations demandées comme ci-dessous.

MQTT.Fx - login

MQTT.Fx – login

Valider le formulaire, sélectionner l’item que vous venez de créer dans la liste déroulante et cliquez sur connect.

MQTT.Fx - Connecté

MQTT.Fx – Connecté

Nous voilà connecté sur notre premier broker ! Ce dernier est un broker de test appartenant à Mosquitto et ne nécessitant pas d’identification. Il sera parfait pour jouer rapidement avec notre nouvel outil.

Cliquez sur l’onglet « Subscribe » et entrer le nom du topic que vous voulez suivre suivis de #. Dans mon cas j’ai choisi « QCH/# » ainsi je recevrai tous les messages écris au topic QCH ainsi qu’à ces sous-topic.

MQTT.Fx - Subscriber

MQTT.Fx – Subscriber

Cliquez maintenant sur l’onglet publish et publier un message sur votre topic en vous inspirant de l’exemple ci-dessous :

MQTT.Fx - Publisher

MQTT.Fx – Publisher

Une fois publié, votre message cliquez à nouveau sur subscribe et vous devriez voir le message que vous venez de publier !

MQTT.Fx - réception d'un message

MQTT.Fx – réception d’un message

Vous êtes sceptique ? Je vous invite à vous connecter via un autre pc ou même via votre smartphone grâce à des applications telles que MyMQTT afin de vérifier que vos messages sont bien accessible en live de partout !

MyMQTT

MyMQTT

 

Nous avons donc un à deux clients qui fonctionne et qui nous permettront de tester notre serveur.

Installer et paramétrer le broker

Dans un premier temps installez mosquitto sur votre Raspberry. Pour ce faire ouvrez un terminal et entrez la commande :

[shell]sudo apt-get install mosquitto[/shell]

Entrez la commande suivante pour démarrer le broker.

[shell]mosquitto -d -p num_de_port[/shell]

Configurer vos clients afin qu’ils écoutent et/ou publient sur ce broker et normalement vous devriez pouvoir communiquez !

  • -p n’est pas obligatoire, dans mon cas je préfère ne pas travailler sur les ports standard (je suis un peu paranoïaque 😉 )
  • Si vous désirez passer via un domaine vous pouvez vous inspirer de cet article afin de mettre en place le domaine et les redirections de port appropriées.

Notre broker fonctionne et c’est un bon début. Cependant comme sur le broker de test, si vous ouvrez votre serveur à l’extérieur, tout le monde pourra écouter et publiez sur votre broker. Cette situation n’est pas idéale et nous allons y remédier.

Coupez votre broker :

Terminal

Terminal

Créez un utilisateur grâce à la commande :

[shell]sudo mosquitto_passwd -c /etc/mosquitto/passwd user[/shell]

Éditez le fichier de configuration de mosquitto :

[shell]sudo vi /etc/mosquitto/mosquitto.conf[/shell]

Ajoutez les lignes suivantes :

[shell]allow_anonymous false
password_file /etc/mosquitto/passwd[/shell]

Relancez mosquitto en lui demandant de prendre en compte le fichier de configuration :

[shell]sudo mosquitto -d -p your_port -c /etc/mosquitto/mosquitto.conf[/shell]

Si vous testez le broker avec vos clients sans les configurer vous ne devriez pas pouvoir publier ou écouter quoi que ce soit.

Conclusion

Notre broker est en place et correctement configuré. Il ne vous reste plus qu’à paramétrer votre box pour que le broker soit accessible de partout. Vous pouvez vous inspirez de ce billet ou rechercher sur le net afin de trouver la procédure exacte pour votre box.

MQTT est vraiment puissant et flexible, dans cet article nous n’avons survolé le protocole n’hésitez donc pas à vous documenter sur le sujet en attendant le prochain billet.

Mon petit doigt me dit que ce broker vous servira 😉

A bientôt !

1 réponse

  1. 3 septembre 2017

    […] de ne pas installer tout et n’importe quoi sur la SMART, j’ai donc installé un serveur MQTT sur mon Raspberry que j’utilisais pour Jeedom et téléversé un sketch fourni avec la package Arduino Wifi Dev […]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.