2020-05-30
md
Passerelle Sonoff Zigbee Bridge (ZBBridge) avec Domoticz
<-BLE Beacons with Tasmota32 - Proof of Concept

Depuis une petite fuite d'eau qui a causé des dégâts, je voulais un capteur qui détecterait la présence de l'eau. Il fallait un capteur qui satisferait certains critères.

C'était l'occasion de m'initier au protocole Zigbee. Je n'ai pas encore de capteur de présence d'eau, mais en revanche voici mes notes au sujet de l'installation d'un bouton Zigbee (Sonoff SNZB-01 de Itead) intégré au système domotique basé sur Domoticz qui fonctionne sur Wi-Fi. La jonction entre Wi-Fi et Zigbee est assurée par coordinateur Zigbee (Sonoff ZBBridge - Smart Zigbee Bridge également de Itead) qui agit en tant que passerelle. Le micrologiciel de la passerelle a été remplacé avec une version spéciale de Tasmota pour utiliser le protocole MQTT du côté Wi-Fi.

Table des matières

  1. Passerelle ou adaptateur USB
  2. Téléversement de Zigbee2Tasmota vers la passerelle ZBBridge
    1. Obtenir les micrologiciels
    2. Connexions avec un adaptateur USB-série (TTL)
    3. Téléversement avec esptool.py
    4. Téléversement avec Tasmotizer
    5. Téléversement avec Web Installer
    6. Configuration de Tasmota
    7. Mise à niveau du micrologiciel du EFR32
  3. Appairage du bouton Zigbee
  4. Intégration à Domoticz
  5. Conclusion

Passerelle ou adaptateur USB toc

Itead ZigBee Wireless Switch Itead à une attitude relativement ouverte vis-à-vis des bricoleurs. En plus, j'ai un faible pour l'entreprise, car c'est avec ses interrupteurs Wi-Fi que j'ai refait mon système domotique fin 2016. Enfin, on trouve sur le Web des explications sur l'utilisation de son matériel Zigbee dans Domoticz, Home Assistant etc. Donc le choix de dispositifs Itead était naturel. Puisque le serveur domotique ne peut pas prendre en charge le bouton Zigbee, il faut ajouter une passerelle entre Wi-Fi et Zigbee au système. J'hésitais entre deux possibilités.

