NEWS
Tibber Strompreis Simulation
-
Hallo,
ich spiele mit dem Gedanken, meinen Stromanbieter zu Wechsel, da ich jedoch aktuell noch einen Vertrag habe, wollte ich die Zeit nutzen und schauen wie effektiv ich meine Verbraucher einstellen kann und ob sich das lohnt. Kennt jemand einen Adapter oder ein Skript, mit dem ich meinen Stundenverbrauch ausrechnen kann und dieses dann mit dem aktuellen Tibber Strompreis addieren kann?
Zählerstand habe ich im IO drin. Somit müsste man ja nur zur vollen Stunde hin gehen und den Zählerstand minus den vorherigen rechen und das dann mit dem aktuellen Preis. Jemand da eine Idee? -
@mosel-1992 sagte: Jemand da eine Idee?
-
@paul53
das ist leider nicht was ich suche... den Adapter habe ich am laufen, aber der bringt mir ja nur die Werte von Tibber und die Verbrauchswerte, nur wenn ich bereits da Kunde bin. Ich würde ja gerne die Verbrauchswerte von meinem jetzigen Zähler auswerten, was der Pro stunde verbraucht hat und dann die Preise Simulieren. -
@mosel-1992 sagte: nur wenn ich bereits da Kunde bin.
https://api.awattar.de/v1/marketdata liefert jede Stunde die Preise der nächsten 24 Stunden.
19:00 Uhr
[{'hour':19,'price':0.082},{'hour':20,'price':0.078},{'hour':21,'price':0.067},{'hour':22,'price':0.061},{'hour':23,'price':0.049},{'hour':0,'price':0.03},{'hour':1,'price':0.025},{'hour':2,'price':0.021},{'hour':3,'price':0.003},{'hour':4,'price':0},{'hour':5,'price':0},{'hour':6,'price':0.024},{'hour':7,'price':0.045},{'hour':8,'price':0.049},{'hour':9,'price':0.037},{'hour':10,'price':0.034},{'hour':11,'price':0.026},{'hour':12,'price':0.024},{'hour':13,'price':0.012},{'hour':14,'price':0.011},{'hour':15,'price':0.017},{'hour':16,'price':0.017},{'hour':17,'price':0.035},{'hour':18,'price':0.039}]
@mosel-1992 sagte in Tibber Strompreis Simulation:
Verbrauchswerte von meinem jetzigen Zähler auswerten
Der Zählerstand ist in ioBroker verfügbar?
-
Ja korrekt.
Also das ich den aktuellen Verbrauch meines Hauses pro Stunde.
Also z.B Zählerstand aktuell - Zählerstand vor 1 Stunde = Verbrauch 19-20h
und das würde ich dann gerne im Anschluss mit den Preisen Verrechnen
Also Verbrauch 19-20 h * Preis 19-20h = Kosten 19-20 h.
Das soll halt immer zur vollen Stunde berechnet werden und in eine Objekt gespeichert werden. -
@mosel-1992 sagte: immer zur vollen Stunde berechnet werden und in eine Objekt gespeichert werden.
-
@paul53 vielen Dank schon mal, dass sieht schon mal sehr gut aus.
Du addierst ja jetzt die Kosten Pro stunde immer auf.
Hast du auch eine Idee, wie ich die Ergebnisse speichern kann?
Also das er mir einen Oberpunkt in den Objekten mit dem Datum anlegt und darunter gibt es dann 0-23 und dort sind immer die Werte Preis aktuell, Verbrauch und Kosten für die Stunde angeben ? Dann kann ich mir das nachher auch schön in Grafiken anzeigen lassen.
Es hängt jedoch bei mir daran, wie ich automatisch in Objekte die Punkte erstelle und das das Skript weiß, welcher Uhrzeit es aktuell ist und dann in den ordern schreibt -
@mosel-1992 sagte: wie ich automatisch in Objekte die Punkte erstelle und das das Skript weiß, welcher Uhrzeit es aktuell ist und dann in den ordern schreibt
Ein Datenpunkt für die Kosten der letzten Stunde genügt. Den Verlauf ermittelt man mittels Historisierung.
@mosel-1992 sagte in Tibber Strompreis Simulation:
Du addierst ja jetzt die Kosten Pro stunde immer auf.
Das ist der kumulative Wert der Kosten.
-
super danke dir schon mal. also aktuell klappt es soweit, nur der Strompreis ist der falsch.... er hat aktuell 6 Cent? das kann nicht stimmen oder?
-
@mosel-1992 muss mich korrigieren, der Preis stimmt, es fehlen nur die Nebenkosten. Die muss ich jetzt mal herausfinden, wie die sich rechnerisch zusammensetzen.
Wenn man bei dem Zeitplan sagt alle 60 Minuten, macht er das dann immer zur vollen Stunde oder ab dem Moment wo das Skript läuft immer alle 60 min ?
-
@mosel-1992 sagte: er hat aktuell 6 Cent? das kann nicht stimmen oder?
Es ist der Arbeitspreis ohne Umsatzsteuer.
@mosel-1992 sagte in Tibber Strompreis Simulation:
Wenn man bei dem Zeitplan sagt alle 60 Minuten, macht er das dann immer zur vollen Stunde
Ja, zur vollen Stunde.
-
Hast du eine Erklärung, wieso die Preise auf einmal mit Tibber nicht mehr übereinstimmen? Also genau bei der 0 Uhr abfrage?
Hier mal das Ergebnis der URL
{ "object": "list", "data": [ { "start_timestamp": 1703113200000, "end_timestamp": 1703116800000, "marketprice": 30.16, "unit": "Eur/MWh" }, { "start_timestamp": 1703116800000, "end_timestamp": 1703120400000, "marketprice": 25.08, "unit": "Eur/MWh" }, { "start_timestamp": 1703120400000, "end_timestamp": 1703124000000, "marketprice": 20.9, "unit": "Eur/MWh" }, { "start_timestamp": 1703124000000, "end_timestamp": 1703127600000, "marketprice": 3.48, "unit": "Eur/MWh" }, { "start_timestamp": 1703127600000, "end_timestamp": 1703131200000, "marketprice": 0.07, "unit": "Eur/MWh" }, { "start_timestamp": 1703131200000, "end_timestamp": 1703134800000, "marketprice": 0.33, "unit": "Eur/MWh" }, { "start_timestamp": 1703134800000, "end_timestamp": 1703138400000, "marketprice": 23.85, "unit": "Eur/MWh" }, { "start_timestamp": 1703138400000, "end_timestamp": 1703142000000, "marketprice": 45.12, "unit": "Eur/MWh" }, { "start_timestamp": 1703142000000, "end_timestamp": 1703145600000, "marketprice": 48.96, "unit": "Eur/MWh" }, { "start_timestamp": 1703145600000, "end_timestamp": 1703149200000, "marketprice": 37.24, "unit": "Eur/MWh" }, { "start_timestamp": 1703149200000, "end_timestamp": 1703152800000, "marketprice": 34.29, "unit": "Eur/MWh" }, { "start_timestamp": 1703152800000, "end_timestamp": 1703156400000, "marketprice": 26.05, "unit": "Eur/MWh" }, { "start_timestamp": 1703156400000, "end_timestamp": 1703160000000, "marketprice": 23.51, "unit": "Eur/MWh" }, { "start_timestamp": 1703160000000, "end_timestamp": 1703163600000, "marketprice": 11.56, "unit": "Eur/MWh" }, { "start_timestamp": 1703163600000, "end_timestamp": 1703167200000, "marketprice": 10.53, "unit": "Eur/MWh" }, { "start_timestamp": 1703167200000, "end_timestamp": 1703170800000, "marketprice": 16.8, "unit": "Eur/MWh" }, { "start_timestamp": 1703170800000, "end_timestamp": 1703174400000, "marketprice": 16.95, "unit": "Eur/MWh" }, { "start_timestamp": 1703174400000, "end_timestamp": 1703178000000, "marketprice": 35.08, "unit": "Eur/MWh" }, { "start_timestamp": 1703178000000, "end_timestamp": 1703181600000, "marketprice": 39.34, "unit": "Eur/MWh" }, { "start_timestamp": 1703181600000, "end_timestamp": 1703185200000, "marketprice": 48.49, "unit": "Eur/MWh" }, { "start_timestamp": 1703185200000, "end_timestamp": 1703188800000, "marketprice": 40.97, "unit": "Eur/MWh" }, { "start_timestamp": 1703188800000, "end_timestamp": 1703192400000, "marketprice": 33.15, "unit": "Eur/MWh" }, { "start_timestamp": 1703192400000, "end_timestamp": 1703196000000, "marketprice": 28.77, "unit": "Eur/MWh" }, { "start_timestamp": 1703196000000, "end_timestamp": 1703199600000, "marketprice": 6.05, "unit": "Eur/MWh" } ], "url": "/de/v1/marketdata" }
Bei Tibber ist der höchste Preis heute 29,21 und hier das sind ja Preise ohne die Nebenkosten. Habe ich hier irgend einen Denkfehler?
-
ahhh, das war dumm... wie war das in der Schule, Vorzeichen und Einheiten können leben retten ...
es sind €/MWh
-
Hat noch jemand eine schönere Idee für den Abruf der Strompreise?
Ich habe es jetzt so gemacht, dass er nachts um 0 Uhr die Preise abruft und dann hingeht und
Preis 0 Uhr = data.0.marketprice
Preis 1 Uhr = data.1.marketprice
.
.
.
usw...Dann haben ich noch einen Träger für 1 Uhr erstellt, da setzt er mir dann data.23.marketprice auf Preis Morgen 0 Uhr und um 2 Uhr dann data.23.marketprice auf Morgen 1 Uhr usw.
was natürlich a ein riesen Skript ist und b sehr unflexibel vor allem, wenn man wie jetzt einen Fehler drin hat, muss ich ja bis 0 Uhr heute nacht warten, bis alles wieder stimmt.Gibt es eine schöne Lösung, dass er immer hin geht und weiß, ah jetzt ist es 8 Uhr, jetzt schreibe ich die Werte fortlaufend auf die nächsten 24 h. also data.0.marketprice ist dann 8 Uhr und data.1.marketprice ist 9 Uhr usw... Ohen das ich jetzt den Riesen block von 0 Uhr kopiere und auf jede Uhrzeit übertrage?
-
@paul53 said in Tibber Strompreis Simulation:
@mosel-1992 sagte: immer zur vollen Stunde berechnet werden und in eine Objekt gespeichert werden.
Kannst du mir erklären, wieso du das Url Request zwei mal im Ablauf hast, also wieso unten noch mal ?
-
@mosel-1992 sagte: wieso du das Url Request zwei mal im Ablauf hast
Einmal bei Skriptstart und einmal jede volle Stunde für die Berechnung der Kosten zur nächsten vollen Stunde.
-
@paul53 said in Tibber Strompreis Simulation:
@mosel-1992 sagte: wieso du das Url Request zwei mal im Ablauf hast
Einmal bei Skriptstart und einmal jede volle Stunde für die Berechnung der Kosten zur nächsten vollen Stunde.
Ok, müsste der dann aber nicht am Anfang kommen, also hinter dem Zeit trigger? Damit wenn die Vollstunde da ist, er die aktuellen Werte abruft und dann diesen schreibt? Oder habe ich hier einen denkfehler?
-
Nur damit ich es richtig verstehe und keinen Gedankenfehler drin habe. Ich geh aktuell in einem anderen Skript hin und frage dort zu bestimmten Zeiten die die Werte ab und schreibe Sie mir in Variablen und setze diese dann von der Zeit abhängig ein.
Hier muss aber doch die Requestabfrage als oberstes kommen oder? Der geht die Sachen doch nach der reihe durch und wenn ich das ans ende schreibe, dann hat er doch die Variablen nicht ?
-
@mosel-1992 sagte: hinter dem Zeit trigger?
Berechnet werden muss mit dem Preis der abgelaufenen Stunde. Erst danach kann der Preis aktualisiert werden.
-
Wenn man die historischen Börsenpreise der letzten Monate bereits in einer InfluxDB (2) hat, könnte man das zusammen mit seinen Zählerdaten auch grafisch darstellen:
Gebraucht werden dafür die Zählerstände, Börsenpreisdaten sowie die Tibber Nebenkosten pro Monat und kWh. Zum grafischen Vergleich noch die kWh Preise + mtl. Grundkosten (klassisch).
import "timezone" import "date" option location = timezone.location(name: "Europe/Berlin") zeitraum=-4mo mmntZaehlerstand="ZaehlerStand" //Measurement für den Zählerstand mmntMarktdaten="Marketdata" //Measurement für die stündl. Börsenstrompreis tbrNebenkosten=0.1462 // Tibber: durchschnittl. Nebenkosten in EUR pro kWh (https://tibber.com/de?modal=preisrechner) tbrGrundpreis=14.53 // Tibber: Nebenkosten in EUR pro Monat (https://tibber.com/de?modal=preisrechner) arbeitspreis=0.2528 // klassisch: fixer Arbeitspreis in EUR/kWh grundpreis=23.69 // klassisch: Grundpreis pro Monat // Query stündlicher Stromverbrauch verbrauch = from(bucket: "iobroker") |> range(start:date.truncate(t:zeitraum, unit:1mo)) |> filter(fn: (r) => r["_measurement"] == mmntZaehlerstand) |> filter(fn: (r) => r["_field"] == "value") |> difference() |> aggregateWindow(every: 1h,fn:sum,timeSrc: "_start",createEmpty:false) // Query stündliche Strompreisdaten preis = from(bucket: "iobroker") |> range(start: date.truncate(t:zeitraum, unit:1mo)) |> filter(fn: (r) => r["_measurement"] == mmntMarktdaten) |> keep (columns:["_value","_time"]) |> aggregateWindow(every: 1h,fn:max,timeSrc: "_start",createEmpty:false) |> map(fn: (r) => ({ r with _value: r._value/1000.0 })) // Query für klassische Kosten kosten=verbrauch |> map(fn: (r) => ({ _time: r._time, _value: r._value * arbeitspreis})) |> aggregateWindow(every: 1mo,fn:sum,timeSrc: "_start",createEmpty:false) |> map(fn: (r) => ({ _time: r._time, _value: r._value + grundpreis})) |> rename(columns: {_value: "Hauspreis"}) |> keep(columns: ["_time", "Hauspreis"]) // Zusammenführen der Abfragen und Berechnung der Kosten für Tibber tibber=join(tables: {verbrauch: verbrauch, preis: preis},on: ["_time"]) |> map(fn: (r) => ({ _time: r._time, _value: r._value_verbrauch * (r._value_preis+tbrNebenkosten)})) |> aggregateWindow(every: 1mo,fn:sum,timeSrc: "_start",createEmpty:false) |> map(fn: (r) => ({ _time: r._time, _value: r._value + tbrGrundpreis})) |> rename(columns: {_value: "Tibber"}) // Hinzufügen der klassischen Strompreiskosten join(tables: {tibber: tibber, kosten: kosten},on: ["_time"])
Das Ganze ist nicht qualitätsgesichert! Am besten mal selbst durchspielen, ob das passt.