Автоматизации в Home Assistant: триггеры, условия и действия

6 минчтения 8разделов 9.11.2026обновлено Home Assistantрубрика

Автоматизация в home assistant — это правило вида «если случилось событие, и выполнено условие, то сделать действие». Любой сценарий, от включения света по датчику движения до уведомления о протечке, собирается из трёх блоков: триггеров, условий и действий. Ниже разберём, как устроен каждый блок, как создать первую автоматизацию в интерфейсе и в YAML и как искать ошибки, если она не срабатывает.

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

Автоматизация описывается тремя ключами верхнего уровня (синтаксис актуален для версий 2024.10 и новее):

  • triggers — что запускает правило. Достаточно, чтобы сработал любой из перечисленных триггеров.
  • conditions — проверки на момент срабатывания. Если хотя бы одно условие ложно, действия не выполняются. По умолчанию условия объединены по «И».
  • actions — что нужно сделать: вызвать службу, отправить уведомление, подождать, выбрать ветку выполнения.

Кроме них у автоматизации есть идентификатор id, название alias, описание и режим выполнения mode.

2Основные типы триггеров

Триггер Когда срабатывает Пример
state Состояние сущности изменилось Датчик движения стал on
time Наступило заданное время Каждый день в 07:00
time_pattern Через равные интервалы Каждые 15 минут
sun Восход или закат (со смещением) За 30 минут до заката
numeric_state Число пересекло порог Температура ниже 18
zone Человек вошёл в зону или вышел Прибытие домой
event Произошло событие шины HA Нажата кнопка Zigbee
template Шаблон стал истинным Сумма мощностей выше порога
homeassistant Запуск или остановка HA После старта системы

Для триггера state полезны параметры from, to и for. Последний задаёт, как долго состояние должно сохраняться, чтобы правило сработало: это основа защиты от ложных срабатываний.

3Создаём первую автоматизацию в интерфейсе

  1. Откройте «Настройки» → «Автоматизации и сцены» → «Создать автоматизацию».
  2. Выберите «Создать новую автоматизацию» и нажмите «Добавить триггер». Укажите тип «Сущность → Состояние», выберите датчик движения и состояние «Обнаружено».
  3. В блоке «Условия» добавьте условие «Время» или «Солнце», чтобы свет включался только в тёмное время.
  4. В блоке «Действия» выберите «Вызов службы» (в новых версиях — «Выполнить действие») и укажите light.turn_on для нужного светильника.
  5. Сохраните и дайте название, например «Свет в коридоре по движению».
  6. Через меню с тремя точками можно переключиться в режим YAML и увидеть то, что собрал редактор.

4Автоматизация в Home Assistant на YAML: рабочий пример

Ниже правило, которое включает свет в коридоре при движении, если на улице темно, а выключает через две минуты после того, как движение прекратилось.

alias: "Свет в коридоре по движению"
description: "Включает свет при движении и выключает через 2 минуты"
mode: restart
triggers:
  - trigger: state
    entity_id: binary_sensor.corridor_motion
    to: "on"
conditions:
  - condition: sun
    after: sunset
    after_offset: "-00:30:00"
    before: sunrise
actions:
  - action: light.turn_on
    target:
      entity_id: light.corridor
    data:
      brightness_pct: 60
  - wait_for_trigger:
      - trigger: state
        entity_id: binary_sensor.corridor_motion
        to: "off"
        for: "00:02:00"
  - action: light.turn_off
    target:
      entity_id: light.corridor

Обратите внимание на mode: restart. Если движение снова появится, пока автоматизация ждёт, она перезапустится и отсчёт начнётся заново. Без этого при режиме по умолчанию (single) повторный запуск просто будет проигнорирован.

5Режимы выполнения и ветвление

Режим mode определяет, что произойдёт, если автоматизация запускается снова, пока выполняется предыдущий запуск:

  • single — новый запуск игнорируется (по умолчанию);
  • restart — текущий запуск прерывается, начинается новый;
  • queued — запуски становятся в очередь (max задаёт её длину);
  • parallel — запуски работают одновременно.

Для ветвления внутри действий используйте choose, для простых проверок — if / then / else. Пример с выбором по времени суток:

