ESP32 Pflanzensensor — Baudokumentation
Projekt: DIY Umweltsensor mit ESPHome
Hardware: ESP32 + SHT75 + Capacitive Soil Moisture Sensor v1.2
Version: 1.0 · April 2026
Inhaltsverzeichnis
- Projektübersicht
- Benötigte Komponenten
- Schaltplan & Pinbelegung
- ADC & WLAN — Der wichtigste Hinweis
- ESPHome Installation & Setup
- Kalibrierung Bodenfeuchte
- Home Assistant Integration
- Fehlerbehebung
- Dateien & Download
1. Projektübersicht
Dieser Sensor kombiniert drei Messgrößen in einem kompakten ESP32-Gerät:
| Sensor | Messgröße | Interface |
|---|---|---|
| SHT75 | Lufttemperatur (°C) | Bit-Bang 2-Wire |
| SHT75 | Relative Luftfeuchte (%) | Bit-Bang 2-Wire |
| Soil Moisture v1.2 | Bodenfeuchte (%) | ADC1 (GPIO32) |
Das Gerät integriert sich nahtlos in Home Assistant über die native ESPHome API und bietet zusätzlich einen eingebauten Webserver für den direkten Zugriff im Browser.
2. Benötigte Komponenten
| Bauteil | Anzahl | Hinweis |
|---|---|---|
| ESP32 Development Board | 1 | z.B. LOLIN32, Wemos D1 Mini32, ESP32 DevKit |
| Sensirion SHT75 | 1 | Proprietäres 2-Wire-Interface |
| Capacitive Soil Moisture Sensor v1.2 | 1 | Kapazitiv (nicht resistiv!) |
| Jumperkabel | ~8 | Male-Female |
| Micro-USB Kabel | 1 | Für Erstflash und Stromversorgung |
| Breadboard | 1 | Optional für Prototyp |
Warum ESP32 statt ESP8266? Der ESP8266 hat nur einen ADC-Pin mit max. 1,0 V — ein Spannungsteiler ist nötig. Der ESP32 bietet 18 ADC-Kanäle mit 0–3,3 V und 12-bit Auflösung. Für WLAN-Betrieb müssen ADC1-Pins (GPIO32–39) verwendet werden.
3. Schaltplan & Pinbelegung
3.1 SHT75 Anschluss

3.2 Soil Moisture Sensor Anschluss

3.3 Pinbelegung Gesamtübersicht

4. ADC & WLAN — Der wichtigste Hinweis

Regel: Bei aktivem WLAN auf dem ESP32 dürfen nur ADC1-Pins verwendet werden:
- ✅ ADC1 (WLAN-sicher): GPIO32, GPIO33, GPIO34, GPIO35, GPIO36, GPIO39
- ❌ ADC2 (nicht nutzbar mit WLAN): GPIO0, 2, 4, 12, 13, 14, 15, 25, 26, 27
5. ESPHome Installation & Setup
5.1 ESPHome installieren
# Via pip
pip install esphome
# Oder via Home Assistant Add-on:
# Einstellungen → Add-ons → Add-on Store → ESPHome → Installieren
5.2 Projektstruktur
esphome/
├── pflanzensensor-esp32.yaml ← Hauptkonfiguration
├── sht75.h ← Custom Component
└── secrets.yaml ← Zugangsdaten (NICHT in Git!)
5.3 API-Key generieren
openssl rand -base64 32
Den ausgegebenen Wert in secrets.yaml bei ha_api_key: eintragen.
5.4 Erstflash (USB)
# Gerät mit USB verbinden, dann:
esphome run pflanzensensor-esp32.yaml
Beim ersten Flash muss das Board per USB angeschlossen sein. Alle weiteren Updates können Over-the-Air (OTA) erfolgen.
5.5 OTA-Update (nach Erstflash)
esphome run pflanzensensor-esp32.yaml
# ESPHome erkennt das Gerät automatisch im Netzwerk
6. Kalibrierung Bodenfeuchte

Schritt 1 — Trockenwert ermitteln:
internal: falsebeim Rohwert-Sensor lassen- Sensor in die Luft halten (oder trockene Erde)
- In den ESPHome-Logs den Wert ablesen, z.B.
2.78 V - Diesen Wert als
0.0-Wert incalibrate_lineareintragen
Schritt 2 — Nasswert ermitteln:
- Sensor vollständig in Wasser tauchen (nur Elektroden, nicht die Elektronik!)
- Wert ablesen, z.B.
1.19 V - Als
100.0-Wert eintragen
Ergebnis in der YAML:
filters:
- calibrate_linear:
- 2.78 -> 0.0 # gemessener Trockenwert (Luft)
- 1.19 -> 100.0 # gemessener Nasswert (Wasser)
- clamp:
min_value: 0.0
max_value: 100.0
Schritt 3: Nach Kalibrierung internal: true beim Rohwert-Sensor setzen und neu flashen.
7. Home Assistant Integration
Lovelace YAML für Entities-Karte
type: entities
title: 🌱 Pflanzensensor
entities:
- entity: sensor.lufttemperatur
name: Lufttemperatur
icon: mdi:thermometer
- entity: sensor.luftfeuchte
name: Luftfeuchte
icon: mdi:water-percent
- entity: sensor.bodenfeuchte
name: Bodenfeuchte
icon: mdi:sprout
- entity: sensor.wlan_signalstarke
name: WLAN Signal
- entity: sensor.ip_adresse
name: IP-Adresse
- entity: sensor.uptime
name: Uptime
Gauge-Karte für Bodenfeuchte
type: gauge
entity: sensor.bodenfeuchte
name: Bodenfeuchte
min: 0
max: 100
severity:
green: 40
yellow: 20
red: 0
Webserver-Direktzugriff
Ist der Webserver in der YAML aktiviert (web_server: port: 80), erreichst du das Gerät direkt im Browser unter http://<IP-Adresse> — ohne Home Assistant.
8. Fehlerbehebung
SHT75 antwortet nicht
[W][sht75:...] Kein ACK auf Befehl 0x03
| Problem | Lösung |
|---|---|
| DATA/SCK vertauscht | Pinbelegung in sht75.h prüfen |
| Kabel zu lang | Unter 30 cm halten |
| Falsches Board | board: in YAML anpassen |
Bodenfeuchte zeigt falsche Werte
Kalibrierung wiederholen (Abschnitt 6). internal: false temporär setzen und Rohwerte in den Logs ablesen.
ADC liefert immer 0 oder 4095
Ursache: ADC2-Pin gewählt (nicht WLAN-kompatibel)
Lösung: Wechsel auf GPIO32, 33, 34, 35, 36 oder 39
WLAN Verbindungsprobleme
Fallback-Hotspot aktiv → http://192.168.4.1 im Browser aufrufen. SSID/Passwort in secrets.yaml prüfen.
9. Dateien & Download
| Datei | Beschreibung |
|---|---|
pflanzensensor-esp32.yaml | ESPHome Hauptkonfiguration |
sht75.h | Custom Component für SHT75 |
secrets.yaml | Zugangsdaten-Vorlage |
diagram_sht75_wiring.png | Verdrahtung SHT75 |
diagram_soil_wiring.png | Verdrahtung Soil Sensor |
diagram_adc_compare.png | ADC Vergleich |
diagram_calibration_steps.png | Kalibrierungsschritte |
diagram_pinout_overview.png | Pinbelegung Übersicht |
# Erstflash via USB:
esphome run pflanzensensor-esp32.yaml
# Folgeflash via OTA (WLAN):
esphome run pflanzensensor-esp32.yaml
Dokumentation erstellt für meshdresden.eu · DC3PF · April 2026