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.
- Compatibilité avec Domoticz.
- Aucun recours à des ressources infonuagiques. La fin brutale des services de Insteon et iHome confirme encore une fois la nécessité d'un contrôle local de la domotique.
- Alimentation par pile avec autonomie raisonnable.
- Faible coût.
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 un 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
- Passerelle ou adaptateur USB
- Téléversement de Zigbee2Tasmota vers la passerelle ZBBridge
- Appairage du bouton Zigbee
- Intégration à Domoticz
- Conclusion
Passerelle ou adaptateur USB
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 | |
---|---|
Dimension | 62 x 62 x 20 mm |
Interface Zigbee | |
Protocole | 3.0 (IEEE 802.15.4) |
Fréquence | 2.4Ghz (2405 à 2480 Mhz) |
Puce | Silicon Labs EFR32 (EFR32MG21A020F768) |
Interface Wi-Fi | |
Protocol | IEEE 802.11 b/g/n |
Fréquence | 2.4GHz (2412 à 2472 Mhz |
Puce | ESP8266 avec 2 Mo de flash |
SONOFF Zigbee 3.0 USB Dongle Plus | |
Dimension | 25.5 x 87 x 13.5 mm, l'antenne fait 108 mm de long |
Interface Zigbee | |
Protocole | 3.0 (IEEE 802.15.4) |
Fréquence | 2.4Ghz (2405 à 2480 Mhz) |
Puce | Texas Instrument CC2652P |
Interface USB | |
Puce | CP2102N |
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.
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
.
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
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
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)
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.
ESP8266 du ZBBridge | Broches de l'adaptateur USB-TTY | |
---|---|---|
1 | I00 (GPIO 0) | GND |
2 | ETX | RX |
3 | ERX | TX |
4 | 3V3 | Vcc/3,3v |
5 | GND | GND |
6 | Z_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
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.
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.
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.
Il est possible de vérifier le micrologiciel téléversé octet par octet contre la copie sur l'ordinateur.
Téléversement avec Tasmotizer
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.
À 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
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.
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
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.
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
.
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.
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
puis sur le bouton . 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
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é.
On démarre la mise à niveau en cliquant sur le bouton ncp-uart-...
Appairage du bouton Zigbee
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 zbPermitJoin 1
. Voici ce qui s'affiche alors.
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.
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é.
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 bouton | Valeur du paramètre "Power" |
---|---|
simple | 2 |
double | 1 |
longue | 0 |
Intégration à Domoticz
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:
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.
Avec cette règle, la torchère, dont l'idx
dans Domoticz est 173, basculait à chaque activation du boutton.
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.
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.
Voici l'application de la troisième règle telle que présentée dans la console de la passerelle.
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.
Conclusion
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.