Об этом проекте

TaupunktLueftung — это система на базе ESP32 для интеллектуального управления вентиляцией на основе разницы точек росы. Она идеально подходит для целенаправленной сушки влажных помещений, таких как подвалы, прачечные или кладовые — эффективно и полностью автоматически. Система измеряет температуру и влажность внутри и снаружи (через датчики, такие как SHT31 или DHT22 — или через MQTT), рассчитывает точки росы и активирует вентиляцию только при наличии условий для сушки — то есть когда наружный воздух способен поглощать влагу, а не вносить её. В режиме контроля влажности она пытается поддерживать желаемый уровень влажности путём осушения или увлажнения. Вентиляция переключается через реле — оптимально в конфигурации с двумя вентиляторами: один втягивает сухой воздух, другой вытягивает влажный. Это создаёт эффективный воздушный поток для целенаправленного осушения. ## Возможности - Вентиляция с контролем по точке росы для целенаправленного осушения — алгоритм анализа точки росы управляет вентиляцией на основе разницы. - Учётные данные WiFi настраиваются через точку доступа (`TaupunktLueftung-Setup`) в браузере и сохраняются постоянно. Ручное редактирование в `secrets.h` не требуется. - Веб-интерфейс с отображением данных в реальном времени, графиками в реальном времени (почасовые, дневные и месячные виды) и областью конфигурации. - **Светлый/тёмный дизайн (Light/Dark/System)**, переключается через выпадающее меню — выбор сохраняется в браузере. - **Защита входом (HTTP Basic Auth)** для всего веб-интерфейса, имя пользователя и пароль можно изменить во время работы. - Опциональная защита от переохлаждения. - Опциональная защита от слишком низкой влажности. - Опциональный режим контроля влажности для поддержания желаемого уровня влажности. - **Безопасность при сбое датчика**: Если ошибка датчика сохраняется, вентиляция автоматически отключается как мера безопасности, а не работает бесконечно в последнем состоянии. - Регулируемые задержки для защиты вентилятора/реле в пограничных зонах. - Интерфейс MQTT (публикация и подписка) + автообнаружение Home Assistant. - Модульность: выбираемый источник датчика (аппаратный или данные MQTT), переключается непосредственно в области «Источник датчика». - Резервное копирование прошивки: текущую работающую прошивку можно сохранить как `.bin` перед обновлением. - Учётные данные WiFi можно сбросить через кнопку в веб-интерфейсе без потери других настроек. - Поддержка обновлений прошивки по воздуху (OTA). После первоначальной прошивки через USB из Arduino IDE, настраиваемые варианты прошивки можно обновлять через OTA из Arduino IDE или загружать из файла прошивки через веб-интерфейс. - Оптимизация производительности (с v4.2): CSS/JavaScript кэшируются браузером вместо повторной загрузки с ESP32 при каждом посещении страницы; исправление WiFi постоянно отключает режим модемного сна (предотвращает заметные задержки после повторных подключений WiFi); попытки повторного подключения MQTT ограничиваются, чтобы недоступный брокер не блокировал веб-интерфейс. ## Необходимые компоненты и настройка ### Аппаратные компоненты | Компонент | Описание | Примерная цена (EUR) | | --- | --- | --- | | **Плата ESP32 Dev** (например, DOIT) | Микроконтроллер с WiFi | 6–10 EUR | | **Датчик SHT31 (внутренний, опционально наружный)** | Температура и влажность, I2C, высокая точность | 5–8 EUR за штуку | | **Датчик DHT22 (наружный, альтернатива)** | Температура и влажность, цифровой однопроводной, дешевле | 3–5 EUR | | **Светодиоды (3x)** + резисторы (220–470 Ом) | Индикаторы состояния: зелёный, жёлтый, красный | 1–2 EUR | | **Модуль реле (1 канал)** | Для управления вентиляцией | 2–4 EUR | | **Перемычки / макетная плата** | Для настройки и тестирования | 2–5 EUR | | **Корпус (опционально)** | Защита для ESP32 и проводки | 3–8 EUR | **Общая стоимость:** примерно **20–30 EUR**, в зависимости от конфигурации и источника. ### Настройка и подключение **Распиновка ESP32:** | Пин ESP32 | Функция | Подключение к | | --- | --- | --- | | GPIO17 | Линия данных DHT22 | DHT22 (с подтяжкой 10 кОм) к GND — только для варианта DHT22 | | GPIO16 | Реле | Реле IN | | GPIO2 | Зелёный светодиод | Резистор + светодиод | | GPIO18 | Красный светодиод | Резистор + светодиод | | GPIO19 | Жёлтый светодиод | Резистор + светодиод | | GPIO21 | SDA (данные I2C) | SHT31 внутренний **и** SHT31 наружный (общая шина) | | GPIO22 | SCL (тактовый сигнал I2C) | SHT31 внутренний **и** SHT31 наружный (общая шина) | | 3.3V/GND | Питание | Все компоненты | ### Упрощённая ASCII-схема ``` +----------------------------+ | ESP32 Dev | | | | GPIO17 --> DHT22 data | (только вариант DHT22) | GPIO16 --> Relay IN | | GPIO2 --> Green LED | | GPIO18 --> Red LED | | GPIO19 --> Yellow LED | | GPIO21 --> SDA (SHT31) | | GPIO22 --> SCL (SHT31) | +-------------+--------------+ | 3.3V / GND ``` Светодиоды: Анод (длинный вывод) → резистор → GPIO / Катод (короткий вывод) → GND ### Выбор наружного датчика Этот проект поддерживает два типа датчиков для наружного датчика: - **SHT31 (рекомендуется)** — цифровой датчик I2C, значительно точнее и стабильнее, чем DHT22 (обычно ±2% отн. влажности против ±2–5% у DHT22), быстрее реагирует на изменения, даёт надёжные значения даже при низких температурах и использует I2C, который является более устойчивым, менее подверженным помехам протоколом передачи, чем фирменная однопроводная синхронизация DHT22. Для управления на основе малых разниц точек росы более высокая точность датчика напрямую влияет на качество решений о вентиляции. - **DHT22** — дешевле, менее точен, но проще в подключении (3 провода) без адресации I2C. **Особое примечание для двух датчиков SHT31:** Поскольку и внутренний, и опциональный наружный SHT31 используют I2C, оба датчика могут работать на **общей шине** (SDA = GPIO21, SCL = GPIO22) — дополнительные линии данных не нужны. Чтобы ESP32 мог различать два датчика, у SHT31 есть вывод `AD`/`ADR` для выбора адреса: | Датчик | Вывод ADDR/AD | Результирующий I2C-адрес | | --- | --- | --- | | SHT31 внутренний | открыт или к GND | `0x44` (по умолчанию) | | SHT31 наружный | подключён к **3.3V** | `0x45` | *(Некоторые модули SHT31 имеют дополнительный вывод `AL`/`ALR` — это выход сигнала тревоги/прерывания, не связан с выбором адреса; оставьте его неподключённым.)* **Установка типа наружного датчика:** В отличие от режима внутренний/наружный (аппаратный или MQTT), который можно задать в веб-интерфейсе, выбор между SHT31 и DHT22 для наружного датчика намеренно является **решением на этапе компиляции** непосредственно в исходном коде — таким образом, при компиляции включается только реально нужная библиотека датчика, экономя флеш-память и избегая ненужной I2C-коммуникации с возможно отсутствующим вторым датчиком. Чтобы изменить тип датчика: 1. Откройте `TaupunktLueftung.ino`. 2. Найдите строку `//#define SENSOR_TYP_AUSSEN_SHT31`. 3. Для **SHT31 наружный** (по умолчанию в репозитории): оставьте строку активной (не закомментированной). 4. Для **DHT22 наружный**: добавьте маркер комментария `//` в начало и убедитесь, что DHT22 подключён к пину 17. **Готовые варианты прошивки без самостоятельной компиляции:** Каждый [релиз](https://github.com/mallewski/TaupunktLueftung/releases) на GitHub автоматически содержит **два готовых `.bin`-файла** — `TaupunktLueftung_dht22.bin` и `TaupunktLueftung_sht31.bin`. Просто выберите файл, соответствующий вашему оборудованию, при OTA-обновлении в веб-интерфейсе — установка Arduino IDE не требуется. ### Примечания - **Модуль реле:** Можно использовать для переключения вентилятора на 230 В. **Внимание:** Сетевое напряжение должен подключать только квалифицированный персонал. - **MQTT:** Для получения данных внешних датчиков требуется MQTT-брокер (например, Mosquitto или Home Assistant). Поддерживается автообнаружение (совместимо с Home Assistant). - **Веб-интерфейс:** Все настройки, такие как MQTT, источники датчиков и пороговые значения, настраиваются непосредственно через браузерный интерфейс, защищённый входом (имя пользователя/пароль). - **Учётные данные по умолчанию после первой прошивки:** Имя пользователя `admin`, пароль из `secrets.h` (`CONFIG_PASSWORD`) для самостоятельно скомпилированной прошивки, или [...] Оба можно изменить позже в веб-интерфейсе в разделе Настройки → Доступ (Вход). ### Рекомендация по вентилятору 100–150 м³/ч для небольших подвальных помещений. Также можно использовать WiFi-умную розетку, интегрированную через систему умного дома (например, Home Assistant). ### Питание и развязка Разместите конденсаторы между 3.3V и GND как можно ближе к выводам питания, наиболее эффективно в виде комбинации двух конденсаторов параллельно: **электролитический конденсатор (470–1000 мкФ)** для коротких провалов напряжения, плюс **керамический конденсатор (100 нФ)** для коротких высокочастотных помех — электролит сам по себе не справляется с высокочастотными составляющими. ### Интеграция с Home Assistant (MQTT) Существующие датчики Home Assistant можно подавать как источник датчика через автоматизацию (см. [Руководство: датчики HA через MQTT](https://github.com/mallewski/TaupunktLueftung/blob/main/docs/Anleitung_HA_Sensoren_via_MQTT.md)). Если вам нравится этот проект или он полезен, вы можете угостить меня кофе.