Qu'est-ce que MQTT ?
MQTT (Message Queuing Telemetry Transport) est un protocole de messagerie leger de type publication-abonnement concu pour la communication machine-a-machine (M2M) et les applications de l'Internet des objets (IoT). Developpe a l'origine par IBM en 1999 pour la surveillance de pipelines petroliers via des liaisons satellite, MQTT est devenu le protocole de reference pour l'IoT industriel (IIoT) grace a son efficacite, sa fiabilite et sa simplicite.
MQTT fonctionne au-dessus de TCP/IP et est concu pour minimiser la bande passante reseau et les ressources necessaires sur les appareils, ce qui le rend ideal pour les environnements contraints ou les equipements disposent de capacites limitees en traitement, memoire ou connectivite.
Fonctionnement de MQTT : le modele publication-abonnement
Contrairement aux protocoles traditionnels de type requete-reponse, MQTT utilise un modele de publication-abonnement (pub/sub) avec trois composants principaux :
- Editeur (Publisher) -- un client qui envoie des messages sur un sujet (topic) specifique
- Abonne (Subscriber) -- un client qui s'inscrit a un ou plusieurs sujets
- Broker -- un serveur central qui recoit tous les messages des editeurs et les achemine vers les abonnes concernes
Topics (sujets)
Les topics MQTT sont des chaines hierarchiques qui organisent les messages, similaires a des chemins de fichiers :
- `usine/ligne1/automate1/temperature`
- `site/batiment-a/cvc/statut`
- `entreprise/usine-paris/energie/consommation`
Les abonnes peuvent utiliser des caracteres generiques pour recevoir des messages de plusieurs topics :
- `+` (un niveau) : `usine/+/automate1/temperature` correspond a n'importe quelle ligne
- `#` (multi-niveaux) : `usine/#` correspond a tous les topics sous usine
Niveaux de qualite de service (QoS)
MQTT fournit trois niveaux de garantie de livraison des messages :
- QoS 0 (Au plus une fois) -- envoi sans confirmation ; le message est livre au plus une fois. Ideal pour les donnees de telemetrie non critiques ou une perte occasionnelle est acceptable.
- QoS 1 (Au moins une fois) -- le message est garanti d'arriver mais peut etre livre plusieurs fois. Convient a la plupart des scenarios de supervision industrielle.
- QoS 2 (Exactement une fois) -- le niveau de garantie le plus eleve, assurant que le message est livre exactement une fois via un handshake en quatre etapes. Utilise pour les commandes critiques ou les transactions financieres.
MQTT dans l'automatisation industrielle
MQTT a connu une adoption massive dans les environnements industriels pour plusieurs raisons :
- Leger -- un overhead minimal le rend adapte aux equipements en peripherie et aux automates
- Architecture decouplee -- les editeurs et abonnes n'ont pas besoin de se connaitre mutuellement
- Evolutivite -- un seul broker peut gerer des milliers de connexions simultanees
- Resilience -- supporte les sessions persistantes, le testament (LWT) et les messages retenus
- Faible bande passante -- la taille minimale des paquets reduit l'utilisation du reseau sur les sites distants ou connectes en cellulaire
Sparkplug B : MQTT pour l'industrie
Bien que MQTT definisse la couche de transport, il ne specifie pas comment les donnees industrielles doivent etre structurees. Sparkplug B (desormais gere par la Fondation Eclipse) comble cette lacune en definissant :
- Un espace de noms de topics standardise -- `spBv1.0/{group_id}/{message_type}/{edge_node_id}/{device_id}`
- Encodage des donnees -- utilisant Protocol Buffers (protobuf) pour une serialisation binaire efficace
- Gestion d'etat -- certificats de naissance/deces pour suivre la connectivite des appareils
- Definitions de metriques -- types de donnees, horodatages et metadonnees standardises
- Stockage et retransmission -- garantissant qu'aucune donnee n'est perdue lors des coupures reseau
Sparkplug B transforme MQTT d'un protocole de messagerie generique en une solution d'infrastructure de donnees industrielles complete.
MQTT vs OPC UA
| Caracteristique | MQTT | OPC UA |
|---|---|---|
| Modele | Publication-abonnement | Client-serveur (+ pub-sub) |
| Poids | Tres leger | Plus lourd, plus complexe |
| Modelisation | Aucune (sans Sparkplug) | Modele d'information riche |
| Securite | TLS + identifiants | TLS + certificats + roles |
| Ideal pour | Telemetrie IoT, edge-to-cloud | Appareil-vers-serveur, entreprise |
| Evolutivite | Excellente pour beaucoup d'appareils | Bonne pour l'integration approfondie |
Dans les architectures modernes, MQTT et OPC UA sont souvent complementaires plutot que concurrents : OPC UA se connecte aux appareils et automates sur le terrain, tandis que MQTT transporte ces donnees vers les plateformes cloud et les systemes d'entreprise.
MQTT dans Ignition
Les capacites MQTT d'Ignition sont fournies par les modules MQTT de Cirrus Link :
- MQTT Engine -- s'abonne aux topics MQTT et cree automatiquement des tags Ignition a partir des donnees Sparkplug B entrantes
- MQTT Transmission -- publie les donnees des tags Ignition vers un broker MQTT en utilisant Sparkplug B
- MQTT Distributor -- un broker MQTT embarque qui fonctionne a l'interieur d'Ignition, eliminant le besoin d'un broker externe
Ces modules font d'Ignition un hub puissant pour les architectures IIoT basees sur MQTT, permettant une integration transparente entre les equipements en peripherie, les systemes SCADA et les plateformes cloud.
Points cles a retenir
- MQTT est un protocole pub/sub leger, ideal pour les applications IoT et IIoT
- Ses trois niveaux de QoS offrent des garanties de livraison flexibles
- Sparkplug B ajoute une structure de donnees et une gestion d'etat de qualite industrielle au-dessus de MQTT
- MQTT et OPC UA sont des protocoles complementaires dans les architectures industrielles modernes
- Les modules Cirrus Link d'Ignition fournissent un support complet de MQTT et Sparkplug B