FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Tabularasa am 26 November 2018, 22:02:31

Titel: Column im SVG Plot bei DBLog
Beitrag von: Tabularasa am 26 November 2018, 22:02:31
Hallo. Ich habe auf dblog umgestellt. Ich habe ein Reading von dem statistics Modul, welches mehrere Werte enthält. Mit filelog konnte ich bei column den richtigen Wert für den Plot auswählen wie man es in dem ersten Bild sieht. Wie kann ich diese Werte von dem Reading denn bei dblog darstellen? Dort fehlen mir bei der Auswahl auch sämtliche aktuellen Werte.

Edit: muss ich denn Current oder History beim erstellen der SVG Plots auswählen?
Titel: Antw:Column im SVG Plot bei DBLog
Beitrag von: Tabularasa am 04 Dezember 2018, 20:43:33
Hab das Thema mal hierher verschoben und will es mal wieder vorholen ;D
Titel: Antw:Column im SVG Plot bei DBLog
Beitrag von: DS_Starter am 04 Dezember 2018, 22:49:27
ZitatEdit: muss ich denn Current oder History beim erstellen der SVG Plots auswählen?
Immer die Werte aus der history Tabelle. Die current ist nur eine Hilfestellung zur Auswahl der Device/Reading Kombinationen im SVG-Editor.

Alle Readings deren Inhalt sich aus mehreren Werten zusammensetzt musst du mit regulären Ausdrücken behandeln um den gewünschten Wert zu extrahieren.

Beispiel zur Extraktion der drei Bestandteile eines state-Readings:


Datensatz: state T: 19.6 H: 53 D: 9.8

#lp DbLog:logdb,predict,extend=24*60*60:Temp_Zimmer:state:::$val=~s/.*H..([\d.]*).*/$1/eg     (H-Wert extrahieren)
#lp DbLog:logdb,predict,extend=24*60*60:Temp_Zimmer:state:::$val=~s/^T..([\d.]*).*/$1/eg      (T-Wert extrahieren)
#lp DbLog:logdb,predict,extend=48*60*60:Temp_Zimmer:state:::$val=~s/.*D..([\d.]*).*/$1/eg     (D-Wert extrahieren)


Im Wiki gibt es auch noch Erläuterungen dazu: https://wiki.fhem.de/wiki/SVG-Plots_von_FileLog_auf_DbLog_umstellen
Titel: Antw:Column im SVG Plot bei DBLog
Beitrag von: Tabularasa am 05 Dezember 2018, 20:33:57
Zitat von: DS_Starter am 04 Dezember 2018, 22:49:27
Immer die Werte aus der history Tabelle. Die current ist nur eine Hilfestellung zur Auswahl der Device/Reading Kombinationen im SVG-Editor.

Ok. Danke. Weil sich, egal ob ich current oder history anhänge, die Plots gleichermaßen aufbauen. Aber nochmal kurz die Frage, warum habe ich keine Zahlen Werte bei den example lines for input?
Zitat von: DS_Starter am 04 Dezember 2018, 22:49:27

Beispiel zur Extraktion der drei Bestandteile eines state-Readings:

Datensatz: state T: 19.6 H: 53 D: 9.8

#lp DbLog:logdb,predict,extend=24*60*60:Temp_Zimmer:state:::$val=~s/.*H..([\d.]*).*/$1/eg     (H-Wert extrahieren)
#lp DbLog:logdb,predict,extend=24*60*60:Temp_Zimmer:state:::$val=~s/^T..([\d.]*).*/$1/eg      (T-Wert extrahieren)
#lp DbLog:logdb,predict,extend=48*60*60:Temp_Zimmer:state:::$val=~s/.*D..([\d.]*).*/$1/eg     (D-Wert extrahieren)


Im Wiki gibt es auch noch Erläuterungen dazu: https://wiki.fhem.de/wiki/SVG-Plots_von_FileLog_auf_DbLog_umstellen
Könntest du mir das nochmal aufschlüsseln oder einen link/suchwort geben wo ich das verstehen kann?
:::---->
$val=~s/ ---->
^T..----->
([\d.]*).*---->
/$1/----->
eg ----->

Und warum ^T und nicht .*T?

Herzlichen Dank
Titel: Antw:Column im SVG Plot bei DBLog
Beitrag von: DS_Starter am 05 Dezember 2018, 21:52:56
Zitat
Aber nochmal kurz die Frage, warum habe ich keine Zahlen Werte bei den example lines for input?
Der SVG-Editor wird durch das SVG-Modul bereitgestellt. Die Frage wäre dort richtig gestellt. Aber soviel ich weiß ist das Editorverhalten je nach Quelle (Filelog/Dblog) nicht exakt gleich. Wenn ich es noch richtig weiß (verwende Filelog nicht) stellen diese Zahlenwerte das Wertfeld dar, siehe https://wiki.fhem.de/wiki/Plots_erzeugen

