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, 3 Raspberry Pi, signalduino, nanoCUL,  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, 3 Raspberry Pi, signalduino, nanoCUL,  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

Prof. Dr. Peter Henning

Tja. Wir haben jetzt seit Wochen Dunkelflaute in Deutschland. Die Preise von aWATTar liegen deutlich über den Kosten für konventionelle Stromtarife - etwa 30%.

Und der Stromverbrauch in Deutschland ist einer der schmutzigsten in ganz Europa.

LG

pah

Reinhart

In AT ist das auch nicht besser, im Augenblick sind die Börsenpreise sehr hoch. Ich nutze dein Modul von Start weg, vor allem die Funktion "lowest4" dient mir zur Aufladung der Akkus mittels externem Netzteil. Ich habe das zusätzlich mit "sunshine" (Sonnenscheindauer, Wettervorhersage) für den nächsten Tag verknüpft. Bei "shunshine" von mehr als 30 wird nix geladen auch wenn er billig ist, unter 30 schon.

Ich habe einige Zeit gebraucht mich auf den dynamischen Stromtarif einzustellen, denn es ist nicht notwendig möglichst wenig Strom zu verbrauchen und Nachts aus dem Akku zu versorgen, sondern die Verbrauchszeiten zu verschieben. D.h. ich versuche meinen Stromverbrauch einfach zu günstigen Zeitpunkten zu verlegen und bei Pensionisten ist das sehr einfach. Es ist egal ob die Waschmaschine am Vormittag läuft oder zur billigen Mittagszeit. Nachts lade ich meinen 6 Kw Akku und wenn die Börsenpreise steigen wird automatisch dieser entladen. So kann ich die derzeit hohen Spitzen so halbwegs kompensieren.

Sehr behilflich ist mir da die Hardware von Zendure mit dem ACE-1500 mit dessen Hilfe ich die Börsendaten mit dem Markt-Modus automatisch verwalten kann. Mit Hilfe der Ländereinstellung werden die jeweils aktuellen Börsenpreise für das entsprechende Land geholt. Zwischen Deutschland und Österreich sind hier große Unterschiede!

Ein großes Problem ist bei allen Varianten, wann soll geladen werden? Wenn die Börsenpreise hoch sind sind ja Preise von unter 18 Cent noch ideal zur Ladung des Akkus wenn diese dann in den Abendstunden über 40 Cent hochklettern. Bei niedrigeren Preisen lade ich normalerweise aus dem Netz erst unter 5 Cent (ich bekomme bei Dunkelphasen sonst die Akkus nicht voll). 

Bei diesen schwankenden Preisen ist für mich nicht alleine der Preis wichtig, sondern das Delta um kostengünstig zu steuern. Wenn heute 18 Cent als günstig erscheinen, kann dies morgen 5 Cent sein. Auf jeden Fall "lowest4" unter Betrachtung der Maximumwerte gibt hier den günstigsten Zeitpunkt wann geladen werden soll (oder eben Waschmaschine einschalten etc.).
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

herbert19

Habe wie im Wiki beschrieben alles eingerichtet. Leider werden die Werte nur 1 Mal ab der aktuellen vollen Stunde geholt.
Ich habe noch nicht verstanden was
"Wichtig ist daher, ein externes Device anzulegen (z.B. mit dem at-Modul oder mit dem YAAHM-Modul), das um kurz vor Mitternacht die neuen, ab Mitternacht gültigen Strompreise holt."
 bedeutet. Ist das irgendwo beschrieben?
LG Herbert