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

This commit is contained in:
Alexey Martemyanov
2026-09-14 10:43:46 +06:00
parent 9ce79baab4
commit 44e34d0d21
2 changed files with 135 additions and 17 deletions
+56 -3
View File
@@ -4,7 +4,7 @@
> План переноса: [[family/plans/home-automation-migration-t610]] > План переноса: [[family/plans/home-automation-migration-t610]]
> Развёртывание сервисов: [[family/plans/t610-addons-deployment]] > Развёртывание сервисов: [[family/plans/t610-addons-deployment]]
> ✅ **Состояние на 2026-09-14 (Этап 2 закрыт, Этап 3 в работе):** z2m (16 устройств), mbusd (порт 502), modbus-bridge (MQTT + HA-опрос) — все развёрнуты аддонами и **работают**. В HA добавлена **MQTT-интеграция** (её не было → z2m/bridge не создавали сущности; стало 104 сущности, 69 Zigbee). Этап 3 перенос HA-конфига с TrueNAS (разведка выполнена, решения приняты, ждём ответа Alex по HACS / схеме Zigbee-имён). > ✅ **Состояние на 2026-09-14 (Этап 2 закрыт, Этап 3 в работе, z2m = 17 устройств):** z2m, mbusd (порт 502), modbus-bridge (MQTT + HA-опрос) — все развёрнуты аддонами и **работают**. В HA добавлена **MQTT-интеграция** (её не было → z2m/bridge не создавали сущности). Новое Zigbee-устройство `0xa4c138eb6fbe9d19` (NEO NAS-WR01B, розетка греющего кабеля) **добавлено** — заменило Tuya Smart Plug. Этап 3 (перенос HA-конфига) — разведка выполнена, решения приняты (custom_components не переносим; реестры выборочно; БД с нуля). **Ждём от Alex имена для 17 Zigbee-устройств** (чтобы убрать hex из z2m `friendly_name`).
## Основное ## Основное
@@ -322,7 +322,49 @@ jq -r 'select(.type!="Coordinator") | [.ieeeAddr, .type, (.manufName // "-")] |
> 📌 **`modelID` в `database.db` пустой** (не заполнился при переносе базы 1:1), но `manufName` даёт модель Tuya — по ней определяется тип устройства. > 📌 **`modelID` в `database.db` пустой** (не заполнился при переносе базы 1:1), но `manufName` даёт модель Tuya — по ней определяется тип устройства.
> ⚠️ **`friendly_name` устройств z2m = hex-адрес.** Все 16 устройств в `configuration.yaml → devices:` имеют `friendly_name: '0xa4c138...'` — это состояние с TrueNAS. Отсюда технические `entity_id` в HA (`sensor.0xa4c138..._temperature`). Исправление — Этап 3, [[family/plans/t610-addons-deployment]] §«Zigbee friendly_name». > ⚠️ **Расхождение имён: HA vs z2m (главный вывод 2026-09-14).** Человеческие имена есть **только в HA**; в z2m все устройства зовутся hex-адресом.
>
> | Где | Значение | Пример |
> |---|---|---|
> | HA — `original_name` (видно в UI) | ✅ человеческое | «Температура», «Влага», «Занятость» |
> | HA — `entity_id` (YAML, автоматизации) | ❌ техническое | `sensor.0xa4c13862d39377e6_temperature` |
> | z2m — `friendly_name` | ❌ hex | `0xa4c13862d39377e6` |
> | MQTT-топик | ❌ hex | `zigbee2mqtt/0xa4c13862d39377e6` |
>
> Это состояние приехало **с TrueNAS** 1:1 (переносилась готовая `configuration.yaml`). Alex видел имена в UI HA и не замечал, что в z2m они технические.
>
> **Чтобы `entity_id` стали человеческими**, нужно: (1) прописать `friendly_name` в z2m, (2) перезапустить z2m → уйдут новые discovery, (3) почистить старые hex-сущности в HA. ⚠️ Смена `friendly_name` меняет MQTT-топики → **все сущности пересоздаются с новыми `entity_id`**, автоматизации со старыми id ломаются. Делать «пока чисто», до переноса автоматизаций с TrueNAS. Список 17 устройств и запрос имён у Alex — [[family/plans/t610-addons-deployment]] §«Zigbee friendly_name».
### Спаривание нового Zigbee-устройства (permit_join через MQTT, 2026-09-14)
В z2m-конфиге **`permit_join` не задан** → окно спаривания закрыто по умолчанию. Открывается штатно через MQTT-запрос (без UI):
```bash
# пароль MQTT берём из опций аддона БЕЗ интерполяции в строку ($ в пароле ломает bash)
ha apps info 45df7312_zigbee2mqtt --raw-json | jq -r '.data.options.mqtt.password' > /tmp/mqtt_pw.z2m
MPW=$(cat /tmp/mqtt_pw.z2m); rm -f /tmp/mqtt_pw.z2m
mosquitto_pub -h core-mosquitto -p 1883 -u zont -P "$MPW" \
-t 'zigbee2mqtt/bridge/request/permit_join' -m '{"value": true, "time": 180}'
# → {"data":{"time":180},"status":"ok"}
# результат: подписка на события
timeout 10 mosquitto_sub -h core-mosquitto -p 1883 -u zont -P "$MPW" \
-t 'zigbee2mqtt/bridge/response/permit_join' -t 'zigbee2mqtt/bridge/event' -C 3
# → {"type":"device_joined"} → {"type":"device_interview","status":"started"}
```
Проверка результата:
```bash
jq -r 'select(.ieeeAddr=="0x…") | {ieeeAddr,type,manufName,powerSource}' /config/zigbee2mqtt/database.db
jq -r '.["0x…"]' /config/zigbee2mqtt/state.json
```
**⚠️ Питфоллы:**
- **`mosquitto_pub/sub` в аддоне НЕ поддерживают `--pwfile`** (`Error: Unknown option '--pwfile'`) — только `-u`/`-P`. Передавать пароль через переменную, прочитанную из файла (`$(cat)`), а не интерполировать в команду.
- **`ha apps logs <slug>` тяжёлый** — не ставить его в цикл ожидания (команда «висит» минутами). Ждать завершения интервью лучше через `database.db`/`state.json`, а не грепая логи в `while`.
> ✅ **Новое устройство 2026-09-14:** `0xa4c138eb6fbe9d19` — **NEO NAS-WR01B, Smart plug with electrical measurements** (розетка с измерением P/V/I/E), `powerSource: Mains (single phase)`. Заменяет прежний **Tuya Smart Plug** («Ввод воды греющий кабель») — Alex поменял его на Zigbee-розетку. `Successfully configured '0xa4c138eb6fbe9d19' (definition v0.0.1)`, discovery ушёл, сущности создались. **Итого в z2m 17 устройств.**
## HA-конфиг: что где лежит (TrueNAS → t610, разведка 2026-09-14) ## HA-конфиг: что где лежит (TrueNAS → t610, разведка 2026-09-14)
@@ -332,9 +374,20 @@ jq -r 'select(.type!="Coordinator") | [.ieeeAddr, .type, (.manufName // "-")] |
- `configuration.yaml` (~30 КБ), `automations.yaml`, `scripts.yaml` (~30 КБ), `secrets.yaml` - `configuration.yaml` (~30 КБ), `automations.yaml`, `scripts.yaml` (~30 КБ), `secrets.yaml`
- `www/``card-mod.js` + `floorplan/floor1_ha.svg`, `floor2_ha.svg` - `www/``card-mod.js` + `floorplan/floor1_ha.svg`, `floor2_ha.svg`
- `.storage/`**35 файлов**, переносить **выборочно** ⚠️ - `.storage/`**35 файлов**, переносить **выборочно** ⚠️
- `custom_components/``hacs` (2.0.5, репо пусто), `localtuya` (5.2.3, **используется**), `tuya_local` (2026.7.2, не используется) - `custom_components/``hacs` (2.0.5, **репо пусто → НЕ переносим**), `localtuya` (5.2.3, ~~используется~~**ОТКАЗ 2026-09-14**: Tuya-розетка заменена на Zigbee, компонент не нужен), `tuya_local` (2026.7.2, не используется)
- `home-assistant_v2.db` — 142 МБ, **не переносится** (решение: история с нуля) - `home-assistant_v2.db` — 142 МБ, **не переносится** (решение: история с нуля)
**Решение по custom_components (2026-09-14, подтверждено Alex):**
| Компонент | Решение | Почему |
|---|---|---|
| `hacs` | ❌ не переносить | репозиториев в HACS ноль, нагрузки не несёт |
| `localtuya` | ❌ не переносить | обслуживал 1 Tuya-розетку («Ввод воды греющий кабель», IP 192.168.2.194); розетка заменена на Zigbee-розетку NEO NAS-WR01B (`0xa4c138eb6fbe9d19`) |
| `tuya_local` | ❌ не переносить | config entry отсутствовал → не использовался |
Итог: **`custom_components/` вообще не переносим.** В `configuration.yaml` убрать строку `localtuya: debug` (была единственной отсылкой к компоненту).
> 📌 **Как узнать, используется ли интеграция:** `jq -r '.data.entries[].domain' core.config_entries` — если домена нет, компонент не подключён. Наличие папки в `custom_components/` ≠ использование.
**⚠️ `.storage/` НЕ копировать целиком** — смешаны системные файлы t610 и контентные TrueNAS: **⚠️ `.storage/` НЕ копировать целиком** — смешаны системные файлы t610 и контентные TrueNAS:
-**НЕ трогать:** `core.uuid` (подменит `instance_id`), `auth`, `auth_provider.homeassistant` (сломает логин), `http`, `http.auth`, `onboarding`, `core.config`, `core.config_entries` -**НЕ трогать:** `core.uuid` (подменит `instance_id`), `auth`, `auth_provider.homeassistant` (сломает логин), `http`, `http.auth`, `onboarding`, `core.config`, `core.config_entries`
-**Переносить:** `core.entity_registry` (критично!), `core.device_registry`, `core.area_registry`, `core.floor_registry`, `core.restore_state`, `lovelace.home_plan`, `lovelace_dashboards`, `lovelace_resources`, `person`, `zone` -**Переносить:** `core.entity_registry` (критично!), `core.device_registry`, `core.area_registry`, `core.floor_registry`, `core.restore_state`, `lovelace.home_plan`, `lovelace_dashboards`, `lovelace_resources`, `person`, `zone`
+79 -14
View File
@@ -16,7 +16,7 @@ related:
--- ---
# t610 — развёртывание через HA-аддоны # t610 — развёртывание через HA-аддоны
> **Статус (2026-09-14): Этап 1 ✅. Этап 2 ✅ ПОЛНОСТЬЮ (все 3 USB подключены, привязка by-path + `uart: true`, z2m работает — 16 устройств, mbusd работает — порт 502, modbus-bridge работает — MQTT + HA-опрос, в HA добавлена MQTT-интеграция). Этап 3 🔄 В РАБОТЕ — разведка выполнена, решения приняты (БД с нуля, реестры заменить, HACS на согласовании, Zigbee-имена чистить), ждём ответа Alex по 3 вопросам (HACS / схема имён / порядок).** > **Статус (2026-09-14): Этап 1 ✅. Этап 2 ✅ ПОЛНОСТЬЮ. Этап 3 — в работе (разведка + решения приняты, ждём от Alex имена Zigbee-устройств).** Сервисы: z2m (**17 устройств** — добавлено NEO NAS-WR01B), mbusd (502), modbus-bridge (MQTT + HA-опрос), MQTT-интеграция в HA. Разведка конфига TrueNAS выполнена.
> Родительский план: [[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]].
@@ -53,7 +53,7 @@ related:
| Terminal & SSH | `core_ssh` | Official | ✅ **установлен и работает** | | Terminal & SSH | `core_ssh` | Official | ✅ **установлен и работает** |
| Samba share (для доступа к файлам) | `core_samba` | Official | ⏸️ установлен, `stopped` (нужен `password`) | | Samba share (для доступа к файлам) | `core_samba` | Official | ⏸️ установлен, `stopped` (нужен `password`) |
| File editor | `core_configurator` | Official | ✅ установлен, `started` | | File editor | `core_configurator` | Official | ✅ установлен, `started` |
| **Zigbee2MQTT** | `45df7312_zigbee2mqtt` | Community repo | ✅ **установлен, работает — 16 устройств** | | **Zigbee2MQTT** | `45df7312_zigbee2mqtt` | Community repo | ✅ **установлен, работает — 17 устройств** |
| **mbusd** | `local_mbusd` | Local add-on (`/addons/mbusd`) | ✅ **установлен, работает — порт 502** | | **mbusd** | `local_mbusd` | Local add-on (`/addons/mbusd`) | ✅ **установлен, работает — порт 502** |
| **modbus-bridge** | `local_modbus-bridge` | Local add-on (`/addons/modbus-bridge`) | ✅ **установлен, работает — MQTT + HA-опрос** | | **modbus-bridge** | `local_modbus-bridge` | Local add-on (`/addons/modbus-bridge`) | ✅ **установлен, работает — MQTT + HA-опрос** |
| **MQTT-интеграция в HA** | `mqtt` | Config entry | ✅ **добавлена 2026-09-14** (была ОТСУТСТВОВАЛА → 22 сущности; стало 104, 69 Zigbee) | | **MQTT-интеграция в HA** | `mqtt` | Config entry | ✅ **добавлена 2026-09-14** (была ОТСУТСТВОВАЛА → 22 сущности; стало 104, 69 Zigbee) |
@@ -250,8 +250,8 @@ curl -s -X POST -H "Authorization: Bearer $T" -H "Content-Type: application/json
**Решения Alex (2026-09-14):** **Решения Alex (2026-09-14):**
- **История БД (`home-assistant_v2.db`, 142 МБ) — НЕ переносить**, начинаем с нуля. - **История БД (`home-assistant_v2.db`, 142 МБ) — НЕ переносить**, начинаем с нуля.
- **Реестры `.storage` — ЗАМЕНИТЬ** (вариант B: взять реестры TrueNAS целиком, а не сливать). Zigbee-сущности пересоздадутся z2m автоматически по `database.db` + discovery. Минус: переименования `entity_id`, сделанные в UI на TrueNAS, потеряются. - **Реестры `.storage` — ЗАМЕНИТЬ** (вариант B: взять реестры TrueNAS целиком, а не сливать). Zigbee-сущности пересоздадутся z2m автоматически по `database.db` + discovery. Минус: переименования `entity_id`, сделанные в UI на TrueNAS, потеряются.
- **HACS и custom_components — на согласование** (см. §«Инвентарь custom_components»). - **HACS и custom_components — РЕШЕНО: НЕ переносим ничего** (см. §«Инвентарь custom_components»).
- **Zigbee generic-имена — привести к единому виду, пока реестр чистый** (см. §«Zigbee friendly_name»). - **Zigbee generic-имена — привести к единому виду, пока реестр чистый** (см. §«Zigbee friendly_name»). ⏳ Ждём от Alex имена для 17 устройств.
#### Разведано: что на TrueNAS (`/mnt/RED_2TB/docker/ha/`) #### Разведано: что на TrueNAS (`/mnt/RED_2TB/docker/ha/`)
@@ -283,17 +283,20 @@ curl -s -X POST -H "Authorization: Bearer $T" -H "Content-Type: application/json
- **`core.entity_registry` — КРИТИЧНО** (без него `entity_id` не совпадут с `configuration.yaml`) - **`core.entity_registry` — КРИТИЧНО** (без него `entity_id` не совпадут с `configuration.yaml`)
- `core.device_registry`, `core.area_registry`, `core.floor_registry`, `core.restore_state` - `core.device_registry`, `core.area_registry`, `core.floor_registry`, `core.restore_state`
- `lovelace.home_plan` (+ `.bak`, `.bak2`), `lovelace_dashboards`, `lovelace_resources` - `lovelace.home_plan` (+ `.bak`, `.bak2`), `lovelace_dashboards`, `lovelace_resources`
- `hacs.*` (если HACS переносим), `person`, `zone` - `person`, `zone` (⚠️ `hacs.*` **не переносим** — HACS снят с переноса)
#### Инвентарь `custom_components` (на согласование) #### Инвентарь `custom_components` — ✅ РЕШЕНО: не переносим ничего (Alex, 2026-09-14)
| Компонент | Версия | Config entry | Решение | | Компонент | Версия | Config entry | Решение |
|---|---|---|---| |---|---|---|---|
| `localtuya` | 5.2.3 | ✅ **есть** (Tuya-облако: client_id/secret, devices, region, user_id) | **переносить обязательно** | | `localtuya` | 5.2.3 | ✅ **был** (Tuya-облако: client_id/secret, devices, region, user_id) | **НЕ переносить** — см. ниже |
| `hacs` | 2.0.5 | ✅ есть, но **репозиториев НЕТ** (`hacs.repositories` пуст) | ⚠️ на согласование | | `hacs` | 2.0.5 | ✅ есть, но **репозиториев НЕТ** (`hacs.repositories` пуст) | ❌ не переносить (нагрузки не несёт) |
| `tuya_local` | 2026.7.2 | ❌ нет | ❌ не переносить | | `tuya_local` | 2026.7.2 | ❌ нет | ❌ не переносить |
**`localtuya` ставился вручную** (не через HACS — репо HACS пусто). Он реально используется → перенос обязателен, иначе потеряются Tuya-устройства. **`localtuya` — ОТКАЗ (2026-09-14).** Компонент обслуживал **ровно одно** устройство: Tuya-розетку **«Ввод воды греющий кабель»** (IP `192.168.2.194`, `protocol_version 3.4`, platform `switch`). Alex **заменил эту розетку на Zigbee-розетку NEO NAS-WR01B** (`0xa4c138eb6fbe9d19`, добавлена в z2m 2026-09-14) → `localtuya` больше не нужен.
В `configuration.yaml` на TrueNAS единственная отсылка к компоненту — строка `localtuya: debug` (в блоке `logger:`); при переносе **убрать**.
**Итог: папка `custom_components/` не переносится вообще.** Никаких HACS-компонентов в системе нет.
#### Порядок работ Этапа 3 (важно — не перепутать) #### Порядок работ Этапа 3 (важно — не перепутать)
@@ -303,7 +306,7 @@ curl -s -X POST -H "Authorization: Bearer $T" -H "Content-Type: application/json
4. Перенести реестры `.storage` (замена, выборочно по списку выше) 4. Перенести реестры `.storage` (замена, выборочно по списку выше)
5. Перенести `configuration.yaml` + правка `modbus.host``127.0.0.1` 5. Перенести `configuration.yaml` + правка `modbus.host``127.0.0.1`
6. Перенести `automations.yaml`, `scripts.yaml`, `secrets.yaml`, `www/` 6. Перенести `automations.yaml`, `scripts.yaml`, `secrets.yaml`, `www/`
7. Перенести `custom_components/` (по согласованию) 7. `custom_components/` **НЕ переносим** (решено) → шаг пропускается
8. Старт HA, проверка: конфиг валиден, сущности на месте, автоматизации, дашборд `home_plan` 8. Старт HA, проверка: конфиг валиден, сущности на месте, автоматизации, дашборд `home_plan`
9. **ТОЛЬКО ПОСЛЕ этого** — правка `friendly_name` в z2m + чистка `entity_id` в HA 9. **ТОЛЬКО ПОСЛЕ этого** — правка `friendly_name` в z2m + чистка `entity_id` в HA
@@ -311,14 +314,72 @@ curl -s -X POST -H "Authorization: Bearer $T" -H "Content-Type: application/json
#### ✅ Zigbee `friendly_name` — корень generic-имён (разведка 2026-09-14) #### ✅ Zigbee `friendly_name` — корень generic-имён (разведка 2026-09-14)
**Найден корень:** в z2m **ВСЕ 16 устройств имеют `friendly_name` = свой hex-адрес** (`0xa4c13862d39377e6` и т.д.). Это состояние приехало с TrueNAS — HA их так не называл. **Найден корень:** в z2m **ВСЕ устройства имеют `friendly_name` = свой hex-адрес** (`0xa4c13862d39377e6` и т.д.). Это состояние приехало с TrueNAS — HA их так не называл. Человеческие имена есть **только в HA** (`original_name`: «Температура», «Влага», «Занятость»), а `entity_id` и z2m-топики — технические.
- Проверено в `/config/zigbee2mqtt/configuration.yaml` (секция `devices:`) — у всех 16 `friendly_name: '<hex>'`. **Расхождение HA vs z2m (таблица):**
- В `core.entity_registry` на TrueNAS: `entity_id` вида `sensor.0xa4c13862d39377e6_temperature`, но `original_name`/`name` **уже человеческие** («Температура», «Влажность»).
| Где | Значение | Пример |
|---|---|---|
| HA — `original_name` (видно в UI) | ✅ человеческое | «Температура» |
| HA — `entity_id` (YAML/автоматизации) | ❌ техническое | `sensor.0xa4c13862d39377e6_temperature` |
| z2m — `friendly_name` | ❌ hex | `0xa4c13862d39377e6` |
| MQTT-топик | ❌ hex | `zigbee2mqtt/0xa4c13862d39377e6` |
- Проверено в `/config/zigbee2mqtt/configuration.yaml` (секция `devices:`) — у всех `friendly_name: '<hex>'`.
- Отдельная категория — вообще без имени: `switch.0xa4c138f8da8bc478` (`original_name` пусто), `switch.0xcc86ecfffe1347fd`, `switch.0x84fd27fffed9e137`, `update.0xa4c138f8da8bc478`, `light.0xa4c13882a4b42db0`. - Отдельная категория — вообще без имени: `switch.0xa4c138f8da8bc478` (`original_name` пусто), `switch.0xcc86ecfffe1347fd`, `switch.0x84fd27fffed9e137`, `update.0xa4c138f8da8bc478`, `light.0xa4c13882a4b42db0`.
**Корневой механизм:** `entity_id` в HA формируется при **первом появлении** сущности и от `friendly_name` z2m. Уже созданные `entity_id` в реестре **НЕ переименовываются автоматически** при смене `friendly_name`. Поэтому нужны **две операции**: (а) `friendly_name` в z2m, (б) переименование `entity_id` в `core.entity_registry` HA. **Корневой механизм:** `entity_id` в HA формируется при **первом появлении** сущности и от `friendly_name` z2m. Уже созданные `entity_id` в реестре **НЕ переименовываются автоматически** при смене `friendly_name`. Поэтому нужны **две операции**: (а) `friendly_name` в z2m, (б) переименование `entity_id` в `core.entity_registry` HA.
⚠️ **Побочный эффект смены `friendly_name`:** меняются MQTT-топики → **все сущности пересоздаются с новыми `entity_id`**, любые ссылки в автоматизациях/шаблонах ломаются. Поэтому делать это **до** переноса автоматизаций с TrueNAS («пока чисто»).
#### 🔄 Новое устройство: NEO NAS-WR01B (2026-09-14)
Alex заменил Tuya Smart Plug (греющий кабель воды) на **Zigbee-розетку**.
- **IEEE:** `0xa4c138eb6fbe9d19`
- **Модель:** NEO NAS-WR01B, «Smart plug (with electrical measurements)» — P/V/I/E
- **powerSource:** Mains (single phase)
- Проверка: `Successfully configured '0xa4c138eb6fbe9d19' (definition v0.0.1)`, `voltage: 223`, `state: OFF`, `linkquality: 232`; discovery ушёл, сущности создались.
- **Итого в z2m — 17 устройств.**
- При участии `localtuya`: розетка была на Tuya (`192.168.2.194`) → сменилась на Zigbee → `localtuya` снят с переноса.
**Рецепт permit_join (спаривание без UI, через MQTT):** в z2m `permit_join` не задан → окно закрыто. Открывается так (пароль из опций аддона, БЕЗ интерполяции — `$` в пароле ломает bash):
```bash
ha apps info 45df7312_zigbee2mqtt --raw-json | jq -r '.data.options.mqtt.password' > /tmp/pw
MPW=$(cat /tmp/pw); rm -f /tmp/pw
mosquitto_pub -h core-mosquitto -p 1883 -u zont -P "$MPW" \
-t 'zigbee2mqtt/bridge/request/permit_join' -m '{"value": true, "time": 180}'
timeout 10 mosquitto_sub -h core-mosquitto -p 1883 -u zont -P "$MPW" \
-t 'zigbee2mqtt/bridge/response/permit_join' -t 'zigbee2mqtt/bridge/event' -C 3
```
⚠️ `mosquitto_pub/sub` в аддоне **НЕ знают `--pwfile`** (Unknown option) — только `-u`/`-P`.
⚠️ **`ha apps logs <slug>` тяжёлый** — не гонять его в цикле ожидания («висит» минутами). Ждать готовности интервью по `database.db`/`state.json`.
Подробнее: [[family/how-to/t610-access]] §USB → «Спаривание нового Zigbee-устройства».
#### ⏳ Список 17 устройств — ждём имена от Alex
Alex физически знает, где какое устройство. Запрос отправлен 2026-09-14. Пока имена не даны, `friendly_name` не трогаем.
| # | IEEE | Что это (по данным) |
|---|---|---|
| 1 | `0xa4c13862d39377e6` | датчик t°/влажности + батарея |
| 2 | `0xa4c1383d5fcaa063` | датчик протечки (Zbeacon) |
| 3 | `0xa4c138dc6d856eca` | радар присутствия mmWave (`_TZE200_crq3r3la`) |
| 4 | `0xa4c138c4a94a6a31` | радар присутствия 2-й (`_TZE204_qasjif9e`) |
| 5 | `0xa4c138f8da8bc478` | розетка с измерением P/V/I/E (`_TZ3000_gjnozsaz`) |
| 6 | `0xa4c138eb6fbe9d19` | **NEO NAS-WR01B — розетка греющего кабеля (новая)** |
| 7 | `0xa4c13873b5c1575b` | реле 2 канала L1/L2 (`_TZ3000_5gey1ohx`) |
| 8 | `0xa4c13807b64c7fd4` | реле 3 канала (`_TZ3000_odzoiovu`) |
| 9 | `0xa4c1381186ed1a32` | выключатель 2-кл (`_TZ3000_0e6uvexf`) |
| 10 | `0xa4c138cefeee19fd` | светильник 2 канала L1/L2 (`_TZ3000_kvwrdf47`) |
| 11 | `0xa4c13882a4b42db0` | светильник RGB с эффектами (`_TZ3000_ooc8illt`) |
| 12 | `0xa4c1386d40ddb67b` | датчик освещённости (`_TZ3000_hy6ncvmw`) |
| 13 | `0xa4c1386d0839706a` | реле (`_TZ3000_5gey1ohx`) |
| 14 | `0xa4c1384fbe0b3a6b` | устройство (`_TZ3210_nhqka112`) |
| 15 | `0xa4c138b0f9e674a5` | устройство (`_TZ3000_kccru4oi`) |
| 16 | `0xcc86ecfffe1347fd` | реле Moes (`_TZ3000_3a9beq8a`) |
| 17 | `0x84fd27fffed9e137` | реле Moes (`_TZ3000_3a9beq8a`) |
**Модели (из `database.db`, JSON-lines — НЕ sqlite):** `modelID` пуст, но `manufName` даёт модель Tuya: `_TZ3000_akqdg6g7`, `_TZ3000_gjnozsaz`, `_TZ3000_3a9beq8a`, `_TZ3000_hy6ncvmw`, `_TZE200_crq3r3la`, `_TZ3000_0e6uvexf`, `_TZ3000_5gey1ohx`, `_TZ3000_odzoiovu`, `_TZ3000_kvwrdf47`, `_TZ3210_nhqka112`, `_TZ3000_kccru4oi`, `_TZ3000_ooc8illt`, `_TZE204_qasjif9e`, `Zbeacon` (протечка). **Модели (из `database.db`, JSON-lines — НЕ sqlite):** `modelID` пуст, но `manufName` даёт модель Tuya: `_TZ3000_akqdg6g7`, `_TZ3000_gjnozsaz`, `_TZ3000_3a9beq8a`, `_TZ3000_hy6ncvmw`, `_TZE200_crq3r3la`, `_TZ3000_0e6uvexf`, `_TZ3000_5gey1ohx`, `_TZ3000_odzoiovu`, `_TZ3000_kvwrdf47`, `_TZ3210_nhqka112`, `_TZ3000_kccru4oi`, `_TZ3000_ooc8illt`, `_TZE204_qasjif9e`, `Zbeacon` (протечка).
> 📌 **Питфолл:** база z2m `database.db` — это **JSON Lines** (объект на строку), НЕ SQLite. `sqlite3 database.db` → `file is not a database`. Читать: `jq -r 'select(.type!="Coordinator") | [.ieeeAddr,.type,.manufName] | @tsv' z2m-live.db`. > 📌 **Питфолл:** база z2m `database.db` — это **JSON Lines** (объект на строку), НЕ SQLite. `sqlite3 database.db` → `file is not a database`. Читать: `jq -r 'select(.type!="Coordinator") | [.ieeeAddr,.type,.manufName] | @tsv' z2m-live.db`.
@@ -347,9 +408,13 @@ curl -s -X POST -H "Authorization: Bearer $T" -H "Content-Type: application/json
## Открытые вопросы ## Открытые вопросы
- [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.
- [x]**РЕШЕНО 2026-09-14 — куда переносить данные z2m:** `data_path` аддона = **`/config/zigbee2mqtt`** (внутри HA-конфига), НЕ `/addon_configs/`. Туда залиты `database.db` и `configuration.yaml`. - [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 устройств). - [x]**Проверено 2026-09-14 — совместимость community-repo z2m с HA OS 18.2 / Core 2026.9.2:** работает (v2.14.1-1, координатор EmberZNet 7.4.5, 17 устройств).
- [x]**РЕШЕНО 2026-09-14 — `uart: true` для local add-ons:** подтверждено на mbusd/modbus-bridge — в их манифестах `uart: true`, by-path виден, устройства открываются (mbusd порт 502, bridge sniffer на шине ZONT). Тот же механизм, что у z2m и core_ssh. - [x]**РЕШЕНО 2026-09-14 — `uart: true` для local add-ons:** подтверждено на mbusd/modbus-bridge — в их манифестах `uart: true`, by-path виден, устройства открываются (mbusd порт 502, bridge sniffer на шине ZONT). Тот же механизм, что у z2m и core_ssh.
- [x]**РЕШЕНО 2026-09-14 — modbus-bridge `ha_token`/`mqtt_password`:** вписаны, MQTT + HA-опрос работают. Ключевой момент — `ha.url` = `http://192.168.2.176:80` (не `supervisor/core`), + в HA добавлена MQTT-интеграция. **Этап 2 закрыт полностью.** - [x]**РЕШЕНО 2026-09-14 — modbus-bridge `ha_token`/`mqtt_password`:** вписаны, MQTT + HA-опрос работают. Ключевой момент — `ha.url` = `http://192.168.2.176:80` (не `supervisor/core`), + в HA добавлена MQTT-интеграция. **Этап 2 закрыт полностью.**
- [x]**РЕШЕНО 2026-09-14 — `custom_components` не переносим.** HACS (репо пусто) и `tuya_local` (нет config entry) не нужны; `localtuya` обслуживал единственную Tuya-розетку, которую Alex заменил на Zigbee → тоже снят.
- [x]**РЕШЕНО 2026-09-14 — история БД не переносится** (новая с нуля) и **реестры `.storage` — замена** (вариант B).
- [x]**ВЫПОЛНЕНО 2026-09-14 — Zigbee-розетка NEO NAS-WR01B (`0xa4c138eb6fbe9d19`) добавлена** через permit_join (MQTT). z2m = 17 устройств.
- [ ]**ЖДЁМ Alex: имена для 17 Zigbee-устройств** — чтобы убрать hex из `friendly_name`/`entity_id` (см. §«Список 17 устройств»).
- [ ] Камера (§8 родительского плана) — не аддон, разбираться отдельно - [ ] Камера (§8 родительского плана) — не аддон, разбираться отдельно
## Связанные заметки ## Связанные заметки