Gnuplot Ausgaben selbst erzeugen

1.049 Aufrufe
Direkt zur ersten ungelesenen Nachricht

Physiker

ungelesen,
05.08.2011, 16:24:2605.08.11
an FHEM users
Ich versuche gerade einen Logfile, in den alle meine
Temperatursensoren Schreiben schön darzustellen.
Dazu habe ich eine Datei mcul_ws_1.gplot erzeugt, die auch unter
gnuplot direkt funktioniert.
############################
# Display the s300th data reported by the CUL
# Corresponding FileLog definition:
# define <filelogname> FileLog /var/log/fhem/s300th-%Y.log <s300name>

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 ylabel "Temp (C)"
set y2label "Temp (C)"
set grid
set ytics
set y2tics
set format y "%.1f"
set format y2 "%.1f"
plot\
"<grep BadSens <IN>" using 1:4 title 'Bad' with lines,\
"<grep DuschSens <IN>" using 1:4 title 'Dusche' with lines,\
"<grep KuecheSens <IN>" using 1:4 title 'Kueche' with lines,\
"<grep SchlafzSens <IN>" using 1:4 title 'Schlafzimmer' with lines,\
"<grep WohnzSens <IN>" using 1:4 title 'Wohnzimmer' with lines

Diese Datei erzeugt aber eine Anzahl Fehler, die ich nicht verstehe.
Ist die Kommunikation von fhem mit PGM2 und Gnuplot irgendwo erklärt?

Rudolf Koenig

ungelesen,
07.08.2011, 06:51:3907.08.11
an fhem-...@googlegroups.com
> Ist die Kommunikation von fhem mit PGM2 und Gnuplot irgendwo erkl�rt?

Nicht sehr detailliert, aber siehe
http://fhem.de/HOWTO.html#plot
http://fhem.de/commandref.html#plotmode
http://fhem.de/commandref.html#FileLogget

Ich vermute Du willst die Daten mit dem SVG Modul rendern, und hast vergessen
die #FileLog Zeilen zu erstellen. Wenn plotmode=gplot ist, dann braucht man
diese nicht, sonst schon.

Physiker

ungelesen,
07.08.2011, 14:01:2207.08.11
an FHEM users
Hallo Rudi

ich habe den Plottmode auf gnuplot-scroll gehabt.

und die Fehlermeldungen aus dem Gnuplot.ERR schauen so aus:
gnuplot> plot "<grep BadSens <IN>" using 1:4 title 'Bad' with lines,
"<grep DuschSens <IN>" using 1:4 title 'Dusche' with lines
^
line 0: warning: Skipping data file with no valid points
sh: -c: Zeile 0: Syntaxfehler beim unerwarteten Wort `newline'
sh: -c: Zeile 0: `grep DuschSens <IN>'

gnuplot> plot "<grep BadSens <IN>" using 1:4 title 'Bad' with lines,
"<grep DuschSens <IN>" using 1:4 title 'Dusche' with lines

^
line 0: warning: Skipping data file with no valid points

gnuplot> plot "<grep BadSens <IN>" using 1:4 title 'Bad' with lines,
"<grep DuschSens <IN>" using 1:4 title 'Dusche' with lines

^
line 0: x range is invalid

Die Datenübergabe funktioniert vermutlich nicht, da gnuplot mit dem
plot Befehl auf der Gnuplotshell gut arbeitet, wenn ich <IN> durch den
Logfilename ersetze.

Wieso kann die Datenübergabe nicht funktionieren?

Viele Grüße

Markus

Rudolf Koenig

ungelesen,
07.08.2011, 16:39:1607.08.11
an fhem-...@googlegroups.com
> ich habe den Plottmode auf gnuplot-scroll gehabt.

Wahrscheinlich liefert die #FileLog Spezifikation nicht das was gnuplot
erwartet. Was der liefert, kann man selber mit

get <filelog> - - 2011-08-07 2011-08-08 <spec>

testen, siehe auch http://fhem.de/commandref.html#FileLogget
Dabei tauscht man <spec> durch den #FileLog Argument aus.

Physiker

ungelesen,
08.08.2011, 07:05:5808.08.11
an FHEM users
Hallo Rudi

bei dem plot oben hatte ich übersehen, das ich diese Zeilen auch für
gnuplot-scroll brauche. Die Ausgabe funktioniert, nur <L1> wird nicht
gesetzt, ich würde hier den Logfilenamen erwarten.

