Три части сценария и в чём их разница
Автоматизации в разных системах выглядят по-разному, но логика у них общая. Сначала происходит событие, затем проверяется, подходит ли момент, затем что-то выполняется. Эти три шага называют триггером, условием и действием.
Триггер отвечает на вопрос «когда». Это может быть время, закат, сработавший датчик движения, открытая дверь, нажатая кнопка, приход телефона в зону дома. Триггер запускает проверку и сам по себе ничего не делает.
Условие отвечает на вопрос «а нужно ли сейчас». Например, света включать не требуется, если за окном светло, а ночью, если вы дома и спите, не стоит включать яркий потолочный свет. Условие проверяется в момент срабатывания триггера и либо пропускает сценарий дальше, либо останавливает.
Действие отвечает на вопрос «что сделать»: включить лампу, закрыть шторы, прислать уведомление, запустить другой сценарий. Действий может быть несколько, и часто между ними можно поставить паузу.
Типичные примеры в виде таблицы
Ниже показано, как одна и та же идея раскладывается на части. Это иллюстрация логики, а не готовый рецепт для конкретного приложения.
| Задача | Триггер | Условие | Действие |
|---|---|---|---|
| Свет в коридоре ночью | Движение в коридоре | Время с вечера до утра | Включить тусклый свет, выключить через паузу |
| Предупреждение о протечке | Датчик воды сработал | Нет | Перекрыть клапан, прислать уведомление |
| Закрыть шторы вечером | Закат | Вы не отключили сценарий | Закрыть шторы, приглушить свет |
| Выключить технику при уходе | Все ушли из дома | Нет открытых дверей | Выключить розетки и свет |
| Утренний режим | Будильник или время | Рабочий день | Включить свет, повысить температуру |
Видно, что условие чаще всего «чистит» сценарий от лишних срабатываний. Если сценарий срабатывает слишком часто, добавьте условие, а не пытайтесь менять триггер. Если ничего не происходит, проверьте, не отсекает ли ваше условие все варианты.
Условия «и» и «или» и ловушки логики
Когда условий несколько, нужно понимать, как они объединяются. Вариант «и» требует выполнения всех условий сразу, вариант «или» достаточно одного. Типичная ошибка: человек ставит два условия «время после захода» и «движение в комнате» и ожидает, что сценарий сработает в любом из случаев, но система требует оба одновременно.
Вторая ловушка связана с «залипшими» состояниями. Датчик движения сообщает о движении и через заданное время возвращается в состояние «нет движения». Если вы запускаете выключение света по триггеру «движения нет», убедитесь, что в системе заданы время ожидания и порядок событий. Иначе свет выключится в тот момент, когда вы сидите неподвижно и читаете.
Третья ловушка касается состояния устройств. Команда «переключить» меняет состояние на противоположное, а команды «включить» и «выключить» задают конкретное. В сценариях стоит выбирать конкретные, чтобы повторный запуск не давал обратного результата. Это особенно важно для устройств с ИК-управлением, где реальное состояние неизвестно.
Как не получить зацикливание и конфликт сценариев
Зацикливание возникает, когда действие одного сценария запускает триггер другого, а тот возвращает всё обратно. Пример: сценарий включает свет при движении, а другой выключает свет при смене состояния лампы, и они бьются между собой.
Чтобы избежать неприятностей:
- Давайте каждому сценарию понятное имя, по которому видно, что он делает.
- Не создавайте два сценария на одно и то же устройство с противоположными действиями без чёткого разграничения по условиям.
- Добавляйте паузы между действиями и после срабатывания, чтобы датчики успели вернуться в исходное состояние.
- Для опасных действий, например отключения нагревательных приборов, не полагайтесь только на один датчик.
- Оставляйте возможность ручного управления: выключатель или кнопка должны работать независимо от автоматики.
- Автоматику, связанную с отоплением, водой и электроприборами большой мощности, не делайте единственной защитой: штатные защиты и устройства безопасности не заменяйте, а подключение таких узлов согласуйте со специалистом.
Если сценарии начали вести себя странно, временно отключите их по одному и смотрите, какой вызывает проблему. Журнал автоматизаций, если система его ведёт, показывает цепочку событий и помогает найти момент, где началась «драка».
Проверка перед тем, как оставить на автомате
Новый сценарий сначала проверяют вручную, а уже потом оставляют на самостоятельную работу.
- Запустите действие вручную из приложения и убедитесь, что устройства откликаются.
- Сымитируйте триггер: пройдите мимо датчика, откройте дверь, дождитесь времени.
- Проверьте условия, меняя их по одному: что будет, если вы дома или нет, днём или ночью.
- Посмотрите, что происходит при пропадании связи: сценарий может остановиться или выполниться частично.
- Через несколько дней просмотрите журнал и убедитесь, что срабатываний не больше и не меньше ожидаемого.
Следите за временем срабатывания: об этом подробнее на странице про сценарии, идущие не вовремя. А если часть логики можно выполнять без облака, обратитесь к странице про локальные сценарии. Чем проще сценарий, тем легче его диагностировать, поэтому разбивайте сложные задачи на несколько небольших.
Где исполняется сценарий: облако, хаб или устройство
Один и тот же сценарий может выполняться в разных местах, и от этого зависит его надёжность. Облачное выполнение означает, что логику обрабатывает сервер производителя: при пропадании интернета сценарий не запустится. Выполнение на хабе означает, что логика хранится в вашей сети и продолжает работать без внешней связи. Сценарии, записанные в самом устройстве, например таймер лампы, простые, но ограниченные по возможностям.
Практический вывод таков. Для важных задач, например отопления и защиты от протечки, выбирайте место выполнения, не зависящее от интернета. Для удобных, но необязательных, например утренней сцены, облако вполне допустимо. В приложении обычно указано, где работает сценарий, а если нет, проверить можно просто: отключите интернет у роутера и посмотрите, что сработает.
О локальной работе подробнее сказано на странице про умный дом без интернета. Там же стоит посмотреть, какие сценарии разумно переносить на хаб.
Если вы только начинаете, возьмите один простой сценарий и доведите его до стабильной работы, прежде чем строить следующий. Например, включение света в коридоре по движению с выключением через паузу. Когда он работает без сюрпризов в течение нескольких недель, добавляйте условие по времени суток, затем уведомления. Такой постепенный путь проще диагностировать, чем набор из десятка автоматизаций, созданных за один вечер.