Qu’est-ce que MQTT ?
Derrière chaque Maison intelligente application, système de réseau intelligent, ville intelligente, automatisation industrielle basée sur l'IoT et autres systèmes intelligents est une technologie de messagerie qui fonctionne en coulisses, faisant bouger les choses. Il permet aux ordinateurs, smartphones, voitures, réfrigérateurs, thermostats, appareils portables, capteurs à distance et autres appareils et machines intelligents de communiquer entre eux et d'échanger des informations. Cette technologie est appelée Message Queuing Telemetry Transport (MQTT).
Qu’est-ce que MQTT ?
MQTT est un protocole de réseau de messagerie open source léger qui transporte des messages entre appareils. Il utilise un modèle de communication publication/abonnement pour fournir aux clients réseau aux ressources limitées un moyen simple de distribuer des informations de télémétrie dans des environnements à faible bande passante.
MQTT a été conçu pour les connexions avec des appareils situés dans des emplacements distants où une « petite empreinte de code » est requise ou où la bande passante du réseau est limitée. C'est un bon choix pour les réseaux sans fil qui connaissent différents niveaux de latence en raison de perturbations occasionnelles. bande passante limitations ou connexions peu fiables.
MQTT a commencé comme un IBM protocole propriétaire utilisé pour communiquer avec Systèmes SCADA dans l'industrie pétrolière et gazière. Il s'agit désormais d'un protocole open source supervisé par l'Organisation pour l'avancement des normes d'information structurées (OASIS). Le MQ dans MQTT signifie « Message Queuing » ; cependant, il n'y a plus de messages en file d'attente dans la communication MQTT. Le protocole fournit désormais une messagerie de publication et d'abonnement et est devenu populaire auprès des systèmes d'automatisation intelligents. Aujourd'hui, MQTT est l'un des principaux protocoles open source utilisés dans brouillard et informatique de pointe , et pour connecter l’Internet des objets (IoT). Outre MQTT, il existe d'autres protocoles de messagerie populaires qui prennent en charge les applications IoT. Il s'agit notamment du protocole AMQP (Advanced Message Queuing Protocol), du protocole d'application contraint (CoAP), du protocole extensible de messagerie et de présence (XMPP), du service de distribution de données (DDS), de ZigBee et de Z-Wave.
Dans cet article, nous examinerons le protocole MQTT et son architecture, son fonctionnement et son utilisation dans l'IoT, y compris certaines applications du monde réel.
Présentation de l'architecture et du protocole MQTT
MQTT est un protocole de publication/abonnement très simple conçu pour les communications légères de machine à machine (M2M). L'architecture MQTT est composée des éléments clés suivants : courtier MQTT et client MQTT.
Courtier MQTT (serveur) : Un courtier ou un serveur MQTT est un logiciel exécuté sur un ordinateur qui reçoit des messages de sources externes (éditeurs), puis les achemine vers la destination appropriée (abonnés). L'ordinateur peut être un Raspberry Pi, un ordinateur de bureau sur site ou un serveur basé sur le cloud exécutant un logiciel open source ou propriétaire. L'un des courtiers de messages open source les plus populaires est le Courtier en moustiques . Vous pouvez exécuter votre propre instance de Mosquito sur votre propre PC. Mais plutôt que d'utiliser le Mosquito sur un PC local, il existe des serveurs cloud facilement disponibles tels que Éclipse IoT , ChoseMQ , CloudMQTT , et Héroku qui implémentent le courtier Mosquito. Ils sont particulièrement utiles dans les situations où vous souhaitez que vos projets IoT soient contrôlables via Internet.
Selon l'implémentation, un courtier peut gérer jusqu'à des milliers de clients MQTT connectés simultanément. Par conséquent, lors du choix d'un courtier MQTT, vous devez prendre en compte des facteurs tels que l'évolutivité et l'intégration. En plus de recevoir et d'acheminer les messages vers les clients, le courtier offre également d'autres fonctionnalités telles que :
- Qualité de service (QoS) : la QoS Cette fonctionnalité permet au protocole MQTT de fournir des qualités de service de messagerie supplémentaires qui garantissent que le message en transit est livré comme requis par le service.
- Store and Forward : comme son nom l'indique, MQTT prend en charge le stockage des messages persistants sur le courtier.
- Sécurité : le courtier MQTT peut exiger une authentification par nom d'utilisateur et mot de passe des clients pour se connecter pour des raisons de sécurité. Pour garantir la confidentialité des messages en transit, la connexion TCP peut être cryptée avec SSL/TLS.
Client MQTT (éditeurs et abonnés) : Les clients MQTT peuvent être n'importe quel appareil ou application, allant d'un simple microcontrôleur Arduino à un serveur d'applications entièrement hébergé dans le cloud qui exécute une bibliothèque MQTT et se connecte à un courtier MQTT via un réseau. Les clients MQTT peuvent être soit un éditeur, soit un abonné, ou les deux. Ces deux fonctions peuvent être implémentées dans le même client MQTT.

