Как указать период времени в Home Assistant

Иногда в системе умного дома Home Assistant нужно указать период времени. Например:

Есть несколько разных способов как можно указать период времени в файле configuration.yaml с настройками Home Assistant.

Число

Если в конфиге указано просто число, то это означает количество секунд.

Вот как сделать таймер на 2 минуты:

timer:
  test:
    duration: 120

А вот пример сенсора с данными о версии Home Assistant, который запускается раз в 30 минут:

sensor:
  - platform: version
    name: HA Installed Version
    scan_interval: 1800

Если нужно указать какой-то небольшой период, 5 секунд, 10 или 30, то для этого удобно использовать просто число. Если же нужно указать более длинный период, то более наглядно использовать другие форматы.

Формат Ч:ММ:CC

Пример таймера на 1 час 23 минуты и 45 секунд:

timer:
  test:
    duration: '1:23:45'

Кавычки не обязательны, можно указать и без кавычек:

timer:
  test:
    duration: 1:23:45

Если используются кавычки, то можно использовать как двойные кавычки, так и одинарные (но обязательно использовать один и тот же тип кавычек и для открывающейся и для закрывающейся кавычки).

Если часов и минут нет, то в этом формате их нужно заменить нулями. 5 секунд в этом формате записывается так: "0:00:05". Можно записать и "0:0:5", это тоже будет работать, но нагляднее использовать "0:00:05".

Формат 1:23

Вот еще один пример как можно записать период времени в Home Assistant:

timer:
  test:
    duration: 1:23

Тут указывается не 3 элемента, а только два. И сразу возникает вопрос — что это означает? Это часы и минуты или минуты и секунды?

Правильный ответ — это часы и минуты. "duration: 1:23" — это один час и 23 минуты.

Лучше всего этот формат никогда не использовать, чтобы не задаваться вопросом что означают элементы в этом формате.

Формат названий

В некоторых местах Home Assistant можно указывать период времени с помощью явного указания. Например, так можно сделать в триггере автоматизации:

automation:
  trigger:
    ...
    for:
      hours: 1
      minutes: 10
      seconds: 5

Так же это работает при использовании в sequence:

sequence:
  - service: script.turn_off
    data:
      entity_id: script.turn_off_with_delay
  - service: switch.turn_on
    data:
      entity_id: switch.fake_heater_1
  - delay:
      seconds: 1
  - service: switch.turn_on
    data:
      entity_id: switch.fake_heater_2

Но, например, в таймере такой вариант не работает.

Итого

В HA есть несколько способов как можно указать период времени. Лучше всего всегда использовать формат Ч:ММ:СС, это самый наглядный и простой для восприятия вариант:

"0:00:30" — 30 секунд
"0:15:00" — 15 минут
"8:00:00" — 8 часов

Иван Бессарабов
ivan@bessarabov.ru

26 марта 2020

Кстати, у меня есть телеграм канал про Home Assistant: https://t.me/bessarabov_ha