FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: wopl am 27 Juni 2013, 11:59:16

Titel: gnuplot digitaler Werte
Beitrag von: wopl am 27 Juni 2013, 11:59:16
Hallo,
ich habe ein Logfile mit gemischt digitalen und analogen Werten: #5 analog, #17 und #18 nehmen immer die Werte 0/1 an.
Im Moment sieht das gplot-file folgendermaßen aus:

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 '<TL>'
set ytics
set y2tics "Aus" 0.4, "Ein" 0.6
set grid ytics
set ylabel "Temperatur"
set y2label "Ein/Aus"

#FileLog 5:Heizung.UVR1611\x3a::
#FileLog 17:Heizung.UVR1611\x3a::
#FileLog 18:Heizung.UVR1611\x3a::

plot "<IN>" using 1:2 axes x1y1 title 'Zisterne' ls l0 lw 1.5 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Schalter1' ls l1 lw 1.5 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'Schalter2' ls l2 lw 1.5 with lines


Für #17 (Schalter 1) möchte ich jetzt anstelle einer 0/1 Ausgabe die Werte 0.4/0.6 auf dem gplot ausgeben. Leider finde ich nicht raus, wie man eine entsprechende Funktion in gplot formuliert (oder doch mit awk?).

Vielen Dank, wenn mir jemand den Codeschnipsel hierzu angibt.
Gruß Wolfram
Titel: Aw: gnuplot digitaler Werte
Beitrag von: fiedel am 27 Juni 2013, 16:41:31
Hi Wolfram,

genau so mache ich es bei den Signalen meiner Heizungs- SPS.
Dadurch haben die Signale bei "ON" unterschiedliche Höhen im Plot.
Hier kannst du dir das abgucken:
Tipp: Damit es richtig funktioniert, benutze ich noch "AddLog".



############################
# Filename: heiz_sps.gplot
# Display the on and off values off an FS20 device
# Corresponding FileLog definition:
# define fs20log FileLog /var/log/fhem/fs20dev-%Y-%U.log fs20dev

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 'Zustände der SPS  "Heizung"'

set ytics ("Off" 0, "On" 1)
set y2tics ("Off" 0, "On" 1)
set yrange [-0.1:1.1]
set y2range [-0.1:1.1]
set ylabel "Status"
set y2label "Status"



#FileLog 3:SPS_I_X4:0:$fld[2]=~"on"?0.1:0
#FileLog 3:SPS_I_X5:0:$fld[2]=~"on"?0.2:0
#FileLog 3:SPS_I_X6:0:$fld[2]=~"on"?0.3:0

#FileLog 3:SPS_O_Y0:0:$fld[2]=~"on"?0.4:0
#FileLog 3:SPS_O_Y1:0:$fld[2]=~"on"?0.5:0
#FileLog 3:SPS_O_Y2:0:$fld[2]=~"on"?0.6:0
#FileLog 3:SPS_O_Y3:0:$fld[2]=~"on"?0.7:0
#FileLog 3:webServer:0:$fld[2]=~"on"?0.8:0


plot \
  "< awk '/SPS_I_X4/ {print $1, $3~/on/? 1 : 0; }' <IN>"\
     using 1:2 title 'SPS_I_X4-Spare' with steps

  "< awk '/SPS_I_X5/ {print $1, $3~/on/? 1 : 0; }' <IN>"\
     using 1:2 title 'SPS_I_X5-Lang_Sp' with steps

  "< awk '/SPS_I_X6/ {print $1, $3~/on/? 1 : 0; }' <IN>"\
     using 1:2 title 'SPS_I_X6-Res_Sp' with steps

  "< awk '/SPS_O_Y0/ {print $1, $3~/on/? 1 : 0; }' <IN>"\
     using 1:2 title 'SPS_O_Y0-Sp_Aktiv' with steps

  "< awk '/SPS_O_Y1/ {print $1, $3~/on/? 1 : 0; }' <IN>"\
     using 1:2 title 'SPS_O_Y1-Fehler' with steps

  "< awk '/SPS_O_Y2/ {print $1, $3~/on/? 1 : 0; }' <IN>"\
     using 1:2 title 'SPS_O_Y2-Spare' with steps

  "< awk '/SPS_O_Y3/ {print $1, $3~/on/? 1 : 0; }' <IN>"\
     using 1:2 title 'SPS_O_Y3-Handshake' with steps

  "< awk '/iServer/ {print $1, $3~/on/? 1 : 0; }' <IN>"\
     using 1:2 title 'webServer' with steps


# Ende heiz_sps.gplot







Viel Erfolg

Frank
Titel: Aw: gnuplot digitaler Werte
Beitrag von: Puschel74 am 27 Juni 2013, 17:59:22
Hallo,

bitte nicht vom titel des Beitrags irritieren lassen aber damit

ZitatLink (http://forum.fhem.de/index.php?topic=13539.0)

sollte es doch auch einfacher gehen oder nicht?

Gemeint ist der 4. Beitrag

Grüße
Titel: Aw: gnuplot digitaler Werte
Beitrag von: wopl am 27 Juni 2013, 21:21:55
@Puschel74: o.k., hab ich nicht verstanden

@fiedel: die Filelog Zeile hab ich jetzt mal übernommen und siehe da: es funktioniert. Nun ja, das mit dem $fld hat dann ein paar minuten gebraucht, bis ich es verstanden hab. Die awk-Zeilen hab ich dann mal weggelassen, da sie - wenn ich das richtig verstehe - nur der Auswahl der Zeilen dienen. Bei mir ist jedoch in jeder Zeile Alles vorhanden. Also vielen Dank für den code.

Gruß Wolfram