Шаги автоматизации

Блок «Тогда» — это список шагов. Они выполняются сверху вниз, один за другим: пока шаг не закончился, следующий не начинается.

Шаг добавляют кнопкой «Добавить» и настраивают, нажав на его строку. Порядок меняют стрелками.

Название и пояснение

Чтобы назвать шаг, откройте его и нажмите в шапке окна значок бирки «Назвать шаг»:

  • Название — короткое имя вроде «Прогрев парилки». Оно встаёт в строку шага вместо технической сводки и видно в окне идущей автоматизации («шаг 2 из 7 · Насыщение»), в истории запусков и чипом в списке автоматизаций.

  • Описание — зачем шаг сделан так. Прячется за значком (i) рядом с названием.

К полям шага возвращает стрелка «Вернуться к шагу». Ветки «Ветвления» называют в его окне: нажмите на подпись ветки («Ветка 1», «Иначе»).

Описание есть и у самой автоматизации (поле под названием), и у настроек прибора — у группы в редакторе её логики. Везде, где поля для показа нет, описание показывает значок (i).

Действие

Отдаёт команду. У шага два подтипа.

Устройство

Выберите Помещение, затем Устройство, нажмите «Установить состояние» и задайте параметры: включить или выключить, яркость, температуру — смотря что устройство умеет. Строк «Установить состояние» может быть несколько.

У строки два поля: ключ и значение. Набранное руками — это и есть значение (или ключ). Иконка списка справа в поле открывает варианты по секциям:

  • Значения — варианты умения (включить, выключить, режимы);

  • Параметры — параметр автоматизации, в поле ляжет {{arg:Яркость}};

  • Свойства — значение из сообщения устройства-триггера или устройства, статус которого дождался шаг «Ожидание», в поле ляжет {{prop:brightness}};

  • Регистры — только в логике прибора, {{expose:power}}.

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

Так одна автоматизация с параметром «яркость» заменяет десяток одинаковых.

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

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

Примечание

Выключение камина Milafire отдавайте отдельным шагом и выбирайте в списке «Выключить», а не параметром или свойством.

Ту же команду можно набрать руками: переключатель над сообщением — «Сообщение как JSON» или «Сообщение по полям». Адрес устройства на вкладке «Устройство» подставляется сам; свой адрес пишут на вкладке «Публикация в топик». Иконка (x) в поле вставляет параметр или свойство на место курсора; в свёрнутом виде вместо подставленного значения видна метка вроде @яркость.

Публикация в топик

Отправляет своё сообщение по своему адресу — например устройству за чужим мостом или собственному контроллеру.

Адрес пишется хвостом, без префикса дома: его подставляет брокер. Шаблоны + и # недопустимы — публиковать можно в конкретный адрес, а не в маску. В адрес можно вставить параметр; если после подстановки в адресе появился пустой уровень, + или #, шаг завершится ошибкой.

Пауза

Задержка перед следующим шагом: включить свет, подождать пять минут, выключить.

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

Третий режим, «Переменная», доступен только внутри фоновой задачи.

Ожидание

Пауза ждёт время, а ожидание ждёт событие: пока устройство не отчитается нужным состоянием. Этим проверяют, что команда действительно выполнена — печь включилась, помещение прогрелось.

Выберите Помещение и Устройство. Групп в списке нет: у группы нет своего адреса, и ожидание на ней досидело бы до конца таймаута.

Дальше:

«Дождаться условия» — соберите условие по свойству этого устройства. Если оставить его пустым, шаг продолжится, как только устройство пришлёт любой новый статус. Этот статус доступен следующим шагам — его можно подставить в команду или в текст сообщения. Операторы изменения (CHANGED_TO, CHANGED_FROM_TO, CROSSES_UP, CROSSES_DOWN) здесь недоступны, а проверяются только свойства самого ожидаемого устройства.

«Таймаут ожидания» — сколько ждать, максимум 12 часов.

«Перед проверкой» — что сделать в момент входа в шаг:

  • «Ничего не делать» — просто ждать, пока устройство пришлёт статус само;

  • «Запросить статус устройства» — попросить его отчитаться сейчас;

  • «Отдать команду устройству» — шаг сам отправит команду из появившегося поля «Команда» (например {"state":"ON"}) и будет ждать подтверждения: условие ниже и есть эта проверка. Так «Ожидание» заменяет пару «Действие + Ожидание».

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

«Принимать последний полученный статус» — не ждать нового, если устройство присылало статус недавно. Рядом задаётся, насколько старый статус ещё годится. Пункт есть только у устройства, которое не отвечает на запрос статуса: отвечающее отчитается само по «Запросить статус устройства». Годится статус не старше 12 часов; сразу после перезапуска сервера последнего статуса может не быть до следующей публикации устройства.

Если не дождались

Отдельный выбор из четырёх пунктов — что делать, когда таймаут истёк, а нужного статуса не было:

  • Продолжить прогон — идти дальше по списку;

  • Закончить прогон — оставшиеся шаги не выполняются; у фоновой задачи это завершает сеанс и уводит в ветку остановки;

  • Выполнить шаги и продолжить прогон;

  • Выполнить шаги и закончить прогон.

