ESP32 per Handy steuern: BlueGrays IoT in 5 Schritten einrichten
ESP32 per Handy steuern: Relais und DHT22 mit BlueGrays IoT anschließen, Code von Ohmi, 5 Einrichtungsschritte, Diagramme und Lösungen für typische Fehler.
ESP32 per Handy steuern heißt: Du schaltest ein Relais, eine LED oder einen Motor am Board mit dem Smartphone in deiner Tasche ein und aus und siehst Sensorwerte direkt auf dem Display. Ein schönerer Einstieg ins IoT ist kaum denkbar. Der ESP32 bringt 2,4-GHz-WLAN und Bluetooth schon mit, ein Zusatzmodul brauchst du also nicht. Die eigentliche Frage ist, welchen Weg du wählst. Für die ESP32-Steuerung per App kannst du einen eigenen Webserver programmieren, dich per Bluetooth verbinden oder einen Telegram-Bot aufsetzen. Auch Cloud-Dashboards wie Blynk und die Arduino IoT Cloud kommen in Frage. Jede Methode unterscheidet sich bei Einrichtungsaufwand, Reichweite und Einschränkungen.
In dieser Anleitung richtest du Schritt für Schritt den kürzesten Weg ein: die Funktion BlueGrays IoT in der BlueGrays-App. Den Code schreibt Ohmi für dich. Du baust nur die Schaltung auf und lädst den Code mit der Arduino IDE auf den ESP32. Das Board verbindet sich verschlüsselt mit dem BlueGrays-Server, deshalb müssen Handy und Board nicht im selben Netzwerk sein. Die Lampe zu Hause schaltest du so auch vom Büro aus über mobile Daten. Zuerst baust du mit einem Relais einen Lampenschalter. Danach ergänzt du einen DHT22 und holst Temperatur und Luftfeuchtigkeit als Live-Werte und Diagramme aufs Handy. Am Ende findest du einen Vergleich mit den anderen Methoden und eine Tabelle mit Lösungen für die häufigsten Fehler.

