Hauptmenü

gplot Fragen

Begonnen von Guest, 04 April 2011, 22:02:39

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Hallo zusammen,

ich brauche einmal Eure Hilfe zum Thema gplot. Als erste Übung möchte
ich die Kesseltemperatur
meiner Heizung als Graph darstellen. Als Basis hat sich hms_t.gplot
angeboten, welche ich
kopiert habe in hms_tmr.gplot. In der fhem.cfg habe ich den Weblink
eingefügt:
define FileLog_myHZCOM1 FileLog c:/fhem-5.0/tmp/HZCOM1-%Y.log myHZCOM1
attr myHZCOM1 logtype hms_tmr
define weblink_myHZCOM1 weblink fileplot
FileLog_myHZCOM1:hms_tmr:CURRENT
attr weblink_myHZCOM1 label "Heizung Min $data{min1}, Max $data{max1},
Last $data{currval1}"

Den (noch leeren) Graphen sehe ich auf der PGM2 Oberfläche.

Nun zu meinen Fragen.
In der Original hms_t.gplot stehen folgende Zeilen:
#FileLog 4:T:0:

plot \
  "< awk '/T:/ {print $1, $4}' "\
     using 1:2 axes x1y2 title 'Measured temperature' with lines lw 2

Verstehe ich die so richtig? #FileLog 4:T:0:
ist ein Filter der beim einlesen des Logfiles angewendet wird.
4 bedeutet Spalte 4 | T nur Einträge die T enthalten | 0 kann ich
nicht zuordnen | : wozu der letzte Doppelpunkt?

plot \
  "< awk '/T:/ {print $1, $4}' "\
Der gefilterte Logfile wird gelesen, wobei T: ein Spaltentrennzeichen
ist. print$1 scheint immer das
Datum zu sein (Spalte 1?), $4 verstehe ich den Bezug nicht. Das es
letztendlich der Temperaturwert ist,
ist klar. Ist damit Spalte 4 gemeint oder hat das mit #FileLog 4:T:0:
zu tun ?

Das Prinzip ist denk ich erkannt nur die Feinheiten fehlen noch.

Letzendlich möchte ich meinen Logfile filtern nach "Tk=+" und den
folgende zweistelligen Betrag
als Temperaturwert ausgeben.

Ich bin dankbar für jeden Tip.

Gruß Mark


Mein Logfile:
2011-04-04_05:31:11 myHZCOM1 value: Mo 05 28      0%
Ts=+10ß Tk=+25ßC=

2011-04-04_05:37:11 myHZCOM1 value: Mo 05 34      1%
Ta=+ 5ß Tk=+38ßC@

2011-04-04_05:40:11 myHZCOM1 value: Mo 05 37      2%
Ta=+ 5ß Tk=+42ßC@

2011-04-04_05:43:11 myHZCOM1 value: Mo 05 40      3%
Ts=+59ß Tk=+51ßC@

2011-04-04_05:46:11 myHZCOM1 value: Mo 05 43      3%
Ts=+59ß Tk=+63ßCD

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

Hallo zusammen,

ich bin nun einige Schritte weiter. Ein einer cygwin Umgebung hab ich
mit awk die Daten für den Plotbefehl aufbereitet.

Übertrage ich den Ausdruck nun in die hms_tmr.glpot Datei bleibt der
Graph leer.
#FileLog 3:0:0:

plot \
  "[A-Z][a-z] [0-9][0-9][^a][0-9][0-9]/, "leer") };  { gsub(/Ta\=\+/,
"Ta: ") }; { gsub(/Ts\=\+/, "Ts: ") }; { gsub(/[^a] Tk\=\+/, " Tk:
") }; { gsub(/\%/, "% ") }; { gsub(/myHZCOM1 v:/, "") }; { gsub(/
[^a]C/, " ") };print $1, $4}' "\
     using 1:3 axes x1y2 title 'Measured Mark temperature' with lines
lw 2

Eine Gegenprobe mit einer unter cygwin ausgegebenen Textdatei
funktioniert.

Frage 1, versteht plot alle awk Ausdrücke?
Frage 2,  wie kann ich eine Ausgabe /Debug in der gplot Datei
einschalten?

Danke

Gruß Mark

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

rudolfkoenig

                                                   

> Verstehe ich die so richtig? #FileLog 4:T:0:
> ist ein Filter der beim einlesen des Logfiles angewendet wird.
> 4 bedeutet Spalte 4 | T nur Einträge die T enthalten | 0 kann ich
> nicht zuordnen | : wozu der letzte Doppelpunkt?

Siehe auch http://fhem.de/HOWTO.html#plot

#FileLog ist _nur_ fuer die plotmode Werte gnuplot-scroll und SVG relevant.
In diesem Fall ersetzt fhem (01_FHEMWEB.pl) die awk Anweisung, und verwendet
stattdessen die Daten von "get ", siehe auch
http://fhem.de/commandref.html#FileLogget
Dabei wird alles nach "#FileLog als "" an das get weitergereicht.

Andersherum: #FileLog ist fuer plotmode=gnuplot irrelevant, in diesem Fall
werden die Daten von awk geliefert.


> Letzendlich möchte ich meinen Logfile filtern nach "Tk=+" und den
> folgende zweistelligen Betrag als Temperaturwert ausgeben.
> 2011-04-04_05:31:11 myHZCOM1 value: Mo 05 28  0% Ts=+10° Tk=+25°C

Mit #FileLog muesste das auch funktionieren:
  #FileLog 9:Tk=.(\d\d):15:$1
Bin selbst ueberrascht das $1 tut, habs aber gerade getestet :)


> Übertrage ich den Ausdruck nun in die hms_tmr.glpot Datei bleibt der
> Graph leer.

Eigentlich sollte die .gplot Datei ein nroemales gnuplot input Datei sein bis
auf die #FileLog Eigenheiten, di gnuplot ignorieren sollte.


> Frage 1, versteht plot alle awk Ausdrücke?

Das sollte man die gnuplot Leute fragen (wird das noch aktive entwickelt?),
aber ich glaube gnuplot startet einfach ein Shell mit dem Ausdruck, und alles
was rauskommt, wird als eine Datei behandelt. Ob das awk ist oder nicht, ist
gnuplot wahrscheinlich egal. Insofernt koennte man das in zwei Stufen testen:
- mit awk Datei erstellen, und diesen plotten
- awk Ausdruck ins .gplot datei, und gnuplot manuell aufrufen.


> Frage 2,  wie kann ich eine Ausgabe /Debug in der gplot Datei
> einschalten?

Was mir einfaellt: zweite Datei mit awk oeffnen, Debug output da reinschreiben.
Habs aber auf die schnelle nicht gefunden, ob das mit awk moeglich ist.

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

Nabend.
> Mit #FileLog muesste das auch funktionieren:
>   #FileLog 9:Tk=.(\d\d):15:$1
> Bin selbst ueberrascht das $1 tut, habs aber gerade getestet :)

Funktioniert wunderbar, vielen Dank.
Dazu empfehlen kann ich noch folgende Perl Doku
zum Thema Perl Regular Expressions (With Snippets)

http://www.troubleshooters.com/codecorn/littperl/perlreg.htm

Gruß Mark

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.