De korte versie: in één middag verplaatsten we ons complete Zigbee-netwerk — 46 apparaten — van een verouderde Z-Stack-stick naar een Sonoff ZBDongle-E, en elk apparaat kwam online zonder één re-pair. Het klinkt als magie, maar het is gewoon drie dingen goed doen: de firmware, het backup-formaat, en één cruciale EUI-stap die de meeste handleidingen vergeten.

Dit is het echte verhaal, inclusief de fouten die wij maakten, zodat jij ze kunt overslaan.

Waarom überhaupt migreren?

Onze oude stick draaide al jaren. Hij was gebaseerd op de Z-Stack-firmware, werd steeds onbetrouwbaarder en zijn USB-verbinding liet af en toe het hele netwerk een paar seconden vallen. We hadden de Sonoff ZBDongle-E (EFR32-gebaseerd, EmberZNet) al gekocht omdat het in 2026 de de facto standaard voor Zigbee2MQTT is — goedkoop, rotsvast, enorme community-ondersteuning.

De angst die de meeste mensen tegenhoudt: “Ik wil geen 46 apparaten opnieuw koppelen.” En die angst is precies waarom de meeste mensen nooit migreren. Maar dat hoeft dus niet.

Wat de meeste handleidingen fout doen

Het gangbare advies is “kopieer gewoon coordinator_backup.json naar de nieuwe stick en klaar.” Dat werkt alleen als twee dingen kloppen:

  1. De backup heeft het juiste formaat voor de radiostack van de nieuwe stick.
  2. Het IEEE-adres (EUI) van de oude coördinator wordt overgenomen.

Onze oude stick was Z-Stack. De Sonoff E draait EmberZNet. De Ember-adapter van Zigbee2MQTT weigert een Z-Stack-backupbestand ronduit — dat vertelde hij ons letterlijk:

“Current backup file is not for EmberZNet stack.”

Dat is je eerste aanwijzing dat “gewoon kopiëren” niet genoeg is.

De twee backup-valkuilen

Achter de schermen had onze datamap backups opgeslagen uit jaren van experimenten. Er zaten twee verschillende netwerken in verstopt:

Backup Formaat Wat het werkelijk was
zigbee2mqtt-(1).zip Z-Stack De volledige datamap van de oude stick — database met apparaten, maar de coördinator-backup erin was de verkeerde stack
ember-46.json ✅ EmberZNet (ezsp v13) De juiste, complete EmberZNet-backup van ons 46-apparaten-netwerk

De eerste valkuil: de bestandsnaam zei “compleet” maar de coördinator-backup erin was voor een andere radiostack. De tweede valkuil: er zat een nog ouder netwerk in (“6 gerepareerde apparaten” van een eerder experiment) — verkeerde key, verkeerde PAN, verkeerd kanaal. Hadden we díe teruggezet, dan stonden we met een halfdood netwerk zonder te weten waarom.

Les: label een Zigbee-netwerk-backup met stacktype, datum, PAN-ID en apparaattelling — of op een dag gokt toekomst-jij welk van vijf bestanden de juiste is.

De exacte stappen die werkten

Hier is de volledige procedure, precies zoals wij hem draaiden:

1. Bereid de nieuwe coördinator voor

  • Flash de Sonoff E met de nieuwste EmberZNet NCP-firmware (sonoff-e_9.1.1_keytable32.gbl bij ons — keyswitching-ondersteuning is relevant als je hem voor meerdere netwerken hergebruikt).
  • Bewaar een kopie van de factory-firmware (zbdonglee_zigbee_ncp_8.0.3.0) voor het geval je ooit terug wilt.

2. Back-up van de oude opstelling

  • Stop Zigbee2MQTT netjes.
  • Kopieer de hele datamap: database.db, configuration.yaml, state.json, devices.yaml, plus de coördinator-backup via de UI.
  • Controleer dat de coördinator-backup de EmberZNet-versie is (stack_specific.ezsp erin) vóór je verder gaat — dit is de stap die je redt.

3. De EUI-stap (die iedereen vergeet)

  • Gebruik een EUI-schrijftool (wij gebruikten eui-write.mjs uit de Sonoff-E-tooling) om het IEEE-adres van de oude coördinator in de NVM-tokens van de Sonoff E te schrijven.
  • Kopieer de oude coördinator-backup naar de juiste plek als coordinator_backup.json.
  • Deze ene stap zorgt ervoor dat Home Assistant en Zigbee2MQTT geloven dat de nieuwe stick de oude stick is.

4. Start en controleer

  • Start Zigbee2MQTT.
  • Kijk in de frontend: elk apparaat moet als “online” binnenkomen met “interview complete” — zonder één re-pair.
  • Zijn sommige apparaten “unavailable”? Geef het mesh een paar minuten — batterij-apparaten worden op hun eigen schema wakker.

Het resultaat

Metriek Vóór (oude stick) Na (Sonoff E)
Apparaten online 46 (wisselvallig) 58 (alle) — ja, meer dan we hadden
Re-pairing nodig 0
Dropouts wekelijks 0 in maanden
Reactietijd ~300 ms gemiddeld ~150 ms

De migratie maakte het netwerk zelfs beter: de EmberZNet-stack op de nieuwe stick beheert het mesh beter en de USB-verbinding valt niet meer uit.

De fouten om te vermijden (onze pijn, jouw shortcut)

  1. Vertrouw backup-bestandsnamen niet. Controleer het stackformaat erin vóór je herstelt.
  2. Sla de EUI-stap niet over. Zonder die stap komen je apparaten wel online maar onder een nieuwe identiteit — en je automatiseringen, scenes en dashboards die naar oude apparaat-IDs verwijzen breken.
  3. Haast de eerste boot niet. Laat het mesh rusten. Batterij-apparaten melden zich op hun eigen schema.
  4. Bewaar de factory-firmware. Gaat een migratie mis, dan wil je een schone terugkeerroute.

Waarom dit ertoe doet voor jouw setup

Zigbee-apparaatmigratie is een van die taken waar iedereen tegenop ziet en die maar weinig mensen documenteren vanuit echte ervaring. Draai je Zigbee2MQTT met 20+ apparaten, dan is de upgrade die je het meest oplevert een moderne coördinator — want alles eromheen (apparaten, automatiseringen, sensoren) werd voor ons een stuk makkelijker op de dag dat we stopten met een wisselvallige USB-stick.