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

Автоматизация — это правило, по которому дом действует сам: включает свет на закате, пишет в мессенджер при протечке, прогревает баню к вашему приходу.

Всё это настраивается в одном разделе. И запуск по времени, и реакция на датчик — одна и та же форма; разница только в том, что выбрано в блоке «Когда».

Раздел большой, поэтому разделён на четыре страницы:

  • эта — где найти автоматизации, что их запускает и как задать условие;

  • Шаги автоматизации — что она умеет делать;

  • Группы и фоновые задачи — приборы-группы: несколько устройств или одно с программой, и циклы, которые повторяются, пока прибор включён;

  • Параметры и запуск — значения, которые спрашивают при запуске, разовые запуски, история и работа без интернета.

Примеры бытовых задач — в подборке идей.

Где найти

В веб-приложении откройте раздел Автоматизации. Список показывает все автоматизации выбранной локации. Его можно отфильтровать по Статусу («Все», «Включённые», «Выключенные») и по Типу («Все типы», «По событию», «По расписанию»).

На карточке видно название, тип («Событие», «Регулярно», «Разово»), метку состояния и — у запусков по времени — ближайшее срабатывание. Идущий прогон показан чипом «Выполняется» с текущим шагом, работа на хабе — своим чипом (см. Работа без интернета).

Метка

Что означает

Включена

Работает.

Выключена

Выключена переключателем. Сама не сработает.

В прошлом

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

Нет запусков

Включена, все запуски разовые, но все отменены и ни один не состоялся. Добавьте время так же.

Сломана

Остановлена сервером. Причину показывает подсказка при наведении на метку; обычно это удалённое устройство в шагах или в «Когда» — замените его в редакторе и сохраните, метка снимется.

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

Переключатель слева от названия включает и выключает автоматизацию.

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

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

Как она устроена

Редактор открывается сверху вниз.

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

Параметры — значения, которые спрашивают при запуске, см. Параметры и запуск.

Когда — что её запускает. Либо «Событие» (изменение состояния выбранного устройства), либо «Расписание» (время). Расписаний может быть несколько.

Если — условие. Есть только у запуска по событию. Блоков бывает несколько: первый «Если», следующие «Или если». У каждого блока своё условие и свой список действий.

Тогда — что сделать. Шаги выполняются сверху вниз; они описаны на странице Шаги автоматизации.

Внизу — переключатель «Включена». Готово — нажмите «Создать» или «Сохранить». «Отмена» закрывает редактор без сохранения.

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

Важно

Выполняется первый блок, чьё условие верно; остальные пропускаются. Блок с незаполненным условием верен всегда.

Примечание

Своего «Тогда» у отдельного расписания нет: шаги одни на все расписания автоматизации. Поэтому «в 7 утра одно, а в 23 часа другое» — это либо две автоматизации, либо одна с двумя расписаниями и первым шагом «Ветвление», см. «Утром одно, вечером другое» ниже.

Команда с подтверждением

Чтобы не просто отдать команду, а убедиться, что устройство её выполнило, используйте шаг «Ожидание» с пунктом «Перед проверкой» → «Отдать команду устройству». Шаг сам отправит команду и будет ждать статуса, который проходит условие; отдельное «Действие» перед ним не нужно. В «Если не дождались» задайте, что делать без подтверждения. Например: команда печи {"state":"ON"}, условие state = ON, таймаут 2 минуты, иначе — сообщение «печь не включилась» и конец прогона. Подробнее — в разделе «Ожидание» на странице Шаги автоматизации.

Запуск по времени

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

  1. В блоке «Когда» выберите вкладку Расписание.

  2. Нажмите на поле расписания.

  3. Выберите Регулярное или Разовое, задайте время и сохраните.

  4. При необходимости нажмите «Добавить» и задайте ещё расписания — у каждого свой переключатель.

  5. Добавьте шаги в блок «Тогда», включите «Включена» и сохраните.

Блока «Если» у расписания нет: при срабатывании выполняются шаги «Тогда». Развилку по времени или по состоянию дома делают шагом «Ветвление».

Выключить одно расписание

Переключатель слева от расписания в редакторе выключает только его. Остальные расписания и сама автоматизация продолжают работать. Выключенное расписание не срабатывает, пока вы не включите его снова: оно остаётся выключенным после сохранения и после того, как вы выключите и снова включите всю автоматизацию.

