ESP32 Blynk Anleitung: LED, Relais und Sensor per Handy steuern
ESP32 mit Blynk IoT: Vorlage und Datastreams (V0, V1), Auth Token, LED und Relais per Handy schalten, Sensordiagramm, Benachrichtigungen und Gratis-Limits.
ESP32 und Blynk sind der schnellste Weg, einen ESP32 von überall auf der Welt zu steuern, ohne eine eigene Handy-App zu programmieren. Blynk IoT bietet dir einen Cloud-Server, mit dem sich der ESP32 verbindet (Blynk.Cloud), eine Handy-App, in der du per Drag and Drop ein Dashboard baust, und ein Web-Dashboard. Tippst du auf dem Handy auf einen Schalter, geht der Befehl zuerst in die Cloud und von dort zum ESP32; die Temperatur, die der ESP32 misst, kommt auf demselben Weg als Zahl und Diagramm auf dein Handy. Handy und Board müssen dafür nicht im selben Haus sein: Es funktioniert sogar, wenn dein Handy im Mobilfunknetz ist.
In dieser Anleitung baust du von Grund auf ein funktionierendes Projekt: Du legst ein Blynk.Cloud-Konto an, definierst eine Vorlage (Template) und Datastreams (V0, V1, V2, V3), holst dir den Auth Token des Geräts, installierst die Bibliothek, schaltest eine LED und ein Relais per Handy, zeigst die Daten eines DHT11 als Diagramm an und bekommst eine Benachrichtigung aufs Handy, wenn die Temperatur steigt. Außerdem lernst du, warum du kein delay() verwenden solltest und was BlynkTimer stattdessen macht, wie du das Nachrichtenlimit des Gratis-Tarifs berechnest, warum Code aus dem alten Blynk nicht mehr kompiliert und wie du die häufigsten Verbindungsfehler behebst.

Was ist Blynk IoT und wie funktioniert es?
Bei Blynk verbinden sich ESP32 und Handy nie direkt miteinander; beide verbinden sich mit Blynk.Cloud, und der Server überträgt die Nachrichten. Beim Start meldet sich der ESP32 zuerst im WLAN an, verbindet sich dann mit dem Blynk-Server und weist sich mit seinem Auth Token aus. Die Daten fließen über virtuelle Pins (Virtual Pins, V0–V255): Ein virtueller Pin ist kein echter Anschluss des ESP32, sondern ein nummerierter Datenkanal zwischen deinem Code und der App. Der Schalter in der App schreibt eine 1 auf V1, die Funktion BLYNK_WRITE(V1) in deinem Code fängt sie ab und zieht das Relais an; führt dein Code Blynk.virtualWrite(V2, 24.5) aus, aktualisiert sich die Anzeige auf dem Handy. Das sind die Grundbegriffe:
| Begriff | Wofür? | Beispiel in dieser Anleitung |
|---|---|---|
| Vorlage (Template) | Gemeinsames Rezept für gleichartige Geräte: Datastreams, Dashboards und Events | ESP32 Zuhause |
| Datastream | Datenkanal an einem virtuellen Pin mit festem Typ und Wertebereich | V2: Temperatur, Double, 0–50 °C |
| Gerät (Device) | Ein echtes Board, das aus der Vorlage erstellt wird; jedes hat eigene Daten | Der ESP32 im Wohnzimmer |
| Auth Token | Geheimer Identitätsschlüssel des Geräts; damit verbindet sich der Code mit der Cloud | Die Zeile BLYNK_AUTH_TOKEN |
| Widget | Elemente im Dashboard wie Schalter, Anzeigen und Diagramme | Button, Gauge, SuperChart |
| Event | Eine Meldung, die Benachrichtigungen auslöst und in der Timeline gespeichert wird | yuksek_sicaklik |
Unterschiede zwischen dem alten Blynk und dem neuen Blynk IoT
Die meisten Blynk-Videos und -Sketches im Netz wurden für die alte Version (Blynk Legacy) gemacht, die nicht mehr funktioniert. Die neue Plattform startete im Mai 2021; die alte App verschwand im Juni 2022 aus den Stores, und die alten Cloud-Server wurden am 31. Dezember 2022 endgültig abgeschaltet. Ein Token aus einem alten Projekt, gekaufte Energy-Punkte oder die Adresse blynk-cloud.com sind heute also nutzlos; du musst das Projekt auf der neuen Plattform neu anlegen. Die gute Nachricht: Der Großteil des ESP32-Codes (BLYNK_WRITE, virtualWrite, BlynkTimer) ist gleich geblieben.
| Merkmal | Altes Blynk (Legacy) | Blynk IoT (neu) |
|---|---|---|
| Wo wird das Projekt eingerichtet? | Alles in einem Projekt in der Handy-App | Vorlagen und Datastreams in Blynk.Console (Web), Dashboards auf Handy und im Web |
| Auth Token | Einer pro Projekt, kam per E-Mail | Einer pro Gerät, steht auf der Geräteseite |
| Preismodell | Widgets wurden mit Energy-Punkten gekauft | Monatliche Tarife mit Limits für Geräte, Nachrichten und Funktionen |
| Anfang des Sketches | Nur eine Zeile char auth[] | BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME und BLYNK_AUTH_TOKEN sind Pflicht |
| Benachrichtigung | Blynk.notify() und Blynk.email() | Event in der Vorlage anlegen und mit Blynk.logEvent() auslösen |
| Server | blynk-cloud.com, Port 80 oder 8080 (abgeschaltet) | blynk.cloud, Port 80 oder 443 mit SSL |
| Web-Dashboard | Keins | Ja (Blynk.Console) |
| Lokaler Server | Ein Open-Source-Java-Server ließ sich selbst betreiben | Kein privater lokaler Server; der alte Server wird nicht mehr aktualisiert |
Bauteile und Verkabelung
Für dieses Projekt brauchst du ein ESP32-Entwicklungsboard, ein 5-V-Relaismodul, einen DHT11-Temperatur- und Feuchtigkeitssensor, optional eine LED mit 220-Ω-Widerstand, ein Breadboard und Jumperkabel. Als LED reicht die eingebaute blaue LED an GPIO 2; für eine externe LED findest du den passenden Widerstand mit dem LED-Vorwiderstandsrechner. Prüfe außerdem die Pinbelegung deines Boards im Tool Pinout; auf manchen Boards heißt der 5-V-Pin VIN, auf anderen 5V.






