Files
obsidian-vault/family/plans/t610-addons-deployment.md
T

12 KiB
Raw Blame History

title, status, tags, created, updated, related
title status tags created updated related
t610 — развёртывание через HA-аддоны in-progress
family
plan
homeautomation
t610
haos
addons
2026-09-13 2026-09-13
family/plans/home-automation-migration-t610
family/how-to/home-automation

t610 — развёртывание через HA-аддоны

Статус: Этап 1 ВЫПОЛНЕН (2026-09-13). Дальше — Этап 2 (USB), заблокирован физическим подключением устройств. Родительский план: family/plans/home-automation-migration-t610 (Шаг 3 в нём заменяется на этот документ). Доступ к хосту, CLI и питфоллы: family/how-to/t610-access.

Контекст: почему аддоны, а не docker-compose 1:1

Изначально в родительском плане (Шаг 3, Вариант B) предполагалось перенести docker-compose.yml с TrueNAS 1:1. При проверке живого t610 выяснилось:

  • HA OS 18.2 внутри использует host docker 29.6.2 (overlayfs, journald) — docker есть, ha docker info подтверждает.
  • Но из SSH-аддона docker CLI не виден — аддон живёт в своём контейнере. Доступ к host docker только через Supervisor (ha docker) или через Portainer-аддон.
  • Поэтому штатный и наименее хрупкий путь — аддоны.

Решение Alex (2026-09-13): «Делай всё аддонами».

Состав аддонов

Сервис Slug Источник Статус
Mosquitto broker (MQTT) core_mosquitto Official (core) есть в сторе
Node-RED a0d7b954_nodered Community есть в сторе
Advanced SSH & Web Terminal a0d7b954_ssh Community есть в сторе (запасной путь)
Terminal & SSH core_ssh Official уже установлен и работает
Samba share (для доступа к файлам) core_samba Official есть в сторе
File editor core_configurator Official есть в сторе
Zigbee2MQTT ⚠️ В сторе НЕТ надо local add-on / community repo
mbusd ⚠️ В сторе НЕТ надо local add-on
modbus-bridge ⚠️ В сторе НЕТ (локальная сборка) надо local add-on

Про Zigbee2MQTT