Утром одно, вечером другое

  1. Задайте два расписания, например «Ежедневно 07:00» и «Ежедневно 23:00».

  2. Первым шагом «Тогда» добавьте «Ветвление».

  3. В первой ветке соберите условие: слева в секции «Время» выберите сейчас (минута суток), оператор <, справа 720 (полдень). Добавьте в ветку утренние шаги.

  4. В ветке «Иначе» — вечерние шаги.

Внутри ветки нельзя задать вопрос жильцу (сообщение с подтверждением или запросом значений) — для этого заведите две автоматизации.

Часовой пояс

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

Если открыть регулярное расписание из браузера в другом поясе, редактор покажет ближайшее срабатывание уже по вашим часам. Пока это время не посчитано (например, сразу после правки), к времени дописан пояс расписания («07:00 · по Europe/Kaliningrad»). Пояс расписания меняется, только когда вы заново сохраняете его время: окно правки предупредит, что после сохранения расписание перейдёт на пояс этого браузера.

Регулярное

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

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

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

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

  • Ежемесячно — день месяца (или «Последний день»), раз в 1–6 месяцев, время.

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

  • Своё (cron-выражение) — выражение минута час день месяц день_недели. Дни недели считаются от нуля, воскресенье — 0: «каждое воскресенье в 9 утра» это 0 9 * * 0.

«Каждую минуту» и «Каждый час» можно ограничить днями недели и окном «Только в определённые часы». Конечный час входит в окно: «с 9 до 18» срабатывает до 18:59.

Время считается в часовом поясе, в котором расписание задано (см. «Часовой пояс» выше).

Примечание

Последний день месяца. Выбирайте пункт «Последний день», а не число 31. Конкретное число понимается буквально, и месяц без такого дня пропускается: расписание «31-го» в феврале и апреле не сработает.

Разовое

Один запуск в указанные дату и время.

Галочка «Убрать из расписания после запуска» убирает этот запуск из списка после того, как он отработает; прогон остаётся в истории. Если запуск у автоматизации единственный, он остаётся — автоматизации нужен хотя бы один триггер.

Чтобы отменить запланированный сеанс, снимите со взвода сам запуск — переключателем слева от него в редакторе или корзиной в окне автоматизации. Выключить целиком можно и всю автоматизацию, переключателем «Включена».

Восход и закат

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

  • Смещение — «До» или «После» на заданное время, максимум 3 часа.

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

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

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

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

Нужно время на подготовку

Иногда важно не «начать в 18:00», а «быть готовым к 18:00»: баня прогревается, тёплый пол выходит на температуру.

Включите в редакторе «Нужно время на подготовку» и укажите, за сколько начинать — от 1 минуты до 12 часов. Автоматизация запустится заранее. Если до назначенного времени осталось меньше, запуск произойдёт сразу.

Если в шагах есть пауза, разовый запуск ближе подготовки сохранить нельзя: паузы отсчитываются от фактического старта и сместились бы. Назначьте время не раньше, чем через время подготовки.

Разовые запуски одной автоматизации должны отстоять друг от друга хотя бы на время подготовки. И нельзя увеличить подготовку так, что уже запланированный запуск должен был бы начаться немедленно.

Настройка действует только на разовые запуски с фиксированным временем. У регулярных и солнечных расписаний опережение задают их собственным временем.

Запуск по событию устройства

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

  1. В блоке «Когда» выберите вкладку Событие.

  2. Нажмите на поле и выберите Помещение, затем Устройство. Список показывает только выбранное помещение, поэтому одноимённые устройства из разных комнат не спутать.

  3. Нажмите на поле условия в блоке «Если» и соберите условие. Пустое условие верно всегда.

  4. Добавьте действия в блок «Тогда».

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

  6. Включите «Включена» и сохраните.

Когда прибору отдают команду, zigbee2mqtt сначала повторяет его прежнее состояние и только потом присылает новое. Автоматизации этот повтор не видят: «Если: Вкл/выкл = Вкл» не сработает в момент выключения. Условие «Вкл/выкл = Вкл» срабатывает на каждое сообщение, где лампа включена; чтобы сработать ровно один раз в момент включения, возьмите оператор CHANGED_TO («стало равно», см. «Как изменилось значение» ниже).

Условия

Условие проверяется по сообщению от устройства — тому, которое оно только что прислало. Обычная автоматизация запускается либо расписанием, либо сообщением одного устройства, и другие устройства в её условии не участвуют: в блоке «Если» сравниваются свойства сработавшего устройства, и выбирать там нечего.

Свойство

