time_pattern — это один из триггеров которые можно использовать в автоматизациях Home Assistant (список всех триггеров).
time_pattern — это один из триггеров которые можно использовать в автоматизациях Home Assistant (список всех триггеров).
С помощью этого триггера можно регулярно запускать автоматизации.
Кроме триггера time_pattern еще есть триггер time с помощью которого можно настроить запуск автоматизации в определенное время.
Если вам нужна базовая информация про автоматизации в Home Assistant — прочитайте этот текст.
Вот пример автоматизации:
automation:
- trigger:
platform: time_pattern
minutes: "/5"
action:
service: system_log.write
data:
message: "time_pattern triggered"
Это автоматизация будет запускаться каждые 5 минут. В 00:00:00 (0 часов, 0 минут, 0 секунд), 00:05:00 (0 часов, 5 минут, 0 секунд), 00:10:00, 00:15:00 и т.д.
Вот еще один пример:
automation:
- trigger:
platform: time_pattern
minutes: "5"
action:
service: system_log.write
data:
message: "time_pattern triggered"
Эта автоматизация будет запускаться 1 раз час. Автоматизация будет запускаться всегда когда минуты — это ровно число 5,
т.е.: 00:05:00, 01:05:00, 02:05:00, и т.д.
hours, minutes, seconds
Триггеру обязательно нужно указать либо hours, либо minutes, либо seconds.
Если ничего из этого не указать, то будет ошибка:
Invalid config for [automation]: must contain at least one of hours, minutes, seconds..
Можно одноврменно указать любой набор параметров, например два:
automation:
- trigger:
platform: time_pattern
hours: "3"
seconds: "30"
action:
service: system_log.write
data:
message: "time_pattern triggered"
Или сразу все 3:
automation:
- trigger:
platform: time_pattern
hours: "/3"
minutes: "*"
seconds: "8"
action:
service: system_log.write
data:
message: "time_pattern triggered"
В качестве значений параметров hours, либо minutes, либо seconds можно использовать одну из трех вещей:
"/4") — запуск будет происходит когда час/минута/секунда это 0 или значение делится нацело на указанное после слеша число
"*") — то же самое что и "/1"
В зависимости от того что указано по разному определяются отсутствущие значения. Логика: "If larger units are specified, default the smaller units to zero"
"*", minutes становится "*"
"*", seconds становится 0
"*"
0, seconds становится 0
0
0
Python код триггера time_pattern находится на GitHub — https://github.com/home-assistant/core/blob/dev/homeassistant/components/homeassistant/triggers/time_pattern.py
trigger
После того как триггер сработал в блоках condition и action становится доступна специальная переменная
с именем trigger. Вот пример того что может находиться в этой переменной:
{
'platform': 'time_pattern',
'now': datetime.datetime(2021, 2, 16, 9, 30, 0, 2147, tzinfo=<UTC>),
'description': 'time pattern'
}