SONOFF ZBBridge – Smart Zigbee Bridge
Dimension62 x 62 x 20 mm
Interface Zigbee
Protocole3.0 (IEEE 802.15.4)
Fréquence2.4Ghz (2405 à 2480 Mhz)
PuceSilicon Labs EFR32 (EFR32MG21A020F768)
Interface Wi-Fi
ProtocolIEEE 802.11 b/g/n
Fréquence2.4GHz (2412 à 2472 Mhz
PuceESP8266 avec 2 Mo de flash
SONOFF Zigbee 3.0 USB Dongle Plus
Dimension25.5 x 87 x 13.5 mm, l'antenne fait 108 mm de long
Interface Zigbee
Protocole3.0 (IEEE 802.15.4)
Fréquence2.4Ghz (2405 à 2480 Mhz)
PuceTexas Instrument CC2652P
Interface USB
PuceCP2102N
Itead ZBBridge and Zigbee USB dongle

Sans êtres identiques, ces appareils remplissent à peu près la même fonction et coûtent sensiblement le même montant. L'adaptateur Zigbee USB doit être branché sur l'hôte du serveur MQTT et il faut installer le logiciel Zigbee2MQTT qui exige Node.js (Javascript) si l'on veut la plus grande flexibilité incluant la compatibilité avec Domoticz. L'installation semble assez complexe pour qu'on propose une image Docker. Il y a aussi une intégration pour Home Assistant (nommée ZHA) qui semble plus simple. Cette dernière solution ne m'est pas utile, mais elle correspond probablement aux besoins de la majorité des bricoleurs qui s'amusent avec la domotique. Pour les utilisateurs de Domoticz, il y a une autre possibilité: Domoticz-Zigbee. N'ayant pas l'adaptateur, je n'ai pas testé, mais le Wiki du projet est d'une qualité telle que c'est l'environnement que j'installerais en premier.

Itead ZBBridge and Zigbee USB dongle

Le ZBBridge est un dispositif indépendant qui traduit les messages des capteurs Zigbee connectés à la passerelle en message MQTT transmis vers un serveur MQTT par Wi-Fi. Puisqu'un serveur MQTT est un élément essentiel de mon système domotique, il n'y a rien à ajouter à ce dernier. En revanche, il faut téléverser un autre micrologiciel sur le ESP8266 de la passerelle, sinon il faut passer par l'interface infonuagique EWeLink. On ne sera pas surpris qu'il y a une version de Tasmota consacrée à cette fonction. Cette version est souvent nommée Zigbee2Tasmota, mais son nom officiel est tasmota-zbbridge.


Itead ZBBridge and Zigbee USB dongle

La présentation de la passerelle dans la vidéo de digiblurDIY, Sonoff Zigbee Bridge with Home Assistant using Tasmota | NO Soldering | Step by Step Guid contient un plaidoyer convainquant par rapport à ce dispositif. En outre, le fait que la passerelle n'a besoin que d'une alimentation 5 volts pour fonctionner est un atout appréciable. Il est plus facile de la placer à un endroit central pour le réseau Zigbee. Évidemment, il faut que la radio Wi-Fi de la passerelle puisse rejoindre le réseau Wi-Fi.

Téléversement de Zigbee2Tasmota vers la passerelle ZBBridge toc

Il n'est pas plus compliqué de téléverser Tasmota sur le ZBBridge que sur les interrupteurs Sonoff. Le site blakadder à deux pages à ce sujet: Sonoff ZBBridge Zigbee Gateway (M08020700017) et Zigbee Bridge et digiblurDIY a crée un document web How to use the Sonoff Zigbee Bridge with Home Assistant - Tasmota qui accompagne sa vidéo et qui contient beaucoup de détails.

Obtenir les micrologiciels toc

Il faut deux micrologiciels pour transformer la passerelle ZBBridge en un dispositif dont l'action est strictement locale. En premier, on remplace le micrologiciel du ESP8266 avec une version spéciale de Tasmota nommée tasmota-zbbridge.bin. Dès que cette version de Tasmota est embarquée, on l'utilise pour remplacer le micrologiciel du EFR32 de Silicon Labs avec une nouvelle version : ncp-uart-sw_6.7.8_115200.ota. Donc la première étape de la procédure consiste à obtenir ces deux fichiers binaires en cliquant sur les liens précédents si, comme ci-dessous, l'on utilise esptool.py pour téléverser le micrologiciel du ESP8266. Si le téléversement sera fait avec Tasmota Web Installer, alors il n'est pas nécessaire de télécharger tasmota-zbbridge.bin au préalable.

Connexions avec un adaptateur USB-série (TTL) toc

bottom screws Pour avoir accès au ESP8266, il suffit d'enlever des vis cachées sous des patins autocollants fixés aux quatre coins du boitier. Enlever ces patins avec soin pour éviter de les endommager. Il n'est même pas nécessaire de retirer le circuit imprimé du boîtier. Des fils Dupont pour connexions vers une platine d'expérimentation ont des connecteurs mâles assez fins pour glisser dans les vias traversants du circuit imprimer. Heureusement les vias appropriés sont clairement identifiés comme c'est presque toujours le cas avec les produits de Itead. La connexion électrique sera suffisante si l'on tire légèrement sur chaque fil Dupont dans une direction latérale de telle sorte qu'aucune soudure ne sera nécessaire. Le tableau montre les connexions entre le ESP8266 et un adaptateur USB-série qui doit fonctionné sur 3,3 volts.

points de connexions

ESP8266 du ZBBridge Broches de l'adaptateur USB-TTY
1I00 (GPIO 0)GND
2ETXRX
3ERXTX
43V3Vcc/3,3v
5GNDGND
6Z_RST (§) GND

(§)     Si l'on a des problèmes lors du téléversement, digiblurDIY suggère de connecter Z_RST à la masse (GND). Cette connexion désactive la puce Zigbee pour donner un accès sans encombrement au ESP8266.

Si l'adaptateur USB-TTY ne semble pas en mesure de fournir assez de courant au ESP pour réaliser le téléversement, on peut connecter la passerelle à une alimentation 5 volts micro-USB. Dans ce cas, il est impératif d'éliminer la connexion 3,3 volts entre la passerelle et l'adaptateur USB-TTY.

Téléversement avec esptool.py toc

J'ai utilisé l'utilitaire de téléversement d'Espressif, esptool.py, qui est déjà en place sur mon ordinateur de bureau. En fait, il y au moins huit copies du logiciel.

michel@hp:~$ find .local/bin/arduino-1.8.19 -name esptool.py .local/bin/arduino-1.8.19/portable/packages/esp8266/hardware/esp8266/3.0.2/tools/esptool/esptool.py .local/bin/arduino-1.8.19/portable/packages/esp32/hardware/esp32/2.0.2/tools/esptool.py .local/bin/arduino-1.8.19/portable/packages/esp32/tools/esptool_py/3.1.0/esptool.py michel@hp:~$ find .platformio/packages -name esptool.py .platformio/packages/framework-espidf/components/esptool_py/esptool/esptool.py .platformio/packages/framework-arduinoespressif32/tools/esptool.py .platformio/packages/tool-esptoolpy/esptool.py .platformio/packages/framework-arduinoespressif8266/tools/esptool/esptool.py .platformio/packages/tool-esptoolpy@1.30000.201119/esptool.py

J'ai choisi l'une des copies plus récentes puis vérifié qu'il était possible de communiquer avec le ESP8266 de la passerelle.

michel@hp:~$ cd .platformio/packages/tool-esptoolpy michel@hp:~/.platformio/packages/tool-esptoolpy$ ./esptool.py -p /dev/ttyUSB0 flash_id esptool.py v3.1 Serial port /dev/ttyUSB0 Connecting.... Detecting chip type... ESP8266 Chip is ESP8266EX Features: WiFi Crystal is 26MHz MAC: e8:db:84:9d:b5:37 Uploading stub... Running stub... Stub running... Manufacturer: a1 Device: 4015 Detected flash size: 2MB Hard resetting via RTS pin...

Il y a effectivement 2 Mo de mémoire flash connectée au ESP8266 de la passerelle. Puisque tout semble en ordre il est possible de procéder au téléversement.

michel@hp:~/.platformio/packages/tool-esptoolpy$ ./esptool.py -p /dev/ttyUSB0 -b 56000 write_flash -fs 2MB -fm dout 0x0 ~/tasmota/tasmota-zbbridge.bin esptool.py v3.1 Serial port /dev/ttyUSB0 Connecting.... Detecting chip type... ESP8266 Chip is ESP8266EX Features: WiFi Crystal is 26MHz MAC: e8:db:84:9d:b5:37 Uploading stub... Running stub... Stub running... Configuring flash size... Flash will be erased from 0x00000000 to 0x0001ffff... Warning: Image file at 0x0 doesn't look like an image file, so not changing any flash settings. Compressed 127544 bytes to 24937... Wrote 127544 bytes (24937 compressed) at 0x00000000 in 4.8 seconds (effective 212.8 kbit/s)... Hash of data verified.

Il est possible de vérifier le micrologiciel téléversé octet par octet contre la copie sur l'ordinateur.

michel@hp:~/.platformio/packages/tool-esptoolpy$ ./esptool.py -p /dev/ttyUSB0 -b 56000 verify_flash --diff yes -fs 2MB -fm dout 0x0 ~/tasmota/tasmota-zbbridge.bin

Téléversement avec Tasmotizer toc

Si l'on est allergique aux utilitaires le ligne de commande, il y a Tasmotizer présenté dans la section Flashing du guide de démarrage de Tasmota. Bien sur, il faudra installé ce logiciel.

Tasmotizer

À noter qu'il n'est pas possible de téléverser les paramètres du réseau Wi-Fi avec Tasmotizer car tasmota-zbbridge.bin n'offre pas d'interface série.

Je n'ai pas utilisé depuis longtemps Tasmotizer qui semble délaissé depuis plus d'un an.

Téléversement avec Web Installer toc

Dernièrement, l'équipe Tasmota recommande l'installateur Web. Si l'on possède le navigateur Google Chrome / Chromium ou Microft Edge alors on peut s'en servir sans avoir à installer quoi que ce soit de supplémentaire.

Web Installer 1

J'ai utilisé cet utilitaire dernièrement avec un autre dispositif basé sur le ESP32 et il a fonctionné très bien. Comme avec Tasmotizer, il n'est pas possible de téléverser les paramètres du réseau Wi-Fi avec cet utilitaire, mais comme expliqué ci-dessus il s'git d'une limitation imposée par le micrologiciel du ESP8266 et non une lacune de l'utilitaire.

Configuration de Tasmota toc

Une fois le téléversement de tasmota-zbbridge.bin complété, on débranche les connexions temporaires vers l'adaptateur USB-série (TTY), on doit mettre en marche la passerelle. Il faut alors lui fournir les coordonnées du réseau Wi-Fi domestique. Quand Tasmota ne peut se connecter à un réseau Wi-Fi, il crée un point d'accès Wi-Fi. On peut utiliser une tablette, un téléphone intelligent ou un ordinateur avec un adaptateur Wi-Fi pour se connecter à ce réseau sans-fil.

Tasmota Access Point

Comme tous les dispositifs sur Tasmota non modifiés, le nom du point d'accès est tasmota-XXXXXX-XXXXX où le suffixe numérique dépend de l'adresse MAC du ESP8266. Après s'être connecté à ce réseau Wi-Fi, on a accès à l'interface Web de Tasmota à l'adresse IP: 192.168.4.1.

Tasmota Access PointTasmota Access Point

On clique sur le bouton Save après avoir entrer le nom du réseau Wi-Fi domestique et son mot de passe. S'il n'y a pas d'erreur, Tasmota affiche qu'il a établi une connexion avec le reseau Wi-Fi et l'adresse IP sur ce réseau qui a été attribué à la passerelle. Notez cette adresse.

Tasmota ZbBridge Web Interface

Après de nombreuses secondes on devrait avoir accès à l'interface Web de Tasmota qu'on peut voir ci-dessous. Il se peut que la connexion vers le réseau Wi-Fi domestique et le ZBBridge ne soit pas réalisée automatiquement et, dans ce cas, il faudra ouvrir la page Web de la passerelle à l'adresse IP notée auparavant. Quand le site est atteint, aussi bien procéder au paramétrage du serveur MQTT. Cliquez sur le bouton Configuration puis sur le bouton Configure MQTT.

Tasmota ZbBridge MQTT settings

Au minimum il faut saisir l'adresse IP de ce dernier dans la boîte de saisie Host. Mettre à jour le nom d'utilisateur (User) et le mot de passe (Password) si nécessaire. Ne pas oublier de cliquer sur Save à la fin.

Mise à niveau du micrologiciel du EFR32 toc

Pour compléter la mise à jour, il faut avoir une copie locale du micrologiciel du EFR32 comme expliqué précédemment. Depuis le menu principal de l'interface Web du ZBBridge, on clique sur Firmware Upgread puis sur le bouton Parcourir... dans la section Upgrade by file upload. On doit retrouver le micrologiciel déjà sauvegardé.

Tasmota ZbBridge ncp update

On démarre la mise à niveau en cliquant sur le bouton Start upgrade sous le nom du micrologiciel ncp-uart-...

Appairage du bouton Zigbee toc

Après tous ces préparatifs, on peut maintenant procéder à la mise en place du réseau Zigbee. La première étape est d'appairer le bouton Zigbee et la passerelle ZBBridge. En d'autres mots le bouton doit être ajouté à la liste des noeuds Zigbee pris en charge par le coordonnateur ZBBridge. On peut démarrer une session d'appairage sur la passerelle en cliquant sur le bouton Zigbee Permit Join dans le menu principal de son interface Web. Cependant, il est préférable de le faire à partir de la console, en saisissant la commande zbPermitJoin 1. Voici ce qui s'affiche alors.

21:38:41.675 CMD: zbPermitJoin 1 21:38:41.680 MQT: tele/zbbridge-1/RESULT = {"ZbState":{"Status":21,"Message":"Pairing mode enabled"}} 21:38:41.684 MQT: stat/zbbridge-1/RESULT = {"ZbPermitJoin":"Done"} 21:39:41.719 MQT: tele/zbbridge-1/RESULT = {"ZbState":{"Status":20,"Message":"Pairing mode disabled"}}

Comme on peut voir, l'appairage est possible pendant environ une minute. Pour compléter la procédure, le bouton Zigbee doit être en mode d'appairage aussi. Avec un tournevis, on sépare la base du bouton du reste du boîtier. Si elle est encore là, il faut enlever la pellicule d'isolation de la batterie. Avec un trombone, on appuie sur le bouton RST pendant 5 secondes jusqu'à ce que la DEL clignote 3 fois; le SNZB-01 est alors en mode d'appairage et le restera très longtemps. La commande zbPermitJoin 1 est à nouveau saisie dans la console. Maintenant, il suffit d'attendre que l'opération se complète.

21:54:41.785 CMD: zbpermitjoin1 21:54:41.790 MQT: tele/zbbridge-1/RESULT = {"ZbState":{"Status":21,"Message":"Pairing mode enabled"}} 21:54:41.793 MQT: stat/zbbridge-1/RESULT = {"ZbPermitJoin":"Done"} 21:54:50.122 ZIG: {"ZbEZSPReceived":"2300000132BBE3411F25004B120004"} 21:54:50.560 ZIG: {"ZbEZSPReceived":"240032BBE3411F25004B120001000000"} 21:54:50.564 MQT: tele/zbbridge-1/RESULT = {"ZbState":{"Status":34,"IEEEAddr":"0x00124B00251F41E3","ShortAddr":"0xBB32","ParentNetwork":"0x0000","JoinStatus":1,"Decision":0}} 21:54:51.240 MQT: tele/zbbridge-1/RESULT = {"ZbState":{"Status":30,"IEEEAddr":"0x00124B00251F41E3","ShortAddr":"0xBB32","PowerSource":false,"ReceiveWhenIdle":false,"Security":false}} 21:54:52.427 MQT: tele/zbbridge-1/RESULT = {"ZbState":{"Status":32,"ActiveEndpoints":["0x01"]}} 21:54:52.622 ZIG: Zigbee Devices Data saved in EEPROM (18 bytes) 21:54:52.967 MQT: tele/zbbridge-1/SENSOR = {"ZbReceived":{"0xBB32":{"Device":"0xBB32","ModelId":"WB01","Manufacturer":"eWeLink","Endpoint":1,"LinkQuality":87}}} 21:54:54.503 MQT: tele/zbbridge-1/RESULT = {"ZbState":{"Status":33,"Device":"0xBB32","Endpoint":"0x01","ProfileId":"0x0104","DeviceId":"0x0000","DeviceVersion":0,"InClusters":["0x0000","0x0003","0x0001"],"OutClusters":["0x0006","0x0003"]}} 21:54:55.035 ZIG: Zigbee Devices Data saved in EEPROM (29 bytes) 21:54:56.501 ZIG: auto-bind `ZbBind {"Device":"0xBB32","Endpoint":1,"Cluster":"0x0001"}` 21:54:57.045 MQT: tele/zbbridge-1/RESULT = {"ZbBind":{"Device":"0xBB32","Status":0,"StatusMessage":"SUCCESS"}} 21:54:58.546 ZIG: auto-bind `ZbBind {"Device":"0xBB32","Endpoint":1,"Cluster":"0x0006"}` 21:54:58.816 MQT: tele/zbbridge-1/RESULT = {"ZbBind":{"Device":"0xBB32","Status":0,"StatusMessage":"SUCCESS"}} 21:55:00.519 ZIG: auto-bind `ZbSend {"Device":"0xBB32","Config":{"BatteryVoltage":{"MinInterval":3600,"MaxInterval":14400,"ReportableChange":0.2},"BatteryPercentage":{"MinInterval":3600,"MaxInterval":14400,"ReportableChange":5}}}` 21:55:01.426 MQT: tele/zbbridge-1/SENSOR = {"ZbReceived":{"0xBB32":{"Device":"0xBB32","ConfigResponse":{},"Endpoint":1,"LinkQuality":84}}}

On peut maintenant replacer le boîtier sur sa base, en prenant soin d'aligner les flèches sur ces deux éléments. Voici les messages MQTT publiés par la passerelle quand le bouton est activé.

après avoir appuyé une seule fois sur le bouton : 22:08:29.375 MQT: tele/zbbridge-1/SENSOR = {"ZbReceived":{"0xBB32":{"Device":"0xBB32","0006!02":"","Power":2,"Endpoint":1,"LinkQuality":68}}} après avoir appuyé deux fois rapidement sur le bouton : 22:08:53.624 MQT: tele/zbbridge-1/SENSOR = {"ZbReceived":{"0xBB32":{"Device":"0xBB32","0006!01":"","Power":1,"Endpoint":1,"LinkQuality":45}}} après avoir appuyé 3 seconde ou plus sur le bouton : 22:08:54.05 MQT: tele/zbbridge-1/SENSOR = {"ZbReceived":{"0xBB32":{"Device":"0xBB32","0006!02":"","Power":0,"Endpoint":1,"LinkQuality":55}}}

J'ai été agréablement surpris de voir qu'il est possible de distinguer les trois types d'activation du bouton comme l'annonce le fabricant.

Activation du boutonValeur du paramètre "Power"
simple2
double1
longue0

 

Intégration à Domoticz toc

Malheureusement, les messages MQTT transmis par Zigbee2Tasmota (a.k.a. ) sont complètement ignorés par Domoticz. En revanche, les règles de Tasmota apportent une solution à ce problème. À partir d'exemples dans Sending sensor values to separated MQTT topics et Use Zigbee to control Tasmota Devices, j'ai ajouté la règle suivante dans la console du ZBBridge:

Rule1 on zbreceived#0xBB32 do publish domoticz/in {"command":"switchlight","idx":173,"switchcmd":"Toggle"} endon

22:47:53.311 MQT: stat/zbbridge-1/RESULT = {"Rule1":{"State":"OFF","Once":"OFF","StopOnError":"OFF","Length":106,"Free":405,"Rules":"on zbreceived#0xBB32 do publish domoticz/in {\"command\":\"switchlight\",\"idx\":173,\"switchcmd\":\"Toggle\"} endon"}}

Je n'avais pas remarqué que la règle n'est pas activée ce qui a occasionné une perte de temps considérable. Pourtant, la documentation de Tasmota disait clairement qu'il fallait ajouter la commande suivante.

Rule1 1

22:48:00.274 CMD: Rule1 1 22:48:00.279 MQT: stat/zbbridge-1/RESULT = {"Rule1":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":106,"Free":405,"Rules":"on zbreceived#0xBB32 do publish domoticz/in {\"command\":\"switchlight\",\"idx\":173,\"switchcmd\":\"Toggle\"} endon"}}

Avec cette règle, la torchère, dont l'idx dans Domoticz est 173, basculait à chaque activation du boutton.

22:49:40.461 MQT: tele/zbbridge-1/SENSOR = {"ZbReceived":{"0xBB32":{"Device":"0xBB32","0006!02":"","Power":2,"Endpoint":1,"LinkQuality":74}}} 22:49:40.471 RUL: ZBRECEIVED#0XBB32 performs "publish domoticz/in {"command":"switchlight","idx":173,"switchcmd":"Toggle"}" 22:49:40.476 MQT: domoticz/in = {"command":"switchlight","idx":173,"switchcmd":"Toggle"} 21:57:13.722 MQT: tele/zbbridge-1/SENSOR = {"ZbReceived":{"0xBB32":{"Device":"0xBB32","BatteryVoltage":3.3,"BatteryPercentage":100,"Endpoint":1,"LinkQuality":87}}}

Satisfais, j'ai installé le bouton dans le bureau de ma conjointe lui disant que dorénavant elle pouvait utiliser ce bouton quand Alexa n'était pas au poste. Les jours suivants, elle a observé que la torchère s'allumait ou s'éteignait de façon aléatoire. J'ai examiné sur une plus longue période les messages MQTT au sujet du bouton (0xBB32) pour constater que la passerelle rapportait des événements autres que les activations du bouton. En voici deux exemples.

21:33:08.899 MQT: tele/zbbridge-1/SENSOR = {"ZbReceived":{"0xBB32":{"Device":"0xBB32","BatteryVoltage":3.1,"BatteryPercentage":100,"Endpoint":1,"LinkQuality":79}}} ... 21:55:01.426 MQT: tele/zbbridge-1/SENSOR = {"ZbReceived":{"0xBB32":{"Device":"0xBB32","ConfigResponse":{},"Endpoint":1,"LinkQuality":84}}}

Il fallait donc un critère de déclenchement de la règle plus précis. J'en ai profité pour ajouter l'activation d'une scène lorsque le bouton est appuyé deux fois et la mise à jour d'un dispositif virtuel dans Domoticz pour indiquer le niveau de la pile du bouton.

Rule1 on zbreceived#0xBB32#Power=2 do publish domoticz/in {"command":"switchlight","idx":173,"switchcmd":"Toggle"} endon Rule2 on zbreceived#0xBB32#Power=1 do publish domoticz/in {"command":"switchscene","idx":13,"switchcmd":"On"} endon Rule3 on zbreceived#0xBB32#BatteryPercentage do publish domoticz/in {"command":"udevice","idx":199,"nvalue":0, "svalue":"%value%"} endon

Voici l'application de la troisième règle telle que présentée dans la console de la passerelle.

18:01:37.896 MQT: tele/zbbridge-1/SENSOR = {"ZbReceived":{"0xBB32":{"Device":"0xBB32","BatteryVoltage":3.2,"BatteryPercentage":100,"Endpoint":1,"LinkQuality":71}}} 18:01:37.910 RUL: ZBRECEIVED#0XBB32#BATTERYPERCENTAGE performs "publish domoticz/in {"command":"udevice","idx":199,"nvalue":0, "svalue":"100"}" 18:01:37.913 MQT: domoticz/in = {"command":"udevice","idx":199,"nvalue":0, "svalue":"100"}

Puisqu'il n'y a que 3 ensembles de règles (Rule1, Rule2 et Rule3), si je voulais ajouter une autre règle pour l'activation de plus de 3 secondes du bouton, il faudrait combiner des règles.

Rule1 on zbreceived#0xBB32#Power=2 do publish domoticz/in {"command":"switchlight","idx":173,"switchcmd":"Toggle"} endon on zbreceived#0xBB32#Power=1 do publish domoticz/in {"command":"switchscene","idx":13,"switchcmd":"On"} endon on zbreceived#0xBB32#Power=0 do ... endon Rule2 on zbreceived#0xBB32#BatteryPercentage do publish domoticz/in {"command":"udevice","idx":199,"nvalue":0, "svalue":"%value%"} endon

Conclusion toc

Cette première incursion dans l'univers Zigbee est positive. Le bouton Zigbee fonctionne parfaitement. Il est à l'étage alors que la passerelle est au rez-de-chaussée en anticipation de l'ajout de capteur supplémentaires au rez-de-chaussé et au sous-sol. L'ajout des capteurs additionnel devrait demander beaucoup moins de travail. En fait, il ne devrait être nécessaire que de procéder à l'appairage, puis d'élaborer une ou des règles pour que la passerelle publie des messages MQTT appropriés.

Pendant que je préparais ce billet, j'ai installé Tasmota32 sur un autre produit de Itead : un DualR3 Lite. J'ai été surpris de constater que Tasmota32 (fait pour le ESP32) pouvait prendre en charge les balises Bluetooth à basse énergie (BLE beasons), une technologie qui concurrence Zigbee. Comme on peut le constater dans un billet à ce sujet, elle n'est pas encore bien intégrée dans Tasmota.

Pour ce qui est de la détection des fuites d'eau, il y aura peut-être un choix entre deux types de capteurs.