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 :

Programmer un ESP32 avec Arduino IDE

Un grand nombre de boards basé sur un ESP32 sont programmable via votre IDE Arduino.

Il est nécessaire d’ajouter les boards à l’IDE et possiblement installer les drivers nécessaires.

Obtenir le json des boards

Rendez-vous sur le repo GitHub suivant : https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Vous pouvez aussi utiliser le json proposé sur le site d’Espressif.

https://dl.espressif.com/dl/package_esp32_index.json

Ajouter les boards à l’Arduino IDE

  • Allez dans les Préférences de votre Arduino IDE
  • Ouvrez l’onglet URL de gestionnaire de cartes supplémentaires
  • Collez le lien que vous aurez copié sur le repo ci-dessus
  • Ensuite, dans l’onglet Outils, cliquez sur Type de carte et Gestionnaire de carte.
  • Recherchez « esp32 » et installez la dernière version.

Les drivers

Pour les cartes produites par Espressif : https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/establish-serial-connection.html

Pour le Wemos D32, j’ai du passer par l’installation de « CP210x USB to UART Bridge VCP Drivers » disponible sur le site de Silabs.


Source cover : Wikimedia

Programmer un ESP8266 avec Arduino IDE

Un grand nombre de boards basé sur un ESP8266 sont programmable via votre IDE Arduino.

Il est nécessaire d’ajouter les boards à l’IDE et possiblement installer les drivers nécessaires.

Obtenir le json des boards

Rendez-vous sur le repo GitHub suivant : https://github.com/esp8266/Arduino

Ajouter les boards à l’Arduino IDE

  • Allez dans les Préférences de votre Arduino IDE
  • Ouvrez l’onglet URL de gestionnaire de cartes supplémentaires
  • Collez le lien que vous aurez copié sur le repo ci-dessus
  • Ensuite, dans l’onglet Outils, cliquez sur Type de carte et Gestionnaire de carte.
  • Recherchez « esp8266 » et installez la dernière version.

Presque terminé !

Les boards sont maintenant disponibles dans votre IDE. Il sera très probablement nécessaire d’installer un driver supplémentaire pour vos cartes. Le plus courant est le CH340, pour l’utilisation d’un Wemos, par exemple.

Drivers Windows, Mac, Linux chez Sparkfun.


Source cover : Wikimedia