Скрипты в Home Assistant: чем отличаются от автоматизаций и примеры

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

Home assistant скрипты — это именованные последовательности действий, которые запускаются вручную, кнопкой на дашборде, голосом или из других автоматизаций. В отличие от автоматизации, у скрипта нет триггера: он ничего не делает сам, пока его не вызовут. Разберём, когда скрипт нужен вместо автоматизации или сцены, как его создать и как передавать в него параметры.

1Скрипт, автоматизация и сцена: в чём разница

Сущность Что это Как запускается Когда использовать
Автоматизация Триггеры + условия + действия Сама, по событию Реакция на датчики, время, присутствие
Скрипт Последовательность действий с паузами и ветвлением Вручную или из другой логики Повторяемые «сценарии»: «Спокойной ночи», «Ухожу из дома»
Сцена Снимок состояний устройств Одной командой Готовые режимы освещения без логики и пауз

Практический вывод: если одну и ту же цепочку действий нужно вызывать из нескольких мест, вынесите её в скрипт. Тогда при изменении логики правится один файл, а не десять автоматизаций.

2Home Assistant скрипты: как создать в интерфейсе

  1. Откройте «Настройки» → «Автоматизации и сцены» → вкладка «Скрипты» → «Добавить скрипт».
  2. Выберите «Создать новый скрипт» и задайте название. Идентификатор скрипта получится из названия латиницей, например script.good_night.
  3. Добавьте действия: вызов службы, задержку, ожидание, условие или ветвление.
  4. Нажмите «Сохранить» и проверьте скрипт кнопкой «Запустить» в меню.
  5. При необходимости добавьте скрипт на дашборд карточкой «Кнопка» с действием «Запустить скрипт» (в карточке — служба script.turn_on либо вызов скрипта по имени).

Скрипты хранятся в файле scripts.yaml в каталоге конфигурации. Если вы переходите с ручных конфигураций, убедитесь, что в configuration.yaml есть строка script: !include scripts.yaml (в стандартной установке она уже есть).

3Пример YAML: скрипт «Спокойной ночи»

Этот скрипт выключает основной свет, закрывает шторы, снижает температуру и включает ночник на десять минут:

good_night:
  alias: "Спокойной ночи"
  icon: mdi:weather-night
  mode: single
  sequence:
    - action: light.turn_off
      target:
        entity_id:
          - light.living_room
          - light.kitchen
    - action: cover.close_cover
      target:
        entity_id: cover.living_room_curtains
    - action: climate.set_temperature
      target:
        entity_id: climate.bedroom
      data:
        temperature: 19
    - action: light.turn_on
      target:
        entity_id: light.night_lamp
      data:
        brightness_pct: 5
    - delay: "00:10:00"
    - action: light.turn_off
      target:
        entity_id: light.night_lamp

Ключ верхнего уровня (good_night) — это идентификатор скрипта, а sequence — список действий, выполняемых по порядку. Обратите внимание: delay блокирует выполнение, и пока скрипт «спит», повторный запуск при режиме single будет проигнорирован.

4Скрипты с параметрами: fields и variables

Мощная возможность скриптов — приём параметров. Допустим, вам нужен универсальный скрипт для уведомлений, который вызывают разные автоматизации:

notify_home:
  alias: "Уведомление жильцам"
  mode: queued
  max: 5
  fields:
    text:
      name: "Текст"
      description: "Что отправить"
      required: true
      example: "Дверь открыта"
      selector:
        text:
    critical:
      name: "Важное"
      default: false
      selector:
        boolean:
  sequence:
    - action: notify.mobile_app_phone
      data:
        message: "{{ text }}"
        data:
          ttl: 0
          priority: "{{ 'high' if critical else 'normal' }}"

Вызов из автоматизации выглядит так:

actions:
  - action: script.notify_home
    data:
      text: "Входная дверь открыта"
      critical: true

Если указать action: script.turn_on, скрипт запускается в фоне, и автоматизация идёт дальше, не дожидаясь его. А прямой вызов action: script.notify_home ждёт завершения скрипта — это важно, когда следующие шаги зависят от результата.

Внутри скрипта можно объявлять собственные переменные через действие variables, а также использовать repeat, choose, wait_template и stop для досрочного выхода:

    - variables:
        limit: 20
    - if:
        - condition: numeric_state
          entity_id: sensor.outdoor_temperature
          above: "{{ limit }}"
      then:
        - action: cover.close_cover
          target:
            entity_id: cover.south_blinds
      else:
        - stop: "Жара не нужна, жалюзи не трогаем"

