Bien débuter avec la librairie Homie (MQTT) pour objets connectés à base d'ESP8266 • Domotique et objets connectés à faire soi-même

8dgcnbkfrkeuspzn4gk7-9521846
kofp4nkizoioz94ox8w3-7159643

La librairie Homie est devenue très populaire pour le développement rapide d’objets connectés à base d’ESP8266 qui communiquent par messages MQTT. Cette librairie (page GitHub) est développée et maintenue par Marvin Roger (page personnelle). Homie est une librairie qui prend en charge la connexion au réseau Wi-Fi, l’authentification à un serveur MQTT et même la mise à jour sans fil par MQTT (qu’il me reste à découvrir). La documentation (page officielle) est un modèle du genre. Elle n’est cependant disponible qu’en anglais (pour le moment ?) et s’adresse à un public qui maitrise déjà très bien la programmation. Nous allons aborder Homie dans ce tutoriel de façon très assez pratique étape par étape.

Installer la librairie Homie et ses dépendances sur l’IDE Arduino

Pour ce tutoriel, j’ai installé la version 2 de la librairie (voir le paragraphe suivant pour connaître les différences avec la v1.5). Elle n’est pas disponible depuis le gestionnaire de libraire de l’IDE Arduino. Téléchargez la version qui vous intéresse

Ne décompressez pas l’archive. Allez au menu Croquis / Inclure une bibliothèque / Ajouter la bibliothèque .ZIP et sélectionnez le fichier ZIP de la librairie Homie que vous venez de télécharger

Il faut ensuite installer quatre librairies supplémentaires :

C’est tout. Vous êtes prêt à développer avec la librairie Homie

Différences entre la version 1.5 et la version 2

Avant d’aller plus loin, voici les principales différences entre les deux version actuelles. La version stable est la v1.5. La version 2 est en cours de développement mais elle est utilisable. Les différences actuelles se situent surtout au niveau du formalisme de certaines fonctions qui a évolué (la liste complète ici) :

  • Homie.setFirmware(name, version) devient Homie_setFirmware(name, version)
  • Homie.setBrand(brand) devient Homie_setBrand(brand)
  • Homie.registerNode() doit être supprimé. Le Nodes sont maintenant automatiquement (automagically) enregistrées
  • Serial.begin() doit être maintenant explicitement démarré
  • Supprimer HOMIE_OTA_MODE
  • Homie.setNodeProperty() change complètement. La syntaxe Homie.setNodeProperty(node, “property”, “value”, true) est remplacée par Homie.setNodeProperty(node, “property”).setRetained(true).send(“value”).

Premier test

La librairie Homie intègre plusieurs exemple. Par le tutoriel, nous allons tester l’exemple DoorSensor. Ici, j’ai indiqué la broche D1 sur laquelle j’ai branché un micro switch. Par rapport au code initial, la commande pinMode utilise la résistance de PULLUP interne. Sinon vous pouvez ajouter une résistance de rappel à votre montage.

#include 

const int PIN_DOOR = D1;

Bounce debouncer = Bounce(); // Bounce is built into Homie, so you can use it without including it first
int lastDoorValue = -1;

HomieNode doorNode("door", "door");

void loopHandler() {
  int doorValue = debouncer.read();

  if (doorValue != lastDoorValue) {
     Homie.getLogger()