# 🌡️ 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)**
