Files
obsidian-vault/family/how-to/ha-automations.md
T

154 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "⚙️ HA — автоматизации (automations.yaml)"
aliases: [HA automations, Автоматизации HA, automations.yaml, Ночной свет душевая]
tags: [family, how-to, smarthome, home-assistant, automation]
updated: 2026-09-15
related:
- "[[family/plans/t610-home-automation]]"
- "[[family/how-to/home-automation]]"
- "[[family/documents/home-automation-wishlist]]"
---
# ⚙️ HA — автоматизации (`automations.yaml`)
> **Назначение документа:** разбор логики автоматизаций Home Assistant на t610, карта «устройство ↔ entity_id ↔ device_id», найденные дефекты. Карта железа/Modbus — [[family/how-to/home-automation]]. Хост/аддоны/доступ — [[family/plans/t610-home-automation]].
## 1. Где живёт
- **Файл:** `/config/automations.yaml` в HA Core на t610.
- **Локальная копия-эталон (проверено 2026-09-15):** `~/tmp-t610/automations/automations.yaml` (208 строк, 16 автоматизаций) и `~/tmp-t610/etap3-fix/automations.yaml` (версия после правки зон, 2026-09-14).
- **Итого автоматизаций:** **16** (15 `on` / 1 `off`).
- ⚠️ **Живой конфиг читать через REST API**, а не по памяти: `GET /api/config/automation/config/<id>`. Готовый скрипт-образец — `~/tmp-t610/check_aut_dushev.sh`.
## 2. Карта device_id ↔ entity_id (из `~/tmp-t610/etap3-fix/devid_mapping.json`)
| device_id | Устройство / назначение |
|---|---|
| `4095e7c3b47b9dc9640cfb8c3aeff022` | **`shower_2_presence_sensor`** — радар присутствия душевой 2 (Tuya `ZY-M100-S_2` / TS0601) |
| `4d6e55505ff7dbad13d2674cdcb18d5a` | **`night_light_shower_2`** — ночная подсветка душевой 2 (Tuya `TS0001`, Zigbee-реле) |
| `1ea8bbc2612dde303e4279bc5fbad57a` | `light_sensor_stairs` — датчик освещённости лестницы (TS0222) |
| `028b7d9f489c87bdc9e563473a1d61e8` | подсветка лестницы (`switch`) |
| `5cd5d9d2d289b5e470bbeaac0eb7905c` | кнопка/диммер спальни (TS0043-подобная) |
| `098a641cb1d30f08f1ae293e00d9885b` | `light.bed_dimmer` (TS0052) |
| `16d2c6f64ec399e5261c89b35c1e75c6` | розетка циркуляции ГВС |
| `b9d384a51b780a7924ed9504eddec12e` | `boiler_water_leak` — датчик протечки котельной (TS0207) |
| `bcf47eeae909877978bdaf6c705210f8` | датчик t° Zigbee |
| `0c7a0eb6d60e852b447266da69a7785e` | *(entity-хелпер, см. mapping)* |
**Сущности радара душевой 2** (`device_id 4095e7c3…`, платформа `mqtt`):
- `sensor.shower_2_presence_sensor_illuminance` — «Освещенность», lx
- `binary_sensor.shower_2_presence_sensor_presence` — «Занятость», on/off
- `sensor.shower_2_presence_sensor_target_distance` — Target distance, м
- `number.shower_2_presence_sensor_radar_sensitivity` — 0..9
- `number.shower_2_presence_sensor_minimum_range` / `maximum_range` — 0..9.5 м, шаг 0.15
- `number.shower_2_presence_sensor_detection_delay` — 0..10 с
- `number.shower_2_presence_sensor_fading_time` — 0.5..1500 с
- `sensor.shower_2_presence_sensor_linkquality`
**Сущности ночной подсветки душевой 2** (`device_id 4d6e5550…`):
- `switch.night_light_shower_2`**само реле** (его и дёргает автоматизация)
- `light.night_light_shower_2` — хелпер `switch_as_x` поверх того же реле (`config_entry 01KKC78ZM7QRJQY36Q4D27KGCD`, `target_domain: light`, `invert: false`). **Один и тот же физический релей — управлять надо `switch.`-сущностью, к которой привязана автоматика.**
- `number.night_light_shower_2_countdown`, `select..._power_on_behavior`, `select..._switch_type`, `sensor..._linkquality`
## 3. Ночной свет душевой — две автоматизации
**ВКЛ — `id: '1771997851260'`, «Вкл. ночной свет душевая»**
```yaml
triggers:
- platform: device
type: occupied # binary_sensor.shower_2_presence_sensor_presence
device_id: 4095e7c3b47b9dc9640cfb8c3aeff022
entity_id: b4a50e16942064f9c00d0d86501a667e
- platform: device
type: illuminance # sensor.shower_2_presence_sensor_illuminance
device_id: 4095e7c3b47b9dc9640cfb8c3aeff022
entity_id: df9fe40b9d96de3b1bdeeb62707a7cab
below: 6 # ✅ применено 2026-09-15 (было 8)
conditions:
- condition: device
type: is_illuminance ... below: 6
- condition: device
type: is_occupied
actions: # turn_on
- type: turn_on domain: switch entity_id: fa72bc65e5cf9e9249a5b0d377e5a3f4
# = switch.night_light_shower_2
mode: single
```
**ВЫКЛ — `id: '1771997918348'`, «Выкл. ночной свет душевая»**
```yaml
triggers:
- type: not_occupied # присутствие пропало
- type: illuminance ... above: 6 # ✅ применено 2026-09-15 (было 8)
conditions: [] # ⚠️ ПУСТО — нет ни одного условия
actions: # turn_off switch.night_light_shower_2
mode: single
```
### 🔴 Дефект (диагностирован 2026-09-15)
**Симптом:** ночной свет горит при включённом основном освещении; датчик присутствия при этом ничего не нарушает.
**Первопричина — асимметрия логики, а НЕ датчик:**
1. **Нет связи «основное освещение включено → ночной свет не нужен».** В ВЫКЛ-автоматизации `conditions: []` — она ничего не проверяет про основной свет. Гасит только по `not_occupied` или `above: 8`.
2. **Порог `8 lx` недостижим.** Факт-замер 2026-09-15: `illuminance` = **2 lx** при выключенном свете, но основное освещение не подняло значение выше 8 (у TS0601 `reportable_change: 5`, сенсор расположен в стороне от основного потока). Триггер `above: 8` **не срабатывает** → ВЫКЛ не запускается.
3. **`mode: single` + `occupied` держится** → человек в душевой, темно по показаниям → ночной свет горит поверх основного.
**❌ Отвергнутые версии (не повторять):**
- «датчик присутствия не видит порог / виноват датчик» — **неверно**: `binary_sensor..._presence` работает штатно (observed `on`/`off` в 04:49:15).
- «порог просто надо чуть поднять» — **частично**: порог лишь симптом; корень в отсутствии условия по основному свету.
**✅ Факт-замер (2026-09-15, 04:4804:49 UTC):**
| Сущность | Значение |
|---|---|
| `sensor.shower_2_presence_sensor_illuminance` | 2 lx |
| `binary_sensor.shower_2_presence_sensor_presence` | off |
| `switch.night_light_shower_2` | off |
| `number..._fading_time` | 10 с |
| `number..._maximum_range` | 2.85 м |
### Предложенные правки (НЕ применены — ждут апрува Alex)
1. **Добавить в ВЫКЛ триггер/условие по основному освещению душевой** — гасить ночной свет, как только зажглось основное. ⚠️ **Блокер:** неизвестна сущность основного освещения верхней душевой (среди `light.*`/`switch.*` душевой найден только `night_light_shower_2`). Нужен ответ Alex.
2. Поднять порог `8 → 1520 lx` **или** откалибровать `illuminance_calibration` радара (2 lx при внутреннем свете подозрительно мало).
3. `fading_time` = 10 с, `maximum_range` = **2.85 м** — проверить, покрывает ли зона всю душевую.
## 4. Прочие содержательные автоматизации
| id | alias | Логика |
|---|---|---|
| `1768585827761` | Выключить циркуляцию ГВС | `time 23:00` → turn_off |
| `1768585922970` | Включить циркуляцию ГВС | `time 09:30` → turn_on |
| `1770404069135` | Ventilation automation on | `time 05:00``fan.turn_on fan.automation` |
| `5735cb9f855e462dbdbdf680d0d6a66f` | office_pass_switch_table | `switch.office_table_light_switch_l1` change → toggle `light.smart_light_office_left` |
| `45b96f6f38f6488ba70266fa5da665f5` | office_pass_switch_main | `switch.office_table_light_switch_l2` change → 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 % |
| `1771997851260` | **Вкл. ночной свет душевая** | см. §3 🔴 |
| `1771997918348` | **Выкл. ночной свет душевая** | см. §3 🔴 |
| `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) — это единственная пара с правильной защитой от дребезга. Паттерн годится как образец для правки душевой.
## 5. Питфоллы диагностики
- **Секрет-маскировщик Hermes** подменяет `Bearer $(cat ...)` на `***` → собирать заголовок через `printf` в файл, затем `curl -H @/tmp/hdr.txt`. Рабочий `/tmp/.hatok` уже есть на Mac.
- `ha apps logs <slug>` обрезает вывод и отдаёт старый буфер → живой лог только через API.
- Запросы к `http://192.168.2.176` (raw IP, plain HTTP, private network) **требуют апрува** в Hermes — предупреждать Alex заранее, не ретраить вслепую.
## Связанные заметки
- [[family/plans/t610-home-automation]] — единственный рабочий документ по техчасти (хост, доступ, аддоны, Modbus, Zigbee)
- [[family/how-to/home-automation]] — карта железа: AT2 (параметры/PWM), Slave ID, регистры заслонок/реле, ZONT relays
- [[family/documents/home-automation-wishlist]] — роадмап автоматизаций, приоритеты
- [[family/how-to/nodered-ventilation]] — алгоритм вентиляции по CO₂ (Node-RED)