--- title: t610 — развёртывание через HA-аддоны status: in-progress tags: - family - plan - homeautomation - t610 - haos - addons created: '2026-09-13' updated: '2026-09-13' related: - '[[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. [x] Advanced Mode — не понадобился для CLI (всё сделано через `ha apps`), понадобится позже для local add-ons 2. [x] **Mosquitto broker** (`core_mosquitto` v7.1.1) — установлен, `started`, порты **1883** (MQTT) + **1884** (WS) открыты, discovery отправлен в HA автоматически 3. [x] **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. [x] **File editor** (`core_configurator`) — установлен, `started` 6. [x] Репозиторий 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//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 ` (не `ha store repositories add`). **Рабочий рецепт смены опций аддона (bash+jq через SSH-аддон):** ```bash 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-устройства (после физического подключения) 8. [ ] Alex втыкает 3 USB в t610 (в фиксированные порты!) 9. [ ] Определить пути: `ls -la /dev/serial/by-id/`; `ha hardware info | grep -iE 'tty|1a86|serial'` 10. [ ] Составить карту «серийник → алиас» (ZONT/Vent/Zigbee) 11. [ ] Установить z2m-аддон, указать serial-порт, перенести `database.db` + `network_key` + `pan_id` (1:1, иначе переспаривание!) 12. [ ] Собрать local add-on **mbusd** (`/addons/mbusd`), порт 502, устройство ttyVent 13. [ ] Собрать local add-on **modbus-bridge** (`/addons/modbus-bridge`), перенести `modbus_ha_bridge.py` + `config.yml`, env `HA_TOKEN` (сгенерировать новый!) ### Этап 3 — перенос HA-конфига 14. [ ] Перенести `configuration.yaml`, `automations.yaml`, `scripts.yaml`, `secrets.yaml`, `www/` 15. [ ] Перенести `.storage/` (критично: `core.entity_registry`, `lovelace.home_plan`) — см. родительский план §5.6 16. [ ] Поправить `modbus.host` → `127.0.0.1` (mbusd теперь локальный) ### Этап 4 — проверка и отключение TrueNAS 17. [ ] Чек-лист из родительского плана §6 18. [ ] Caddy upstream → t610; GPON-редирект → t610 19. [ ] Остановить + отключить автозапуск на 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 ` / UI | | Пути `/mnt/data/...` | `/addon_configs//` и `/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//` (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