FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Shadow3561 am 22 März 2020, 07:55:28

Titel: !!! gelöst !!! SVG-Plot - Andere Farbe für Werte grösser/kleiner als (z.B. >=0)
Beitrag von: Shadow3561 am 22 März 2020, 07:55:28
Ich habe ein Device (PV-Wechselrichter) was mir den aktuellen Netzbezug ausgibt.

Dieses habe ich als SVG-Plot aus einem DBlog Device erstellt. Die ausgegebenen Werte sind Zahlen.

Positive = Netzbezug
Negative = Einspeisung

Wie schaffe ich es, dass im Plot alle positiven Werte eine andere Farbe haben als die negativen?

Anbei ein Plot zur Verdeutlichung.

Das ist was ich bisher habe, funktioniert aber leider nicht.

# Created by FHEM/98_SVG.pm, 2020-03-21 16:39:43
set terminal png transparent size <SIZE> crop
set output '.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics
set y2tics
set grid y2tics
set ylabel ""
set y2label ""

#logdb WR_Fronius_Meter:Power_total__W:::$val=($val<0?hide:$val)
#logdb WR_Fronius_Meter:Power_total__W:::$val=($val=~s/^⁄-(?:\d{1,4})/?hide:$val)
#logdb WR_Fronius:Power_Site__W

plot "<IN>" using 1:2 axes x1y2 title 'Netzbezug' ls l1fill lw 0.5 with lines,\
"<IN>" using 1:2 axes x1y2 title 'Netzbezug' ls l5fill lw 0.5 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'PV Leistung' ls l3fill lw 0.2 with lines
Titel: Antw:SVG-Plot vom DBlog andere Farbe für Werte <0
Beitrag von: Wzut am 22 März 2020, 08:09:21
gab doch diese Woche zu dem Thema ein Update -> https://forum.fhem.de/index.php/topic,108858.0.html
Titel: Antw:SVG-Plot vom DBlog andere Farbe für Werte <0
Beitrag von: Damian am 22 März 2020, 09:00:35
Zitat von: Shadow3561 am 22 März 2020, 07:55:28
Ich habe ein Device (PV-Wechselrichter) was mir den aktuellen Netzbezug ausgibt.

Dieses habe ich als SVG-Plot aus einem DBlog Device erstellt. Die ausgegebenen Werte sind Zahlen.

Positive = Netzbezug
Negative = Einspeisung

Wie schaffe ich es, dass im Plot alle positiven Werte eine andere Farbe haben als die negativen?

Anbei ein Plot zur Verdeutlichung.

Das ist was ich bisher habe, funktioniert aber leider nicht.

# Created by FHEM/98_SVG.pm, 2020-03-21 16:39:43
set terminal png transparent size <SIZE> crop
set output '.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics
set y2tics
set grid y2tics
set ylabel ""
set y2label ""

#logdb WR_Fronius_Meter:Power_total__W:::$val=($val<0?hide:$val)
#logdb WR_Fronius_Meter:Power_total__W:::$val=($val=~s/^⁄-(?:\d{1,4})/?hide:$val)
#logdb WR_Fronius:Power_Site__W

plot "<IN>" using 1:2 axes x1y2 title 'Netzbezug' ls l1fill lw 0.5 with lines,\
"<IN>" using 1:2 axes x1y2 title 'Netzbezug' ls l5fill lw 0.5 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'PV Leistung' ls l3fill lw 0.2 with lines


Wenn du Netzbezug negativ darstellst, Produktion positiv ebenso positiv Eigenverbrauch (Produktion - Einspeisung), dann sieht es so aus: https://forum.fhem.de/index.php/topic,108858.msg1032530.html#msg1032530
Titel: Antw:SVG-Plot vom DBlog andere Farbe für Werte <0
Beitrag von: Shadow3561 am 22 März 2020, 10:15:14
@Damian

Danke, wie es dargestellt werden sollte, wusste ich bereits. Wäre super wenn du auch das dazugehörende gplot gepostet hättest.

Ich habe es jetzt so gelöst.

# Created by FHEM/98_SVG.pm, 2020-03-22 09:50:04
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 '<L1>'
set ytics
set y2tics
set grid y2tics
set ylabel ""
set y2label ""


#logdb WR_Fronius_Meter:Power_total__W:::$val=~s/(-.*)//g
#logdb WR_Fronius_Meter:Power_total__W
#logdb WR_Fronius:Power_Site__W

plot "<IN>" using 1:2 axes x1y2 title 'Netzbezug' ls l0fill lw 0.5 with lines,\
       "<IN>" using 1:2 axes x1y2 title 'Einspeisung' ls l1fill lw 0.5 with lines,\
       "<IN>" using 1:2 axes x1y2 title 'PV Leistung' ls l3fill lw 0.2 with lines


Titel: Antw:!!! gelöst !!! SVG-Plot vom DBlog andere Farbe für Werte <0
Beitrag von: Damian am 22 März 2020, 10:44:02
Im Plot selbst sind keine Regeln definiert:

