Qu’est-ce que MQTT ?
Message Queuing Telemetry Transport (MQTT) est un protocole de messagerie léger et populaire, fondé sur le modèle publication-abonnement. Il est idéal pour connecter sur Internet des appareils et des applications de l’Internet des objets (IoT) ou de communication de machine à machine (M2M). MQTT est conçu pour fonctionner efficacement dans des environnements à faible bande passante ou à faible consommation d’énergie, ce qui en fait un choix idéal pour les applications comptant un grand nombre de clients distants. Il est utilisé dans divers secteurs, notamment l’électronique grand public, l’automobile, les transports, l’industrie manufacturière et la santé.
Comment fonctionne MQTT ?
Les appareils ou applications connectés via MQTT sont appelés clients. Ces clients publient des messages et/ou s’abonnent à des messages sur un sujet spécifique ou sur plusieurs sujets. Les clients abonnés reçoivent tous les messages publiés sur ce sujet, ce qui permet un échange de données efficace et tolérant aux pannes entre de nombreux appareils et services.
Au cœur d’une architecture MQTT se trouve un broker. Le broker est un serveur chargé de suivre les clients (ainsi que les topics auxquels ils sont abonnés), de traiter les messages et de les acheminer vers les systèmes appropriés.
Versions du protocole MQTT
Plusieurs versions majeures du protocole MQTT ont été adoptées comme normes. L’organisation OASIS gère les révisions du protocole et tient à jour une spécification complète pour chaque version. Chaque révision de MQTT a enrichi les fonctionnalités du protocole. Il est donc important de savoir à quelle version de MQTT vos appareils et votre broker sont conformes.
Types et format des messages MQTT
Il existe plusieurs types de messages MQTT, chacun ayant un format spécifique que les appareils et applications compatibles doivent respecter. Le format et les types de messages varient selon les versions du protocole MQTT. Une liste complète des types de messages est disponible dans chaque spécification du protocole MQTT.
Les trois types de messages les plus courants sont CONNECT, PUBLISH et SUBSCRIBE. Chaque message MQTT contient un en-tête, une charge utile et des indicateurs facultatifs. Selon le type de message, la longueur de la charge utile peut varier. Par exemple, dans un message PUBLISH, la charge utile contient les données à envoyer à tous les appareils abonnés, et la longueur du champ de données influe directement sur la taille du message. Par défaut, les appareils MQTT se connectent au port 1883 sans sécurisation, ou au port 8883 lorsque le chiffrement SSL/TLS est activé.
Quel est un exemple concret d’utilisation de MQTT ?
Les voitures intelligentes sont un excellent exemple d’utilisation de MQTT. À mesure que les constructeurs automobiles ajoutent de nouvelles fonctionnalités couvrant aussi bien le diagnostic à distance et la gestion de flotte que le paiement du carburant et le divertissement, MQTT s’est imposé comme une norme courante pour les voitures connectées. Contrairement au protocole de transfert hypertexte (HTTP), MQTT peut maintenir une session persistante même lorsqu’une voiture entre dans une zone blanche ou en sort, ou lorsque sa connexion passe d’une antenne-relais à une autre. MQTT prend également en charge les communications bidirectionnelles, ce qui permet à la voiture et à l’application cloud d’envoyer et de recevoir plus facilement des données sans attendre que l’autre réponde.
Quelle est la différence entre HTTP et MQTT ?
HTTP et MQTT sont tous deux des protocoles réseau utilisés pour transmettre des données sur Internet. Examinons leurs différences.
HTTP
- Protocole de requête-réponse dans lequel un client envoie une requête à un serveur, qui lui renvoie les données demandées.
- Principalement conçu pour transmettre du contenu web (tel que des documents HTML, des images et des données de formulaire) entre les serveurs web et les navigateurs.
- Exemple : un navigateur web (le client) envoie une requête à un serveur web, qui lui répond en transmettant les données d’une page web.
MQTT
- Protocole de messagerie léger de type publication-abonnement, dans lequel les clients s’abonnent à des sujets et reçoivent les messages publiés sur ces sujets par d’autres clients.
- Conçu pour les topologies de réseau et les appareils pour lesquels une faible bande passante, la stabilité de la connexion et la consommation d’énergie sont des critères importants.
- Exemple : le scénario de la voiture intelligente ci-dessus.
Pourquoi utiliser MQTT dans l’Internet des objets (IoT) ?
De nombreuses caractéristiques de MQTT en font le protocole idéal pour l’échange de messages entre les appareils IoT (les « objets » de l’Internet des objets) et les systèmes back-end. Nous nous concentrons ici sur quatre caractéristiques :
- Léger – MQTT a une faible empreinte de code, ce qui le rend particulièrement adapté aux appareils disposant d’une puissance de traitement et d’une mémoire limitées, tels que les capteurs.
- Fiable – De nombreux appareils IoT se connectent via des réseaux cellulaires. MQTT est un protocole adapté aux réseaux à faible bande passante, qui nécessitent des messages compacts consommant moins de données. MQTT est ainsi plus fiable, même lorsque la bande passante du réseau est limitée ou instable.
- Évolutif – Le modèle de publication-abonnement s’adapte facilement à l’ajout d’appareils et de systèmes back-end. Un compteur intelligent résidentiel illustre le cas d’un appareil unique publiant des données vers deux réseaux back-end distincts (abonnés) : il transmet les données de consommation à la fois aux systèmes du fournisseur d’énergie à des fins de facturation et à une application destinée au client, à laquelle le propriétaire peut accéder pour suivre la consommation énergétique de son logement.
- Sécurisé – Les messages MQTT peuvent être chiffrés à l’aide du protocole standard Transport Layer Security (TLS) et prendre en charge des identifiants pouvant être utilisés pour l’authentification. MQTT constitue ainsi un protocole de messagerie sécurisé pour les applications IoT qui traitent des informations sensibles, telles que les relevés de suivi de santé provenant de divers dispositifs médicaux.
Quel protocole de transport MQTT utilise-t-il ?
MQTT utilise le protocole de contrôle de transmission/protocole Internet (TCP/IP) comme protocole de transport sous-jacent. Ce protocole réseau largement répandu garantit une transmission fiable des messages entre les clients et les courtiers.
Plusieurs raisons expliquent pourquoi le protocole TCP/IP est considéré comme fiable et efficace :
- Détection et correction des erreurs – Diverses techniques permettent de vérifier l’intégrité des paquets de données, tandis que des mécanismes de retransmission assurent la récupération des paquets perdus.
- Contrôle de flux – Les données sont transmises à un débit optimal pour chaque réseau, ce qui évite les retards de transmission et favorise une communication efficace.
- Multiplexage – Plusieurs flux de données peuvent être transmis via une seule connexion, ce qui permet à plusieurs applications d’utiliser simultanément la même connexion.
- Compatibilité – Fonctionne avec une grande variété d’appareils et de systèmes d’exploitation.
- Évolutivité – Conçu pour fonctionner dans des réseaux vastes et complexes sans compromettre les performances, même lors du traitement d’un trafic important.
Bien que TCP/IP soit le choix le plus courant, ce n’est pas la seule option pour transporter les messages MQTT. Le protocole MQTT fonctionne également avec le protocole UDP (User Datagram Protocol) et les WebSockets.

