Автоматизация в Home Assistant — это правило «если произошло событие и выполнено условие, сделай действие». Именно она заставляет свет включаться самому, а при протечке присылает сообщение на телефон. В статье разберём, из чего собирается автоматизация, как создать её мышью и в YAML, и дадим рабочие примеры автоматизации: свет по движению, закат, влажность, уведомление, утренний сценарий. Отдельно поговорим про скрипты Home Assistant (их ищут почти так же часто, как сами автоматизации), режимы запуска, блюпринты и отладку.

1Кратко
- Автоматизация состоит из триггеров (что запускает), условий (стоит ли действовать) и действий (что делать). В актуальных версиях ключи называются
triggers,conditions,actions. - Создавать можно в визуальном редакторе и в любой момент переключаться на YAML: для большинства задач писать код вручную не нужно.
- Параметр
modeопределяет, что будет при повторном запуске, пока предыдущий ещё идёт. По умолчанию этоsingle, и именно он чаще всего объясняет «сработало один раз». - Скрипт — именованная последовательность действий без триггера. Автоматизация отвечает на вопрос «когда», скрипт — «что делать».
- Если автоматизация не сработала, откройте трассировку: она покажет, на каком шаге всё остановилось.
2Из чего состоит автоматизация в Home Assistant
Любая автоматизация в Home Assistant строится из трёх блоков. Их порядок и смысл стоит запомнить, потому что все примеры ниже устроены одинаково.
- Триггеры (triggers) — события, которые запускают автоматизацию: изменилось состояние датчика, наступило время, зашёл закат, человек пришёл домой. Триггеров может быть несколько, срабатывает любой из них.
- Условия (conditions) — необязательная проверка «а стоит ли сейчас действовать». Например, включать свет только когда на улице темно. Если условий несколько, по умолчанию должны выполниться все.
- Действия (actions) — то, что система делает: включить лампу, отправить уведомление, запустить скрипт, подождать, выбрать ветку по условию.
Получается простая схема: «если произошло А, и при этом верно Б, то сделать В».
В актуальных версиях Home Assistant ключи верхнего уровня называются
triggers:,conditions:иactions:, а внутри триггера тип задаётся ключомtrigger:, напримерtrigger: state. Вызов службы записывается какaction: light.turn_on. В более старых версиях вы встретитеtrigger:иcondition:в единственном числе на верхнем уровне,platform: stateвнутри триггера иservice: light.turn_onв действиях. Старый формат продолжает читаться, но во всех новых примерах лучше использовать актуальный. Если вы копируете пример из старого форума, просто замените названия ключей.

