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

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

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

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

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

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

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

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

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

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

Переключатель слева от названия включает и отключает автоматизацию без удаления (режим «Пауза»).

Предупреждение

Выключение — это именно остановка: идущий прогон прерывается, а периодические включения, которые автоматизация запустила (например, режим «умный вентилятор»), выключаются. Обратное включение переключателя их не возобновляет — автоматизация просто снова начнёт срабатывать по своим условиям. То же происходит при удалении.

Общая схема

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

  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-выражение (минута час день месяц день_недели). Дни недели нумеруются от нуля, воскресенье — 0: «каждое воскресенье в 9 утра» это 0 9 * * 0.

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

Примечание

Последний день месяца. В ежемесячном расписании выберите пункт Последний день — автоматизация сработает 31-го, 30-го, 29-го или 28-го числа, смотря сколько дней в месяце. Именно этот пункт, а не число 31: конкретное число понимается буквально, и месяц, в котором такого дня нет, пропускается (расписание «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 свойство и порог должны быть числами; полоса гистерезиса — неотрицательное число.

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

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

Команда

Выберите Помещение, затем Устройство (тот же каскад, что и в блоке «Когда», в шагах «Ожидание» и «Отменять по событию» — там он на вкладке «Устройство», — и в цели циклического переключателя), нажмите Установить состояние и задайте параметры (питание вкл/выкл, яркость, температура и т.д. в зависимости от возможностей устройства). Можно добавить несколько строк «Установить состояние».

Значение не обязано быть константой. В строке есть выбор источника: Значение (как раньше), Параметр — подставится значение параметра автоматизации, Свойство — значение из сообщения устройства-триггера или устройства, статус которого дождался шаг «Ожидание». Так одна автоматизация с параметром «яркость» заменяет десяток одинаковых, а команда может повторить показание датчика.

Предупреждение

Подставленное значение уходит в устройство как есть, без пересчёта, который панель делает для константы. У ламп Zigbee яркость на проводе задаётся в шкале 0–254 (а не 0–100, как в поле), поэтому параметр удобно объявить сразу в этой шкале. Выключение каминов Milafire отправляется отдельной командой, и параметром со значением «OFF» его не выполнить — для выключения используйте обычное значение.

Тот же результат можно набрать руками: переключатель </> рядом с типом действия открывает топик и сообщение как текст, а иконка (x) в поле сообщения вставляет параметр или свойство в позицию курсора. В свёрнутом виде вместо подставленного значения показывается метка @имя_параметра.

Пауза

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

Сообщение

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

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

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

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

Совет

Где подготовить каналы (подтвердить email, привязать Telegram) — в разделе Уведомления.

В тему и текст можно подставлять значения: параметры автоматизации, свойства устройства, по которому сработала автоматизация (если она запускается по событию устройства), и свойства устройств, статус которых дождался шаг «Ожидание». Поставьте курсор в нужное место, нажмите иконку (x) в правом углу поля и выберите значение — на его месте при отправке подставится актуальная величина (например, температура в парной). Под текстом видно превью с подстановками.

Кроме отдельных значений в тексте доступен пункт «Статус целиком (JSON)» — он вставит всё сообщение устройства целиком, например {"battery":87,"state":"ON","temperature":23.5}. Полезно, когда важно увидеть всё разом, но учтите: это ровно то сообщение, которым устройство отчиталось (кнопка пришлёт только нажатие), в нём есть служебные поля вроде уровня сигнала, а очень длинный текст мессенджер не примет — Telegram обрежет отправку на 4096 символах.

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

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

Советы

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

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

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

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