Автоматизации

Автоматизации позволяют умному дому действовать самому: выполнять команды устройствам по времени или при изменении состояния другого устройства, отправлять уведомления и выстраивать цепочки действий с задержками.

Раздел Автоматизации — единый: и «по времени» (расписания), и «если — то» (сценарии по датчикам) настраиваются в одном месте, одной формой. Прежние отдельные разделы «Сценарии» и «Расписания» объединены в него.

Примеры задач «зачем это нужно» — в подборке идей.

Где находятся автоматизации

В веб-приложении откройте раздел Автоматизации. Список показывает все автоматизации выбранной локации. Их можно отфильтровать:

  • СтатусВсе / Активные / Неактивные.

  • ТипВсе / Расписания / Сценарии. Это лишь способ отображения: простые автоматизации (один запуск по времени и одно действие) показываются как Расписание, более сложные (условия, несколько действий, триггер по устройству) — как Сценарий. Под капотом это одна сущность.

Кнопка Обновить перезагружает список. На карточке — название, метки статуса (Активно / Пауза, для прошедшего разового запуска — В прошлом), тип (Регулярно / Разово / Сценарий) и, для запусков по времени, ближайшее срабатывание.

Создание и редактирование доступно только владельцу локации. Чтобы создать автоматизацию, нажмите кнопку + (внизу справа). Чтобы изменить существующую — нажмите на карточку. Переключатель на карточке включает или отключает автоматизацию без удаления (режим «Пауза»).

Общая схема

У каждой автоматизации есть:

  1. Название — произвольное, для вашего удобства.

  2. КОГДА — что запускает автоматизацию. Выберите один из двух типов триггера:

    • Устройство — срабатывание по изменению состояния выбранного устройства (например, датчик движения);

    • Расписание — запуск по времени (регулярно или один раз); можно задать несколько расписаний.

  3. ЕСЛИ — условия (для триггера по устройству). Первый блок Если и при необходимости дополнительные блоки Или если; в каждом задаётся условие и свой список действий. Для чистого запуска по времени условие можно не задавать.

  4. ТОГДА — список действий (управление устройством, пауза, отправка сообщения).

  5. Активен — включена ли автоматизация.

После настройки нажмите Создать или Сохранить. Отмена закрывает панель без сохранения.

Автоматизация по расписанию

Подходит для действий по времени: включить свет в 7:00, выключить обогреватель в 23:00, напоминание раз в день.

  1. В блоке КОГДА выберите вкладку Расписание.

  2. Нажмите на поле расписания (или «Добавить», если список пуст) и в диалоге задайте тип и время (см. «Когда: регулярное и единовременное» ниже). Сохраните.

  3. При необходимости добавьте ещё расписания кнопкой Добавить (каждое можно включать/выключать переключателем).

  4. В блоке ТОГДА добавьте одно или несколько действий (см. «Действия» ниже). Условие ЕСЛИ для запуска строго по времени можно оставить пустым.

  5. Включите Активен и нажмите Создать или Сохранить.

Автоматизация по устройству

Запускается при изменении состояния выбранного устройства (например, сработал датчик движения). Задаётся один блок Если и при необходимости дополнительные блоки Или если; в каждом — условие и свой список Тогда.

Важно

Порядок проверки блоков: выполняется первый по порядку блок с истинным условием. Незаполненное условие считается истинным.

  1. В блоке КОГДА выберите вкладку Устройство.

  2. Нажмите на поле и выберите Помещение и Устройство — это триггер. Сохраните.

  3. Добавьте хотя бы один блок Если: нажмите на область условия и в конструкторе соберите выражение — объект (устройство), свойство (state, value, temperature и т.д.) и оператор/значение. Условия можно объединять в группы (И/ИЛИ). Сохраните.

  4. В блоке Тогда этого блока добавьте действия.

  5. Если нужно несколько разных условий с разными действиями — нажмите Добавить блок «Или если» (он проверяется только если все предыдущие условия ложны).

  6. Включите Активен и нажмите Создать или Сохранить.

Когда: регулярное и единовременное

В диалоге расписания выберите тип:

Регулярное — повтор по расписанию. Выберите периодичность:

  • Каждую минуту — интервал в минутах.

  • Каждый час — интервал в часах (1–12) и минута запуска.

  • Ежедневно — часы и минуты.

  • Еженедельно — дни недели и время.

  • Ежемесячно — день месяца, раз в 1–6 месяцев, время.

  • Ежегодно — месяц, день, время.

  • Пользовательское (CRON) — cron-выражение (минута час день месяц день_недели).

Для Ежедневно, Еженедельно, Ежемесячно, Ежегодно вместо фиксированного времени можно выбрать режим Восход или Закат (см. ниже). Время учитывается в вашем часовом поясе (определяется браузером).

Примечание

Правило «последний день месяца»: если выбран день больше, чем дней в месяце (например 31 для февраля), используется последнее число этого месяца.

Единовременное — один запуск в указанные дату и время (или по восходу/закату на выбранную дату). Опция Удалить после запуска убирает расписание после первого срабатывания — удобно для разовых напоминаний.

Режим по восходу и закату

Для привязки к рассвету/закату (например, уличное освещение) выберите Восход или Закат:

  • При необходимости задайте смещение от момента восхода/заката: например «−15 минут» (за 15 минут до) или «+30 минут» (после). Диапазон от −3 до +3 часов.

  • Обязательно укажите координаты: кнопка «Выбрать координаты», поиск по населённому пункту или точка на карте. Без координат расчёт невозможен — сохранение будет заблокировано.

