Hero Image

Автоматизация - руководство

Состояния

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

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

🔹 Примеры рекомендуемого именования:
Назначение автоматизации Что делает автоматизация Рекомендуемое имя состояния Почему так лучше
Поддержание температуры в комнате Следит за температурой и включает обогреватель Температура, Нагреватель Имя отражает смысл, не привязано к конкретной комнате
Автоматизация полива Поливает грядки по расписанию ДатчикВлаги, Насос Неважно где именно — логика одна и та же
Управление подсветкой Включает и выключает свет в зависимости от времени Свет, День Ясно, что управляем освещением, и знаем когда день
Контроль уровня воды в бочке Отслеживает уровень воды и включает насос Уровень, Заполнение Не завязано на название датчика или модели насоса

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


Локальные состояния

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

Вы указываете тип данных — число, логика (да/нет), текст и т.д.

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

🔹 Примеры использования локальных состояний:

Назначение Локальное состояние Тип данных Использование
Расчёт времени дня и ночи День Да/Нет В других автоматизациях проверяем, сейчас день или нет
Установка желаемой температуры ЦелеваяТемпература Число Используется для включения/выключения обогрева
Временное накопление данных СреднееЗначение Число Для анализа или регулировки на основе истории
Ручной переключатель режима ГостевойРежим Да/Нет Влияет на поведение системы в зависимости от ситуации дома

Процессы

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

💡 Думая о процессах, проще всего представить: «Что-то началось, и пока не завершилось — система знает об этом и может на это реагировать».

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

  • можно запустить указав длительность и если нужно периодичность;

  • можно остановить вручную;

  • можно проверять: процесс сейчас активен или нет.

  • остановится сам по истечению длительности

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


Что можно делать с процессами:

  • Запускать их вручную или через триггеры (например, по времени, по изменению состояний);

  • Указывать длительность (например, обогрев на 15 минут);

  • Останавливать вручную или с помощью правил;

  • Отслеживать статус — активен сейчас процесс или завершён;

  • Настраивать Уведомления на смену состояния процесса:

    • запуск;

    • выполнение по времени;

    • завершение;

    • ручная остановка.


🔹 Примеры процессов в умном доме:

Назначение Имя процесса Что делает процесс Как запускается
Полив растений Полив Включает насос на 10 минут По времени, по датчику влажности или вручную
Подсветка утром Подсветка Включает лампу на 20 минут По триггеру времени или состоянию “День”
Обогрев ванной Обогрев Включает обогреватель на 30 минут При обнаружении движения
Проветривание Вентиляция Запускает вентилятор на 5 минут При повышенной влажности
Наполнение ёмкости Заполнение Включает насос, отключает после заданного времени или по датчику Вручную или при низком уровне воды
Переключение крана ОткрытиеКрана Держит реле включённым 3 секунды, чтобы переключить положение При запуске полива или наполнении
Окно для полива ОкноПолива Обозначает благоприятный период (например, без солнца, без ветра) Вычисляется на основе условий (погода, время, освещённость)
Опрос устройства ОпросДатчика Активирует запрос данных на 15 секунд Периодически, по условию или при старте системы

Когда стоит использовать процесс:

  • Когда нужно включить что-то на время (насос, свет, обогрев);

  • Когда есть задержка на выполнение (открытие клапана, сработка механики);

  • Когда вы хотите отслеживать "активную фазу" действия;

  • Когда система должна знать: что-то выполняется прямо сейчас;

  • Когда нужно выполнять действия при завершении, а не сразу.

Триггеры

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

Если вы описали состояния, с которыми работаете, и используете их в правилах — система автоматически следит за их изменениями. То есть:

💡 Триггеры на изменение состояний создаются автоматически, если состояние используется в условиях или действиях.

Когда же нужно создавать триггер вручную?

Только если вы хотите, чтобы автоматизация среагировала на конкретный тип изменения или только при определённой причине.
Например:

  • вас интересует именно рост значения (а не любое изменение);

  • вы хотите понять, что изменилось именно сейчас, а не просто стало другим;

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


Как работают триггеры

  • При старте автоматизации и при изменении любого из состояний, использованных в правилах, система автоматически выполняет проверку;

  • Явные триггеры нужны, когда вы хотите уточнить: что именно вызвало проверку;

  • Внутри правил можно проверить, по какому триггеру была запущена проверка.


🔹 Типы ручных триггеров

1. Триггеры по состоянию

Позволяют отследить конкретный характер изменения значения.
Например:

  • значение изменилось в большую сторону (включилось, увеличилось);

  • значение изменилось в меньшую сторону (выключилось, упало);

  • устройство подтвердило применение состояния;

  • состояние просто обновилось (даже если не изменилось).

Тип Что отслеживает Примечание
Изменение Любое изменение значения Создаётся автоматически при использовании состояния
Больше Значение стало больше (например, выключено → включено) ❗️Порог не задаётся, только направление изменения
Меньше Значение стало меньше (например, включено → выключено) То же самое — без числового порога
Подтверждение состояния Устройство подтвердило выполнение команды Удобно для критических или чувствительных действий
Обновление Любое получение нового значения, даже если оно не изменилось Полезно для периодически присылающих данные устройств

