|
|
@ -0,0 +1,133 @@
|
|
|
|
|
|
|
|
# Time trigger
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`time` — это один из триггеров которые можно использовать в автоматизациях Home Assistant.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
С помощью этого триггера можно запустить автоматизацию в определенное время. Есть несколько вариантов как можно использовать триггер:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- указать точное время
|
|
|
|
|
|
|
|
- использовать `input_datetime`
|
|
|
|
|
|
|
|
- использоваь сенсор в котором хранится время
|
|
|
|
|
|
|
|
- указать несколько разных объектов
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!!! note
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Важный момент — чтобы этот триггер правильно работал нужно чтобы в Home Assistant был указан правильный часовой пояс.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Кроме триггера `time` еще есть триггер `time_pattern` с помощью которого можно настраивать регулярный запуск автоматизаций.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## `time` - точное время
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!!! example
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
|
|
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`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!!! example "Пример автоматизации"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
|
|
automation:
|
|
|
|
|
|
|
|
- trigger:
|
|
|
|
|
|
|
|
platform: time
|
|
|
|
|
|
|
|
at: input_datetime.sample
|
|
|
|
|
|
|
|
action:
|
|
|
|
|
|
|
|
service: system_log.write
|
|
|
|
|
|
|
|
data:
|
|
|
|
|
|
|
|
message: time
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Это автоматизация выполнится в момент времени который указан в `input_datetime.sample`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`input_datetime` может быть определен тремя разными способами:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- только время
|
|
|
|
|
|
|
|
- только дата
|
|
|
|
|
|
|
|
- есть время и дата
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вот пример описания `input_datetime` в котором есть время и дата:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
|
|
input_datetime:
|
|
|
|
|
|
|
|
sample:
|
|
|
|
|
|
|
|
name: Sample
|
|
|
|
|
|
|
|
has_time: true
|
|
|
|
|
|
|
|
has_date: true
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- в `input_datetime` есть только время - автоматизация будет запускаться каждый день в это время
|
|
|
|
|
|
|
|
- в `input_datetime` есть только дата - автоматизация запустися в `00:00:00` в эту дату
|
|
|
|
|
|
|
|
- в `input_datetime` есть время и дата - автоматизация запустится в указанную дату в указанное время
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Сенсор
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В качестве значения `at` можно указать сенсор у которого `device_class timestamp`:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
|
|
automation:
|
|
|
|
|
|
|
|
- trigger:
|
|
|
|
|
|
|
|
platform: time
|
|
|
|
|
|
|
|
at: sensor.phone_next_alarm
|
|
|
|
|
|
|
|
action:
|
|
|
|
|
|
|
|
service: system_log.write
|
|
|
|
|
|
|
|
data:
|
|
|
|
|
|
|
|
message: alarm
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Комбинирование разных объектов
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В значении `at` триггера `time` можно указать несколько разных объектов:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
|
|
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`:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
|
|
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, при условии, что сервер работает в указанное время
|