ESP32-Steuerung nach dynamischen Strompreisen — so baust du sie

Ein ESP32 holt sich per WLAN die stündlichen Börsenstrompreise von morgen, vergleicht sie mit einer Schaltschwelle und legt ein Relais um — mehr braucht die Grundfunktion nicht. Hier bekommst du die Schritte, die Stolperfallen und eine Vorlage, wie du das Ganze als PDF dokumentierst.
1) ESP32 mit WLAN-Zugang und einem Relais-Modul (oder einer schaltbaren Steckdose per MQTT) aufbauen. 2) Zeit per NTP synchronisieren — ohne korrekte Uhrzeit ist jede Preis-Stunde wertlos. 3) Einmal täglich nach der Day-Ahead-Veröffentlichung am Nachmittag die 24 Preise deines Anbieters (z. B. Tibber, aWATTar, Rabot) per HTTPS als JSON holen. 4) Die Stunden nach Preis sortieren und die günstigsten n Stunden markieren, die du zum Laufen brauchst. 5) Zu jeder vollen Stunde prüfen: markiert? → Relais an, sonst aus. Das ist der komplette Kern.

Ein ESP32-Devkit reicht (WLAN und TLS sind an Bord, ein ESP8266 kommt bei HTTPS-Zertifikaten schneller an seine Grenzen). Dazu ein Relais-Modul mit Optokoppler, ein stabiles 5-V-Netzteil und — wenn du 230 V schaltest — ein berührungssicheres Gehäuse. ⚠️ Arbeiten an 230 V gehören in Elektriker-Hände; sauberer ist es, wenn der ESP32 nur eine fertige Schaltsteckdose oder einen Wallbox-/Wärmepumpen-Eingang ansteuert und selbst nie Netzspannung führt.

Dein Tarif folgt der Day-Ahead-Auktion an der Börse. Die Preise für den Folgetag stehen am Nachmittag fest, dein Anbieter liefert sie über eine API oder du ziehst sie direkt aus öffentlichen Marktdaten. Dass sich das Schalten lohnt, zeigt der Markt selbst: In Deutschland zählen wir 2026 bis jetzt 416 Stunden mit negativem Börsenpreis, der Tiefstwert lag bei -500 EUR/MWh (eigene ENTSO-E-Auswertung). Wichtig für deine Erwartung: Der Börsenpreis ist nur ein Teil deiner Rechnung — Netzentgelte, Abgaben und Steuern kommen obendrauf und sind meist nicht stundenabhängig. Deine Ersparnis entsteht also auf dem Börsenanteil, nicht auf dem ganzen Arbeitspreis.

Die naive Regel 'Preis unter X Cent → an' produziert Takten und zerlegt dir Kompressoren. Baue stattdessen ein: eine Mindestlaufzeit pro Einschaltvorgang, eine Sperrzeit nach dem Ausschalten, und ein Block-Fenster, falls dein Gerät zusammenhängend laufen muss (Waschmaschine: 3 Stunden am Stück, nicht 3 verteilte Einzelstunden). Und du brauchst einen Fallback: Wenn die API nicht antwortet, darf die Wärmepumpe nicht 24 Stunden aus bleiben — dann gilt ein fest hinterlegter Standard-Fahrplan.

Wenn du nicht in C++ schreiben willst: ESPHome flasht den ESP32 mit einer YAML-Datei, holt Preise per HTTP-Request-Sensor und schaltet ein GPIO. Home Assistant hat fertige Integrationen für die gängigen dynamischen Tarife und übernimmt die Preis-Sortierung, während der ESP32 nur noch das Relais ist. Das ist der schnellere Weg zum ersten funktionierenden Aufbau — den eigenen Sketch kannst du danach immer noch bauen.
Eine PDF-Anleitung, die du in einem halben Jahr noch verstehst, enthält: Stückliste mit Bezugsquellen, einen Klemmenplan (welches GPIO auf welchen Relais-Kanal), die verwendete API samt Endpunkt und Abrufzeitpunkt, deine Schaltparameter (Schwelle, Mindestlaufzeit, Sperrzeit), das Fallback-Verhalten bei API-Ausfall sowie einen Sicherheitsabschnitt zur 230-V-Trennung. Ergänze eine Beispiel-Preiskurve eines echten Tages und darunter, was deine Logik daraus geschaltet hätte — das ist der Test, der zeigt, ob die Regel taugt.