# 🌡️ ESP32 Feuchtesensor mit MQTT & Home Assistant Dieses Projekt liest mehrere analoge Feuchtesensoren über den **ESP32** aus und sendet die Messwerte per **MQTT** an **Home Assistant**. Ein definierter Schwellenwert löst zusätzlich einen **Feuchtealarm** aus. --- ## ⚙️ Hardware - ESP32 Dev-Board (z. B. UPesy Wroom) - bis zu **4 analoge Bodenfeuchtesensoren** - USB-Kabel für Programmierung - WLAN mit Zugang zu Home Assistant (im gleichen Netzwerk) --- ## 🧙‍♂️ Projektstruktur ``` ESP32-FEUCHTE/ ├── src/ │ └── main.cpp # Hauptprogramm mit Sensorlogik und MQTT ├── platformio.ini # Build- und Upload-Konfiguration ├── lib/ # (optional) weitere Libraries ├── test/ # Tests ├── README.md # Projektbeschreibung (diese Datei) └── docs/ # Entwickler- und Benutzerhandbuch ``` --- ## ⚖️ Einrichtung ### 1. PlatformIO öffnen Projekt im VS Code öffnen und sicherstellen, dass die Erweiterung **PlatformIO** installiert ist. ### 2. WLAN- und MQTT-Daten anpassen In `main.cpp` die folgenden Werte ändern: ```cpp const char* ssid = "DEIN_WLAN"; const char* password = "DEIN_PASSWORT"; const char* mqtt_server = "192.168.x.x"; // IP deines Home Assistant const char* mqtt_user = "mqttuser"; const char* mqtt_pass = "mqttpasswort"; ``` ### 3. ESP32 flashen USB-Port im `platformio.ini` prüfen: ```ini upload_port = COM4 monitor_speed = 115200 ``` Dann über **PlatformIO → Upload** das Programm kompilieren und flashen. --- ## 🌐 MQTT-Struktur Der ESP32 veröffentlicht folgende Topics: | Topic | Beschreibung | Beispiel | | ---------------------- | ------------------------------ | -------- | | `home/feuchte/sensor1` | Feuchtewert Sensor 1 (0–100 %) | `42.3` | | `home/feuchte/sensor2` | Feuchtewert Sensor 2 (0–100 %) | `85.7` | | `home/feuchte/sensor3` | Feuchtewert Sensor 3 (0–100 %) | `10.4` | | `home/feuchte/sensor4` | Feuchtewert Sensor 4 (0–100 %) | `70.1` | | `home/feuchte/alarm` | 1 = Feucht, 0 = Trocken | `1` | --- ## 🏠 Integration in Home Assistant 1. **MQTT-Integration aktivieren** → Einstellungen → Geräte & Dienste → Integration hinzufügen → MQTT → Broker konfigurieren oder den internen Broker von Home Assistant nutzen. 2. **Entitäten anlegen** (in `configuration.yaml` oder per GUI): ```yaml binary_sensor: - name: "Feuchte Alarm" state_topic: "home/feuchte/alarm" payload_on: "1" payload_off: "0" device_class: moisture sensor: - name: "Feuchte Sensor 1" state_topic: "home/feuchte/sensor1" unit_of_measurement: "%" - name: "Feuchte Sensor 2" state_topic: "home/feuchte/sensor2" unit_of_measurement: "%" - name: "Feuchte Sensor 3" state_topic: "home/feuchte/sensor3" unit_of_measurement: "%" - name: "Feuchte Sensor 4" state_topic: "home/feuchte/sensor4" unit_of_measurement: "%" ``` 3. **Neuladen:** → Entwicklerwerkzeuge → YAML → _Manuell konfigurierte MQTT-Entitäten neu laden_ 4. **Prüfen:** → Entwicklerwerkzeuge → Zustände → Suchbegriff „feuchte“ → Werte sollten live aktualisiert werden. --- ## 🔔 Optionale Automationen Beispiel: Benachrichtigung, wenn Feuchtealarm aktiv ist: ```yaml automation: - alias: "Feuchtealarm" trigger: - platform: state entity_id: binary_sensor.feuchte_alarm to: "on" action: - service: notify.mobile_app_iphone data: message: "🚨 Feuchte erkannt! Bitte prüfen!" ``` --- ## 🧠 Entwicklerhinweise - **Kalibrierung:** Werte in `main.cpp` anpassen: ```cpp float V_TROCKEN = 2.80f; // Spannung an Luft float V_NASS = 1.20f; // Spannung im Wasser float ALERT_THRESHOLD = 70.0f; // Alarm ab 70% ``` - **Sampling:** Jeder Sensor wird 16× gemessen und gemittelt (`SAMPLES = 16`). - **Logging:** Serielle Ausgabe mit `monitor_speed = 115200`. --- ## 📘 Lizenz MIT License Autor: Ismail Ali © 2025 --- ## 📂 Weitere Dokumentation Siehe `docs/`-Ordner für: - **Installationsanleitung Schritt-für-Schritt** - **Troubleshooting (WLAN, MQTT, HA)** - **Kalibrierung & Erweiterung (mehr Sensoren, Relais, Displays)**