5 Wege, einen ESP32 per Handy zu steuern
- Lokaler Webserver: Der ESP32 liefert eine Webseite aus, und du rufst im Handy-Browser die IP-Adresse des Boards auf. Ein Konto brauchst du nicht, normalerweise klappt der Zugriff aber nur aus demselben WLAN. Details findest du im Beitrag ESP32 Async Web Server.
- Bluetooth Classic und BLE: Kein Internet, kein Router nötig, das Handy verbindet sich direkt mit dem Board. In Innenräumen liegt die Reichweite meist bei etwa 10 Metern. Beide Varianten erklären wir in der Anleitung ESP32 Bluetooth.
- Telegram-Bot: Du schickst dem Board Befehle per Nachricht und bekommst Benachrichtigungen zurück. Das funktioniert auch von unterwegs, bietet aber kein Dashboard mit Diagrammen oder Schiebereglern. Zur Einrichtung siehe ESP32 Telegram Bot.
- Cloud-Dashboards (Blynk, Arduino IoT Cloud): In der Webkonsole legst du Vorlagen und Variablen an, schreibst den Code selbst und gestaltest das Dashboard auf dem Handy selbst. Das ist flexibel, du musst dich aber in mehrere Oberflächen und Konzepte einarbeiten. Für Blynk gibt es die Blynk-ESP32-Anleitung.
- BlueGrays IoT: Du wählst in der App eine von 8 fertigen Vorlagen. Ohmi erstellt den Code mit deinen Pin-Einstellungen und deinem Geräteschlüssel. Schalter, Schieberegler, Farbwähler und Diagramme erscheinen auf dem Handy automatisch passend zur Vorlage. Du musst weder ein Dashboard gestalten noch einen Server aufsetzen.
Was du brauchst: Bauteile und Software
| Bauteil | Wofür? | Hinweis |
|---|---|---|
| ESP32-Entwicklungsboard | Mikrocontroller mit WLAN | Unterstützt werden ESP32 Dev Module, WROOM, S3 und C3 |
| USB-Datenkabel | Code hochladen und Stromversorgung | Mit reinen Ladekabeln erscheint kein Port |
| 5-V-Relaismodul | Lampe schalten | Am besten ein Modul mit Optokoppler, das mit 3,3-V-Signal schaltet |
| LED + 220-Ω-Widerstand | Sicherer erster Test statt Relais | Im Code RELAY_ACTIVE_LOW = false setzen |
| DHT22 (optional) | Temperatur und Luftfeuchtigkeit messen | Für die Vorlage Raumstation |
| Breadboard und Jumperkabel | Verbindungen herstellen | Für Module sind Male-Female-Kabel praktisch |
| 2,4-GHz-WLAN | Internetzugang für das Board | Mit 5-GHz-Netzen verbindet sich das Board nicht |
| Arduino IDE | Code aufs Board laden | Espressif-Paket esp32 in Version 3.x nötig |
| BlueGrays-App | Einrichtung und Steuerung per Handy | iOS und Android; dein erstes Gerät ist kostenlos |
Wie funktioniert die ESP32-Steuerung per App?
Bei BlueGrays IoT verbinden sich Handy und ESP32 nicht direkt miteinander. Nach dem Einschalten verbindet sich das Board zuerst mit deinem 2,4-GHz-WLAN zu Hause. Dann baut es über Port 443 eine verschlüsselte WebSocket-Verbindung (TLS) zum BlueGrays-Server auf und hält sie dauerhaft offen. Die App auf dem Handy verbindet sich mit demselben Server. Tippst du auf den Lampenschalter, geht der Befehl vom Handy zum Server und vom Server zum Board. Weil die Verbindung schon steht, kommt er ohne Verzögerung an. Ein Temperaturwert vom Board nimmt denselben Weg in umgekehrter Richtung. Port 443 nutzen auch Websites. Deshalb brauchst du keine Portweiterleitung am Router, keinen eigenen Server und musst die IP-Adresse des Boards nicht kennen.
Was das Board beim Server ausweist, ist der Geräteschlüssel. Das ist ein geheimer Text, der mit bgd_ beginnt und von der App beim Anlegen des Geräts erzeugt wird. Das Board schickt den Schlüssel beim Verbindungsaufbau im Header mit. So leitet der Server Befehle vom Handy an das richtige Board weiter. Der Schlüssel wird nicht im seriellen Monitor ausgegeben. Bricht die Verbindung ab, versucht es die Bibliothek BlueGraysIoT selbst erneut, in wachsenden Abständen. Werte, die offline gemessen wurden, schickt sie nach dem Wiederverbinden, und nach einem Stromausfall stellt sie den letzten Zustand der Schalter wieder her. Es reicht, wenn Board und Handy Internet haben: Das Board hängt im WLAN zu Hause, das Handy kann in einer anderen Stadt im Mobilfunknetz sein.
Schaltung: Relaismodul an den ESP32 anschließen
Bei den Vorlagen Lampenschalter und Raumstation gelten diese Standard-Pins: Der IN-Pin des Relais kommt an GPIO26, der Datenpin des DHT22 an GPIO4. Im 3. Schritt der Einrichtung kannst du die Pins ändern. Die Pinbelegung deines Boards prüfst du mit dem Tool Pinout. Auf manchen Boards steht am 5-V-Pin VIN, auf anderen 5V.
| Bauteil | Bauteil-Pin | ESP32-Pin | Hinweis |
|---|---|---|---|
| Relaismodul | VCC | 5V (VIN) | Die Spule braucht 5 V; bei USB-Versorgung liegen an diesem Pin etwa 5 V an |
| Relaismodul | GND | GND | Gemeinsame Masse |
| Relaismodul | IN | GPIO26 | 3,3-V-Steuersignal |
| LED (zum Testen) | Langes Bein (+) | GPIO26 | Mit 220-Ω-Widerstand; kurzes Bein an GND, im Code RELAY_ACTIVE_LOW = false |
| DHT22 | VCC | 3V3 | Für die Raumstation |
| DHT22 | DATA | GPIO4 | Beim nackten Sensor ist ein 10-kΩ-Pull-up nötig; Module haben ihn schon auf der Platine |
| DHT22 | GND | GND | Gemeinsame Masse |
BlueGrays IoT einrichten: die 5 Schritte in der App
Öffne in der App Werkstatt › Meine Geräte › Neues Gerät hinzufügen. Oben auf dem Bildschirm siehst du einen Zähler wie „Schritt 1 / 5“. Die ersten drei Schritte erledigst du am Handy, den vierten am Computer, den fünften wieder am Handy.
- Board und Vorlage: Wähle bei „Welches Board hast du?“ den ESP32 und markiere bei „Was soll es tun?“ eine der 8 Vorlagen. Für den ersten Versuch eignen sich „Relais-Lampe“ oder die „Raumstation“ mit Sensor. Gib dem Gerät einen Namen, den du leicht wiedererkennst, etwa „Wohnzimmerlampe“.
- Bauteile und Schaltung: Die Liste „Bauteile vorbereiten“ zeigt, was die Vorlage braucht. Der Plan „Kabel anschließen“ zeigt, welcher Anschluss an welchen Pin kommt. Bei Relais-Vorlagen siehst du die Warnung „Wenn du mit 230 V arbeitest, mach das mit jemandem, der sich auskennt. Teste zuerst mit einer LED.“
- WLAN und Code: Gib Netzwerkname und Passwort deines WLANs ein. Der Name muss exakt stimmen und zum 2,4-GHz-Band gehören. Wenn du willst, ersetzt du unter „Anschluss-Pins“ GPIO26 und GPIO4 durch andere Pins. Tippe dann auf „Gerät erstellen und Code vorbereiten“. Ohmi erstellt den Code mit deinem Geräteschlüssel; mit „Code kopieren“ oder „Teilen“ bringst du ihn auf deinen Computer.
- In die Arduino IDE hochladen: Du lädst den Code auf den ESP32. Die Teilschritte aus der App erklären wir im nächsten Abschnitt einzeln.
- Verbindung: Der Bildschirm „Warte auf dein Board“ springt automatisch weiter, sobald sich das Board mit dem Server verbindet.
Schritt 4 und 5: Code hochladen und Verbindung prüfen
- Installiere die Arduino IDE, falls sie noch fehlt. Die Schritte findest du im Beitrag Arduino IDE installieren.
- Suche im Boardverwalter nach „esp32“ und installiere das esp32-Paket von Espressif. Du brauchst Version 3.x; ist noch die alte 2.x installiert, aktualisiere sie. Die Installation des Pakets steht auch im Beitrag Was ist der ESP32?.
- Schließ das Board mit einem USB-Datenkabel an. Wähle unter Werkzeuge › Board das ESP32 Dev Module (oder dein Board-Modell) und unter Werkzeuge › Port den neu aufgetauchten Port. Erscheint kein Port, tausche das Kabel. Installiere danach je nach USB-Chip deines Boards den Treiber für CP210x oder CH340.
- Suche im Bibliotheksverwalter nach BlueGraysIoT und klicke auf Installieren. Wenn nach Abhängigkeiten gefragt wird, wähle „Alle installieren“; so kommen auch WebSockets, ArduinoJson und DHT sensor library mit. Hängst du fest, hilft die Anleitung Arduino-Bibliothek hinzufügen.
- Öffne einen neuen Sketch, lösche den Inhalt, füge den aus der App kopierten Code ein und klicke auf Hochladen. Bleibt das Ausgabefenster unten bei „Connecting…“ stehen, halte die BOOT-Taste am Board gedrückt. Sobald die Prozentangaben beim Schreiben erscheinen, lässt du los.
- Öffne den seriellen Monitor und stelle die Baudrate auf 115200. Zuerst solltest du „Wi-Fi connected“ sehen, ein paar Sekunden später die Zeile „BlueGrays IoT: connected“.
Sobald im seriellen Monitor „connected“ erscheint, wechselt der Bildschirm „Warte auf dein Board“ auf dem Handy zu „Verbunden: Die Werte kommen jetzt live.“ Tippe nun auf den Lampenschalter: Du solltest das Klicken des Relais hören oder die LED leuchten sehen. Verbindet sich das Board nicht innerhalb von 2 Minuten, bittet dich die App, drei Dinge zu prüfen. Hast du das 2,4-GHz-Netz gewählt? Steht im seriellen Monitor „Wi-Fi connected“? Stimmt die Groß- und Kleinschreibung im Passwort? Kommt nicht einmal die erste Zeile, liegt das Problem beim WLAN. Dann hilft dir die Checkliste im Beitrag ESP32 verbindet sich nicht mit dem WLAN.
Erster Code: Lampe per Handy ein- und ausschalten
Der Code, den die App für die Vorlage „Relais-Lampe“ erstellt, sieht ungefähr so aus. Die drei obersten Zeilen sind bereits mit deinem Geräteschlüssel, deinem Netzwerknamen und deinem Passwort ausgefüllt; hier stehen Platzhalter. Der Rest ist kurz: eine Relaisfunktion, eine Schalterdefinition und ein einzeiliges loop().
1/*
2 * Salon lambası · BlueGrays IoT
3 * BlueGrays · bluegrays.com
4 * Bu kodu paylaşma: içinde cihaz anahtarın ve Wi-Fi şifren var.
5 * Do not share this code: it contains your device key and Wi-Fi password.
6 */
7
8#include <BlueGraysIoT.h>
9
10// Uygulama bu üç satırı senin bilgilerinle doldurur / The app fills these three lines with your details
11const char *DEVICE_KEY = "bgd_UYGULAMADAKI_ANAHTARIN";
12const char *WIFI_NAME = "EV_AGI_2_4_GHZ";
13const char *WIFI_PASSWORD = "WIFI_SIFREN";
14
15BlueGraysIoT bg(DEVICE_KEY);
16
17const int RELAY_PIN = 26;
18const bool RELAY_ACTIVE_LOW = true; // çoğu röle modülü LOW ile çeker / most relay modules switch on LOW
19void setRelay(bool on) { digitalWrite(RELAY_PIN, (on != RELAY_ACTIVE_LOW) ? HIGH : LOW); }
20
21void setup() {
22 Serial.begin(115200);
23 pinMode(RELAY_PIN, OUTPUT);
24 setRelay(false); // açılışta lamba kapalı / lamp off at power-up
25 bg.onSwitch("lamba", setRelay); // uygulamadaki "Lamba" anahtarı / the "Lamba" switch in the app
26 bg.setDebug(Serial); // durum mesajları Seri Port Ekranı'na / status messages to the Serial Monitor
27 bg.setLanguage(BG_LANG_TR);
28 bg.begin(WIFI_NAME, WIFI_PASSWORD);
29}
30
31void loop() {
32 bg.loop(); // burada uzun delay() kullanma / avoid long delay() calls here
33}
34| Zeile | Aufgabe |
|---|---|
| #include | Bindet die Bibliothek ein; WLAN, verschlüsselte Verbindung und Wiederverbinden übernimmt die Bibliothek |
| DEVICE_KEY, WIFI_NAME, WIFI_PASSWORD | Geräteschlüssel (beginnt mit bgd_), Name und Passwort des 2,4-GHz-Netzes; die App trägt sie ein |
| BlueGraysIoT bg(DEVICE_KEY) | Erzeugt mit dem Schlüssel das Objekt bg; alle weiteren Befehle laufen über dieses Objekt |
| RELAY_PIN = 26 | Pin, an dem der IN-Anschluss des Relais hängt; hast du im 3. Schritt den Pin geändert, steht hier eine andere Zahl |
| RELAY_ACTIVE_LOW = true | Die meisten Relaismodule schalten bei LOW; testest du mit einer LED, setze false, sonst arbeitet sie umgekehrt |
| setRelay(bool on) | Schreibt bei on = true den aktiven Pegel: LOW beim Active-Low-Modul, sonst HIGH |
| setRelay(false) (in setup) | Beim Einschalten des Boards startet die Lampe ausgeschaltet |
| bg.onSwitch("lamba", setRelay) | Ruft bei jeder Änderung des Lampenschalters in der App setRelay mit true oder false auf |
| bg.setDebug(Serial) | Gibt Statusmeldungen zur Verbindung im seriellen Monitor aus |
| bg.setLanguage(BG_LANG_TR) | Gibt die Statusmeldungen auf Türkisch aus |
| bg.begin(WIFI_NAME, WIFI_PASSWORD) | Startet die Verbindung mit dem WLAN und dem BlueGrays-Server |
| bg.loop() | Verarbeitet eingehende Befehle und hält die Verbindung am Leben; muss in loop() ständig aufgerufen werden |
Sensor ergänzen: Raumstation (Relais + DHT22)
Jetzt hängen wir einen DHT22 an dasselbe Board und schicken Daten ans Handy. Wählst du in der App die Vorlage „Raumstation“, bekommst du neben dem Lampenschalter auch Temperatur (°C) und Luftfeuchtigkeit (%) samt Diagrammen. Der DHT22 misst von -40 bis 80 °C mit etwa ±0,5 °C Genauigkeit. Die Luftfeuchtigkeit erfasst er im Bereich 0–100 %, und er lässt sich höchstens alle 2 Sekunden auslesen. Schließ den Datenpin an GPIO4, VCC an 3V3 und GND an GND an. Wie die DHT-Familie funktioniert, vergleichen wir im Beitrag DHT11 Temperatur- und Feuchtigkeitssensor.
1/*
2 * Oda istasyonu · BlueGrays IoT
3 * BlueGrays · bluegrays.com
4 * Bu kodu paylaşma: içinde cihaz anahtarın ve Wi-Fi şifren var.
5 * Do not share this code: it contains your device key and Wi-Fi password.
6 */
7
8#include <BlueGraysIoT.h>
9#include <DHT.h>
10
11const char *DEVICE_KEY = "bgd_UYGULAMADAKI_ANAHTARIN";
12const char *WIFI_NAME = "EV_AGI_2_4_GHZ";
13const char *WIFI_PASSWORD = "WIFI_SIFREN";
14
15BlueGraysIoT bg(DEVICE_KEY);
16
17const int RELAY_PIN = 26;
18const bool RELAY_ACTIVE_LOW = true; // çoğu röle modülü LOW ile çeker / most relay modules switch on LOW
19void setRelay(bool on) { digitalWrite(RELAY_PIN, (on != RELAY_ACTIVE_LOW) ? HIGH : LOW); }
20DHT dht(4, DHT22); // DHT22 veri ucu GPIO4 / DHT22 data on GPIO4
21unsigned long lastReadMs = 0;
22
23void setup() {
24 Serial.begin(115200);
25 pinMode(RELAY_PIN, OUTPUT);
26 setRelay(false);
27 bg.onSwitch("lamba", setRelay);
28 dht.begin();
29 bg.setDeadband("sicaklik", 0.1); // 0,1 °C değişmeden gönderme / send only after a 0.1 °C change
30 bg.setDeadband("nem", 1.0); // %1 değişmeden gönderme / send only after a 1 % change
31 bg.setDebug(Serial);
32 bg.setLanguage(BG_LANG_TR);
33 bg.begin(WIFI_NAME, WIFI_PASSWORD);
34}
35
36void loop() {
37 bg.loop(); // burada uzun delay() kullanma / avoid long delay() calls here
38 if (millis() - lastReadMs >= 2000) { // DHT22 en fazla 2 saniyede bir okunur / DHT22 reads at most every 2 s
39 lastReadMs = millis();
40 bg.send("sicaklik", dht.readTemperature());
41 bg.send("nem", dht.readHumidity());
42 }
43}
44Der Relais-Teil ist identisch mit dem ersten Code; neu sind drei Dinge. Erstens die Zeile bg.send("sicaklik", dht.readTemperature()): Sie schickt einen Wert vom Board an die App, der erste Parameter ist der Name der Variable in der App. Zweitens die Zeile bg.setDeadband("sicaklik", 0.1). Sie legt die kleinste Änderung fest: Die Temperatur wird erst nach 0,1 °C Änderung erneut gesendet, bei der Luftfeuchtigkeit liegt die Schwelle bei 1 %. Drittens die Prüfung millis() - lastReadMs >= 2000 in loop. Der Sensor wird alle 2 Sekunden gelesen, dazwischen läuft bg.loop() ohne Wartezeit weiter. Die Bibliothek sendet einen Wert nur, wenn er sich ändert, und überschreitet nie das Tempo deines Plans. Zwischen zwei Sendungen derselben Variable liegen im Gratis-Plan mindestens 1 Sekunde, bei Premium mindestens 0,2 Sekunden. Diese Grenzen prüft der Server; Zahlen im Code zu ändern hebelt sie nicht aus. Bleibt die Raumtemperatur minutenlang bei 23,4 °C, sendet das Board nichts Neues, bei 23,5 °C geht eine einzige Nachricht raus. Bei lockerem Kabel oder fehlendem Pull-up ist der Messwert ungültig (NaN). Kommen keine Werte an, prüfe zuerst die Verbindung an GPIO4 und die Stromversorgung.
Was siehst du auf dem Handy?
- Status: Oben auf dem Gerätebildschirm steht Online oder Offline, darunter „Letzte Daten vor …“. Hier erkennst du als Erstes, ob das Board wirklich verbunden ist.
- Steuerelemente: Bei der Lampen-Vorlage erscheint ein Ein/Aus-Schalter. Die Vorlage RGB-LED-Streifen bietet Farbwähler, Helligkeit von 0–100 % und Effektauswahl. Bei der Vorhang-Vorlage gibt es einen Schieberegler für den Winkel von 0–180°.
- Live-Werte und Diagramme: Es gibt die Zeiträume 1 Std., 24 Std., 7 Tage und 30 Tage. In der 7- und 30-Tage-Ansicht siehst du Stundenmittelwerte. Im Diagramm stehen Minimum, Maximum und letzter Wert. Solange das Board verbunden bleibt, kommt jede Minute ein neuer Punkt hinzu.
- Code und Schlüssel: Den kompletten Code, den Geräteschlüssel und die WLAN-Daten findest du auch später hier. Musst du das Board neu programmieren, kopiere den Code von hier.
- Schlüssel erneuern: Nutze das, wenn jemand deinen Schlüssel gesehen hat oder du das Board getauscht hast. Der alte Schlüssel ist sofort ungültig, du musst nur einmal den neuen Code aufs Board laden.
- Gerät entfernen: Gerät und Diagrammverlauf werden gelöscht, dein Geräteplatz wird wieder frei.
Gratis und Premium: Wie viel kannst du nutzen?
Dein erstes Gerät ist kostenlos. Für einen Lampenschalter oder eine Raumstation mit einem ESP32 brauchst du nichts weiter. Bei der Raumstation sind Temperatur und Luftfeuchtigkeit zwei getrennte Variablen. Im Gratis-Plan kommen beide Live-Werte aufs Handy, einen Diagrammverlauf gibt es aber nur für eine Variable. Die Unterschiede der Pläne stehen unten; Details im Beitrag Was schaltet BlueGrays Premium frei?.
| Funktion | Gratis | Premium |
|---|---|---|
| Anzahl Geräte | 1 | 10 |
| Variablen mit Diagrammverlauf | 1 | 20 |
| Verlaufsdauer | 24 Stunden | 30 Tage |
| Mindestabstand zwischen zwei Sendungen derselben Variable | 1 Sekunde | 0,2 Sekunden |
Vergleich mit anderen Methoden
| Methode | Zugriff von unterwegs | Dein Aufwand bei der Einrichtung | Dashboard und Diagramme | Wann sinnvoll? |
|---|---|---|---|---|
| Lokaler Webserver | Normalerweise nicht, nur im selben Netz | ESP32-Code und HTML-Seite schreiben | Gestaltest du selbst | Steuerung zu Hause ohne Internet |
| Bluetooth / BLE | Nein, ca. 10 m | Board-Code und eine App auf dem Handy | Abhängig von der verwendeten App | Orte ohne Router, Steuerung aus der Nähe |
| Telegram-Bot | Ja | Bot anlegen und Code schreiben | Nachrichten und Buttons, keine Diagramme | Benachrichtigungen und einfache Befehle |
| Blynk | Ja | Vorlage, Datastreams, Dashboard und Code | Fertige Widgets und Diagramme | Wer sein eigenes Dashboard gestalten will |
| Arduino IoT Cloud | Ja | Im Arduino-Konto Thing und Variablen anlegen, Code vervollständigen | Dashboard-Widgets | Wer im Arduino-Ökosystem bleibt |
| BlueGrays IoT | Ja | Schaltung aufbauen und Code hochladen | Fertige Steuerelemente und Diagramme je nach Vorlage | Schneller Einstieg und Nutzung beim Lernen |
Die richtige Wahl hängt von deinem Bedarf ab. Gibt es gar kein Internet, bleiben nur Bluetooth oder ein lokaler Webserver. BlueGrays IoT, Blynk und die Arduino IoT Cloud setzen voraus, dass Board und Handy online sind. Willst du die Oberfläche komplett selbst gestalten oder flexibel z. B. an Home Assistant anbinden, bieten ESP32 MQTT und Cloud-Dashboards mehr Möglichkeiten. BlueGrays IoT hat 8 fertige Vorlagen. Dafür kommen Schaltplan, Bauteilliste, Code und Handy-Oberfläche fertig und aufeinander abgestimmt. Beim Lernen sinkt so die Gefahr, irgendwo einen Fehler einzubauen.
Sicherheit: Schlüssel, WLAN-Passwort und Code
- Der Geräteschlüssel ist die Identität deines Boards. Wer den mit bgd_ beginnenden Schlüssel kennt, kann sich als dein Board ausgeben. Teile ihn deshalb nicht in Screenshots, Foren oder Chatgruppen.
- Das WLAN-Passwort bleibt auf dem Handy. Es wird nicht an den Server geschickt; der Netzwerkname wird dagegen mit dem Gerät gespeichert, damit der Code später wieder angezeigt werden kann. Im Code auf dem Board steht das Passwort aber im Klartext.
- Teile den Code nicht. Wie auch die App warnt, stehen im Code dein Geräteschlüssel und dein WLAN-Passwort. Willst du ihn in einem Forum zeigen, um Hilfe zu bekommen, lösche vorher die Zeilen DEVICE_KEY, WIFI_NAME und WIFI_PASSWORD.
- Die Verbindung ist verschlüsselt. Der Datenverkehr zwischen Board und Server läuft über Port 443 mit TLS, niemand im selben Netz kann die Befehle mitlesen.
- Im Zweifel den Schlüssel erneuern. Die Schaltfläche Schlüssel erneuern macht den alten Schlüssel sofort ungültig. Gibst du das Board weiter, erneuere ebenfalls den Schlüssel oder entferne das Gerät.
Häufige Fehler und Lösungen
| Symptom | Mögliche Ursache | Lösung |
|---|---|---|
| „Wi-Fi connected“ erscheint nie im seriellen Monitor | 5-GHz-Netz gewählt oder Fehler bei Groß-/Kleinschreibung im Passwort | Namen des 2,4-GHz-Netzes eingeben; tragen beide Bänder im Router denselben Namen, trennen; Passwort sorgfältig neu eingeben |
| Kein Port unter Werkzeuge › Port | Reines Ladekabel oder fehlender Treiber | Datenkabel verwenden; je nach Chip CP210x- oder CH340-Treiber installieren |
| Upload bleibt bei „Connecting…“ hängen | Board geht nicht in den Upload-Modus | BOOT-Taste gedrückt halten, beim Schreibstart loslassen; mehr im Beitrag Arduino-Code lässt sich nicht hochladen |
| Kompilieren bricht mit Fehlern zum ESP32-Core ab | Alte esp32-Paketversion 2.x installiert | Im Boardverwalter auf 3.x aktualisieren |
| „No such file or directory“ (BlueGraysIoT.h, DHT.h, WebSockets) | Bibliothek oder Abhängigkeiten nicht installiert | BlueGraysIoT neu installieren und „Alle installieren“ wählen; Fehlendes einzeln nach Namen suchen |
| Wirre Zeichen im seriellen Monitor | Baudrate nicht 115200 | Baudrate im seriellen Monitor auf 115200 stellen |
| „Wi-Fi connected“ ja, aber kein „BlueGrays IoT: connected“ | Netz ohne Internet, Firmennetz blockiert oder Code mit altem Schlüssel von vor der Erneuerung | Mit dem Handy-Hotspot testen; aktuellen Code aus dem Bildschirm Code und Schlüssel hochladen |
| Board startet neu, wenn das Relais klickt | Zu schwache Stromversorgung (Brownout) | Gutes Kabel und starkes Netzteil verwenden, Relais an 5V versorgen; siehe ESP32 Brownout |
| LED leuchtet, obwohl der Schalter aus ist | RELAY_ACTIVE_LOW wie fürs Relais auf true gelassen | Bei direkt angeschlossener LED RELAY_ACTIVE_LOW = false setzen |
| Analoger Sensor liefert bei aktivem WLAN immer denselben Wert | Sensor hängt an einem ADC2-Pin | Einen ADC1-Pin (GPIO32–39) verwenden; Details im Beitrag Was ist ein ADC? |
| Temperatur- und Feuchtewerte kommen nicht an | DHT22-Datenpin am falschen Pin oder Pull-up fehlt | DATA an GPIO4, VCC an 3V3; beim nackten Sensor 10-kΩ-Pull-up ergänzen |
IoT-Projektideen mit dem ESP32
- Lampenschalter: Die komplette Version der ersten Schaltung aus diesem Beitrag findest du im Projekt ESP32 IoT Lampenschalter (Relais). Es kommt mit Schaltplan und Bauteilliste.
- Raumstation: Relais und DHT22 kombiniert, mit Temperaturdiagramm: ESP32 IoT Raumstation (Relais + DHT22).
- Pflanzenbewässerung: Der Bodenfeuchtesensor kommt an GPIO34 (ein ADC1-Pin). Fällt die Feuchtigkeit unter den Schieberegler Bewässerungsschwelle auf dem Handy, schaltet die Pumpe ein; liegt sie 10 Punkte über der Schwelle, schaltet sie ab. Projektseite: ESP32 IoT Pflanzenbewässerung (Feuchtesensor + Pumpe). Zur Kalibrierung lies auch den Beitrag Bodenfeuchtesensor.
- RGB-LED-Streifen: Farbe, Helligkeit und Effekt (Statisch, Regenbogen, Atmen, Blinken) eines WS2812B-Streifens mit 30 LEDs an GPIO13 wählst du per Handy: ESP32 IoT RGB-LED-Streifen (WS2812B). 30 LEDs können bei vollem Weiß etwa 1,8 A ziehen; versorge den Streifen aus einer separaten 5-V-Quelle. Details im Beitrag WS2812B NeoPixel.
- Vorhangöffner: Den SG90-Servo an GPIO18 drehst du mit einem Schieberegler von 0–180°: ESP32 IoT Vorhangöffner (SG90 Servo). Versorge auch den Servo aus einer separaten 5-V-Quelle und verbinde die GNDs.
- Weitere Vorlagen: Die Projekte Türsensor, Bewegungszähler und Temperatur und Luftfeuchtigkeit sind mit dem Pico W erklärt. In der App kannst du diese Vorlagen aber auch für den ESP32 wählen.
Hast du den Weg zwischen Board, Server und Handy einmal eingerichtet, ist ein neues Gerät in wenigen Minuten hinzugefügt. Fang mit dem Lampenschalter an, sieh dann mit dem DHT22, wie die Daten aufs Handy fließen, und wag dich danach an größere Projekte wie Bewässerung oder Vorhang. In der BlueGrays-App findest du diese ESP32-IoT-Projekte Schritt für Schritt mit Schaltplan und Code. Nutze im Tab Entdecken den Filter für IoT-Projekte, oder verbinde dieselbe Schaltung über die Karte „Als IoT-Gerät einrichten“ auf der Projektseite direkt mit deinem Handy.
Häufige Fragen
Wie kann ich einen ESP32 per Handy steuern?
Einen ESP32 steuerst du per Handy über einen lokalen Webserver, Bluetooth, einen Telegram-Bot oder Cloud-Dashboards. Mit BlueGrays IoT öffnest du Werkstatt › Meine Geräte › Neues Gerät hinzufügen. Du wählst Board und Vorlage, gibst die WLAN-Daten ein und lädst den von Ohmi erstellten Code mit der Arduino IDE hoch. Sobald das Board verbunden ist, erscheinen Schalter und Werte auf dem Handy.
Kann ich einen ESP32 ohne Internet per Handy steuern?
Mit BlueGrays IoT nicht; Board und Handy müssen beide online sein, weil die Befehle über den Server laufen. Für die Steuerung ohne Internet kannst du Bluetooth (BLE) oder einen ESP32-Webserver im selben Netz verwenden.
Kann ich meinen ESP32 aus einer anderen Stadt steuern?
Ja. Board und Handy verbinden sich mit demselben Server, sie müssen also nicht im selben Netz sein. Das Board hängt im 2,4-GHz-WLAN zu Hause, das Handy kann im Mobilfunknetz sein. Portweiterleitung, feste IP oder ein eigener Server sind nicht nötig.
Kostet BlueGrays IoT etwas?
Dein erstes Gerät ist kostenlos. Der Gratis-Plan umfasst 1 Gerät, Diagrammverlauf für 1 Variable und 24 Stunden Verlauf. Premium schaltet 10 Geräte, Diagrammverlauf für 20 Variablen und bis zu 30 Tage Verlauf frei.
ESP32 per Bluetooth oder WLAN steuern – was ist besser?
Bluetooth braucht weder Internet noch Router, die Reichweite liegt in Innenräumen aber meist bei etwa 10 Metern. Über WLAN und Server steuerst du das Board von überall auf der Welt, zusätzlich werden Diagramme und Verlauf gespeichert. Bist du immer zu Hause und hast keinen Router, passt Bluetooth; willst du Fernzugriff, ist WLAN die bessere Wahl.
Wie viele Geräte kann ich mit BlueGrays IoT verbinden?
Im Gratis-Plan 1 Gerät, mit Premium 10 Geräte. Unterstützt werden ESP32 (Dev Module, WROOM, S3, C3) und Raspberry Pi Pico W. Entfernst du ein Gerät, wird dein Geräteplatz wieder frei.
Projekte, die du danach bauen kannst
Alle Projekte ansehen
ESP32 IoT-Lampenschalter (Relais)
Schalte deine Lampe per Handy ein und aus, egal wo du bist. Dieses Projekt ist die Schritt-für-Schritt-Anleitung zur IoT-Vorlage Relais-Lampe in der App, gebaut mit einem ESP32 und einem Relaismodul und zuerst mit einer LED getestet. Geh zu Werkstatt › Geräte › Gerät hinzufügen und wähle Relais-Lampe; Ohmi erstellt den Code mit deinem Geräteschlüssel. Der Code hier ist ein Beispiel: Schlüssel und WLAN-Daten sind Platzhalter.