В официальном сторе z2m нет (есть только deCONZ core_deconz и core_silabs_multiprotocol). Варианты:

  • A. Community-репозиторий z2m — у сообщества есть репо (https://github.com/zigbee2mqtt/hassio-zigbee2mqtt), добавляется как app repository, дальше штатная установка.
  • B. Local add-on — свой Dockerfile в /addons/zigbee2mqtt.

Решение: A (community repo) — меньше ручной работы, поддерживается сообществом, обновления через UI.

Про mbusd и modbus-bridge

В сторе нет и быть не может (кастомный код). Только local add-ons:

/addons/mbusd/          → Dockerfile + config
/addons/modbus-bridge/  → Dockerfile + modbus_ha_bridge.py + config.yml

Local add-ons требуют Advanced Mode в профиле HA (Settings → Add-ons появляются только с ним) + репозиторий «Local apps» уже подключён (проверено: addons_repositories содержит Local apps).

🔌 БЛОКЕР: USB-устройства не подключены к t610

Проверено 2026-09-13 на живом t610:

ls /dev/serial/by-id/   → No such file or directory
ls /dev/ttyUSB* /dev/ttyACM*  → No such file or directory

В ha hardware info из USB — только USB-контроллеры (ohci_hcd OHCI PCI host controller), никаких CH340 (1a86:7523) и Zigbee-координатора.

Что должно быть воткнуто в t610 (3 устройства):

Устройство USB-ID Куда идёт Использует
Zigbee-координатор Inswift ZBP-MG21 (ember, был /dev/ttyACM0) антенна zigbee2mqtt
CH340 #1 1a86:7523 (был → ttyZONT) RS-485 шина ZONT (Dining/Kids/Bedroom) modbus-bridge
CH340 #2 1a86:7523 (был → ttyVent) RS-485 шина вентиляции AT2 mbusd

Порядок работы из-за блокера:

  1. Ставим аддоны, которые не требуют USB: mosquitto, Node-RED, Samba, File editor. + добавляем community-репо z2m.
  2. Когда Alex воткнёт USB: определяем новые пути (ls /dev/serial/by-id/, ha hardware info), настраиваем проброс в аддонах.
  3. Поднимаем z2m (Zigbee), mbusd (вентиляция), modbus-bridge (ZONT).

План по шагам

Этап 1 — базовые аддона (не требуют USB) — ВЫПОЛНЕНО 2026-09-13

  1. Advanced Mode — не понадобился для CLI (всё сделано через ha apps), понадобится позже для local add-ons
  2. Mosquitto broker (core_mosquitto v7.1.1) — установлен, started, порты 1883 (MQTT) + 1884 (WS) открыты, discovery отправлен в HA автоматически
  3. Node-RED (a0d7b954_nodered v22.0.6) — установлен, started, порт 1880 открыт, уже подключился к HA (Connected to http://supervisor/core)
  4. Samba share (core_samba) — установлен, но stopped: требует задать password (по умолчанию null) → логин homeassistant. Задать в UI: Settings → Apps → Samba → Configuration
  5. File editor (core_configurator) — установлен, started
  6. Репозиторий Zigbee2MQTT добавлен: ha store add https://github.com/zigbee2mqtt/hassio-zigbee2mqtt → появился как Home Assistant App: Zigbee2MQTT (slug 45df7312)
  7. HA MQTT-интеграция на core-mosquitto — проверить/настроить после переноса конфига

Питфоллы, выявленные при установке:

  • ha apps НЕ имеет команды для изменения опций (только install/start/stop/restart/logs/info/update/uninstall). Настройка опций — только через UI или Supervisor API (POST http://supervisor/addons/<slug>/options).
  • Node-RED по умолчанию ssl: true → падает при старте без сертификата (init-nginx: command exited 1, state: error). Фикс: ssl: false через API (см. ниже).
  • API требует полный набор опций (схема валидирует все ключи) — нельзя послать только {"ssl": false}, будет Missing option 'certfile'. Надо взять текущие опции и поменять нужное.
  • В SSH-аддоне нет python3 (только bash/curl/jq/ha). Скрипты для t610 писать на bash+jq.
  • ha store add <url> (не ha store repositories add).

Рабочий рецепт смены опций аддона (bash+jq через SSH-аддон):

SLUG="a0d7b954_nodered"
API="http://supervisor/addons/${SLUG}"
AUTH="Authorization: Bearer ${SUPERVISOR_TOKEN}"
curl -s -H "${AUTH}" "${API}/info" | jq '.data.options | .ssl = false' > /tmp/o.json
jq -n --slurpfile o /tmp/o.json '{options: $o[0]}' > /tmp/post.json
curl -s -X POST -H "${AUTH}" -H "Content-Type: application/json" -d @/tmp/post.json "${API}/options"
ha apps restart "$SLUG"

Скрипты лежат локально: ~/tmp-t610/nr_set_ssl.sh.

Этап 2 — USB-устройства (после физического подключения)

  1. Alex втыкает 3 USB в t610 (в фиксированные порты!)
  2. Определить пути: ls -la /dev/serial/by-id/; ha hardware info | grep -iE 'tty|1a86|serial'
  3. Составить карту «серийник → алиас» (ZONT/Vent/Zigbee)
  4. Установить z2m-аддон, указать serial-порт, перенести database.db + network_key + pan_id (1:1, иначе переспаривание!)
  5. Собрать local add-on mbusd (/addons/mbusd), порт 502, устройство ttyVent
  6. Собрать local add-on modbus-bridge (/addons/modbus-bridge), перенести modbus_ha_bridge.py + config.yml, env HA_TOKEN (сгенерировать новый!)

Этап 3 — перенос HA-конфига

  1. Перенести configuration.yaml, automations.yaml, scripts.yaml, secrets.yaml, www/
  2. Перенести .storage/ (критично: core.entity_registry, lovelace.home_plan) — см. родительский план §5.6
  3. Поправить modbus.host127.0.0.1 (mbusd теперь локальный)

Этап 4 — проверка и отключение TrueNAS

  1. Чек-лист из родительского плана §6
  2. Caddy upstream → t610; GPON-редирект → t610
  3. Остановить + отключить автозапуск на TrueNAS (§7)

Отличия от родительского плана (что меняется)

Было (родительский план) Стало (этот план)
docker-compose 1:1 на HA OS HA-аддоны
udev-алиасы 99-tty-alias.rules на t610 не нужно — аддоны пробрасывают /dev/serial/by-id/... напрямую через свою конфигурацию
Скрипт ожидания tty + systemd не нужно — Supervisor сам ждёт устройство при старте аддона
Ручной docker compose up ha apps start <slug> / UI
Пути /mnt/data/... /addon_configs/<slug>/ и /share, /config

Плюс: проблема udev-гонки на t610 снимается — Supervisor управляет зависимостями и пробросом устройств. Это была самая опасная часть старого плана.

Открытые вопросы

  • Community-repo z2m: проверить, что он совместим с HA OS 18.2 / Core 2026.9.x
  • mbusd/modbus-bridge как local add-on: нужен ли проброс /dev/serial/by-id (в HA-аддонах устройства объявляются через devices: в config.yaml аддона — синтаксис Supervisor, не compose)
  • Куда переносить данные z2m: /addon_configs/<slug>/ (HA OS 12+ путь для app-конфигов)
  • Камера (§8 родительского плана) — не аддон, разбираться отдельно

Связанные заметки