:::---->                  .gplot File Formatvorgabe , https://wiki.fhem.de/wiki/Plots_erzeugen
$val=~s/ ---->        $val wird durch den regulären Ausdruck s/... verändert 
^T..----->                Zeichenkette beginnt mit T gefolgt von zwei beliebigen Zeichen
([\d.]*).*---->         regulärer Ausdruck  \d. steht für eine Ziffer oder Punkt, das ganze beliebig oft -> wird in Variable $1 gespeichert
/$1/----->               hier wird der Wert von Variable $1 eingesetzt
eg ----->                Modifikatoren:  e -> $1 wird als Ausdruck und nicht als Suchstring gewertet  g -> globale Suche  (http://www.mathematik.uni-ulm.de/help/perl5/doc/perlop.html)

Ich hoffe damit kommst du klar und ich habe alles richtig dargestellt/erläutert  ;)

Grüße
Heiko

Titel: Antw:Column im SVG Plot bei DBLog
Beitrag von: Tabularasa am 06 Dezember 2018, 22:16:16
Erstmal schönen Dank für die ausführliche Erläuterung. Ich dachte auch erst ich habe es verstanden und habe von den vorhandenen gplots diese genommen
# SYSMON
#
# Network-Traffic ETH0 (DbLog)
#

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 "Traffic RX / TX"
set y2label "Traffic Total"
set grid
set ytics
set y2tics
set format y "%.2f"
set format y2 "%.2f"

#DbLog <SPEC1>:eth0_diff:::$val=~s/^RX..([\d.]*).*/$1/eg
#DbLog <SPEC1>:eth0_diff:::$val=~s/.*TX..([\d.]*).*/$1/eg
#DbLog <SPEC1>:eth0_diff:::$val=~s/.*Total..([\d.]*).*/$1/eg

plot \
   "< awk '/eth0_diff:/ {print $1, $4}' <IN>" \
   using 1:2 ls l0 axes x1y1 title 'RX' lw 1 with lines \
   "< awk '/eth0_diff:/ {print $1, $4}' <IN>" \
   using 1:2 ls l1 axes x1y1 title 'TX' lw 1 with lines \
   "< awk '/eth0_diff:/ {print $1, $4}' <IN>" \
   using 1:2 ls l2 axes x1y2 title 'Total' lw 1 with lines \

und versucht an mich anzupassen
# Created by FHEM/98_SVG.pm, 2018-12-06 20:46:03
# SYSMON
#
# Network-Traffic ETH0 (DbLog)
#

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 "Traffic RX / TX"
set y2label "Traffic Total"
set grid
set ytics
set y2tics
set format y "%.2f"
set format y2 "%.2f"


#DbLogging RPi:eth0_diff:::$val=~s/^RX..([\d.]*).*/$1/eg
#DbLogging RPi:eth0_diff:::$val=~s/.*TX..([\d.]*).*/$1/eg
#DbLogging RPi:eth0_diff:::$val=~s/.*Total..([\d.]*).*/$1/eg

plot \
   "< awk '/eth0_diff:/ {print $1, $4}' <IN>" \
   using 1:2 ls l0 axes x1y1 title 'RX' lw 1 with lines \
   "< awk '/eth0_diff:/ {print $1, $4}' <IN>" \
   using 1:2 ls l1 axes x1y1 title 'TX' lw 1 with lines \
   "< awk '/eth0_diff:/ {print $1, $4}' <IN>" \
   using 1:2 ls l2 axes x1y2 title 'Total' lw 1 with lines \

jedoch bekomme ich keinen Graphen angezeigt.
Titel: Antw:Column im SVG Plot bei DBLog
Beitrag von: DS_Starter am 06 Dezember 2018, 22:38:57
Hier mal zum Vergleich mein funktionierendes .gplot File auch für eth0 von Sysmon:


# Created by FHEM/98_SVG.pm, 2016-04-17 21:20:20
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
set ylabel "Traffic RX / TX"
set y2label "Traffic RX / TX"

#LogDB sysmon:eth0_diff:::$val=~s/^RX..([\d.]*).*/$1/eg
#LogDB sysmon:eth0_diff:::$val=~s/.*TX..([\d.]*).*/$1/eg

plot "<IN>" using 1:2 axes x1y1 title 'empfangen' ls l1 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'gesendet' ls l0 lw 1 with lines


Benutze die Taste Show preprocessed input. Dort müssen die Rohwerte aufgelistet werden.
Titel: Antw:Column im SVG Plot bei DBLog
Beitrag von: Tabularasa am 07 Dezember 2018, 09:47:02
Ja also wenn ich das von dir direkt auf mich umschreibe habe ich die Werte da. Da muss ich nochmal forschen wo die Unterschiede sind. Komme jedoch erst gegen Sonntag ich dazu.
Danke nochmal