Миграция существующей сети на Home Assistant
Posted: 13 Aug 2026 02:13
Всем здравствуйте!
Прискорбно, что компания 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:
5. Сделать копию working-secondary.json → target.json и отредактировать её.
В controller заменить на данные из clean-primary.json:
Запись primary в nodes заменить соответствующей записью из clean-primary.json, но neighbors оставить от старого primary из working-secondary.json.
Затем:
7. На всякий случай проверить собранный BIN: разобрать target.bin обратно в JSON и сравнить с target.json.
Данные должны остаться теми же. Исключения для использованной версии nvmedit:
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: все устройства перестали видеть контроллер и он их. И быстро можно было вернуть назад.
Надеюсь кому-то поможет!
Прискорбно, что компания 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"
В controller заменить на данные из clean-primary.json:
- nodeId
- sucLastIndex
- controllerConfiguration
- genericDeviceClass
- specificDeviceClass
- commandClasses
- rfConfig.nodeIdType
- reservedId
- homeId
- protocolVersion
- applicationVersion
- lastNodeId
- staticControllerNodeId
- остальные параметры rfConfig
Запись primary в nodes заменить соответствующей записью из clean-primary.json, но neighbors оставить от старого primary из working-secondary.json.
Затем:
- удалить nodes["SECONDARY_ID"];
- удалить SECONDARY_ID из всех neighbors.
Code: Select all
npx.cmd -y @zwave-js/nvmedit json2nvm --in ".\target.json" --out ".\target.bin" --protocolVersion 8.0.0Code: Select all
npx.cmd -y @zwave-js/nvmedit nvm2json --in ".\target.bin" --out ".\target-check.json"- 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: все устройства перестали видеть контроллер и он их. И быстро можно было вернуть назад.
Надеюсь кому-то поможет!