Reading Werte finden und vergleichen

Begonnen von whistler81, 25 April 2024, 20:45:30

Vorheriges Thema - Nächstes Thema

whistler81

Guten Abend,

ich komme bei einem Thema irgendwie nicht weiter...

Ich habe bereits erfolgreich aWATTar in mein FHEM intergriert, sodass ich die stündlichen Strompreise erhalte. Ich möchte nun zusätzlich rausfinden (und in ein eigenes Reading schreiben) wann die günstigsten 4h am Tag sind, und somit auch meine Wärmepumpe über ebus steuern.

Diese Werte sehe ich aktuell:

Energiepreis Niedrig->Hoch
00_treshold 6.60300
01_treshold 6.83800
02_treshold 6.88200
03_treshold 7.25600
04_treshold 7.39200


Energiepreis nach Stunde

abs_00_amount 8.35000
abs_01_amount 8.00000
abs_02_amount 7.74700
abs_03_amount 7.55600
abs_04_amount 7.44500
abs_05_amount 8.38600
abs_06_amount 10.16400
abs_07_amount 12.78100
abs_08_amount 11.21100

Ich möchte jetzt nichts anderes, als dass ich nach den Treshold Werte in den abs* Werten suche und mir in einem Reading die entsprechende Stunde ausgegeben wird. Ich steh da am Schlauch und schaffe das nicht....

Hätte jemand einen Ansatz für mich?

Vielen Dank
LG
Clemens

Prof. Dr. Peter Henning

1. Wie wurde aWATTar in FHEM integriert?

2. Was heißt "die Werte sehe ich"? In FHEM gibt es Readings, Internals und Attribute - also um was handelt es sich?

LG

pah

whistler81

wie wurde aWATTar in FHEM integriert?
Ich habe es so wie soviele mit HTTPMOD gemacht:
defmod aWATTar HTTPMOD https://api.awattar.at/v1/marketdata/current.yaml 3600


Bin mittlerweile schon weitergekommen, da ich nun die günstigsten Stunden mit einem Bash Script suche und so an FHEM übergebe
Anhand der günstigsten Stunde pro Tag (in meinem Fall am SOnntag) steuere ich die Vaillant Wärmepumpe zwecks "Legionellen Programm". Heute in der Nacht wird es zum 1. mal produktiv laufen, kann dann gerne berichten und auch den Code teilen - falls gewünscht.

Weitere geplante Anwendungsfälle:
Steuerung Warmwassbereitung nach Strompreis
Steuerung Heizung nach Strompreis


LG
Clemens

whistler81

Zitat von: Prof. Dr. Peter Henning am 27 April 2024, 14:57:131. Wie wurde aWATTar in FHEM integriert?

2. Was heißt "die Werte sehe ich"? In FHEM gibt es Readings, Internals und Attribute - also um was handelt es sich?

LG

pah

Guten Morgen, jetzt habe ich ja erst bemerkt, dass der Wiki Eintrag "Virtueller Stromkunde bei Awattar" von Ihnen ist - an diesen habe ich mich initial mal gehalten. Hier wäre es eben sehr interessant, die günstigste Stunde pro Tag extra auszuweisen um so Geräte steuern zu können.

LG
CLemens

Prof. Dr. Peter Henning

#4
Das geht aber viel einfacher mit einer kleinen Perl-Funktion, die ein Userreading befüllt:

Edit: Die Funktion habe ich hier herausgenommen und im Wiki dokumentiert. Dabei habe ich noch einen Fehler beseitigt, siehe dort.

LG

pah

P.S.: Bitte nicht ohne Grund den "Zitieren"-Button benutzen, das vervielfacht die Datenmenge im Forum. Der "Antworten"-Button ist oben.

whistler81

Vielen Dank für diesen Input!!

Geht klar wegen dem "Zitieren" ;)

LG
Clemens

satprofi

Zitat von: whistler81 am 27 April 2024, 22:44:19Bin mittlerweile schon weitergekommen, da ich nun die günstigsten Stunden mit einem Bash Script suche und so an FHEM übergebe
Anhand der günstigsten Stunde pro tag