| Bauteil | Pin am Bauteil | ESP32-Pin | Hinweis |
|---|---|---|---|
| LED (optional) | Langes Bein (+) | GPIO 2 | Über 220-Ω-Widerstand; kurzes Bein an GND |
| Relaismodul | VCC | VIN / 5V | Bei USB-Versorgung liegen hier etwa 5 V an |
| Relaismodul | GND | GND | Gemeinsame Masse |
| Relaismodul | IN | GPIO 26 | Bei Active-LOW-Modulen im Code ROLE_AKTIF_LOW = true |
| DHT11 | VCC | 3V3 | Arbeitet mit 3,3–5,5 V |
| DHT11 | DATA | GPIO 4 | Ein nackter Sensor braucht einen 10-kΩ-Pull-up; Module haben ihn schon auf der Platine |
| DHT11 | GND | GND | Gemeinsame Masse |
Schritt 1: Blynk.Cloud-Konto und Vorlage anlegen
- Öffne am Computer blynk.cloud, registriere dich kostenlos mit deiner E-Mail-Adresse und lege dein Passwort über den Link in der E-Mail fest.
- Gehe im linken Menü zu Developer Zone > My Templates und klicke auf + New Template.
- Gib der Vorlage einen Namen (zum Beispiel ESP32 Zuhause), wähle ESP32 als Hardware und WiFi als Verbindungsart und erstelle die Vorlage.
- Die Werte BLYNK_TEMPLATE_ID und BLYNK_TEMPLATE_NAME auf der Vorlagenseite kommen später in deinen Code; merk dir jetzt nur, wo sie stehen.
- Falls bei der Registrierung ein Quickstart-Assistent erscheint, kannst du ihn überspringen; in dieser Anleitung erledigen wir jeden Schritt von Hand, damit du siehst, wofür jede Einstellung gut ist.
Schritt 2: Datastreams anlegen (V0, V1, V2, V3)
Ein Datastream ist der Steckbrief eines virtuellen Pins: Er legt fest, welcher Pin es ist, den Datentyp (Integer für ganze Zahlen, Double für Kommazahlen, String für Text), den kleinsten und größten Wert, die Einheit und die Zahl der angezeigten Nachkommastellen. Öffne die Vorlage im Bearbeitungsmodus, wähle im Tab Datastreams den Weg + New Datastream > Virtual Pin und lege diese vier Kanäle an:
| Virtueller Pin | Name | Datentyp | Min – Max | Einheit und Nachkommastellen | Widget |
|---|---|---|---|---|---|
| V0 | LED | Integer | 0 – 1 | Keine | Button / Switch |
| V1 | Relais | Integer | 0 – 1 | Keine | Button / Switch |
| V2 | Temperatur | Double | 0 – 50 | °C, #.# | Gauge, SuperChart |
| V3 | Feuchte | Double | 0 – 100 | %, # | Gauge, SuperChart |
Schritt 3: Gerät anlegen und Auth Token holen
Die Vorlage ist das Rezept, das Gerät ist das echte Board, das danach gebaut wird. Öffne im linken Menü Devices, klicke auf + New Device, wähle über From template die Vorlage ESP32 Zuhause und gib dem Gerät einen Namen. Danach erscheint eine dreizeilige Konfiguration: BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME und BLYNK_AUTH_TOKEN. Kopiere diese Zeilen; du findest sie später auch im Bereich Device Info der Geräteseite (in manchen Versionen der Oberfläche heißt er Developer Tools).
Schritt 4: Blynk-Bibliothek in der Arduino IDE installieren
- Falls das ESP32-Boardpaket in der Arduino IDE noch fehlt, installiere es zuerst; die Schritte stehen in Was ist der ESP32?
- Öffne den Bibliotheksverwalter, tippe Blynk ins Suchfeld und installiere die offizielle Bibliothek Blynk von Volodymyr Shymanskyy. Werden Abhängigkeiten abgefragt, wähle Install all.
- Installiere für den Sensor an derselben Stelle die DHT sensor library von Adafruit und die dafür nötige Adafruit Unified Sensor. Bei Problemen hilft die Anleitung Arduino-Bibliothek hinzufügen.
- Wähle unter Werkzeuge > Board das ESP32 Dev Module, schließe das Board mit einem datenfähigen USB-Kabel an und wähle den richtigen Port.
- Die Bibliothek bringt fertige Beispiele mit: Datei > Beispiele > Blynk > Boards_WiFi > ESP32_WiFi ist die einfachste Form des ersten Sketches unten.
Erster Sketch: LED per Handy ein- und ausschalten (V0)
Ersetze im Code unten die drei obersten Zeilen durch die, die du von deiner Geräteseite kopiert hast, und WLAN-Name und Passwort durch deine eigenen Daten. Diese drei #define-Zeilen müssen unbedingt vor den #include-Zeilen stehen; die Bibliothek sucht beim Kompilieren nach diesen Werten und bricht mit einem Fehler ab, wenn sie sie nicht findet.
1// Bu üç satırı Blynk.Console'daki cihaz sayfasından kopyala / copy these three lines from the device page in Blynk.Console
2#define BLYNK_TEMPLATE_ID "TMPLxxxxxxxx"
3#define BLYNK_TEMPLATE_NAME "ESP32 Ev"
4#define BLYNK_AUTH_TOKEN "CihazTokeniniBurayaYapistir"
5
6#define BLYNK_PRINT Serial // bağlantı günlüğünü Seri Monitör'e yaz / print the connection log to the Serial Monitor
7
8#include <WiFi.h>
9#include <WiFiClient.h>
10#include <BlynkSimpleEsp32.h>
11
12char ssid[] = "AgAdi"; // Wi-Fi adın (yalnız 2,4 GHz) / your Wi-Fi name (2.4 GHz only)
13char pass[] = "Sifre123"; // Wi-Fi şifren / your Wi-Fi password
14
15const int LED_PIN = 2; // çoğu DevKit'te dahili LED / onboard LED on most DevKits
16
17// Uygulama V0'a her değer yazdığında çalışır / runs every time the app writes a value to V0
18BLYNK_WRITE(V0) {
19 int deger = param.asInt(); // anahtar: 0 ya da 1 / switch: 0 or 1
20 digitalWrite(LED_PIN, deger);
21 Serial.print("V0 = ");
22 Serial.println(deger);
23}
24
25// Buluta her bağlanışta son V0 değerini iste / ask for the last V0 value on every connection
26BLYNK_CONNECTED() {
27 Blynk.syncVirtual(V0);
28}
29
30void setup() {
31 Serial.begin(115200);
32 pinMode(LED_PIN, OUTPUT);
33 Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass); // Wi-Fi'ye ve Blynk.Cloud'a bağlan / connect to Wi-Fi and Blynk.Cloud
34}
35
36void loop() {
37 Blynk.run(); // gelen komutları işler, bağlantıyı canlı tutar / handles commands, keeps the link alive
38}| Zeile | Aufgabe |
|---|---|
| BLYNK_PRINT Serial | Lässt die Bibliothek ihre Verbindungsschritte im seriellen Monitor ausgeben; bei der Fehlersuche sehr nützlich |
| BLYNK_WRITE(V0) | Funktion, die automatisch läuft, wenn App oder Web-Dashboard einen Wert an V0 senden |
| param.asInt() | Wandelt den empfangenen Wert in eine ganze Zahl um; für Kommazahlen asFloat(), für Text asStr() |
| BLYNK_CONNECTED() | Läuft einmal nach jeder erfolgreichen Verbindung |
| Blynk.syncVirtual(V0) | Fragt beim Server den letzten Wert von V0 ab, damit die LED auch nach einem Neustart ihren alten Zustand hat |
| Blynk.begin(...) | Verbindet sich mit dem WLAN und Blynk.Cloud; wartet, bis die Verbindung steht |
| Blynk.run() | Verarbeitet eingehende Befehle und hält die Verbindung am Leben; muss in loop ohne Wartezeit aufgerufen werden |
Lädst du den Code hoch und öffnest den seriellen Monitor mit 115200 Baud, solltest du nacheinander Zeilen wie "Connecting to AgAdi", "Connected to WiFi", die IP-Adresse, "Connecting to blynk.cloud:80" und zum Schluss "Ready (ping: 45ms)." sehen. Sobald die Ready-Zeile kommt, erscheint das Gerät in Blynk.Console als Online. Bei der ersten Verbindung siehst du eventuell auch eine Zeile, die mit "Redirecting to" beginnt; die Bibliothek wechselt automatisch auf den regionalen Server deines Kontos, das ist normal.
Handy- und Web-Dashboard einrichten
Der Code steht, jetzt platzieren wir die Schalter. Bei Blynk werden das mobile Dashboard und das Web-Dashboard getrennt gestaltet; da beide dieselben Datastreams nutzen, siehst du eine Änderung in einem sofort auch im anderen.
- Installiere die App Blynk IoT auf deinem Handy (nicht das alte Blynk oder Blynk Legacy) und melde dich mit demselben Konto an.
- Aktiviere auf deiner Profilseite den Developer Mode und tippe dann in der Developer Zone auf die Vorlage ESP32 Zuhause.
- Tippe auf die leere Fläche, um Widgets hinzuzufügen: je einen Button oder Switch für V0 und V1, eine Gauge oder Labeled Value für V2 und V3 und ein SuperChart für den Verlauf.
- Tippe jedes Widget an und wähle in seinen Einstellungen den passenden Datastream; dem SuperChart kannst du V2 und V3 gemeinsam zuweisen. Änderungen werden automatisch gespeichert.
- Für das Web-Dashboard bearbeitest du die Vorlage in Blynk.Console, ziehst im Tab Web Dashboard Widgets auf die Fläche, wählst über das Zahnrad jedes Widgets den Datastream und speicherst mit Save.
- Tippe in der App auf den Namen deines Geräts und probiere den Schalter aus: Die LED an GPIO 2 sollte sofort leuchten, und im seriellen Monitor sollte "V0 = 1" erscheinen.
Relais und Sensor: Messen ohne delay() mit BlynkTimer
Die goldene Regel bei Blynk lautet: In loop() stehen nur Blynk.run() und timer.run(). Packst du delay(2000) in loop, sieht der ESP32 während dieser Zeit keine Befehle vom Handy, und der Schalter reagiert verzögert; sehr lange Wartezeiten führen dazu, dass der Server das Gerät als offline einstuft. Noch schlimmer: Schreibst du Blynk.virtualWrite() direkt in loop, versucht der ESP32, Hunderte Nachrichten pro Sekunde zu senden; der Server drosselt das Gerät, und dein monatliches Nachrichtenkontingent ist schnell aufgebraucht. Die Lösung ist BlynkTimer, der nach dem millis()-Prinzip arbeitet: Er ruft die Funktion deiner Wahl im gewünschten Abstand auf, und loop bleibt dazwischen frei. Das Prinzip erklären wir ausführlich in Arduino millis() und delay().
Der folgende Code schaltet das Relais über V1, sendet alle 60 Sekunden die vom DHT11 gemessene Temperatur an V2 und die Luftfeuchtigkeit an V3 und löst ein Benachrichtigungs-Event aus, sobald die Temperatur über 30 °C steigt. Wie der Sensor funktioniert, liest du in DHT11 Temperatur- und Feuchtigkeitssensor.
1#define BLYNK_TEMPLATE_ID "TMPLxxxxxxxx"
2#define BLYNK_TEMPLATE_NAME "ESP32 Ev"
3#define BLYNK_AUTH_TOKEN "CihazTokeniniBurayaYapistir"
4#define BLYNK_PRINT Serial
5
6#include <WiFi.h>
7#include <WiFiClient.h>
8#include <BlynkSimpleEsp32.h>
9#include <DHT.h>
10
11char ssid[] = "AgAdi";
12char pass[] = "Sifre123";
13
14const int ROLE_PIN = 26; // röle modülünün IN pini / relay module IN pin
15const int DHT_PIN = 4; // DHT11 veri pini / DHT11 data pin
16const bool ROLE_AKTIF_LOW = true; // çoğu modül LOW'da çeker / most modules switch on with LOW
17
18DHT dht(DHT_PIN, DHT11); // DHT22 kullanıyorsan DHT22 yaz / write DHT22 if you use a DHT22
19BlynkTimer timer; // delay() yerine zamanlayıcı / a timer instead of delay()
20bool alarmGitti = false; // aynı bildirimin tekrarını önler / stops the same alert repeating
21
22void roleYaz(bool acik) {
23 if (ROLE_AKTIF_LOW) digitalWrite(ROLE_PIN, acik ? LOW : HIGH);
24 else digitalWrite(ROLE_PIN, acik ? HIGH : LOW);
25}
26
27// V1: uygulamadaki röle anahtarı / relay switch in the app
28BLYNK_WRITE(V1) {
29 roleYaz(param.asInt() == 1);
30}
31
32// Elektrik gidip gelince rölenin son durumunu geri al / restore the relay state after a power cut
33BLYNK_CONNECTED() {
34 Blynk.syncVirtual(V1);
35}
36
37// Zamanlayıcının çağırdığı fonksiyon / the function called by the timer
38void sensorGonder() {
39 float sicaklik = dht.readTemperature();
40 float nem = dht.readHumidity();
41 if (isnan(sicaklik) || isnan(nem)) {
42 Serial.println("DHT okunamadi / DHT read failed");
43 return;
44 }
45 Blynk.virtualWrite(V2, sicaklik); // V2: sıcaklık (°C) / temperature (°C)
46 Blynk.virtualWrite(V3, nem); // V3: nem (%) / humidity (%)
47
48 // 30 °C'yi geçince tek bildirim, 28 °C'nin altında yeniden kur / one alert above 30 °C, re-arm below 28 °C
49 if (sicaklik > 30.0 && !alarmGitti) {
50 Blynk.logEvent("yuksek_sicaklik", String("Sicaklik / Temp: ") + sicaklik + " C");
51 alarmGitti = true;
52 } else if (sicaklik < 28.0) {
53 alarmGitti = false;
54 }
55}
56
57void setup() {
58 Serial.begin(115200);
59 pinMode(ROLE_PIN, OUTPUT);
60 roleYaz(false); // açılışta röle kapalı / relay off at boot
61 dht.begin();
62 Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
63 timer.setInterval(60000L, sensorGonder); // 60 saniyede bir ölç ve gönder / measure and send every 60 seconds
64}
65
66void loop() {
67 Blynk.run();
68 timer.run(); // loop'ta delay() ya da virtualWrite olmasın / no delay() or virtualWrite in loop
69}Die Zeile timer.setInterval(60000L, sensorGonder) ruft die Funktion alle 60.000 Millisekunden auf; das L am Ende kennzeichnet die Zahl als long. Für einmalige Aufgaben gibt es timer.setTimeout(), etwa um das Relais einzuschalten und nach 5 Sekunden wieder auszuschalten. Ein BlynkTimer-Objekt verwaltet bis zu 16 Timer, was für die meisten Projekte mehr als genug ist. Die Prüfung mit isnan() verhindert, dass ein sinnloser NaN-Wert in die Cloud geht, wenn der Sensor nicht gelesen werden kann. Das Flag alarmGitti und der Abstand zwischen den Schwellen 30 und 28 °C (Hysterese) sorgen dafür, dass nicht bei jeder Messung eine neue Benachrichtigung kommt, während die Temperatur um 30 °C pendelt.
Sensordaten als Diagramm anzeigen
Damit sich das Diagramm füllt, braucht es zwei Dinge: Der ESP32 muss mit virtualWrite Daten senden, und der Datastream muss einen Verlauf speichern. Ist in den Datastream-Einstellungen beim Verlauf (History) Last Value gewählt, speichert der Server nur den letzten Wert, und es wird kein Diagramm gezeichnet; der Minutenmittelwert (1 Minute AVG) reicht für Diagramme aus. Im Gratis-Tarif bleibt der Verlauf 1 Woche erhalten, das Speichern von Rohdaten (RAW) ist kostenpflichtigen Tarifen vorbehalten. Im SuperChart wechselst du zwischen Zeiträumen wie Stunden, Tagen und Wochen und siehst Temperatur und Feuchte in zwei Farben im selben Diagramm. Weil alle 60 Sekunden Daten kommen, dauert es ein paar Minuten, bis die ersten Punkte erscheinen; setz das Intervall nicht ungeduldig auf 1 Sekunde, warum, siehst du im Abschnitt zum Gratis-Tarif.
Benachrichtigungen senden: Events und Blynk.logEvent()
Im neuen Blynk laufen Benachrichtigungen über Events. Du legst das Event zuerst in der Vorlage an und löst es dann im Code mit Blynk.logEvent() aus; Blynk trägt das Event in die Timeline des Geräts ein und schickt je nach Einstellung eine Push-Benachrichtigung oder eine E-Mail an dein Handy. Eine Event-Beschreibung darf bis zu 300 Zeichen lang sein, da der Sendepuffer der Bibliothek aber klein ist, hältst du sie besser kurz.
- Öffne die Vorlage im Bearbeitungsmodus und wechsle zum Tab Events & Notifications.
- Klicke auf + Create Event, gib dem Event einen Namen wie "Hohe Temperatur" und setze den Event-Code auf yuksek_sicaklik. Der Code darf nur Buchstaben, Ziffern und Unterstriche enthalten und muss exakt dem Text im Sketch entsprechen.
- Wähle als Event-Typ Warning; Info, Warning und Critical geben an, wie ernst die Meldung ist. Achte darauf, dass die Timeline-Option aktiv ist, damit das Event in der App erscheint.
- Schalte im Tab Notifications die Benachrichtigungen ein, wähle dein eigenes Konto als Empfänger und Push sowie E-Mail als Kanäle; auf Wunsch begrenzt du die Benachrichtigungen auf eine pro Stunde.
- Speichere die Vorlage mit Save und bestätige die Aktualisierung des Geräts. Vergiss nicht, der Blynk-IoT-App auf dem Handy Benachrichtigungen zu erlauben.
| Limit | Wert |
|---|---|
| Events pro Gerät und Tag (logEvent) | 100 |
| Zwischen zwei Events desselben Typs | Mindestens 1 Sekunde |
| Zwischen zwei Benachrichtigungen (Push, E-Mail) | Mindestens 5 Sekunden |
| Event-Beschreibung | Höchstens 300 Zeichen |
| Anfragen pro Gerät | Höchstens 50 pro Sekunde |
| Länge eines Textwerts (String) | Höchstens 1024 Byte |
Limits im Gratis-Tarif: So rechnest du die Nachrichten aus
Der kostenlose Tarif von Blynk reicht zum Lernen und für kleine Projekte, aber ein Projekt, das ohne Kenntnis der Limits gebaut wird, kann mitten im Monat verstummen. Stand Oktober 2026 nennt die Preisseite von Blynk für den Gratis-Tarif diese Werte: 5 Geräte, 1 Nutzer, 100.000 Gerätenachrichten pro Monat, 1 Woche Datenverlauf, 10 Vorlagen, 5 Events pro Vorlage, 1 Webhook und 5 Automationen. Diese Limits haben sich in den letzten Jahren mehrmals geändert; prüfe vor einem Langzeitprojekt die aktuellen Werte auf der Preisseite von Blynk oder in den Tarifeinstellungen deines Kontos. Am stärksten zählen die Befehle virtualWrite, syncVirtual und logEvent, die dein Gerät sendet, und jedes einzelne virtualWrite ist eine Nachricht. Ein Monat hat rund 2.592.000 Sekunden, also ist die Rechnung einfach:
| Sendeintervall | 1 Datastream (30 Tage) | 2 Datastreams (30 Tage) | Passt ins Limit von 100.000? |
|---|---|---|---|
| 2 Sekunden | 1.296.000 | 2.592.000 | Nein |
| 10 Sekunden | 259.200 | 518.400 | Nein |
| 30 Sekunden | 86.400 | 172.800 | Ein Wert passt, zwei nicht |
| 60 Sekunden | 43.200 | 86.400 | Passt, bei zwei Werten aber mit wenig Reserve |
| 5 Minuten | 8.640 | 17.280 | Passt locker |
Eine Verbindung, die ohne WLAN nicht hängen bleibt
Blynk.begin() ist bequem, hat aber einen Nachteil: Kommt keine WLAN- oder Blynk-Verbindung zustande, wartet es in setup() ewig, und der Rest des Programms läuft nie. Bei Projekten, die auch ohne Internet weiterarbeiten müssen, etwa ein Thermostat oder eine Bewässerung, solltest du die Verbindung selbst verwalten. Das Grundgerüst unten startet das WLAN ohne zu warten, übernimmt mit Blynk.config() nur die Einstellungen und prüft die Verbindung alle 10 Sekunden; die lokalen Aufgaben, die du dem Timer hinzufügst, laufen in der Zwischenzeit unabhängig vom Internet weiter.
1#define BLYNK_TEMPLATE_ID "TMPLxxxxxxxx"
2#define BLYNK_TEMPLATE_NAME "ESP32 Ev"
3#define BLYNK_AUTH_TOKEN "CihazTokeniniBurayaYapistir"
4#define BLYNK_PRINT Serial
5
6#include <WiFi.h>
7#include <WiFiClient.h>
8#include <BlynkSimpleEsp32.h>
9
10char ssid[] = "AgAdi";
11char pass[] = "Sifre123";
12
13BlynkTimer timer;
14
15// Wi-Fi varsa ama Blynk bağlı değilse yeniden dene / retry Blynk when Wi-Fi is up but Blynk is not
16void baglantiKontrol() {
17 if (WiFi.status() == WL_CONNECTED && !Blynk.connected()) {
18 Serial.println("Blynk'e yeniden baglaniliyor / reconnecting to Blynk");
19 Blynk.connect(3000); // en fazla 3 saniye bekle / wait at most 3 seconds
20 }
21}
22
23void setup() {
24 Serial.begin(115200);
25 WiFi.mode(WIFI_STA);
26 WiFi.begin(ssid, pass); // beklemeden başlat / start without waiting
27 Blynk.config(BLYNK_AUTH_TOKEN); // yalnız ayarla, bağlanmayı bekleme / configure only, don't block
28 timer.setInterval(10000L, baglantiKontrol); // 10 saniyede bir kontrol / check every 10 seconds
29}
30
31void loop() {
32 if (Blynk.connected()) {
33 Blynk.run();
34 }
35 timer.run(); // yerel işler internet yokken de çalışır / local tasks keep running offline
36}Der ESP32 versucht nach einem Verbindungsabbruch selbstständig, sich wieder mit dem WLAN zu verbinden; der Code verbindet sich erst dann neu mit Blynk, wenn das WLAN wieder da ist. Möchtest du deine Daten verschlüsselt übertragen, bindest du statt BlynkSimpleEsp32.h einfach BlynkSimpleEsp32_SSL.h ein; die Verbindung läuft dann per TLS über Port 443 statt 80 und kommt auch an Portsperren in manchen Schul- oder Firmennetzen vorbei. Willst du die WLAN-Daten nicht fest in den Code schreiben, kannst du mit dem Beispiel Blynk.Edgent > Edgent_ESP32 Netzwerkname und Passwort in der Blynk-IoT-App auf dem Handy eingeben; dabei wird der Auth Token beim Hinzufügen des Geräts automatisch vergeben, und der Code lässt sich drahtlos (OTA) aktualisieren. Derselbe Code läuft auch auf ESP8266-Boards: Für einen NodeMCU nimmst du einfach ESP8266WiFi.h und BlynkSimpleEsp8266.h.
Blynk mit dem Raspberry Pi Pico W und MicroPython
Blynk ist nicht nur etwas für den ESP32. Nutzt du MicroPython auf einem Raspberry Pi Pico W, musst du nur die einzelne Datei BlynkLib.py aus der Python-Bibliothek von Blynk mit Thonny auf den Pico kopieren. Beachte, dass diese Bibliothek nicht mehr aktiv weiterentwickelt wird und Blynk für neue Projekte seine MQTT-API empfiehlt; zum Lernen und für einfache Projekte reicht sie aber. Der folgende Code steuert mit V0 die eingebaute LED des Pico W und sendet einmal pro Minute den Wert des Temperatursensors im Chip an V2. Lege für den Pico W in Blynk.Console ein eigenes Gerät an und nutze dessen Token. Bist du neu bei MicroPython, ist MicroPython Grundlagen ein guter Einstieg.
1import network, time
2from machine import Pin, ADC
3import BlynkLib # BlynkLib.py Pico'da olmalı / BlynkLib.py must be on the Pico
4
5WIFI_SSID = "AgAdi"
6WIFI_PASS = "Sifre123"
7BLYNK_AUTH = "PicoTokeniniBurayaYapistir"
8
9led = Pin("LED", Pin.OUT) # Pico W dahili LED / Pico W onboard LED
10sensor = ADC(4) # yongadaki sıcaklık sensörü / on-chip temperature sensor
11
12wlan = network.WLAN(network.STA_IF)
13wlan.active(True)
14wlan.connect(WIFI_SSID, WIFI_PASS)
15while not wlan.isconnected():
16 time.sleep(0.5)
17print("IP:", wlan.ifconfig()[0])
18
19blynk = BlynkLib.Blynk(BLYNK_AUTH, insecure=True) # 80 portu, TLS'siz / port 80, no TLS
20
21@blynk.on("V0")
22def v0_yazildi(value): # uygulamadaki anahtar / switch in the app
23 led.value(int(value[0]))
24
25@blynk.on("connected")
26def baglandi(ping):
27 print("Blynk hazir / ready, ping:", ping, "ms")
28 blynk.sync_virtual(0) # son V0 değerini iste / ask for the last V0 value
29
30son = time.ticks_ms()
31while True:
32 blynk.run()
33 if time.ticks_diff(time.ticks_ms(), son) >= 60000: # 60 saniyede bir / every 60 seconds
34 son = time.ticks_ms()
35 volt = sensor.read_u16() * 3.3 / 65535
36 sicaklik = 27 - (volt - 0.706) / 0.001721
37 blynk.virtual_write(2, round(sicaklik, 1)) # V2: sıcaklık / temperatureIm Beispiel wird die Verbindung mit insecure=True unverschlüsselt über Port 80 aufgebaut; das ist die Variante mit dem geringsten Speicherbedarf und entspricht BlynkSimpleEsp32.h auf dem ESP32. Entfernst du diesen Parameter, versucht die Bibliothek, TLS auf Port 443 zu nutzen. Dass wir in der Schleife mit ticks_ms statt mit time.sleep() die Zeit messen, hat denselben Grund wie auf der Arduino-Seite: Wird blynk.run() nicht oft aufgerufen, kommen Befehle verspätet an, und die Verbindung bricht ab. Der Temperatursensor im Chip kann ein paar Grad von der Raumtemperatur abweichen; für echte Messungen schließ einen DHT11 oder DS18B20 an.
Projektideen mit Blynk
- Smarte Steckdose: Schalte mit einem Relais eine Schreibtischlampe oder einen Ventilator von überall auf der Welt; zur Verkabelung siehe Was ist ein Relaismodul?
- Pflanzen aus der Ferne gießen: Starte die Pumpe, wenn der Bodenfeuchtesensor Trockenheit meldet, und verfolge die Feuchte im Diagramm.
- Smartes Gewächshaus: Schalte einen Lüfter ein, wenn Temperatur und Feuchte steigen, und erhalte eine Benachrichtigung bei Grenzwertüberschreitung; Details in Projekt smartes Gewächshaus.
- Einbruchalarm: Schick per logEvent eine kritische Benachrichtigung aufs Handy, sobald der PIR-Bewegungsmelder jemanden erkennt.
- Gaswarner: Überschreitet der MQ-2-Gassensor seinen Grenzwert, piept ein Buzzer und dein Handy vibriert.
- Wetterstation: Vergleiche Temperatur, Feuchte und Luftdruck eines BME280 im Wochendiagramm.
- Tür- und Fensterüberwachung: Sieh in der App mit einem Reedkontakt, ob die Tür offen geblieben ist.
Häufige Fehler und Lösungen
| Symptom oder Meldung | Ursache | Lösung |
|---|---|---|
| Beim Kompilieren "Please specify your BLYNK_TEMPLATE_ID and BLYNK_TEMPLATE_NAME" | Zeilen fehlen, stehen nach dem #include oder es wird das alte BLYNK_DEVICE_NAME verwendet | Die drei #define-Zeilen ganz nach oben vor die Includes setzen; DEVICE_NAME in TEMPLATE_NAME ändern |
| Beim Kompilieren "'class BlynkWifi' has no member named 'notify'" | Der Befehl Blynk.notify() aus altem Blynk-Code | In der Vorlage ein Event anlegen und Blynk.logEvent() verwenden |
| Im seriellen Monitor "Invalid auth token" | Token fehlt oder falsch kopiert, Gerät gelöscht oder alter Blynk-Token | Token erneut von der Geräteseite kopieren, ohne Leerzeichen am Anfang oder Ende |
| Nach "Connecting to AgAdi" passiert nichts mehr | Das Board kommt nicht ins WLAN: 5-GHz-Netz, falsches Passwort oder schwaches Signal | Ein 2,4-GHz-Netz nutzen; Details in der ESP32-WLAN-Anleitung |
| "Connecting to blynk.cloud:80" wiederholt sich oder "Login timeout" | Kein Internet im Netz oder ein Schul- oder Firmennetz blockiert die Verbindung | Mit einem Handy-Hotspot testen; mit BlynkSimpleEsp32_SSL.h Port 443 nutzen |
| "Heartbeat timeout", Gerät oft Offline | Langes delay() oder blockierende Schleife in loop, schwache Stromversorgung | Wartezeiten in BlynkTimer verlegen, gutes Kabel und Netzteil nutzen |
| Beim Drücken des Schalters passiert nichts | Widget hängt an einem anderen Datastream oder der Pin in BLYNK_WRITE ist ein anderer | Der Pin in den Widget-Einstellungen muss dem Vx im Code entsprechen |
| Anzeige zeigt immer 1 oder das Diagramm bleibt leer | Max des Datastreams steht noch auf 1 oder der Verlauf ist auf Last Value gestellt | Min und Max an den Sensorbereich anpassen und die Verlaufseinstellung ändern |
| Nach einer Weile kommen gar keine Daten mehr | Das monatliche Nachrichtenkontingent ist aufgebraucht | Sendeintervall verlängern und nur bei Änderung senden |
| Relais schaltet verkehrt herum oder fällt nie ab | Active-LOW-Modul oder das 3,3-V-Signal reicht nicht | ROLE_AKTIF_LOW umstellen, ein 3,3-V-taugliches Modul verwenden |
Blynk, eigener Webserver oder MQTT?
| Methode | Vorteile | Nachteile | Wann wählen? |
|---|---|---|---|
| Blynk IoT | Fertiges Dashboard ohne App-Programmierung, Zugriff von unterwegs, Benachrichtigungen | Limits im Gratis-Tarif, abhängig von der Cloud | Schnelle Prototypen und Fernüberwachung |
| ESP32-Webserver | Komplett kostenlos, funktioniert ohne Internet | Meist nur aus dem eigenen Netz erreichbar, Oberfläche schreibst du selbst | Steuerpult für zu Hause |
| MQTT und Home Assistant | Unbegrenzte Nachrichten, läuft lokal, starke Automationen | Aufwendigere Einrichtung, braucht einen Server, der ständig läuft | Dauerhaftes Smart Home |
| Telegram-Bot | Kostenlos, ideal für Meldungen und Befehle | Keine Diagramme und kein Dashboard | Alarme und einfache Befehle |
Kurz gesagt: Blynk ist der einfachste Weg, mit einem fertigen, schicken Dashboard schnell ans Ziel zu kommen und dein Projekt von unterwegs zu erreichen. Willst du ein unbegrenztes, rein lokales System, lies ESP32 Webserver und WebSocket oder ESP32 mit MQTT und Home Assistant; willst du nur Warnungen aufs Handy schicken, schau dir die Anleitung ESP32 Telegram-Bot an.
Hast du das Trio aus Vorlage, Datastream und Auth Token einmal verstanden, ist ein neues ESP32-Projekt mit Blynk in wenigen Minuten mit dem Handy verbunden. Kombiniere die LED-, Relais- und Sensorbeispiele von hier, und schon hast du den Grundstein für dein eigenes Smart Home. In der BlueGrays-App findest du außerdem ESP32-Projekte wie LED-Steuerung, WLAN-Verbindung, Temperaturmessung mit dem DHT22, smarte Beleuchtung, Pflanzenbewässerung und einen Bewegungsalarm mit Telegram, jeweils mit Schaltplan und Code Schritt für Schritt.
Häufige Fragen
Ist Blynk kostenlos?
Ja, Blynk hat einen kostenlosen Tarif für die private Nutzung. Stand Oktober 2026 bietet er 5 Geräte, 100.000 Gerätenachrichten pro Monat und 1 Woche Datenverlauf. Für mehr Geräte, unbegrenzte Nachrichten und längere Datenspeicherung brauchst du einen kostenpflichtigen Monatstarif.
Wo finde ich den Blynk Auth Token?
Öffne in Blynk.Console unter Devices dein Gerät; im Bereich Device Info siehst du die Zeilen BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME und BLYNK_AUTH_TOKEN fertig zum Einfügen in deinen Code. Im neuen Blynk kommt der Token nicht mehr per E-Mail, und jedes Gerät hat seinen eigenen Token.
Funktioniert die alte Blynk-App noch?
Nein. Die alte App Blynk (Legacy) wurde 2022 aus den Stores entfernt, und ihre Cloud-Server wurden am 31. Dezember 2022 abgeschaltet. Alte Projekte musst du auf der neuen Plattform Blynk IoT mit Vorlagen und Datastreams neu aufbauen; der Großteil des ESP32-Codes lässt sich mit kleinen Änderungen weiterverwenden.
Was ist ein virtueller Pin bei Blynk?
Ein virtueller Pin ist ein nummerierter Datenkanal zwischen App und Code und entspricht keinem physischen Anschluss des Boards. Die Pins sind von V0 bis V255 nummeriert; Werte aus der App liest du mit BLYNK_WRITE(Vx), Werte vom Board schickst du mit Blynk.virtualWrite(Vx, Wert) an die App. So kannst du eingehende Werte beliebig verarbeiten und Sensordaten ins Dashboard bringen.
Warum ist mein ESP32 in Blynk offline?
Die häufigsten Ursachen sind ein falscher oder fehlender Auth Token, ein ESP32, der sich in ein 5-GHz-Netz einwählen will, lange delay()-Aufrufe in loop() und eine schwache Stromversorgung. Erscheint im seriellen Monitor keine Zeile "Ready", liegt das Problem an der Verbindung; erscheint sie, prüfe, ob du in der App das richtige Gerät ansiehst.
Funktioniert Blynk ohne Internet?
Nein. Bei Blynk IoT laufen Befehle und Daten über Blynk.Cloud, deshalb brauchen sowohl der ESP32 als auch dein Handy Internetzugang. Für eine Steuerung ohne Internet kannst du den eigenen Webserver des ESP32, ESP-NOW oder Bluetooth verwenden.
Projekte, die du danach bauen kannst
Alle Projekte ansehen
LED Blinken mit ESP32
Lehrt die grundlegende Verwendung von GPIO-Ausgängen mit ESP32. Wir erreichen einen Blinkeffekt, indem wir eine LED über einen digitalen Pin ein- und ausschalten. ESP32-Version des klassischen Blink-Projekts auf Arduino UNO; die grundlegenden Blink-Befehle in der Arduino-Umgebung bleiben gleich, aber die Pinbelegung und die GPIO-Pegel von 3,3 V des ESP32 unterscheiden sich von denen des Arduino UNO.

