Page 1 of 1

Миграция существующей сети на Home Assistant

Posted: 13 Aug 2026 02:13
by Stalnoff
Всем здравствуйте!

Прискорбно, что компания zwave.me бросила своих теперь "бывших" клиентов не предоставив им (нам!) возможности миграции сети на другие устройства. Если у тебя 2-3 устройства, не страшно - добавь их в новую сеть и нет проблем - это не займет много времени. А если десятки устройств, то проблема: каждое сбрось, подключи к новой сети и восстанови все настройки, которые были. А до каждого из этих устройств еще и добраться нужно... В общем как в той песне "подруга подкинула проблем...", а точнее уже по США-ковски: "ничего личного, просто бизнес".

Постараюсь убрать этот недочет - сделаю, так сказать, "лебединую песню" за компанию zwave.me.

У меня получилось мигрировать с raZberry 7 Pro (которая на rpi4) на Home Assistant с контроллером ZWA-2. Только сеть Z-Wave - без автоматизаций. В принципе, предполагаю, инструкция подойдет для любого контроллера Z-Wave на Home Assistant подключенного через интеграцию Zwave JS с возможностью NVM backup.

Смысл простой: добавляем ZWA-2 вторичным в существующую сеть, делаем backup NVM (уже всей сети), редактируем его: заменяем старый primary controller z-way на ZWA-2 и загружаем обратно в ZWA-2. И главное: некорректным NVM нельзя "окирпичить" контроллер - reset сбросит его "в ноль".

Итак:

1. Сделать NVM backup ZWA-2 в состоянии primary controller — clean-primary.bin.
Он нужен, чтобы получить правильные данные ZWA-2 именно как первичного контроллера.

2. Добавить ZWA-2 в существующую сеть Z-Way как secondary controller. В zway есть соответствующая кнопка и в Zwave JS тоже.
Запомнить полученный им Node ID — SECONDARY_ID.

3. Сделать NVM backup ZWA-2 как secondary — working-secondary.bin.
В нём уже находится существующая сеть целиком: её Home ID, устройства, топология, старый primary и новый secondary ZWA-2.

4. Разобрать оба NVM через @zwave-js/nvmedit:

Code: Select all

npx.cmd -y @zwave-js/nvmedit nvm2json --in ".\clean-primary.bin" --out ".\clean-primary.json"
npx.cmd -y @zwave-js/nvmedit nvm2json --in ".\working-secondary.bin" --out ".\working-secondary.json"
5. Сделать копию working-secondary.json → target.json и отредактировать её.
В controller заменить на данные из clean-primary.json:
  • nodeId
  • sucLastIndex
  • controllerConfiguration
  • genericDeviceClass
  • specificDeviceClass
  • commandClasses
  • rfConfig.nodeIdType
  • reservedId
Не менять:
  • homeId
  • protocolVersion
  • applicationVersion
  • lastNodeId
  • staticControllerNodeId
  • остальные параметры rfConfig
maxNodeId поставить равным максимальному Node ID, оставшемуся после удаления SECONDARY_ID.
Запись primary в nodes заменить соответствующей записью из clean-primary.json, но neighbors оставить от старого primary из working-secondary.json.
Затем:
  • удалить nodes["SECONDARY_ID"];
  • удалить SECONDARY_ID из всех neighbors.
6. Собрать новый NVM:

Code: Select all

npx.cmd -y @zwave-js/nvmedit json2nvm --in ".\target.json" --out ".\target.bin" --protocolVersion 8.0.0
7. На всякий случай проверить собранный BIN: разобрать target.bin обратно в JSON и сравнить с target.json.

Code: Select all

npx.cmd -y @zwave-js/nvmedit nvm2json --in ".\target.bin" --out ".\target-check.json"
Данные должны остаться теми же. Исключения для использованной версии nvmedit:
  • protocolVersion изменится с 8.0.0 на 7.19.0;
  • applicationVersion — с 8.0.0 на 7.21.0;
  • applicationFileFormat исчезнет.
Это нормально.

8. Обесточить старый Z-Way-контроллер — два контроллера с одинаковыми Home ID и Node ID не должны одновременно работать в одной сети.

9. Восстановить target.bin на ZWA-2 и проверить, что он стал primary старой сети и устройства доступны.

10. Сделать Re-interview всех устройств.

11. Проверить Lifeline/Association Group 1. Если какие-то устройства при добавлении ZWA-2 как secondary добавили туда SECONDARY_ID, удалить его. Lifeline должен остаться на primary.

12. Запустить Rebuild routes.

Готово — старая сеть продолжает работать на ZWA-2 без исключения и повторного включения устройств.

Если что-то пошло не так: отключить ZWA-2 и снова подать питание на старый Z-Way-контроллер. Он не изменялся, поэтому сеть вернётся в исходное состояние.

В общем у меня получилось это сделать с первого раза и делал я это удаленно. Самое сложное было с п.8: shutdown нельзя - я же удаленно и не смогу его включить, если что пойдет не так, остановка z-way сервиса не обесточивает плату и она продолжает вещать. Помогла смена RF region на любую другую отличную от текущей - в моем случае RU поменял на IN: все устройства перестали видеть контроллер и он их. И быстро можно было вернуть назад.

Надеюсь кому-то поможет!