Home Assistant, статья 5 (автоматизации)

14 сентября 2018, 19:34

Введение

В Этой статье мы рассмотрим такую интересную вещь, как автоматизации в 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

Вернемся немного в прошлое 

Если вы читали статью 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 %}

Это автоматизация с условием включения света в ванной на 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 как мы делали немного выше, находим там нашу автоматизацию в списке и жмем на кнопку слева от нее, после чего жмем на кнопку "Запуск":

Если все сделали правильно - автоматизация сработает и вы это увидите. Ура! У вас получилось!

Вместо послесловия

Мы в данной статье рассмотрели только крохотную толику разных типов автоматизаций и приводить все их мне просто не хочется, дабы не перегружать и без того сложноватую статью. Если будет интерес, я напишу отдельную, где поделюсь остальными своими примерами без такого подробного разжевывания и пояснения, но с комментариями. Спасибо всем за внимание!


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Олег Челбаев (sprut)

    Как всегда великолепнейший материал ;) твой верный подписчик очень доволен ))))

  2. Евгений Олейник (permadm)

    отлично

  3. Maxmudjon Payziyev (Maxmudjon)
    Maxmudjon Payziyev (Maxmudjon) год назад
    • круто
  4. Антон Фаюк (LowriderA)

    спасибо 

  5. Антон Хлонь (Khlon_av)

    статья понравилась.Все доступно описано. Спасибо)

  6. Вадим Михайлов (stas098)

    Спасибо! Отличный материал, мотивирует настроить ХА у себя :-)

  7. Алексей Новосельцев (novo)

    ОХОТНИК молодца! Своими статьями про Home Assistant мотивирует изучать УД с лёгким входом в тему!

  8. Евгений Лузин (EvLuz)

    Ну очень доходчиво объяснил, я аж уже захотел себе ХА поставить. Буду ждать дальнейших статей. 

  9. (VladTep)
    (VladTep) отредактировано 11 месяцев назад

    Спасибо за статью Александр! По прочтению у меня появился ряд вопросов:

    Устройство сценариев понятно: триггер,  условие и действие, оно довольно стандартно. Но мне не понятно, где я могу посмотреть все возможные "platform" для триггера, где посмотреть значения "to" у срабатываемых датчиков, там же может быть не "off/on" а например "true/false" или что либо еще? Вообще где можно посмотреть какие параметры есть у того или иного датчика, например, если взять ваш код, откуда вы взяли название параметра "brightness_pct"? Тот же вопрос про "- service: light.turn_on" и "- service: climate.set_temperature" откуда берутся эти обьекты? Автоматически прописываются при привязке того или иного устройства, или подобные категории устройств надо создавать самому? И где вообще посмотреть какие "service"  доступны в моем HA?

    Спасибо

    • Александр Жабунин (OXOTH1K)
      Александр Жабунин (OXOTH1K) 11 месяцев назад

      У существующих устройств можно посмотреть в разделе инструменты разработчика - службы и там в в выпадающем списке они будут перечисленны для всех существующих объектов, либо, если есть знания английского языка - пойти на офф сайт ХА и почитать документацию по автоматизациям и возможным состояниям датчика.

      • (black_cement)
        (black_cement) 8 дней назад

        Александр, здравствуйте, у меня есть кубик от сяоми, который определился как binary_sensor.cube, но его нет в выпадающем меню. На офф сайте ХА в разделе Integrations вообще нет поддержки сяоми. Объясните, пожалуйста, как с этим работать?

  10. : )  (2Sist)
    : ) (2Sist) месяц назад

    Особо не пинайте, я тут новенький во всем. Вопрос вот в чем, есть HA и выключатель aqara, могу ли я задать чтобы свет загорался только на "n" процентов и можно ли это сделать с обычными лампами или нужны какие то особые?

    • (black_cement)
      (black_cement) 8 дней назад

      Светильник должен быть с диммированием(регулировкой).

К списку статей

Похожие статьи

15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
24 августа 2018, 10:15
Краткий экскурс в настройку Home Assistant
11 мая 2019, 19:57
Как активировать русский язык в Google Assistant для Google Home
03 февраля 2019, 16:57
Устанавливаем Hass Configurator на Home Assistant и редактируем конфиги прямо в браузере.