FHEM Forum

FHEM => Frontends => SVG / Plots / logProxy => Thema gestartet von: skamm71 am 30 Oktober 2023, 15:37:43

Titel: SVG erneute Probleme mit Variablen
Beitrag von: skamm71 am 30 Oktober 2023, 15:37:43
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... :-)

2023-10-30 15_30_09-Home, Sweet Home – Mozilla Firefox.jpg

Bin sehr dankbar für Hilfe :-D

Titel: Aw: SVG erneute Probleme mit Variablen
Beitrag 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.
Titel: Aw: SVG erneute Probleme mit Variablen
Beitrag von: skamm71 am 31 Oktober 2023, 11:07:34
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)"
Titel: Aw: SVG erneute Probleme mit Variablen
Beitrag von: skamm71 am 20 Mai 2024, 18:06:58
Hallo zusammen

Ich habe heute mal wieder ein wenig an dem Plot gearbeitet. Wird schicker :-)

Nun habe ich aber ein Problem beim Erstellen der userReadings...
Ich bekomme die angezeigt, habe aber das Problem, dass es hier 5 Nachkommastellen gibt...
Ich hab auch schon gegoogelt und "sprintf" gefunden aber ich bekomme es nicht hin...

user_month_grid_feed:/essinfo/common/PCS/month_grid_feed_in_energy.* {return ReadingsVal("myEss","/essinfo/common/PCS/month_grid_feed_in_energy",0)*(0,07)/(100000)} ,

Wie bekomme ich es hin, dass ich in der Ausgabe der Variablen dann entweder 2 oder weniger Nachkommastellen habe?

Vielen Dank im Voraus :-)
Titel: Aw: SVG erneute Probleme mit Variablen
Beitrag von: rudolfkoenig am 21 Mai 2024, 11:21:51
#1 (0,07) liefert ein Feld mit den Werten 0 und 7 zurueck, und perl rechnet mit 7 weiter(*). Vermutlich ist hier 0.07 gemeint.
#2 Runden: {sprintf("0.2f", ReadingsVal("myEss","/essinfo/common/PCS/month_grid_feed_in_energy",0)*0.07/100000)}


(*)
Ich habe es nicht rausgekommen, wann perl sich ueber solche Felder beschwert.
"PERL WARNING: Useless use of a constant (3) in void context" gibts mit:
{ (3,7) }
{ (3,0,7) }
{ {0,3,7) }
Keine Warnung gibts mit
{ (0,7) }
{ (1,7) }
{ (0,0,7) }
{ (1,0,7) }
Kann das jemand erklaeren?
Titel: Aw: SVG erneute Probleme mit Variablen
Beitrag von: skamm71 am 21 Mai 2024, 14:14:21
Vielen Dank!!!

Hatte heute morgen schon einen netten Kollegen von auf Arbeit der sich mit den tausend Klammern und Krams auskennt ;-)

So geht es dann tatsächlich:

user_month_grid_feed:/essinfo/common/PCS/month_grid_feed_in_energy.* {return sprintf("%.2f", ReadingsVal("myEss","/essinfo/common/PCS/month_grid_feed_in_energy",0)*(0,07)/(100000))}

Und so schaut es dann aus:

2024-05-21 14_08_14-Home, Sweet Home – Mozilla Firefox.png

Klasse wäre es nun noch den Punkt als Trennzeichen durch ein in Deutschland übliches Komma zu rsetzen... Auch hier habe ich schon gegoogelt aber nichts zufriedenstellendes gefunden... ;-)

LG Sascha