[2026-09-14] eagle: family/how-to/home-automation.md family/how-to/t610-access.md family/plans/t610-addons-deployment.md

This commit is contained in:
Alexey Martemyanov
2026-09-14 08:41:27 +06:00
parent d2d4d526db
commit 1243c40ec3
3 changed files with 82 additions and 7 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ related: ["[[family/how-to/router-bishkek-asus]]", "[[family/plans/home-automati
> ⚠️ **ПЕРЕНОС ИДЁТ (начат 2026-09-12):** весь стек домашней автоматизации (HA, zigbee2mqtt, nodered, mosquitto, mbusd, modbus-bridge) переносится с TrueNAS на **HP t610** (HA OS). План со всеми путями/шагами и прогрессом: [[family/plans/home-automation-migration-t610]], детали развёртывания: [[family/plans/t610-addons-deployment]].
>
> **Статус на 2026-09-14:** ✅ на t610 уже работают HA Core, mosquitto (логин `zont`), Node-RED и **zigbee2mqtt (16 Zigbee-устройств, база перенесена 1:1)**. ⏳ Осталось: mbusd (шина вентиляции) и modbus-bridge (снифф 485-датчиков для ZONT) — пока живут на TrueNAS. **ZONT ещё НЕ перенаправлен** на MQTT t610 — редирект GPON-роутера и `modbus.host` в HA-конфиге пока смотрят на TrueNAS.
> **Статус на 2026-09-14:** ✅ на t610 работают HA Core, mosquitto (логин `zont`), Node-RED, **zigbee2mqtt (16 Zigbee-устройств, база перенесена 1:1)**, **mbusd (порт 502, шина вентиляции)** и **modbus-bridge (снифф 485-датчиков, ждёт `ha_token`+MQTT-пароль)**. ⏳ Осталось: Этап 3 — перенос HA-конфига (`configuration.yaml`, `.storage/core.entity_registry` и т.д.), затем Этап 4 — переключение трафика. **ZONT ещё НЕ перенаправлен** на MQTT t610 — редирект GPON-роутера и `modbus.host` в HA-конфиге пока смотрят на TrueNAS. Подробности: [[family/plans/t610-addons-deployment]].
>
> Карты Slave ID и регистров ниже **остаются в силе** — оборудование и адреса Modbus не меняются.
+42
View File
@@ -4,6 +4,8 @@
> План переноса: [[family/plans/home-automation-migration-t610]]
> Развёртывание сервисов: [[family/plans/t610-addons-deployment]]
> 🟡 **Состояние на 2026-09-14:** z2m, mbusd, modbus-bridge развёрнуты аддонами (см. §«Установленные аддоны»). **Незакрытый пункт:** modbus-bridge ждёт `ha_token` (long-lived token из HA UI) + `mqtt_password` — без них `MQTT connection failed code 5` и HA poller выключен. Далее — Этап 3 (перенос HA-конфига).
## Основное
| Параметр | Значение |
@@ -201,10 +203,50 @@ ZONT (modbus-bridge): /dev/serial/by-path/pci-0000:00:12.0-usb-0:3:1.0-por
| Node-RED | `a0d7b954_nodered` | 22.0.6 | ✅ started | 1880 |
| File editor | `core_configurator` | — | ✅ started | web UI |
| **Zigbee2MQTT** | `45df7312_zigbee2mqtt` | 2.14.1-1 | ✅ **started (16 устройств)** | ingress 8099 |
| **mbusd** | `local_mbusd` | 1.0.0 | ✅ **started** | 502 (Modbus TCP) |
| **modbus-bridge** | `local_modbus-bridge` | 1.0.0 | ✅ started — ⏳ ждёт `ha_token`/`mqtt_password` | sniffer шины ZONT |
| Samba share | `core_samba` | — | ⏸️ stopped (нужен пароль) | — |
Репозитории аддонов: официальный + **Zigbee2MQTT** (`https://github.com/zigbee2mqtt/hassio-zigbee2mqtt`) + Local apps.
## Как собрать local add-on на HA OS (рецепт + питфоллы, 2026-09-14)
Local add-ons (`/addons/<slug>/`) нужны, когда сервиса нет в сторе и нет community-репо.
Собраны так: **mbusd** (`local_mbusd`) и **modbus-bridge** (`local_modbus-bridge`).
Готовые исходники лежат и на t610 (`/addons/…`), и локально на Mac (`~/tmp-t610/addons/…`).
**Минимальная структура аддона:**
```
/addons/<slug>/
config.yaml ← манифест Supervisor (name, version, slug, arch, options, schema, uart, …)
Dockerfile
run.sh ← читает /data/options.json, готовит конфиг сервиса, exec сервиса
build.yaml ← ТОЛЬКО если базовый образ задаётся через ${BUILD_FROM} (см. питфолл 1)
```
**Жизненный цикл:**
```bash
ha store reload # Supervisor подхватывает /addons/* → local_<slug> в сторе
ha apps install local_<slug> # собирает образ (docker buildx) и ставит
ha apps start local_<slug>
ha apps logs local_<slug>
# при правке Dockerfile/манифеста:
ha apps uninstall local_<slug> && ha store reload && ha apps install local_<slug>
```
Настройка опций после установки — через UI или Supervisor API (`POST http://supervisor/addons/<slug>/options`, полный набор опций).
Диагностика провала сборки: **`ha supervisor logs | tail -60`** — там полный вывод docker build.
**⚠️ Питфоллы (все ловились на живом t610):**
1. **`${BUILD_FROM}` пустой** → `base name (${BUILD_FROM}) should not be blank`. Либо добавить `build.yaml` c `build_from: {amd64: <image>, aarch64: <image>}`, либо **взять готовый образ напрямую** (`FROM 3cky/mbusd:latest`) — тогда `build.yaml` не нужен.
2. **Supervisor рекурсивно парсит ВСЕ `*.yml`/`*.yaml` в папке аддона** как манифесты → служебный шаблон конфига даёт `Invalid app config!` и ломает загрузку. Фикс: держать шаблон с расширением **`.tmpl`** (например `data/config.template.tmpl`), переименовывать в `.yml` только внутри контейнера при сборке.
3. **`ENTRYPOINT` базового образа перебивает `CMD`** → контейнер запускал бинарь напрямую, минуя `run.sh` (`mbusd: can't read config file /etc/mbusd.conf`). Фикс: в Dockerfile явно **`ENTRYPOINT []`** + `CMD ["/bin/bash","/run.sh"]`.
4. **Пакета может не быть в репозиториях Alpine** (`apk add mbusd``no such package`) — тогда только готовый образ из Docker Hub или сборка из исходников.
5. **Сборка идёт через `docker buildx` на хосте**, тянет базовый образ из интернета, занимает несколько минут.
6. **`uart: true`** в манифесте обязателен для доступа к `/dev/serial/by-path/…` (иначе аддон не увидит CH340/Zigbee). Для modbus-bridge дополнительно `host_network: true`.
7. В HA UI local add-ons требуют **Advanced Mode** в профиле (Settings → Apps).
> 📌 `<slug>` в URL аддона = `local_<имя папки>`. Опции из UI кладутся в `/data/options.json` внутри контейнера — читать через `jq`.
> 📌 z2m: `data_path` = **`/config/zigbee2mqtt`** (внутри HA-конфига, НЕ `/addon_configs/`). Там `database.db`, `configuration.yaml`, `coordinator_backup.json`, `log/`. Данные перенесены 1:1 с TrueNAS — подробности и питфоллы: [[family/plans/t610-addons-deployment]] §«z2m на t610 (ВЫПОЛНЕНО)».
> 📌 В HA 2026.x аддоны в UI называются **Settings → Apps** (не «Add-ons»). Пункта «Add-ons» в меню больше нет.