Dans ce tutoriel, j’avais utilisé un module Si7021 comme capteur de température et d’humidité relative relié à une carte Arduino Uno R4 WiFi. La carte communique en WiFi avec le protocole de messagerie MQTT pour envoyer ses données de mesure à une carte Raspberry Pi.
Noeud de capteurs pour la température et humidité relative sur Arduino Uno R4 WiFi
Si le choix de l’Arduino pour un nœud de capteurs présente un certain intérêt en matière de personnalisation et prototypage rapide, il reste quelques inconvénients. Le système est coûteux, et le WiFi consomme beaucoup d’énergie pour un système autonome censé fonctionner sur piles ou batterie.
En cherchant des solutions alternatives, je suis tombé sur ce petit cylindre blanc de 45mm de diamètre, un autre capteur de température et d’humidité de chez Sonoff (référence Sonoff SNZB-02P) :
Capteur de température et d'humidité Sonoff SNZB-02P
Ce capteur fonctionne en Zigbee, un protocole de communication radio beaucoup plus économe en énergie. Le système est livré avec une pile bouton CR2477, pour une autonomie annoncée de 4 ans !! Le cylindre est aimanté et vous trouverez aussi dans l’emballage un support métallique à visser sur un mur ou une paroi. Le tout pour 20 € environ.
Le capteur présente un autre avantage : il est compatible avec le service Zigbee2MQTT, une interface opensource qui permet la publication des mesures du capteur en passant par le protocole de messagerie MQTT. Concrètement, c’est un dongle USB Zigbee2MQTT de la même marque Sonoff (20 € environ) connecté à la carte Raspberry Pi qui établit la passerelle :
Sonoff Zigbee 3.0 USB Dongle Plus (ZB Dongle-P, contrôleur TI CC2652P flashé avec le firmware coordinateur Z-Stack)
Le schéma architectural de tout le système communicant évolue et devient :
Attention : pour brancher le dongle sur la carte Raspberry Pi, il faut une rallonge USB pour éloigner le dongle des interférences avec le WiFi de la carte (au moins un mètre).
Pour la configuration logicielle de la Raspberry Pi, je reprends les outils de la pile IOTstack déjà utilisée dans le tutoriel. La pile comprend notamment le broker MQTT Mosquitto, qui reçoit les messages des données mesurées et qui les transmettra aux clients abonnés au topic (voir Le protocole MQTT).
Il reste à installer et configurer le conteneur du service Zigbee2MQTT, voir https://sensorsiot.github.io/IOTstac...s/Zigbee2MQTT/.
Le conteneur comprend également un petit assistant de configuration en ligne, à l’URL http://<adresse IP de la Raspberry Pi>:8080. Autorisez l’appairage depuis l’interface et maintenez le petit bouton sur la paroi cylindrique du capteur appuyé pendant quelques secondes. Un voyant devrait clignoter pendant la phase d’appairage, et le capteur devrait apparaître dans la liste indiquant sa disponibilité En ligne :
Ici, j’ai renommé provisoirement le capteur (nom simplifié).
Le capteur devrait commencer à exposer ses données :
Les journaux doivent rendre compte des messages publiés :
Les données sont publiées régulièrement au format JSON sur le topic zigbee2mqtt/fleb-SNZB-02P :
Code json : | Sélectionner tout |
{"battery":100,"humidity":57.2,"linkquality":24,"temperature":22.4}
Comme dans le tutoriel, on récupère et on traite les messages reçus avant de les insérer en base de données (InfluxDB) grâce à Node-RED :
Ci-dessous les données de mon capteur sur 24h visualisées dans Grafana :
Conclusion
Voilà du matériel Zigbee et une interface Zigbee2MQTT concluants pour une utilisation domotique avec une carte Raspberry Pi. Le Zigbee est très pertinent pour un usage domotique avec du matériel bon marché et une faible consommation d’énergie, et le protocole de messagerie MQTT est très simple à exploiter par les développeurs.
Vous pouvez maintenant étendre votre réseau domotique avec les nombreux capteurs et actionneurs disponibles sur le marché (capteurs environnementaux, systèmes d’éclairage, interrupteurs, relais commandés, systèmes d’ouverture/fermeture, d’arrosage automatique, détecteurs de présence, d'ouverture, de fuite... prises connectées, thermostats, etc.)
Le service Zigbee2MQTT est opensource, et de nombreux constructeurs en plus de vendre leur passerelle propriétaire mettent en lumière la compatibilité de leur matériel avec ce protocole (comme cette carte Zigbee avec des sorties relais). Méfiez-vous toutefois, les modules Zigbee ne sont pas tous compatibles avec Zigbee2MQTT. Référez-vous au site officiel pour voir la liste des matériels supportés.