[2026-09-15] eagle: family/how-to/ha-automations.md family/how-to/home-automation.md family/tech/zigbee-t610-z2m-i-zha.md

This commit is contained in:
Alexey Martemyanov
2026-09-15 20:33:42 +06:00
parent 811e02c6b7
commit b2726d1432
3 changed files with 144 additions and 25 deletions
+26 -11
View File
@@ -2,26 +2,41 @@
> **Справочник логики автоматизаций** (`automations.yaml` на t610). Топология/команды/Modbus — [[family/how-to/home-automation]].
> 🔴 **ВНИМАНИЕ НА 2026-09-15 (ночь-14): ПЕРЕЕЗД Zigbee Z2M → ZHA ВЫПОЛНЕН, но АВТОМАТИЗАЦИИ СЛОМАНЫ.**
> 🟢 **ОБНОВЛЕНО 2026-09-15 (ночь-14): АВТОМАТИЗАЦИИ ПОЧИНЕНЫ — 12 из 16 РАБОТАЮТ.**
>
> Сущности переименованы обратно ✅, зоны восстановлены ✅, но **16 автоматизаций всё равно не работают**. Причина не в `entity_id`, а глубже:
> Переезд Zigbee Z2M → ZHA выполнен. Автоматизации были сломаны не по `entity_id`, а глубже — они ссылались на `device_id` + внутренний `entity_id`-UUID, а устройства Z2M удалены. **Пересобраны заново** на ZHA-шные `device_id` + актуальные `entity_id`.
>
> **Автоматизации ссылаются на `device_id` + внутренний `entity_id`-UUID** (`fa72bc65e5cf9e9249a5b0d377e5a3f4`), а устройства Z2M **удалены**. Проверено (`verify_state.py`): **все 10 используемых `device_id` — GONE.**
> → Переименование сущностей такие автоматизации **не лечит**. Нужна замена `device_id` + UUID на ZHA-шные.
> **Итог: 12 живых, 4 ждут 2 спящих батарейных.**
>
> **Единственное исключение:** `office_pass_switch_table` / `office_pass_switch_main` ссылаются на `entity_id` напрямую — но их триггер `switch.office_table_light_switch_l1` **не переименовался** (домен `light`→`switch` запрещён HA), так что и они битые.
> | Автоматизация | Состояние |
> |---|---|
> | Циркуляция ГВС вкл/выкл (по времени) | ✅ on |
> | office_pass_switch_table / office_pass_switch_main | ✅ on |
> | Ночной свет душевая вкл/выкл | ✅ on |
> | Протечка котельная | ✅ on |
> | Датчик протечки котельная батарея | ✅ on |
> | Zigbee T sensor батарея | ✅ on |
> | Toggle dimmer bed / increase dimmer bed brightness | ✅ on (триггер от спящей кнопки отключён) |
> | Ventilation automation on | ⏸ off (не Zigbee) |
> | `svetlo_vykl_osveshchenie_lestnitsy` | ⏳ ждёт `light_sensor_stairs` |
> | `temno_vkl_podsvetku_lestnitsy` | ⏳ ждёт `light_sensor_stairs` |
> | `datchik_osveshchennosti_lestnitsa_batareia` | ⏳ ждёт `light_sensor_stairs` |
> | `light_switch_bed_batareia` | ⏳ ждёт `wireless_light_switch_bed` |
>
> **Порядок:** 1) собрать карту старый `device_id` → новый (по IEEE); 2) заменить `device_id` + `entity_id`-UUID в `/config/automations.yaml`; 3) reload + проверить `last_triggered`.
> **Бэкап:** `/config/automations.yaml.bak-zha-20260915-211613` ✅ (локально `~/tmp-t610/automations.yaml`).
> Детали и полный список мёртвых `device_id` — [[family/tech/zigbee-t610-z2m-i-zha]] §ОСТАЛОСЬ.
> **Бэкап:** `/config/automations.yaml.bak-before-autofix-20260915-212636` (до пересборки) + `automations.yaml.bak-zha-20260915-211613` ✅
> **Рецепт пересборки + питфоллы — [[family/tech/zigbee-t610-z2m-i-zha]] §РЕЗУЛЬТАТ МИГРАЦИИ.**
>
> Класс сущностей тоже меняется: `switch.night_light_shower_2` → ZHA даёт `light.*`; `switch.recirculation_pump` → ZHA `switch.*` (та же роль); `light.bed_dimmer` → ZHA отдаёт `switch.tz3210_nhqka112_ts011f` (домен `switch`, не `light`).
> 🔴 **ПИТФОЛЛЫ, найденные при починке:**
> 1. **`device`-триггер батареи — тип `battery_level`, НЕ `battery`.** Иначе `Automation ... failed to setup triggers and has been disabled`.
> 2. **`binary_sensor` «battery_low» в ZHA нет** — только numeric `sensor.*_battery`, порог через `below: 10`.
> 3. **Домен `entity_id` не меняется переименованием:** `switch.office_table_light_switch_l1` → ZHA-имя `light.tz3000_5gey1ohx_ts0002_osveshchenie`. Автоматизации переписаны на `light.*`.
> 4. **`reload` — `POST /api/services/automation/reload`** с long-lived JWT, порт 80 (`http://172.30.32.1/api/`). Супервизорский токен → 401.
## 1. Где живёт
- **Файл:** `/config/automations.yaml` в HA Core на t610.
- **Всего:** 16 автоматизаций (15 `on` / 1 `off` `Ventilation automation on`).
- **Локальная копия:** `~/tmp-t610/automations/automations.yaml`.
- **Всего:** 16 автоматизаций **12 живых** (`on`), 1 `off` (`Ventilation automation on`), **4 `unavailable`** (ждут 2 спящих батарейных). После починки ночь-14 файл = 189 строк.
- **Локальная копия:** `~/tmp-t610/automations/automations.yaml`; после пересборки — `~/tmp-t610/automations-new.yaml`.
- **Читать живьём через API** (не по памяти):
```bash
B="https://mallexxx.duckdns.org"
+6 -4
View File
@@ -41,13 +41,15 @@ updated: 2026-09-15 (ночь-13: переезд на ZHA ИДЁТ — план
> 🔴 **Камера сейчас на xHCI (`USB3-1`), Zigbee — на OHCI (`USB1-2`).** Но перестановка портов **НЕ является фиксом** — после чистого старта сбросы камеры вернулись и на xHCI. Причину RCU stall см. §3.1, ограничения диагностики — §3.4, §3.5.
> 🟡 **ZIGBEE: ИДЁТ ПЕРЕЕЗД НА ZHA (2026-09-15).** ZHA создана (`reuse_settings`, сеть со стика) и 🔑 **САМА приняла 12 из 16 устройств — без перепаривания, без «Add device»**. Z2M **остановлен** (не удалён, данные целы).
> 🟢 **ZIGBEE: ПЕРЕЕЗД НА ZHA ЗАВЕРШЁН (2026-09-15, ночь-14).** ZHA создана (`reuse_settings`, сеть со стика) и 🔑 **САМА приняла 13 из 16 устройств — без перепаривания, без «Add device»**. Z2M **остановлен** (не удалён, данные целы).
>
> **Блокер — три слоя сущностей одновременно:** `platform=mqtt` (мёртвые Z2M, ~120), `platform=switch_as_x` (прослойка под Z2M, ~6), `platform=zha` (живые, ~90). Автоматизации ссылаются на мёртвые → бьют в пустоту. Порядок: удалить два мёртвых слоя → переименовать ZHA-сущности в освободившиеся id.
> **Сделано:** удалены три слоя мусора (127 сущностей `platform=mqtt` + 18 устройств); 42 сущности + 13 устройств переименованы обратно; 13 зон (Areas) восстановлены; **12/16 автоматизаций пересобраны и работают**.
>
> **План из 4 шагов составлен, ждёт подтверждения Alex.** Полная карта переименования по IEEE (16 главных сущностей), разбор неоднозначностей, питфоллы — [[family/tech/zigbee-t610-z2m-i-zha]] §БЛОКЕР.
> **Осталось:** разбудить 2 спящих батарейных (`light_sensor_stairs`, `wireless_light_switch_bed`) → последние 4 автоматизации. `sauna` в ZHA так и не появилась (отдельная задача).
>
> 📌 **Перепаривание НЕ нужно — подтверждено фактом.** Устройства отвечают координатору, ZHA их принимает по NVRAM-сети. Имена даёт технические (`light.tz3000_*`), т.к. `friendly_name` из Z2M не читает.
> 📌 **Перепаривание НЕ нужно — подтверждено фактом.** Устройства отвечают координатору, ZHA их принимает по NVRAM-сети. Имена даёт технические (`light.tz3000_*`), т.к. `friendly_name` из Z2M не читает — переименованы вручную.
>
> Полный итог, карта переименования по IEEE, рецепт починки автоматизаций, питфоллы — [[family/tech/zigbee-t610-z2m-i-zha]].
---