SVG erneute Probleme mit Variablen

Begonnen von skamm71, 30 Oktober 2023, 15:37:43

Vorheriges Thema - Nächstes Thema

skamm71

Hallo zusammen

Ich bin immer noch mit meinem Kollegen daran eigentliche "Kleinigkeiten" zur Aufhübschung in mein Solaranlagen-SVG einzupflegen.
Heute scheiterte es an folgendem:

Der Wechselrichter liefert liefert die Werte für "Batterie-Einspeisung" oder "Batterie-ntladung" genauso wie den Stromtransfer von und zum Netzanbieter in einem Feld...
Dazu bringt er dann Felder im Log mit dem "ja, was ist es denn eigentlich nun...."

Also war die Anforderung heute aus den ausgelesenen Werten user_readings zu machen und die darzustellen:

essinfo/common/BATT/status=0 -> user_batt_status="(standby)"
essinfo/common/BATT/status=1 -> user_batt_status="(charging)"
essinfo/common/BATT/status=2 -> user_batt_status="discharging)"
/essinfo/home/direction/is_grid_buying_=0 ignorieren
/essinfo/home/direction/is_grid_buying_=1 -> user_grid_status="(purchasing)"
/essinfo/home/direction/is_grid_selling_=0 -> ignorieren
/essinfo/home/direction/is_grid_selling_=1 -> user_grid_status="(feeding)"

/essinfo/home/direction/is_grid_buying_ und  /essinfo/home/direction/is_grid_selling_ beides auf 0 dann user_grid_status="(standby)"

Das sind meine "Events on update":

/essinfo/common/LOAD/load_power,/essinfo/home/statistics/load_power,/essinfo/home/statistics/pcs_pv_total_power,/essinfo/common/PV/pv1_power,/essinfo/common/PV/pv2_power,/essinfo/home/statistics/grid_power,/essinfo/common/BATT/soc,user_soc,/essinfo/home/statistics/batconv_power,/essinfo/common/GRID/today_grid_feed_in_energy,/essinfo/common/GRID/today_grid_power_purchase_energy,/essinfo/common/PCS/today_pv_generation_sum,/essinfo/common/LOAD/today_load_consumption_sum,user_null,/essinfo/common/BATT/status,/essinfo/home/direction/is_grid_buying_,/essinfo/home/direction/is_grid_selling_,user_batt_status,user_grid_status
Das sind die "user readings" (die ersten beiden funktionieren, mein Problem sind die beiden mit status...):

user_soc:/essinfo/common/BATT/soc.* {return ReadingsVal("myEss","/essinfo/common/BATT/soc",0)*(10)} ,
user_null:/essinfo/common/BATT/soc.* {return ReadingsVal("myEss","",0)} ,

user_batt_status {if(ReadingsVal("myEss","essinfo/common/Batt/status",0) eq "0") {return "standby"} elsif (ReadingsVal("myEss","essinfo/common/Batt/status",1) eq "1") {return "charging"} elsif (ReadingsVal("myEss","essinfo/common/Batt/status",2) eq "2") {return "discharging"} else {return "99"}} ,

user_grid_status {if(ReadingsVal("myEss","ssinfo/home/direction/is_grid_buying_",1) eq 1) {return "selling"} } ,

user_grid_status {if(ReadingsVal("myEss","ssinfo/home/direction/is_grid_selling_",1) eq 1) {return "buying"} }

#user_grid_status {if(ReadingsVal("myEss","ssinfo/home/direction/is_grid_buying_",0) eq 0 and ReadingsVal("myEss","ssinfo/home/direction/is_grid_selling_",0) eq 0)  {return "standby"} }

Über die Variablen im SVG ist soweit alles definiert:

"$data{currval1}"::"$data{currval2}"::"$data{currval3}"::"$data{currval4}"::"$data{currval5}"::"$data{currval6}"::"$data{currval7}"::"$data{currval8}"::"$data{currval9}"::"$data{currval10}"::"$data{currval11}"::"$data{currval12}"::"$data{currval13}"::"$data{currval14}"::"$data{currval15}"::"$data{currval16}"::"$data{currval17}"::"$data{currval18}"::"$data{currval19}"::"$data{currval20}"::"$data{currval21}"::"$data{currval22}"::"$data{currval23}"


Erstes Problem:

Im Logfile tauchen die beiden user readings pro Zyklus (1 Minute) immer 5x auf. Verstehe ich nicht.

root@fhem-homeautomation:~# tail -f /opt/fhem/log/myEss-2023-10-30.log | grep -e user_batt_status -euser_grid_status
2023-10-30_15:26:53 myEss user_batt_status: standby
2023-10-30_15:26:53 myEss user_grid_status: selling
2023-10-30_15:26:53 myEss user_grid_status: buying
2023-10-30_15:26:53 myEss user_batt_status: standby
2023-10-30_15:26:53 myEss user_grid_status: selling
2023-10-30_15:26:53 myEss user_grid_status: buying
2023-10-30_15:26:53 myEss user_batt_status: standby
2023-10-30_15:26:53 myEss user_grid_status: selling
2023-10-30_15:26:53 myEss user_grid_status: buying
2023-10-30_15:26:54 myEss user_batt_status: standby
2023-10-30_15:26:54 myEss user_grid_status: selling
2023-10-30_15:26:54 myEss user_grid_status: buying
2023-10-30_15:26:54 myEss user_batt_status: standby
2023-10-30_15:26:54 myEss user_grid_status: selling
2023-10-30_15:26:54 myEss user_grid_status: buying

Zweites Problem:

