web-calc
Интегрированная веб-платформа для управления гидропонными системами выращивания растений. В основе — два специализированных калькулятора питательных растворов (HPG и OHPG) для расчёта и балансировки макро- и микроэлементов. Платформа подключает физические устройства (гроубоксы, миксеры) через MQTT, агрегирует показания датчиков, хранит историю в TimescaleDB и уведомляет через Telegram-боты.
Калькуляторы
- OHPG (новый, Vanilla JS) — интерактивный расчёт макро/микро-элементов: целевые профили N-P-K-Ca-Mg-S + Fe/Mn/B/Zn/Cu/Mo, пересчёт по концентратам или готовым солям (CaNO₃, KNO₃, MgSO₄, KH₂PO₄ ...), переключение между EC и ppm, экспорт рецептов в браузер-приложение миксера.
- HPG (legacy) — старая схема расчётов с редиректами на OHPG.
- Mixer — программирование доз жидких концентратов для ESP32-миксеров.
IoT и телеметрия
Подключение ESP32-гроубоксов и миксеров через Mosquitto-брокер. Сбор 40+ типов метрик в реальном времени: t° корней/воздуха/раствора, EC, pH, уровень воды (см), вес (г), VPD, CO₂, TVOC, LUX, состояние помп.
Рефакторенный MQTT-стек (mqtt_refactored/): MessageProcessor, MetricBatcher (батч до 100 метрик / 25 сек), BoxCache (TTL 2 дня), ConditionChecker, TelegramNotifier.
Хранение и аналитика
- TimescaleDB — гипертаблица
wega_api_metricс автосозданием интервалов (1 день), индексы по(box, time, name, grafana_user), TTL 30 дней. - Redis — кеш + очереди Celery + in-memory логи WegaLog за 2 суток.
- Grafana — дашборды по каждому гроубоксу из отдельной PG-БД.
Социалка и UGC
Публичные журналы выращивания с лайками/комментариями, модерация UGC, системные пресеты питания со статистикой использования (PresetUsage, флаш каждую минуту через Celery Beat).
Интеграции
- 3 Telegram-бота:
web_mixer_bot(статусы миксера),calc_hpg_bot(passwordless вход),calc_ohpg_bot(Telegram Web App). - Syslog на 514/UDP — приём логов от ESP32.
- SMTP — email-рассылки.
- Sentry / GlitchTip — error tracking.
Стек
Python · Django · DRF · Wagtail · django-allauth (WebAuthn, MFA) · TimescaleDB · PostgreSQL · PgBouncer · Redis · Celery · paho-mqtt · Mosquitto · Grafana · Sentry · Vanilla JS · Bootstrap · HTMX · Traefik · Docker · python-telegram-bot · tinytuya · django-silk · numpy · matplotlib
Особенности
- Zero-downtime деплой — две реплики Django (webcalc-1/2) за Traefik с retry middleware.
- Отдельные
migrateиcollectstaticконтейнеры в compose. - Батчинг метрик в TimescaleDB вместо
INSERTна каждое сообщение. - Поддержка кристаллических и жидких солей с конвертацией ppm↔EC.
- Wagtail + wagtail-localize + deep-translator для i18n контента.
django-silkдля профилирования N+1 запросов.- Миксеры как
device_type="mixer"вGrowBoxсо своим учётом расходов и заправки.