ESP32 IoT-Raumstation (Relais + DHT22)
Schalte deine Lampe per Handy ein und sieh Temperatur und Luftfeuchtigkeit deines Zimmers live, egal wo du bist. Dieses Projekt ist die Schritt-für-Schritt-Anleitung zur IoT-Vorlage Raumstation in der App, gebaut mit einem ESP32, einem Relaismodul und einem DHT22. Geh zu Werkstatt › Geräte › Gerät hinzufügen und wähle Raumstation; Ohmi erstellt den Code mit deinem Geräteschlüssel. Der Code hier ist ein Beispiel: Schlüssel und WLAN-Daten sind Platzhalter.

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.

ESP32 IoT-RGB-LED-Streifen (WS2812B)
Steuere das Licht in deinem Zimmer per Handy: Farbe wählen, Helligkeit einstellen, Regenbogen- oder Atmen-Effekt einschalten. Dies ist die Anleitung zur IoT-Vorlage RGB-LED-Streifen in der App, gebaut mit einem ESP32 und einem WS2812B-Streifen mit 30 LEDs. Geh zu Werkstatt › Geräte › Gerät hinzufügen und wähle RGB-LED-Streifen; Ohmi erstellt den Code mit deinem Geräteschlüssel. Der Code hier ist ein Beispiel: Schlüssel und WLAN-Daten sind Platzhalter.

