growbox — ESP-IDF firmware
Полнофункциональная прошивка для автоматизации гидропонных установок на ESP32 (WROVER с PSRAM). Переписана с Arduino-форка на нативный ESP-IDF v6.0+ с FreeRTOS, MQTT, Home Assistant и Telegram. Размер прошивки 1.57 MB (96% слота OTA), Web UI 588 KB в LittleFS.
Что умеет устройство
- Датчики (17 типов): температура воды/воздуха (DS18B20, BME280, NTC), влажность, давление, CO₂, pH/EC (через ADS1115), освещённость, уровень воды (VL53L0X лазер) и др. — через I2C/ADC/1-Wire.
- Миксер питательного раствора: 8 перистальтических помп с многофазным дозированием (TARE → LOAD → FAST → DROP → STABILIZE) по весу (HX711) с точностью ±0.01 г. Автокалибровка производительности, защита от сухого хода, паузы/пропуски помп, учёт остатков.
- Управление: 16 реле/клапанов через MCP23017, 2 PWM-канала (LEDC) для насосов/вентиляторов, таймеры автовыключения.
- Web UI: встроенный интерфейс (Vite + Vanilla JS, gzip в LittleFS) — графики в реальном времени, история до 30 дней (IndexedDB), полное управление через браузер без интернета.
- Интеграции: Home Assistant с MQTT auto-discovery, Telegram Bot (уведомления + удалённое управление), MQTT на ponics.online, SSE для real-time обновлений в UI.
- OTA-обновления прошивки по WiFi: через веб-интерфейс или с сервера с каналами alpha/beta/stable.
Стек
ESP-IDF v6.0 · FreeRTOS · ESP32 (WROVER + PSRAM) · MQTT · Home Assistant Discovery · HTTP + SSE · LittleFS · cJSON · LEDC (PWM) · I2C · 1-Wire · Vite · Vanilla JS · Chart.js · IndexedDB · Telegram Bot API
Особенности реализации
- Архитектура менеджеров: SensorManager (опрос датчиков каждые 5с) и ActuatorManager (миксер каждые 100мс) как singleton'ы с FreeRTOS-задачами.
- Unified Publishing API: все датчики публикуют через одну схему — автоматически в SSE + MQTT Home Assistant + MQTT ponics.
- 25+ собственных компонентов: WiFi, MQTT, HTTP, 17 типов сенсоров, актуаторы (миксер, PWM, реле), автоматизация, Telegram, OTA — всё как встроенные ESP-IDF компоненты, без Arduino/PlatformIO.
- NVS-конфигурация: все параметры (WiFi, MQTT, имена помп, пороги уведомлений) в энергонезависимой памяти, не теряются при перезагрузке.
- Thread-safe кэши, обработка ошибок, unit/E2E тесты.
- Документация:
ARCHITECTURE.md,MIXER_GUIDE.md,HA_MQTT_SETUP.md,API_ENDPOINTS.md,MQTT_PUBLICATION_MAP.md.
История
Изначально работал как Arduino-проект (старый форк). Переписан на нативный ESP-IDF — взрослая многозадачная платформа с полноценной поддержкой FreeRTOS, управлением памятью, OTA и профессиональными практиками разработки embedded-систем.