Im SVG lassen sichdie Variablen nicht als Text einblenden. Stellen wir im user-reading anstelle von "standby" oder so Zahlen ein, dann werden die angezeigt...
Zur Hilfe habe ich mir die dort auch im Titel einblenden lassen.

Das .gplot File:

# Created by FHEM/98_SVG.pm, 2023-10-26 17:23:37
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'Photvoltaik overview Batt:<L23>,buy:<L22>,sell:<L21> - user_batt_status: <L19>, user_grid_status: <L20>'
set ytics
set y2tics
set grid
set ylabel ""
set y2label ""

#Filelog_Solar 4:myEss./essinfo/common/LOAD/load_power\x3a::
#Filelog_Solar 4:myEss./essinfo/home/statistics/pcs_pv_total_power\x3a::
#Filelog_Solar 4:myEss./essinfo/common/PV/pv1_power\x3a::
#Filelog_Solar 4:myEss./essinfo/common/PV/pv2_power\x3a::
#Filelog_Solar 4:myEss./essinfo/home/statistics/grid_power\x3a::
#Filelog_Solar 4:myEss./essinfo/home/statistics/batconv_power\x3a::
#Filelog_Solar 4:myEss./essinfo/home/statistics/load_power\x3a::
#Filelog_Solar 4:myEss./essinfo/common/BATT/soc\x3a::
#Filelog_Solar 4:myEss.user_soc\x3a::
#Filelog_Solar 4:myEss.user_null\x3a::
#Filelog_Solar 4:myEss.user_null\x3a::
#Filelog_Solar 4:myEss.user_null\x3a::
#Filelog_Solar 4:myEss.user_null\x3a::
#Filelog_Solar 4:/essinfo/common/GRID/today_grid_feed_in_energy\x3a::
#Filelog_Solar 4:/essinfo/common/GRID/today_grid_power_purchase_energy\x3a::
#Filelog_Solar 4:/essinfo/common/PCS/today_pv_generation_sum\x3a::
#Filelog_Solar 4:/essinfo/common/LOAD/today_load_consumption_sum\x3a::
#Filelog_Solar 4:myEss./essinfo/common/LOAD/load_power\x3a::
#Filelog_Solar 4:myEss.user_batt_status\x3a::
#Filelog_Solar 4:myEss.user_grid_status\x3a::
#Filelog_Solar 4:myEss./essinfo/home/direction/is_grid_selling_\x3a::
#Filelog_Solar 4:myEss./essinfo/home/direction/is_grid_buying_\x3a::
#Filelog_Solar 4:myEss./essinfo/common/BATT/status\x3a::
#Filelog_Solar 4:myEss.user_null\x3a::

In einer "readingsgroup" werden die Textvariablen einwandfrei angezeigt... Warum?

Siehe Bild. Die "readingsgroup" ist dargestellt oberhalb des SVG und zeigt die eingerahmten Werte, die das SVG mit "0" anzeigt... :-)

Du darfst diesen Dateianhang nicht ansehen.

Bin sehr dankbar für Hilfe :-D


rudolfkoenig

ZitatIm Logfile tauchen die beiden user readings pro Zyklus (1 Minute) immer 5x auf. Verstehe ich nicht.
Wenn moeglich, sowas in der Quelle unterbinden.
Sonst kann man in FHEM event-min-interval setzen: https://fhem.de/commandref_modular.html#event-min-interval


ZitatIm SVG lassen sichdie Variablen nicht als Text einblenden.
Workaround: ein Ausdruck wie $fld[3]=~m/buying/?1:0 in der Funktionsspalte der .gplot Datei bzw. im SVG Editor.
Gilt fuer FileLog, in DbLog ist eine andere "Syntax" erforderlich.
Achtung: Leerzeichen sind nicht erlaubt.
Besser ist natuerlich die Daten gleich "richtig" zu speichern.

skamm71

Zitat von: rudolfkoenig am 30 Oktober 2023, 16:43:53
ZitatIm Logfile tauchen die beiden user readings pro Zyklus (1 Minute) immer 5x auf. Verstehe ich nicht.
Wenn moeglich, sowas in der Quelle unterbinden.
Sonst kann man in FHEM event-min-interval setzen: https://fhem.de/commandref_modular.html#event-min-interval


ZitatIm SVG lassen sichdie Variablen nicht als Text einblenden.
Workaround: ein Ausdruck wie $fld[3]=~m/buying/?1:0 in der Funktionsspalte der .gplot Datei bzw. im SVG Editor.
Gilt fuer FileLog, in DbLog ist eine andere "Syntax" erforderlich.
Achtung: Leerzeichen sind nicht erlaubt.
Besser ist natuerlich die Daten gleich "richtig" zu speichern.

Die Quelle liefert die "Rohdaten" nur einmal alle 60 Sekunden.
Das mehrfache Ausgeben erfolgt durch die Formeln, die anscheinend sowieso noch nicht das tun was sie sollen -> heute Morgen wird die Batterie geladen, Status sagt aber "standby"...

Hast Du dafür eine Idee das umzusetzen als userreadings?

essinfo/common/BATT/status=0 -> user_batt_status="(standby)"
essinfo/common/BATT/status=1 -> user_batt_status="(charging)"
essinfo/common/BATT/status=2 -> user_batt_status="discharging)"
/essinfo/home/direction/is_grid_buying_=0 ignorieren
/essinfo/home/direction/is_grid_buying_=1 -> user_grid_status="(purchasing)"
/essinfo/home/direction/is_grid_selling_=0 -> ignorieren
/essinfo/home/direction/is_grid_selling_=1 -> user_grid_status="(feeding)"

/essinfo/home/direction/is_grid_buying_ und  /essinfo/home/direction/is_grid_selling_ beides auf 0 dann user_grid_status="(standby)"