ESP32 IoT-Vorhangöffner (SG90-Servo)
Tipp auf dem Handy auf + oder −, und der Servo dreht sich im selben Moment auf diesen Winkel: Öffne und schließ einen Modellvorhang, den Wendestab einer Jalousie oder eine kleine Klappe von überall. Dieses Projekt ist die Schritt-für-Schritt-Anleitung zur IoT-Vorlage Servo-Vorhang in der App, gebaut mit einem ESP32 und einem SG90-Servo mit nur 3 Kabeln. Geh zu Werkstatt › Geräte › Gerät hinzufügen; Ohmi erstellt den Code mit deinem Geräteschlüssel. Der Code hier ist ein Beispiel.

Pico W IoT-Temperatur und Feuchte (DHT22)
Sieh Temperatur und Luftfeuchtigkeit deines Zimmers live auf dem Handy. Dieses Projekt ist die Schritt-für-Schritt-Anleitung zur IoT-Vorlage Temperatur und Luftfeuchte in der App, gebaut mit einem Raspberry Pi Pico W und einem DHT22. Geh zu Werkstatt › Geräte › Gerät hinzufügen, wähle Pico W als Board und Temperatur und Luftfeuchte als Vorlage; Ohmi erstellt den Code mit deinem Geräteschlüssel. Der Code hier ist ein Beispiel: Schlüssel und WLAN-Daten sind Platzhalter.

