node alive · uptime 37y 01m
· rec
[m.matveyev]
все процессы
$ ./web-calc --status
tty/03
proc · 2023 · public

web-calc

Платформа управления гидропоникой: два калькулятора питательных растворов (HPG/OHPG), IoT-интеграция ESP32-устройств через MQTT, телеметрия в TimescaleDB и уведомления в Telegram.

[private code · могу рассказать] demo external
stack · bill of materials 19 components

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 со своим учётом расходов и заправки.
end of process

Захотите такой же?
./contact