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