Как я создаю автоматизации в HomeAssistant

Вообщем сам процесс мысль – анализ – идея – реализация весьма банальны, но интересны. Кому то может показаться, что ничего нового в этом нет – но напоминаю, что этот сайт для новичков в области УД 🙂 Я даю вам толчок – вы масштабируете, развиваете и т.д. С чего начинал сам. На примере. Есть у нас ванная комната в которой есть А) толчок Б) душевая кабинка В) система вентиляции и т.д.. В “сранном” месте можно производить много действий и все по понятиям – при этом ничего не трогая – не дергая и не ломая. Более детально. Помыться в душевой, при этом чтобы не было сюрпризов (например : отключение света через датчик в ненужный момент), сидите вы на толчке или моетесь и тупо зависли – все (а именно автоматизация должна работать более менее под вас и ваши нужды). Давайте попробуем с эмулировать в уме подобную ситуацию. Есть еще одно но – это умные датчики и китайские сервера. Но мы с вами уже научились работать вне китайского облака – однако не все иногда гладко бывает и в локалке. То один датчки не сработает, то второй не отработает (а они все могут быть взаимосвязаны последовательностью) и все причиной этому : то wifi где-то слабенький в дальней комнате, то при малой емкости батареи датчики выделываться начинают, то Zigbee не пробивает, то тупо тупят сами устройства … короче факторов может быть множество и со всеми надо бороться и учитывать 🙂 Mihome не очень надежная система УД и мы все надеемся, что когда-то …. усе будет пучком у нее. АХА. Ждите. Так вот, что там с ванной комнатой. Приведу ниже автоматизацию всей ванной комнаты :

Рассмотрим целый блок сценериев ниже

### Включение света в Ванной 1го этажа при наличии движения
- alias: Bathroom1_Turn_ON_light_scene-1_(motion on)
  initial_state: true
  trigger:
    - platform: state
      entity_id: binary_sensor.motion_sensor_158d0001a24db4
      to: 'on'
  condition:
    - condition: state
      entity_id: switch.wall_switch_158d00014aa04d
      state: 'off'
  action:
    - service: switch.turn_on
      entity_id: switch.wall_switch_158d00014aa04d
# Начинает работать таймер на максимальное время включения света 30 минут. После если движения нет в этом промежутке времени отключает свет.
    - service: timer.start
      entity_id: timer.light_bathroom_30m_off

### Включение света в Ванной 1го этажа при открытии двери (если сразу не сработал датчик движения или сбойнул)
- alias: Bathroom1_Turn_ON_light_scene-2_(door open)
  initial_state: true
  trigger:
    - platform: state
      entity_id: binary_sensor.door_window_sensor_158d0001dad70c
      to: 'on'
  condition:
    - condition: state
      entity_id: switch.wall_switch_158d00014aa04d
      state: 'off'
  action:
    - service: switch.turn_on
      entity_id: switch.wall_switch_158d00014aa04d
    - service: timer.start
      entity_id: timer.light_bathroom_30m_off

### Выключение света в ванной 1го этажа при отсутствии движения в течении 10 минут
- alias: Bathroom1_Turn_OFF_light_above_10_min_(no motion)
  initial_state: true
  trigger:
    - platform: state
      entity_id: binary_sensor.motion_sensor_158d0001a24db4
      to: 'off'
      for:
        minutes: 10
  condition:
    - condition: state
      entity_id: switch.wall_switch_158d00014aa04d
      state: 'on'
  action:
    - service: switch.turn_off
      entity_id: switch.wall_switch_158d00014aa04d

### Выключение света в ванной 1го этажа после закрытия двери и отсутствия движения в течении 10 минут
- alias: Bathroom1_Turn_OFF_light_above_10_min_(door closed)
  initial_state: true
  trigger:
    - platform: state
      entity_id: binary_sensor.door_window_sensor_158d0001dad70c
      to: 'off'
      for:
        minutes: 10
  condition:
    - condition: state
      entity_id: switch.wall_switch_158d00014aa04d
      state: 'on'
    - condition: state
      entity_id: binary_sensor.motion_sensor_158d0001a24db4
      state: 'off'
  action:
    - service: switch.turn_off
      entity_id: switch.wall_switch_158d00014aa04d

