[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/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 — по ней определяется тип устройства.
> ⚠️ **`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)
@@ -332,9 +374,20 @@ jq -r 'select(.type!="Coordinator") | [.ieeeAddr, .type, (.manufName // "-")] |
- `configuration.yaml` (~30 КБ), `automations.yaml`, `scripts.yaml` (~30 КБ), `secrets.yaml`
- `www/``card-mod.js` + `floorplan/floor1_ha.svg`, `floor2_ha.svg`
- `.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 МБ, **не переносится** (решение: история с нуля)
**Решение по 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:
-**НЕ трогать:** `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`