# Created by FHEM/98_SVG.pm, 2020-03-22 09:11:31
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 'Strom'
set ytics
set y2tics
set grid y2tics
set ylabel "KW"
set y2label "KW"

#FileLog_CUL_WZ 11:zaehler.Aktuell\x3a:0:
#FileLog_CUL_WZ 13:zaehler.Aktuell\x3a::
#FileLog_CUL_WZ 5:zaehler.Aktuell\x3a::

plot "<IN>" using 1:2 axes x1y1 title 'Bezug' ls l0fill_gyr lw 1 with histeps,\
     "<IN>" using 1:2 axes x1y1 title 'Eigenverb.' ls l2fill_gyr lw 1 with histeps,\
     "<IN>" using 1:2 axes x1y1 title 'Produktion' ls l8fill_gyr lw 1 with histeps
Titel: Antw:!!! gelöst !!! SVG-Plot vom DBlog andere Farbe für Werte <0
Beitrag von: Shadow3561 am 22 März 2020, 10:56:05
In meinem Beispiel ist das SVG aus einem DBlog erstellt.
Für ein FileLog-SVG habe ich schon Beispiele gefunden. Beim DBlog muss das @fld-Array anders aussehen. Damit habe ich mich ein wenig schwer getan.
Jetzt hat es ja geklappt und in diesem Thread sind jetzt Beispiele für SVG aus DBlog und FileLog.
Daher werde ich den Titel noch einmal ändern damit es in der Suche leichter zu finden ist.
Danke für dein Beispiel.

Mit freundlichen Grüßen
Titel: Antw:!!! gelöst !!! SVG-Plot - Andere Farbe für Werte grösser/kleiner als (z.B. >=0)
Beitrag von: Damian am 22 März 2020, 12:02:51
Ja, es steht und fällt alles mit der Datenbasis. Bei mir werden von verschiedenen Zählern die Daten (Einspeisung, Produktion, Eigenverbrauch, ...) in einem Modul errechnet und in Readings zur Verfügung  gestellt. Die brauche ich dann nur noch zu loggen und wie gepostet anzuzeigen.
Titel: Antw:!!! gelöst !!! SVG-Plot - Andere Farbe für Werte grösser/kleiner als (z.B. >=0)
Beitrag von: jude am 10 Juli 2022, 17:21:50
Für FileLog ist es die Variable: $fld[3]  (mit dem richtigen Index)

z.B. um Werte über und unter 0 zu "filtern".


$fld[3]=($fld[3]<=0?0:$fld[3])
$fld[3]=($fld[3]<0?$fld[3]:0)

(analog dem Beispiel mit DBLog)

Titel: Aw: !!! gelöst !!! SVG-Plot - Andere Farbe für Werte grösser/kleiner als (z.B. >=0)
Beitrag von: Jochen_M am 26 August 2023, 00:31:24
Hallo zusammen,
ich habe heute ein ganze Weile versucht das hinzubekommen.
Am Ende denke ich das die Formeln oben so bei mir nicht funktionierten.

größer oder gleich 0
$fld[3]>=0?$fld[3]:0

kleiner 0
$fld[3]<0?$fld[3]:0

Dies hat bei mir dann das Diagramm in der gewünschten Form dargestellt.
26-08-2023_00-22-49.jpg

Falls noch jemand hier versucht, das als Hinweis.

# Created by FHEM/98_SVG.pm, 2023-08-26 00:03:26
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 'Stromzaehler (Tasmota) 2.8.0 vs aktuell'
set ytics
set y2tics
set grid y2tics
set ylabel "Erzeugung [kWh]"
set y2label "Verbrauch (aktuell) [W]"

#FileLog_MQTT2_DVES_FFC0C3 4:MQTT2_DVES_FFC0C3.SML_export_total_kwh\x3a::
#FileLog_MQTT2_DVES_FFC0C3 4:MQTT2_DVES_FFC0C3.SML_curr_w\x3a::$fld[3]>=0?$fld[3]:0
#FileLog_MQTT2_DVES_FFC0C3 4:MQTT2_DVES_FFC0C3.SML_curr_w\x3a::$fld[3]<0?$fld[3]:0
#FileLog_MQTT2_AHOY_DTU_JME_01_C8D330 4:MQTT2_AHOY_DTU_JME_01_C8D330.P_AC\x3a::$fld[3]*-1

plot "<IN>" using 1:2 axes x1y1 title 'Erzeugung (Summe, 2.8.0)  [kWh]' ls l2 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'aktueller Verbrauch [W]' ls l0fill lw 1 with histeps,\
     "<IN>" using 1:2 axes x1y2 title 'aktueller Einspeisung [W]' ls l1fill lw 2 with histeps,\
     "<IN>" using 1:2 axes x1y2 title 'BKW AC Power [W]' ls l5fill_stripe lw 1 with lines