Le protocole MQTT
Objets connectés - SNT Seconde
Le protocole MQTT
Objectifs
- Comprendre le principe de fonctionnement du protocole MQTT (publish/subscribe).
- Identifier les rôles du broker, des publishers et des subscribers.
- Reconnaître des cas concrets d'utilisation de MQTT dans l'IoT.
Introduction
Imaginez une maison intelligente où votre thermostat, vos lumières et votre système de sécurité communiquent en temps réel, sans fil. Ou un capteur dans un champ qui envoie des données d'humidité à un agriculteur sur son smartphone. Ces échanges reposent souvent sur un protocole de communication léger et efficace : MQTT.
Comment des objets connectés, souvent à faible puissance de calcul et avec des connexions réseau limitées, peuvent-ils échanger des données de manière fiable et en temps réel ?
Le principe Publish/Subscribe : une communication par abonnement
Contrairement au modèle client-serveur classique (comme le web HTTP), où un client demande une ressource à un serveur spécifique, MQTT utilise un modèle de communication dit 'publish/subscribe' (pub/sub). Dans ce modèle, les appareils ne communiquent pas directement entre eux. Ils échangent via un serveur central appelé 'broker'. Un appareil qui veut émettre une information (par exemple, un capteur de température) 'publie' (publish) un message sur un 'topic' (sujet). Un topic est comme un canal de discussion, identifié par une chaîne de caractères (ex: 'maison/salon/temperature'). De leur côté, les appareils intéressés par cette information (comme une application sur un téléphone ou un autre objet) 's'abonnent' (subscribe) à ce même topic auprès du broker. Dès qu'un message est publié sur un topic, le broker le redistribue automatiquement à tous les appareils abonnés à ce topic. Cela permet une communication 'découplée' : le capteur ne sait pas qui reçoit ses données, et les applications ne savent pas directement d'où viennent les données, seulement qu'elles arrivent sur le topic auquel elles sont abonnées. C'est très efficace pour connecter un grand nombre d'objets.
Points clés
- Modèle indirect : les objets ne communiquent pas directement, mais via un broker.
- Publication : un objet envoie un message sur un 'topic' (canal).
- Abonnement : un objet déclare au broker son intérêt pour un topic.
- Découplage : les publishers et subscribers ne se connaissent pas.
Les acteurs du système : Broker, Publishers, Subscribers
Le système MQTT repose sur trois rôles clés. 1) Le BROKER MQTT : c'est le cœur du système, un serveur qui reçoit tous les messages, les filtre par topic, et décide à quels clients les redistribuer. Il doit être constamment accessible sur le réseau. On peut utiliser des brokers publics pour tester ou installer son propre broker (comme Mosquitto). 2) Les PUBLISHERS (ou éditeurs) : ce sont les objets connectés qui envoient des données. Un publisher se connecte au broker, puis publie un message sur un topic spécifique. Par exemple, une carte électronique Arduino équipée d'un capteur et d'un module Wi-Fi peut publier la valeur '22.5' sur le topic 'classe209/temperature'. Elle n'envoie qu'un petit paquet de données contenant le topic et la valeur. 3) Les SUBSCRIBERS (ou abonnés) : ce sont les objets ou applications qui veulent recevoir des données. Un subscriber se connecte au broker et s'abonne à un ou plusieurs topics (on peut même utiliser des wildcards comme '+' ou '#'). Dès qu'un message est publié sur un topic auquel il est abonné, le broker lui envoie. Par exemple, une application de dashboard sur l'ordinateur du professeur peut s'abonner à 'classe209/temperature' pour afficher la courbe en direct. Un même objet peut être à la fois publisher et subscriber.
Points clés
- Broker : Serveur central qui route les messages.
- Publisher : Objet qui envoie (publie) des données sur un topic.
- Subscriber : Objet qui reçoit des données en s'abonnant à un topic.
- Un objet peut cumuler les rôles.
Pourquoi MQTT est-il idéal pour l'IoT ?
MQTT a été conçu pour des environnements contraints, ce qui le rend parfait pour l'Internet des Objets. Premièrement, il est LÉGER : l'en-tête du message (les informations de contrôle) est très petit, minimisant l'utilisation de la bande passante et de la batterie des objets. Deuxièmement, il est FIABLE grâce à des niveaux de qualité de service (QoS). QoS 0 : 'au plus une fois' – le message est envoyé sans accusé de réception (léger, mais peut se perdre). QoS 1 : 'au moins une fois' – le message est assuré d'arriver, mais des doublons sont possibles. QoS 2 : 'exactement une fois' – garanti la livraison sans doublon (le plus fiable, mais plus lourd). Troisièmement, il gère bien les CONNEXIONS INTERMITTENTES avec la fonction 'Last Will and Testament' (LWT) : un objet peut configurer un message que le broker publiera automatiquement si sa connexion se coupe anormalement (ex: alerte 'capteur déconnecté'). Enfin, il est SIMPLE À METTRE EN ŒUVRE avec de nombreuses bibliothèques logicielles pour tous les langages et plateformes (Python, Arduino, etc.).
Points clés
- Léger : Faible consommation de données et d'énergie.
- Fiable : 3 niveaux de QoS pour adapter la garantie de livraison.
- Résilient : Gère les déconnexions via le LWT.
- Simple : Bibliothèques disponibles partout.
Applications pratiques
MQTT est omniprésent dans les solutions IoT. Dans la DOMOTIQUE : un interrupteur connecté (publisher) envoie un message 'ON' sur le topic 'maison/cuisine/lumiere/commande'. Le broker le relaie au module qui contrôle la lampe (subscriber à ce topic), qui s'allume. Dans l'INDUSTRIE et l'AGRICULTURE : des capteurs d'humidité, de température ou de vibration dans une usine ou un champ publient régulièrement leurs mesures sur des topics dédiés. Un tableau de bord central s'y abonne pour surveiller l'état des machines ou des cultures. Dans les OBJETS CONNECTÉS grand public : certaines montres connectées ou assistants vocaux utilisent MQTT en interne pour synchroniser des données entre appareils. Un cas d'école simple : on peut simuler un système avec un broker installé sur l'ordinateur de la classe, un programme Python jouant le rôle d'un capteur (publisher), et un autre programme Python ou une application mobile (subscriber) affichant les valeurs. Cela illustre la simplicité du modèle pub/sub.
Points clés
- Domotique : Commandes et états des appareils (lumières, thermostats).
- Télémétrie : Remontée de données de capteurs industriels ou agricoles.
- Simulation : Outil pédagogique pour modéliser des flux de données IoT.
À retenir
MQTT est un protocole de communication clé pour l'IoT, basé sur un modèle publish/subscribe qui découple les émetteurs (publishers) des récepteurs (subscribers) via un serveur central (broker). Sa légèreté, sa fiabilité configurable (QoS) et sa capacité à gérer les connexions instables le rendent parfaitement adapté aux objets connectés aux ressources limitées. Il est largement utilisé dans la domotique, l'industrie et l'agriculture pour la télémétrie et le contrôle en temps réel.
- MQTT utilise un modèle indirect de type publish/subscribe via un broker.
- Il est conçu pour être léger, fiable et adapté aux réseaux contraints (IoT).
- Les topics permettent d'organiser les flux de données de manière hiérarchique.
