Zigbee Coordinator Migration
Intro
Je vais décrire ici ma migration du SONOFF ZigBee 3.0 dans sa version ZBDongle-P vers le SIMLIGHT SLZB-06.
Ce sont tous les deux de très bon produits, si j'ai voulu aller vers le SLZB-06 c'est pour son branchement (et alimentation) en RJ45 qui vont me permettre de le placer de manière plus libre dans la maison. Le but étant de lui trouver un point centrale afin d'avoir la meilleur qualité de réseau Zigbee possible. Un bon et long câble RJ45 et hop !
Feuille de route
Que dit la doc Doc ?
Avant de se lancer dans cette opération, et afin de s'assurer une migration sans perte de données, sans problème avec nos capteurs, on vas faire comme en cuisine, lire la recette en entier au moins une fois avant de se lancer 🍪 Un petit tour dans la documentation Zigbee2MQTT dédié à ce sujet : https://www.zigbee2mqtt.io/guide/faq/#how-do-i-migrate-from-one-adapter-to-another nous donne les indications de migration que je vous reprends ici traduite en français par mes soins.
Premièrement s'assurer que vous tournez sous la dernière version de Zigbee2MQTT.
Stopper Zigbee2MQTT
Déterminer si la migration nécessite un ré-appairage vos périphériques Zigbee
- Si un ré-appairage est nécessaire : supprimer
data/coordinator_backup.json
(s'il existe) etdata/database.db
- Si un ré-appairage n'est pas nécessaire : copiez l'adresse IEEE de l'ancien coordinateur vers le nouveau.
Mettre à jour le
serial
->port
dans votre fichierconfiguration.yaml
Démarrer Zigbee2MQTT
- Si un ré-appairage a été nécessaire :
- Débrancher électriquement tous les périphériques alimenté par le secteur.
- Démarrer l'association des périphérique un par un.
- Si un ré-appairage n'a pas été nécessaire et que vos périphériques ne répondent pas; redémarrer quelques routeurs en les débranchant pendant quelques secondes.
Ré-appairage ou pas ?
En premier lieu, il faut savoir si on doit passer par une phase de ré-appairage de l'ensemble de nos périphériques zigbee : https://www.zigbee2mqtt.io/guide/faq/#what-does-and-does-not-require-repairing-of-all-devices
-
Changing the network key (
network_key
), Zigbee channel (channel
) or panID (pan_id
) inconfiguration.yaml
:- Pas de changement prévu à cet endroit. Je conserve la même instance de Zigbee2mqtt donc ras.
-
switching between adapters requires repairing
- Les deux coordinateurs utilisent le SOC CC2652P, donc ici aussi on est bon.
CONCLUSION : Pas de ré-appairage. Ouf! 😌
IEEE address
Du coup, là, on y coupe pas. On va devoir copier l'adresse IEEE de l'ancien coordinateur vers le nouveau. J'ai voulu me compliquer la tâche et réaliser l'opération via le réseau (ne pas avoir à brancher le ZLZB-06 en USB au PC).
Pour récupérer l'adresse IEEE du coordinateur actuel, on va dans l'interface Zibgee2mqtt : "Settings" -> "About" -> "Coordinator IEEE Address". Plus d'information ici : https://www.zigbee2mqtt.io/guide/adapters/flashing/copy_ieeaddr.html.
Pour la recopie de cette adresse sur le ZLB-06 j'ai passé pas mal de temps à trouver l'information ! Je vais vous la détailler ici car elle marche, ce sera le chapitre en annexe : the hard way.
Une mise à jour récente (découverte après mes recherches) du firmeware du SIMLIGHT SLZB-06 rends maintenant la chose triviale, ce sera le chapitre en annexe : the highway 🤘 !
On se lance
On en sait maintenant assez pour se lancer dans l'aventure. C'est parti pour suivre la recette.
1. Premièrement s'assurer que vous tournez sous la dernière version de Zigbee2MQTT.
- Rien de compliqué ici. Si vous utilisez comme moi le plugin Zigbee2MQTT dans HomeAssistant, vous avez la notif si une mise à jour est en attente.
2. Stopper Zigbee2MQTT
*3. Déterminer si la migration nécessite un ré-appairage vos périphériques Zigbee *
- Si un ré-appairage est nécessaire : supprimer
data/coordinator_backup.json
(s'il existe) etdata/database.db
- Si un ré-appairage n'est pas nécessaire : copiez l'adresse IEEE de l'ancien coordinateur vers le nouveau.
- On doit copier l'adresse IEEE et on a deux moyen de le faire : the hard way ou the highway 🤘 !
4. Mettre à jour le
serial
->port
dans votre fichierconfiguration.yaml
.
- L'interface web du SLZB-06 nous donne toutes les informations dans le menu : 'Z2M and ZHA'. Vous pouvez prendre la configuration et aller le copier dans la partie configuration du plugin Zigbee2MQTT (édition en mode YAML et remplacer tout le bloc serial par la configuration donnée par le SLZB-06).
5. Démarrer Zigbee2MQTT
- Si un ré-appairage a été nécessaire :
1. Débrancher électriquement tous les périphériques alimenté par le secteur.
2. Démarrer l'association des périphérique un par un.
Rien à faire ici.
- Si un ré-appairage n'a pas été nécessaire et que vos périphériques ne répondent pas; redémarrer quelques routeurs en les débranchant pendant quelques secondes.
De mon côté les périphériques Zigbee sont arrivés petit à petit. Il faut un peut de patience. De mon côté, j'ai pas de temps précis, ayant laissé le travail se faire la nuit. Le lendemain en soirée (pas eu le temps de regarder avant), tout était là.
Annexes
IEEE address - the hard way
Une partie de la solution fut trouvée dans une discutions sur le github du dépôt Zigbee2mqtt. Mais même avec cette information il m'a manqué une petite information capitale. On vas donc essayer d'aller un peu plus dans le détails ici.
- Télécharger Python
- Télécharger le firmware CC1352P2_CC2652P_other_coordinator_20230507.hex depuis https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Stack_3.x.0/bin
- Télécharger le script python pour flasher : https://github.com/JelmerT/cc2538-bsl Mon conseil ici est de créer un répertoire dans lequel déposer l'ensemble des fichiers télécharger pour ensuite y créer un environnement virtuel Python. En effet, on va devoir ajouter quelques modules au python de base, travailler avec un environnement virtuel permet de ne pas tout mélanger.
- Depuis le répertoire de travail, création de l'environnement virtuel et chargement de l'environnement
python -m venv
Scripts\activate.bat
- Une fois dans notre environnement virtuel, on vas installer nos dépendances :
pip install pyserial
pip install intelhex
pip install python-magic
- On passe le SLZB-06 en mode Zigbee Flash. (c'est l'info qu'il me manquait) !

- Et enfin on lance le flash (bien remplacer l'adresse IEEE par celle récupérée sur l'ancien coordinateur et l'adresse IP par l'IP du SLZB-06 à flasher).
`(Flash SLZB-06) C:\Flash SLZB-06>Scripts\python.exe cc2538-bsl.py -evw --ieee-address AA:AA:AA:AA:AA:AA:AA:AA -p socket://X.X.X.X:6638 ./CC1352P2_CC2652P_other_coordinator_20230507.hex`
`Opening port socket://X.X.X.X:6638, baud 500000`
`Reading data from ./CC1352P2_CC2652P_other_coordinator_20230507.hex`
`Your firmware looks like an Intel Hex file`
`Connecting to target...`
`CC1350 PG2.0 (7x7mm): 352KB Flash, 20KB SRAM, CCFG.BL_CONFIG at 0x00057FD8`
`Primary IEEE Address: BB:BB:BB:BB:BB:BB:BB:BB`
`Performing mass erase`
`Erasing all main bank flash sectors`
`Erase done`
`Writing 360448 bytes starting at address 0x00000000`
`Write 104 bytes at 0x00057F988`
`Write done`
`Verifying by comparing CRC32 calculations.`
`Verified (match: 0xc6786098)`
`Setting IEEE address to AA:AA:AA:AA:AA:AA:AA:AA`
`Writing 8 bytes starting at address 0x00057FC8`
`Write 8 bytes at 0x00057FC8`
`Set address done`
IEEE address - the highway 🤘
A partir de la version 2.3.6 du firmware du coordinateur, il est maintenant possible de lire et écrire l'adresse IEEE directement depuis l'interface du SLZB-06 !

La modification de l'adresse IEEE peut se faire dans le menu 'Z2M and ZHA' en bas de page, le bloc 'ADVANCED: Adapter IEEE address change'