### Выключение света в Ванной 1го этажа в случае поломки датчиков (через 30 минут)
# Если не сработали сценарии:
#  - Bathroom1 Turn OFF light above 10 min (motion)
#  - Bathroom1 Turn OFF light above 10 min (door closed)
- alias: Bathroom1 Turn OFF (LT) Timer On
  initial_state: true
  trigger:
    - platform: event
      event_type: timer.finished
      event_data: 
        entity_id: timer.light_bathroom_30m_off
  condition:
    - condition: state
      entity_id: switch.wall_switch_158d00014aa04d
      state: 'on'
  action:
    - service: switch.turn_off
      data: 
        entity_id: switch.wall_switch_158d00014aa04d
    - service: notify.telegram
      data:
        message: "Внимание. Свет в Ванной 1эт. не был выключен продолжительное время. Время выключения: {{ states('sensor.time') }}"

### Если выключатель света в Ванной переходит в Off, то прекращаем работу таймера
- alias: Bathroom1 Turn OFF (LT) Timer Off
  trigger:
    - platform: state
      entity_id: switch.wall_switch_158d00014aa04d
      to: 'off'
  action:
    - service: timer.cancel
      entity_id: timer.light_bathroom_30m_off

### Включение света в Ванной 1го этажа по кнопке одинарного нажатия (на душевой)
- alias: Bathroom1 Turn OFF light switch click (shower)
  trigger:
    - platform: event
      event_type: xiaomi_aqara.click
      event_data:
        entity_id: binary_sensor.switch_158d00021353fd
        click_type: single
  action:
    - service: switch.turn_on
      entity_id: switch.wall_switch_158d00014aa04d
    - service: timer.start
      entity_id: timer.light_bathroom_30m_off

### Включение света в Ванной 1го этажа по кнопке одинарного нажатия (у унитаза)
- alias: Bathroom1 Turn OFF light switch click (toilet)
  trigger:
    - platform: event
      event_type: click
      event_data:
        entity_id: binary_sensor.switch_158d0001051509
        click_type: single
  action:
    - service: switch.turn_on
      entity_id: switch.wall_switch_158d00014aa04d
    - service: timer.start
      entity_id: timer.light_bathroom_30m_off

В данной ванной было внедрено.

– включение света при входе и выключение по выходе. В ванной установлено два датчика для этого действия. Весьма оправдано. Так например : датчик открытия двери Aqara и датчик движения Aqara. Один работает на условие : дверь открыта включаем свет (можно добавить еще в зависимости от времени суток (до рассвета – после рассвета … я пока иду по простому сценарию – свет включаем всегда вне зависимости от времени суток), ах сколько уже раз когда первый датчик не срабатывает – то срабатывает второй – датчик движения нацеленный (макс угол обзора 70 град) на вход и душевую и часть толчок (дверь – душевая – толчок – все три девайса расположены между собой под 45 град) . Но там то нужно 90град. Отдаляем датчик чуть выше по высоте – в самый дальний верхний угол в ванной. И так датчик движения нам подстраховывает отсутствие активности датчика открытия двери (по разным причинам выхода из строя или его тупизны). Таким образом мы решили эту проблему с включением света. Но теперь нам нужно также решить и выключением света. А выключаться он должен (обязан) в случае : 1) отсутствия движения в зоне 90 градусов видимости. 2) какого отведенного максимального времени присутвия. 3) нахождения человека в ванной внутри душевой. Но не всегда так гладко. Датчики Xiaomi это лотерея в их работе. 

И так. Если движение в ванной есть на протяжении какого времени то датчик движения это фиксирует и не позволяет отключать свет. Если движение прекратилось в течении 10 минут – свет отключится. Если не отключится – то после 30 минут сработает уже “жестко” счетчик (дополнительный триггер подсчета времени) и выключить все к чертям. По моим расчетам и наблюдениям 30 минут достаточно для любого дельца в ванной. Но всегда можно пересмотреть. А теперь допустим что дверь в ванной забыли закрыть – то также нас выручает этот таймер. Таймер максимального времени – это наша выручалка. У меня этот таймер всегда ассоциируется в нотификацией (т.е. это говорит о том что либо дверь забыли закрыть в ванной (и сценарий при этом не выполнился) или отказался работать один из двух датчик должным образом). 

    - service: notify.telegram
      data:
        message: "Внимание. Свет в Ванной 1эт. не был выключен продолжительное время. Время выключения: {{ states('sensor.time') }}"

Еще вариант. Ну там просто до усрачки нужно быть в ванной более 30 минут. 🙂 На этот случай мы дополняем дополнительным устройством кнопкой включения Aqara/Xiaomi. Очень выручает. Таким образом мы можем настроить эту кнопку (например двойное нажатие, активировав время +еще 30 минут пребывания на толчке т.е. заставить работать доп. таймер времени либо сценарий на одинарное нажатие – тупо включить свет до победного конца). Выключением света уже позаботиться сценарий отсутствие движухи в ванной каждые 10 минут которые он будет анализировать. Иногда мы заканчиваем дела ранее дополненного времени – то тут уж звиняйте : свет будет гореть в холостую ниже таймера максимального времени при условии, что не сработает датчик движения и тупо не заснет. У меня светильники в ванной светодиодные 🙂 это упрощает мои переживания – потребление весьма низкое. Время на которые датчик начинает определять движение = 1 минута на Aqara. Но это время можно сократить небольшой переделкой этого датчики, но вам чаще тогда придется менять батарейки на нем. Это минус.

