[2026-09-14] eagle: family/how-to/t610-access.md family/plans/t610-addons-deployment.md
This commit is contained in:
@@ -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`
|
||||
|
||||
Reference in New Issue
Block a user