Hypothetischer Kunde bei aWATTar

Begonnen von Prof. Dr. Peter Henning, 31 Januar 2024, 12:34:41

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Da ich dem noch nicht ganz traue, habe ich jetzt ein Device, das mir den hypothetischen Strompreis angibt, den ich bei aWATTar zahlen würde.

Dazu benötigt man als erstes ein HTTPMOD-Device:


(Aktualisierter Code siehe oben)

Dieses Device legt bis zu 36 Readings mit den jeweils gültigen Arbeitspreisen an, diese berechnen sich aus Netzentgelten (bei mir 16.71 Cent/kWh, abgelegt im Attribut netzentgelte) und dem Börsenpreis. Dazu gibt es in meiner 99_EnergyUtils.de drei Funktionen:

(Aktualisierter Code oben)

Die erste Funktion wandelt den von aWATTar gelieferten timestamp in etwas Lesbares um, die zweite wird zur Preisberechnung eingesetzt, die dritte Funktion extrahiert aud den Daten den momentan gültigen Arbeitspreis.

Das HTTPMOD hat zwei Get-Befehle: get data_today und get data_tomorrow. Die unterscheiden sich im Startdatum, wenn man also die gültigen Strompreise für HEUTE haben will, ruft man get data_today auf. Das ist insofern wichtig, als man natürlich an jedem Tag kurz vor Mitternacht (sagen wir um 23:59) ein get data_tomorrow ausführen muss, um die Daten ab Mitternacht zu holen. Und die gelten dann jeweils bis zur nächsten Mitternacht.

Ferner gibt es ein userReading touch. Das wird durch ein zusätzliches at-Device immer zur vollen Stunde angetriggert, um dann den für diese kommende Stunde gültigen Arbeitspreis aus den aWATTar-Readings in das userReading arbeitspreis zu extrahieren. Das erschien mir sinnvoller, als alle 60 Minuten bei aWATTar anzufragen.
defmod eCostTicker2 at +*01:00 setreading aWATTar touch now
attr eCostTicker2 alignTime 00:00
attr eCostTicker2 group energyCost
attr eCostTicker2 room Energie

Das Device zeigt also immer sehr schön den aktuellen Arbeitspreis an. Letztes Puzzleteil: Ein DOIF, mit dem jeweils bei Änderung der am Zähler gemessenen Energie (E.Verb, reading energy) das Reading sumD in dem aWATTar-Device aktualisiert:


(Aktualisierter Code siehe oben)

So, das Ganze funktioniert also schon recht gut, bietet aber noch ne Menge Raum für Optimierung - die Mimik ist noch etwas kompliziert.


 Lustiges Resultat heute: Mit meine Stromanbieter (Vattenfall) hätte ich heute bisher 1,52 € gezahlt, mit aWATTar 1,68 €.

LG

pah


carlos

Eine Frage noch wie sieht dein Vattenfall device aus?
Ich bin im Moment auch bei Vattenfall und überlege zu wechseln.
Bin mir allerdings nicht im klaren ob zu tibber oder aWATTar und ob es sich lohnt.

gruß

Hubert
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Prof. Dr. Peter Henning

#2
Das ist so trivial, dass ich ein Posting gar nicht für nötig gehalten hatte - ein einfaches Dummy-Device. Also hier noch einmal komplett

Vattenfall-Device:
defmod Vattenfall dummy
attr Vattenfall group energyCost
attr Vattenfall icon measure_power
attr Vattenfall readingList basispreis arbeitspreis
attr Vattenfall room Energie
attr Vattenfall setList basispreis arbeitspreis
attr Vattenfall stateFormat sumD € (arbeitspreis Cent/kWh)
attr Vattenfall userReadings sumD:none {}

(Code gelöscht, siehe Wiki)
pah

carlos

Dachte ich mir fast, aber ich wollte sicher gehen.
Danke

Gruß

Hubert
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Prof. Dr. Peter Henning

So, ich habe den Code jetzt noch etwas konsolidiert und in einen Wiki-Artikel eingebaut (ist noch nicht ganz fertig, mache ich heute noch).

https://wiki.fhem.de/wiki/AWATTar_-_Virtueller_Stromkunde

Alle Codebeispiele weiter unten in diesem Thread werde ich löschen.

