ОГЛАВЛЕНИЕ:Cтатья 1 (установка)
Cтатья 2 (базовая настройка)
Cтатья 3 (добавляем устройства)
Cтатья 4 (интеграция с HomeKit)
Статья 5 (автоматизации)Статья 6 (GUI)Статья 7 (Z-Wave)Статья 8 (MQTT)Статья 9 (HTTPS, SSL)
Введение
В Этой статье мы рассмотрим такую интересную вещь, как автоматизации в Home Assistant (далее HA). Возможности тут воистину просто безграничные по сравнению с приложением "Дом" от Apple, но и их составление не самая тривиальная задача. Для выполнения дальнейших действий в этой статье вам необходимо выполнить хотя бы три первых, которые вы можете найти в оглавлении. Итак, приступим.
Подключаем файл automations.yaml
Изначально все необходимые действия с настройками и добавлением устройств, автоматизаций, групп и прочего можно делать в стандартном файле конфигурации configuration.yaml, но для удобства, мы будем делать все действия с автоматизациями в файле automations.yaml. Для начала подключаемся к малине по ssh, идем в настройки HA:
cd /home/homeassistant/.homeassistant/
sudo nano configuration.yaml
Ищем в конфиге следующую строчку, написана она должна быть именно так, без знака # перед ней:
automation: !include automations.yaml
Если строчки по какой-то причине нет - добавляем ее, но так может быть только, если вы ее зачем-то сами удалили. Сохраняем файл и выходим из редактора. После можно уже открыть файл с автоматизациями и приступить к ее наполнению:
sudo nano automations.yaml
sudo nano automations.yaml
Вернемся немного в прошлое
Если вы читали статью 4 из оглавления в начале, то частично имеете представление об автоматизациях. Там мы рассматривали возможность отложенного запуска бриджа для интеграции в HomeKit. Рассмотрим этот пример еще раз и разберем для лучшего понимания:
- alias: 'HomeKit Delayed Start'
trigger:
- platform: homeassistant
event: start
action:
- delay: 00:01
- service: homekit.start
- alias: это название автоматизации. Отсюда HA берет entity_id для нее, кириллицу лучше не использовать
- trigger: это условие, которое заставляет автоматизацию сработать. В данном примере это событие запуска HA
- action: это действие, которое будет совершено автоматизацией. Тут это отложенный запуск плагина HomeKit
Более полный пример
Вообще автоматизации в основном имеют такой скелет:
- trigger как мы ранее говорили - действе которое запускает автоматизацию
- condition это условие, исполнение которого необходимо для автоматизации
- action ну и действие которое выполняется автоматизацией
Например:
- alias: Temperature heater 24 on morning
trigger:
platform: time
at: '06:30:00'
condition:
condition: state
entity_id: group.devices
state: home
action:
- service: climate.set_temperature
data_template:
entity_id: climate.ariston
temperature: "24"
Trigger. В данном примере тригером является определенное значение времени, а именно 6:30 утра. Именно во столько должна сработать автоматизацияCondition. Условием выполнения автоматизации является проверка значения группы devices. Оно может принимать значение home или not_home.Action. Ну и наконец действие - установка на термостате необходимой температуры в 24 градуса.
Пример посложнее
Вариантов, как использовать автоматизации очень и очень много и перечислить все в рамках этой статьи я не смогу, но покажу кое-что, что я использую. Вот более сложный пример:
# Включение света в ванной ночью и днем - alias: Turn on bathroom light trigger: platform: state entity_id: binary_sensor.motion_sensor_158d0001b177e8 to: 'on' action: - service: light.turn_on data_template: entity_id: light.bathroom brightness_pct: > {% if is_state('sun.sun', 'below_horizon') and is_state('light.living_room', 'off') %} 1 {% else %} 100 {% endif %}
# Включение света в ванной ночью и днем
- alias: Turn on bathroom light
trigger:
platform: state
entity_id: binary_sensor.motion_sensor_158d0001b177e8
to: 'on'
action:
- service: light.turn_on
data_template:
entity_id: light.bathroom
brightness_pct: >
{% if is_state('sun.sun', 'below_horizon') and is_state('light.living_room', 'off') %}
1
{% else %}
100
{% endif %}
Это автоматизация с условием включения света в ванной на 1 процент ночью, если выключен ночник в зале (это обычно значит, что я сплю) и на 100 процентов в остальных случаях (всегда днем или вечером, если включен ночник). Разберем подробнее:
- platform: state это значит что в тригере мы будем отслеживать значение состояния нужного нам датчика
- entity_id: binary_sensor.motion_sensor_158d0001b177e8 это название датчика взятое из списка всех устройств на соответствующей странице, чуть ниже покажу, где его можно взять.
- to: 'on' задаем значение, при котором должен сработать тригер
Теперь о entity_id и где его можно посмотреть. В веб версии необходимо найти слева раздел "Инструменты разработчика" и нажать на кнопку "состояния":
Справа вы увидите таблицу со всеми вашими устройствами и не только, в первой колонке которой и будет перечень entity_id:
Далее разберем секцию action: более подробно:
- service: light.turn_on указываем какое действие мы хотим сделать при срабатывании тригера
- data_template: тут мы говорим, что будем использовать далее компонент HA "шаблон", что это такое можно почитать в офф документации HA тут
- entity_id: light.bathroom поясняем каким именно устройством мы хотим управлять
- brightness_pct: > указываем, какой параметр у устройства мы хотим изменить (Внимание! В коде вместо ">" надо писать именно знак >) в данном случае это яркость в процентах
Далее нам надо будет познать немного программирования.
Что если тогда?
Что за набор букв и символов, подумаете вы:
{% if is_state('sun.sun', 'below_horizon') and is_state('light.living_room', 'off') %}
1
{% else %}
100
{% endif %}
На самом деле тут все просто.
- {% %} этими фигурными скобками мы обозначаем, что начинаем использовать шаблон
- if это, как можно понять с перевода на русский язык, использование логического "если"
- is_state('sun.sun', 'below_horizon') тут мы проверяем состояние устройства sun.sun (да есть и такое!), а точнее что оно равно below_horizon то есть "за горизонтом"
- and а это у нас логическое "и", указывающее что должны выполняться первое условие и второе:
- is_state('light.living_room', 'off') где мы проверяем, какое значение у устройства light.living_room и в нашем случае оно должно быть off или "выключено"
Ну ладно не просто, но и ничего сложного в этом нет.)
1 тут мы указываем значение, которое будет задаваться в brightness_pct при выполнении нашего "если"
{% else %} тут у нас логическое "иначе" после которого:
100 указываем иное значение которое будем передавать в brightness_pct
{% endif %} и тут закрываем наш шаблон с логикой.
Проверка на вшивость
После всех правок файла с автоматизациями можно очень просто их проверить. Для начала заходим в веб морде HA в "Настройки" - "Общие" - "Проверить конфигурацию", и если ошибок в конфиге нет - жмем на кнопку "Перезагрузить автоматизации":
Далее идем на страничку с entity_id как мы делали немного выше, находим там нашу автоматизацию в списке и жмем на кнопку слева от нее, после чего жмем на кнопку "Запуск":
Если все сделали правильно - автоматизация сработает и вы это увидите. Ура! У вас получилось!
Вместо послесловия
Мы в данной статье рассмотрели только крохотную толику разных типов автоматизаций и приводить все их мне просто не хочется, дабы не перегружать и без того сложноватую статью. Если будет интерес, я напишу отдельную, где поделюсь остальными своими примерами без такого подробного разжевывания и пояснения, но с комментариями. Спасибо всем за внимание!
Как всегда великолепнейший материал ;) твой верный подписчик очень доволен ))))
отлично
спасибо
статья понравилась.Все доступно описано. Спасибо)
Спасибо! Отличный материал, мотивирует настроить ХА у себя :-)
ОХОТНИК молодца! Своими статьями про Home Assistant мотивирует изучать УД с лёгким входом в тему!
Ну очень доходчиво объяснил, я аж уже захотел себе ХА поставить. Буду ждать дальнейших статей.
Спасибо за статью Александр! По прочтению у меня появился ряд вопросов:
Устройство сценариев понятно: триггер, условие и действие, оно довольно стандартно. Но мне не понятно, где я могу посмотреть все возможные "platform" для триггера, где посмотреть значения "to" у срабатываемых датчиков, там же может быть не "off/on" а например "true/false" или что либо еще? Вообще где можно посмотреть какие параметры есть у того или иного датчика, например, если взять ваш код, откуда вы взяли название параметра "brightness_pct"? Тот же вопрос про "- service: light.turn_on" и "- service: climate.set_temperature" откуда берутся эти обьекты? Автоматически прописываются при привязке того или иного устройства, или подобные категории устройств надо создавать самому? И где вообще посмотреть какие "service" доступны в моем HA?
Спасибо
У существующих устройств можно посмотреть в разделе инструменты разработчика - службы и там в в выпадающем списке они будут перечисленны для всех существующих объектов, либо, если есть знания английского языка - пойти на офф сайт ХА и почитать документацию по автоматизациям и возможным состояниям датчика.
Александр, здравствуйте, у меня есть кубик от сяоми, который определился как binary_sensor.cube, но его нет в выпадающем меню. На офф сайте ХА в разделе Integrations вообще нет поддержки сяоми. Объясните, пожалуйста, как с этим работать?
Особо не пинайте, я тут новенький во всем. Вопрос вот в чем, есть HA и выключатель aqara, могу ли я задать чтобы свет загорался только на "n" процентов и можно ли это сделать с обычными лампами или нужны какие то особые?
Светильник должен быть с диммированием(регулировкой).
привет. все круто, спасибо. автоматизация работает, если перезапустить НА. Срабатывает один раз. потом не работает, хотя датчик движение отслеживает. если на прямую запускать из списка
entity_id , то все работает. В чем может быть проблема?
На самом деле проблема в том, что датчик движения отваливается. После перезагрузки НА датчик срабатывает один-два раза и больше не меняет значение "off" на "on". Хотя в родном приложении сценарии отрабатывает. У кого нибудь отваливались датчики от НА? не могу понять, в чем проблема!
Не пойму зачем делать всё это в линуксе, когда в HA есть раздел автоматизации?