Introduction à MQTT

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.

Source: https://mqtt.org/

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.

Evidement Node-RED propose nativement des connecteurs MQTT


Sources & Ressources :