13 KiB
title, status, tags, created, updated, related
| title | status | tags | created | updated | related | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| t610 — развёртывание через HA-аддоны | in-progress |
|
2026-09-13 | 2026-09-14 |
|
t610 — развёртывание через HA-аддоны
Статус: Этап 1 ВЫПОЛНЕН (2026-09-13). Этап 2 (USB) — РАЗБЛОКИРОВАН 2026-09-14: все 3 USB-устройства подключены, карта адресов зафиксирована. Идёт настройка аддонов z2m/mbusd/modbus-bridge. Родительский план: 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-устройства подключены (2026-09-14) — блокер снят
Все 3 устройства воткнуты и видны (карта by-id/by-path: family/how-to/t610-access §USB).
/dev/ttyUSB0 → CH340 #1 by-path: pci-0000:00:12.0-usb-0:3:1.0-port0 (порт 3)
/dev/ttyUSB1 → CH340 #2 by-path: pci-0000:00:12.0-usb-0:4:1.0-port0 (порт 4)
/dev/ttyACM0 → Zigbee Inswift ZBP-MG21 by-id: usb-Inswift_Zigbee_ZBP-MG21_535A000001-if00
⚠️ Два CH340 неразличимы по by-id (у обоих 1a86:7523, serial отсутствует) → привязка только по by-path / адресу шины, как на TrueNAS udev-правилами. Для аддонов надо решить, как пробрасывать (открытый вопрос ниже).
Порядок работы:
- Установить z2m-аддон (by-id уникален → безопасно), перенести
database.db+network_key+pan_id. - Собрать local add-on mbusd (порт 502, CH340 #2 / порт 4).
- Собрать local add-on modbus-bridge (CH340 #1 / порт 3), перенести
modbus_ha_bridge.py+config.yml, envHA_TOKEN(новый!).
План по шагам
Этап 1 — базовые аддона (не требуют USB) — ✅ ВЫПОЛНЕНО 2026-09-13
- Advanced Mode — не понадобился для CLI (всё сделано через
ha apps), понадобится позже для local add-ons - Mosquitto broker (
core_mosquittov7.1.1) — установлен,started, порты 1883 (MQTT) + 1884 (WS) открыты, discovery отправлен в HA автоматически - Node-RED (
a0d7b954_noderedv22.0.6) — установлен,started, порт 1880 открыт, уже подключился к HA (Connected to http://supervisor/core) - Samba share (
core_samba) — установлен, ноstopped: требует задатьpassword(по умолчаниюnull) → логинhomeassistant. Задать в UI: Settings → Apps → Samba → Configuration - File editor (
core_configurator) — установлен,started - Репозиторий Zigbee2MQTT добавлен:
ha store add https://github.com/zigbee2mqtt/hassio-zigbee2mqtt→ появился какHome Assistant App: Zigbee2MQTT(slug45df7312) - 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-устройства (все подключены 2026-09-14) 🟡 В РАБОТЕ
- Alex втыкает 3 USB в t610 — ВЫПОЛНЕНО 2026-09-14. Порты зафиксированы: CH340 #1 → USB1 порт 3, CH340 #2 → USB1 порт 4, Zigbee → USB3 порт 1. Устройства из портов не вынимать!
- Пути определены (
ls /dev/serial/by-id/,by-path, sysfs) — подробная карта: family/how-to/t610-access §USB - Карта составлена: ttyUSB0 = CH340 #1 (ZONT), ttyUSB1 = CH340 #2 (Vent), ttyACM0 = Zigbee
- ⚠️ РЕШИТЬ СПОСОБ ПРИВЯЗКИ ДЛЯ АДДОНОВ — оба CH340 имеют ОДИНАКОВЫЙ by-id → проброс по by-id сломается. Проверить, принимает ли Supervisor в
devices:путьby-path; иначе — фиксированные порты или local add-on с udev. Это текущий блокер. - Установить z2m-аддон, указать serial-порт (
usb-Inswift_Zigbee_ZBP-MG21_535A000001-if00), перенестиdatabase.db+network_key+pan_id(1:1, иначе переспаривание!) - Собрать local add-on mbusd (
/addons/mbusd), порт 502, устройство = CH340 #2 / порт 4 (by-pathpci-0000:00:12.0-usb-0:4:1.0-port0) - Собрать local add-on modbus-bridge (
/addons/modbus-bridge), перенестиmodbus_ha_bridge.py+config.yml, устройство = CH340 #1 / порт 3 (by-pathpci-0000:00:12.0-usb-0:3:1.0-port0), envHA_TOKEN(сгенерировать новый!)
Этап 3 — перенос HA-конфига
- Перенести
configuration.yaml,automations.yaml,scripts.yaml,secrets.yaml,www/ - Перенести
.storage/(критично:core.entity_registry,lovelace.home_plan) — см. родительский план §5.6 - Поправить
modbus.host→127.0.0.1(mbusd теперь локальный)
Этап 4 — проверка и отключение TrueNAS
- Чек-лист из родительского плана §6
- Caddy upstream → t610; GPON-редирект → t610
- Остановить + отключить автозапуск на 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 управляет зависимостями и пробросом устройств. Это была самая опасная часть старого плана.
Открытые вопросы
- ⚠️ ТЕКУЩИЙ БЛОКЕР — способ привязки CH340 в аддонах: оба CH340 =
1a86:7523без серийника → by-id идентичен. Проверить, принимает ли Supervisor вdevices:путь/dev/serial/by-path/...; если нет — фиксированные порты (уже зафиксированы физически) или local add-on со своим udev-симлинком. - Community-repo z2m: проверить, что он совместим с HA OS 18.2 / Core 2026.9.x
- mbusd/modbus-bridge как local add-on: синтаксис
devices:вconfig.yamlаддона (Supervisor, не compose) - Куда переносить данные z2m:
/addon_configs/<slug>/(HA OS 12+ путь для app-конфигов) - Камера (§8 родительского плана) — не аддон, разбираться отдельно
Связанные заметки
- family/plans/home-automation-migration-t610 — родительский план
- family/how-to/home-automation — карта slave ID, ZONT, регистры
- family/how-to/zont-modbus-bridge-udev-race-protection — старая проблема гонки udev (на аддонах неактуальна)
- family/how-to/truenas-infrastructure — текущий docker-стек TrueNAS