ESP32 Pflanzensensor — Baudokumentation

Projekt: DIY Umweltsensor mit ESPHome
Hardware: ESP32 + SHT75 + Capacitive Soil Moisture Sensor v1.2
Version: 1.0 · April 2026


Inhaltsverzeichnis

  1. Projektübersicht
  2. Benötigte Komponenten
  3. Schaltplan & Pinbelegung
  4. ADC & WLAN — Der wichtigste Hinweis
  5. ESPHome Installation & Setup
  6. Kalibrierung Bodenfeuchte
  7. Home Assistant Integration
  8. Fehlerbehebung
  9. Dateien & Download

1. Projektübersicht

Dieser Sensor kombiniert drei Messgrößen in einem kompakten ESP32-Gerät:

SensorMessgrößeInterface
SHT75Lufttemperatur (°C)Bit-Bang 2-Wire
SHT75Relative Luftfeuchte (%)Bit-Bang 2-Wire
Soil Moisture v1.2Bodenfeuchte (%)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

BauteilAnzahlHinweis
ESP32 Development Board1z.B. LOLIN32, Wemos D1 Mini32, ESP32 DevKit
Sensirion SHT751Proprietäres 2-Wire-Interface
Capacitive Soil Moisture Sensor v1.21Kapazitiv (nicht resistiv!)
Jumperkabel~8Male-Female
Micro-USB Kabel1Für Erstflash und Stromversorgung
Breadboard1Optional 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:

  1. internal: false beim Rohwert-Sensor lassen
  2. Sensor in die Luft halten (oder trockene Erde)
  3. In den ESPHome-Logs den Wert ablesen, z.B. 2.78 V
  4. Diesen Wert als 0.0-Wert in calibrate_linear eintragen

Schritt 2 — Nasswert ermitteln:

  1. Sensor vollständig in Wasser tauchen (nur Elektroden, nicht die Elektronik!)
  2. Wert ablesen, z.B. 1.19 V
  3. 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
ProblemLösung
DATA/SCK vertauschtPinbelegung in sht75.h prüfen
Kabel zu langUnter 30 cm halten
Falsches Boardboard: 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

DateiBeschreibung
pflanzensensor-esp32.yamlESPHome Hauptkonfiguration
sht75.hCustom Component für SHT75
secrets.yamlZugangsdaten-Vorlage
diagram_sht75_wiring.pngVerdrahtung SHT75
diagram_soil_wiring.pngVerdrahtung Soil Sensor
diagram_adc_compare.pngADC Vergleich
diagram_calibration_steps.pngKalibrierungsschritte
diagram_pinout_overview.pngPinbelegung Ü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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert