ESP32 IoT-Bewässerung (Bodensensor + Pumpe)
Die Pumpe springt an, wenn die Erde im Topf austrocknet, und du siehst die Bodenfeuchte live am Handy. Dieses Projekt ist die Schritt-für-Schritt-Anleitung zur IoT-Vorlage Bodenfeuchte + Pumpe in der App, gebaut mit einem ESP32, einem Bodenfeuchtesensor, einem Relais und einer Mini-Wasserpumpe. Geh zu Werkstatt › Geräte › Gerät hinzufügen; Ohmi erstellt den Code mit deinem Geräteschlüssel. Der Code hier ist ein Beispiel: Schlüssel und WLAN-Daten sind Platzhalter.

Steuere dieses Gerät mit der App
Verbinde deinen ESP32 oder Raspberry Pi Pico W mit dem WLAN, schalte ihn vom Handy aus ein und aus und sieh die Messwerte live. Den Code bereitet Ohmi vor; du gibst nur deine WLAN-Daten ein und lädst ihn hoch.
Vorlage in der App: Bodenfeuchte + Pumpe
- Wo finde ich das in der App?Füge im Tab Werkzeuge oder unter Werkstatt › Geräte ein neues Gerät hinzu und wähle diese Vorlage.
- Arduino-BibliothekÖffne in der Arduino IDE den Bibliotheksverwalter, suche nach BlueGraysIoT und installiere sie.
Im kostenlosen Plan: 1 Gerät, 1 Diagramm und 24 Stunden Verlauf. Mit Premium mehr Geräte, mehr Diagramme und längerer Verlauf.
Schaltplan

