diff --git a/family/how-to/ha-automations.md b/family/how-to/ha-automations.md index e4c7a569..746a9892 100644 --- a/family/how-to/ha-automations.md +++ b/family/how-to/ha-automations.md @@ -51,8 +51,8 @@ REST `GET/POST /api/config/automation/config/` использует поля | `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/` использует поля --- +## 2.2. ✅ ПОЧИНЕНО 2026-09-16: свитч у стола в кабинете не переключал свет + +**Симптом (Alex):** «свитч у стола не тригерит переключение света». + +**Первопричина:** триггеры обеих автоматизаций ссылались на **старые ZHA-имена**, снесённые при приведении ID к единому виду `_` (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/` с полями **во множественном числе** (`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 свет в кабинете мигает. diff --git a/family/tech/zigbee-t610-z2m-i-zha.md b/family/tech/zigbee-t610-z2m-i-zha.md index bcde07f6..5c8d1abf 100644 --- a/family/tech/zigbee-t610-z2m-i-zha.md +++ b/family/tech/zigbee-t610-z2m-i-zha.md @@ -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.` в логе bridge. Реальная поломка 2026-09-15: slave 100 отдавал 0, после фикса — 23.97 | | 21 | **Проверить slave bridge без ZONT нельзя** | Bridge — serial-slave: отвечает только на запрос. Признаки работы: `HA poll -> = ` (поллер) и `Response: ... = []` (ответ ZONT'у) |