ESP32 Wetterstation selber bauen
Eine eigene Wetterstation mit dem ESP32 — für unter 40 €. Dieser Guide führt Sie durch den kompletten Aufbau: Sensoren, Code, Datenübertragung und Visualisierung.
Warum eine eigene Wetterstation?
Kauf-Wetterstationen kosten 100-500 € und sind oft geschlossen. Mit dem ESP32 bauen Sie eine offene, erweiterbare Station, die genau das macht, was Sie wollen.
Vorteile:
Benötigte Komponenten
| Komponente | Preis | Beschreibung |
|-----------|-------|-------------|
| ESP32 Dev Board | 5-8 € | Der Mikrocontroller |
| BME280 Sensor | 5-8 € | Temperatur, Luftfeuchtigkeit, Luftdruck |
| OLED 0.96" Display (SSD1306) | 3-5 € | Display für Live-Werte |
| Breadboard + Kabel | 3 € | Verbindung |
| Optional: BH1750 | 3 € | Lichtstärke |
| Optional: Anemometer | 15-30 € | Wind |
| Optional: Regenmesser | 10-20 € | Niederschlag |
| 3D-gedrucktes Gehäuse | ~5 € | Schutz ( Thingiverse) |
👉 ESP32 Starter Kit auf Amazon
Verkabelung
BME280 über I2C
```
ESP32 BME280
3.3V → VIN
GND → GND
GPIO21 → SDA
GPIO22 → SCL
OLED Display (I2C)
``
ESP32 OLED
3.3V → VCC
GND → GND
GPIO21 → SDA (shared mit BME280)
GPIO22 → SCL (shared mit BME280)
Beide I2C-Geräte teilen sich die Pins (I2C Bus).
Software: Arduino IDE
Bibliotheken installieren
In Arduino IDE → Bibliotheken verwalten:
Code
`cpp
#include
#include
#include
#include
#include
// Sensor und Display
Adafruit_BME280 bme;
Adafruit_SSD1306 display(128, 64, &Wire, -1);
// WiFi
const char* ssid = "IHR_WIFI";
const char* password = "PASSWORT";
// Home Assistant / InfluxDB
const char* serverUrl = "http://192.168.1.100:8123/api/states/sensor.wetterstation";
unsigned long lastUpdate = 0;
void setup() {
Serial.begin(115200);
// Display starten
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
// BME280 starten
if (!bme.begin(0x76)) {
Serial.println("BME280 nicht gefunden!");
while (1);
}
// WiFi verbinden
WiFi.begin(ssid, password);
display.println("Verbinde WiFi...");
display.display();
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
display.println("Verbunden!");
display.display();
delay(1000);
}
void loop() {
if (millis() - lastUpdate >= 60000) { // Jede Minute
lastUpdate = millis();
float temp = bme.readTemperature();
float hum = bme.readHumidity();
float pres = bme.readPressure() / 100.0F;
// Display aktualisieren
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.printf("Temp: %.1f C\n", temp);
display.printf("Feucht: %.1f %%\n", hum);
display.printf("Druck: %.0f hPa\n", pres);
display.printf("IP: %s\n", WiFi.localIP().toString().c_str());
display.display();
// Daten senden (optional)
sendData(temp, hum, pres);
Serial.printf("T: %.1f°C H: %.1f%% P: %.0fhPa\n", temp, hum, pres);
}
}
void sendData(float temp, float hum, float pres) {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(serverUrl);
http.addHeader("Content-Type", "application/json");
http.addHeader("Authorization", "Bearer IHR_LONG_LIVED_TOKEN");
String json = "{\"state\":\"" + String(temp, 1) + "\",\"attributes\":{\"unit_of_measurement\":\"°C\",\"friendly_name\":\"Außentemperatur\"}}";
int code = http.PUT(json);
Serial.printf("HTTP Response: %d\n", code);
http.end();
}
}
`
Alternative: ESPHome (ohne Code)
Wenn Sie nicht programmieren wollen, nutzen Sie ESPHome:
`yaml
esphome:
name: wetterstation
platform: esp32
board: esp32dev
wifi:
ssid: "IHR_WIFI"
password: "PASSWORT"
i2c:
sda: 21
scl: 22
sensor:
- platform: bme280_i2c
address: 0x76
temperature:
name: "Außentemperatur"
unit_of_measurement: "°C"
humidity:
name: "Luftfeuchtigkeit"
unit_of_measurement: "%"
pressure:
name: "Luftdruck"
unit_of_measurement: "hPa"
- platform: wifi_signal
name: "WiFi Signal"
ota:
password: "ESPHome_OTA_PASSWORD"
`
Daten visualisieren
Option 1: Home Assistant
Mit ESPHome automatisch integriert. Dashboard-Karten erstellen, History ansehen, Automatisierungen erstellen.
Option 2: InfluxDB + Grafana
Für Langzeit-Datenanalyse:
`bashInfluxDB installieren
docker run -d --name influxdb -p 8086:8086 influxdb:2.7
Grafana installieren
docker run -d --name grafana -p 3000:3000 grafana/grafana
`
In ESPHome InfluxDB hinzufügen:
`yaml
http_request:
influxdb_v2_oss:
url: http://192.168.1.100:8086
token: "IHR_INFLUX_TOKEN"
organization: "home"
bucket: "wetter"
``Gehäuse
3D-Druck
Suchen Sie auf Thingiverse oder Printables nach "ESP32 weather station enclosure". Beliebte Designs:
Wichtig: Das Gehäuse muss belüftet sein (für korrekte Temperaturmessung), aber vor Regen geschützt.
Kauf-Gehäuse
Wetterfeste Elektronikgehäuse (IP65) aus dem Baumarkt, ~10 €.
Erweiterungen
| Sensor | Messgröße | Preis |
|--------|-----------|-------|
| MQ-135 | Luftqualität (CO2) | 5 € |
| SDS011 | Feinstaub (PM2.5) | 20 € |
| UV Sensor | UV-Index | 3 € |
| Regenmesser | Niederschlag | 15 € |
| Anemometer | Windgeschwindigkeit | 20 € |
| Bodiweather UV/IR | Solarstrahlung | 25 € |
Solarbetrieb
Für autarken Betrieb:
FAQ
Wie genau ist der BME280?
Temperatur: ±1°C. Luftfeuchtigkeit: ±3 %. Luftdruck: ±1 hPa. Für Hobby-Zwecke sehr gut. Für professionelle Meteorologie nicht geeignet.
Wie lange hält der ESP auf Akku?
Mit Deep-Sleep (alle 10 Minuten eine Messung): 1-2 Wochen mit 18650-Akku. Mit Solar: unbegrenzt.
Kann ich mehrere Stationen betreiben?
Ja. Jeder ESP sendet an dieselbe Home Assistant-Instanz mit unterschiedlichen Namen. So haben Sie Innen-, Außen-, und Garten-Sensoren.
Fazit
Eine ESP32-Wetterstation ist das perfekte Einsteiger-Projekt für IoT und Smart Home. Mit ESPHome in 30 Minuten eingerichtet, erweiterbar mit Dutzenden Sensoren und für unter 40 €. Die Daten fließen automatisch in Home Assistant — dort werden sie zu Wetter-Vorhersagen, Automatisierungen und Visualisierungen.