> ⚠️ **ПЕРЕНОС НАЧАТ (2026-09-12):** весь стек домашней автоматизации (HA, zigbee2mqtt, nodered, mosquitto, mbusd, modbus-bridge) переносится с TrueNAS на **HP t610** (HA OS). План со всеми путями/шагами и прогрессом: [[family/plans/home-automation-migration-t610]]. Карты Slave ID и регистров ниже **остаются в силе** — оборудование и адреса Modbus не меняются.
> ⚠️ **ПЕРЕНОС ИДЁТ (начат 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.
>
> Карты Slave ID и регистров ниже **остаются в силе** — оборудование и адреса Modbus не меняются.
> ✅ **Плюс аддонов:** старая проблема гонки udev ([[family/how-to/zont-modbus-bridge-udev-race-protection]]) на t610 **неактуальна** — Supervisor сам ждёт устройство при старте аддона, скрипты ожидания tty не нужны.
> ✅ **Плюс аддонов:** старая проблема гонки udev ([[family/how-to/zont-modbus-bridge-udev-race-protection]]) на t610 **неактуальна** — Supervisor сам ждёт устройство при старте аддона, скрипты ожидания tty не нужны.
Репозитории аддонов: официальный + **Zigbee2MQTT** (`https://github.com/zigbee2mqtt/hassio-zigbee2mqtt`) + Local apps.
> 📌 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» в меню больше нет.
> 📌 В HA 2026.x аддоны в UI называются **Settings → Apps** (не «Add-ons»). Пункта «Add-ons» в меню больше нет.
> **Статус: В ПРОЦЕССЕ (Этап 1 — аддоны, ВЫПОЛНЕН. Этап 2a — USB подключены 2026-09-14, способ привязки CH340 РЕШЁН; следующий шаг — z2m/mbusd/modbus-bridge).**
> **Статус: В ПРОЦЕССЕ. Этап 1 (аддоны) ВЫПОЛНЕН. Этап 2 (USB + Zigbee) — ✅ z2m РАБОТАЕТ (16 устройств). Следующий шаг — mbusd + modbus-bridge (local add-ons), затем Этап 3 (перенос HA-конфига).**
> Цель: убрать всю домашнюю автоматизацию с TrueNAS (он перегружен — 17/21 ГБ RAM) на выделенный HP t610, с бэкапом конфигов на TrueNAS и в git.
> Цель: убрать всю домашнюю автоматизацию с TrueNAS (он перегружен — 17/21 ГБ RAM) на выделенный HP t610, с бэкапом конфигов на TrueNAS и в git.
>
>
> **Прогресс 2026-09-14 — Zigbee2MQTT ПЕРЕЕХАЛ И РАБОТАЕТ:**
> - ✅ **z2m-аддон `45df7312_zigbee2mqtt` v2.14.1-1 установлен и работает.** База (`database.db`) + `network_key`/`pan_id`/`ext_pan_id`/`channel: 11` перенесены с TrueNAS 1:1 → **16 устройств на месте, переспаривание не потребовалось.** Координатор EmberZNet 7.4.5, MQTT на `core-mosquitto`. Детали и питфоллы: [[family/plans/t610-addons-deployment]] §«z2m на t610 (ВЫПОЛНЕНО)».
> - ✅ **Логин `zont` добавлен в mosquitto** (тот же пароль, что на TrueNAS) — HA-интеграция и ZONT работают по старым креденшелам.
> - ⏭️ Следующий шаг: **mbusd** (CH340 порт 4) и **modbus-bridge** (CH340 порт 3, новый `HA_TOKEN`) как local add-ons → Этап 3 (перенос HA-конфига + `.storage/`).
>
> **Прогресс 2026-09-13 — 🎉 t610 запущен и в сети:**
> **Прогресс 2026-09-13 — 🎉 t610 запущен и в сети:**
> - ✅ **HA OS 18.2 записана на диск, t610 загрузился и работает.** IP **`192.168.2.176`** (DHCP-имя `homeassistant`). Web UI: **`http://192.168.2.176`** (⚠️ порт **80**, не 8123).
> - ✅ **HA OS 18.2 записана на диск, t610 загрузился и работает.** IP **`192.168.2.176`** (DHCP-имя `homeassistant`). Web UI: **`http://192.168.2.176`** (⚠️ порт **80**, не 8123).
> - ✅ HA Core 2026.9.2, Supervisor 2026.09.0, OS 18.2. Диск: 228.5 ГБ, занято 5 ГБ.
> - ✅ HA Core 2026.9.2, Supervisor 2026.09.0, OS 18.2. Диск: 228.5 ГБ, занято 5 ГБ.
> **Статус: Этап 1 ВЫПОЛНЕН (2026-09-13). Этап 2 (USB) — РАЗБЛОКИРОВАН 2026-09-14: все 3 USB-устройства подключены, карта адресов зафиксирована, способ привязки РЕШЁН (by-path + `uart: true`). Следующий шаг — установка z2m-аддона (шаг 12).**
> **Статус: Этап 1 ВЫПОЛНЕН (2026-09-13). Этап 2 в работе: все 3 USB подключены (2026-09-14), привязка решена (by-path + `uart: true`), ✅ z2m-аддон УСТАНОВЛЕН И РАБОТАЕТ (16 устройств). Следующий шаг — local add-on mbusd (шаг 13).**
> Родительский план: [[family/plans/home-automation-migration-t610]] (Шаг 3 в нём заменяется на этот документ).
> Родительский план: [[family/plans/home-automation-migration-t610]] (Шаг 3 в нём заменяется на этот документ).
> Доступ к хосту, CLI и питфоллы: [[family/how-to/t610-access]].
> Доступ к хосту, CLI и питфоллы: [[family/how-to/t610-access]].
@@ -47,15 +47,15 @@ related:
| Сервис | Slug | Источник | Статус |
| Сервис | Slug | Источник | Статус |
|--------|------|----------|--------|
|--------|------|----------|--------|
| Mosquitto broker (MQTT) | `core_mosquitto` | Official (core) | ✅ есть в сторе |
| **Zigbee2MQTT** | — | ⚠️**В сторе НЕТ** | ❌ надо local add-on / community repo |
| **Zigbee2MQTT** | `45df7312_zigbee2mqtt` | Community repo | ✅**установлен, работает — 16 устройств** |
| **mbusd** | — | ⚠️ **В сторе НЕТ** | ❌ надо local add-on |
| **mbusd** | — | ⚠️ **нет в сторе** | ❌ local add-on |
| **modbus-bridge** | — | ⚠️ **В сторе НЕТ** (локальная сборка) | ❌ надо local add-on |
| **modbus-bridge** | — | ⚠️ **нет в сторе** (локальная сборка) | ❌ local add-on |
### Про Zigbee2MQTT
### Про Zigbee2MQTT
В официальном сторе z2m нет (есть только deCONZ `core_deconz` и `core_silabs_multiprotocol`).
В официальном сторе z2m нет (есть только deCONZ `core_deconz` и `core_silabs_multiprotocol`).
@@ -63,7 +63,7 @@ related:
- **A. Community-репозиторий z2m** — у сообщества есть репо (`https://github.com/zigbee2mqtt/hassio-zigbee2mqtt`), добавляется как app repository, дальше штатная установка.
- **A. Community-репозиторий z2m** — у сообщества есть репо (`https://github.com/zigbee2mqtt/hassio-zigbee2mqtt`), добавляется как app repository, дальше штатная установка.
- **B. Local add-on** — свой Dockerfile в `/addons/zigbee2mqtt`.
- **B. Local add-on** — свой Dockerfile в `/addons/zigbee2mqtt`.
**Решение: A (community repo)** — меньше ручной работы, поддерживается сообществом, обновления через UI.
**Решение: A (community repo)** — меньше ручной работы, поддерживается сообществом, обновления через UI. ✅ Реализовано 2026-09-14.
### Про mbusd и modbus-bridge
### Про mbusd и modbus-bridge
В сторе нет и быть не может (кастомный код). Только **local add-ons**:
В сторе нет и быть не может (кастомный код). Только **local add-ons**:
Local add-ons требуют **Advanced Mode** в профиле HA (Settings → Add-ons появляются только с ним) + репозиторий «Local apps» уже подключён (проверено: `addons_repositories` содержит `Local apps`).
Local add-ons требуют **Advanced Mode** в профиле HA (Settings → Apps появляются только с ним) + репозиторий «Local apps» уже подключён (проверено: `addons_repositories` содержит `Local apps`).
## ✅ USB-устройства подключены (2026-09-14) — блокер снят
## ✅ USB-устройства подключены (2026-09-14) — блокер снят
@@ -87,12 +87,12 @@ Local add-ons требуют **Advanced Mode** в профиле HA (Settings
### 🔑 РЕШЕНИЕ: привязка по `by-path` вместо udev-алиасов
### 🔑 РЕШЕНИЕ: привязка по `by-path` вместо udev-алиасов
Проверено на живом t610 (2026-09-14): **udev-алиасы (`ttyZONT`/`ttyVent`) на HA OS не нужны и сделать их «как на TrueNAS» нельзя** — SSH-аддон это Alpine-контейнер, у него нет `/etc/udev/rules.d` и нет `udevadm`. Хостовый доступ = только debug-SSH 22222, который на t610 выключен и включается лишь флешкой с `authorized_keys` (по сети — никак: `ha host` без ssh-команд, Supervisor API `/host/services/ssh` → 403, роль аддона `manager`).
Проверено на живом t610 (2026-09-14): **udev-алиасы (`ttyZONT`/`ttyVent`) на HA OS не нужны и сделать их «как на TrueNAS» нельзя** — SSH-аддон это Alpine-контейнер, у него нет `/etc/udev/rules.d` и нет `udevadm`. Хостовый доступ = только debug-SSH 22222, который на t610 выключен и включается лишь флешкой с ключом в разделе `CONFIG` (по сети — никак: `ha host` без ssh-команд, Supervisor API `/host/services/ssh` → 403, роль аддона `manager`).
**Рабочая схема — штатный механизм Supervisor: `uart: true`.**
**Рабочая схема — штатный механизм Supervisor: `uart: true`.**
-В`config.yaml` (или `config.json`) аддона флаг **`uart: true`** даёт контейнеру доступ ко **всем** serial-устройствам хоста — вместе с симлинками `/dev/serial/by-id/`**и**`/dev/serial/by-path/`.
-В`config.yaml` (или `config.json`) аддона флаг **`uart: true`** даёт контейнеру доступ ко **всем** serial-устройствам хоста — вместе с симлинками `/dev/serial/by-id/`**и**`/dev/serial/by-path/`.
- Подтверждено: `core_ssh` имеет `uart: true` → из него виден весь `/dev/serial/by-path/` (см. таблицу выше). z2m-аддон тоже имеет `uart: true`.
- Подтверждено: `core_ssh` имеет `uart: true` → из него виден весь `/dev/serial/by-path/`. z2m-аддон тоже имеет `uart: true`.
- **`devices:` в конфиг аддона прописывать НЕ надо** — при `uart: true` проброс serial автоматический.
- **`devices:` в конфиг аддона прописывать НЕ надо** — при `uart: true` проброс serial автоматический.
> ⚠️ **by-path привязан к физическому порту.** CH340 #1 обязан остаться в порту 3, CH340 #2 — в порту 4. Если поменять — пути поедут. Порты зафиксированы (проверено).
> ⚠️ **by-path привязан к физическому порту.** CH340 #1 обязан остаться в порту 3, CH340 #2 — в порту 4. Если поменять — пути поедут. Порты зафиксированы (проверено).
**Порядок работы:**
### ✅ z2m на t610 — ВЫПОЛНЕНО (2026-09-14)
1. Установить z2m-аддон (by-id/by-path уникальны для Zigbee) → настроить serial → перенести `database.db` + `network_key` + `pan_id` (иначе переспаривание!).
2. Собрать local add-on **mbusd** (порт 502, CH340 #2 / порт 4).
**Что сделано:**
3. Собрать local add-on **modbus-bridge** (CH340 #1 / порт 3), перенести `modbus_ha_bridge.py` +`config.yml`, env `HA_TOKEN` (новый!).
1.**Бэкап с TrueNAS** → Mac `~/tmp-t610/z2m-backup-20260914/` (`database.db`,`configuration.yaml`, `state.json`, `coordinator_backup.json`). Источник на TrueNAS: `/mnt/RED_2TB/docker/zigbee2mqtt/`.
2. Установлен аддон `45df7312_zigbee2mqtt` v**2.14.1-1** (community repo). Манифест содержит **`uart: true`** → доступ ко всем serial, `devices:` не нужен.
3.**Mosquitto**: добавлен логин `zont` (тот же пароль, что на TrueNAS) через Supervisor API → `POST /addons/core_mosquitto/options` → `ha apps restart core_mosquitto`. Нужен, чтобы HA-интеграция и ZONT продолжили работать по старым креденшелам.
4.**Опции z2m** (Supervisor API `POST /addons/45df7312_zigbee2mqtt/options`):
mqtt:{"server":"mqtt://core-mosquitto:1883","user":"zont","password":"<как на TrueNAS>"}
```
5.**База перенесена 1:1.** ⚠️ `data_path` аддона = **`/config/zigbee2mqtt`** — внутри HA-конфига, НЕ `/addon_configs/...`. Создана `/config/zigbee2mqtt/`, залиты `database.db` + `configuration.yaml` (тот же `network_key`/`pan_id`/`ext_pan_id`/`channel: 11`, но serial → by-id, MQTT → core-mosquitto).
✅ **16 устройств на месте, переспаривание НЕ потребовалось.** (Tuya: модули реле, диммеры, розетки, датчики t°/влажности, протечки, радар присутствия, светильник.)
**Питфоллы z2m-переноса:**
- **Пароль MQTT содержит `$`** (`mqtt1z3$`) → при передаче через `sed`/интерполяцию в шелле ломается экранирование, скрипт падает с `unmatched '|'`. Надёжный путь: файл `configuration.yaml` готовить **локально**, заливать копированием файла, значения с `$` не подставлять в bash-строки. Для Supervisor API — JSON собирать через `jq`, а не конкатенацией.
- Supervisor API требует **полный** набор опций (схема валидирует все ключи) — брать текущие и менять нужное.
- Пароль в выводе `ha`/API маскируется как `***` — это нормально, значение применяется.
-`uart: true` = автоматический проброс всех serial (by-id + by-path). `devices:` в конфиг аддона прописывать не надо.
-В SSH-аддоне **нет python3**, и он неустойчив к сложному экранированию строк — готовые конфиги заливать файлом, а не генерировать на хосте.
11. [x] **СПОСОБ ПРИВЯЗКИ РЕШЁН 2026-09-14** — привязка по **`by-path`**, никаких udev-алиасов. Механизм: флаг `uart: true` в манифесте аддона даёт доступ ко **всем** serial включая `/dev/serial/by-path/` (проверено на живом t610: `core_ssh` uart:true видит все by-path; z2m тоже uart:true). `devices:` прописывать не надо. Подробности: [[family/how-to/t610-access]] §USB. **Блокер снят.**
11. [x] **СПОСОБ ПРИВЯЗКИ РЕШЁН 2026-09-14** — привязка по **`by-path`**, никаких udev-алиасов. Механизм: флаг `uart: true` в манифесте аддона даёт доступ ко **всем** serial включая `/dev/serial/by-path/` (проверено на живом t610: `core_ssh` uart:true видит все by-path; z2m тоже uart:true). `devices:` прописывать не надо. Подробности: [[family/how-to/t610-access]] §USB. **Блокер снят.**
12. [] Установить z2m-аддон, указать serial-порт (`usb-Inswift_Zigbee_ZBP-MG21_535A000001-if00` или by-path `pci-0000:04:00.0-usb-0:1:1.0`), перенести `database.db` + `network_key` + `pan_id` (1:1, иначе переспаривание!)
12. [x] ✅ **z2m-аддон УСТАНОВЛЕН И РАБОТАЕТ (2026-09-14)** — аддон `45df7312_zigbee2mqtt` v2.14.1-1, serial по by-id, база перенесена 1:1, **16 устройств на месте, переспаривание не потребовалось.** Подробности — §«z2m на t610 (ВЫПОЛНЕНО)» выше.
13. [ ] Собрать local add-on **mbusd** (`/addons/mbusd`), порт 502, устройство = CH340 #2 / порт 4 (by-path `pci-0000:00:12.0-usb-0:4:1.0-port0`)
13. [ ] Собрать local add-on **mbusd** (`/addons/mbusd`), порт 502, устройство = CH340 #2 / порт 4 (by-path `pci-0000:00:12.0-usb-0:4:1.0-port0`)
14. [ ] Собрать local add-on **modbus-bridge** (`/addons/modbus-bridge`), перенести `modbus_ha_bridge.py` + `config.yml`, устройство = CH340 #1 / порт 3 (by-path `pci-0000:00:12.0-usb-0:3:1.0-port0`), env `HA_TOKEN` (сгенерировать новый!)
14. [ ] Собрать local add-on **modbus-bridge** (`/addons/modbus-bridge`), перенести `modbus_ha_bridge.py` + `config.yml`, устройство = CH340 #1 / порт 3 (by-path `pci-0000:00:12.0-usb-0:3:1.0-port0`), env `HA_TOKEN` (сгенерировать новый!)
@@ -180,13 +206,14 @@ ha apps restart "$SLUG"
## Открытые вопросы
## Открытые вопросы
- [x] ✅ **РЕШЕНО 2026-09-14 — способ привязки CH340 в аддонах:** привязка по `/dev/serial/by-path/...`; механизм Supervisor — флаг `uart: true` в манифесте аддона (доступ ко всем serial автоматически, `devices:` не нужен). Проверено на живом t610. Детали: [[family/how-to/t610-access]] §USB.
- [x] ✅ **РЕШЕНО 2026-09-14 — способ привязки CH340 в аддонах:** привязка по `/dev/serial/by-path/...`; механизм Supervisor — флаг `uart: true` в манифесте аддона (доступ ко всем serial автоматически, `devices:` не нужен). Проверено на живом t610. Детали: [[family/how-to/t610-access]] §USB.
- []Community-repo z2m: проверить, что он совместим с HA OS 18.2 / Core 2026.9.x
- [x]✅ **РЕШЕНО 2026-09-14 — куда переносить данные z2m:**`data_path` аддона = **`/config/zigbee2mqtt`** (внутри HA-конфига), НЕ `/addon_configs/`. Туда залиты `database.db` и `configuration.yaml`.
- [x] ✅ **Проверено 2026-09-14 — совместимость community-repo z2m с HA OS 18.2 / Core 2026.9.2:** работает (v2.14.1-1, координатор EmberZNet 7.4.5, 16 устройств).
- [ ] mbusd/modbus-bridge как local add-on: их собственный `config.yaml` — **в манифесте тоже нужен `uart: true`**, чтобы увидеть by-path (тот же механизм, что у z2m и core_ssh)
- [ ] mbusd/modbus-bridge как local add-on: их собственный `config.yaml` — **в манифесте тоже нужен `uart: true`**, чтобы увидеть by-path (тот же механизм, что у z2m и core_ssh)
- [ ] Куда переносить данные z2m: `/addon_configs/<slug>/` (HA OS 12+ путь для app-конфигов)
- [ ] Камера (§8 родительского плана) — не аддон, разбираться отдельно
- [ ] Камера (§8 родительского плана) — не аддон, разбираться отдельно
## Связанные заметки
## Связанные заметки
- [[family/plans/home-automation-migration-t610]] — родительский план
- [[family/plans/home-automation-migration-t610]] — родительский план
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.