Повторы и ожидание: пример с сиреной

Скрипт ниже трижды включает сирену на пять секунд с паузой. Перед этим он ждёт, пока датчик перейдёт в нужное состояние, но не дольше минуты, и не зависает, если этого не произошло:

alarm_siren:
  alias: "Сирена тревоги"
  mode: single
  sequence:
    - wait_template: "{{ is_state('binary_sensor.front_door', 'on') }}"
      timeout: "00:01:00"
      continue_on_timeout: true
    - repeat:
        count: 3
        sequence:
          - action: switch.turn_on
            target:
              entity_id: switch.siren
          - delay: "00:00:05"
          - action: switch.turn_off
            target:
              entity_id: switch.siren
          - delay: "00:00:10"

Параметр continue_on_timeout: true означает, что по истечении таймаута скрипт продолжится. Если поставить false, он остановится. Выбирайте осознанно: для тревожных сценариев чаще нужно продолжать, для «ждём завершения цикла стирки» — останавливаться.

5Режимы запуска скриптов

Режим mode работает так же, как у автоматизаций, но по умолчанию у скрипта стоит single. Для кнопок, которые пользователь может нажимать несколько раз подряд, выбирайте restart (перезапуск) или queued (очередь). Режим parallel подходит, если запуски независимы, например, полив разных зон с разными параметрами.

Если скрипт не запускается повторно, посмотрите в журнал: сообщение о том, что скрипт уже выполняется, указывает на режим single.

6Где пригодятся скрипты на практике

  • Режимы дома: «Ухожу», «Кино», «Гости» — одним нажатием меняют несколько устройств.
  • Общая логика для автоматизаций: уведомления, запись в журнал, тревожная сирена с повторами.
  • Голосовые команды: скрипты можно открыть для голосового ассистента, и тогда фраза запускает целую цепочку.
  • Кнопки на дашборде: любые часто повторяемые действия в одно касание.

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

Как отладить скрипт

  1. Запустите скрипт вручную из списка скриптов и сразу откройте его «Трассировки»: там видно каждый выполненный шаг и значения переменных.
  2. Если шаг пропущен, проверьте условие if или choose и фактические значения в «Инструменты разработчика» → «Состояния».
  3. Проверьте шаблоны в «Инструменты разработчика» → «Шаблон»: вставьте выражение и посмотрите результат до запуска.
  4. Для скриптов с параметрами пробуйте вызов через «Инструменты разработчика» → «Действия», передавая данные в YAML-режиме.

Помните о правилах именования: идентификатор скрипта может содержать только латиницу, цифры и подчёркивания. Переименование в интерфейсе не меняет старый идентификатор автоматически, поэтому после переименования проверьте автоматизации, которые на него ссылаются.

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

Можно ли запустить скрипт по расписанию?

Сам скрипт не имеет триггеров. Для запуска по времени создайте автоматизацию с триггером time и действием script.turn_on или прямым вызовом скрипта.

Чем отличается script.turn_on от прямого вызова?

Через script.turn_on скрипт стартует в фоне, и текущая последовательность не ждёт его завершения. Прямой вызов (action: script.имя) дожидается окончания.

Скрипт не появился после правки файла

Перезагрузите скрипты в «Инструменты разработчика» → «YAML» → «Перезагрузить скрипты» и проверьте синтаксис в разделе проверки конфигурации.

Ещё один практичный приём: скрипты можно использовать как «подпрограммы» для общих проверок. Например, скрипт «Безопасно ли открывать окно» сначала проверяет погоду и режим охраны, а затем выполняет действие или останавливается через stop. Автоматизациям остаётся лишь вызвать его и дождаться результата.

8Итог

Когда скриптов станет много, группируйте их по назначению и давайте единообразные названия: «Режим: ночь», «Сервис: уведомление». Так в списке и в голосовом ассистенте легче ориентироваться, а ошибки в логах читаются проще. Не забывайте добавлять описание и значок — это экономит время при поиске нужного скрипта.

Типичная ошибка новичков — хранить всю логику внутри автоматизаций и копировать её. Через пару месяцев правка превращается в поиск по десятку файлов. Скрипты решают это: логика живёт в одном месте, а автоматизации лишь решают, когда её вызвать.

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