SVG: Bars gerade ansteigend darstellen

Begonnen von der Bernhard, 24 März 2017, 08:15:34

Vorheriges Thema - Nächstes Thema

der Bernhard

Hi,

habe lange gebraucht um mich durchzuringen mal eine Frage zu stellen.

Folgendes Problem: Versuche gerade meinen Fronius Wechselrichter als Bars darzustellen. Also das Maximalerzeugnis in den letzten Tagen. Aber irgendwie macht der dauernd eine Kurve.

Bei mir schauts aus wie im Anhang Bar_falsch.jpg und aussehen sollte es wie in Bar_wunsch.jpg

Also die Bars sollen gerade ansteigen und halt auch gerade abfallen. So das sich jeder Tag an den anderen anreit.

Mein gplot File schaut momentan so aus - ziemlich unverändert noch ;)

# Created by FHEM/98_SVG.pm, 2017-03-24 07:46:39
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 'Maximalerzeugnis pro Tag'
set ytics
set y2tics
set grid ytics
set ylabel "Erzeugnis in kWatt"
set y2label ""
set yrange [0:30]
set y2range [0:30]

#logdb FroniusSymoAkt:DAY_ENERGY:::$val=$val/1000

plot "<IN>" using 1:2 axes x1y2 title 'kWh' ls l1fill lw 0.2 with bars


Kann mir da irgendwer helfen?

Danke und LG
Bernhard

der Bernhard

Habe es jetzt mit delta-d hinbekommen, dass er es mir mal aufsteigend anzeigt (siehe Anhang) allerdings hätte ich auch gerne den aktuellen Tag noch drinnen. Also quasi einen wachsenden Wert/Balken..

#logdb FroniusSymoAkt:DAY_ENERGY::delta-d:$val=$val/1000

Irgendwer eine Idee?

rudolfkoenig

Kannst du bitte die "roh" Daten, und die Daten mit delta-d hier anhaengen?

der Bernhard

Hallo und gerne.

Falls mit Rohdaten die DB gemeint ist die ist im Anhang.

SVG_logdb_FroniusSymoMonat.gplot
# Created by FHEM/98_SVG.pm, 2017-03-24 07:46:39
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 'Maximalerzeugnis pro Tag'
set ytics
set y2tics
set grid ytics
set ylabel "Erzeugnis in kWatt"
set y2label ""
set yrange [0:30]
set y2range [0:30]

#logdb FroniusSymoAkt:DAY_ENERGY:::$val=$val/1000


SVG
define SVG_FroniusSymoMonat SVG logdb:SVG_logdb_FroniusSymoMonat:HISTORY
attr SVG_FroniusSymoMonat fixedrange 30days
attr SVG_FroniusSymoMonat room Strommessung


und HHTPMOD
define FroniusSymoAkt HTTPMOD http://192.168.0.21/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CommonInverterData 300
attr FroniusSymoAkt userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07Name reading07Regex reading08Name reading08Regex reading09Name reading09Regex
attr FroniusSymoAkt group Messen
attr FroniusSymoAkt icon measure_photovoltaic_inst
attr FroniusSymoAkt reading01Name DAY_ENERGY
attr FroniusSymoAkt reading01Regex "DAY_ENERGY"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr FroniusSymoAkt reading02Name TOTAL_ENERGY
attr FroniusSymoAkt reading02Regex "TOTAL_ENERGY"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr FroniusSymoAkt reading03Name YEAR_ENERGY
attr FroniusSymoAkt reading03Regex "YEAR_ENERGY"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr FroniusSymoAkt reading04Name FAC
attr FroniusSymoAkt reading04Regex "FAC"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr FroniusSymoAkt reading05Name IAC
attr FroniusSymoAkt reading05Regex "IAC"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr FroniusSymoAkt reading06Name IDC
attr FroniusSymoAkt reading06Regex "IDC"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr FroniusSymoAkt reading07Name PAC
attr FroniusSymoAkt reading07Regex "PAC"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr FroniusSymoAkt reading08Name UAC
attr FroniusSymoAkt reading08Regex "UAC"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr FroniusSymoAkt reading09Name UDC
attr FroniusSymoAkt reading09Regex "UDC"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr FroniusSymoAkt room Strommessung
attr FroniusSymoAkt stateFormat {sprintf("Aktuell: %d W Tag: %d Wh Jahr: %d Wh", ReadingsVal($name,"PAC",0),ReadingsVal($name,"DAY_ENERGY",0),ReadingsVal($name,"YEAR_ENERGY",0))}


Das sollte es sein. Hoffentlich habe ich nix vergessen...

Danke jedenfalls

rudolfkoenig

Sorry, ich meinte die Daten aus "Show preprocessed input".
Einmal mit und einmal ohne delta-d.

der Bernhard

Guten Morgen,

sorry das ich erst jetzt zurückmelde, aber Frau und Kind sind krank und ich war am Wochenende mit Fürsorgearbeit beschäftigt  ;)

Anbei die 2 Files. Seltsamerweise schmeisst mir mein Log eine Fehlermeldung aus wenn delta-d aktiviert ist - obwohl es scheinbar irgendwie funktioniert. Sehr komisch:

2017.03.27 06:29:55 1: PERL WARNING: Use of uninitialized value $val in division (/) at (eval 19830) line 1.

Jedenfalls danke für den Support - vorallem vom "Chef" persönlich  8)

rudolfkoenig

Dass ich mich darum kuemmere, hat es eher mit den betroffenen Modulen zu tun. Viel Grund mich als Chef zu fuehlen habe ich nicht, bin eher Diener.

Die Daten stammen aus DbLog, und damit kenne ich mich nicht aus. Die da implementierte delta-d ist etwas toleranter als die in FileLog, beide haben aber ein Problem, wenn der Zaehler taeglich zurueckgesetzt wird.

Ich habe die Daten mit dem folgenden Einzeiler "korrigiert"
awk '{if(ur3 != 0 && $3 == 0) ur1+=ur3; ur2=ur1+$3; ur3=$3; printf("%s %s %s\n", $1, $2, ur2) }' log/log.69548.log
dann schaut das Bild so wie im Anhang aus. Das ist jetzt nicht als Vorschlag zum Fixen zu verstehen, nur als Beleg fuer meine Argumentation. Falls das Reset des Zaehlers in der Anlage nicht machbar ist, dann wuerde ich drei userReadings bauen (inspiriert vom awk, ungetestet):
- userReading#1 prueft, ob userReading#3 ungleich 0 ist und der aktuelle Wert 0, und wenn ja, addiert sich userReading#3
- userReading#2 ist das was man loggen muss, entsteht aus dem aktuellen Wert + userReading#1
- userReading#3 merkt den aktuellen Wert fuer die naechste Schleife

Vielleicht gibt es auch elegantere Methoden, die fallen mir jetzt aber nicht ein.

P.S.: Gute Besserung an die Familienmitglieder :)

der Bernhard

Hallo und danke für die Lösungsansätze. Ich denke ich muss mich da noch genauer einlesen - ist ja jetzt der perfekte Anlass dafür. Sobald ich eine Lösung habe werde ich sie dann hier reinschreiben.

PS: Familie ist am Weg der Besserung - danke. Und Sklave seiner eigenen Ideen/Werke zu sein ist meiner Ansicht nach eh normal ;)