Автоматизации¶
Автоматизации позволяют умному дому действовать самому: выполнять команды устройствам по времени или при изменении состояния другого устройства, отправлять уведомления и выстраивать цепочки действий с задержками.
Раздел Автоматизации — единый: и «по времени» (расписания), и «если — то» (сценарии по датчикам) настраиваются в одном месте, одной формой. Прежние отдельные разделы «Сценарии» и «Расписания» объединены в него.
Примеры задач «зачем это нужно» — в подборке идей.
Где находятся автоматизации¶
В веб-приложении откройте раздел Автоматизации. Список показывает все автоматизации выбранной локации. Их можно отфильтровать:
Статус — Все / Активные / Неактивные.
Тип — Все / Расписания / Сценарии. Это лишь способ отображения: простые автоматизации (один запуск по времени и одно действие) показываются как Расписание, более сложные (условия, несколько действий, триггер по устройству) — как Сценарий. Под капотом это одна сущность.
Кнопка Обновить перезагружает список. На карточке — название, метки статуса (Активно / Пауза, для прошедшего разового запуска — В прошлом), тип (Регулярно / Разово / Сценарий) и, для запусков по времени, ближайшее срабатывание.
Создание и редактирование доступно только владельцу локации. Чтобы создать автоматизацию, нажмите кнопку + (внизу справа). Чтобы изменить существующую — нажмите на карточку. Переключатель на карточке включает или отключает автоматизацию без удаления (режим «Пауза»).
Общая схема¶
У каждой автоматизации есть:
Название — произвольное, для вашего удобства.
КОГДА — что запускает автоматизацию. Выберите один из двух типов триггера:
Устройство — срабатывание по изменению состояния выбранного устройства (например, датчик движения);
Расписание — запуск по времени (регулярно или один раз); можно задать несколько расписаний.
ЕСЛИ — условия (для триггера по устройству). Первый блок Если и при необходимости дополнительные блоки Или если; в каждом задаётся условие и свой список действий. Для чистого запуска по времени условие можно не задавать.
ТОГДА — список действий (управление устройством, пауза, отправка сообщения).
Активен — включена ли автоматизация.
После настройки нажмите Создать или Сохранить. Отмена закрывает панель без сохранения.
Автоматизация по расписанию¶
Подходит для действий по времени: включить свет в 7:00, выключить обогреватель в 23:00, напоминание раз в день.
В блоке КОГДА выберите вкладку Расписание.
Нажмите на поле расписания (или «Добавить», если список пуст) и в диалоге задайте тип и время (см. «Когда: регулярное и единовременное» ниже). Сохраните.
При необходимости добавьте ещё расписания кнопкой Добавить (каждое можно включать/выключать переключателем).
В блоке ТОГДА добавьте одно или несколько действий (см. «Действия» ниже). Условие ЕСЛИ для запуска строго по времени можно оставить пустым.
Включите Активен и нажмите Создать или Сохранить.
Автоматизация по устройству¶
Запускается при изменении состояния выбранного устройства (например, сработал датчик движения). Задаётся один блок Если и при необходимости дополнительные блоки Или если; в каждом — условие и свой список Тогда.
Важно
Порядок проверки блоков: выполняется первый по порядку блок с истинным условием. Незаполненное условие считается истинным.
В блоке КОГДА выберите вкладку Устройство.
Нажмите на поле и выберите Помещение и Устройство — это триггер. Сохраните.
Добавьте хотя бы один блок Если: нажмите на область условия и в конструкторе соберите выражение — объект (устройство), свойство (
state,value,temperatureи т.д.) и оператор/значение. Условия можно объединять в группы (И/ИЛИ). Сохраните.В блоке Тогда этого блока добавьте действия.
Если нужно несколько разных условий с разными действиями — нажмите Добавить блок «Или если» (он проверяется только если все предыдущие условия ложны).
Включите Активен и нажмите Создать или Сохранить.
Когда: регулярное и единовременное¶
В диалоге расписания выберите тип:
Регулярное — повтор по расписанию. Выберите периодичность:
Каждую минуту — интервал в минутах.
Каждый час — интервал в часах (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.