Также например в душевой у меня также снаружи расположена кнопка дополнительного времени Xiaomi или Aqara – это раз. и Второй вариант : мне достаточно открыть дверь душевой как сразу сработает датчик движения и включит по новой свет. При этом можно сделать так чтобы обнулился таймер максимального времени в ванной. Датчки движения Aqara очень точно срабатывает на движуху которые направлена прямиком в него – т.е. душевой. Все эти нюансы стоит учитывать и дополнять автоматизации к максимальному близкому идеалу. Тупо построить все это дело на паре датчиков – дело для “слабаков” 🙂 Мы не ищем легких путей. Но и усложнять при этом не нужно.

Иногда (приходится) наиболее отвественные сценарии параллелить со сценариями Mihome. Так например забыл выключить утюг.

- alias: Bathroom-2 Switch Click On IRON
  trigger:
    - platform: event
      event_type: xiaomi_aqara.click
      event_data:
        entity_id: binary_sensor.switch_158d0001a66b29
        click_type: single
  condition:
    - condition: state
      entity_id: switch.wall_plug_158d000224e991
      state: 'off'
  action:
    - service: switch.turn_on
      entity_id: switch.wall_plug_158d000224e991
    - service: timer.start
      entity_id: timer.device_bathroom_1h_off

- alias: Bathroom-2 Switch Click Off IRON
  trigger:
    - platform: event
      event_type: xiaomi_aqara.click
      event_data:
        entity_id: binary_sensor.switch_158d0001a66b29
        click_type: single
  condition:
    - condition: state
      entity_id: switch.wall_plug_158d000224e991
      state: 'on'
  action:
    - service: switch.turn_off
      entity_id: switch.wall_plug_158d000224e991
    - service: timer.cancel
      entity_id: timer.device_bathroom_1h_off

# Выключение утюга в Ванной 2го этажа в случае поломки датчиков (время 1 час)

- alias: Bathroom2 Turn Off IRON (LT)
  trigger:
    - platform: event
      event_type: timer.finished
      event_data: 
        entity_id: timer.device_bathroom_1h_off
  condition:
    - condition: state
      entity_id: switch.wall_plug_158d000224e991
      state: 'on'
  action:
    - service: switch.turn_off
      data: 
        entity_id: switch.wall_plug_158d000224e991
    - service: notify.telegram
      data:
        message: "Внимание. Утюг в Ванной 2эт. не был выключен продолжительное время. Время выключения: {{ states('sensor.time') }}"

- alias: Bathroom2 Turn Off IRON (LT)
  trigger:
    - platform: state
      entity_id: switch.wall_plug_158d000224e991
      to: 'off'
  action:
    - service: timer.cancel
      entity_id: timer.device_bathroom_1h_off

В данном примере все вроде бы понятно. Забыл выключить утюг и вышел из дому – так через час он сам выключиться. Но при включении утюга я всегда ставлю сообщение от Mihome, что утюг включен. Это просто – и останется в голове какое-то время. Так как надеяться на автоматизацию в HomeAssistant тоже не дело.

Думаю я направил вам по истинному пути … как создавать толковые простые автоматизации со страховкой. Конечно можно наворотить куда еще глубже и по своим понятиям – но подобные сценарии описаннеы выше у меня уже пару лет работают и выручают. Мелочь а работает 🙂 Не стоит экономить на дополнительных датчиках.

4.3 6 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
12 комментариев
Популярные
Новые Старые
Межтекстовые Отзывы
Посмотреть все комментарии
Alexander
03.05.2020 19:58

спасибо за блог! надеюсь скоро сделаю управление колонками по ик (дурацкие 5.1мколонки от sven сбрасывают свои настройки при отключении электричества, а ещё гудят пока не замоютишь) Ох. но вот это выглядит гораздо хуже чем мой код на плюсах… а у меня сценарии при этом более навороченные. Датчики все проводные и работают стабильно. Кнопка «добавить времени» звучит как жуть какая-то неестественная. у меня есть выключатель на стене (тот же что и был до наделения ума), но его единственная функция менять основной свет и ночную подсветку (обычно выбор делается автоматически в зависимости от времени суток, но иногда -рвётся по ощущениям). Но у… Подробнее »