LG
Clemens


hallo.
könntest du das script bitte teilen?

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

Der Ansatz mit der Suche nach "DER" günstigsten Stunde ist nicht optimal. Beispiel: Heute ergeben sich die folgenden Preise bei aWATTar
...
data12_price  21.5613
data13_price  19.5992
data14_price  17.8739
data15_price  17.7400
data16_price  18.6814
data17_price  21.4315
...
Wenn man also den niedrigsten Preis sucht, ist dies data15_price, gültig ab 14:00. Übergibt man das an FHEM und lässt ein Gerät 4 Stunden laufen, kommt man automatisch in die nachfolgende Hochpreiszone.

Merke: Der niedrigste Preis steht nicht notwendigerweise am Anfang der Niedrigpreiszone - er kann kann auch mittendrin oder gar am Ende liegen. Im vorliegenden Fall liefert mein Perl-Programm tatsächlich die Periode 12:00 - 16:00 als insgesamt günstigste Lösung.

Der einzig (einigermaßen) sichere Weg ist also tatsächlich, die vier günstigsten Tarife zu ermitteln und zeitlich zu sortieren.

Warum nur einigermaßen? Der Teufel liegt im Detail. Es könnte durchaus sein, dass der Preisverlauf über den Tag hinweg mehr als ein Minimum aufweist. Das könnte man im Perl-Code noch abfangen.

In einem erweiterten regelbasierten System würde das Programm die Antwort auf die Frage liefern: In welchem Zeitraum würde ein Gerät, das x Stunden in Betrieb sein muss, idealerweise gestartet?

Das kann man sogar noch weiter treiben. Denn manche Geräte kann man unterbrechen, andere nicht.

LG

pah

whistler81

Ja, da haben Sie vollkommen recht, dass DIE günstigste Stunde nicht die günstigste in Summe sein muss.

Ich habe bei aWATTar auch jene API gefunden, die für Loxone verwendet wird:
https://api.awattar.at/v1/marketdata/current.yaml
und diese API gibt einen "Treshold Wert" aus, der von der günstigsten Stunde am Tag (Treshold_00) bis zu teuersten Stunde(treshold_23) ab Tag aufsteigend dargestellt wird - für heute 01.05.2024 wäre dies wie folgt:
price_threshold_00: -10.59900
price_threshold_01: -10.51600
price_threshold_02: -8.26300
price_threshold_03: -7.26800
price_threshold_04: -3.60100
price_threshold_05: -1.95500
price_threshold_06: -0.09100
price_threshold_07: -0.05000
price_threshold_08: -0.01200
price_threshold_09: 1.00600
price_threshold_10: 1.86100
price_threshold_11: 2.52200
price_threshold_12: 3.09000
price_threshold_13: 3.46700
price_threshold_14: 3.81500
price_threshold_15: 4.23900
price_threshold_16: 4.40400
price_threshold_17: 4.40900
price_threshold_18: 4.62200
price_threshold_19: 4.81700
price_threshold_20: 4.90400
price_threshold_21: 4.94700
price_threshold_22: 5.48900
price_threshold_23: 6.42200


Daher kam ja auch meine initiale Frage: Es wäre jetzt interessant, die Treshold-Werte Uhrzeiten zuzuweisen und so, wie von Ihnen geschrieben zB die günstigten 4 Stunden zu finden, bzw. intelligent, dass ich in einem FHEM-Befehl sage," Maschine XYZ läuft für die nächsten n-Stunden - wann ist das optimale Zeitfenster dafür?


UND: Freut mich sehr, dass mein Input den Weg in die WIKI geschafft hat :D

LG
Clemens

whistler81

Hier das Bash-Script:

#!/bin/bash
wget -O /home/pi/awattar/current.yaml https://api.awattar.at/v1/marketdata/current.yaml 1>/dev/null 2>&1


