Резервная копия объекта в AbromSoft
Контроллер может выйти из строя или клиент может попросить обновить оборудование. Если логика объекта собрана в AbromSoft, вся она хранится в нескольких текстовых файлах на контроллере. В этой статье мы разберём, что именно нужно сохранять, как быстро восстановить объект после сбоя и как перенести готовую настройку на другой контроллер.
Где AbromSoft хранит настройки объекта
Все данные лежат в одной папке на контроллере: /mnt/data/abromSoftware/abromLogic. Раздел /mnt/data на Wirenboard переживает обновление прошивки, поэтому при штатном обновлении контроллера настройки не теряются. Резервная копия нужна на случай, когда пропадает сам контроллер.
Внутри папки нам важны пять мест:
- config.yaml — все правила объекта: отопление, свет, кнопки, сцены, кондиционеры, оповещения, настройки часового пояса. Это главный файл, без него объекта нет.
- uiData.yaml — то, что видит пользователь в интерфейсе: названия устройств, комнаты, категории, скрытые и переупорядоченные элементы.
- scripts — папка со скриптами, если на объекте есть логика, написанная на JS.
- plugins и pluginData — установленные плагины и их правила, например для панелей OpenHASP.
- state — накопленные данные: например, показания счётчиков электроэнергии. Без этой папки объект заработает, но счётчики начнут с нуля.
Остальные папки рядом — история MQTT, служебные копии и диагностические дампы — для восстановления не нужны: AbromSoft создаст их заново.
Почему это удобнее, чем бэкап закрытой системы
Все файлы — обычный текст. Резервную копию можно открыть в любом редакторе и сразу увидеть, что настроено на объекте: какие датчики управляют какими реле, какая уставка у тёплого пола в ванной, какие каналы включает сцена «Уходим». Если резервных копий несколько, их можно сравнить построчно и найти, что поменялось между ними. Также вы можете загрузить файлы в чат любого ИИ и внести правки.
Быстрая копия правил из интерфейса
Для повседневной страховки хватает копии config.yaml, а её можно сделать прямо из браузера, без доступа к файлам контроллера:
- Откройте раздел «Правила».
- В меню страницы выберите «Редактор .yaml».
- Выделите весь текст в редакторе, скопируйте и сохраните в текстовый файл на компьютере или в облаке. В имя файла удобно добавить название объекта и дату.
Мы делаем такую копию перед каждой серьёзной правкой на объекте и при сдаче объекта клиенту. Это занимает полминуты, а откатиться к рабочей версии потом можно за минуту.
Полная копия объекта
Чтобы сохранить объект целиком, вместе с названиями, комнатами, плагинами и счётчиками, скопируйте всю папку /mnt/data/abromSoftware/abromLogic на компьютер. С Windows это удобно делать через WinSCP: подключитесь к контроллеру по SFTP с теми же логином и паролем, что и по SSH, перейдите в папку и перетащите её на свой диск.
Полную копию стоит сделать в трёх случаях: при сдаче объекта, перед обновлением ПО и перед большой переделкой, когда меняется много правил сразу.
Восстановление после сбоя
Если контроллер заменили или карту памяти пришлось перезаписать, порядок такой:
- Установите AbromSoft на контроллер обычным установочным скриптом.
- Скопируйте сохранённые файлы обратно в папку /mnt/data/abromSoftware/abromLogic с заменой.
- Перезапустите службу AbromSoft или перезагрузите контроллер.
После запуска AbromSoft прочитает config.yaml, создаст все виртуальные устройства и подпишется на датчики. Если на новом контроллере те же модули с теми же адресами, объект заработает сразу, вместе с названиями и комнатами в интерфейсе.
Если сохранена только копия правил из редактора, файлы трогать не нужно: откройте «Редактор .yaml» на свежей установке, вставьте сохранённый текст и нажмите «Сохранить». Правила применятся без перезапуска контроллера.
Если в файл закралась ошибка
Редактор проверяет текст ещё до сохранения: если сломан отступ или потерялось двоеточие, строка с ошибкой подсвечивается, а кнопка «Сохранить» становится неактивной. Если ошибка в самих данных, например текст вместо числа, AbromSoft отклонит файл и покажет номер строки и позицию.
В обоих случаях объект продолжает работать на прежних правилах: битый файл не применяется и не записывается на диск. Поэтому вставлять резервную копию в работающий объект безопасно — либо применится вся копия, либо ничего не изменится.
Перенос на другой контроллер
Самый выгодный сценарий — типовые объекты. Например, мы собрали и отладили щит для квартиры в новом ЖК, а через месяц заказали второй такой же. Вместо того чтобы заново настраивать отопление, свет и сцены, мы переносим файлы с первого объекта и меняем в них только то, что отличается.
Обычно отличаются адреса модулей. В правилах каналы записаны как устройство/канал, например wb-mr6c_23/K1, где 23 — Modbus-адрес модуля. Если на новом объекте у того же модуля адрес 45, в редакторе достаточно заменить wb-mr6c_23 на wb-mr6c_45 во всём файле. Узнать адреса модулей на новом контроллере проще всего по подсказкам в полях топиков или способом из статьи «Как найти неизвестный MQTT-топик за минуту».
Порядок переноса:
- Сохраните config.yaml со старого объекта.
- Откройте его в текстовом редакторе на компьютере и замените адреса модулей, если они отличаются. Заодно поправьте то, что относится к конкретному клиенту: токены Telegram-бота, адреса почты для оповещений, город в прогнозе погоды.
- На новом контроллере откройте «Редактор .yaml», вставьте исправленный текст и нажмите «Сохранить».
- Если на старом объекте были плагины, установите их на новом. Скрипты перенесите копированием папки scripts.
- Проверьте раздел «Правила»: правила, которые не нашли свои датчики, будут видны по статусу.
Файл uiData.yaml тоже можно перенести, если модули на новом объекте с теми же адресами. Если адреса поменялись, названия и комнаты привязаны к старым каналам, поэтому их проще расставить заново в интерфейсе.
Перенос части правил
Часто нужен не весь объект, а один удачный блок: например, логика вентиляции санузла или набор сцен для гостиной. Скопируйте нужные правила из конфига старого объекта и вставьте их в редактор нового, в раздел того же типа правил.
Есть и второй способ — окно «Спросить ИИ» в шапке интерфейса. На втором шаге в него вставляется готовый YAML, и по кнопке «Применить» правила добавляются к текущим, а не заменяют весь файл. Правило с новым именем добавится, правило с тем же именем обновится, остальные правила объекта не изменятся. Этот же способ подходит, когда фрагмент конфига прислал коллега или собрал ИИ-чат.
Еще никто не написал комментариев.