Qu’est ce que MQTT ?
MQTT pour Message Queuing Telemetry Transport est un protocole de communication basé sur TCP/IP fonctionnant sur un modèle publish/subscribe (littéralement : publier-s’abonner).
Idéal pour vos projets IOT, domotique, …
Il a été initialement développé par Andy Stanford-Clark (IBM) et Arlen Nipper (EuroTech). Il est conçu pour les connexions avec des sites distants où la bande passante du réseau est limitée. – Wikipédia
Les clients sont tous connectés en publish ou subscribe à un serveur appelé broker.
Sécurité & fiabilité
Il est possible de sécuriser les échanges de plusieurs manières :
- Authentification des comptes (sondes, …) par login & mot de passe ou par certificats.
- Configuration des permissions par utilisateur sur le broker comme Mosquitto par exemple.
- Chiffrer les communications entre client et broker en SSL/TLS.
Nativement MQTT propose une QOS (Qualité de service) sur 3 niveaux
- 0 = Le message sera envoyé sans aucune garantie, aucun retour du broker,
- 1 = Le message sera reçu au moins une fois,
- 2 = Le message sera reçu une seule fois
Topics
Un topic n’a pas de nomenclature imposée par MQTT. Sauf $SYS qui est réservé au broker. Il est important de bien réfléchir à l’avance ses topics et leur arborescence.
Voici un exemple de topics dans le cadre d’une maison :
/maison/cuisine/temperature
/maison/cuisine/humidite
/maison/salon/temperature
/maison/salon/humidite
Wildcards « jokers »
Il est possible de s’abonner à des topics en utilisant les wildcards # ou +.
Obtenir tous les capteurs de la cuisine :
/maison/cuisine/#
Obtenir tous les capteurs de température :
/maison/+/temperature
Si vous voulez tous voir passer, il suffit de s’abonner à #
Last Will & Testament
Un client peut à la connexion envoyer au broker son testament au moment de sa connexion.
En cas de déconnexion soudaine, le broker enverra le « testament » du client aux abonnés sur le topic défini.
Utilisation
Voici, une petite liste non-exhaustive pour vous lancer avec MQTT.
- Mosquitto – Broker MQTT (Installer sous Ubuntu)
- MQTT Explorer – Un client Windows, Mac, … Très pratique pour comprendre le fonctionnement des topics, …
- Paho – Librairie Python
- PubSubClient – Librairie Arduino
Evidement Node-RED propose nativement des connecteurs MQTT
Sources & Ressources :