[2026-09-15] eagle: family/how-to/ha-automations.md family/plans/t610-zigbee-ids-battery-freshsensors-modbus.md
This commit is contained in:
@@ -2,7 +2,12 @@
|
||||
|
||||
> **Справочник логики автоматизаций** (`automations.yaml` на t610). Топология/команды/Modbus — [[family/how-to/home-automation]].
|
||||
|
||||
> 🟢 **АКТУАЛЬНО 2026-09-15: 14 АВТОМАТИЗАЦИЙ — 13 `on`, 1 `off` (`Ventilation automation on`, намеренно), `unavailable` = 0.** Zigbee работает на ZHA.
|
||||
> 🟢 **АКТУАЛЬНО 2026-09-15 (поздний вечер): 26 АВТОМАТИЗАЦИЙ — 25 `on`, 1 `off` (`Ventilation automation on`, намеренно), `unavailable` = 0.** Zigbee работает на ZHA.
|
||||
>
|
||||
> **➕ Добавлено в этот вечер: 12 автоматизаций контроля батарей** (id `8800000000000`…`8800000000011`, все `on`). Порог **20 %**, выдержка **2 ч**, двойной канал: `persistent_notification` + push `notify.mobile_app_sm_s931b`; при возврате заряда уведомление гасится (`notification_id: bat_<slug>`). Детали — §5.
|
||||
> ⛔ **Удалены 2 прежние батарейные** (`1773451323415`, `1773459663218`) — были с порогом 10 и без push. Их осиротевшие записи в реестре вычищены (питфолл §5.1).
|
||||
> 🔄 **Переименованы** ссылки после единообразия ID: `light.night_light_shower_2` → `light.dushevaia_night_light`, `sensor.tz3000_akqdg6g7_ts0201_batareia` → `sensor.kabinet_temperature_battery`.
|
||||
> 📄 Полный отчёт о работах: [[family/plans/t610-zigbee-ids-battery-freshsensors-modbus]].
|
||||
>
|
||||
> Переезд Zigbee Z2M → ZHA выполнен. Автоматизации были сломаны не по `entity_id`, а глубже — они ссылались на `device_id` + внутренний `entity_id`-UUID, а устройства Z2M удалены. **Пересобраны заново** на ZHA-шные `device_id` + актуальные `entity_id`.
|
||||
>
|
||||
@@ -12,7 +17,7 @@
|
||||
> - ✅ **`Toggle Dimmer bed` / `Dimmer bed cycle` — залиты и `on`**: триггер от кнопки, действия на `light.bed_dimmer` (было — реле сауны).
|
||||
> - ⚠️ **Кнопка спальни:** события `remote_button_short_press` идут **только после `zha/devices/reconfigure`**. Дамп кластеров ДО reconfigure вводит в заблуждение.
|
||||
>
|
||||
> **Итог: 14 автоматизаций, `unavailable` = 0.**
|
||||
> **Итог на 2026-09-15 (поздний вечер): 26 автоматизаций, `unavailable` = 0.**
|
||||
>
|
||||
> **Бэкап:** `/config/automations.yaml.bak-dimmer-fix` (последняя правка) + `.bak-before-autofix-20260915-212636` + `.bak-zha-20260915-211613` ✅
|
||||
> **Рецепт пересборки + питфоллы — [[family/tech/zigbee-t610-z2m-i-zha]].**
|
||||
@@ -26,7 +31,8 @@
|
||||
## 1. Где живёт
|
||||
|
||||
- **Файл:** `/config/automations.yaml` в HA Core на t610.
|
||||
- **Всего:** **14 автоматизаций — 13 `on`, 1 `off`** (`Ventilation automation on`, намеренно, `last_triggered` 12 марта), **`unavailable` = 0**. Файл = 189 строк.
|
||||
- **Всего:** **26 автоматизаций — 25 `on`, 1 `off`** (`Ventilation automation on`, намеренно, `last_triggered` 12 марта), **`unavailable` = 0**. Файл = 228 строк.
|
||||
- **Бэкапы перед правками 2026-09-15 (поздний вечер):** `/config/automations.yaml.bak-preids-20260915-223427`; рабочая копия — `~/tmp-t610/autfix-20260915-223427/automations.yaml` (плюс `.pre-bat` — до добавления батарейных).
|
||||
- **Удалены 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** (не по памяти):
|
||||
@@ -58,11 +64,13 @@ REST `GET/POST /api/config/automation/config/<id>` использует поля
|
||||
| `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 |
|
||||
| `1771997851260` | **Вкл. ночной свет душевая** | присутствие + темно → `light.dushevaia_night_light` on |
|
||||
| `1771997918348` | **Выкл. ночной свет душевая** | нет присутствия / светло → off |
|
||||
| `1773451257968` | Протечка котельная | `moist` → `notify.notify` |
|
||||
| `1773451323415` | Датчик протечки котельная батарея | `bat_low` → notify |
|
||||
| `1773459663218` | Zigbee T sensor батарея | `battery_level below 10` → notify |
|
||||
| `8800000000000`…`8800000000011` | **Батарея: 12 шт.** | см. §6 |
|
||||
|
||||
> 🔄 **Переименовано 2026-09-15:** ссылки на `light.night_light_shower_2` → `light.dushevaia_night_light` (id `1771997851260`, `1771997918348`).
|
||||
> ⛔ **Удалены из карты:** `1773451323415` «Датчик протечки котельная батарея» и `1773459663218` «Zigbee T sensor батарея» — заменены 12 единообразными (§6). Тела удалены, осиротевшие записи реестра вычищены.
|
||||
|
||||
> ⚠️ **Два сценария подсветки лестницы (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`.
|
||||
@@ -101,10 +109,9 @@ REST `GET/POST /api/config/automation/config/<id>` использует поля
|
||||
|
||||
- `sensor.shower_2_presence_sensor_illuminance` — освещённость, lx
|
||||
- `binary_sensor.shower_2_presence_sensor_presence` — занятость
|
||||
- `switch.night_light_shower_2` — **само реле** (его дёргает автоматизация)
|
||||
- `light.night_light_shower_2` — хелпер `switch_as_x` поверх того же реле
|
||||
- `light.dushevaia_night_light` — **само реле** (его дёргает автоматизация; бывш. `light.night_light_shower_2`)
|
||||
|
||||
> ⚠️ **Две сущности = одно реле.** Управлять надо `switch.` — той, к которой привязана автоматика, иначе состояние «расходится» в UI.
|
||||
> 📌 **2026-09-15:** хелпер `switch.night_light_shower_2` (`switch_as_x`) снесён при переезде на ZHA. Осталась одна сущность — `light.dushevaia_night_light`. Автоматизации ссылаются именно на неё.
|
||||
|
||||
**Автоматизации:**
|
||||
|
||||
@@ -122,7 +129,83 @@ REST `GET/POST /api/config/automation/config/<id>` использует поля
|
||||
|
||||
---
|
||||
|
||||
## 5. Диагностика
|
||||
## 5. 🔋 Контроль батарей — 12 автоматизаций (2026-09-15)
|
||||
|
||||
**Единый шаблон**, id `8800000000000`…`8800000000011`:
|
||||
|
||||
```yaml
|
||||
- id: '8800000000000'
|
||||
alias: 'Батарея: <место>'
|
||||
description: 'Контроль заряда Zigbee-датчика. Порог 20%, выдержка 2ч.'
|
||||
triggers:
|
||||
- trigger: numeric_state
|
||||
entity_id: sensor.<device>_battery
|
||||
below: 20
|
||||
for: '02:00:00'
|
||||
id: low
|
||||
- trigger: numeric_state
|
||||
entity_id: sensor.<device>_battery
|
||||
above: 20
|
||||
id: ok
|
||||
conditions: []
|
||||
actions:
|
||||
- choose:
|
||||
- conditions: [{condition: trigger, id: low}]
|
||||
sequence:
|
||||
- action: persistent_notification.create
|
||||
data:
|
||||
title: '🔋 Батарея разряжена'
|
||||
message: '<место> — заряд {{ states(''sensor.<device>_battery'') }}%. Замените батарейку.'
|
||||
notification_id: bat_<slug>
|
||||
- action: notify.mobile_app_sm_s931b
|
||||
data:
|
||||
title: '🔋 Батарея разряжена'
|
||||
message: '<место> — заряд {{ states(''sensor.<device>_battery'') }}%. Замените батарейку.'
|
||||
- conditions: [{condition: trigger, id: ok}]
|
||||
sequence:
|
||||
- action: persistent_notification.dismiss
|
||||
data: {notification_id: bat_<slug>}
|
||||
mode: single
|
||||
```
|
||||
|
||||
| id | Место | Сущность заряда |
|
||||
|---|---|---|
|
||||
| `8800000000000` | Туалет 1 этаж (тёплый пол) | `sensor.toilet_1_floor_temperature_battery` |
|
||||
| `8800000000001` | Лестница (освещённость) | `sensor.light_sensor_stairs_battery` |
|
||||
| `8800000000002` | Душевая (тёплый пол) | `sensor.dushevaia_floor_temperature_battery` |
|
||||
| `8800000000003` | Котельная (протечка) | `sensor.boiler_water_leak_battery` |
|
||||
| `8800000000004` | Кабинет (температура) | `sensor.kabinet_temperature_battery` |
|
||||
| `8800000000005` | Гостиная (тёплый пол) | `sensor.living_room_floor_temperature_battery` |
|
||||
| `8800000000006` | Серая (тёплый пол) | `sensor.severnaia_floor_temperature_battery` |
|
||||
| `8800000000007` | Кабинет (тёплый пол) | `sensor.kabinet_floor_temperature_battery` |
|
||||
| `8800000000008` | Кухня (тёплый пол) | `sensor.kitchen_floor_temperature_battery` |
|
||||
| `8800000000009` | Ванная (тёплый пол) | `sensor.vannaia_floor_temperature_battery` |
|
||||
| `8800000000010` | Прихожая (тёплый пол) | `sensor.prikhozhaia_floor_temperature_battery` |
|
||||
| `8800000000011` | Спальня (кнопка) | `sensor.wireless_light_switch_bed_battery` |
|
||||
|
||||
### 5.1. 🔴 Питфоллы
|
||||
|
||||
1. **Выдержка `for: '02:00:00'` обязательна.** Батарейные TS0201 под нагрузкой дают кратковременные просадки — без выдержки прилетают ложные алерты.
|
||||
2. **Двойной канал.** `persistent_notification` = видно в UI; `notify.mobile_app_sm_s931b` = push на телефон. Alex: «Видимо persistent с пушом на тел».
|
||||
3. **Второй триггер `ok` (`above: 20`) гасит уведомление** через `notification_id` — иначе алерт висит вечно. Для этого у `persistent_notification.create` обязателен `notification_id: bat_<slug>`.
|
||||
4. 🔴 **Сирота-автоматизация: `unavailable` при чистом YAML.** Тело удалено из `automations.yaml`, запись в реестре осталась. Удаление:
|
||||
```python
|
||||
# Если config/entity_registry/remove падает с id_reuse:
|
||||
# "Identifier values have to increase"
|
||||
{"type":"config/entity_registry/update","entity_id": E, "disabled_by": "user"} # сначала
|
||||
{"type":"config/entity_registry/remove","entity_id": E} # потом
|
||||
```
|
||||
Реальный случай: после удаления тел `1773451323415` / `1773459663218` обе сущности остались `unavailable`.
|
||||
5. ⚠️ **`sensor.wireless_light_switch_bed_battery` = `unknown`** — кнопка спальни спит. Автоматизация создана, но триггера не будет, пока датчик не проснётся (лечится нажатием кнопки).
|
||||
6. ⚠️ **Проверять имена сущностей после переименований:** в ZHA домен бывает `_batareia`, но `trigger: battery_level` (не `battery`).
|
||||
|
||||
**Скрипты:** `~/tmp-t610/add_battery_autos.py` (генератор), `~/tmp-t610/rm_orphans.py`, `rm_orphan2.py`, `rm_orphan3.py`.
|
||||
|
||||
> 📄 Полный отчёт о работах: [[family/plans/t610-zigbee-ids-battery-freshsensors-modbus]]
|
||||
|
||||
---
|
||||
|
||||
## 6. Диагностика
|
||||
|
||||
```bash
|
||||
# История значения (доказательство дребезга)
|
||||
|
||||
Reference in New Issue
Block a user