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

This commit is contained in:
Alexey Martemyanov
2026-09-16 11:43:59 +06:00
parent ddf805a289
commit 9725d4d072
2 changed files with 35 additions and 3 deletions
+34 -2
View File
@@ -51,8 +51,8 @@ REST `GET/POST /api/config/automation/config/<id>` использует поля
| `1768585827761` | Выключить циркуляцию ГВС | `time 23:00` → turn_off |
| `1768585922970` | Включить циркуляцию ГВС | `time 09:30` → turn_on |
| `1770404069135` | Ventilation automation on | `time 05:00` → `fan.turn_on fan.automation` *(off)* |
| `5735cb9f855e462dbdbdf680d0d6a66f` | **office_pass_switch_table** | кнопка L1 → toggle `light.smart_light_office_left` ⚠️ |
| `45b96f6f38f6488ba70266fa5da665f5` | **office_pass_switch_main** | кнопка L2 → toggle `light.smart_light_office_right` ⚠️ |
| `5735cb9f855e462dbdbdf680d0d6a66f` | **office_pass_switch_table** | кнопка L1 (`light.office_table_light_switch_light`) → toggle `light.smart_light_office_left` ✅ починено 2026-09-16 (§2.2) |
| `45b96f6f38f6488ba70266fa5da665f5` | **office_pass_switch_main** | кнопка L2 (`light.office_table_light_switch_light_2`) → toggle `light.smart_light_office_right` ✅ починено 2026-09-16 (§2.2) |
| `1771466806839` | Темно: вкл. подсветку лестницы | `illuminance below: 20` → `light.light_stairs_left`+`_right` turn_on |
| `1771466955010` | Светло: выкл. подсветку лестницы | `illuminance above: 60` → `light.light_stairs_left`+`_right` turn_off |
| `1771683420621` | Toggle Dimmer bed | кнопка `remote_button_short_press` → `light.toggle light.bed_dimmer` |
@@ -97,6 +97,38 @@ REST `GET/POST /api/config/automation/config/<id>` использует поля
---
## 2.2. ✅ ПОЧИНЕНО 2026-09-16: свитч у стола в кабинете не переключал свет
**Симптом (Alex):** «свитч у стола не тригерит переключение света».
**Первопричина:** триггеры обеих автоматизаций ссылались на **старые ZHA-имена**, снесённые при приведении ID к единому виду `<device>_<role>` (2026-09-15, см. [[family/tech/zigbee-t610-z2m-i-zha]] §2.1). Это **питфолл №18**: переименование сущности молча рвёт ссылки в `automations.yaml`. Из 25 автоматизаций переехали 23, эти две — нет.
| id | alias | Было (мёртвое) | Стало (живое) |
|---|---|---|---|
| `5735cb9f855e462dbdbdf680d0d6a66f` | `office_pass_switch_table` | `light.tz3000_5gey1ohx_ts0002_osveshchenie` | `light.office_table_light_switch_light` |
| `45b96f6f38f6488ba70266fa5da665f5` | `office_pass_switch_main` | `light.tz3000_5gey1ohx_ts0002_osveshchenie_2` | `light.office_table_light_switch_light_2` |
**Доказательство поломки:** триггерные сущности → **404** в `/api/states`; при этом сами реле живы и щёлкали (`05:39:35 on → 05:39:37 off` и т.д. — нажатия Alex доходили до Zigbee), а целевые `light.smart_light_office_left/right` висели `off` без изменений. Событие уходило в пустоту: автоматизация не могла подписаться на несуществующую сущность.
> ⚠️ **Автоматизация при мёртвом триггере остаётся `state: on`** — `unavailable` НЕ появляется, ошибок в UI нет. Единственный признак — `last_triggered: null` / старое значение. Проверять всегда по факту: сверить все `entity_id:` из YAML со `/api/states`.
**Фикс (выполнен):** 2 замены через REST `POST /api/config/automation/config/<id>` с полями **во множественном числе** (`triggers`), затем чтение обратно + `POST /api/services/automation/reload`. Действия (`light.toggle`) не менялись — были корректны.
**Верификация живым прогоном:**
| Реле | `last_triggered` | Результат |
|---|---|---|
| `light.office_table_light_switch_light` | `05:43:07` ✅ | `light.smart_light_office_left` → `on` |
| `light.office_table_light_switch_light_2` | `05:43:20` ✅ | `light.smart_light_office_right` → `on` |
Свет после проверки возвращён в `off`.
**Бэкапы:** `/config/automations.yaml.bak-office-20260916-124244` на t610, `~/tmp-t610/automations/automations.yaml.office-before` локально.
**Скрипт:** `~/tmp-t610/fix_office_switch.sh` (идемпотентный по эффекту, читает action из живого конфига).
> 📌 **Дефект §3 (мигание при рестарте HA) НЕ закрыт этой правкой** — `to:`/`from:` в триггеры не добавлялись, правка была ровно на 2 `entity_id`. Предложенный фикс ждёт решения Alex.
---
## 3. 🔴 ДЕФЕКТ: свет кабинета мигает при перезагрузке HA
**Симптом:** при каждом рестарте HA свет в кабинете мигает.
+1 -1
View File
@@ -395,7 +395,7 @@ curl -s -H "$HDR" http://supervisor/backups | jq
| 15 | **Перепутанные IEEE при переименовании вслепую** | Источник истины — `database.db`, не производные карты |
| 16 | **После переноса часть устройств — EndDevice (батарея), они спят** | Разбудить нажатием паринг-кнопки; это НЕ перепаривание |
| 17 | 🔴 **`name_by_user` НЕ переименовывает `entity_id`** | HA меняет entity_id только у новых сущностей. Переименовывать **и устройство, и каждую сущность** отдельно (`device_registry/update` + `entity_registry/update`) |
| 18 | 🔴 **После переименования рвутся ссылки в `automations.yaml`** | Молча → автоматизация ссылается на призрак. Проверять: все `entity_id:` из YAML сверить со `/api/states` |
| 18 | 🔴 **После переименования рвутся ссылки в `automations.yaml`** | Молча → автоматизация ссылается на призрак. Проверять: все `entity_id:` из YAML сверить со `/api/states`. **Реальный случай 2026-09-16:** `office_pass_switch_table`/`_main` остались на `light.tz3000_5gey1ohx_ts0002_osveshchenie` → свитч у стола не работал. При этом автоматизации были `state: on`, `unavailable` НЕ появлялся — единственный симптом `last_triggered` не обновлялся. Разбор: [[family/how-to/ha-automations]] §2.2 |
| 19 | 🔴 **Сирота-автоматизация: `unavailable`, но YAML чист** | Тело удалено из `automations.yaml`, запись в реестре осталась → `config/entity_registry/remove`. Если `id_reuse: Identifier values have to increase` — сначала `update` c `disabled_by: user`, затем `remove` |
| 20 | 🔴 **Modbus slave отдаёт `0 [00 00]` после переименования HA-сущности** | Маппинг ссылается на старое имя. Проверять `HA poll -> sensor.<entity>` в логе bridge. Реальная поломка 2026-09-15: slave 100 отдавал 0, после фикса — 23.97 |
| 21 | **Проверить slave bridge без ZONT нельзя** | Bridge — serial-slave: отвечает только на запрос. Признаки работы: `HA poll -> <entity> = <val>` (поллер) и `Response: ... = <val> [<hex>]` (ответ ZONT'у) |