Как сохранить Zigbee‑сеть при обновлении или откате прошивки координатора
Чтобы не потерять Zigbee‑сеть при обновлении/откате прошивки, нужно заранее сохранить NV/NVRAM (энергонезависимые данные) координатора и файлы вашей системы (Zigbee2MQTT или ZHA). Без этого координатор после прошивки может «стать новым», и устройства придётся переподключать.
Что именно хранится в NV/NVRAM и почему это критично
В NV/NVRAM координатор держит параметры, без которых сеть не «узнаётся» устройствами:
- PAN ID и Extended PAN ID
- канал сети
- сетевой ключ (Network Key) и счётчики кадров
- таблицы безопасности и служебные данные стека
Если прошивка выполняется с полным стиранием памяти (erase), эти данные пропадают — и сеть фактически создаётся заново.
Откат прошивки (downgrade) рискованнее обновления: у разных веток прошивок может отличаться формат NV-данных. Делайте бэкап непосредственно перед любым откатом.
Универсальный чек‑лист перед прошивкой (обновление/откат)
- Остановите Zigbee2MQTT или ZHA (важно освободить порт и «заморозить» состояние).
- Сохраните бэкапы (см. ниже для вашей системы).
- Зафиксируйте параметры сети (на всякий случай):
channel,pan_id,ext_pan_id,network_key. - Прошейте координатор.
- Выполните восстановление и дайте сети время «ожить» (особенно батарейным устройствам).
Держите две точки восстановления: бэкап до прошивки (чтобы вернуться) и бэкап после прошивки (если откат окажется невозможен, вы не потеряете текущее рабочее состояние).
Zigbee2MQTT: бэкап и восстановление координатора (NV) и базы устройств
В Zigbee2MQTT сохранение сети обычно упирается в три файла:
data/coordinator_backup.json— бэкап данных координатора (эквивалент NV на уровне поддерживаемых стеков)data/database.db— база устройств/интервью/связейconfiguration.yaml— параметры подключения и сети
1) Сохранение перед прошивкой
Остановите сервис и скопируйте файлы в безопасное место:
sudo systemctl stop zigbee2mqtt
cd /opt/zigbee2mqtt/data
cp coordinator_backup.json coordinator_backup_$(date +%Y%m%d).json
cp database.db database_$(date +%Y%m%d).db
cp ../configuration.yaml configuration_$(date +%Y%m%d).yaml
2) Восстановление после прошивки
- Убедитесь, что Zigbee2MQTT остановлен.
- Верните файлы обратно с исходными именами:
data/coordinator_backup.jsondata/database.dbconfiguration.yaml(или хотя бы проверьте, что параметры сети не поменялись)
- Запустите Zigbee2MQTT.
Полноценное восстановление через coordinator_backup.json обычно работает для координаторов на стеках zStack (TI) и Ember. На других адаптерах восстановление может быть ограниченным — тогда заранее готовьтесь к частичному переподключению.
Home Assistant ZHA: бэкап/восстановление через интерфейс
Для ZHA самый безопасный путь — пользоваться встроенным бэкапом сети:
- сделайте/скачайте бэкап Zigbee‑сети в настройках ZHA (раздел сетевых параметров)
- после прошивки/замены координатора выполните восстановление/миграцию из этого бэкапа
Плюс подхода: всё делается в одном месте, без ручной работы с файлами контейнера/аддона.
Когда нужен «низкоуровневый» бэкап NV (TI ZNP)
Если вы используете координатор на TI ZNP и хотите максимально точную копию NV, можно читать/писать NVRAM через инструменты zigpy_znp:
python3 -m zigpy_znp.tools.nvram_read /dev/ttyUSB0 -o nv_backup.json
python3 -m zigpy_znp.tools.nvram_write /dev/ttyUSB0 -i nv_backup.json
Используйте это, если обычного восстановления недостаточно или вы делаете сложную миграцию/откат.
Что бэкапить в разных сценариях
| Сценарий | Минимум для сохранения сети | Комментарий |
|---|---|---|
| Zigbee2MQTT, прошивка координатора | coordinator_backup.json + database.db + configuration.yaml | Сохраняет сеть и список устройств |
| ZHA, прошивка/замена координатора | Бэкап сети из интерфейса ZHA | Потом используйте восстановление/миграцию |
| Откат прошивки | Всё выше + второй бэкап «после» | Помогает, если откат несовместим |
Частые ошибки
- Прошили координатор, не остановив Zigbee2MQTT/ZHA → повреждённый бэкап или «занят» порт.
- Восстановили
coordinator_backup.json, но изменилиnetwork_key/pan_id/ext_pan_id/channelв конфигурации → конфликт «конфигурация не совпадает с адаптером». - Ожидаете мгновенного появления всех устройств: батарейные могут выйти на связь только после пробуждения.
- Делаете откат на сильно отличающуюся версию прошивки → старый firmware может не принять новый формат NV.
FAQ
Нужно ли переподключать устройства после прошивки?
Нет, если NV/NVRAM (или coordinator backup) восстановлены корректно и параметры сети не изменились.
Почему часть устройств «пропала» сразу после восстановления?
Часто это норма: сначала поднимаются роутеры (питаемые от сети), затем батарейные. Дайте сети время; при необходимости перезапитайте роутеры.
Можно ли восстановить сеть, если нет coordinator_backup.json?
Иногда удаётся частично (по сохранённому database.db и тем же ключам/параметрам), но чаще это заканчивается пересозданием сети и переподключением устройств.
Что важнее: database.db или coordinator_backup.json?
Для «узнавания» сети устройствами критичнее данные координатора (NV/backup). Для сохранения имён, связей и метаданных в Zigbee2MQTT важна database.db. Лучше хранить оба.