🛠 Пример: Если вы создаёте триггер «Розетка — больше», то он сработает, когда розетка включится (т.е. перейдёт от "0" к "1"). Но задать "включайся, если стала больше 500Вт" нельзя — порог не указывается.

2. Триггеры по времени

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

Примеры:

  • Каждый день в 7:00;

  • По будням в 18:30;

  • Один раз в неделю в субботу в 10:00.

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

3. Триггеры на процесс

Срабатывают при изменении состояния процесса:

Событие процесса Когда срабатывает
Запуск Процесс был запущен
Выполнение Процесс сработал внутри своей длительности (например, каждые 5 мин)
Завершение Завершился по времени
Остановка вручную Прерван вручную или другим действием

Такие триггеры позволяют отреагировать на ход выполнения процесса — например, что-то сделать после завершения, или если процесс был остановлен неожиданно.


🔹 Примеры использования ручных триггеров

Тип триггера Пример сценария Зачем нужен вручную заданный триггер
По состоянию (больше) Розетка "нагреватель" включилась Чтобы запускать действия только в момент включения
По состоянию (меньше) Влажность резко упала Проверить, не пора ли поливать
По времени Каждый день в 6:30 Запускаем процесс Полив
По процессу (стоп) Процесс Подсветка остановлен вручную Отправить уведомление или записать в лог

Когда использовать ручные триггеры:

  • Когда вам важно знать, по какому событию сработала автоматизация;

  • Когда требуется управление последовательностью действий (например: "после включения → подождать → затем включить другое");

  • Когда нужно точно отследить направление изменения состояния (в большую или меньшую сторону);

  • Когда автоматизация должна запускаться по расписанию (временные триггеры);

  • Когда вы хотите отслеживать жизненный цикл процесса.

Отлично! Вот финальная, выверенная и структурированная версия блока «Правила» — с учётом всех твоих комментариев и замечаний:


Правила

Правила описывают, что система должна делать при выполнении определённых условий. Это не программа, а декларативное описание:
"Что должно быть установлено — и при каком условии (если нужно)."


📌 Формат записи правила

ЧТО СДЕЛАТЬ ПРИ УСЛОВИИ (опционально)
  • ЧТО СДЕЛАТЬ — любое действие: установка состояния, запуск процесса и т.д.

  • ПРИ УСЛОВИИ — логическое выражение (Да/Нет), которое определяет, когда это действие должно выполняться.

Упрощённый формат

Если действие — это установка логического значения (Да/Нет, Вкл/Выкл), можно писать:

ЧТО = УСЛОВИЕ

Пример:

Нагреватель = Температура < ЦелеваяТемпература

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


Как работают правила

  • Проверяются:

    • при запуске автоматизации;

    • при изменении использованных в них состояний;

    • при срабатывании явных триггеров (если заданы);

  • Выполняются параллельно и независимо — порядок не важен;

  • Все правила работают с одним срезом данных — изменения, внесённые одним правилом, не видны другим до следующей проверки.


Примеры правил

Назначение Правило
Включить нагрев при понижении температуры Нагреватель = Температура < ЦелеваяТемпература
Выключить нагрев, если открыто окно Установить Нагреватель = Выключено ПРИ Окно = Открыто
Запустить полив при низкой влажности Запустить Полив на 15 минут ПРИ Влажность < 30
Объявить день по времени День = Минуты_Дня() > Восход И Минуты_Дня() < Закат
Рассчитать среднюю температуру Установить Средняя = (Темп1 + Темп2) / 2

Доступные инструменты

🔸 Математические операторы

Оператор Назначение
+ Сложение
- Вычитание
* Умножение
/ Деление

🔸 Логические операторы

Оператор Значение
И Истинно, если все условия выполняются
ИЛИ Истинно, если хотя бы одно условие выполняется
НЕ Инвертирует логическое выражение

🔸 Операторы сравнения

Оператор Назначение
= Равно
Не равно
< Меньше
> Больше
<= Меньше или равно
>= Больше или равно

🔸 Математические функции

Функция Назначение
СТЕП(X,Y) Возведение X в степень Y
МИН(X,Y) Минимум из двух значений
МАКС(X,Y) Максимум из двух значений
КОР(X) Квадратный корень X
МОД(X) Абсолютное значение (модуль)
СИН(X) Синус X
КОС(X) Косинус X
ТАН(X) Тангенс X
ЭКС(X) Экспонента e^X
ЛОГ(X) Натуральный логарифм X

🔸 Функции даты и времени

Функция Возвращает
ДЕНЬ_ГОДА() Номер дня в году (1–366)
МЕСЯЦ() Номер месяца (1–12)
ДЕНЬ_МЕСЯЦА() День месяца (1–31)
ДЕНЬ_НЕДЕЛИ() День недели (1 — понедельник)
МИНУТЫ_ДНЯ() Минуты, прошедшие с полуночи

Особенности

  • Если в одном цикле несколько правил меняют одно и то же состояние — будет установлено последнее рассчитанное значение;

  • Рекомендуется использовать локальные состояния для промежуточных расчётов или сложных условий;

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