Dynamischer Stromtarif in Home Assistant nutzen
Börsenstrompreise mit Nord Pool in Home Assistant holen, das günstigste Zeitfenster berechnen und Geräte automatisch in die billigen Stunden legen.
Von Nathan Base
Seit Anfang 2025 muss in Deutschland jeder Stromanbieter einen dynamischen Tarif anbieten, sofern Du ein intelligentes Messsystem hast. Bei so einem Tarif zahlst Du nicht mehr einen festen Preis je Kilowattstunde, sondern einen, der sich am Börsenstrompreis orientiert. Nachts und an windigen oder sonnigen Mittagen ist Strom oft deutlich billiger, am frühen Abend meist deutlich teurer.
Der Haken: Sparen kannst Du nur, wenn Du Deinen Verbrauch tatsächlich verschiebst. Niemand möchte jeden Nachmittag die Preise für den nächsten Tag lesen und dann von Hand Geräte einplanen. Genau das übernimmt Home Assistant. Diese Anleitung zeigt, wie Du die Börsenpreise holst, das günstigste Zeitfenster für ein Gerät berechnest und es dann automatisch einschaltest.
Stand ist Home Assistant 2026.11. Die Preise kommen aus der eingebauten Nord-Pool-Integration, die ohne Konto und ohne API-Schlüssel funktioniert.
Warum Nord Pool und nicht die App Deines Anbieters
Alle dynamischen Tarife in Deutschland basieren auf demselben Preis: dem Day-Ahead-Preis für das Marktgebiet Deutschland und Luxemburg. Er wird an der Börse jeden Tag gegen Mittag für den gesamten Folgetag festgelegt. Dein Anbieter rechnet darauf feste Bestandteile wie Netzentgelte, Steuern und seine Marge auf. Diese Aufschläge sind über den Tag gleich, deshalb ist die günstigste Stunde an der Börse auch die günstigste Stunde auf Deiner Rechnung.
Die Nord-Pool-Integration liefert genau diesen Börsenpreis und funktioniert unabhängig davon, bei welchem Anbieter Du bist. Wenn Dein Anbieter eine eigene Integration hat, etwa Tibber, kannst Du stattdessen die nehmen. Der Rechenweg weiter unten bleibt derselbe.
Eine Besonderheit seit Oktober 2025: Der Day-Ahead-Markt rechnet in Viertelstunden statt in Stunden. Pro Tag gibt es also 96 Preise statt 24. Die Vorlage in dieser Anleitung erkennt die Länge der Zeitabschnitte selbst und funktioniert mit beiden Varianten.
Nord Pool einrichten
- Öffne Einstellungen > Geräte & Dienste und klicke auf Integration hinzufügen.
- Suche nach Nord Pool und wähle es aus.
- Wähle als Gebiet GER und als Währung EUR.
Danach hast Du unter anderem diese Sensoren: den aktuellen Preis, den nächsten Preis, den Tagesdurchschnitt sowie den niedrigsten und den höchsten Preis des Tages. Alle Werte sind reine Börsenpreise in Euro je Kilowattstunde, ohne Mehrwertsteuer und Netzentgelte. Negative Preise sind möglich und kommen an sonnigen Feiertagen tatsächlich vor.
Für die Berechnung weiter unten brauchst Du die interne Kennung des Integrationseintrags. Du findest sie so: Öffne Entwicklerwerkzeuge > Aktionen, wähle die Aktion Nord Pool: Get prices for date, wähle im Feld für den Eintrag Deine Nord-Pool-Integration aus und wechsle dann oben rechts in den YAML-Modus. Dort steht hinter config_entry: eine lange Zeichenkette wie 01JEDAR1YEHJ6DZ376MP24MRDG. Kopier sie Dir.
Das günstigste Zeitfenster berechnen
Die meisten Geräte laufen nicht nur eine Viertelstunde. Ein Akku lädt drei Stunden, eine Waschmaschine braucht zwei. Dich interessiert also nicht die billigste einzelne Viertelstunde, sondern das billigste zusammenhängende Fenster in der gewünschten Länge.
Dafür legst Du einen Vorlagen-Sensor an, der die Preise von heute und morgen abruft und das Fenster ausrechnet. Öffne Deine configuration.yaml, zum Beispiel mit der App File editor, und füge diesen Block ein:
template:
- triggers:
- trigger: time
at: "14:00:00"
- trigger: homeassistant
event: start
- trigger: state
entity_id: input_boolean.akku_wartet
to: "on"
actions:
- action: nordpool.get_prices_for_date
data:
config_entry: 01JEDAR1YEHJ6DZ376MP24MRDG
date: "{{ now().date() }}"
areas: GER
currency: EUR
response_variable: heute
- action: nordpool.get_prices_for_date
data:
config_entry: 01JEDAR1YEHJ6DZ376MP24MRDG
date: "{{ now().date() + timedelta(days=1) }}"
areas: GER
currency: EUR
response_variable: morgen
sensor:
- name: Stromfenster Start
unique_id: stromfenster_start
device_class: timestamp
state: >
{% set dauer_stunden = 3 %}
{% set alle = heute['GER'] + morgen['GER'] %}
{% set n = namespace(p=[]) %}
{% for e in alle %}
{% if as_datetime(e.start) >= now() %}
{% set n.p = n.p + [e] %}
{% endif %}
{% endfor %}
{% set p = n.p %}
{% if p | count > 1 %}
{% set minuten = (as_datetime(p[1].start) - as_datetime(p[0].start)).total_seconds() / 60 %}
{% set k = (dauer_stunden * 60 / minuten) | int %}
{% set best = namespace(i=0, summe=none) %}
{% for i in range(0, p | count - k + 1) %}
{% set s = p[i:i + k] | sum(attribute='price') %}
{% if best.summe is none or s < best.summe %}
{% set best.i = i %}
{% set best.summe = s %}
{% endif %}
{% endfor %}
{{ as_datetime(p[best.i].start).isoformat() }}
{% else %}
{{ none }}
{% endif %}Ersetze die beiden Werte hinter config_entry: durch Deine Kennung. So arbeitet der Block:
- Wann er rechnet: jeden Tag um 14 Uhr, weil die Preise für den Folgetag dann sicher veröffentlicht sind, außerdem beim Start von Home Assistant und immer dann, wenn Du meldest, dass ein Gerät wartet. Dass er nicht ständig neu rechnet, ist Absicht: So bleibt der Startzeitpunkt stabil, und die Automation verpasst ihn nicht.
- Was er rechnet: Er holt die Preise von heute und morgen, verwirft alle Abschnitte, die schon begonnen haben, und schiebt dann ein Fenster von drei Stunden über die restlichen Preise. Das Fenster mit der kleinsten Summe gewinnt.
- Was herauskommt: ein Zeitstempel, ab dem das Gerät laufen soll. Vor 14 Uhr sind die Preise für morgen noch nicht da. Die Abfrage liefert dann eine leere Liste, und der Sensor rechnet nur mit dem Rest des heutigen Tages.
Die Laufzeit stellst Du in der Zeile dauer_stunden ein. Für mehrere Geräte mit unterschiedlicher Laufzeit legst Du den Sensor einfach mehrfach mit anderem Namen an.
Damit der Sensor auslösen kann, brauchst Du noch den Schalter input_boolean.akku_wartet. Leg ihn unter Einstellungen > Geräte & Dienste > Helfer > Helfer erstellen > Schalter mit dem Namen „Akku wartet“ an. Starte Home Assistant danach einmal neu, damit der Vorlagen-Sensor geladen wird.
Prüfen, ob die Berechnung stimmt
Öffne Entwicklerwerkzeuge > Zustände und suche nach sensor.stromfenster_start. Dort muss ein Zeitpunkt in der Zukunft stehen. Vergleiche ihn mit den Preisen: Der niedrigste Preis des Tages steht im Sensor für den niedrigsten Preis, und Dein Fenster sollte diese Zeit in der Regel enthalten oder direkt daneben liegen.
Steht dort „unbekannt“, öffne Einstellungen > System > Protokolle. Ein Fehler zur Aktion nordpool.get_prices_for_date bedeutet fast immer eine falsche Kennung hinter config_entry.
Die Automation: Gerät im günstigsten Fenster laden
Am einfachsten profitierst Du mit Geräten, die nur Strom brauchen und sich über eine schaltbare Steckdose steuern lassen, zum Beispiel ein E-Bike-Akku, eine Powerstation oder ein Warmwasserboiler mit Heizstab. Dafür eignet sich jede Steckdose, die Home Assistant schalten kann, etwa ein Shelly Plug S (Affiliate Link).
Der Ablauf im Alltag: Du steckst abends den Akku an und schaltest in der Home-Assistant-App „Akku wartet“ ein. Den Rest übernimmt diese Automation:
alias: Akku im günstigsten Fenster laden
mode: single
triggers:
- trigger: time
at: sensor.stromfenster_start
conditions:
- condition: state
entity_id: input_boolean.akku_wartet
state: "on"
actions:
- action: switch.turn_on
target:
entity_id: switch.ladegeraet
- delay:
hours: 3
- action: switch.turn_off
target:
entity_id: switch.ladegeraet
- action: input_boolean.turn_off
target:
entity_id: input_boolean.akku_wartetDer Auslöser trigger: time mit einem Sensor als Zeitpunkt feuert genau dann, wenn die im Sensor gespeicherte Zeit erreicht ist. Die Bedingung stellt sicher, dass nur geladen wird, wenn Du vorher gemeldet hast, dass ein Gerät wartet. Nach drei Stunden geht die Steckdose wieder aus, und der Schalter springt zurück.
Für eine Spülmaschine oder Waschmaschine funktioniert eine Steckdose meist nicht, weil die Geräte nach dem Einschalten nicht von selbst ein Programm starten. Hast Du ein Gerät mit Fernstart, etwa über die Home-Connect-Integration bei Bosch und Siemens, ersetzt Du den Schaltbefehl durch die Startaktion des Geräts. Der Rest der Automation bleibt gleich.
Mit welchen Ersparnissen Du rechnen kannst
Sei realistisch: Die Spanne zwischen den günstigen und den teuren Stunden eines Tages liegt meist bei 5 bis 20 Cent je Kilowattstunde, an manchen Tagen auch darüber, an anderen fast bei null. Ein E-Bike-Akku mit 0,6 Kilowattstunden spart damit pro Ladung nur wenige Cent.
Richtig interessant wird die Rechnung bei großen Verbrauchern, die ohnehin flexibel sind:
| Verbraucher | Typische Energie je Vorgang | Ersparnis bei 10 Cent Spanne |
|---|---|---|
| E-Bike-Akku | 0,6 kWh | 6 Cent |
| Spülmaschine | 1 kWh | 10 Cent |
| Warmwasser mit Heizstab | 4 kWh | 40 Cent |
| Elektroauto, Ladung von 20 auf 80 Prozent | 35 kWh | 3,50 Euro |
Bei einem Elektroauto oder einer Wärmepumpe kommen schnell dreistellige Beträge im Jahr zusammen, beim Kleinkram eher nicht. Prüfe außerdem den Grundpreis: Ein dynamischer Tarif lohnt sich nur, wenn die Ersparnis höher ist als ein eventuell höherer Grundpreis und die Kosten für das intelligente Messsystem.
Wenn es nicht klappt
Der Sensor zeigt eine Zeit in der Vergangenheit. Das passiert, wenn Home Assistant lange nicht neu gerechnet hat, etwa weil der Akku-Schalter schon an war. Schalte ihn aus und wieder ein, dann rechnet der Sensor sofort neu.
Die Automation hat nicht ausgelöst. Prüfe in der Automation unter Traces, ob der Auslöser gefeuert hat und an der Bedingung gescheitert ist. Häufigste Ursache: Der Schalter „Akku wartet“ war zum Startzeitpunkt aus.
Die Preise für morgen fehlen auch nach 14 Uhr. Die Börse veröffentlicht in seltenen Fällen verspätet. Lass den Sensor durch Aus- und Einschalten des Schalters später noch einmal rechnen.
Kurz zusammengefasst
Mit der eingebauten Nord-Pool-Integration, einem Vorlagen-Sensor und einer kurzen Automation legst Du flexible Verbraucher zuverlässig in die günstigsten Stunden, ohne jeden Tag Preise zu lesen. Wenn Du zusätzlich eine Solaranlage hast, kombinierst Du das am besten mit dem eigenen Strom vom Dach. Wie Du ein Balkonkraftwerk dafür in Home Assistant einbindest, zeigt die Anleitung Balkonkraftwerk in Home Assistant: Hoymiles mit OpenDTU.
Weiterlesen.
-
Raspberry Pi & LinuxBalkonkraftwerk in Home Assistant: Hoymiles mit OpenDTU
Hoymiles-Wechselrichter lokal auslesen: OpenDTU auf einem ESP32 einrichten, per MQTT in Home Assistant einbinden und Solarstrom gezielt nutzen.
Nathan Base -
Raspberry Pi & LinuxHome Assistant: Drucker automatisch abschalten und Strom sparen
Eine Steckdose mit Strommessung erkennt, wann der Drucker nur im Standby hängt, und Home Assistant schaltet ihn nach einer Stunde ab. Mit Automation.
Nathan Base -
Digital LifestyleShelly Outdoor Plug S Gen3 im Test: smarte Außensteckdose
Shelly Outdoor Plug S Gen3 im Test: wetterfeste smarte Steckdose mit Strommessung, Matter und lokaler Steuerung ohne Cloud-Zwang.
Nathan Base -
Raspberry Pi & LinuxHome Assistant: Melden, wenn ein Sensor keine Daten mehr schickt
Leere Batterie oder Funkloch: Ein Template-Sensor in Home Assistant erkennt Sensoren, die seit Stunden schweigen, und eine Automation meldet sie.
Nathan Base -
Raspberry Pi & LinuxNode-RED auf dem Raspberry Pi installieren und absichern
Node-RED mit dem offiziellen Skript auf Raspberry Pi OS Trixie installieren, als Dienst starten, mit Passwort schützen und den ersten Flow bauen.
Nathan Base -
Raspberry Pi & LinuxZigbee in Home Assistant: ZHA oder Zigbee2MQTT?
ZHA oder Zigbee2MQTT für Home Assistant: konkrete Vor- und Nachteile aus der Community, bewertet, mit klarer Empfehlung und Einrichtung von ZHA.
Nathan Base