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"
Значение 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, при условии, что сервер работает в указанное время