![]() |
![]() |
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.
Sommaire
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
- version 1.5
- version 2 (développement)
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()