3Какие бывают триггеры
Тип триггера задаётся ключом trigger:. Для бытовых задач хватает нескольких типов.
| Тип | Когда срабатывает | Типичный пример |
|---|---|---|
state |
Изменилось состояние или атрибут сущности | Датчик движения перешёл в on, дверь открыта более пяти минут |
numeric_state |
Число пересекло порог | Влажность выше 70 %, заряд батареи ниже 15 % |
time и time_pattern |
Наступило время или прошёл заданный интервал | Каждый день в 23:30, каждые 5 минут |
sun |
Восход или закат, можно со сдвигом | За полчаса до заката |
zone |
Человек вошёл в зону или вышел из неё | Приезд домой |
event |
В системе произошло событие | Нажатие кнопки в уведомлении |
template |
Шаблон стал истинным | Сложное условие из нескольких датчиков |
mqtt и webhook |
Пришло сообщение из MQTT или запрос по веб-хуку | События Zigbee2MQTT, внешние сервисы |
homeassistant |
Система запустилась или останавливается | Действие после перезагрузки |
Триггеров в одной автоматизации может быть несколько: достаточно сработать любому. Чтобы понять, какой из них запустил сценарий, каждому можно присвоить id (пример ниже).
4Режимы запуска: параметр mode
Что делать, если автоматизация запустилась, а предыдущий запуск ещё не закончился (например, ждёт конца паузы)? Ответ задаёт mode.
| Режим | Поведение | Когда выбирать |
|---|---|---|
single |
Новый запуск игнорируется (по умолчанию) | Короткие действия без ожидания |
restart |
Старый запуск прерывается, новый начинается заново | Свет по движению с таймером выключения |
queued |
Запуски выстраиваются в очередь | Когда важно выполнить каждый запуск по порядку |
parallel |
Запуски идут одновременно | Независимые друг от друга события |
Для queued и parallel можно ограничить число одновременных запусков параметром max. Если вы видите в журнале предупреждения о том, что запуск пропущен, причина почти всегда в режиме.
5Что понадобится
- Работающий Home Assistant с несколькими устройствами или датчиками. Для первых экспериментов подойдут и всегда доступные сущности вроде
sun.sunиperson.*. - Мобильное приложение Home Assistant для примеров с уведомлениями: после входа появляется служба
notify.mobile_app_<имя_устройства>. - Знание имён ваших сущностей. Идентификаторы вроде
light.hallwayв примерах условные, найдите свои в «Настройки > Устройства и службы > Сущности».
6Как создать автоматизацию через интерфейс
Для начала стоит сделать автоматизацию мышью, чтобы увидеть, как блоки соотносятся с YAML. Название пунктов меню может немного отличаться в разных версиях, но общая логика одна. Обычно путь такой: «Настройки > Автоматизации и сцены > Создать автоматизацию > Создать новую автоматизацию».
- В блоке «Когда» нажмите «Добавить триггер» и выберите тип, например «Состояние» (state). Выберите сущность — датчик движения.
- В блоке «И если» при необходимости добавьте условие, например «Состояние» или «Время».
- В блоке «Тогда выполнить» добавьте действие — вызов службы
light.turn_onдля нужной лампы. - Сохраните автоматизацию и дайте ей понятное имя: через полгода по названию «Автоматизация 17» вы уже ничего не поймёте.
Автоматизации, созданные в интерфейсе, хранятся в файле automations.yaml в каталоге конфигурации. Он подключается строкой automation: !include automations.yaml в configuration.yaml; в стандартной установке эта строка уже есть. Если вы правите файл вручную, после изменений нажмите проверку конфигурации и перезагрузите автоматизации в «Инструменты разработчика > YAML». Если же вы редактируете их в интерфейсе, файл обновляется сам, и править его параллельно не стоит: можно потерять комментарии или изменения.
Чтобы увидеть код, откройте меню с тремя точками в правом верхнем углу редактора и выберите режим редактирования в YAML. Именно в таком виде автоматизации и приведены ниже. Вы можете вставлять их туда целиком, заменив идентификаторы сущностей на свои.
7Пример автоматизации: свет по датчику движения
Классический пример: включать свет в коридоре при движении, но только в тёмное время, и выключать его, когда движение прекратилось.
alias: "Коридор: свет по движению"
description: "Включает свет при движении, если темно"
mode: restart
triggers:
- trigger: state
entity_id: binary_sensor.hallway_motion
to: "on"
conditions:
- condition: sun
after: sunset
before: sunrise
actions:
- action: light.turn_on
target:
entity_id: light.hallway
- wait_for_trigger:
- trigger: state
entity_id: binary_sensor.hallway_motion
to: "off"
for: "00:02:00"
timeout: "00:30:00"
continue_on_timeout: true
- action: light.turn_off
target:
entity_id: light.hallway
Разберём, что здесь происходит. Триггер срабатывает, когда датчик перешёл в состояние on. Условие sun проверяет, что сейчас период между закатом и восходом (граница «после заката и до восхода» понимается через полночь корректно). Действие wait_for_trigger приостанавливает выполнение, пока датчик не будет в состоянии off две минуты подряд. Если этого не произойдёт за 30 минут, автоматизация всё равно пойдёт дальше и выключит свет.
Параметр mode: restart важен: при повторном движении, пока предыдущий запуск ещё ждёт, он будет прерван и запущен заново. Без этого при режиме по умолчанию (single) повторный запуск игнорируется, и свет может погаснуть слишком рано или не погаснуть вовсе.
8Пример: свет на закате и условия по времени
Триггер sun позволяет не привязываться к часам. Пример с небольшим упреждением:
alias: "Гостиная: вечерний свет"
mode: single
triggers:
- trigger: sun
event: sunset
offset: "-00:30:00"
conditions:
- condition: state
entity_id: person.ivan
state: "home"
actions:
- action: light.turn_on
target:
entity_id: light.living_room
data:
brightness_pct: 60
Здесь offset со знаком минус сдвигает запуск на полчаса до заката. Условие проверяет, что человек (сущность person.*) находится дома. Параметр data передаёт аргументы вызываемому действию: яркость в процентах.
Для запуска по расписанию применяется триггер time:
triggers:
- trigger: time
at: "23:30:00"
А для ограничения по часам — условие time:
conditions:
- condition: time
after: "22:00:00"
before: "06:00:00"
Условие можно дополнить параметром weekday, чтобы действовать только в определённые дни недели.
9Пример: триггер по температуре и влажности
Для датчиков, которые отдают число, есть триггер numeric_state. Он срабатывает в момент пересечения порога, а не постоянно, пока значение выше нормы. Это защищает от лавины повторных запусков.
alias: "Ванная: вытяжка при высокой влажности"
mode: single
triggers:
- trigger: numeric_state
entity_id: sensor.bathroom_humidity
above: 70
for: "00:01:00"
actions:
- action: switch.turn_on
target:
entity_id: switch.bathroom_fan
- wait_for_trigger:
- trigger: numeric_state
entity_id: sensor.bathroom_humidity
below: 60
timeout: "01:00:00"
- action: switch.turn_off
target:
entity_id: switch.bathroom_fan
Две разные границы (включаем при 70, выключаем при 60) дают гистерезис: вытяжка не будет щёлкать туда-сюда, когда влажность колеблется около одного значения. Параметр for отсекает кратковременные всплески.
10Приезд домой и несколько триггеров с id
Триггер zone реагирует на вход человека в зону. Один и тот же сценарий можно запускать несколькими триггерами и по-разному обрабатывать их в действиях: для этого у триггера есть id, а в действиях — условие trigger.
alias: "Дом: приход и уход"
mode: single
triggers:
- trigger: zone
entity_id: person.ivan
zone: zone.home
event: enter
id: arrive
- trigger: zone
entity_id: person.ivan
zone: zone.home
event: leave
id: leave
actions:
- choose:
- conditions:
- condition: trigger
id: arrive
sequence:
- action: light.turn_on
target:
entity_id: light.hallway
- conditions:
- condition: trigger
id: leave
sequence:
- action: light.turn_off
target:
entity_id:
- light.hallway
- light.living_room
Для работы такого сценария у человека должно быть привязанное устройство слежения, например телефон с мобильным приложением и разрешённой геолокацией. Не стоит завязывать на присутствие критичные вещи вроде замков: определение местоположения иногда ошибается.
11Пример: уведомление о протечке на телефон
Автоматизации удобно сочетать с уведомлениями. Если вы установили мобильное приложение, в системе появилась служба вида notify.mobile_app_ваш_телефон. Точное имя посмотрите в «Инструменты разработчика > Действия» (в старых версиях раздел назывался «Службы»), набрав в поиске notify.mobile_app. Пример: предупреждение о протечке.
alias: "Протечка: уведомление"
mode: single
triggers:
- trigger: state
entity_id: binary_sensor.kitchen_leak
to: "on"
actions:
- action: notify.mobile_app_ivan_phone
data:
title: "Протечка на кухне"
message: "Датчик под раковиной показывает воду."
data:
push:
interruption-level: critical
Блок data.push.interruption-level специфичен для iOS и делает уведомление критическим; на Android для повышения важности используются другие параметры, о которых подробнее рассказано в статье про уведомления Home Assistant. Если оставить только title и message, пример будет работать на обеих платформах.
12Скрипты в Home Assistant: чем отличаются от автоматизаций
Скрипт — это именованная последовательность действий, которую можно запускать вручную, из автоматизаций, с карточки на панели или голосом. У скрипта нет триггеров и условий верхнего уровня: он ждёт, пока его вызовут. Полезно вынести в скрипт то, что повторяется в нескольких местах.
Создать скрипт можно через «Настройки > Автоматизации и сцены > Скрипты» или записать в YAML. Пример скрипта «Ночной режим»:
night_mode:
alias: "Ночной режим"
mode: single
sequence:
- action: light.turn_off
target:
entity_id:
- light.living_room
- light.kitchen
- light.hallway
- action: lock.lock
target:
entity_id: lock.front_door
- action: notify.mobile_app_ivan_phone
data:
message: "Ночной режим включён"
Если вы правите файл scripts.yaml вручную, этот блок кладётся в него как есть. Вызвать скрипт из автоматизации можно так:
actions:
- action: script.night_mode
Такой вызов дожидается завершения скрипта. Если нужно запустить скрипт и не ждать его окончания, используйте script.turn_on с указанием целевой сущности script.night_mode.
| Инструмент | Что делает | Запускается |
|---|---|---|
| Автоматизация | Правило «когда и при каком условии» | Сама, по триггеру |
| Скрипт | Последовательность действий, можно с ожиданием и ветвлениями | Вручную, из автоматизации, с карточки, голосом |
| Сцена | Снимок состояний нескольких устройств, который восстанавливается разом | Вызовом сцены |
Правило выбора простое: автоматизация отвечает на вопрос «когда», скрипт — на вопрос «что делать». Вынесите «что» в скрипт, и вы сможете запускать его из десятка мест без копирования кода.
13Ветвления в действиях: if и choose
Одна автоматизация способна вести себя по-разному в зависимости от обстоятельств. Для этого внутри действий есть конструкции if/then/else и choose.
actions:
- if:
- condition: time
after: "23:00:00"
before: "06:00:00"
then:
- action: light.turn_on
target:
entity_id: light.hallway
data:
brightness_pct: 10
else:
- action: light.turn_on
target:
entity_id: light.hallway
data:
brightness_pct: 80
Ночью коридор подсвечивается тускло, днём — ярко. Пример choose с несколькими ветками был выше, в сценарии с триггерами id. Когда вариантов больше двух, используйте choose со списком веток conditions и sequence и необязательной веткой default.
14Повторы и переменные в действиях
Если действие нужно выполнить несколько раз, пригодится repeat. Например, мигнуть лампой три раза, чтобы привлечь внимание:
actions:
- repeat:
count: 3
sequence:
- action: light.toggle
target:
entity_id: light.hallway
- delay: "00:00:01"
Есть и вариант repeat с условием продолжения (while и until). Значения, которые вы хотите переиспользовать внутри автоматизации, объявляют блоком variables в действиях: ниже их можно подставлять шаблонами. Старайтесь не усложнять: если цепочка перестаёт помещаться на экран, разбейте её на скрипты.
15Шаблоны Jinja2 в автоматизациях
В значениях можно использовать шаблоны Jinja2 в двойных фигурных скобках. Например, чтобы вставить в уведомление текущее значение датчика:
message: "Температура в спальне: {{ states('sensor.bedroom_temperature') }} °C"
Функция states() возвращает состояние сущности в виде строки. Проверить шаблон до сохранения можно в «Инструменты разработчика > Шаблон»: там результат пересчитывается по мере набора. Если датчик недоступен, функция вернёт unavailable или unknown, поэтому в серьёзных сценариях полезно добавлять проверку.
16Отладка автоматизации: трассировка и журнал
Автоматизация не сработала — это не повод переписывать её с нуля. В редакторе есть вкладка трассировок (в меню с тремя точками или рядом с названием, расположение зависит от версии). Она показывает, какой триггер запустил автоматизацию, какие условия прошли, а на каком шаге выполнение остановилось. Такая отладка экономит часы.
Дополнительные инструменты:
- «Настройки > Система > Журналы» — сообщения об ошибках конфигурации и вызовов.
- Журнал событий сущности в разделе «Логбук», где видно, когда менялось состояние датчика.
- Кнопка запуска действий вручную в карточке автоматизации: она выполняет только блок действий, без проверки триггеров и условий.
17Готовые шаблоны: блюпринты
Если писать автоматизацию с нуля не хочется, используйте блюпринты (blueprints) — параметризованные шаблоны. Вы выбираете датчик и светильник, а логика уже готова. Раздел находится рядом с автоматизациями: «Настройки > Автоматизации и сцены > Блюпринты». Часть шаблонов идёт в комплекте, остальные можно импортировать по ссылке из сообщества (кнопка импорта на этой же вкладке; точное название зависит от версии).
- Откройте вкладку блюпринтов и выберите шаблон, например для света по датчику движения.
- Нажмите создание автоматизации из блюпринта.
- Заполните поля: сущность датчика, светильник, время ожидания.
- Сохраните и дайте автоматизации понятное имя.
Плюс подхода в том, что при исправлении блюпринта обновляются все основанные на нём автоматизации. Минус — меньше свободы: нестандартную логику всё равно придётся писать самому. Импортируйте только шаблоны, которым доверяете, и просматривайте их код перед использованием.
18Типичные ошибки и решения
| Проблема | Причина | Что сделать |
|---|---|---|
| Автоматизация не запускается | Неверный идентификатор сущности или состояние записано без кавычек | Проверьте идентификатор в разделе сущностей, значения вроде "on" и "off" заключайте в кавычки |
| Сработала один раз, дальше молчит | Режим single, а предыдущий запуск ещё ждёт |
Смените mode на restart или queued, либо пересмотрите ожидание |
| Ошибка «неизвестное действие» или «служба не найдена» | Пример из старой версии или опечатка в домене | Проверьте название в «Инструменты разработчика > Действия» |
| Условие по солнцу не выполняется | Неверно задан часовой пояс или координаты дома | Проверьте раздел «Настройки > Система > Общие» |
| Сработала по ложному триггеру | Датчик «дребезжит» между состояниями | Добавьте параметр for в триггер |
| Изменения в YAML не применяются | Файл правился вручную и не перезагружен | В «Инструменты разработчика > YAML» перезагрузите автоматизации или перезапустите систему |
| Запуск пропущен, в журнале предупреждение о работающей автоматизации | Режим single, предыдущий запуск ещё не завершён |
Выберите подходящий mode и при необходимости задайте max |
Шаблон показывает unknown или unavailable |
Датчик недоступен или ещё не обновился после перезапуска | Добавьте проверку состояния или условие доступности датчика |
Отдельно про отступы: YAML чувствителен к пробелам, табуляция недопустима. Если редактор подчёркивает строку красным, ищите смещённый пробел или забытое двоеточие. Кавычки вокруг значений со специальными символами, в частности вокруг шаблонов в одну строку, также спасают от лишних ошибок.
19Идеи для первых автоматизаций
- Свет в коридоре или санузле по движению с выключением через пару минут тишины.
- Вытяжка в ванной по влажности с разными порогами включения и выключения.
- Сообщение о протечке или об открытом окне при понижении температуры.
- Отключение света при выходе последнего человека из дома.
- Вечерний свет за полчаса до заката.
- Предупреждение о низком заряде батарей датчиков.
- Утренний сценарий по будням с прогнозом в уведомлении.
20Как не запутаться: организация и безопасность
- Давайте автоматизациям имена с префиксом комнаты или темы: «Коридор: свет по движению», «Безопасность: протечка». Заполняйте описание.
- Одна автоматизация — одна задача. Общие последовательности выносите в скрипты, общие переключатели вроде «Режим отпуска» — во вспомогательные элементы (helpers).
- Делайте резервную копию перед крупными правками.
- Не доверяйте критичные действия (отопление, подача воды, замки) одной автоматизации, проверенной на единственной лампе. Сначала проверьте поведение при перезапуске системы и пропадании интернета, а ответственные узлы дублируйте аппаратной защитой.
21Пример: утренний сценарий с проверкой присутствия
Соберём автоматизацию, объединяющую всё изученное. В будний день в 7:00 включается свет на кухне и приходит сообщение с прогнозом, но только если кто-то дома.
alias: "Утро: кухня и сообщение"
mode: single
triggers:
- trigger: time
at: "07:00:00"
conditions:
- condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
- condition: state
entity_id: person.ivan
state: "home"
actions:
- action: light.turn_on
target:
entity_id: light.kitchen
data:
brightness_pct: 70
- action: notify.mobile_app_ivan_phone
data:
message: "Доброе утро. На улице {{ states('sensor.outdoor_temperature') }} °C"
Обратите внимание, что условия в списке объединяются по «И»: сработает автоматизация, только если выполнены оба. Если нужна логика «ИЛИ», используйте условие or со вложенным списком условий. Такой подход позволяет описывать довольно сложные сценарии, не уходя в шаблоны.
22Итог
Автоматизация в Home Assistant — это связка «триггер, условие, действие», а скрипт — отдельная именованная последовательность, которую можно вызывать откуда угодно. Начните с одного-двух простых сценариев: свет по движению и уведомление о протечке. Проверьте их через трассировку, научитесь читать YAML, затем добавляйте ветвления и шаблоны. Когда в доме накопится десяток автоматизаций, вы сами увидите, какие повторяющиеся куски стоит вынести в скрипты. Самое важное — двигаться небольшими шагами и проверять результат на каждом из них.
Вопросы и ответы
Чем автоматизация отличается от скрипта в Home Assistant?
Автоматизация запускается сама по триггеру, скрипт ждёт вызова: вручную, из автоматизации, с карточки или голосом. Скрипт удобно использовать для повторяющихся последовательностей действий.
Почему автоматизация сработала один раз и больше не запускается?
Чаще всего предыдущий запуск ещё выполняется (например, ждёт), а режим стоит single. Смените mode на restart или queued либо пересмотрите ожидание.
Нужно ли знать YAML, чтобы создавать автоматизации?
Нет, основные сценарии собираются в визуальном редакторе. YAML полезен для точной настройки, копирования примеров из интернета и сложных сценариев.
Как узнать, почему автоматизация не сработала?
Откройте трассировку в редакторе: она покажет, какой триггер запустил сценарий, какие условия прошли и на каком шаге выполнение остановилось.
Что выбрать: сцену, скрипт или автоматизацию?
Если нужно запустить что-то само по событию, это автоматизация. Если нужна кнопка с цепочкой действий, скрипт. Если нужно просто вернуть набор устройств в заданное состояние, достаточно сцены.
Старые примеры с platform и service ещё работают?
Старый формат пока читается, но в новых автоматизациях лучше использовать triggers, conditions, actions, trigger: state и action: light.turn_on. При копировании примеров с форумов просто замените названия ключей.



