168 lines
4.3 KiB
Plaintext
168 lines
4.3 KiB
Plaintext
# 🌡️ 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)**
|