В двух последних появляется свой короткий список шагов. Он играется до того, как решится судьба цепочки, — так пишут «напиши, что печь не отвечает, и заканчивай». Внутри допустимы только «Действие», «Регистр группы» и «Сообщение» в режиме «Сообщить»; паузы, ожидания, ветвления, «Регулятора» и вопросов там нет.

Сообщение

Отправляет уведомление и, если нужно, спрашивает человека.

Канал выбирается в поле «Канал»:

  • Email — письмо на ваш подтверждённый адрес (подтвердить его можно в профиле).

  • Push — уведомление в браузеры, где вы разрешили их показывать. Если разрешения нет ни в одном браузере, шаг завершится ошибкой.

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

У Email и Push задаются «Тема» и «Текст».

Совет

Как подтвердить email и привязать мессенджер — в разделе Уведомления.

Что сделать

Поле «Что сделать» решает, ждёт ли автоматизация ответа.

  • Сообщить — односторонняя телеграмма. Кнопок нет, автоматизация идёт дальше сразу.

  • Запросить подтверждение — спрашивает «да» или «нет».

  • Запросить значения — то же, плюс поля: например, на сколько минут включить.

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

Настраиваются:

  • «Кнопка согласия» и «Кнопка отказа» — что будет на них написано. Оставите пустыми — подставится текст по умолчанию.

  • «Какие параметры запросить» — для режима «Запросить значения».

  • «Ждать ответа, минут» — от 1 до 60. Пока ответа нет, автоматизация занята и повторно не срабатывает, поэтому ждать дольше часа нельзя.

  • «Если ответа не будет» — «Продолжить прогон» (запрошенные параметры сохранят текущие значения) или «Прервать прогон».

  • «Если ответят отказом» — «Прервать прогон» целиком или «Продолжить прогон»: шаг завершится, цепочка пойдёт дальше, а отказ останется виден в истории.

Примечание

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

Подстановки в тексте

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

Поставьте курсор в нужное место, нажмите иконку (x) и выберите значение. Под текстом видно превью с подстановками.

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

Ветвление

Развилка внутри цепочки. Внутри — те же блоки «Если → Тогда»: работает первая подошедшая ветка, ветка без условия подходит всегда и означает «иначе». Не подошла ни одна — шаг ничего не делает.

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

Пустая ветка законна и означает «в этом случае — ничего». Ветвление последним шагом с пустой веткой обрывает цепочку по условию.

Ограничения: ветвление внутри ветвления невозможно; в условии ветки нельзя пользоваться операторами изменения (CHANGED_TO, CHANGED_FROM_TO, CROSSES_UP, CROSSES_DOWN); внутри ветки нет «Регулятора» и сообщения с вопросом; внутри фоновой задачи ветвления нет вовсе.

Ветвление после «Ожидания» может сравнить статус, которого оно дождалось, — источник «<устройство> — после ожидания»; подробнее — в разделе «Свойство другого устройства — после «Ожидания»» на странице Автоматизации.

Настройки ждущих шагов

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

Отменять по событию

Событие досрочно прекращает ожидание. В диалоге выбирается источник — «Устройство» (каскад Помещение → Устройство) или «Сообщение в топик» (адрес, который вы пишете сами) — и что делать дальше:

  • «Снять ожидание и доиграть остальные действия» — «движение прекратилось, выключить сразу»;

  • «Прервать прогон, остальные действия не выполнять» — «протечку устранили, перестать звонить».

Правило действует, только пока прогон стоит на этом шаге. У адреса-топика условие необязательно: без него шаг отменит любое сообщение по этому адресу. Отменяют и сообщения на вложенные уровни адреса. Адрес вы пишете сами: переименование устройства его не поправит. В условии отмены нельзя пользоваться операторами изменения и параметрами.

Продлевать при повторном срабатывании

Обычно новое срабатывание триггера, пока прогон спит, просто отбрасывается. С этой настройкой оно перевзводит срок шага на полную длительность.

Так пишется «выключить через десять минут после последнего движения»: каждое новое движение отодвигает выключение, а его отсутствие — нет.

Настройка есть у паузы и ожидания — только у них есть срок, который можно перевзвести, — и только у автоматизаций по событию: следующее срабатывание расписания паузу не продлевает.

Шаги внутри прибора-группы

У приборов, собранных из нескольких устройств, есть свои шаги. «Регулятор» доступен только в фоновой задаче, «Применить умолчание» — только в обработчике записи регистра, «Ответить» — только в ветке «Чтение» логики прибора. Шаг «Регистр группы» предлагается в логике прибора и в его фоновых задачах — им кладут значение в регистр этого прибора. Чтобы просто включить прибор из обычной автоматизации, хватает «Действия», как любому устройству.

В ветке «Событие устройства» у шага «Регистр группы» есть поле «Записать, если держится». Пока оно пустое, регистр пишется сразу, как пришёл статус устройства. Если задать, например, 5 секунд, запись случится, только если устройство всё это время оставалось в том же состоянии. Так клавиши на стене меняют запомненный режим люстры, а промежуточное «горит одна клавиша» при выключении обеих — нет. Команда из панели или Алисы в эти секунды главнее: ожидание снимается.

Что такое регистры прибора и где живут эти шаги — на странице Группы и фоновые задачи.

См. также

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