Blog
ESP32 MQTT: Sensordaten in 30 Minuten in die Cloud
Das Problem
Sie haben eine ESP32-Wetterstation gebaut. Temperatur und Luftfeuchtigkeit erscheinen perfekt auf Ihrem Serial Monitor. Aber hier ist das Problem — diese Daten stecken auf Ihrem Laptop fest. Sie können sie nicht vom Handy abrufen. Sie können sie nicht loggen. Sie können keine Automatisierungen auslösen.
MQTT löst das. Es ist das Kommunikationsprotokoll, das die meisten IoT-Systeme weltweit antreibt — von Smart Factories bis zu Home-Assistant-Installationen.
Was Sie bauen werden
Ein ESP32-Sensorknoten, der:
- Alle 30 Sekunden Temperatur und Luftfeuchtigkeit liest
- Daten an einen kostenlosen Cloud-MQTT-Broker veröffentlicht
- Ihnen erlaubt, alles von jedem Webbrowser aus zu überwachen, egal wo
Schwierigkeit: Einsteiger | Zeit: 30 Minuten | Kosten: ~$23 an Teilen
Benötigte Hardware (Stückliste)
| Teil | Modell | Anzahl | Preis | Kaufen |
|---|---|---|---|---|
| Mikrocontroller | ESP32 DevKitC V4 | 1 | $13.49 | Produkt ansehen |
| Temperatur-/Feuchtesensor | DHT22 | 1 | $5.24 | Produkt ansehen |
| Display (optional) | 0.96″ OLED SSD1306 | 1 | $5.99 | Produkt ansehen |
| Breadboard | 830-point | 1 | $4.49 | Produkt ansehen |
| Jumper-Kabel | M-M 40pcs | 1 | $2.99 | Produkt ansehen |
Schritt 1: Verkabelung
ESP32 ↔ DHT22
| DHT22-Pin | ESP32-Pin | Hinweis |
|---|---|---|
| VCC | 3V3 | Strom |
| GND | GND | Masse |
| DATA | GPIO 13 | Datenleitung |
ESP32 ↔ OLED (optional)
| OLED-Pin | ESP32-Pin | Hinweis |
|---|---|---|
| VCC | 3V3 | Strom |
| GND | GND | Masse |
| SDA | GPIO 21 | I2C-Daten |
| SCL | GPIO 22 | I2C-Takt |
Schritt 2: Bibliotheken installieren
Öffnen Sie Arduino IDE → Sketch → Include Library → Manage Libraries und installieren Sie:
- PubSubClient von Nick O’Leary (MQTT-Kommunikation)
- DHT sensor library von Adafruit (DHT22-Treiber)
- Adafruit SSD1306 (OLED-Display, falls verwendet)
Schritt 3: Code hochladen
#include <WiFi.h>
#include <PubSubClient.h>
#include "DHT.h"
// --- WiFi Settings ---
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
// --- MQTT Settings ---
const char* mqtt_server = "broker.hivemq.com";
const int mqtt_port = 1883;
const char* temp_topic = "sensbench/home/temperature";
const char* hum_topic = "sensbench/home/humidity";
// --- Sensor Settings ---
#define DHTPIN 13
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// --- Globals ---
WiFiClient espClient;
PubSubClient client(espClient);
void setup_wifi() {
delay(10);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("nWiFi connected! IP: ");
Serial.println(WiFi.localIP());
}
void reconnect() {
while (!client.connected()) {
Serial.print("Connecting to MQTT...");
String clientId = "sensbench-" + String(random(0xffff), HEX);
if (client.connect(clientId.c_str())) {
Serial.println("connected!");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" retrying in 5s");
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
dht.begin();
setup_wifi();
client.setServer(mqtt_server, mqtt_port);
}
void loop() {
if (!client.connected()) reconnect();
client.loop();
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Sensor read failed!");
return;
}
char tempStr[8], humStr[8];
dtostrf(t, 4, 2, tempStr);
dtostrf(h, 4, 2, humStr);
client.publish(temp_topic, tempStr);
client.publish(hum_topic, humStr);
Serial.printf("Temp: %s°C Humidity: %s%%n", tempStr, humStr);
delay(30000);
}
Schritt 4: Ihre Daten in der Cloud ansehen
- Öffnen Sie https://www.hivemq.com/mqtt-web-client/ in Ihrem Browser
- Klicken Sie auf Connect
- Fügen Sie unter Subscriptions das Topic hinzu:
sensbench/home/# - Beobachten Sie, wie Ihr ESP32 alle 30 Sekunden Echtzeitdaten sendet
Was kommt als Nächstes?
Jetzt, wo Ihre Daten in der Cloud sind, können Sie:
- Ein Dashboard bauen mit Node-RED oder Home Assistant, um Daten zu visualisieren
- Weitere Sensoren hinzufügen — BME280 für Luftdruck, Bodenfeuchte für Pflanzen
- Automatisierungen auslösen — “wenn Temperatur > 30°C, Lüfter einschalten”
- Auf Batteriebetrieb umstellen — Deep-Sleep-Modus für monatelangen Betrieb