Tuto: Migration coordinateur EZSP vers Zstack ( SonOff-E vers SonOff-P ) sans rappairage

Salut

Je poste ici un recap de la procédure qui permet de migrer sans aucun rappairage d’une clef zigbee EZSP vers une clef Zstack ( Texas Instrument ) . Dans mon cas une SonOff-E v2 vers SonOFF-P v1.
Pourquoi ? Parce que les chipset Texas Instrument sont mieux supportés que les EZSP avec Z2M.
Ayant plus de 50 appareils zigbee sur mon réseau, autant vous dire que tout réappairer serait une corvée sans nom. D’autant que pas mal de module sont dans les murs.

Les infos présentent ici résument la discussion sur ce thread: migrating coordinator from ZBDongle-E to ZBDongle-P · Koenkk/zigbee2mqtt · Discussion #16478 · GitHub

1/ Faire un backup de la clef EZSP
. Installer Zigpy: GitHub - zigpy/zigpy-cli: Command line interface for zigpy
. Stopper Z2M
. Sauvegarder la clef:

zigpy radio ezsp /dev/ttyUSB0 backup ezsp-backup.json

2/ Flasher la clef Zstack avec le dernier firmware et change son adresse IEEE par celle de l’autre clef EZSP
. flasher la nouvelle clef avec le dernier fw, en changeant l’adresse ( paramètre -i ), et le bon device ( param -p )
les clefs EZSP en general apparaissent sous l’adresse /dev/ttyACMx vs les Zstack sous /dev/ttyUSBx )

sudo ./cc2538-bsl.py -evw -i e0:xx:xx:xx:xx:xx:xx:xx -p /dev/ttyUSB0 --bootloader-sonoff-usb CC1352P2_CC2652P_launchpad_coordinator_20230507.hex

3/ Cloner les paramètres de la clef EZSP vers la clefs Zstack en utilisant zigpy:
. prendre note de l’adresse IEEE de la clef EZSP dans le fichier ezsp-backup.json
« coordinator_ieee »: « e0xxxxxxxxxxxx »,
. flasher la config sauvegardée en étape 1 dans la nouvelle clef ( notez que le parametre -v radio à changé pour znp à la place de ezsp )

sudo .local/bin/zigpy -v radio znp /dev/ttyUSB0 restore ezsp-backup.json

4/ sauvegarder la base de donnée de z2m dans le dossier de config et déplacer l’ancienne sauvegarde présente:

mkdir backup
mv database.db backup/
mv coordinator_backup.json backup/

5/ stopper z2m et retirer l’ancienne clef, insérer la nouvelle clef
. important, les 2 clefs ne doivent jamais etre alimenté en même temps vu qu’elles ont la meme adresse maintenant )

6/ couper tout vos routeurs présents sur le réseau ( pas besoin de virer les capteurs, juste les routeurs , c’est essentiel sinon vous ne pourrez pas démarrer z2m pour la prochaine étape ) . Sinon il faut mettre la clef sans antenne dans une cage de faraday, autant faire sauter le courant.

7/ editer configuration.yaml
. changer le param port par le bon chemin du nouveau device /dev/ttyUSB0 en ce qui me concerne, à la place de /dev/ttyACM0
. changer le param adapter de ezsp par zstack
. changer le baudrate si necessaire, 115200 en general.

8/ Démarrer Z2M une première fois, attendre que l’interface web soit accessible. Z2M va générer une nouvelle bdd database.db et sauvegarde coordinator_back.json

9/ Stopper z2m. Editer la base de donnée crée et ne garder que la première ligne ( {« id »:1,« type »:« Coordinator »,« ieeeAddr »: … )

Copier toutes les lignes suivantes de l’ancienne bdd dans la nouvelle

10/ Redémarrer z2M.
Vous pouvez rallumer vos routeurs.
Si tout s’est bien passé, vous avez un z2m fonctionnel. Tous vos devices se sont reconnectés à la nouvelle clef sans broncher.

Cela fonctionne aussi dans l’autre sens, ou d’une clef Conbee vers EZSP ou Zstack, etc en utilisant le bon param pour le dongle dans Zigpy

ezsp Silicon Labs EmberZNet Serial Protocol, i.e. EZSP (e.g., Home Assistant SkyConnect, ITead Sonoff ZBDongle-E, Elelabs)
deconz dresden elektronik deCONZ protocol (e.g., ConBee I/II, RaspBee I/II)
znp Texas Instruments (e.i., CC2530, CC2531, CC2538, CC2652, CC1352, e.g. ITead Sonoff ZBDongle-P)
zigate ZiGate Serial protocol (e.g., ZiGate USB-TTL, PiZiGate, ZiGate WiFi)
xbee Digi XBee ZB Coordinator Firmware protocol (e.g., Digi XBee Series 2, 2C, 3)