Перейти к содержанию

Плагины

Plug-and-play архитектура для расширения платы — добавили новый датчик / новый тип триггера / новое действие, не трогая ядро прошивки.

Четыре категории:

Категория Папка в репе Что туда
Sensors src/sensors/<name>/ Поддержка железа: датчики, реле, кнопки, ADC-входы
Triggers src/triggers/<name>/ Типы триггеров (interval, cron, sun, device_state, ...)
Conditions src/conditions/<name>/ Типы условий (time_window, wifi_rssi, peer_online, ...)
Actions src/actions/<name>/ Типы действий (relay, udp_send, reboot, wait, ...)

Дальше

Что встроено

Sensors

Plugin Что
relay Цифровое реле / MOSFET / симистор
button Тактильная кнопка с debounce
digital_input Логический вход (геркон, концевик)
analog_input ADC с калибровкой
pulse_counter Счётчик импульсов (счётчик воды, электричества)
ds18b20 OneWire термометр
dht22_temp / dht22_hum DHT22 — температура / влажность
bme280_temp / bme280_hum / bme280_pres BME280 — температура / влажность / давление
hc_sr04 Ультразвуковой дальномер

† С v0.4.79 отключены в дефолтном sensors.enabled.json (heap optimization). Включить — добавить имя plugin'а в data/config/sensors.enabled.json и пересобрать.

Triggers

Plugin Что
interval Каждые N секунд
cron В заданное время (час+минута+дни недели)
sun Восход / закат по координатам
device_state Когда значение/состояние устройства пересекло порог
udp_event Когда сосед по mesh прислал событие
ping Когда хост стал доступен / недоступен
ir_rx Когда поймали ИК-команду совпадающую с code (см. IR-модуль)

Conditions

Plugin Что
device_state Текущее значение устройства
time_window Время суток (отключён в дефолте — дублирует built-in validity задачи)
wifi_rssi Уровень сигнала Wi-Fi
mesh_peer Есть ли в эфире сосед с UUID
task_state Состояние другой задачи
uptime Время с последнего ребута

Actions

Plugin Что
relay Управление реле (on / off / toggle)
udp_send Послать событие в mesh-группу
reboot Перезагрузка платы
wait Задержка перед следующим действием
reset_pulse Сбросить счётчик импульсов
ir_tx Отправить ИК-команду по коду (см. IR-модуль)

Модули

В отличие от плагинов, модули — это платформенные фичи, всегда single-instance per board. Они включаются/выключаются compile-time флагами в platformio.ini, не через enabled.json.

Module Build flag Default Что
mesh -D MESH_DISABLED=1 чтобы выключить on UDP-связь между платами, триггеры от соседей
sleep -D SLEEP_DISABLED=1 on Deep sleep для батарейных нод
backup -D BACKUP_DISABLED=1 on (off на ESP8266) Export/import конфига через REST
sun -D SUN_DISABLED=1 on Триггеры sunrise/sunset (NOAA)
IR -D IR_ENABLED=1 чтобы включить off Учить/слать ИК-коды (TX/RX). См. IR-модуль

UI на плате автоматически скрывает блоки/пункты меню отключённых модулей — capability discovery через /api/v1/system/info → features.

В Web-UI плата сама показывает текущий состав в Settings → Компоненты (/sensors.html) — там видно какие плагины и модули собраны в этой конкретной прошивке.

Включить / выключить

Каждая категория имеет файл data/config/<category>.enabled.json:

{
  "enabled": ["interval", "cron", "device_state"]
}

PIO-prebuild прочитает его до компиляции и исключит .cpp выключенных плагинов через build_src_filter. Linker DCE выбросит unused код. Получается экстремально маленький бинарник если включить только нужное (типовая экономия: −4 КБ RAM, −54 КБ Flash на ESP8266).

После правки *.enabled.json нужно перекомпилировать и залить — это compile-time, не runtime.

Минимум для нового устройства

Хотите подружить плату с новым датчиком, который мы не поддерживаем?

  1. Прочитайте Архитектуру, чтобы понять контракт.
  2. Пройдитесь по Свой плагин: пошагово с примером DS18B20.
  3. Если плагин общеполезный — отправьте PR в ctrl-board, будем рады добавить в коробку.