LG

pah

satprofi

Hallo .
Danke für den Wiki-Beitrag. Aber so ganz verstehe ich die Berechnung nicht. Gehe ich richtig in der Annahme das du stündlich die Kosten deines Verbrauches errechnest?
Wenn ja, das mache ich auch, aber ein bisschen anders.



define  DI_Stromkosten_smartenergy DOIF ([:59]) ({my $sld = (ReadingsNum('SHRDZM_xxxxxxxxxxx','gesamt_Bezug_kWh','')); fhem("setreading DI_Stromkosten_smartenergy volle_Stunde $sld");})
DOELSEIF ([:00]) ({my $sld = (ReadingsNum('DI_Stromkosten_smartenergy','Euro','')); fhem("setreading Stromkosten_smartenergy Euro $sld");})
DOELSE

attr DI_Stromkosten_smartenergy userReadings last_hour:volle_Stunde:.* {ReadingsNum("$name","volle_Stunde",0) - ReadingsNum("$name","Zaehlerstand",0) },
Euro_last_hour:volle_Stunde:.* {ReadingsNum("$name","last_hour",0) * ReadingsNum("Strompreis_heute","now",0)/100 },
Zaehlerstand:last_hour:.* {ReadingsNum("$name","Zaehlerstand",0) + ReadingsNum("$name","last_hour",0)},
Euro:volle_Stunde:.* {ReadingsNum("$name","Euro",0)  + ReadingsNum("$name","Euro_last_hour",0)},
Gesamt:volle_Stunde:.* {ReadingsNum("$name","Gesamt",0) + ReadingsNum("$name","last_hour",0)}
attr DI_Stromkosten_smartenergy stateFormat {sprintf ("%0.2f",ReadingsNum("DI_Stromkosten_smartenergy","Euro",0) )}

SHRDZM_xxxxxxx ist Ablesung am Smartmeter
Strompreis lese ich bei meinem Anbieter über JsonMod  https://apis.smartenergy.at/market/v1/price ein.

Bin mit perl nicht so bewandert, deshalb studiere ich deine Scripte noch, um sie evt. zu verstehen ;-)

LG
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Prof. Dr. Peter Henning

#6
Zitatstündlich die Kosten deines Verbrauches errechnest?
Nein. Jedesmal bei Eintreffen eines neuen Verbrauchsmesswertes, also sehr viel häufiger. Typisches Zeitintervall 5 Minuten.

Zu jeder vollen Stunde wechselt nur der Tarif, darum muss ggf. interpoliert werden.

Außerdem hole ich die Preise nur einmal pro Tag.

LG

pah

satprofi

Hallo.
Preis hol ich auch nur 1x , um 00:01.
Verbrauch hol ich alle Stunde, weil Preis sich ja innerhalb der Stunde ja nicht ändert, in AUT.

LG
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Prof. Dr. Peter Henning

Offenbar hat aWATTar mit dem Ablauf des Monats März 2024 irgendetwas bei den Daten geändert. Wie mir jetzt aufgefallen ist, hat seit Anfang April das Holen der Daten kurz vor Mitternacht nicht mehr den Preis ab 0:00 geholt, sondern ab 01:00 Uhr. Das kann man korrigieren, indem in die Zeitberechnung beim Aufruf statt 3600 (Sekunden) 2*3600 (Sekunden) eingetragen werden.
replacement01Mode expression
replacement01Regex %%start_tomorrow%%
replacement01Value (timelocal(localtime(time()-time()%86400+86400))-2*3600)."000"

replacement02Mode expression
replacement02Regex %%start_today%%
replacement02Value (timelocal(localtime(time()-time()%86400))-2*3600)."000"

Schreibe ich demnächst noch ins Wiki.

LG

pah

satprofi

Sommerzeit?
Aber nicht nur awattar, bei smartenergy bekommt man die readings auch erst ab 21:00 statt wie vorher um 17:00.

LG
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Prof. Dr. Peter Henning

Ach, na klar - war ja Sommerzeit-Umstellung, danke für die Erinnerung.
Ich überlege noch, wie ich das am sinnvollsten in das Device einbaue. Die Abfrage ist jedenfalls ein Einzeiler:
my ($isdst)=localtime();


LG

pah