18 KiB
title, aliases, tags, updated, related
| title | aliases | tags | updated | related | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ⚙️ HA — автоматизации (automations.yaml) |
|
|
2026-09-15 |
|
📌 Текущий статус (2026-09-15): дефект «ночной свет душевой» — порог исправлен
8 → 6(по решению Alex), применено через REST и подтверждено. Открытый хвост: у ВЫКЛ-автоматизации по-прежнемуconditions: []— нет связи с основным освещением; при 2 lx свет может залипать. Ждём факта: залипнет или нет.
⚙️ 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/ 1off). - ⚠️ Живой конфиг читать через 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 = office_temperature_sensor (0xa4c13862d39377e6, TS0201, кабинет). Уточнено 2026-09-15 |
| (новый, device_id не зафиксирован) | 0xa4c138c650636cf6 (TS0201, _TZ3000_dowj6gyi) — Zigbee-датчик t°/влажности, спарен 2026-09-15, назначается как toilet_1_floor_temperature. См. family/how-to/zigbee2mqtt-t610 §5 |
0c7a0eb6d60e852b447266da69a7785e |
(entity-хелпер, см. mapping) |
⚠️ H2000 PRO не в этой карте и не Zigbee.
sensor.h2000_pro_*приходят отдельной интеграцией (config_entry 01M2EXY2D5YJZY71VAKJTTGB16), не через z2m/Modbus. Не трогать (Alex 2026-09-15).
Сущности радара душевой 2 (device_id 4095e7c3…, платформа mqtt):
sensor.shower_2_presence_sensor_illuminance— «Освещенность», lxbinary_sensor.shower_2_presence_sensor_presence— «Занятость», on/offsensor.shower_2_presence_sensor_target_distance— Target distance, мnumber.shower_2_presence_sensor_radar_sensitivity— 0..9number.shower_2_presence_sensor_minimum_range/maximum_range— 0..9.5 м, шаг 0.15number.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', «Вкл. ночной свет душевая»
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', «Выкл. ночной свет душевая»
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)
Симптом: ночной свет горит при включённом основном освещении; датчик присутствия при этом ничего не нарушает.
Первопричина — асимметрия логики, а НЕ датчик:
- Нет связи «основное освещение включено → ночной свет не нужен». В ВЫКЛ-автоматизации
conditions: []— она ничего не проверяет про основной свет. Гасит только поnot_occupiedилиabove: 8. - Порог
8 lxстоял ровно в центре дребезга датчика. Факт-замер 2026-09-15: покой = 2 lx, а при движении/свете значение металось 7 ↔ 12 (см. §3 «Обоснование цифрой»). Порог8попадал в мёртвую середину → ВКЛ и ВЫКЛ срабатывали по кругу. Триггерabove: 8срабатывал, но нестабильно. mode: single+occupiedдержится → человек в душевой, темно по показаниям → ночной свет горит поверх основного.
❌ Отвергнутые версии (не повторять):
- «датчик присутствия не видит порог / виноват датчик» — неверно:
binary_sensor..._presenceработает штатно (observedon/offв 04:49:15). - «порог просто надо чуть поднять» — частично верно, и это и сделано: порог
8действительно лежал в центре дребезга (7↔12), поэтому его и сдвинули на6. Но корень — отсутствие условия по основному свету: порогом это не лечится (потолок датчика ~15 lx, он не отличает ночной свет от основного).
✅ Факт-замер (2026-09-15, 04:48–04: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 м |
✅ Применённая правка (2026-09-15) — порог 8 → 6
Решение Alex (дословно): «ставь 6». Применено через REST API и подтверждено чтением конфига обратно:
| Автоматизация | Триггер | Условие |
|---|---|---|
ВКЛ 1771997851260 |
illuminance below: 6 |
below: 6 + is_occupied |
ВЫКЛ 1771997918348 |
illuminance above: 6 |
— (по-прежнему пусто) |
📊 Обоснование цифрой (ключевой замер). История sensor.shower_2_presence_sensor_illuminance:
- За 10 минут до правки (2026-09-15, 04:27–04:48 UTC):
7 → 12 → 7 → 12 → 7 → 12 → 7— метание 7 ↔ 12. - 2026-09-14 днём:
15↔8,13↔8,5↔0— тот же дребезг вокруг 8. - Рабочий диапазон датчика в этой точке — всего 0…15 lx. Порог
8стоял ровно в центре метания → ВКЛ/ВЫКЛ хлопали туда-сюда.
⚠️ Остаточный риск (предупреждён Alex, принят осознанно): при 2 lx (покой) ВЫКЛ ждёт above: 6 и может не наступить → ночной свет залипнет. Гистерезис сознательно не сделан по прямому указанию Alex.
Если залипнет — варианты (по возрастанию): ① гистерезис вкл below 4 / выкл above 10; ② гасить ночной свет по факту включения основной лампы (блокер: сущность основного освещения верхней душевой неизвестна — среди light.*/switch.* душевой есть только night_light_shower_2); ③ калибровка illuminance_calibration радара.
Артефакты:
- Скрипт-образец:
~/tmp-t610/fix_shower_light_threshold.sh(читает конфиг → правит только.below/.above== 8 → POST → читает обратно). - Бэкап файла:
~/tmp-t610/automations/automations.yaml.bak-20260915-105455.
🔴 ПИТФОЛЛ (стоил одной пустой заливки): REST GET/POST /api/config/automation/config/<id> отдаёт и принимает поля во МНОЖЕСТВЕННОМ числе — triggers / conditions (в файле automations.yaml — trigger/condition). Правка по единственному числу через API молча уходит в пустые пути: POST возвращает 200 {"result":"ok"}, но значения НЕ меняются. → ВСЕГДА читать конфиг обратно и сверять фактические значения.
Прочие наблюдения (не правки)
fading_time= 10 с,maximum_range= 2.85 м — проверить, покрывает ли зона всю душевую.- Калибровка
illuminance_calibrationрадара: 2 lx при выключенном свете в закрытой душевой — правдоподобно, но потолок 15 lx подозрительно низок. - Луковичный вывод: потолок датчика ~15 lx означает, что он не отличает ночной свет от основного — оба выше его шкалы. Поэтому порогом задача «гасить ночной при включении основного» не решается в принципе, нужен триггер по основной лампе (см. блокер выше).
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 заранее, не ретраить вслепую. - 🔴 Форма полей через REST — МНОЖЕСТВЕННОЕ число:
GET/POST /api/config/automation/config/<id>используетtriggers/conditions(в файле —trigger/condition). Правка по единственному числу молча уходит в пустые пути:POSTотдаёт200 {"result":"ok"}, значения НЕ меняются. Всегда читать обратно и сверять. - История значения (для доказательства дребезга) — эндпоинт истории:
Возвращает список списков; брать
GET /api/history/period/<ISO-TS>?filter_entity_id=<entity>&minimal_response&no_attributes.[0], печататьlast_changed+state. Пример (последние 25 мин):Именно этим способом доказано метание 7↔12 вокруг порога 8.curl -s -H @/tmp/hdr.txt "http://192.168.2.176/api/history/period/$(date -u -v-25M '+%Y-%m-%dT%H:%M:%S')+00:00?filter_entity_id=sensor.shower_2_presence_sensor_illuminance&minimal_response&no_attributes" - Две сущности = одно реле:
switch.night_light_shower_2иlight.night_light_shower_2— один и тот же физический реле (switch_as_x). Управлять надо той, к которой привязана автоматизация (switch.), иначе состояние «расходится» в UI.
Связанные заметки
- 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)