From c9674de1f14d813e0fc2a9b4fe182037551c879f Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Mon, 14 Sep 2026 10:48:52 +0600 Subject: [PATCH] [2026-09-14] eagle: family/plans/t610-addons-deployment.md --- family/plans/t610-addons-deployment.md | 73 +++++++++++++++++--------- 1 file changed, 49 insertions(+), 24 deletions(-) diff --git a/family/plans/t610-addons-deployment.md b/family/plans/t610-addons-deployment.md index 9bc10610..34cdcd16 100644 --- a/family/plans/t610-addons-deployment.md +++ b/family/plans/t610-addons-deployment.md @@ -16,7 +16,7 @@ related: --- # t610 — развёртывание через HA-аддоны -> **Статус (2026-09-14): Этап 1 ✅. Этап 2 ✅ ПОЛНОСТЬЮ. Этап 3 — в работе (разведка + решения приняты, ждём от Alex имена Zigbee-устройств).** Сервисы: z2m (**17 устройств** — добавлено NEO NAS-WR01B), mbusd (502), modbus-bridge (MQTT + HA-опрос), MQTT-интеграция в HA. Разведка конфига TrueNAS выполнена. +> **Статус (2026-09-14): Этап 1 ✅. Этап 2 ✅ ПОЛНОСТЬЮ. Этап 3 — решения приняты, имена Zigbee согласованы; ждём решения по одному устройству (`Mini Smart Switch 1`) и приступаем к переносу.** Сервисы: z2m (**17 устройств** — добавлено NEO NAS-WR01B), mbusd (502), modbus-bridge (MQTT + HA-опрос), MQTT-интеграция в HA. Разведка конфига TrueNAS выполнена, эталон имён найден. > Родительский план: [[family/plans/home-automation-migration-t610]] (Шаг 3 в нём заменяется на этот документ). > Доступ к хосту, CLI и питфоллы: [[family/how-to/t610-access]]. @@ -356,36 +356,60 @@ timeout 10 mosquitto_sub -h core-mosquitto -p 1883 -u zont -P "$MPW" \ ⚠️ **`ha apps logs ` тяжёлый** — не гонять его в цикле ожидания («висит» минутами). Ждать готовности интервью по `database.db`/`state.json`. Подробнее: [[family/how-to/t610-access]] §USB → «Спаривание нового Zigbee-устройства». -#### ⏳ Список 17 устройств — ждём имена от Alex +#### ✅ Имена 17 устройств — СОГЛАСОВАНЫ 2026-09-14 (латиница snake_case, единый формат) -Alex физически знает, где какое устройство. Запрос отправлен 2026-09-14. Пока имена не даны, `friendly_name` не трогаем. +**Источник эталона — НЕ выдумка:** на **TrueNAS в z2m `friendly_name` уже были человеческими** (файл `/mnt/RED_2TB/docker/zigbee2mqtt/configuration.yaml`, сохранился в бэкапе `~/tmp-t610/z2m-backup-20260914/configuration.yaml`). Дополнительно человеческие имена есть в **`core.device_registry` TrueNAS** и в **дашборде `lovelace.home_plan`** (он ссылается на `switch.sauna`, `light.smart_light_office_left`, `binary_sensor.shower_2_presence_sensor_presence` и т.п.). -| # | 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`) | +**Что произошло (моя ошибка при переносе):** на t610 залит `configuration.yaml` z2m **без секции `devices:`** → z2m при старте сам дописал `devices:` с `friendly_name` = IEEE для всех 17 устройств. Т.е. hex-имена на t610 — артефакт переноса, а не исходное состояние. + +**Итоговая таблица (латиница, исправлены опечатки вроде `Presense`→`presence`):** + +| # | IEEE | Было (TrueNAS) | **Стало (согласовано)** | Роль | +|---|---|---|---|---| +| 1 | `0xa4c13862d39377e6` | hex | `kabinet_temperature_sensor` | датчик t°/влажности (в кабинете, временно) | +| 2 | `0xa4c138f8da8bc478` | Насос обратки | `obratka_pump` | розетка с измерением P/V/I/E | +| 3 | `0xcc86ecfffe1347fd` | Mini Smart Switch 1 | ⏳ `unused_wall_switch` **или удалить** | реле, **нигде не используется, `unavailable`, нет зоны** | +| 4 | `0x84fd27fffed9e137` | Zigbee Mini Switch 2 | `shower_night_light` | зона Душевая; автоматизации «Вкл./Выкл. ночной свет душевая» | +| 5 | `0xa4c1386d40ddb67b` | Light Sensor Stairs | `stairs_light_sensor` | датчик освещённости | +| 6 | `0xa4c138dc6d856eca` | Presense Sensor 1 | `presence_sensor_1` | радар присутствия mmWave | +| 7 | `0xa4c1381186ed1a32` | Smart light Office | `office_smart_light` | выключатель 2-кл | +| 8 | `0xa4c13873b5c1575b` | Light switch Table Office | `office_table_light_switch` | реле 2 канала L1/L2 | +| 9 | `0xa4c13807b64c7fd4` | Kitchen hood | `kitchen_hood` | реле 3 канала (вытяжка) | +| 10 | `0xa4c138cefeee19fd` | Zigbee dimmer 2ch | `zigbee_dimmer_2ch` | светильник 2 канала | +| 11 | `0xa4c1386d0839706a` | Smart Light Stairs | `stairs_smart_light` | реле | +| 12 | `0xa4c1384fbe0b3a6b` | Sauna | `sauna` | розетка без мониторинга | +| 13 | `0xa4c138b0f9e674a5` | Wireless light switch bed | `bed_wireless_light_switch` | беспроводной выключатель | +| 14 | `0xa4c13882a4b42db0` | Dimmer bed | `bed_dimmer` | диммер 1 канал | +| 15 | `0xa4c138c4a94a6a31` | Shower 2 presence sensor | `shower_2_presence_sensor` | радар присутствия 2-й | +| 16 | `0xa4c1383d5fcaa063` | hex | `boiler_water_leak` | датчик протечки, зона **Котельная** | +| 17 | `0xa4c138eb6fbe9d19` | — (новая) | `heating_cable_plug` | NEO NAS-WR01B, розетка греющего кабеля | + +**Зоны (11, из `core.area_registry` TrueNAS):** Гостиная `living_room`, Кухня `kitchen`, Спальня `bedroom`, Детская `detskaia`, Кабинет `kabinet`, Ванная `vannaia`, Душевая `dushevaia`, Туалет `tualet`, Северная `severnaia`, Котельная `kotelnaia`, Лестница `lestnitsa`. Этажи: 1, 2. **Модели (из `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`. > Также в SSH-аддоне **нет `sqlite3`** — базу копировать на Mac (`scp` → `/Users/admin/tmp-t610/z2m-live.db`). -**Предлагаемая схема имён (на согласование с Alex):** `room_device` в латинице snake_case (напр. `dining_co2`, `kids_motion`, `bedroom_temp`) — кириллица в `entity_id` нежелательна. **Ждём подтверждения схемы от Alex перед переименованием.** +#### ℹ️ Как читать «человеческие имена» в HA (важно для будущих сессий) + +**Имена устройств НЕ лежат в реестрах HA** — их надо искать в трёх местах: +1. **z2m** `/config/zigbee2mqtt/configuration.yaml` → секция `devices:` → `friendly_name`. +2. **HA `core.device_registry`** → `data.devices[].name` (и `name_by_user`), связь через `identifiers: [["mqtt","zigbee2mqtt_0x..."]]`. +3. **Дашборд `lovelace.home_plan`** → `entity` в `picture-elements` (самый надёжный источник рабочей схемы имён). + +Поля сущностей: `original_name` = **имя параметра** («Температура», «Влага») — НЕ имя устройства; `name`/`name_by_user` часто `null`. **Вывод: `original_name` для определения устройства бесполезен** — все 16 датчиков t° будут «Температура». + +**Пифолл поиска:** если автоматизация ссылается на устройство, искать надо по `device_id`, а не `entity_id` — в `automations.yaml` триггеры вида `type: battery_level / device_id: ...` не содержат имени устройства. Связь: `device_id` → `core.device_registry` → `identifiers` → IEEE. + +**Инвентарь `configuration.yaml` TrueNAS (30КБ):** секции — `default_config`, `http`, `logger`, `modbus` (17: шина вентиляции — заслонки intake/exhaust, AT2), `input_number`, `input_boolean`, `template` (summary-сенсоры `dining_summary`, `kids_summary`, `bedroom_summary`, `at2_1_summary`), `frontend` (темы), `automation/script/scene: !include`. **Секции `mqtt:` в конфиге НЕТ.** Датчики `sensor.dining_*`/`kids_*`/`bedroom_*` (`platform: mqtt`) — это **Modbus RTU Sniffer** (шина вентиляции), НЕ Zigbee, и уже названы правильно. + +**Автоматизации TrueNAS (`automations.yaml`, 15 шт.):** Выключить/Включить циркуляцию ГВС, Ventilation automation on, office_pass_switch_table/main, Светло/Темно подсветку лестницы, Toggle/Cycle Dimmer bed, Вкл./Выкл. ночной свет душевая, Протечка котельная, Датчик протечки котельная батарея, Датчик освещённости лестница батарея, Light switch bed батарея, Zigbee T sensor батарея. + +**Дашборд `home_plan` использует hex, который надо будет заменить после переименования:** +- `binary_sensor.0xa4c1383d5fcaa063_water_leak` → `boiler_water_leak` +- `switch.0xa4c138f8da8bc478` → `obratka_pump` +- `switch.vvod_vody_greiushchii_kabel` → **`heating_cable_plug`** (старая Tuya-розетка → новая Zigbee) ### Этап 4 — проверка и отключение TrueNAS 18. [ ] Чек-лист из родительского плана §6 @@ -414,7 +438,8 @@ Alex физически знает, где какое устройство. За - [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 устройств»). +- [x] ✅ **СОГЛАСОВАНЫ 2026-09-14 — имена 17 Zigbee-устройств** (латиница snake_case, единый формат). Эталон найден: человеческие `friendly_name` были на **TrueNAS в z2m** и в `core.device_registry`/дашборде. См. §«Имена 17 устройств». +- [ ] ⏳ **ЖДЁМ Alex — решение по `Mini Smart Switch 1` (`0xcc86ecfffe1347fd`):** нигде не используется, нет зоны, состояние `unavailable`. Варианты: имя `unused_wall_switch` либо удалить из z2m (unpair). - [ ] Камера (§8 родительского плана) — не аддон, разбираться отдельно ## Связанные заметки