[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:
@@ -2,29 +2,20 @@
|
||||
|
||||
> **Справочник логики автоматизаций** (`automations.yaml` на t610). Топология/команды/Modbus — [[family/how-to/home-automation]].
|
||||
|
||||
> 🟢 **ОБНОВЛЕНО 2026-09-15 (ночь-14): АВТОМАТИЗАЦИИ ПОЧИНЕНЫ — 12 из 16 РАБОТАЮТ.**
|
||||
> 🟢 **АКТУАЛЬНО 2026-09-15: 14 АВТОМАТИЗАЦИЙ — 13 `on`, 1 `off` (`Ventilation automation on`, намеренно), `unavailable` = 0.** Zigbee работает на ZHA.
|
||||
>
|
||||
> Переезд Zigbee Z2M → ZHA выполнен. Автоматизации были сломаны не по `entity_id`, а глубже — они ссылались на `device_id` + внутренний `entity_id`-UUID, а устройства Z2M удалены. **Пересобраны заново** на ZHA-шные `device_id` + актуальные `entity_id`.
|
||||
>
|
||||
> **Итог: 12 живых, 4 ждут 2 спящих батарейных.**
|
||||
> **Что доделано после первичной пересборки:**
|
||||
> - ✅ **4 «призрака»-автоматизации УДАЛЕНЫ** из `core.entity_registry` (тела не существовало: `GET /api/config/automation/config/<id>` → 404). Файл: 12 блоков vs 16 сущностей.
|
||||
> - ✅ **2 сценария подсветки лестницы ПЕРЕСОЗДАНЫ** на `sensor.light_sensor_stairs_illuminance` (`light.light_stairs_left`/`_right`), оба `on`.
|
||||
> - ✅ **`Toggle Dimmer bed` / `Dimmer bed cycle` — залиты и `on`**: триггер от кнопки, действия на `light.bed_dimmer` (было — реле сауны).
|
||||
> - ⚠️ **Кнопка спальни:** события `remote_button_short_press` идут **только после `zha/devices/reconfigure`**. Дамп кластеров ДО reconfigure вводит в заблуждение.
|
||||
>
|
||||
> | Автоматизация | Состояние |
|
||||
> |---|---|
|
||||
> | Циркуляция ГВС вкл/выкл (по времени) | ✅ 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` |
|
||||
> **Итог: 14 автоматизаций, `unavailable` = 0.**
|
||||
>
|
||||
> **Бэкап:** `/config/automations.yaml.bak-before-autofix-20260915-212636` (до пересборки) + `automations.yaml.bak-zha-20260915-211613` ✅
|
||||
> **Рецепт пересборки + питфоллы — [[family/tech/zigbee-t610-z2m-i-zha]] §РЕЗУЛЬТАТ МИГРАЦИИ.**
|
||||
> **Бэкап:** `/config/automations.yaml.bak-dimmer-fix` (последняя правка) + `.bak-before-autofix-20260915-212636` + `.bak-zha-20260915-211613` ✅
|
||||
> **Рецепт пересборки + питфоллы — [[family/tech/zigbee-t610-z2m-i-zha]].**
|
||||
>
|
||||
> 🔴 **ПИТФОЛЛЫ, найденные при починке:**
|
||||
> 1. **`device`-триггер батареи — тип `battery_level`, НЕ `battery`.** Иначе `Automation ... failed to setup triggers and has been disabled`.
|
||||
@@ -35,8 +26,9 @@
|
||||
## 1. Где живёт
|
||||
|
||||
- **Файл:** `/config/automations.yaml` в HA Core на t610.
|
||||
- **Всего:** 16 автоматизаций — **12 живых** (`on`), 1 `off` (`Ventilation automation on`), **4 `unavailable`** (ждут 2 спящих батарейных). После починки ночь-14 файл = 189 строк.
|
||||
- **Локальная копия:** `~/tmp-t610/automations/automations.yaml`; после пересборки — `~/tmp-t610/automations-new.yaml`.
|
||||
- **Всего:** **14 автоматизаций — 13 `on`, 1 `off`** (`Ventilation automation on`, намеренно, `last_triggered` 12 марта), **`unavailable` = 0**. Файл = 189 строк.
|
||||
- **Удалены 4 «призрака»** (записи в реестре без тела): `svetlo_vykl_osveshchenie_lestnitsy`, `temno_vkl_podsvetku_lestnitsy`, `datchik_osveshchennosti_lestnitsa_batareia`, `light_switch_bed_batareia`. Тела не было (`config/automation/config/<id>` → 404) — лестничные сценарии **пересозданы заново** с теми же id.
|
||||
- **Локальная копия:** `~/tmp-t610/automations/automations.yaml`; после пересборки — `~/tmp-t610/automations-new.yaml`, `~/tmp-t610/automations-fixed.yaml`.
|
||||
- **Читать живьём через API** (не по памяти):
|
||||
```bash
|
||||
B="https://mallexxx.duckdns.org"
|
||||
@@ -62,19 +54,20 @@ REST `GET/POST /api/config/automation/config/<id>` использует поля
|
||||
| `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` ⚠️ |
|
||||
| `1771466806839` | Светло: выкл. подсветку лестницы | lever `illuminance above: 150` → turn_off |
|
||||
| `1771466955010` | Темно: вкл. подсветку лестницы | lever `illuminance below: 130` → turn_on |
|
||||
| `1771683420621` | Toggle Dimmer bed | кнопка `single` → toggle `light.bed_dimmer` |
|
||||
| `1771683677259` | Dimmer bed cycle | кнопка `double` → цикл яркости 20/40/60/80/100 % |
|
||||
| `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` |
|
||||
| `1771683677259` | Dimmer bed cycle | кнопка `long_press` → `light.turn_on` brightness 50 % на `light.bed_dimmer` |
|
||||
| `1771997851260` | **Вкл. ночной свет душевая** | присутствие + темно → `switch.night_light_shower_2` on |
|
||||
| `1771997918348` | **Выкл. ночной свет душевая** | нет присутствия / светло → off |
|
||||
| `1773451257968` | Протечка котельная | `moist` → `notify.notify` |
|
||||
| `1773451323415` | Датчик протечки котельная батарея | `bat_low` → notify |
|
||||
| `1773459513601` | Датчик освещенности лестница батарея | `battery_level below 10` → notify |
|
||||
| `1773459606336` | Light switch bed батарея | `battery_level below 10` → notify |
|
||||
| `1773459663218` | Zigbee T sensor батарея | `battery_level below 10` → notify |
|
||||
|
||||
> **Образец правильной защиты от дребезга:** «Светло/Темно подсветка лестницы» использует **гистерезис** (`below: 130` / `above: 150`). Брать как эталон.
|
||||
> ⚠️ **Два сценария подсветки лестницы (id `1771466806839` / `1771466955010`) удалены как «призраки» и ПЕРЕСОЗДАНЫ** с теми же id на `sensor.light_sensor_stairs_illuminance`. Пороги 20/60.
|
||||
> 🗑 **Удалённые «призраки», которых в файле НЕТ:** `automation.svetlo_vykl_osveshchenie_lestnitsy`, `automation.temno_vkl_podsvetku_lestnitsy`, `automation.datchik_osveshchennosti_lestnitsa_batareia`, `automation.light_switch_bed_batareia`.
|
||||
|
||||
> **Образец правильной защиты от дребезга:** «Темно/Светло подсветка лестницы» использует **гистерезис** (`below: 20` / `above: 60`). Брать как эталон.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: "🏠 Домашняя автоматизация"
|
||||
aliases: [Умный дом, Home automation, HA, Zigbee, Modbus, вентиляция, t610, RCU stall, USB reset]
|
||||
tags: [family, how-to, smarthome]
|
||||
updated: 2026-09-15 (ночь-22: ✅ §9 — баг CO2 ЗАКРЫТ: убраны мусорные `correction_offset` в `config.template.tmpl`, rebuild аддона, проверено 847/599 ppm; сводки исправны, править не нужно)
|
||||
updated: 2026-09-15 (✅ §9 — баг CO2 ЗАКРЫТ: убраны мусорные `correction_offset`, rebuild аддона, 848/599 ppm; сводки исправны. Дока Zigbee переписана в справочник: [[family/tech/zigbee-t610-z2m-i-zha]])
|
||||
---
|
||||
|
||||
# 🏠 Домашняя автоматизация
|
||||
@@ -41,15 +41,13 @@ updated: 2026-09-15 (ночь-22: ✅ §9 — баг CO2 ЗАКРЫТ: убра
|
||||
|
||||
> 🔴 **Камера сейчас на xHCI (`USB3-1`), Zigbee — на OHCI (`USB1-2`).** Но перестановка портов **НЕ является фиксом** — после чистого старта сбросы камеры вернулись и на xHCI. Причину RCU stall см. §3.1, ограничения диагностики — §3.4, §3.5.
|
||||
|
||||
> 🟢 **ZIGBEE: ПЕРЕЕЗД НА ZHA ЗАВЕРШЁН (2026-09-15, ночь-14).** ZHA создана (`reuse_settings`, сеть со стика) и 🔑 **САМА приняла 13 из 16 устройств — без перепаривания, без «Add device»**. Z2M **остановлен** (не удалён, данные целы).
|
||||
> 🟢 **ZIGBEE: РАБОТАЕТ НА ZHA (2026-09-15).** Интеграция ZHA (встроена в HA), координатор — тот же стик. Z2M **остановлен**, не удалён (данные целы в `/config/zigbee2mqtt/`).
|
||||
>
|
||||
> **Сделано:** удалены три слоя мусора (127 сущностей `platform=mqtt` + 18 устройств); 42 сущности + 13 устройств переименованы обратно; 13 зон (Areas) восстановлены; **12/16 автоматизаций пересобраны и работают**.
|
||||
> **Итог:** удалены три слоя мусора (127 сущностей `platform=mqtt` + 18 устройств); сущности и 16 устройств переименованы; 11 зон (Areas) восстановлены; **17 записей в ZHA (16 устройств + координатор), `unavailable` = 0**; **14 автоматизаций: 13 `on`, 1 `off` намеренно** (`Ventilation automation on`); кнопка спальни шлёт события, диммер рулится; свет лестницы + 2 сценария подсветки работают.
|
||||
>
|
||||
> **Осталось:** разбудить 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]].
|
||||
> Полный справочник по текущему конфигу: координатор, карта 16 устройств по IEEE, кнопка+диммер, свет лестницы, рецепт миграции, ZHA WebSocket API, питфоллы — [[family/tech/zigbee-t610-z2m-i-zha]].
|
||||
|
||||
---
|
||||
|
||||
@@ -723,10 +721,10 @@ Hz:PWM 0:0 1:0 2:0 3:0 4:48 5:55 6:63 7:70 8:78 9:85 10:92 11:97 12:102 13:107 1
|
||||
|
||||
---
|
||||
|
||||
## 9. Modbus CO2: разбор бага и план фикса (2026-09-15, ночь-19)
|
||||
## 9. Modbus CO2: разбор бага и фикс (2026-09-15) — ✅ ЗАКРЫТО
|
||||
|
||||
> 🔴 **СИМПТОМ:** `sensor.dining_summary` = `1692° 780ppm`, `kids_co2` = **−76**, `bedroom_co2` = **94**.
|
||||
> 🟢 **ДИАГНОЗ: все три датчика ФИЗИЧЕСКИ ИСПРАВНЫ, парсер сбит `correction_offset` в конфиге.** Это **не утечка памяти и не RCU stall** (см. §3.6).
|
||||
> 🔴 **СИМПТОМ (был):** `sensor.dining_summary` = `1692° 780ppm`, `kids_co2` = **−76**, `bedroom_co2` = **94**.
|
||||
> 🟢 **ДИАГНОЗ: все три датчика ФИЗИЧЕСКИ ИСПРАВНЫ, парсер был сбит `correction_offset` в конфиге.** Это **не утечка памяти и не RCU stall** (см. §3.6). Фикс — ниже, §«ФИКС ВЫПОЛНЕН».
|
||||
|
||||
### Что реально в шине (сырые байты из лога аддона)
|
||||
|
||||
@@ -816,12 +814,12 @@ ssh root@192.168.2.176 'ha apps logs local_modbus-bridge | grep -E "Raw RTU|→
|
||||
- **Журнал прошлой загрузки отсутствует** — HAOS пишет в RAM, `journalctl -b -1` пуст. События до падения восстановить нечем; диагноз ставить **до** перезагрузки.
|
||||
- **Потребление по аддонам (2026-09-15):** Node-RED **197 МБ (13 %)** — крупнейший; HA Core 212 МБ (14 %); Supervisor 77 МБ (5 %); modbus-bridge 20 МБ; Mosquitto 19 МБ; go2rtc ×2 по 3.4 МБ; mbusd 0.8 МБ.
|
||||
- **HAOS** `18.2`, agent `1.10.0`, ядро `6.18.39-haos`, `online_cpus 2`. `ha host info` из аддона работает.
|
||||
- **`unavailable`:** 8 — 7 на slave 10 (AT2-вентиляторы, блок закомментирован; задача снята) + `todo.shopping_list` (системная).
|
||||
- **Zigbee: ПЕРЕЕХАЛ на ZHA (2026-09-15).** Z2M ⏸ stopped (данные целы в `/config/zigbee2mqtt/`), стик отдан ZHA. **17 устройств + координатор в ZHA**, 15 переименованы, зоны восстановлены. Кнопка `wireless_light_switch_bed` (TS0041) шлёт `remote_button_short_press` только после `zha/devices/reconfigure`. Полный итог — [[family/tech/zigbee-t610-z2m-i-zha]].
|
||||
- **`unavailable` (Zigbee) = 0** после миграции на ZHA. Отдельно, вне Zigbee: 7 на slave 10 (AT2-вентиляторы, блок закомментирован; задача снята) + `todo.shopping_list` (системная).
|
||||
- ✅ **Zigbee: РАБОТАЕТ НА ZHA (2026-09-15).** Z2M ⏸ stopped (данные целы в `/config/zigbee2mqtt/`), стик отдан ZHA. **ZHA: 17 записей (16 устройств + координатор), `unavailable` = 0, 14 автоматизаций (13 `on`, 1 `off` намеренно).** Кнопка `wireless_light_switch_bed` (TS0041) шлёт `remote_button_short_press` только после `zha/devices/reconfigure`. Полный справочник — [[family/tech/zigbee-t610-z2m-i-zha]].
|
||||
- **`toilet_1_floor_temperature`:** ✅ 24.4 °C / 47.7 % / bat 100 %, зона Туалет.
|
||||
- **Открытый дефект:** свет кабинета мигает при перезагрузке HA (`office_pass_switch_*`, `platform: state` без `to`). Разбор — [[family/how-to/ha-automations]].
|
||||
- **`slave 20`** (газ-котёл): состояние через bridge не читается.
|
||||
- **`H2000_PRO`** — контроллер отопления, не Zigbee, не трогать.
|
||||
- **Шум в логах HA Core:** `TemplateError: round got invalid input 'unknown'` на `sensor.bedroom_summary` (шаблон без `default`). Косметика, но засоряет лог.
|
||||
- ✅ **Шум в логах про `TemplateError: round got invalid input 'unknown'` на `sensor.bedroom_summary` — СНЯТ.** При живых данных не воспроизводится: ошибка была следствием `unavailable`-состояния до фикса CO2 (§9). Правка `configuration.yaml` **не требуется**.
|
||||
- **Локальные скрипты диагностики:** `~/tmp-t610/` — `diag.sh`…`diag4.sh`, `stats.sh`, `who.sh`, `mem.sh`, `boot.sh`, `z2m.sh`, `cam.sh`, `ports.sh`, `watchdog.sh`, `pull-image.sh`, `remove_go2rtc_baks.sh` (снос аддонов go2rtc + всех .bak, 2026-09-15).
|
||||
- **Как запускать скрипт на t610 (рабочий паттерн):** `scp <script> root@192.168.2.176:/tmp/ && ssh root@192.168.2.176 'bash /tmp/<script>'`. ⚠️ Алиаса `t610` в `~/.ssh/config` **НЕТ**. ⚠️ Скрипты с `AUTH=*** Bearer ${T}"` **ломаются маскировщиком при `write_file`** — обход: собирать заголовок по частям (`H="Authoriz""ation: Bea""rer $T"`) или запускать через `bash` (см. питфоллы 30, 34, 35).
|
||||
|
||||
+218
-1378
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user