DEV Community

Ousmane SOW
Ousmane SOW

Posted on • Originally published at thanos.savoirguinee.com on

MQTT

MQTT

Utilisé pour le transfert de Machine-to-Machine (M2M), MQTT est considéré comme l'un des principaux protocoles de messagerie de l'internet des objets, mais côté industriel (IoT). Il est open source, léger ( en tête de messages de 2 octets ), faible utilisation de la bande passante du réseau ( 93 fois plus rapides que le HTTP ), faible consommation d'énergie ( 11 fois moins pour envoyer et 170 pour ne recevoir que le HTTP ) et fiable (mécanisme natif de Qos, acronyme de Quality of Service).

Son autre avantage, c'est qu'il est extrêmement facile à mettre en œuvre du côté client. C'est donc la solution parfaite pour l'IoT.

Attention cependant, fortement vulnérable si certaines conditions de sécurité ne sont pas réunies, comme l'absence de chiffrage sur la transmission & l'authentification (MQTT est capable d'être déployé sans chiffrement TLS ou SSL.)

Utilisé par nombreux acteurs dans le monde Facebook, openstack, geospatial, Bosh, IBM, Adarfuit, EVERYTHING IoT, Google Home Assistant, Pimatic, MS Azure, certains systèmes de signalisation, systèmes d'alarme, l'industrie du Gaz, de l'électricité et bien plus encore.

MQTT focntionne sur le principe de publication/abonnement (publish/subscribe)

C’est quoi un broker MQTT ?

Vous pouvez envoyer une commande pour contrôler une sortie ou vous pouvez la lire à partir d'un capteur et la publier.

Dans Mqtt, il y a quelques concepts de base que vous devez comprendre : publier et souscrire des messages, des topics et des broker.

Le premier concept est le système de publication et d'abonnement.

Qu'est-ce que cela signifie ? Cela signifie que le dispositif peut publier des messages à vos autres dispositifs ou votre dispositif peut s'abonner à un sujet particulier.Pour recevoir ces messages, par exemple, le dispositif 1 publie sur un sujet, le dispositif 2 s'abonne au même sujet que le dispositif 1 publie. Ainsi, le dispositif 2 reçoit le message.

MQTT

Les messages sont les informations que vous souhaitez échanger entre vos appareils, qu'il s'agisse d'une commande ou de données avec le système de publication/abonnement.

Vous pouvez faire à peu près tout ce que vous voulez dans vos projets de mission en mode autonome.

MQTT

Un autre concept important est celui des topics. Les topics sont la façon dont vous enregistrez l'intérêt pour les messages entrants ou je vais spécifier où vous voulez publier votre message.

votre message.

Les topics sont représentés par des chaînes de caractères séparées par des barres obliques. Les slashs indiquent le niveau du sujet, voici un exemple

si vous créez maintenant un sujet pour une lampe dans votre propre bureau (home/office/lamp).

Par exemple, si vous souhaitez allumer votre lampe dans votre bureau à la maison, vous publieriez un message dans un topic en utilisant node-red disant on et votre machine sera abonnée à ce même sujet.

Elle recevra donc le message on et allumera finalement la lampe.

MQTT

Les topics sont sensibles à la casse : Ce qui fait que home/office/lamp et home/office/Lamp sont différents.

Faites attention au terme borker : le broker est principalement responsable de la réception de tous les messages.

Le broker MQTT est un equipement intermediaire entre le publisher et l'abonée, il filtre les messages pour décider qui est intéressé et publie ensuite le message aux clients abonnés.

Il y a plusieurs brokers que vous pouvez utiliser.

Nous allons utiliser le broker mosquito que vous installerez sur votre raspberry pi.

Installer Mosquitto sur Linux ou Raspberry Pi

D'abord mettons à jour notre système avant d’installer Mosquito ce n'est pas obligatoire mais recommandé.

sudo apt update && apt upgrade

Enter fullscreen mode Exit fullscreen mode

Maintenant installons Mosquitto

sudo apt install mosquitto

Enter fullscreen mode Exit fullscreen mode

Pour faire des tests il faut installer Mosquitto client

sudo apt-get install mosquitto-clients

Enter fullscreen mode Exit fullscreen mode

Ici nos tests se baseront justes sur Lunix, si jamais vous voulez installer Mosquito pour _ Rasperry Pi _, installer mosquitto_sub, mosquitto_pub et mosquitto_passwVous voulez faire du mosquito en python? Alors je vous conseille python-mosquitto

Exemple de server pour vos test: Server de test

Pour verifier l'insatllation

systemctl status mosquitto

Enter fullscreen mode Exit fullscreen mode

Installer Mosquitto sur Windows ou macOS

Pour Windows ou macos je vous recommande de télécharger et installer via ce lien

Sécurisé Mosquitto

Maintenant on a Mosquitto qui fonctionne bien sur notre machine.

Mais pas sécurisé, maintenant sécurisons le! Creons un user avec un password

Pour cela tapez

cd /etc/mosquitto

Enter fullscreen mode Exit fullscreen mode

Vous n'avez pas besoin de vous identifier tant que vous ne faite pas une gestion de votre domotique DIY car pour la domotique vous serez amené à sécuriser vos appareils car sinon tout le monde peut accéder à appareils(chauffage, climatisation, motorisation de volets roulants.....).

Donc le mieux c'est de les protéger avec un mot de passe.

sudo mosquitto_passwd -c /etc/mosquitto/passwd USER_NAME

Enter fullscreen mode Exit fullscreen mode

Afin de limiter l'accès aux utilisateurs à un compte, modifiez le fichier de configuration.

Pour cela tapez la commande:

sudo /etc/mosquitto/mosquitto.conf

Enter fullscreen mode Exit fullscreen mode

Ajoutez ceci à la fin du fichier

allow_anonymous false
password_file /etc/mosquitto/passwordfile

Enter fullscreen mode Exit fullscreen mode

Maintenant on redemarre Mosquitto

systemctl restart mosquitto

Enter fullscreen mode Exit fullscreen mode

MQTT

Publier (envoyer) un message MQTT depuis le terminal

Pour publier un message on utilise la commande mosquitto_pub et pour connaitre les options liées à la commande on utilise mosquitto_pub -help

-h spcifie le nom du broker sur le quel on se connecte (ou IP)

-t spcifie le topic sur lequel le message est publié

-P spcifie le mot de passe (optionnel)

-m spcifie le message à envoyer qui peut être une valeur ou un JSON.

-u spcifie le nom d’utilisateur (optionnel)

-p spcifie le port, qui par défaut est 1883

Pour plus d'information voir documentation

Exemple , on se connecte au serveur -h localhost sur le Topic -t news/football et on publie le message -m j'ai gagné le ballon d'or

mosquitto_pub -h localhost -t news/football -m "jai gagné le ballon d'or!"

Enter fullscreen mode Exit fullscreen mode

Recevoir (souscrire) des messages

Pour recevoir un message on utilise la commande mosquitto_sub et pour connaitre les options liées à la commande on utilise mosquitto_sub -help

Ouvrez un second Terminal et exécutez la commande suivant.

mosquitto_sub -h localhost -t news/football

Enter fullscreen mode Exit fullscreen mode

Exemple d'échange: à gauche le publisher et à droite le subscriber

MQTT

Conclusion

Dans ce tutoriel nous avons parlé des avantages et inconvénients de MQTT.

Nous avons installé et testé MQTT en utilisant le serveur mosquito sur Lunix.

Pour ceux qui ont Windows ou macos nous les avons redirigé vers la documentation de Mosquito.

Rappelons que MQTT est un protocole TCP/IP utilisé beaucoup dans l'IoT industriel.Il est le protocole parfait pour votre domotique et est super bien adapté au développement d’objets connectés vus sa rapidité et sa lergerté.

Top comments (0)