Pico W IoT-Türsensor (Reedkontakt)
Ist die Tür oder das Fenster offen geblieben? Schau auf dem Handy nach. Dieses Projekt ist die Anleitung zur IoT-Vorlage Tür / Fenster in der App, gebaut mit einem Raspberry Pi Pico W, einem Reedkontakt und einem kleinen Magneten. Geh zu Werkstatt › Geräte › Gerät hinzufügen, wähle Pico W als Board und Tür / Fenster als Vorlage; Ohmi erstellt den Code mit deinem Geräteschlüssel. Der Code hier ist ein Beispiel: Schlüssel und WLAN-Daten sind Platzhalter.

Pico W IoT-Bewegungszähler (PIR)
Zähl, wie oft jemand durch eine Tür oder einen Flur geht, und sieh den Moment der Bewegung live auf dem Handy. Dieses Projekt ist die Schritt-für-Schritt-Anleitung zur IoT-Vorlage Bewegungsmelder in der App, gebaut mit einem Raspberry Pi Pico W und einem PIR-Bewegungssensor mit nur 3 Kabeln. 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.
Weitere Artikel
BlueGrays-App
Diese Schaltung Schritt für Schritt auf dem Handy nachbauen
Schaltplan, Code und Teileliste auf einem Bildschirm. Über 200 Arduino-, ESP32- und Pico-Projekte zum Nachbauen.
Mit dem Handy scannen
Richte die Kamera auf den Code, dann öffnet sich der App-Store deines Handys.
oder im Store öffnen