Ich habe mich jetzt um die Piri's gekümmert. Wieder klappt alles mit
gnuplot aber ich bekomme im SVG mode keine Achsbeschriftung und gar
nichts, dafür wird hier L1 gesetzt.

Der Test mit get HausLog - - 2011-08-07 2011-08-08 "1.6":MarkusP:1.6:
liefert
2011-08-07 1.6
#"1.6":MarkusP:1.6:


Der Grep auf die Datei liefert:
2011.08.08 11:54:36 2: FS20 MarkusP on
2011.08.08 12:04:52 2: FS20 MarkusP on
2011.08.08 12:15:05 2: FS20 MarkusP on
2011.08.08 12:20:48 2: FS20 MarkusP on
2011.08.08 12:31:18 2: FS20 MarkusP on
2011.08.08 12:34:05 2: FS20 MarkusP on
2011.08.08 13:00:12 2: FS20 MarkusP on


############################
# Display a piri log with multiple units logging into the same file.
# Corresponding FileLog definition:
# define pirilog FileLog /var/log/fhem/piri-%Y-%m-%d.log piri.*
# The devices are called piri.sz, piri.flo, piri.flu, prir.wz1 and
piri.wz2

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 ylabel "Piri"
set y2label "Piri"
set title '<TL>'
set ytics ("Markus" 1.6, "Barbara" 1.4, "Dusche" 1.2, "Bad" 1.0, "Sz"
0.8, "Gang" 0.6, "Flur" 0.4, "Wz" 0.2, "Kueche" 0.0)
set y2tics ("Markus" 1.6, "Barbara" 1.4, "Dusche" 1.2, "Bad" 1.0, "Sz"
0.8, "Gang" 0.6, "Flur" 0.4, "Wz" 0.2, "Kueche" 0.0)
set yrange [-0.1:1.7]
set y2range [-0.1:1.7]

#FileLog "1.6":MarkusP:1.6:
#FileLog "1.4":BarbaraP:1.4:
#FileLog "1.2":DuscheP:1.2:
#FileLog "1.0":BadP:1.0:
#FileLog "0.8":SchlafP:0.8:
#FileLog "0.6":GangP:0.6:
#FileLog "0.4":FlurP:0.4:
#FileLog "0.2":WohnP:0.2:
#FileLog "0.0":KuecheP:0.0:

plot\
"< awk '/MarkusP/{print $1, 1.6; }' <IN>" using 1:2 notitle with
points,\
"< awk '/BarbaraP/{print $1, 1.4; }' <IN>" using 1:2 notitle with
points,\
"< awk '/Duschep/{print $1, 1.2; }' <IN>" using 1:2 notitle with
points,\
"< awk '/BadP/{print $1, 1.0; }' <IN>" using 1:2 notitle with points
"< awk '/SchlafP/ {print $1, 0.8; }' <IN>" using 1:2 notitle with
points,\
"< awk '/GangP/{print $1, 0.6; }' <IN>" using 1:2 notitle with
points,\
"< awk '/FlurP/{print $1, 0.4; }' <IN>" using 1:2 notitle with
points,\
"< awk '/WohnP/{print $1, 0.2; }' <IN>" using 1:2 notitle with
points,\
"< awk '/KuecheP/{print $1, 0.0; }' <IN>" using 1:2 notitle with
points

Hast Du wieder einen schnellen Tipp, was ich diesmal falsch mache?

Vielen Dank

Markus


On 7 Aug., 22:39, Rudolf Koenig <inf...@koeniglich.de> wrote:
> > ich habe den Plottmode auf gnuplot-scroll gehabt.
>
> Wahrscheinlich liefert die #FileLog Spezifikation nicht das was gnuplot
> erwartet. Was der liefert, kann man selber mit
>
>   get <filelog> - - 2011-08-07 2011-08-08 <spec>
>
> testen, siehe auchhttp://fhem.de/commandref.html#FileLogget

Rudolf Koenig

ungelesen,
08.08.2011, 07:25:3508.08.11
an fhem-...@googlegroups.com
> Der Test mit get HausLog - - 2011-08-07 2011-08-08 "1.6":MarkusP:1.6:
> liefert
> 2011-08-07 1.6
> #"1.6":MarkusP:1.6:

