Pont ZigBee en Wi-Fi
2021-05-04T00:00:00Z | 7 minutes de lecture | Mise à jour le 2021-05-04T00:00:00Z
Tutoriel de mise en place d’un pont ZigBee sur Home Assistant via le flashage sous Tasmota du Sonoff ZBBridge.
Introduction
Dans mes recherches d’une solution de capteurs sous batterie consommant peu
d’énergie, je me suis naturellement tournée vers le protocole Open Source ZigBee.
Un autre avantage non négligeable est que les capteurs ZigBee on la réputation
de ne pas être des plus chères.
Afin de faire la passerelle entre ce protocole et mon réseau sans passé par
le PC d’un autre (le “Cloud”), il existe plusieurs solutions.
J’ai longtemps regardé la solution
zigbee2mqtt
mais je n’ai pas sauté le pas devant la complexité de mise en place.
Il y a un an de cela est apparu le
Sonoff ZBBridge.
À partir de là commença
les aventures de la communauté Tasmota
sur le sujet. Si cet article existe, c’est parce qu’ils sont arrivés à leur fin !
Donc oui, le Sonoff ZBBridge est enfin flashable sous Tasmota !
De ce fait, nous verrons ici comment flasher ce dernier et comment l’intégrer à notre très cher Home Assistant.
Tasmota
Ma source principale est le tutoriel du site de Blakadder.
Préparation
Dans le but de flasher l’équipement, il va falloir ouvrir le boitier afin de pouvoir y connecter le convertisseur USB/TTL. Les vis de maintien se trouvent en dessous des quatre pattes en silicone.
On va maintenant devoir trouver un moyen de fixer les connecteurs du
convertisseur sur la carte. Les connecteurs Dupont ne rentrent pas dans les trous.
Afin de faire en sorte de pas avoir à souder (cela n’a pas trop d’intérêt car
cette connexion est temporaire), j’ai essayé de trouver une solution.
J’ai remarqué que mes fils d’étains rentraient bien dans les trous et aussi
correctement dans mes connecteurs Dupont femelles. J’ai donc utilisé des bouts
de fil d’étain pour faire l’interface avec la carte. Afin d’éviter tout problème,
j’ai auparavant isolé la carte avec du ruban adhésif isolant électrique.
La photo ci-dessous montre cela, ainsi que les points de connexions au convertisseur.
Après un travail minutieux :
Tableau associatif :
Sonoff ZBBridge | Convertisseur USB/TTL |
---|---|
IO0 | GND |
GND | GND |
3V3 | 3V3 |
ETX | RX |
ERX | TX |
[!WARNING] On remarque bien que le TX de l’un va vers le RX de l’autre !
Et aussi que,IO0
est relié auxGND
pour passer en mode flashage.
[!CAUTION] On utilise bien le 3.3 Volts du convertisseur et non le 5 sinon on grille la carte.
Flashage et configuration Wi-Fi
Télécharger donc le firmware Tasmota spécial Zigbee Bridge :
tasmota-zbbridge.bin
Pour le flashage, j’utilise
ESPHome-Flasher mais
vous pouvez utiliser autre chose.
Après avoir branché le convertisseur au PC, on sélectionne le bon port COM, le bon firmware et on flashe la carte.
Une fois le “Flashing is complete”, on peut déconnecter tous les fils et remettre la carte dans son boitier.
On alimente donc le pont via son port micro-USB.
Une fois ce dernier démarrer il devrait diffuser un AP Wi-Fi avec un nom
du type “tasmota_[un-ID]”. En vous connectant dessus, la page du routeur
devrait s’ouvrir (sinon on va sur l’adresse
http://192.168.4.1). On y inscrit donc ces informations
de connexion.
[!TIP] J’ai eu des erreurs d’authentification à cette étape (le pont revient alors en mode AP).
J’ai réussi à faire la connexion en remasquant le mot de passe avant de sauvegarder.Je pense qu’il y a un bug ici et qu’il faut absolument que le MDP soit masqué lors de la validation (ou j’ai vraiment raté mon MDP à chaque fois !).
Flashage et configuration ZigBee
Maintenant que le module est bien sur notre réseau Wi-Fi,
il faut flasher la puce ZigBee.
Pour cela, on télécharge le firmware approprié :
ncp-uart-sw_6.7.8_115200.ota
On va alors dans le menu Firmware Upgrade et on utilise notre fichier téléchargé juste avant.
Après quelques minutes, le flashage se termine et le module redémarre. En consultant la console (menu Console), on obtient la sortie suivante :
20:59:50.263 ZIG: Resetting EZSP device
20:59:51.532 RSL: RESULT = {“ZbState”:{“Status”:1,“Message”:“EFR32 booted”,“RestartReason”:“Power-on”,“Code”:2}}
20:59:51.584 RSL: RESULT = {“ZbState”:{“Status”:55,“Version”:“6.7.8.0”,“Protocol”:8,“Stack”:2}}
20:59:51.586 RSL: RESULT = {“ZbState”:{“Status”:3,“Message”:“Configured, starting coordinator”}}
20:59:52.869 ZIG: Factory reset EZSP device
20:59:53.100 ZIG: Subscribe to group 0 ‘ZbListen0 0’
20:59:53.156 RSL: RESULT = {“ZbState”:{“Status”:0,“Message”:“Started”}}
20:59:53.157 ZIG: Zigbee started
On va maintenant créer le bridge pour HA.
Cela se fait dans la section Configuration > Configure Other.
On remplace donc la template le code ci-dessous avant de sauvegarder.
{"NAME":"ZHA ZBBridge","GPIO":[56,208,0,209,59,58,0,0,0,0,0,0,17],"FLAG":0,"BASE":18}
Ensuite, on sélectionne le type de module “ZHA ZBBridge (0)” dans la liste du menu Configuration > Configure Module avant de sauvegarder.
[!NOTE] Ce mode de configuration créera un socket TCP qui va simplement relayer toutes les données ZigBee au serveur (donc sans les traiter).
De cette manière, toute la configuration se fait sur HA (spoil : via l’intégration ZHA).
Ainsi, on va créer une règle pour lancer le bridge TCP au démarrage du module et activer cette dernière. On tape donc dans la console le contenu suivant :
Rule1 ON System#Boot do TCPStart 8888 endon
Rule1 1
Si vous le souhaitez, vous pouvez utiliser un autre port que le 8888
.
On redémarre donc le module avec un clic sur le bouton Restart.
Peaufinages
Étant donné que ce module a une fonction de serveur, je lui mets une adresse IP statique.
Pour cela, je tape les commandes suivantes dans la console :
IPAddress1 192.168.92.253
IPAddress3 255.255.255.0
IPAddress2 192.168.92.254
IPAddress4 1.1.1.1
IPAddress[1-4] correspondent respectivement à l’adresse IP, la passerelle par défaut, le masque de sous-réseau et le serveur DNS.
J’ai aussi changé les noms d’affichage lors de l’application de la template (section Configuration > Configure Other).
Un reboot plus tard, on peut passer à l’intégration sur Home Assistant.
Home Assistant
Intégration
On ajoute donc l’intégration ZHA (Zigbee Home Automation) :
On choisit ensuite le type de radio EZSP :
On entre donc le lien d’accès qui prend la forme de
socket://<adresse_ip>:<port>
, on spécifie le baud à 115200
et
un contrôle de flux de données de type software
.
C’est fini pour l’intégration ! Reste plus qu’à ajouter nos éléments ZigBee.
Ajout de périphérique
J’ai pris des capteurs de porte et bouton de la gamme Aqara.
Pour l’exemple de cet article, je prendrai le bouton.
Sur la page de ZHA, on clic donc sur bouton AJOUTER DES APPAREILS et ensuite on passe notre équipement en mode pairing en cliquant sur le bouton de reset pendant ~8 secondes.
Si votre périphérique n’est pas trouvé, faites un reset de votre équipement en maintenant le bouton de pairing plus longtemps et refaites la procédure.
Voilà ! Maintenant, votre périphérique est ajouté !
À vos automatisations pour le contrôle de vos équipements.
N’hésitez pas à utiliser l’assistant d’automatisation en cliquant sur le
:(fas fa-plus-circle): du bloc Automatisations dans la page de détail
de vos périphériques.
Voici la première que j’ai faite pour contrôler une lampe connectée qui n’avait pas de télécommande :
- alias: Cuisine switch
description: 'Controle la lumière'
trigger:
- device_id: cba3ebd43ab1a3c5d05812e455687d59
domain: zha
platform: device
type: remote_button_short_press
subtype: remote_button_short_press
condition: []
action:
- service: light.toggle
target:
entity_id: light.suspension_cuisine
mode: single
Malgré que le chemin d’appel soit long :
- Envoie (appui sur le bouton) :
- ZigBee vers pont
- Pont vers AP Wi-Fi (box)
- Box vers serveur
- Traitement HA
- Commande :
- Serveur vers Box
- Box (AP Wi-Fi) vers lampe
La commande met le même temps que pour un couple ampoule et télécommande Philips HUE alors que mon serveur a un Intel Atom x5-Z8350 !
Conclusion
La technologie ZigBee permet sans effort d’avoir de l’IoT non-cloud. Son système de pairing est assez pratique contrairement à ce que j’ai du faire pour le pont RF.
Comparé au RF, les équipements ZigBee transmettent leur pourcentage de batterie. Je pense donc être convaincu que je devrais utiliser des capteurs ZigBee pour les éléments importants (porte d’entrée, fenêtres) et réutiliser ceux en RF pour des trucs moins critiques (frigo, bar 😉, lunette des toilettes 🤣).