• Qui suis-je ?
  • Compétences
  • Projets
  • Expérience
// Projets

Async MQTT client

Un client MQTT pour micro-contrôleur

Marvin ROGER
Marvin ROGER
Image d'illustration

Dans le cadre du projet Homie, il fallait que le micro-contrôleur, un ESP8266 en l'occurence, puisse communiquer via MQTT de façon asynchrone. C'était une problématique importante pour l'implémentation de nouvelles fonctionnalités au sein du projet.

J'ai cherché une solution existante, mais aucune ne répondait à ce besoin. Le seul client MQTT disponible pour l'environnement Arduino, PubSubClient, est un client synchrone.

Si ça n'existe pas...

Je vais le créer ! J'ai donc décidé de développer mon propre client MQTT : Async MQTT client, disponible sur GitHub. Il m'a fallu comprendre de façon intrinsèque le fonctionnement du protocole MQTT, avec toutes ses subtilités et ses pièges. À cet effet, la spécification m'a été d'une grande aide. J'ai ainsi pu terminer le projet, et implémenter les fonctionnalités que je souhaitais au sein du projet Homie.

Enseignements

Ce projet m'a enseigné deux leçons :

  • D'abord, le C++ sans toutes les librairies standards permettant de faciliter grandement l'utilisation du langage (dont on ne bénéficie pas sur les micro-contrôleurs, par manque de mémoire) est compliqué, et demande une rigueur conséquente. Rust, grâce à la rigueur imposée par le compilateur, m'a rapidement fait comprendre l'intérêt du langage, et la raison de sa soudaine popularitée

  • Maintenir un projet open-source prend du temps, beaucoup de temps, et il faut compter sur la réactivité de la communauté pour publier des Pull Requests, sans quoi, par manque de temps, son projet peut vite mourir

Un succès

Aujourd'hui, le projet compte près de 500 ⭐ sur GitHub, et est très utilisé par la communauté de développeurs Arduino et, plus précisément, ESP8266/ESP32.

Envie de discuter ?

Vous pouvez me contacter par e-mail à bonjour+web@marvinroger.fr.
Vous trouverez également mon numéro de téléphone sur mon C.V.