Technologie

Qu’est ce que MQTT

MQTT signifie Message Queuing Telemetry Transport. Il s’agit d’un protocole de messagerie publish-subscribe basé sur le protocole TCP/IP.

Publish-subscribe (littéralement : publier-s’abonner) est une structure d’échange de message différente d’une relation client-serveur plus répandue. Ici des diffuseurs (ou publisher) n’envoient pas spécifiquement des messages à des destinataires (subscriber). À la place, le message est assigné à une catégorie (topic) et le diffuseur ne sait pas s’il y a des destinataires. Les destinataires de leur coté s’abonnent aux catégories qui les intéressent et ne reçoivent que les messages correspondant, sans savoir s’il y a des diffuseurs.

L’objectif de la création de MQTT est d’avoir un protocole efficace en bande passante, léger et utilisant peu d’énergie de batterie, car la liaison satellite qu’ils utilisaient était très coûteuse à cette époque.

Broker

Tous les appareils, ou clients, communiquent via un élément intermédiaire que l’on appelle le broker dans le cas de MQTT. le broker peut être installé sur un PC, un mac, la plupart des systèmes linux, comme d’ailleurs raspbian sur le Raspberry Pi. Que cela soit via une installation en container ou bien dans le cloud. Il y a d’ailleurs beaucoup de services MQTT en cloud disponibles. Les brokers les plus connus sont HiveMQ et Mosquito un broker libre et open source qui est très souvent utilisé.

Fonctionnement du modèle publish/subscribe de MQTT

Publish Subscribe

Les appareils “client” transfèrent ou reçoivent de l’information, soit depuis le broker, ou via un mécanisme d’abonnement à des sujets “topics” spécifiques. Ils peuvent aussi publier des messages sur un “topic” particulier au broker. Un client n’est donc pas en contact direct avec les autres clients puisque toutes les connections passent par le broker. Un client n’est pas limité seulement à la publication ou à l’abonnement. Tout type d’appareils peuvent accéder aux clients, comme des microcontrôleurs, comme Arduino, ou bien les ordinateurs,

Topics

Les topics sont une façon de catégoriser le type de message qui peuvent être envoyés. Les clients peuvent envoyer des messages sur un topic bien défini, et peuvent aussi s’abonner à des topics donnés. Le broker reçois tous les messages puis il retransmet les messages à tous les clients qui se sont abonnés au topic en question. Les topics sont basiquement des catégories hiérarchisées. Si vous voulez qu’un appareil reçoive les messages de plusieurs topics, un peut utiliser des “caractères joker” ou wildcards. Les wildcards à un niveau sont indiqués avec un icône “+” qui remplace un niveau de topic. Par exemple

ebc/machine/robot/axis1/temperature
ebc/machine/robot/ + /temperature

permet de recevoir des messages au sujet des températures de tous les axes du robot.

Les wildcards à plusieurs niveaux, sont indiqués par un hashtag. Ils remplacent n’importe quel niveau hiérarchique inférieur.
Par exemple :

ebc/axelle/robot/axis1/temperature
ebc/axelle/robot/ #

permet d’avoir accès à toutes les données de tous les axes.

S’il n’y a pas d’abonné à un topic le broker ne conserve pas le message, mais le publisher peut dire au broker de garder jusqu’à ce qu’un client s’abonne à ce topic. Cela peut avoir du sens si vous voulez qu’un nouveau client accède à la dernière valeur au moment où il s’inscrit.

Quality of service : QoS

En fonction de vos besoins, par exemple vous assurer qu’un message a bien été reçu, ou qu’il n’a bien été reçu qu’un seule fois, trois types de paramètres sont disponibles pour la QoS pour les messages envoyés.

QoS 0, “fire an forget”, c’est le plus léger en ce qui concerne l’utilisation du réseau, le message est envoyé une seule fois, quel que soit le feedback du broker.
QoS 1, le client va envoyer son message de manière répétée, jusqu’à ce qu’il reçoive un message de confirmation de la part du broker. Cela peut entraîner la livraison de plusieurs messages aux abonnés.
QoS 2, est un handshake en 4 étapes : Cela garanti que chaque message n’est reçu qu’une seule fois en confirmant le statu de part et d’autre.

MQTT est très léger en terme de poids de donnée, et d’énergie consommée. C’est pour cela qu’il est disponible sur une très grande quantité de machines. Même avec très peu de ressources.
La taille de la donnée peut n’être que de 2 bytes, mais peut aussi contenir jusqu’à 256 Mbytes

Mqtt transmet la donnée, principalement sur le protocole TCP/IP. Il existe une variation de MQTT, MQTT SN qui ouvre le protocole à encore plus d’appareils, pour les réseaux non TCP/IP comme par exemple Bluetooth et Zigbee, c’est pourquoi c’est un outil très important dans le monde de l’IOT

Articles connexes :

Qu’est ce qu’OPC-UA ?

Nous vous conseillons

Capteur de fin de course : quelle technologie choisir ?

Frédéric

Raccordement électrique : Quels sont les connecteurs standards ?

Frédéric

Comment assécher un air comprimé trop humide ?

Frédéric

Air comprimé : faut-il encore le lubrifier ?

Frédéric

Laisser un commentaire

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.