Skip to content

Задачи и сценарии

http://<ip-платы>/tasks.html — где описаны автоматизации.

Задача — это правило «если триггер сработал и условия выполнены — выполни действия».

Анатомия задачи

Часть Сколько Логика Описание
Триггеры 1–3 ИЛИ Один из них должен сработать чтобы задача начала проверяться
Условия 0–4 all / any (выбирается) Дополнительный фильтр перед действиями
Окно валидности 0–1 По времени суток и дням недели
Действия 1–4 последовательно Что выполнить

Триггеры

Тип триггера выбирается dropdown'ом — список приходит с /api/v1/triggers, то есть зависит от того, какие плагины включены через triggers.enabled.json.

interval

Срабатывает каждые interval_sec секунд. Простейший таймер.

Поле Назначение
interval_sec Период в секундах, 1..86400

Первое срабатывание — через interval_sec после загрузки платы (а не сразу).

cron

Поле Назначение
hour Час в диапазоне 0..23
minute Минута 0..59
days_mask Битмаска дней недели (bit 0 = вс, bit 6 = сб)

Нужна синхронизация времени

Cron работает только когда time.synced=true. Пока NTP не подключился, UI рисует warning. Если плата без интернета — установите время вручную в Настройках → Время или используйте триггеры interval и device_state.

sun (восход / закат)

Поле Назначение
event sunrise или sunset
offset_min Сдвиг в минутах: -30 = за полчаса до, +15 = через 15 минут после

Расчёт по NOAA-формуле, использует latitude и longitude из Настроек → Устройство. Без координат sun не сработает.

device_state

Поле Назначение
device_id ID устройства (из списка существующих)
compare above, below, equals
threshold Значение для сравнения (для above/below)
target_bool Для бинарных устройств (button, digital_input): true / false

Срабатывает при переходе через границу (edge-triggered), не на каждый цикл опроса. То есть «температура поднялась выше 25°C» сработает один раз, пока не упадёт обратно ниже и снова не превысит.

udp_event

Реакция на событие от mesh-соседа.

Поле Назначение
from_uuid UUID соседа (или * для любого)
event Имя события (строка, ≤16 символов)

Используется в паре с действием udp_send на соседе.

ping

Поле Назначение
host IP или hostname для проверки
port TCP-порт
interval_sec Период проверки
timeout_ms Таймаут одной попытки
expect up или down — что считается срабатыванием

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

Условия

Каждое условие — это проверка в момент срабатывания триггера. Не события — просто моментальные проверки.

Тип Что проверяет
device_state Текущее значение/состояние устройства
time_window Время суток (start_min..end_min)
wifi_rssi Сила сигнала Wi-Fi (полезно: «делай что-то только если связь хорошая»)
mesh_peer Есть ли в эфире сосед с заданным UUID
task_state Состояние другой задачи (последнее срабатывание, enabled/disabled)
uptime Время с загрузки платы — фильтр «не сразу после ребута»

Логика объединения: переключатель all / any в форме.

  • all — все условия должны быть выполнены (AND).
  • any — хотя бы одно (OR).

Окно валидности

Глобальный фильтр поверх триггеров + условий.

Поле Назначение
start_min Минут от начала суток (0..1439). 8*60=480 = 08:00
end_min То же, конец окна
days_mask Битмаска дней недели, как у cron

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

Действия

Выполняются последовательно в порядке, как они перечислены в форме.

relay

Поле Назначение
device_id ID реле
state on, off, toggle

udp_send

Поле Назначение
event Имя события (строка ≤16 символов)
payload Опциональная нагрузка (JSON-строка)

Шлёт событие в mesh-группу. Все соседи с подходящим udp_event-триггером сработают.

reboot

Перезагружает плату. Действий после него в цепочке не будет, очевидно.

wait

Поле Назначение
sec Задержка перед следующим действием, в секундах

Полезно для последовательностей «включи реле → подожди 5 сек → выключи».

reset_pulse

Поле Назначение
device_id ID pulse_counter устройства

Сбрасывает накопленный счёт обратно в 0.

Кнопка «▶ Запустить сейчас»

Каждая задача имеет кнопку ручного запуска — POST /api/v1/tasks/{id}/run. Уважает окно валидности и условия. Полезно для тестирования: «работает ли мой сценарий?» — нажал, посмотрел в RAM-логе.

Лимиты

Платформа TASKS_MAX
ESP8266 12
ESP32 32

Дальше