Wie schaut es mit
get HausLog - - 2011-08-08 2011-08-09 "1.6":MarkusP:1.6:
aus?

Physiker

ungelesen,
08.08.2011, 13:15:4908.08.11
an FHEM users
Hallo Rudi,

Das Ergebnis ist gleich:
2011-08-08 1.6
#"1.6":MarkusP:1.6:

get HausLog - - 2011-08-08 2011-08-09 1:MarkusP:1.6:
liefert nur
2011-08-08 1.6
#1:MarkusP:1.6:

Ich schaue mir gerade das Ergebnis des awk auf der Kommandozeile an.
awk trennt das Datum und die Uhrzeit trotz des verbindenden
Unterstrichs auf. Mit print $1 bekommt man dann nur noch 2011-08-08
und mit $2 bekommt man nur die Uhrzeit. Dieses Verhalten kann man
bestimmt irgendwo global definieren. Hoffentlich unterscheidet sich
das nicht von Distribution zu Distribution von Linux.

Viele Grüße

Markus

Rudolf Koenig

ungelesen,
08.08.2011, 13:51:4408.08.11
an fhem-...@googlegroups.com
> awk trennt das Datum und die Uhrzeit trotz des verbindenden
> Unterstrichs auf.

Ich glaube awk trennt da gar nix selber: Ich sehe gerade, dass dein "Der Grep
auf die Datei liefert"... keine Unterstriche hatte zw. Datum und Uhrzeit. Das
fhem-log (bzw FileLog) ist aber auf diesen Unterstrich fixiert...

Physiker

ungelesen,
08.08.2011, 15:43:2008.08.11
an FHEM users
Hallo Rudi

Du hast recht, nur das HausLog sieht bei mir so aus. Alle anderen
Logfiles sind OK.
Damit wird es erzeugt.

attr global logfile /var/log/fhem/HausLog-%Y-%m.log

# Fake logfile, to access the global log
define HausLog FileLog /var/log/fhem/HausLog-%Y-%m.log fakelog
attr HausLog logtype mpiri_2:Piris,text:Raw-data

Ich habe das jetzt durch folgende Zeile ersetzt
define HausLog FileLog /var/log/fhem/HausLog1-%Y-%m.log *
und dieses Log sieht gut aus
aber in /var/log/fhem/HausLog-%Y-%m.log stehen jetzt lauter
Fehlermeldungen:
^* matches null string many times in regex; marked by <-- HERE in m/^*
<-- HERE $/ at /usr/share/fhem/FHEM/92_FileLog.pm line 80.
^* matches null string many times in regex; marked by <-- HERE in m/^*
<-- HERE $/ at /usr/share/fhem/FHEM/92_FileLog.pm line 80.
^* matches null string many times in regex; marked by <-- HERE in m/^*
<-- HERE $/ at /usr/share/fhem/FHEM/92_FileLog.pm line 80.
^* matches null string many times in regex; marked by <-- HERE in m/^*
<-- HERE $/ at /usr/share/fhem/FHEM/92_FileLog.pm line 80.
^* matches null string many times in regex; marked by <-- HERE in m/^*
<-- HERE $/ at /usr/share/fhem/FHEM/92_FileLog.pm line 80.
^* matches null string many times in regex; marked by <-- HERE in m/^*
<-- HERE $/ at /usr/share/fhem/FHEM/92_FileLog.pm line 80.
^* matches null string many times in regex; marked by <-- HERE in m/^*
<-- HERE $/ at /usr/share/fhem/FHEM/92_FileLog.pm line 80.
^* matches null string many times in regex; marked by <-- HERE in m/^*
<-- HERE $/ at /usr/share/fhem/FHEM/92_FileLog.pm line 80.

Wie geht es richtig? Ich möchte eigendlich alles loggen, um zu sehen,
was abläuft

Viele Grüße

Markus

On 8 Aug., 13:25, Rudolf Koenig <inf...@koeniglich.de> wrote:

Rudolf Koenig

ungelesen,
08.08.2011, 17:11:4808.08.11
an fhem-...@googlegroups.com
> define HausLog FileLog /var/log/fhem/HausLog1-%Y-%m.log *

Bitte regexp verwenden und kein shell-glob. In regexp * ist ein Quantor, kann
nicht alleine stehen: .* waere besser.

Allen antworten
Antwort an Autor
Weiterleiten
0 neue Nachrichten