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

Плагины

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 Ультразвуковой дальномер

Triggers

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

Conditions

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

Actions

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

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

Каждая категория имеет файл 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, будем рады добавить в коробку.