В данной статье будет рассмотрен процесс создания автоматизаций в Home Assistant. Все будем делать через файлы конфигурации, вручную прописывая все условия и действия.

Для начала убедитесь, что Вы вынесли все файлы конфигурации в отдельную папку (строчка automation: !include_dir_merge_list имя_папки/automation в configuration.yaml). Подробнее про вынос в отдельные файлы и папки я писал в самой первой статье по настройке Home Assistant.

Далее в папке automation нужно создать файл с любым названием и расширением .yaml. Например, можно создать файл light.yaml и прописывать туда все сценарии, касающиеся освещения.

Из чего состоит автоматизация в Home Assistant

Запись автоматизаций в Home Assistant выглядит следующим образом:

- alias: имя автоматизации
  trigger: триггер
  condition: условие
  action: действие

Рассмотрим каждый из элементов.

Trigger

Триггер — событие, при наступлении которого автоматизация будет срабатывать. Например, в качестве триггера может выступать время, изменение состояния устройства, событие в системе (тот же запуск Home Assistant) и т д.

Триггер — обязательный элемент автоматизации. А еще их может быть несколько, при этом автоматизация будет запущена при наступлении любого из них.

Время в качестве триггера
    - platform: time
      at: "10:00:00"

platform: time позволяет запускать автоматизацию в определенное время. В примере выше — в 10 часов.

    - platform: time_pattern
      minutes: 5

platform: time_pattern позволяет запускать автоматизацию через указанный интервал времени. В примере выше запуск будет происходить каждый час, когда будет наступать 5 минут. В 13:05, в 14:05, в 15:05 и т д.

Если написать minutes: «/5», то автоматизация будет срабатывать каждые 5 минут. Аналогично можно написать и hours: «/5» для срабатывания автоматизации каждые 5 часов. seconds: /5 — каждые 5 секунд.

Состояние устройства
    - platform: state
      entity_id: ID сущности
      to: "unavailable"

В данном примере автоматизация сработает, когда устройство, вписанное в entity_id: перейдет в состояние «недоступно».  Если же вместо to: написать from:, то наоборот, при переходе из «недоступно» в любое другое состояние.

    - platform: state
      entity_id: ID сущности
      from: "not_home"
      to: "home"

А тут автоматизация запустится в момент изменения состояния с not_home в home. Т е когда кто-то появится дома. Можно заменить на off и on, т е на переход устройства из состояния «выключено» в состояние «включено».

    - platform: state
      entity_id: ID сущности
      to: "on"
      for: "00:00:30"

В данном примере для срабатывания автоматизации, устройство должно перейти в статус «On» и находиться в нем в течение 30 секунд. Также можно вместо to написать from. Например from: off с указанием времени (for: «00:00:30») запустит автоматизацию, если устройство перешло из состояния «выключено» в любое другое и находится в нем 30 секунд.

Температура, влажность и другие цифровые значения
    - platform: numeric_state
      entity_id: ID сущности
      above: выше указанного значения
      below: ниже указанного значения

Используя данный триггер можно запускать автоматизацию, когда значение указанной сущности пересечет заданную цифру. Можно использовать above и below как вместе, так и что-то одно.

Платформа event для устройств, подключенных через шлюз Xiaomi

Есть еще и платформа event, которая, помимо прочего, используется для отслеживания состояния подключенных к шлюзу Xiaomi кнопок и беспроводных выключателей:

    - platform: event
      event_type: xiaomi_aqara.click
      event_data:
        entity_id: ID сущности
        click_type: тип клика: single, double, long и т д

И кубика Aqara:

    - platform: event
      event_type: xiaomi_aqara.cube_action
      event_data:
        entity_id: ID сущности
        action_type: действие: flip90, flip180, move и т д

Condition

Condition — условие для срабатывания автоматизации. После того, как сработает триггер, система проверяет, выполняется ли указанное в condition условие и если да, то запускает автоматизацию. Это не обязательный элемент в автоматизациях Home Assistant.

В отличие от trigger, для срабатывания автоматизации в condition можно указать как обязательное выполнение всех условий, так и выполнение любого из перечисленных:

#Выполнение любого из условий
  condition:
    - condition: or
      conditions:
        - condition: state
          entity_id: ID сущности
          state: состояние
        - condition: state
          entity_id: ID сущности
          state: состояние
#Выполнение одного из условий
  condition:
    - condition: state
      entity_id: ID сущности
      state: состояние
    - condition: state
      entity_id: ID сущности
      state: состояние

Несколько возможных вариантов Condition:

  • state — состояние устройства. Можно, например, проверять есть ли кто дома, или включено ли определенное устройство.
  • numeric_state, как и в случае с триггером позволяет задать цифровое значение. Например, указать, что автоматизация должна запускаться только если температура выше / ниже определенного значения.
    - condition: numeric_state
      entity_id: ID сущности 
      above: выше данного значения
      below: ниже данного значения
    
  • time позволяет задать время работы автоматизации.
    - condition: time
      after: '18:30:00'
      before: '23:59:59'
    

Action

Action — действие, которое выполнит автоматизация. Например, включит свет, отправит уведомление, выключит розетку и т д. Тут можно записать как одно действие, так и несколько, в том числе и добавить паузу между ними.

Простой блок Action выглядит следующим образом:

  action:
    - service: запуск сервиса
      entity_id: ID сущности

В качестве сервиса может быть, например:

  • light.turn_on —включение света.
  • light.turn_off — выключение света.
  • light.toggle — изменение состояния светильника. Из включенного в выключенное и наоборот.
  • switch.turn_on, switch.turn_off, switch.toggle — аналогично для выключателей и реле.

Если действий несколько и нужно сделать задержку между их выполнением, то добавляем между ними следующую строчку:

    - delay: 00:01:00

Еще, при включении света, можно передать дополнительные параметры:

  action:
    service: light.turn_on
    entity_id: light.yeelight_650
    data_template:
      brightness_pct: 1
      kelvin: 3200

В данном примере при срабатывании триггера включается лампа Yeelight 650 с 1% яркости и цветовой температурой 3200К. Если вместо цветовой температуры лампочка поддерживает изменение цвета, то меняем строчку на rgb_color:.

Ссылки на другие уроки по настройке Home Assistant.

У этой записи один комментарий

  1. Антон

    Спасибо за статью.
    Скажите, как указать несколько условий:
    Например: открылась дверь с датчиком открытия и в течение 10 секунд сработал датчик движения, а Action: включить свет в прихожей. Если датчик движения не сработал после открытия двери, то ничего не происходит ?

Добавить комментарий