diy

ESP32 Wetterstation selber bauen

ESP32 Wetterstation selber bauen 2026: Sensoren, Code, Datenübertragung und Dashboard. Kompletter Guide mit BME280 und OLED-Display.

von Ultrion Redaktion2026-08-075 Min Lesezeit
Werbung (AdSense — In-Article)


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:

  • Lokal: Daten gehören Ihnen

  • Erweiterbar: Jeder Sensor möglich

  • Open Source: Code ist frei anpassbar

  • Kostengünstig: 30-50 € für die Basis
  • 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:

  • Adafruit BME280 Library

  • Adafruit SSD1306

  • Adafruit GFX Library

  • WiFi (ESP32 built-in)
  • 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:

  • Home Assistant → ESPHome Dashboard

  • "New Device" → ESP32

  • Konfiguration:
  • `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"
    `

  • "Install" klicken → ESP32 flashen

  • Sensoren erscheinen automatisch in Home Assistant
  • 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:

    `bash

    InfluxDB 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:

  • Stevenson Screen (Standard-Wettergehäuse)

  • Wall-mount enclosure

  • Solar-powered enclosure
  • 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:

  • Solarpanel (5V, 2-5W) — ~15 €

  • LiPo-Akku (18650) — ~8 €

  • TP4056 Charge Controller — ~3 €

  • Deep-Sleep zwischen Messungen (alle 10 Minuten)
  • 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.

    Werbung (AdSense — In-Article Bottom)

    Verwandte Artikel