ESP32 Interne LED Blinken
Die eingebaute blaue LED auf dem ESP32 DevKit V1 zum Blinken bringen. Keine externen Komponenten erforderlich! Das erste Projekt, das Sie ausprobieren sollten, wenn Sie einen ESP32 kaufen. GPIO 2 ist mit der internen LED verbunden.

Messung der Lichtintensität mit dem ESP32-LDR-Modul
Echtzeit-Anzeige des ADC-Rohwerts des LDR-Moduls und des anhand von Dunkel- und Hellreferenzwerten berechneten relativen Lichtwerts in Prozent im Serial Monitor. Dieser Prozentwert ist keine Lux-Messung. Vermittelt die Kalibrierungslogik des Moduls. Sollte idealerweise vor Projekt 10 durchgeführt werden, da es zur Festlegung des Schwellenwerts dient.

ESP32-WLAN-STA-Verbindung (mit LCD-Display)
In diesem Projekt verbinden wir den ESP32 im Station-Modus (STA) sicher und fehlertolerant mit dem heimischen WLAN. Wir lagern SSID und Passwort in eine separate `secrets.h`-Datei aus, um Leaks zu Git zu verhindern, richten einen Auto-Reconnect-Mechanismus ein und zeigen RSSI-Signalpegel und IP-Adresse auf einem I2C-LCD-Display an. Die interne LED dient als Statusanzeige. Ein Verbindungsmanager auf Produktionsniveau.