Durant la phase de communication, un client peut effectuer des opérations de connexion, de publication, d'abonnement, de désabonnement et de déconnexion selon les cas. Il existe quatorze types de messages définis utilisés pour connecter et déconnecter un client d'un courtier, publier des données, accuser réception de données et superviser la connexion entre le client et le serveur. Le tableau 1.0 ci-dessous présente une répartition des différents types de messages.
CONNECTER | Demande du client pour se connecter au serveur |
CONNACK | Accusé de réception de connexion |
PUBLIER | Publier un message |
PUBLIC | Publier un accusé de réception |
PUBREC | Publication reçue |
PUBREL | Publier la version |
PUBCOMP | Publication terminée |
S'ABONNER | Demande d'abonnement client |
SUBACK | Accusé de réception de l'abonnement |
SE DÉSABONNER | Demande de désabonnement |
UNSUBACK | Accusé de désinscription |
PINGRÉQ | Requête PING |
PINGRESP | Réponse PING |
DÉCONNEXION | Le client se déconnecte |
Tableau 1.0 | Types de messages MQTT et descriptions
MQTT s'appuie principalement sur le Protocole TCP pour la transmission des données entre les clients et le courtier, ce qui rend la communication fiable. Les informations de connexion sont envoyées au format texte brut. Cependant, SSL/TLS peut être utilisé pour chiffrer et protéger les données en transit. Le port MQTT non chiffré par défaut est 1883, tandis que le port chiffré est 8883.
Comment fonctionne le modèle de publication-abonnement MQTT
Le modèle de communication de MQTT évite les connexions directes entre les appareils en relayant les données via un serveur central appelé courtier. Ceci est vraiment souhaitable dans l'IoT car il est facile d'ajouter de nouveaux appareils sans toucher à l'infrastructure existante, et comme les nouveaux appareils n'ont besoin que de communiquer avec le courtier, ils n'ont pas réellement besoin d'être compatibles avec les autres clients.
Lorsqu'un appareil (ou un client) souhaite envoyer des données à un serveur (ou un courtier), cela s'appelle unpublier. Lorsque l’opération est inversée, on parle des'abonner. Plusieurs clients peuvent se connecter au courtier et s'abonner aux sujets qui les intéressent. Les clients peuvent également publier des messages sur des sujets spécifiques qui les intéressent via le courtier. Le courtier est une interface commune permettant aux appareils de se connecter et d’échanger des données.
Le modèle de messagerie de publication/abonnement fonctionne un peu comme une chaîne de télévision. Une chaîne de télévision diffuse un programme télévisé en utilisant une chaîne spécifique et un téléspectateur se connecte à cette chaîne pour voir l'émission. Il n'y a pas de connexion directe entre la station de diffusion et le téléspectateur.
Une autre analogie utile est le bureau de poste, où au lieu qu'un appareil envoie des messages directement au(x) appareil(s) destinataire(s) comme dans une connexion peer-peer, ils sont envoyés au bureau de poste (le courtier), et le courtier les transmet à tout le monde. cela a besoin de ce message. La grande différence est que MQTT n’utilise pas l’adresse du destinataire prévu, mais plutôt une ligne d’objet appelée « sujet ». Si quelqu'un souhaite une copie de ce message, il lui suffit de s'abonner à ce sujet. Et si un courtier reçoit un message sur un sujet pour lequel il n'y a pas d'abonnés actuels, le courtier rejette le message à moins que l'éditeur du message n'ait désigné le message comme message conservé.
Vous pouvez avoir autant de sujets que vous le souhaitez, chacun ayant des clients différents à chaque extrémité. Cela peut être un à un, plusieurs à plusieurs ou n’importe quelle combinaison. L'architecture de publication/abonnement est très flexible et évolutive, ce qui la rend idéale pour les applications IoT.
Par exemple, disons que vous disposez d’une configuration dans laquelle un capteur d’humidité doit envoyer ses relevés au courtier. Et de l’autre côté, un ordinateur et un appareil mobile doivent recevoir cette valeur d’humidité. Afin de transmettre les mesures aux appareils récepteurs, le processus de flux de données de publication/abonnement MQTT passe par les étapes suivantes :
- Tout d'abord, le capteur d'humidité définit le sujet sur lequel il souhaite publier, en l'occurrence « Humidité ». Ensuite, il publie le message « valeur d'humidité ».
- Deuxièmement, l'ordinateur et l'appareil mobile du destinataire s'abonnent au thème « Humidité ». Cela leur permet de recevoir le message que le capteur d'humidité a publié – valeur d'humidité.
Comme indiqué précédemment, le rôle du courtier est ici de prendre le message « valeur d'humidité » et de le transmettre à l'ordinateur et à l'appareil mobile récepteurs.