Свойство — это поле в сообщении устройства: state, value, temperature, illumination и другие, смотря что устройство передаёт. В конструкторе слева набирается имя свойства (или выбирается из списка по иконке в поле), справа — значение. Справа свойство подставляется из списка и выглядит как {{prop:temperature}}, параметр — {{arg:Порог}}. Отдельного выбора «свойство / значение / параметр» нет — вид операнда виден по тексту поля.

Условия объединяются в группы связками И и ИЛИ.

Свойство другого устройства — после «Ожидания»

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

У устройства, которое отвечает на опрос, «Ожидание» засчитывает только новое событие. У устройства без обратной связи можно разрешить последний полученный статус, если он не старше заданного времени.

Примечание

У автоматизации по расписанию события нет: в условии ветки сравнивайте время, параметр или свойство устройства после «Ожидания» — иначе сохранение вернёт ошибку. Логика группы и её фоновые задачи читают любое устройство локации: там источник выбирается из всех устройств.

Функции

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

  • BOOL — привести значение к «да/нет».

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

  • ROUND (0) … ROUND (3) — округлить число до 0–3 знаков после запятой. Если прибор прислал не число (например, ошибку датчика), значения нет — условие не выполняется, в том числе с «НЕ».

Функция применяется только к свойству, но не к константе справа.

Примечание

Операторы и функции — это коды, они не переводятся. Именованные пишутся заглавными в виде вызова (CROSSES_UP(temperature, 24, 2)), сравнения — привычным знаком между операндами (=, <, >). В списке операторов под каждым именованным кодом — короткое пояснение по-русски.

EXISTS

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

Как изменилось значение

Можно проверять не «свойство равно X», а то, как именно оно изменилось: сравниваются «было» и «стало». «Было» — последнее известное значение свойства; сразу после перезапуска сервера оно неизвестно. Тогда CHANGED_TO срабатывает на первый же статус с нужным значением, а остальные операторы ждут настоящего перехода.

  • CHANGED_TO — свойство стало равно указанному. «Выключатель перешёл в ON»: CHANGED_TO(state, "ON").

  • CHANGED_FROM_TO — было одним значением, стало другим. «Было OFF, стало ON»: CHANGED_FROM_TO(state, "OFF", "ON").

  • CROSSES_UP — число пересекло порог снизу вверх: CROSSES_UP(temperature, 30).

  • CROSSES_DOWN — сверху вниз: CROSSES_DOWN(humidity, 30).

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

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

Время

Кроме свойств устройства в условии доступно текущее время — секция «Время» в списке левого поля (в поле ляжет, например, {{now:dow}}; рядом — часовой пояс, его выбирают из списка с поиском):

  • сейчас (минута суток) — от 0 до 1439;

  • сейчас (день недели, 0 = вс);

  • сегодняшняя дата;

  • светло / темно — где вы находитесь сейчас, до заката или после;

  • минут до восхода и минут до заката.

Этим различают блоки «Если» и ветки «Ветвления»: «если минута суток меньше 12 × 60 — одно, иначе другое».

Ограничения

Сохранение с превышением вернёт ошибку с названием поля.

Что

Предел

Автоматизаций в локации (проверяется при создании)

200

Расписаний и событий, не считая разовых запусков

50

Параметров

20

Блоков «Если» в автоматизации, веток в «Ветвлении»

20

Шагов в одном блоке или ветке

30

Шагов в «Если не дождались» у одного ожидания

30

Шагов во всей автоматизации, включая ветки и «Если не дождались»

100

Запланированных разовых запусков

30, не больше одного на одну минуту

Интервал «Каждую минуту»

1–59 минут

Пауза, таймаут ожидания

до 12 часов

Время на подготовку

от 1 минуты до 12 часов

«Ждать ответа, минут» у сообщения с вопросом

от 1 до 60

Смещение от восхода или заката

до 3 часов

Адрес «Сообщение в топик» в правиле отмены

не меньше двух уровней через /, до 500 символов

Удаление

Нажмите корзину на карточке в списке или «Удалить» в редакторе и подтвердите. Идущий прогон будет остановлен, запущенные автоматизацией циклы — выключены. Действие необратимо.

Советы

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

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

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

  • Если одно и то же правило нужно с разными числами — не копируйте автоматизацию, а заведите параметр.

См. также

Нашли ошибку на странице или не получилось? Напишите нам: rocket-home-ru@yandex.ru или в Telegram-группу https://t.me/RocketHome — укажите адрес страницы и что пошло не так.