В данной статье будет рассмотрен процесс создания автоматизаций в 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) и т д.
Триггер — обязательный элемент автоматизации. А еще их может быть несколько, при этом автоматизация будет запущена при наступлении любого из них.
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:.
Спасибо за статью.
Скажите, как указать несколько условий:
Например: открылась дверь с датчиком открытия и в течение 10 секунд сработал датчик движения, а Action: включить свет в прихожей. Если датчик движения не сработал после открытия двери, то ничего не происходит ?