Quellcode
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// ESP32 IoT-Bewässerung (Bodensensor + Pumpe)
4// ─────────────────────────────────────────
5// Die IoT-Vorlage "Bodenfeuchte + Pumpe" aus der BlueGrays-App: Der
6// Bodenfeuchtesensor misst alle 2 Sekunden und schickt den Wert an die
7// App, das Relais startet die Pumpe, wenn die Feuchte unter die
8// Bewässerungsschwelle fällt, und stoppt sie 10 Punkte darüber; Pumpe und
9// Schwelle steuerst du auch per Handy. Den echten Code erstellt Ohmi in
10// der App mit deinem eigenen Geräteschlüssel (Werkstatt › Geräte › Gerät
11// hinzufügen); der Code hier ist ein Beispiel, Geräteschlüssel und
12// WLAN-Daten sind Platzhalter. Bibliotheksverwaltung: BlueGraysIoT (mit
13// Abhängigkeiten). Das Board verbindet sich nur mit 2,4-GHz-WLANs. Das
14// Relais schaltet bei LOW. Sicherheit: Versorge die Pumpe aus einem
15// eigenen Batteriehalter (4 x AA), nicht vom Board; halte Board, Relais
16// und Batterien in einer geschlossenen Box fern vom Wasser; lass die Pumpe
17// nie trocken laufen.
18//
19// Pins:
20// GPIO34 -> Bodenfeuchtesensor AO
21// 3V3, GND -> Bodenfeuchtesensor VCC, GND
22// GPIO26 -> Relaismodul IN
23// 5V, GND -> Relaismodul VCC, GND
24// Relais COM -> Batteriehalter (+), NO -> Pumpe (+), Pumpe (-) -> Batteriehalter (-); die
25// Pumpe läuft an eigenen 4 x AA
26// Pico W: Feuchtesensor AO GP26, Relais IN GP15
27
28/*
29 * Bodenfeuchte + Pumpe · BlueGrays IoT
30 * BlueGrays · bluegrays.com
31 * Teile diesen Code nicht: Er enthält deinen Geräteschlüssel und dein WLAN-Passwort.
32 */
33
34#include <BlueGraysIoT.h>
35
36const char *DEVICE_KEY = "DEIN_GERAETESCHLUESSEL";
37const char *WIFI_NAME = "DEIN_WLAN_NAME";
38const char *WIFI_PASSWORD = "DEIN_WLAN_PASSWORT";
39
40BlueGraysIoT bg(DEVICE_KEY);
41
42const int RELAY_PIN = 26;
43const bool RELAY_ACTIVE_LOW = true; // die meisten Relaismodule schalten bei LOW
44void setRelay(bool on) { digitalWrite(RELAY_PIN, (on != RELAY_ACTIVE_LOW) ? HIGH : LOW); }
45const int SOIL_PIN = 34;
46const int SOIL_DRY = 3200; // Messwert in trockener Erde
47const int SOIL_WET = 1300; // Messwert in nasser Erde
48int threshold = 30; bool pump = false; unsigned long lastReadMs = 0;
49
50void setup() {
51 Serial.begin(115200);
52 pinMode(RELAY_PIN, OUTPUT);
53 setRelay(false);
54 analogReadResolution(12);
55 bg.onSwitch("pompa", [](bool on) { pump = on; setRelay(on); });
56 bg.onNumber("esik", [](float v) { threshold = (int)v; });
57 bg.setDeadband("toprak", 1.0);
58 bg.setDebug(Serial);
59 bg.setLanguage(BG_LANG_EN);
60 bg.begin(WIFI_NAME, WIFI_PASSWORD);
61}
62
63void loop() {
64 bg.loop(); // hier keine langen delay()-Aufrufe
65 if (millis() - lastReadMs >= 2000) {
66 lastReadMs = millis();
67 int pct = constrain(map(analogRead(SOIL_PIN), SOIL_DRY, SOIL_WET, 0, 100), 0, 100);
68 bg.send("toprak", pct);
69 // Unter der Schwelle Pumpe an, 10 Punkte darüber wieder aus
70 if (pct < threshold && !pump) { pump = true; setRelay(true); bg.send("pompa", true); }
71 if (pct > threshold + 10 && pump) { pump = false; setRelay(false); bg.send("pompa", false); }
72 }
73}
74FAQ
Kann ich den Code von dieser Seite direkt hochladen?
Hochladen kannst du ihn, verbinden wird er sich aber nicht: Geräteschlüssel und WLAN-Daten darin sind Platzhalter. Geh in der App zu Werkstatt › Geräte › Gerät hinzufügen und wähle die Vorlage Bodenfeuchte + Pumpe; Ohmi erstellt den Code mit deinem Schlüssel, deinem Netzwerknamen und deinem Passwort. Kopier diesen Code und lade ihn hoch. Den ganzen Code siehst du später unter Gerät › Code und Schlüssel.
Geht das auch mit einem Pico W?
Ja. Wähle beim Hinzufügen des Geräts Pico W als Board; der Code bleibt gleich, nur die Pins und die Kalibrierwerte ändern sich: Der Feuchtesensor kommt an GP26 (ein Analogeingang), das Relais an GP15. Installiere in der Arduino IDE über den Boardverwalter das Paket "pico". Schaltung und Foto auf dieser Seite sind mit einem ESP32 entstanden.
Warum hat die Pumpe eigene Batterien?
Der Strom, den die Pumpe zieht, und die Störungen ihres Motors können das Board neu starten lassen. Deshalb läuft die Pumpe an einem Batteriehalter mit 4 x AA und geht nur über die Kontakte COM und NO des Relais; mit dem Board ist sie nicht verdrahtet. Halte Board, Relais und Batteriehalter in einer geschlossenen Box fern vom Wasser und lass die Kabelverbindungen trocken. Die Pumpe darf nur unter Wasser laufen; trocken wird sie in wenigen Minuten heiß und geht kaputt. Nimm die Batterien heraus, wenn du den Schlauch ansteckst oder die Pumpe aus dem Wasser holst.
Wann läuft die Pumpe, und was passiert, wenn ich sie von Hand schalte?
Das Board misst die Feuchte alle 2 Sekunden. Fällt sie unter die Bewässerungsschwelle in der App (anfangs 30 %), geht die Pumpe an, 10 Punkte über der Schwelle wieder aus; der Abstand verhindert, dass sie ständig an und aus springt. Du kannst den Schalter Pumpe auch von Hand antippen, aber die Automatik hat Vorrang: Schaltest du sie aus, während die Erde unter der Schwelle liegt, geht sie innerhalb von 2 Sekunden wieder an, und schaltest du sie 10 Punkte über der Schwelle ein, geht sie sofort aus. Stell die Schwelle passend zu deinem Topf ein.