Pourquoi HTTP n'est pas adapté aux applications IoT
Le HTTP (Hypertext Transfer Protocol) est un standard Web bien connu et l'un des principaux moyens d'accès à Internet. Compte tenu de sa popularité et de son acceptabilité mondiale, on pourrait s’attendre à ce qu’il devienne la norme de facto pour l’envoi et la réception de messages au sein du réseau IoT ? Malheureusement, ce n’est pas le cas. En ce qui concerne l'IoT, HTTP a tendance à fonctionner mal, principalement parce qu'il n'a pas été conçu pour fonctionner avec des réseaux présentant des limitations de bande passante ou des connexions peu fiables. HTTP a été conçu pour être un protocole lourd pour le World Wide Web. Il est basé sur un modèle requête/réponse, ce qui est l’une des raisons pour lesquelles il ne répond pas aux besoins des applications IoT. Ce modèle requête/réponse présente de sérieuses limitations en ce qui concerne les applications IoT, parmi lesquelles :
- HTTP est un protocole de synchronisation: Le processus de requête/réponse synchrone du protocole HTTP sollicite des ressources informatiques telles que la mémoire, les threads, les cycles CPU, etc., à la fois côté client et côté serveur. Malheureusement, les appareils IoT disposent de ressources informatiques très limitées et auront du mal à s’adapter à un tel environnement. Ils ne peuvent donc pas fonctionner efficacement avec un protocole asynchrone tel que HTTP. Les appareils IoT fonctionnent mieux avec des protocoles asynchrones comme MQTT.
- HTTP est unidirectionnel: En HTTP, un seul appareil (client ou serveur) peut envoyer un message à l'autre à tout moment (unidirectionnel). Cependant, cela ne convient pas aux applications IoT, car il peut être nécessaire d’envoyer des données dans les deux sens simultanément.
- Communication individuelle: HTTP ne répond pas au besoin de communication un-à-plusieurs entre les clients et le serveur. Il est plutôt conçu pour une communication individuelle (une à la fois) entre le client et le serveur. Bien que cela fonctionne bien pour demander des ressources sur le Web en tant qu'utilisateur, cela ne répond pas aux besoins des réseaux IoT où un grand nombre d'appareils IoT souhaitent transmettre simultanément des données au serveur.
- Consommation élevée d’énergie et de ressources système: Les connexions HTTP utilisent des ressources système élevées, ce qui entraîne alors une forte consommation d'énergie. Cela exerce une forte pression sur les minuscules ressources IoT. Malheureusement, les applications IoT ne sont pas en mesure de répondre à ces lourdes demandes.
Architecture | Demande de réponse | Publier/S'abonner |
Méthodologie de conception | Centré sur le document | Centré sur les données |
Complexité | Plus complexe | Simple |
Taille du message | Gros-lourd | Petit-léger |
formulaire de message | Format ASCII | Binaire avec en-tête de 2 octets |
Distribution des données | En tête-à-tête seulement | Un à zéro, un à un et un à plusieurs |
Protocole de transport | TCP et UDP | TCP |
Sécurité | Non, HTTPS est donc utilisé pour assurer la sécurité des données | Oui, il utilise SSL/TLS pour la sécurité |
Idéal pour | Accédez au World Wide Web ou à des systèmes qui collectent des mégadonnées du monde entier | Systèmes permettant la communication réseau entre les appareils IoT et un serveur central (courtier) |
Tableau 2.0 | Une comparaison des protocoles MQTT et HTTP
Applications et cas d'utilisation MQTT du monde réel
MQTT est l'un des protocoles les plus couramment utilisés dans les infrastructures IoT et IIoT telles que les usines de transformation, maisons intelligentes , la santé numérique, entre autres, en raison de sa prise en charge d'appareils nécessitant un minimum de ressources et bande passante du réseau , ainsi que sa capacité à connecter des millions d'appareils IoT. Certaines des plates-formes populaires prises en charge par MQTT et conçues pour l'Internet industriel des objets (IIoT) incluent ThingWorx , Plateforme IBM Watson IoT , AWSIoT , Aile de brouillard , Braincube , entre autres. Ces plates-formes fournissent une extension MQTT pour permettre la connectivité pour l'infrastructure IoT et IIoT.
Des exemples et cas d'utilisation notables de la technologie MQTT dans l'infrastructure IoT ou IIoT incluent :
- Facebook Messenger: Afin de résoudre les problèmes de durée de vie limitée de la batterie et de bande passante Internet associés à l'utilisation d'un smartphone, Facebook a déployé de manière innovante MQTT pour sa messagerie et Instagram des chats qui lui permettraient de fonctionner efficacement même avec les différentes connexions Internet disponibles à travers le monde. Les discussions sont associées à un sujet MQTT et tous les membres d'un groupe de discussion s'abonnent et publient sur ce sujet. Un « directeur de sujet » dirige les paquets de discussion MQTT vers les différents courtiers qui les transmettent à la destination appropriée : les abonnés.
- Appareils portables: Le protocole MQTT est couramment utilisé pour activer les appareils portables IoT à faible consommation. La nature légère du protocole MQTT le rend adapté aux appareils portables en raison de sa capacité de mémoire et de bande passante limitée. Les données sont publiées lorsqu'elles sont transmises de l'appareil portable au serveur et que les appareils récepteurs s'abonnent aux données transmises au serveur. La taille des données envoyées via MQTT étant de par sa conception réduite, les messages peuvent être envoyés rapidement, ce qui rend le matériel très réactif.
- Automatisation de la maison: MQTT est utilisé comme protocole de communication sous-jacent dans la plupart des systèmes domotiques intelligents. Par exemple, Le système de maison intelligente auto-construit de Mark Zuckerberg – Jarvis (sur le modèle de Jarvis d'Iron Man) lui permet de contrôler sa maison par la voix ou par SMS depuis son iPhone . L'appareil peut s'interfacer avec MQTT pour lui permettre de répondre aux commandes en publiant des messages MQTT sur un courtier. Cela ouvre la possibilité d'interagir avec n'importe quel appareil prenant en charge le protocole MQTT.
- Agriculture intelligente: L'utilisation de technologies intelligentes dans le secteur agricole a le potentiel d'augmenter le rendement global et d'améliorer l'efficacité des systèmes agricoles en fournissant une surveillance et des rapports continus sur les conditions météorologiques et du sol telles que le pH du sol, la température et l'humidité du sol, la température de l'air, l'humidité et la disponibilité de la lumière solaire. Le protocole MQTT et les capteurs IoT pour l'agriculture permettent une collecte et une disponibilité transparentes des données sur les serveurs cloud (courtier), même pour une connexion Internet difficile.
- Les compteurs intelligents: Dans le secteur de l'énergie et des services publics, les compteurs intelligents collectent plus de détails sur la consommation d'énergie que les compteurs traditionnels. Un client MQTT peut être intégré au logiciel déployé avec le compteur, qui peut ensuite être utilisé pour transmettre (publier) des données avec une livraison garantie des messages afin de fournir des relevés de compteur précis en temps réel. Les propriétaires peuvent également mettre en œuvre la technologie MQTT dans leur maison pour contrôler la consommation d'énergie des appareils électroménagers. Cela permet de gérer efficacement la consommation d’énergie et de rendre la facturation plus précise.
- Télédétection: Les capteurs utilisés pour surveiller les environnements distants sont souvent des appareils à faible consommation fonctionnant dans des endroits avec une mauvaise connexion Internet. MQTT est un protocole approprié pour communiquer avec de tels appareils en raison de sa capacité à prendre en charge des capteurs IoT ayant des besoins de transmission de données moins prioritaires.
FAQ MQTT
Quel simulateur est le meilleur pour la mise en œuvre du protocole MQTT ?
Pour un simulateur MQTT, regardez :
Comment tester les nœuds de capteurs pour le protocole MQTT ?
Les procédures de test des nœuds de capteurs dépendent du produit spécifique utilisé. Vous devrez consulter le guide de votre réseau de capteurs pour obtenir des instructions précises.