ESP32 DHT22 Temperatur und Luftfeuchtigkeit (mit LCD-Display)
Bei diesem Projekt werden die Umgebungstemperatur und die Luftfeuchtigkeit mit einem DHT22-Sensor gemessen und in Echtzeit auf einem 16x2 I2C-LCD angezeigt. Mithilfe der Adafruit-DHT-Bibliothek werden die Daten über das One-Wire-Protokoll vom Sensor ausgelesen. Dieses Projekt bildet die Grundlage für IoT-Wetterstationen, Smart-Home-Automatisierung oder Umgebungsüberwachungssysteme in Gewächshäusern. Die Kommunikation mit dem DHT22 erfolgt über den GPIO-4-Pin des ESP32.

ESP32 Intelligente Beleuchtung (PIR + LDR + Relais + OLED)
Verwandle deinen Flur, dein Badezimmer oder deine Speisekammer mit dem ESP32 in intelligente Beleuchtung! Mit einem PIR-Bewegungssensor, einem LDR-Lichtsensor und einem Relaismodul realisieren wir das klassische Szenario "Licht geht an, wenn im Dunkeln Bewegung erkannt wird" — bei Tageslicht bleibt das Licht trotz Bewegung aus, was tagsüber Energie spart. Das Licht bleibt 30 Sekunden lang an; bei anhaltender Bewegung wird der Timer zurückgesetzt und das Licht bleibt länger an. Das SSD1306 OLED-D