actions:
  - choose:
      - conditions:
          - condition: time
            after: "23:00:00"
            before: "06:00:00"
        sequence:
          - action: light.turn_on
            target:
              entity_id: light.corridor
            data:
              brightness_pct: 10
    default:
      - action: light.turn_on
        target:
          entity_id: light.corridor
        data:
          brightness_pct: 80

Ночью свет включится тускло, днём и вечером — ярче. Для сложных случаев в данных можно использовать шаблоны Jinja2, например "{{ states('sensor.lux') | float(0) }}". Если шаблон возвращает не число, всегда задавайте значение по умолчанию внутри float() или int(), иначе при недоступном датчике правило упадёт с ошибкой.

Условия и несколько триггеров в одном правиле

Условия бывают нескольких видов: по состоянию сущности (state), числовому значению (numeric_state), времени, дню недели, солнцу, зоне и шаблону. Для логики «ИЛИ» и «НЕ» используйте составные условия or и not. Рассмотрим правило с двумя триггерами, где действие зависит от того, какой из них сработал:

alias: "Вентилятор в ванной"
mode: single
triggers:
  - trigger: numeric_state
    entity_id: sensor.bathroom_humidity
    above: 70
    id: "wet"
  - trigger: numeric_state
    entity_id: sensor.bathroom_humidity
    below: 55
    id: "dry"
conditions:
  - condition: not
    conditions:
      - condition: state
        entity_id: input_boolean.guest_mode
        state: "on"
actions:
  - choose:
      - conditions:
          - condition: trigger
            id: "wet"
        sequence:
          - action: switch.turn_on
            target:
              entity_id: switch.bathroom_fan
      - conditions:
          - condition: trigger
            id: "dry"
        sequence:
          - action: switch.turn_off
            target:
              entity_id: switch.bathroom_fan

Здесь два порога образуют гистерезис: вентилятор включается при влажности выше 70 % и выключается ниже 55 %. Такой подход не даёт устройству дребезжать вокруг одного значения. Условие с input_boolean.guest_mode показывает, как отключить правило по ручному переключателю, не удаляя его.

Идентификаторы триггеров (id) также доступны в шаблонах как trigger.id, а данные о сработавшей сущности — как trigger.entity_id и trigger.to_state.state. Это позволяет написать одну автоматизацию на несколько однотипных датчиков.

6Как проверить и отладить автоматизацию

  1. Откройте автоматизацию и перейдите в «Трассировки». Там видно, какой триггер сработал, какие условия прошли и где остановилось выполнение.
  2. Нажмите «Запустить действия» в меню автоматизации, чтобы проверить блок действий без триггера.
  3. Посмотрите журнал в «Настройки» → «Система» → «Журналы»: ошибки шаблонов и недоступные службы попадают туда.
  4. Убедитесь, что автоматизация включена (переключатель справа в списке) и сущность триггера действительно меняет состояние. Проверить это можно в «Инструменты разработчика» → «Состояния».

Самые частые причины «не работает»: опечатка в entity_id, значение to: on без кавычек (YAML превращает его в булево), условие по времени или солнцу, которое не выполняется, и режим single при долгом действии.

Если логика получается запутанной, воспользуйтесь бесплатным конструктором автоматизаций: он собирает корректный YAML по выбранным триггерам и действиям.

7Частые вопросы

Чем автоматизация отличается от скрипта и сцены?

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

Можно ли использовать несколько триггеров?

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

Куда сохраняются автоматизации?

Созданные в интерфейсе хранятся в файле automations.yaml в каталоге конфигурации. Редактировать его вручную можно, но после правки нужно перезагрузить автоматизации в «Инструменты разработчика» → «YAML».

Нужно ли знать YAML?

Для простых правил хватает визуального редактора. YAML нужен для сложных сценариев, копирования готовых решений и удобной правки.

8Итог

Главное, что стоит запомнить: триггер отвечает на вопрос «когда», условие — «можно ли сейчас», действие — «что делать». Если разделять эти роли, правила получаются короткими и легко читаются через полгода.

Начинайте с простых правил: один триггер, одно-два условия, одно действие. Проверяйте каждое через трассировку и усложняйте постепенно. Если нужна сложная логика с учётом присутствия, климата и расписаний, закажите автоматизацию на заказ — специалист соберёт и протестирует сценарии под ваш дом.