Technique

MQTT

Protocole de messagerie léger publish/subscribe conçu pour l'IoT et les communications machine-to-machine. Standard OASIS utilisé par plus de 60% des projets IoT.

MQTT (Message Queuing Telemetry Transport) est un protocole de messagerie léger basé sur le modèle publish/subscribe, conçu pour les communications machine-to-machine (M2M) et l'Internet des objets. Standardisé par OASIS et ISO (ISO/IEC 20922), il est utilisé par plus de 60% des projets IoT pour sa légèreté, sa fiabilité et sa faible consommation de bande passante.

Définition technique

Architecture publish/subscribe

MQTT fonctionne autour de trois composants : les publishers (émetteurs de messages), les subscribers (récepteurs) et le broker (serveur central de routage). Un publisher envoie un message sur un topic (chemin hiérarchique, ex : zigbee2mqtt/chambre_thermostat/set), et le broker le redistribue à tous les clients abonnés à ce topic.

Ce découplage est fondamental : le publisher ne connaît pas les subscribers, et vice versa. Cela permet une architecture extensible où l'ajout d'un nouveau consommateur ne nécessite aucune modification du producteur. Les topics supportent les wildcards : + (un niveau) et # (tous les sous-niveaux).

Légèreté et performance

L'overhead minimal d'un paquet MQTT est de 2 octets (header fixe), contre plusieurs centaines pour HTTP. La connexion TCP est maintenue ouverte avec un mécanisme de keep-alive configurable, permettant des latences de l'ordre de la milliseconde. Le protocole supporte les messages retained (dernier état conservé par le broker pour les nouveaux abonnés) et Last Will and Testament (message automatique en cas de déconnexion brutale d'un client).

QoS et fiabilité

Trois niveaux de Quality of Service : QoS 0 (fire-and-forget), QoS 1 (au moins une livraison, avec accusé de réception PUBACK), QoS 2 (exactement une livraison, handshake en 4 étapes). Le choix du QoS dépend du compromis latence/fiabilité requis par l'application.

Applications en domotique

MQTT dans Home Assistant

Dans un setup Home Assistant typique, le broker Mosquitto tourne en local et sert de hub de communication. Zigbee2MQTT convertit les messages Zigbee en topics MQTT structurés. Home Assistant s'abonne à ces topics via l'intégration MQTT et expose automatiquement les entités (capteurs, thermostats, interrupteurs).

Exemple concret : quand un thermostat Bosch BTH-RM change de consigne, Zigbee2MQTT publie sur zigbee2mqtt/chambre_thermostat un payload JSON contenant occupied_heating_setpoint, local_temperature, humidity, etc. Home Assistant reçoit ce message et met à jour l'entité climate correspondante en temps réel.

MQTT dans l'industrie

Au-delà de la domotique, MQTT est déployé massivement dans l'IoT industriel (IIoT) : monitoring de machines (Siemens MindSphere), véhicules connectés (Tesla, 160M+ messages/jour), smart grids énergétiques et agriculture de précision. AWS IoT Core, Azure IoT Hub et Google Cloud IoT utilisent tous MQTT comme protocole principal d'ingestion.

Standards et spécifications

MQTT v5.0 (OASIS Standard)

Version actuelle du protocole MQTT avec propriétés de session, codes d'erreur enrichis et flux partagés

MQTT v3.1.1 (ISO/IEC 20922)

Version la plus déployée, standardisée ISO, socle de la majorité des implémentations IoT

Questions fréquentes

Quelle est la différence entre MQTT et HTTP pour l'IoT ?

MQTT utilise un modèle publish/subscribe avec connexion persistante, tandis que HTTP fonctionne en requête/réponse stateless. MQTT est 10 à 100 fois plus léger en bande passante : un message typique fait quelques dizaines d'octets contre plusieurs centaines pour une requête HTTP avec ses headers.

MQTT maintient une connexion TCP ouverte avec keep-alive, permettant une latence de quelques millisecondes. HTTP nécessite l'ouverture d'une nouvelle connexion pour chaque échange (sauf HTTP/2). Pour les capteurs IoT sur batterie ou réseau contraint, MQTT est le standard de facto.

Qu'est-ce qu'un broker MQTT ?

Le broker est le serveur central qui reçoit tous les messages publiés par les clients et les redistribue aux abonnés intéressés. Les brokers les plus utilisés sont Mosquitto (open source, léger, idéal pour Home Assistant), EMQX (haute disponibilité, clustering), et HiveMQ (entreprise, cloud-native).

Dans une installation Home Assistant, Mosquitto tourne en add-on local et sert de hub de communication entre Zigbee2MQTT (qui publie les états des appareils) et Home Assistant (qui s'abonne aux topics pour créer les entités).

C'est quoi les niveaux de QoS en MQTT ?

MQTT définit trois niveaux de Quality of Service : QoS 0 (at most once, fire-and-forget, pas de garantie de livraison), QoS 1 (at least once, le message est retransmis jusqu'à accusé de réception, possible doublon), et QoS 2 (exactly once, handshake en 4 étapes garantissant un seul envoi, plus lent).

En domotique, QoS 1 est le compromis standard : fiable sans surcharge excessive. Zigbee2MQTT publie en QoS 0 par défaut pour la performance, mais les commandes critiques (changement de consigne thermostat) gagnent à utiliser QoS 1.

Ressources et documentation