ESP 32 Intelligentes Pflanzenbewässerungssystem
In diesem Projekt wurde mithilfe eines ESP32 und eines Bodenfeuchtesensors ein automatisches Pflanzenbewässerungssystem entwickelt. Der Sensor misst kontinuierlich den Feuchtigkeitsgehalt des Bodens. Wenn die Feuchtigkeit unter einen festgelegten Wert fällt, aktiviert der ESP32 das Relais, schaltet die Wasserpumpe ein und bewässert die Pflanze. Sobald der Boden ausreichend feucht ist, schaltet sich die Pumpe automatisch ab. Dank dieses Projekts können Pflanzen regelmäßig bewässert und Wasser ein

ESP32 Bewegungsalarmsystem (PIR + Buzzer + LED + Telegram)
Ein intelligentes Sicherheitsalarmsystem, das Buzzer und LED aktiviert, sobald der PIR-Sensor Bewegung erkennt, und gleichzeitig eine sofortige Benachrichtigung per Telegram an den Besitzer sendet. Ein 30-sekündiger Cooldown begrenzt die Häufigkeit wiederholter Alarme; dieser Mechanismus überprüft weder die Gültigkeit der PIR-Erkennungen noch verhindert er Fehlauslösungen. Geeignet für Heimsicherheit, Garagenüberwachung, Lagerräume oder Arbeitszimmer. Mit ESP32-CAM sind Foto-Benachrichtigungen m
Weitere Artikel
BlueGrays-App
Diese Schaltung Schritt für Schritt auf dem Handy nachbauen
Schaltplan, Code und Teileliste auf einem Bildschirm. Über 160 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

