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 :