Плата (ctrl-board)¶
Прошивка для ESP8266/ESP32 — то, что бежит на самой плате. Один кодовый набор, два таргета, web-интерфейс + REST API + локальное хранилище состояний.
Что внутри прошивки¶
| Подсистема | За что отвечает |
|---|---|
| wifi | Подключение к 5 сетям с приоритетом, AP-fallback, static-IP |
| device_config | UUID платы, имя, geo, broadcast_ip, static_ip |
| users / auth | Локальные пользователи, bearer-токены, role-based доступ |
| auth_settings | Глобальный toggle «требовать вход» |
| secrets | Авто-генерируемые token_secret и password_salt |
| time | NTP-синхронизация + ручная установка времени |
| devices | Реле и датчики (CRUD + runtime-state) |
| tasks | Триггеры, условия, действия, окна валидности |
| sensors / triggers / conditions / actions | Плагины 4 категорий — см. Плагины |
| mesh | UDP multicast/broadcast между платами с HMAC-подписью |
| cloud | HTTP-клиент к облаку, heartbeat, command-queue, OTA |
| fs_ota | Сохранение /config/*.json при обновлении файловой системы |
| sleep | Глубокий сон с 3-reset escape |
| sun | NOAA-расчёт восхода/заката по координатам |
| web | HTTP-сервер + REST API |
Интерфейс платы¶
После прошивки и Wi-Fi настройки UI доступен по локальному IP (http://<ip-платы>/).
-
Главная (Dashboard)
Карточки устройств, состояние реле и датчиков, RAM-лог. -
Устройства
CRUD реле/датчиков, поля по типу, OneWire-скан. -
Задачи и сценарии
Триггеры, условия, окно валидности, действия. -
Настройки
Wi-Fi, устройство, время, deep-sleep, авторизация, factory-reset. -
Пользователи
Локальные пользователи и роли. -
Сеть и mesh
Параметры UDP, network_secret, видимые соседи. -
Прошивка (OTA)
Заливка.binи.littlefs.binс сохранением onboarding'а. -
Облачное подключение
Подключить плату к проекту вcloud.kavlev.ru/.
Технологии¶
- PlatformIO + Arduino framework — единая среда сборки для двух таргетов.
- C++ 17, без RTOS, кооперативная single-threaded модель.
- LittleFS для персистентного хранилища (HTML/JS/CSS +
/config/*.json). - HTTP сервер — встроенный
ESP8266WebServer/WebServer(ESP32). - Web UI — vanilla HTML + Bootstrap 5.3.3 (локально, без CDN) + plain JS.
Никаких bundler'ов, фреймворков и npm — всё кладётся на плату как есть.