C'est un protocole de communication, comme par exemple Modbus. C'est à dire qu'il s'agit d'un ensemble de règles programmées, qui lorsqu'elles sont respectées par les objets connectés, permettront d'assurer un échange d'informations, dans les deux sens de l'objet A vers l'objet B et de B vers A.
MQTT signifie Message Queuing Telemetry Transport = Transport d'information à distance avec file d'attente.
Ce protocole OpenSource est utilisé en IOT car il a été développé spécifiquement pour répondre à certaines caractéristiques attendues:
- Protocole léger, qui consomme peu de bande passante. C'est à dire qu'il transfère surtout de l'information utile, celle que l'objet veut communiquer aux autres, avec peu de paquets de données d'identification et de routage (Header). Cette légèreté/efficacité est utile pour réduire la consommation électrique. Par ailleurs sa simplicité permet son utilisation sur des équipements avec un micro-contrôleur électronique basique.
- Il permet de distribuer de l'info à des groupes d'objets. Par exemple envoyer en une seule fois l'information, 'allumer toutes les lampes connectées du hall 4-B' ou 'lire toutes les températures'. MQTT permet la communication entre une multitude d'objets, même des millions.
- Les groupes d'objets sont regroupés par un nom qui forme en quelque sorte un chemin d'accès. Donnons un exemple de type géographique: France/Alsace/Strasbourg/PetiteFrance/Temperature (Max 220 caractères). Ce nom est le sujet de la conversation (le Topic en anglais).
- Il fonctionne selon un principe de publication et abonnement. Un objet publie une information (par exemple un capteur de température publie sa valeur). D'autres objets sont abonnés à cette publication spécifique (et non abonnés à des infos qui ne les concernent pas), par exemple une application sur un smartphone est abonnée à l'information température de CE(S) capteur(s).
Entre celui/ceux qui publient et celui/ceux qui reçoivent (sont abonnés), il y a une plateforme qui gère ces flux d'info, appelée Broker.
Le 'client' est un logiciel sur l'objet local qui permet la communication en MQTT avec le broker. tout objet est un client, qu'il reçoive ou émette et/ou les deux.
Deux clients ne peuvent pas communiquer directement, il leur faut un Broker intermédiaire.
- L'une des particularités de MQTT est qu'une information peut être 'retardée'. En effet, la communication par les réseaux GSM ou autres n'est pas toujours présente en permanence, ou peut avoir une qualité dégradée. Il peut donc y avoir de multiples connexions/déconnexions intempestives des clients. Le broker enregistrera l'info et la distribuera lorsque l'abonné sera à nouveau présent 'capable d'échanger). Cette caractéristique importante est signalée dans la lettre Q (queing) de MQTT.
Par conséquent, on comprend immédiatement que le MQTT n'est pas un protocole de communication temps réel. Il ne s'agit bien sûr pas ici de transférer de l'info en une fraction de milliseconde pour donner un ordre d'arrêt d'urgence ou de synchronisation à une machine tournante.
En revanche il est très utile dans le domaine de l'IOT pour faire communiquer des masses d'objets sans contrainte temporelle forte (quelques secondes ou plus).
Et rappelons le, il est Opensource, donc accessible à tous.
Pour en savoir plus, voici le site de l'organisation MQTT https://mqtt.org/