3. Protocole MQTT
3.1 Principes
Il s'agit d'un acronyme celui de Message Queue Telemetry Transport . La définition de ce protocole sur le site anglais de Wikipedia http://en.wikipedia.org/wiki/MQTT et le site du référentiel de ce protocole est http://mqtt.org/
- un site superbe qui explique tout ce qu'il faut savoir et ne pas hesiter à visiter toutes les rubriques de l'onglet à https://www.hivemq.com/mqtt/
Le principe est basé sur un middleware : ou Broker (terme anglais pour désigner un serveur qui joue le role de distributeur de message et gère une file d'information qui arrive : personnelement je nomme ce type d'intergiciel "répartiteur") Le mécanisme est basé sur 2 volets indépendants de la notion d'adressage : un "publisher" qui envoie des data sur un "topic" au broker; et un ou de nombreux "subscriber" ou abonnés qui s'inscrivent à un "topic" : c'est le meme principe qu'une revue papier, ou un journal !!
3.2 Serveur MQTT
Les 2 brokers testés et que je mets habituellement en oeuvre :
- mon préferé : Mosquitto soutenu par la fondation Eclipse à https://mosquitto.org/ car il fonctionne à merveille sur des systèmes à base de Linux
- un intergiciel pour le monde des serveurs (monde java) celui de hiveMQ, vous avez les informations à https://www.hivemq.com/hivemq/editions/
3.3 Clients
Pour s'abonner, il y a de nombreuses possibilités
- Les "connecteurs" pour la programmation : ils existent dans tous les langages !! voir la mise en oeuvre sur les Pycom par exemple (rubrique enseignement)
- Une application dans votre navigateur : exemple de l'application MQTTBox pour Chrome il y en d'autres.. mais j'ai testé celle-ci qui fonctionne simplement
- Une application sur smartphone
- Un client local, il y en a plusieurs, ma preférée en 2022 : MQTTX à https://mqttx.app/ je l'utilise sous WIndows, linux..
3.4 Utilisation
Exemple de NodeRed qui possède un connecteur..
3.4.1 Messages
de préference envoi de messages formattés en Json.. si toutefois le réseau radio le supporte, faire un bilan energétique et latence dans les autres cas..