Перейти к содержанию

Time trigger

time — это один из триггеров которые можно использовать в автоматизациях Home Assistant.

С помощью этого триггера можно запустить автоматизацию в определенное время. Есть несколько вариантов как можно использовать триггер:

  • указать точное время
  • использовать input_datetime
  • использоваь сенсор в котором хранится время
  • указать несколько разных объектов

Note

Важный момент — чтобы этот триггер правильно работал нужно чтобы в Home Assistant был указан правильный часовой пояс.

Кроме триггера time еще есть триггер time_pattern с помощью которого можно настраивать регулярный запуск автоматизаций.

time - точное время

Example

automation:
  - trigger:
    platform: time
    at: "07:00:00"
    action:
    service: system_log.write
    data:
      message: "время 07:00:00"
Эта автоматизация будет запускаться каждый день в 7 утра. Если сервер в момент запуска будет выключен, то запуска автоматизации не будет

Значение at записывается в формате ЧЧ:ММ:СС (ЧЧ - час, ММ - минуты, СС - секунды, : - разделитель).

Секунды или минуты, равные 00 можно не указывать. Запись at: "01:58" означает то же самое что и at: "01:58:00".

В поле at можно указать только время, там нельзя указать дату и время. Если написать at: "2023-10-20 01:58:00", то проверка конфигурации Home Assistant пройдет успешно, но в логе будет ошибка

Указание точного времени в автоматизации используется редко. Это не особо удобно. Чтобы поменять время запуска автоматизации нужно менять код и нажимать кнопку чтобы Home Assistant узнал про изменение. Более гибкие способы указания времени — это использование input_datetime или использование сенсора.

input_datatime

Пример автоматизации

automation:
- trigger:
    platform: time
    at: input_datetime.sample
    action:
    service: system_log.write
    data:
        message: time

Это автоматизация выполнится в момент времени который указан в input_datetime.sample.

input_datetime может быть определен тремя разными способами:

  • только время
  • только дата
  • есть время и дата

Вот пример описания input_datetime в котором есть время и дата:

input_datetime:
  sample:
    name: Sample
    has_time: true
    has_date: true
  • в input_datetime есть только время - автоматизация будет запускаться каждый день в это время
  • в input_datetime есть только дата - автоматизация запустися в 00:00:00 в эту дату
  • в input_datetime есть время и дата - автоматизация запустится в указанную дату в указанное время

Сенсор

В качестве значения at можно указать сенсор у которого device_class timestamp:

automation:
  - trigger:
      platform: time
      at: sensor.phone_next_alarm
    action:
      service: system_log.write
      data:
        message: alarm

Комбинирование разных объектов

В значении at триггера time можно указать несколько разных объектов:

automation:
  - trigger:
      platform: time
      at:
        - "09:38:00"
        - input_datetime.sample
        - sensor.phone_next_alarm
    action:
      service: system_log.write
      data:
        message: time

Запуск раз в месяц

Иногда надо запускать что-то раз в месяц в какое-то число. Это можно сделать с помощью триггера time и доп. условия condition:

automation:
  - trigger:
      platform: time
      at: 21:40:00"
    condition:
      condition: template
      value_template: >
        {{ now().day == 20 }}
    action:
      service: system_log.write
      data:
        message: "Today is 20"

Запуск произойдет 20 числа в 21:40, при условии, что сервер работает в указанное время