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