Время срабатывания автоматически меняется в течение года в зависимости от широты и долготы.

Пример: уличный свет — включить на закате, выключить на рассвете. Добавьте два расписания: Ежедневно + ЗакатТогда — «включить» свет) и Ежедневно + ВосходТогда — «выключить»), с одними координатами.

Заполнение логических выражений

В условиях Если и Или если вы задаёте выражения, которые проверяются по данным от устройства (по порядку; выполняется только первый блок с истинным условием, см. выше). Ниже — откуда берутся Свойства и какие функции можно применять к ним перед сравнением.

Откуда берутся «Свойства»

Свойства в условии — это поля из сообщения от устройства. Когда автоматизация запускается по триггеру «Устройство», воркер получает сообщение (payload) от этого устройства по MQTT. В выражении вы выбираете объект (устройство/источник) и свойство — имя поля в этом сообщении. Примеры: state, value, temperature, illumination и т.п. — в зависимости от того, что устройство передаёт в payload.

Функции над значениями свойств

К значению свойства (но не к константе справа) перед сравнением можно применить функцию (выпадающий список «Функция» у операнда-свойства). В условии функция отображается в call-форме, напр. ROUND(temperature, 0):

  • BOOL — привести значение к логическому типу.

  • UPPER / LOWER — привести строку к верхнему/нижнему регистру.

  • ROUND (0)ROUND (3) — округление числа до 0–3 знаков после запятой.

Функция применяется только к операнду-свойству; вторым операндом может быть константа или другое свойство.

Примечание

Операторы и функции в условии — это коды (не переводятся) и показываются в едином стиле: именованные операторы/функции — заглавными в call-форме (CROSSES_UP(temperature, 24, 2), ROUND(temperature, 0)), символьные сравнения (= < > …) — инфиксно. Внутренне условие хранится каноническим JSON (см. спецификация языка и глоссарий).

EXISTS

EXISTS проверяет, присутствует ли свойство в сообщении от устройства — независимо от значения. Условие истинно, если поле есть в payload, даже если оно равно null, пустой строке, false, 0. В интерфейсе — кнопки EXISTS / NOT EXISTS.

Операторы переходов состояния

Можно проверять не просто «свойство равно X», а как именно изменилось значение. При срабатывании система знает два значения свойства: «было» (до события) и «стало» (в только что полученном сообщении).

  • CHANGED_TO (переход в значение) — свойство стало равно указанному. Например: «выключатель перешёл в ON».

  • CHANGED_FROM_TO (переход из/в) — свойство было одним значением и стало другим. Например: «было OFF, стало ON».

  • CROSSES_UP (порог вверх) — числовое свойство пересекло порог снизу вверх. Например: температура была ниже 30 и стала 30 или выше.

  • CROSSES_DOWN (порог вниз) — числовое свойство пересекло порог сверху вниз.

Гистерезис (полоса) для порога. У CROSSES_UP и CROSSES_DOWN к порогу можно добавить необязательную полосу — она отображается третьим аргументом: CROSSES_DOWN(humidity, 30, 2) (порог 30, полоса 2). В интерфейсе появляется поле «Гистерезис» (можно оставить пустым или 0). Полоса гасит дребезг у порога: оператор сработает один раз при пересечении и повторно — только после того, как значение вернётся за порог как минимум на величину полосы.

Примеры условий:

  • «Выключатель перешёл в ON» — CHANGED_TO(Switch.state, "ON")

  • «Выключатель был выключен и включился» — CHANGED_FROM_TO(Switch.state, "OFF", "ON")

  • «Температура поднялась выше 30» — CROSSES_UP(temperature, 30)

  • «Влажность упала ниже 30 (с гистерезисом 2)» — CROSSES_DOWN(humidity, 30, 2)

Для CHANGED_TO и CHANGED_FROM_TO сравнение не зависит от регистра. Для CROSSES_UP и CROSSES_DOWN свойство и порог должны быть числами; полоса гистерезиса — неотрицательное число.

Действия (ТОГДА)

В блоке ТОГДА можно комбинировать действия. Типы:

Устройство

Выберите помещение и устройство, нажмите Установить состояние и задайте параметры (питание вкл/выкл, яркость, температура и т.д. в зависимости от возможностей устройства). Можно добавить несколько строк «Установить состояние».

Пауза

Задержка перед следующим действием (часы, минуты, секунды; максимум 12 часов). Удобно для цепочек: включить свет → подождать 5 минут → выключить.

Сообщение

Отправка уведомления. Выберите канал:

  • Email — письмо на ваш подтверждённый email (подтвердите его в разделе «Профиль» → «Аккаунт»). Задаются тема и текст.

  • Push — push-уведомление в приложение.

  • Telegram / MAX — сообщение в мессенджер (только текст, без темы).

Удаление автоматизации

В режиме редактирования нажмите Удалить и подтвердите. Действие необратимо.

Советы

  • Давайте автоматизациям понятные названия — в списке проще искать.

  • Чтобы не получать слишком частые email-уведомления, добавьте в конец цепочки паузу нужной длительности.

  • Для разового действия используйте единовременное расписание с опцией «Удалить после запуска».

  • Если нужна логика сложнее, чем позволяет редактор, — воспользуйтесь Node-RED.