Alexander
03.05.2020 20:21
Ответить на  Alexander

у меня там ещё вытяжка и датчик влажности. тоже есть датчик движения и геркон у двери. и кнопка (стандартный выключатель) на стене, но она только переключает ярче/тусклее если автоматический выбор не подошёл. после посещения ванной/туалета вытяжка включается на N минут в зависимости от некоторых условий. если влажно (приняли душ), то работает дольше, пока влажность не опустится но только когда внутри никого нет (чтобы не шуметь и не продувать) ещё та же raspberry (в ванной, на которой и свет/вытяжка крутится) играет музыку по airplay и собирает показания со счётчиков. потом будут и другие функции Главная проблема: это все забирает прорву времени.… Подробнее »

Alexander
03.05.2020 20:29
Ответить на  Alexander

ок, я понимаю что тут простые решения рассматриваются. я тоже по возможности упрощаю. например как уже сказал не пишу кастомные прошивки для esp если подойдёт что-то готовое типа esphome.

сорри за бомбёжку

было бы интересно пообщаться. tg home_things_chat и mxtnr

Alexander
03.05.2020 20:06

Надеюсь писать сценарии нормальным кодом а не в yaml в ha тоже можно

Alexander
03.05.2020 20:13

не совсем понял, а на каждое движение счётчик пролонгируется или нет? должен обязательно продлеваться ещё на N минут иначе мало смысла если будет считано только первое движение. Просто по коду не очень понятно. Свет лучше не жалеть и минимальное время ставить в 20 минут. главное — комфорт, а за светодиодные лампочки 50р/мес платить это не большая цена. Тем более что при закрытии двери можно надёжно определить что внутри никого нет и сразу погасить(при условии что датчики проводные) если дверь закрылось и в течение например 30 секунд движения нет — значит все вышли. У нас правда санузел тоже совмещённый и иногда… Подробнее »

Alexander
04.05.2020 18:36

а это не рабоатет:
// Выключение света в ванной 1го этажа при отсутствии движения в течении 10 минут

надо убрать condition

Alexintras
Alexintras
19.06.2020 15:47

Подскажите пожалуйста!
Попался мне на днях в дискордовском канале ХА вот
 такой интересный макрос:
{% macro humidex(T, H) %}
{% set t = 7.5*T/(237.7+T) %}
{% set et = 10**t %}
{% set e= 6.112 * et * (H/100) %}
{% set humidex = T+(5/9)*(e-10) %}
{% if humidex < T %}
{% set humidex = T %}
{% endif %}
{{ ‘%0.1f’ % humidex }}
{% endmacro %}

{{ humidex(states(‘sensor.family_room_temperature’)|float, states(‘sensor.family_room_humidity’)|float) }}

В нем используется упрощенная формула, вычисляющая индекс humindex с температурой и непосредственно с относительной влажностью.
Как вывести вычисляемый индекс в Lovelace?

Vit
Vit
01.07.2021 22:26

Подскажите пожалуйста о timer.light_bathroom_30m_off, его нужно где-то создать или это коробочное решение.

Вася
Вася
22.10.2021 23:33
Ответить на  admin

…и в результате получаем вот такое:

Ошибка в конфигурации

Invalid config for [timer]: offset ’00:15:00′ should be format ‘HH:MM’, ‘HH:MM:SS’ or ‘HH:MM:SS.F’ for dictionary value data[‘timer’][‘light_bathroom1_15m_off’][‘duration’]. Got ‘’00:15:00′’
offset ’00:30:00′ should be format ‘HH:MM’, ‘HH:MM:SS’ or ‘HH:MM:SS.F’ for dictionary value data[‘timer’][‘light_bathroom1_30m_off’][‘duration’]. Got ‘’00:30:00′’
offset ’01:00:00′ should be format ‘HH:MM’, ‘HH:MM:SS’ or ‘HH:MM:SS.F’ for dictionary value data[‘timer’][‘device_bathroom1_1h_off’][‘duration’]. Got ‘’01:00:00′’
offset ’01:00:00′ should be format ‘HH:MM’, ‘HH:MM:SS’ or ‘HH:MM:SS.F’ for dictionary value data[‘timer’][‘light_bathroom1_1h_off’][‘duration’]. Got ‘’01:00:00′’. (See /opt/homeassistant/config/configuration.yaml, line 37).

Санек
Санек
02.03.2022 16:30

Я извиняюсь , а в чем смысл умного дома, если после выхода из ванной свет продолжает гореть до 30 минут? А где здесь экономия электричества? Уж лучше руками выключать, чем такая “автоматизация”.

12
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x