input_file=/home/pi/awattar/current.yaml
cheapest_hours_file=cheapest_hours_boiler
cd /home/pi/awattar/
> $cheapest_hours_file
hours=1
current_hour=$(date +%H)
#current_hour=05

day=$(grep date_now_day $input_file |awk '{print $2}')
month=$(grep date_now_month $input_file |awk '{print $2}')
year=$(grep date_now_year $input_file |awk '{print $2}')
priceLow=$(grep price_low $input_file |awk '{print $2}')

grep "data_price_hour_abs_" $input_file | sort -n -t " " -k 2,2 |head -n $hours|while read line
do
 echo  $line | awk -F data_price_hour_abs_ '{print $2}' | awk -F _ '{print $1}'>>$cheapest_hours_file

# echo $line | awk -F data_price_hour_abs_ '{print $2}'>>$cheapest_hours_file

done


und mit diesen übergebe ich es an FHEM:

  GNU nano 5.4                                                                 transfer.sh
#!/bin/bash

file="/home/pi/awattar/cheapest_hours_boiler" #the file where you keep your string name
name=$(cat "$file")        #the output of 'cat $file' is assigned to the $name variable
name+=":00"
echo $name               #test
#echo $add01
#cheapHour = $name $add01
#echo $cheapHour
curl -s http://192.168.1.124:8083/fhem?cmd=set%20Strompreis_Minimum_Hour%20$name



Prof. Dr. Peter Henning

Das mit den Threshold-Werten halte ich für ziemlichen Unsinn, eben weil die Zeiten fehlen. Deswegen benutze ich in der aWATTl4-Funktion ein assoziatives Array.

Zitat von: whistler81 am 01 Mai 2024, 16:04:16Freut mich sehr, dass mein Input den Weg in die WIKI geschafft hat
In diesen Wein muss ich leider etwas Wasser gießen. Meine Perl-Funktion im Wiki habe ich nicht erst jetzt programmiert, die läuft schon seit Januar und ist Bestandteil eines in Entwicklung befindlichen Energiemanagementsystems.

LG

pah

ch.eick

Moin zusammen,
hier wäre dann noch der andere Thread zu aWATTar.
Da habe ich auch ein Fenster mit den günstigen Preisen am Tag und einen Trigger für die Ansteuerung von anderen Devices.
Das sollte dann mal so aussehen wie das Tibber Device, das hier zu finden ist.
Die letzten Versionen stehen hier im contrib.

VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Prof. Dr. Peter Henning

Hi Christian, @whistler:

Bitte diese Threads (diesen hier sowohl als "den anderen aWATTar Thread") unter die Rubrik "Energiemanagement" verschieben.

LG

pah


ch.eick

Das kann doch nur der Eigentümer oder ein Admin machen :-(
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

#14
Zitat von: satprofi am 30 April 2024, 14:52:29
Zitat von: whistler81 am 27 April 2024, 22:44:19Bin mittlerweile schon weitergekommen, da ich nun die günstigsten Stunden mit einem Bash Script suche und so an FHEM übergebe
Anhand der günstigsten Stunde pro tag
könntest du das script bitte teilen?
In den bereits vorhandenen Devices für Börsen Anbieter ist das bereits in den userReadings in Perl integriert.
Für das Tibber Beispiel sieht das ganze dann bereits so aus, was auf das aWATTar Device anpassbar wäre.
Ich wollte da mal ein Hauptdevice draus gemacht haben, bei dem man dann das EVU auswählen könnte.
Du darfst diesen Dateianhang nicht ansehen.
Die Preisfenster sind hierbei Variabel, da sie jede Stunde neu berechnet werden. Für die Berechnung verwende ich alle vorhandenen Preise, also ab 12:00 Uhr auch die von morgen, damit ein niedrigerer Preis von morgen das Fenster von heute im Preis nach unten drückt. Über die Algorythmen kann man jetzt natürlich beliebig diskutieren :-)

Einige Statistiken hole ich bei diesen Devices jedoch direkt aus der MySQL DbLog, worauf man natürlich auch verzichten könnte und dann keine MySQL DbLog benötigen würde.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick