Плагины¶
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, ...) |
Дальше¶
- Архитектура плагинов — как это устроено внутри: registry, dispatch, prebuild-скрипты, dead code elimination.
- Свой плагин: пошагово — гайд от папки до зелёной сборки.
Что встроено¶
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:
PIO-prebuild прочитает его до компиляции и исключит .cpp выключенных плагинов через build_src_filter. Linker DCE выбросит unused код. Получается экстремально маленький бинарник если включить только нужное (типовая экономия: −4 КБ RAM, −54 КБ Flash на ESP8266).
После правки *.enabled.json нужно перекомпилировать и залить — это compile-time, не runtime.
Минимум для нового устройства¶
Хотите подружить плату с новым датчиком, который мы не поддерживаем?
- Прочитайте Архитектуру, чтобы понять контракт.
- Пройдитесь по Свой плагин: пошагово с примером DS18B20.
- Если плагин общеполезный — отправьте PR в ctrl-board, будем рады добавить в коробку.