Skip to content

fredy314/WaterTank

Repository files navigation

ESP32 Tank Monitor - Система моніторингу водяного бака

📋 Опис проекту

Система автоматичного моніторингу рівня води в баку на базі ESP32-C3. Проект включає веб-інтерфейс, інтеграцію з HomeAssistant через MQTT та логування даних.

✨ Основний функціонал

🌊 Моніторинг бака

  • Вимірювання відстані до поверхні води ультразвуковим датчиком HC-SR04
  • Розрахунок об'єму води в циліндричному баку (літри)
  • Аналіз швидкості зміни рівня води (л/хв)
  • Прогнозування часу наповнення/спорожнення
  • Ковзне вікно для згладжування показань
  • Лінійна регресія для точного розрахунку швидкості

🌐 Веб-інтерфейс

  • Головна сторінка з поточними показниками (відстань, об'єм, швидкість)
  • Графіки історії рівня води (Highcharts)
  • Файловий менеджер для керування файлами на LittleFS
  • Завантаження логів у форматі CSV
  • Аутентифікація Digest Auth для захисту

🏠 HomeAssistant інтеграція (MQTT)

  • Автоматичне виявлення (MQTT Discovery)
  • Сенсори:
    • Відстань до води (см)
    • Об'єм води (л)
    • Швидкість зміни (л/хв)
    • Прогнозований час (хв)
  • Публікація станів кожні 5-10 секунд
  • Availability топік для статусу підключення

📊 Логування

  • Автоматичне логування об'єму кожні 10 хвилин
  • Синхронізація часу через NTP
  • Збереження на LittleFS у форматі CSV
  • Веб-перегляд з графіками

OTA оновлення

  • ElegantOTA для оновлення прошивки через веб-інтерфейс (/update)

🔧 Апаратна конфігурація

Компоненти

  • ESP32-C3 - основний контролер
  • HC-SR04 - ультразвуковий датчик відстані

Підключення

HC-SR04:
  TRIG -> GPIO 7
  ECHO -> GPIO 6

Особливості JSN-SR04T

  • Живлення: Датчик обов'язково потребує 5В. При живленні від 3.3В він працює нестабільно або видає Pulse Timeout.
  • Мертва зона: Становить близько 20-25 см. Якщо рівень води ближче, датчик може видавати невірні дані.
  • Дільник напруги: Оскільки Ехо-сигнал має амплітуду 5В, а ESP32-C3 працює з 3.3В, використання дільника (1к та 2к Ом) на піні Echo є обов'язковим для захисту контролера.
Тип: Циліндричний
Діаметр: 50 см
Дно (поріг): 115 см (відстань від датчика)
Верх (поріг): 45 см (відстань від датчика)

📡 Мережева конфігурація

WiFi

Налаштування WiFi зберігаються в secrets.h. Підтримується mDNS hostname: tank-monitor.local.

Веб-сервер (порт 80)

  • / - головна сторінка
  • /sensor_data - JSON з даними сенсорів
  • /logs - список логів
  • /api/status - повний статус системи
  • /files - файловий менеджер
  • /update - OTA оновлення

📦 Структура проекту

WaterTank/
├── WaterTank.ino             # Головний файл
├── Constants.h               # Константи та налаштування бака
├── Config.h/cpp              # Збереження конфігурації
├── SensorMonitor.h/cpp       # Робота з HC-SR04
├── TankMonitor.h/cpp         # Розрахунки об'єму та швидкості
├── PagesHandlers.h/cpp       # Обробники веб-сторінок
├── Log.h/cpp                 # Логування даних
├── MqttManager.h/cpp         # MQTT інтеграція
├── html_templates.h          # HTML шаблони
└── README.md                 # Цей файл

🚀 Встановлення

  1. Створіть secrets.h на основі secrets.h.example.
  2. Налаштуйте параметри бака в Constants.h.
  3. Виберіть плату ESP32C3 Dev Module в Arduino IDE.
  4. Прошийте пристрій.

� Версії

v3.0 (2026-02-19)

  • ✅ Видалено всю логіку керування реле та насосами.
  • ✅ Проект перетворено на чисту систему моніторингу.
  • ✅ Оновлено розрахунки для циліндричного бака (діаметр 50см).
  • ✅ Очищено веб-інтерфейс від зайвих елементів.

v2.1

  • ✅ Додано WiFiManager та ESPWebFileManager.

v1.0

  • ✅ Базовий моніторинг бака.

About

Система моніторингу водяного бак

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors