Dynamische Strompreise ENTSO-E Binding

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
der_pman
Beiträge: 13
Registriert: 26. Jul 2021 19:27
Answers: 0

Dynamische Strompreise ENTSO-E Binding

Beitrag von der_pman »

Hallo zusammen,

ab 01.04. wird endlich (nach 6 Monaten) der viertelstündliche Strompreis aktiviert.
Um überhaupt erst einmal die Daten in Richtung openhab zu bekommen, habe ich das ENTSO-E Binding installiert und konfiguriert incl. API.Key.

Im Log sehe ich, das Werte geholt werden und das Binding einen Cron-Job angelegt hat.

Code: Alles auswählen

pi@raspberrypi:/var/log/openhab $ cat events.log | grep Spot
2026-03-05 23:09:21.459 [INFO ] [openhab.event.ItemTimeSeriesEvent   ] - Item 'Strompreise_SpotmarktPreis' shall process time series with 288 values.
2026-03-05 23:09:21.941 [INFO ] [hab.event.ItemTimeSeriesUpdatedEvent] - Item 'Strompreise_SpotmarktPreis' updated time series with 288 values.
pi@raspberrypi:/var/log/openhab $ cat openhab.log | grep cron
2026-03-05 23:09:19.100 [INFO ] [ntsoe.internal.handler.EntsoeHandler] - Schedule cron with pattern 0 0 13 ? * * *
pi@raspberrypi:/var/log/openhab $
Das vom Channel vorgeschlagene Item ist vom Typ Number:EnergyPrice.
Im openhab-community-forum habe ich schon gesucht und gefunden, da es sich um ein ein Objekt vom Typ "Time series" handeln soll, muss es irgendwie in meine influxdb kommen.
Allerdings habe noch keinen "Zippel" gefunden an dem ich mich langhangeln könnte.
Hat einer von Euch dieses Binding schon in Verwendung oder holt auf anderem Weg die 15-Minuten Preise von der Strombörse?

Gruß der_pman
Ich weis das ich nix weis - und davon eine ganze Menge ;)

Benutzeravatar
udo1toni
Beiträge: 15666
Registriert: 11. Apr 2018 18:05
Answers: 254
Wohnort: Darmstadt

Re: Dynamische Strompreise ENTSO-E Binding

Beitrag von udo1toni »

Das Stichwort nach dem Du suchen musst ist vermutlich forecast. Das Item liefert eine Tabelle mit zukünftigen Werten. Meines Wissens gibt es passende Strategies, um solche forecst Daten auch zu persistieren und vor allem auszuwerten (Maximum und Minimum bis zu einem Zeitpunkt x in der Zukunft).

Ich habe das selbst aber nicht im Einsatz, ist also nur graue Theorie.
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.6 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

der_pman
Beiträge: 13
Registriert: 26. Jul 2021 19:27
Answers: 0

Re: Dynamische Strompreise ENTSO-E Binding

Beitrag von der_pman »

Moin alle zusammen,

ich bin jetzt schon ein Stück weiter und habe die "reinen Spot-Preise" in der Datenbank (influx 1).
Dazu habe ich eine neue Konfiguration für das Item angelegt.
entsoe.jpg
Jetzt wird auch der aktuelle viertel Stundenpreis in der Sitemap angezeigt.
Nächster Schritt ist jetzt den Preis mit Abgaben und Steuern auf den echten kWh-Preis zu bringen.
Soweit ich das gelesen (und hoffentlich verstanden) habe geht das über ein Item vom Typ "SUM".

Wenn ich weiter gekommen bin, werde ich berichten.

Gruß der_pman
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Ich weis das ich nix weis - und davon eine ganze Menge ;)

Benutzeravatar
udo1toni
Beiträge: 15666
Registriert: 11. Apr 2018 18:05
Answers: 254
Wohnort: Darmstadt

Re: Dynamische Strompreise ENTSO-E Binding

Beitrag von udo1toni »

der_pman hat geschrieben: 8. Mär 2026 11:05 Nächster Schritt ist jetzt den Preis mit Abgaben und Steuern auf den echten kWh-Preis zu bringen.
Soweit ich das gelesen (und hoffentlich verstanden) habe geht das über ein Item vom Typ "SUM".
Vermutlich bringst Du da etwas durcheinander.
Es gibt für Group Items die Option, als Status eine Funktion über die Items zu verwenden, z.B. Summe, Durchschnitt, Maximum usw.
Gewöhnlich wird man wissen wollen, wann der Strom am günstigsten ist, das geht mit .minimumUntil(Endzeit), es wird ein historicItem zurückgegeben, das heißt, Du bekommst sowohl den Preis als auch den Zeitpunkt zurück.

Falls zum Spotmarktpreis noch fixe Anteile hinzukommen, musst Du für den Endpreis lediglich eine passende Formel implementieren.
Wenn das Item vom Typ Number:EnergyPrice ist, bekommst Du den Preis pro Energie zurück, d.h. mitsamt der Einheit, also z.B. €/kWh. Da es sich dann um einen QuantityType Datentyp handelt, musst Du beim berechnen entweder die Einheit strippen und "klassisch" rechnen, oder Du nimmst den QuantityType und rechnest mit den zugehörigen Funktionen, also z.B.

Code: Alles auswählen

Kosten = (PreisProkWh.state as QuantityType).multiply(Verbrauch.state as QuantityType)
Das Ergebnis sollte dann die aufgelaufenen Kosten enthalten.
Allerdings funktioniert das natürlich nur für statische Werte, wenn beide Werte (Preis und Energie) variabel sind, muss man für jeden Zeitabschnitt getrennt rechnen, das wird schnell komplex.
Eine einfache Möglichkeit wäre aber, bei jeder Preisänderung den Zählerstand zu merken und bei jedem Wechsel die Differenz zum letzten Zählerstand zu bestimmen. Daraus ergibt sich die Energiemenge, die man dann mit dem zuletzt gültigen Preis multiplizieren kann. Diesen Wert schreibt man in ein Item, exakt einmal (also nicht zyklisch...). Und aus diesem Kosten-Item kann man dann die insgesamt aufgelaufenen Kosten aufsummieren, natürlich nur für die Vergangenheit (und nur soweit die Summen zur Verfügung stehen).
Für die aktuelle Zeitspanne kann man die laufenden Kosten auch dynamisch anzeigen, hier ist der Preis fix bis zum nächsten Wechsel und nur der Zählerstand ändert sich.

Der Forecast hingegen bezieht sich auf die Zukunft, damit kannst Du Dir z.B. die günstigste Zeit ausgeben lassen, um das E-Auto aufzuladen oder Wäsche zu waschen.
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.6 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

Antworten