Cas d'utilisation de MQTT : A quoi sert MQTT ?
Published: 2024-02-07 02:31:09

À quoi sert MQTT ?
------------------

[MQTT](https://www.pubnub.com/guides/mqtt/) est un protocole de messagerie léger généralement utilisé avec des appareils IoT conçus pour être économes en énergie et consommer un minimum de bande passante.

Le protocole MQTT fonctionne sur [TCP/IP](https://www.pubnub.com/guides/tcp-ip/) et est basé sur un modèle bidirectionnel de [publication et d'abonnement](https://www.pubnub.com/guides/everything-you-need-to-know-about-pub-sub/) avec une communication sans perte, garantissant que les messages MQTT sont livrés efficacement et sans perte.

MQTT a été conçu pour être un protocole à faible charge de travail qui prend fortement en compte les limites de la bande passante et de l'unité centrale. Il a été conçu pour fonctionner dans un environnement embarqué où il fournit une voie de communication fiable et efficace.

MQTT est fondamentalement un protocole de publication/souscription (pub/sub). Il permet aux clients de se connecter en tant qu'éditeur, abonné ou les deux à des sujets spécifiques. Vous vous connectez à un courtier qui gère le passage des messages, chaque client étant identifié par un numéro d'identification unique.

### **Exemple et cas d'utilisation réels de MQTT**

MQTT est couramment utilisé pour les [applications IoT](https://www.pubnub.com/solutions/iot-device-control/) afin de se connecter et de communiquer avec des appareils de faible puissance tels que des capteurs, des actionneurs et des appareils ménagers, en gérant efficacement la charge utile des données transmises.

Dans l'agriculture, MQTT est utilisé pour surveiller les facteurs environnementaux tels que l'humidité du sol, la température et l'humidité, ce qui permet aux agriculteurs de prendre les mesures appropriées. Dans le domaine de l'automatisation industrielle, MQTT peut surveiller le processus de fabrication de bout en bout, garantissant une qualité constante et identifiant les problèmes systémiques sur la chaîne de production. Dans les transports, MQTT est utilisé pour surveiller les feux de circulation, les parcmètres et la localisation en temps réel des transports publics, tout en tenant compte de l'écosystème et des faibles besoins en bande passante.

### **Pourquoi utiliser MQTT plutôt que HTTP ?**

[HTTP](https://www.pubnub.com/guides/http/) et MQTT sont deux protocoles de communication très différents, utilisés à des fins différentes.

HTTP est un protocole demande/réponse qui ne fournit des données qu'en réponse à une demande d'un client. Il est conçu pour de grandes quantités de données et est couramment utilisé pour le transfert de pages web, d'images et de vidéos. MQTT est un protocole pub/sub qui permet la livraison asynchrone de messages, plusieurs clients pouvant s'abonner à un seul sujet et recevoir des messages d'un ou de plusieurs éditeurs. MQTT est optimisé pour de petites quantités de données, mais il est plus efficace que HTTP en termes de surcharge du réseau et de consommation d'énergie des appareils, ce qui en fait un choix approprié pour les applications nécessitant une faible bande passante et une consommation d'énergie minimale, telles que celles gérées par les services IoT d'AWS.

### Dans quels langages MQTT est-il écrit ?

MQTT n'est qu'un protocole et peut être écrit dans de nombreux langages. Cependant, les bibliothèques clientes MQTT, qui sont utilisées pour communiquer à l'aide du protocole MQTT, sont disponibles dans de nombreux langages tels que [C/C++](https://www.pubnub.com/docs/sdks/windows-cpp/api-reference/publish-and-subscribe), [Java](https://www.pubnub.com/docs/sdks/java/api-reference/publish-and-subscribe), Python et [JavaScript, y compris](https://www.pubnub.com/guides/javascript/) [Node.js](https://www.pubnub.com/blog/nodejs-websocket-programming-examples/), Ruby, Go, PHP et Swift. Une bibliothèque cliente MQTT communique par l'intermédiaire d'un courtier MQTT, qui est également disponible dans plusieurs langages de programmation.

**Comment fonctionne MQTT ?**
-----------------------------

MQTT est un protocole extrêmement flexible, mais il n'existe que deux entités de base : le client MQTT et le courtier MQTT.

### Comment fonctionnent les clients MQTT ?

Le client MQTT peut être n'importe quel point d'extrémité qui met en œuvre le protocole MQTT. Dans le cas de l'IdO, le client est l'appareil connecté, tel qu'un capteur, un moniteur ou une carte Arduino, mais le MQTT n'est pas limité à l'IdO ; le client peut également être un smartphone ou un ordinateur portable, par exemple.

Les clients MQTT ne communiquent pas directement entre eux. Cependant, toutes les interactions sont "brisées" par un composant serveur appelé courtier MQTT, qui se situe entre les clients et gère le routage des messages.

### Qu'est-ce que le regroupement MQTT ?

Toutes les communications dans MQTT sont regroupées en "sujets". Les clients MQTT peuvent publier des messages dans des sujets et s'abonner pour recevoir des messages d'autres clients. Un sujet peut être n'importe quelle chaîne de caractères et est destiné à regrouper des sujets d'intérêt commun. Par exemple, les mises à jour de capteurs seraient publiées dans un sujet, tout comme les messages dans un chat de groupe, selon le cas d'utilisation.

### Qu'est-ce que le courtier MQTT ?

Le courtier est chargé de gérer quels clients sont abonnés à quels sujets, de recevoir les messages publiés sur un sujet particulier et d'envoyer ce message à tout client abonné aux mises à jour. Lorsque la connexion entre un client et le courtier est perdue, le courtier est également chargé de mettre le message en cache et de le transmettre au client lorsque la connexion est rétablie.

![](https://pubnub.com/cdn/3prze68gbwl1/010wxh2h4hFBh3nJ3bSSfV/5534ff8b8041c7634edf9a9e430213cb/MQTT_Brokers.png)

### **Quels sont les courtiers MQTT disponibles ?**

Le courtier MQTT est un élément fondamental du protocole MQTT et peut être considéré comme le serveur MQTT. Comme indiqué précédemment, le courtier se situe entre tous les clients et facilite la communication.

Il existe de nombreux courtiers MQTT, tant open source que propriétaires, et l'une des décisions architecturales les plus importantes de tout déploiement basé sur MQTT est la manière d'héberger le courtier. Étant donné que MQTT est conçu pour fonctionner à très grande échelle, toute architecture de courtier devra s'adapter en conséquence. La plupart des déploiements en entreprise s'appuieront sur des offres propriétaires hébergées dans le nuage, de sorte qu'ils n'auront pas à se soucier de l'infrastructure, bien que des options auto-hébergées soient également disponibles.

Se situant entre toutes les communications, le courtier peut conserver les messages et garder un enregistrement sécurisé de toutes les sessions ; les clients sont isolés les uns des autres, de sorte que les insécurités et les vulnérabilités des clients peuvent être mises en bac à sable et, en fonction de la topologie de votre réseau, un courtier peut réduire le trafic sur votre réseau dans son ensemble & permet un routage plus efficace.

Comment utiliser MQTT et Pub/Sub
--------------------------------

Tout client qui prend en charge le protocole MQTT peut s'abonner à des sujets et les publier, mais toutes les communications passent par le courtier, comme le montre l'exemple ci-dessous.

![](https://pubnub.com/cdn/3prze68gbwl1/1ydm5PYB4ietnpbnz0faTk/6995f5a911c1e73da1b6936c39ac1a7c/MQTT_and_Pub_sub.png)

**Nous avons notre propre broker MQTT, le** [**MQTT bridge**](https://www.pubnub.com/docs/sdks/mqtt)**, pour intégrer PubNub de manière transparente à votre solution MQTT. Vous trouverez plus d'informations à la fin de cet article**.

**Caractéristiques du protocole MQTT**

Bien qu'il soit souvent considéré comme une solution IoT, MQTT est simplement le protocole qui sous-tend de nombreux produits IoT bien connus. De nombreuses caractéristiques de MQTT le rendent particulièrement adapté à une communication efficace entre les appareils :

**Facile à mettre en œuvre**

MQTT existe depuis longtemps et il existe de nombreuses solutions propriétaires et open-source robustes, fiables et évolutives. Ces composants MQTT préexistants peuvent être utilisés dans tous les projets, qu'il s'agisse de grandes solutions ou de projets passion, sans modification et quelle que soit l'expérience du développeur.

**Fiabilité et configuration**

MQTT possède le concept de qualité de service (QoS), discuté en détail plus loin, qui met en file d'attente et en cache les messages sur le courtier MQTT, les délivrant au client lorsque la connexion est rétablie. Cela fonctionne particulièrement bien pour les appareils partiellement connectés ou les clients avec une connectivité intermittente, tels que les appareils IoT.

**Le client n'a pas à se préoccuper de l'architecture de la solution**

Avec MQTT, vous publiez des messages sur un sujet et les recevez lorsqu'ils sont disponibles. En tant que client, vous n'avez pas à vous soucier d'établir ou de rétablir une connexion ou de savoir si votre ou vos destinataires écoutent vos messages, cela "fonctionne tout simplement".

**Conçu pour l'échelle**

MQTT peut s'adapter à la taille de votre solution, qu'il s'agisse d'une startup ou d'une entreprise internationale. Facebook Messenger utilise notamment MQTT pour ses communications.

### **Cycle de vie d'une session MQTT**

MQTT s'appuie sur [TCP/IP](https://www.geeksforgeeks.org/tcp-ip-model/) pour la connectivité, et suit donc un cycle de vie similaire

**Connexion**

Le client MQTT établit une connexion avec le courtier MQTT, généralement via les ports MQTT standard[(1883/883](https://5gcroco.eu/images/templates/rsvario/images/5GCroCo_MQTT_webseminar.pdf) pour les connexions sécurisées et non sécurisées, respectivement).

**Authentification**

Le protocole MQTT n'a pas de considérations d'authentification au-delà de [TLS](https://www.pubnub.com/guides/ssl-tls/) pour la connexion TCP/IP sous-jacente, ce qui est suffisant pour la plupart des cas d'utilisation.

**Publier / S'abonner**

Une fois connectés, les clients peuvent publier ou s'abonner à des sujets pour envoyer et recevoir des messages.

**Déconnexion**

La déconnexion peut être initiée par le client ou le courtier et entraînera la fin de la session MQTT après le traitement de toutes les demandes en cours.

![](https://pubnub.com/cdn/3prze68gbwl1/1jvUkts6It8DfsYNqDpLDx/78c82a87b78a21684b6549c7ff66d536/MQTT_lifecycle_chart.png)

### **Qualité de service MQTT (QoS)**

La[qualité de service](http://www.steves-internet-guide.com/mqtt-which-qos-to-use/) permet au concepteur d'une solution de spécifier le degré de fiabilité d'une connexion MQTT. En général, plus la connexion est fiable, plus la surcharge de mémoire potentielle pour les tentatives et la conservation des messages est importante.

**QoS -1**

Le message n'est envoyé qu'une seule fois et le client et le courtier ne prennent aucune mesure supplémentaire pour accuser réception du message. Cette méthode est également connue sous le nom de "fire and forget".

Cela ne s'applique qu'aux messages envoyés par un client. Une fois que les messages sont reçus par le courtier, ils sont considérés comme étant de qualité de service 0.

**QoS 0**

L'expéditeur et le destinataire s'engagent dans une poignée de main pour s'assurer qu'une seule copie du message est reçue, ce qui garantit la livraison et évite l'envoi de plusieurs copies du message.

**QoS 1**

Le message est envoyé plusieurs fois jusqu'à ce que le destinataire en accuse réception. Cette méthode est la plus efficace pour les messages sensibles au facteur temps, mais elle peut entraîner la réception de messages en double.

**Cas d'utilisation de MQTT et IoT**
------------------------------------

MQTT est un protocole léger et économe en énergie qui, au fil des ans, a été utilisé dans le type de solutions où ces considérations sont essentielles.

L'IoT est l'exemple le plus répandu où MQTT est parfaitement adapté. Les dispositifs IoT sont généralement alimentés par des batteries et peuvent être très coûteux à entretenir, c'est pourquoi il est préférable qu'ils durent longtemps entre deux remplacements de batterie. Alors que dans un environnement domestique, il n'est pas difficile de remplacer une batterie de temps en temps, dans un environnement industriel, avec des milliers de capteurs, répartis sur une vaste zone et souvent dans des endroits très difficiles d'accès, leur entretien peut devenir très coûteux très rapidement.

Les cas d'utilisation MQTT[IoT](https://www.pubnub.com/blog/new-improved-pubnub-mqtt-support-and-iot-capabilities/) comprennent les détecteurs d'incendie, le suivi des vols, la surveillance de l'emplacement, les capteurs, l'état du moteur, etc. MQTT a également des frais généraux de données très faibles, de sorte que, dans les environnements où les données sont coûteuses, ou lorsque des milliers d'appareils sont déployés et que la bande passante est un problème, MQTT est idéal.

**PubNub et MQTT fonctionnent parfaitement ensemble pour l'IoT. Veuillez consulter notre** [**démo IoT**](https://www.pubnub.com/demos/iot-dashboard/) **et notre** [**tutoriel IoT**](https://www.pubnub.com/tutorials/iot-dashboard/) **pour en savoir plus sur la façon dont PubNub et MQTT peuvent fournir une solution IoT fiable, évolutive et efficace**.

MQTT est également très populaire dans la communication en temps réel, l'exemple le plus connu étant Facebook Messenger. Pourquoi Facebook a-t-il choisi d'utiliser MQTT ? Parce qu'il n'épuise pas la batterie de votre téléphone, n'utilise pas de données excessives, fonctionne sur des protocoles sécurisés, permet la mise à l'échelle, facilite les chats de groupe et distribue toutes les données à travers une infrastructure centrale de broker MQTT.

**PubNub supporte-t-il les cas d'utilisation MQTT ?**
-----------------------------------------------------

Absolument ! PubNub fournit un [pont MQTT](https://www.pubnub.com/docs/sdks/mqtt) offrant une [très faible latence](https://www.pubnub.com/guides/whats-so-important-about-low-latency/) qui évite d'avoir à déployer un broker MQTT personnalisé et fournit une intégration simple avec d'autres fonctionnalités PubNub telles que les [fonctions](https://www.pubnub.com/docs/general/portal/functions) et le [streaming de données](https://www.pubnub.com/docs/channels/subscribe).

Comme PubNub est conçu autour du modèle publish-subscribe, il s'adapte très bien à MQTT :

-   Publier / S'abonner : Ces concepts sont identiques pour PubNub et MQTT.
    
-   Canaux PubNub : L'équivalent dans MQTT est le 'topic'.
    
-   UUID : PubNub et MQTT ont tous deux le concept d'un identifiant unique assigné à chaque client.
    

Wildcards (caractères génériques) : PubNub et MQTT supportent tous deux les caractères génériques lors de l'abonnement à des canaux/sujets. Voir la documentation PubNub [docs](https://www.pubnub.com/docs/sdks/mqtt#wildcard-subscribe) pour plus de détails.

Comment tirer parti des cas d'utilisation de MQTT
-------------------------------------------------

Au cœur de l'utilisation de MQTT comme moyen de communication se trouve le sujet. C'est une idée remarquablement simple qui n'est pas unique à MQTT ; cependant, le protocole MQTT exploite la puissance de cette idée de manière assez agréable. Un sujet accomplit implicitement plusieurs tâches, la plus importante étant de s'assurer qu'un message est délivré aux bons auditeurs. MQTT traite un sujet comme un chemin de fichier. Si l'on considère un sujet comme un simple filtre de communication, l'application du chemin peut devenir très puissante.

Vous pouvez être intéressé par un niveau supérieur particulier du chemin ou par l'élément feuille. Sans le dire explicitement, MQTT filtre les messages en fonction de l'endroit où vous vous abonnez dans le chemin de l'arbre. C'est une idée simple qui peut être utilisée de manière très efficace.

Les spécifications techniques de MQTT pour répondre à votre cas d'utilisation
-----------------------------------------------------------------------------

Penchons-nous un peu plus sur les aspects techniques de MQTT. Tout d'abord, le protocole fonctionne au-dessus de la pile réseau TCP/IP. Lorsque les clients se connectent et publient/s'abonnent, MQTT dispose de différents types de messages qui facilitent l'échange de ce processus. L'en-tête MQTT est composé de deux octets, dont le premier est constant.

Dans le premier octet, vous spécifiez le type de message envoyé ainsi que le niveau de qualité de service, la conservation et les drapeaux DUP (duplication). Le deuxième octet est le champ de longueur restant. Si vous êtes intéressé, vous pouvez glaner davantage d'informations dans la [spécification MQTT](http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html).

Comment utiliser PubNub et MQTT
-------------------------------

[PubNub supportant désormais MQTT](https://www.pubnub.com/blog/new-improved-pubnub-mqtt-support-and-iot-capabilities/) sur notre [réseau](https://www.pubnub.com/products/pubnub-platform/) mondial [de flux de données](https://www.pubnub.com/products/pubnub-platform/) en temps réel, nous avons voulu donner un aperçu du protocole et des raisons pour lesquelles vous pourriez ou non l'utiliser de notre point de vue.

Vous avez peut-être déjà déployé des appareils basés sur MQTT. Ou vous envisagez peut-être un nouveau déploiement IoT. Dans un cas comme dans l'autre, la question se pose de savoir quand utiliser MQTT et quand utiliser PubNub, et quand il est judicieux d'utiliser les deux. Si vous envisagez des options de communication robustes et bidirectionnelles pour vos appareils basés sur MQTT, PubNub offre une sécurité, une évolutivité et une fiabilité de niveau entreprise, ainsi que de nombreuses fonctionnalités à valeur ajoutée, telles que les fonctions en tant que service, la détection de présence, le stockage et la lecture de messages. Et toute cette puissance est disponible avec une simple commande de publication et d'abonnement.

Comme le beurre de cacahuète et le chocolat proverbiaux, PubNub et MQTT peuvent ensemble résoudre élégamment de nombreux cas d'utilisation d'appareils embarqués. Vous pouvez exploiter PubNub avec MQTT pour satisfaire des cas d'utilisation tels que la détection d'anomalie efficace et à faible latence. Par exemple, supposons que vous ayez des [capteurs basés sur MQTT sur des turbines industrielles de production d'énergie](https://thenewstack.io/tutorial-implementing-predictive-maintenance-connected-devices-pubnub-azure-ml-part-1/). Vous pouvez utiliser PubNub &#8211 ; y compris les fonctions "Functions-as-a-Service" &#8211 ; pour réagir et transmettre les données des capteurs en temps réel, de sorte qu'une équipe d'exploitation puisse identifier les problèmes des turbines avant même que les données n'atteignent un centre de données centralisé. Vous pouvez également utiliser PubNub avec des alarmes domestiques basées sur MQTT pour examiner les signaux des alarmes et identifier s'il y a une mauvaise alarme qui envoie des faux positifs. Et dans tous les cas d'utilisation, vous pouvez exploiter les intégrations de PubNub à de multiples services d'apprentissage automatique pour détecter les anomalies.

Si MQTT ne fait pas partie de votre infrastructure actuelle, vous pouvez envisager d'utiliser le réseau de flux de données PubNub directement avec les nombreux [SDK IoT](https://www.pubnub.com/docs/) de PubNub pour toute votre connectivité à [l'Internet des objets](https://www.pubnub.com/solutions/iot-device-control/). Le réseau PubNub avec MQTT peut également être un excellent choix pour les appareils de faible puissance.

Pour utiliser le réseau PubNub avec des appareils compatibles MQTT, vous devez abonner vos appareils à PubNub sur mqtt.pubnub.com. Notre [guide PubNub Improves MQTT Support &amp ; IoT Capabilities](https://www.pubnub.com/blog/new-improved-pubnub-mqtt-support-and-iot-capabilities/) vous guide à travers les étapes de l'abonnement de manière plus détaillée.

Ressources MQTT supplémentaires
-------------------------------

-   [Protocole MQTT](https://mqtt.org/)
    
-   [Projet Paho](https://eclipse.dev/paho/) (client MQTT)
    

Comment PubNub peut-il vous aider ?
===================================

Cet article a été publié à l'origine sur [PubNub.com](https://www.pubnub.com/blog/what-is-mqtt-use-cases/)

Notre plateforme aide les développeurs à construire, livrer et gérer l'interactivité en temps réel pour les applications web, les applications mobiles et les appareils IoT.

La base de notre plateforme est le réseau de messagerie en temps réel le plus grand et le plus évolutif de l'industrie. Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par les pics de trafic.

Découvrez PubNub
----------------

Découvrez le [Live Tour](https://www.pubnub.com/tour/introduction/) pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.

S'installer
-----------

Créez un [compte PubNub](https://admin.pubnub.com/signup/) pour un accès immédiat et gratuit aux clés PubNub.

Commencer
---------

La [documentation PubNub](https://www.pubnub.com/docs) vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre [SDK](https://www.pubnub.com/docs).