Mein ZigBee-Netzwerk der Produktivumgebung lief bisher noch mit einem CC2531-ZigBee-Stick. Der neue CC2652R-Stick von slaesh lag bereits seit einiger Zeit bereit und musste schon für einige Beiträge herhalten, wie im Beitrag „Zigbee-Nodes installieren„. Da mein ZigBee-Gerätepark immer größer wurde, wollte ich diesen gleich an den neuen Stick anlernen.
Ursprünglich war im Artikel beschrieben, wie man sein ZigBee 1.2-Netzwerk auf ein 3.0-Netzwerk migrieren konnte. ZigBee 3.0 nutzt jedoch erweiterte Sicherheitsmechanismen. Einer davon ist der Sicherheitsschlüssel, welcher ausschließlich beim Pairen ausgetauscht wird. Daher rate ich von einer Migration ab und empfehle den Neuaufbau des ZigBee-Netzwerks. Zudem sind nicht alle Einstellungen zwischen den ZigBee-Sticks CC2531 und CC2652* kompatibel.
Inhalt
Voraussetzungen
Backup der Geräte
Bevor Du etwas änderst, solltest Du ein CCU*-Backup erstellen.
Beachte, dass derzeit bei einem Recovery das RedMatic-AddOn und dessen Nodes, die Binär-Abhängigkeiten haben (ZigBee-Nodes), manuell wiederhergestellt werden müssen.
Die in Node-RED selbst installierten Nodes sowie die Geräte sind alle im Backup enthalten.
Deine ZigBee-Geräte-Datenbank kannst du zudem noch zusätzlich sichern. Dazu kopierst Du Dir die Datei dev.db
, welche sich in einem Unterordner im Pfad /usr/local/addons/redmatic/var/zigbee/
befindet, an einen anderen Ort (oder auch nach dev.db~
). Der Unterordner heißt immer unterschiedlich, es kann auch mehrere geben. Hier suchst Du den heraus, welcher am Neuesten ist. Bei mir heißt er bspw. 9989da0d.6489d8
, meine Geräte-DB finde ich also unter /usr/local/addons/redmatic/var/zigbee/9989da0d.6489d8/dev.db
.
Maskieren des Ports in CUxD
Mein neuer Stick meldet sich im System als USB-Device /dev/ttyUSB0
, der alte war unter /dev/ttyACME0
zu finden. Falls Du das CUxD-Addon einsetzt, muss das Device dort als Ausnahme definiert werden, damit das Addon es in Ruhe lässt. Anderenfalls kommt die Meldung, dass das Gerät bereits in Benutzung ist:
[zigbee-shepherd:zigbee herdsman] Error while opening serialport 'Error: Error Resource temporarily unavailable Cannot lock port'
Ablauf
ZigBee 1.2 zu 3.0
Für das Neuanlegen des ZigBee-Netzwerks muss man nicht alle Geräte ablernen. Du kannst sie einfach komplett entfernen:
- Stoppe das RedMatic-Addon.
- Logge dich per ssh, WinSCP oder ähnlich auf deiner CCU* ein und benenne die Geräte-Datenbank
dev.db
im Unterordner im Pfad/usr/local/addons/redmatic/var/zigbee/
um, bspw. nachdev.db~
. - Starte das RedMatic-Addon wieder.
- Vergebe im herdsman-Node eine neue PanID. Die PanID ist ein Hex-Wert (Ziffern
0-9
, Buchstabena-f
, bspw.c04b
) und sollte kleiner alsffff
sein. - Es sollten nun, bis auf den Coordinator, also Deinem neuen ZigBee-Stick, keine weiteren Geräte vorhanden sein. Damit kannst Du Dein Netzwerk neu anlegen.
ZigBee 3.0
Möchtest Du Deinen (defekten) ZigBee 3.0-Stick gegen einen anderen tauschen, so muss das ZigBee-Netzwerk nicht neu angelernt werden. Wenn Du die MAC-Adresse Deines alten Sticks auf den neuen überträgst, klappt der Tausch nahtlos. Die MAC-Adresse deines alten ZigBee-Sticks findest du in Deiner Gerätedatei dev.db
im Pfad /usr/local/addons/redmatic/var/zigbee/
in der ersten Zeile als ieeeAddr
beim Coordinator. In meinem Beispiel ist sie 0x00c040b00133700
:
{"id":1,"type":"Coordinator","ieeeAddr":"0x00c040b00133700","nwkAddr":0,
Die MAC-Adresse wird nur während des Aufspielens einer Firmware gesetzt, da erst damit der „non-volatile memory“ überschrieben wird. Zum Flashen eignet sich am Besten das Tool SmartRF Flash Programmer2 von TI, wo man die MAC-Adresse im Tab „MAC Address“ unter „Secondary address“ setzen kann.
Für den Slae.sh-Stick findest Du die Anleitung auf seiner Seite.
Anpassen der herdsman-Konfiguration
Danach änderst Du noch die Konfiguration für den „herdsman„-Node, also die ZigBee-Konfiguration in NodeRed. Wichtig ist, dass die channels, die panId sowie der networkKey nicht geändert werden, da ansonsten ein neues Netzwerk angelegt wird. Anzupassen sind
- ggf. der Pfad, unter dem der neue ZigBee-Stick zu finden ist,
- die Konfiguration für CC2531-LED, welche durch den Slae.sh-Stick nicht unterstützt wird sowie
- das Hardware-Handshake „rtscts“ – das unterscheidet sich je nach eingesetztem ZigBee-Stick: für den Slae.sh-Stick muss es
false
sein, für das SONOFF Zigbee 3.0 USB Dongletrue
Danach muss NodeRed restartet werden, damit die geänderte Konfiguration übernommen wird.
Troubleshooting
Es gibt einige ZigBee-Devices, die sich nach dem kurzzeitigen Wegfall ihres Routers nicht neu verbinden. Diese findet man, indem man sich die NetworkMap anschaut, welche man im herdsman-Node unter Devices findet. Kandidaten sind bei mir vor allem Aqara Fenstersensoren. Die müssen dann noch einmal kurz gepairt werden.
Fazit
Gerade das Eintragen der MAC-Adresse ist etwas aufwändiger. Außer bei der Migration kann das ZigBee-Netzwerk jedoch bestehen bleiben. Auch die NodeRed-Flows müssen nicht angepasst werden, nach dem Tausch melden sich die Geräte mit ihrer (unveränderten) ID wieder an.
Updates
- 05.02.2022: Überarbeitung der Seite: Migration von einem 1.2-Netzwerk wird nicht mehr empfohlen