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'
}