Hallo,
könnte mir jemand zeigen, wie man einen Plot definiert (fhem.cfg+plotfile), wo mit mehrere Devices in
einer Grafik gearbeitet wird?
So funktioniert es bei mir mit
zwei Grafiken:
fhem.cfg:
Zitat
define wl_Motion SVG myDB:myHZ_motion:HISTORY
attr wl_Motion label "Helligkeit:Min $data{min1}, Max $data{max1}, Aktuell $data{currval1}"
attr wl_Motion plotfunction <b>BewMelder1</b>:brightness::
define wl2_Motion SVG myDB:myHZ_motion:HISTORY
attr wl2_Motion label "Bewegung:Min $data{min1}, Max $data{max1}, Aktuell $data{currval1}"
attr wl2_Motion plotfunction <b>Motion1Verlauf</b>:state::
myHZ_motion:
Zitat
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 ytics
set y2tic ("AUS" 0, "EIN" 1)
set title '<L1>'
set grid xtics y2tics
set ylabel "AN/AUS"
set y2label "Helligkeit"
#DbLog <SPEC1>
plot \
1:2 ls l1 axes x1y2 title 'Motion' with lines
Gruß
Blueberry63
Du brauchst doch im gplot Editor einfach weitere Zeilen hinzufügen, die genau so aussehen wie die erste? Und in jeder weiteren Zeile den gewünschten Devicenamen verwenden.
Wenn ich heute abend zu Hause bin, kann ich Dir ein Beispiel mit Wetterdaten zeigen.
Im Prinzip vermehren sich die Zeilen "#DbLog ..." und die plot Zeilen "1:2..." entsprechend der Anzahl der Devices.
Mehrere Werte eines Device bekomme ich ohne Probleme hin. Aber wenn die Werte von unterschiedlichen Devices kommen, funktioniert es eben nicht (hatte ich natürlich ausprobiert, bevor ich hier gepostet habe).
Ein Beispiel würde mir wahrscheinlich helfen, dann sehe ich bestimmt meinen Fehler.
Gruß
Blueberry63
machs doch mal umgekehrt, zeig doch mal Dein nicht funktionierendes Beispiel, vielleicht sehe ICH da was ;)
OK, hier die Konfig meines 1. Versuches, die Werte von zwei Devices in einem Plot darzustellen
fhem.cfg:
Zitat
define wl_Motion SVG myDB:myHZ_motion:HISTORY
attr wl_Motion label "Helligkeit/Bewegung:Min $data{min1}, Max $data{max1}, Aktuell $data{currval1}"
attr wl_Motion plotfunction Motion1Verlauf:state:: BewMelder1:brightness::
myHZ_motion.gplot
Zitat
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 ytics
set y2tic ("AUS" 0, "EIN" 1)
set title '<L1>'
set grid xtics y2tics
set ylabel "AN/AUS"
set y2label "Helligkeit"
#DbLog <SPEC1>:$val=($val=~"EIN"?1:0)
#DbLog <SPEC2>
plot \
1:2 ls l1 axes x1y2 title 'Motion' with lines \
1:2 ls l2 axes x1y2 title 'Helligkeit' with lines
Gruß
Blueberry63
Hallo,
so habe ich den weblink definiert:
define wl_Heizung_HM SVG myDbLog:temp_hmdb:HISTORY
attr wl_Heizung_HM fixedrange 5days
attr wl_Heizung_HM label "Heizung Vorlauf Aktuell: $data{currval1} Ruecklauf Aktuell: $data{currval2}"
attr wl_Heizung_HM plotfunction Keller_Heizung_Vorlauf Keller_Heizung_Ruecklauf Wasserpumpe Freigabe
attr wl_Heizung_HM room 05_Plots_Heizkessel
Das ist meine temp_hmdb dazu:
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 ytics nomirror
set y2tics
#set ytics
set title '<L1>'
set grid xtics y2tics
set yrange [-0.20:1.2]
set y2label "°C"
set ylabel "Ein/Aus"
#DbLog <SPEC1>:temperature::
#DbLog <SPEC2>:temperature::
#DbLog <SPEC3>:state:::$val=~s/(Ein|Aus|dim)(\d*).*/$1eq"Ein"?1:($1eq"dim"?$2*0.01:0)/eg
#DbLog <SPEC4>:state:::$val=~s/(on|off).*/$1eq"on"?1.05:0.05/eg
plot \
1:2 ls l0 axes x1y2 title 'Temperatur Vorlauf (°C)' with lines
1:2 ls l2 axes x1y2 title 'Temperatur Ruecklauf (°C)' with lines
"< awk '{print $1, $3~/dim.*/? 1 : 0; }' <IN>"\
using 1:2 ls l1 axes x1y1 title 'Wasserpumpe (Ein/Aus)' with steps
"< awk '{print $1, $3~/dim.*/? 1 : 0; }' <IN>"\
using 1:2 ls l3 axes x1y1 title 'Freigabe (Ein/Aus)' with steps
Und so sieht der Plot aus (siehe Screenshot).
Grüße
vier verschiedene Devices...
# Created by FHEM/98_SVG.pm, 2014-01-10 22:44:22
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 ("0" 0, "25" 25,"50" 50, "75" 75, "100" 100)
set grid y2tics
set ylabel "Temperatur °C"
set y2label "Feuchte %"
set y2range [0:100]
set y3label "Druck hPa"
set y3range [950:1050]
#DbLog out_Balkon:temperature::
#DbLog BMP180:pressure-nn::
#DbLog out_Balkon:humidity::
#DbLog out_Regen_Rain:state::
#DbLog sunDummy:state::
#DbLog out_Balkon:dewpoint::
plot "<IN>" using 1:2 axes x1y1 title 'T' ls l0 lw 1 with lines,\
"<IN>" using 1:2 axes x1y3 title 'P' ls l1 lw 1 with lines,\
"<IN>" using 1:2 axes x1y2 title 'H' ls l2 lw 1 with lines,\
"<IN>" using 1:2 axes x1y2 title ' ' ls l2fill lw 1 with steps,\
"<IN>" using 1:2 axes x1y2 title ' ' ls l4fill lw 0.2 with steps,\
"<IN>" using 1:2 axes x1y1 title ' ' ls l0 lw 0.2 with lines
@Puschel74Q@betateilchn
Ihr habt mir geholfen, nach einigem Ausprobieren habe ich den Plot hinbekommen :D
DANKE!
Gruß
Blueberry63
Hallo
da ich langsam verzweifel, bitte ich um Eure Hilfe:
Ich bin von der Fritzbox umgezogen auf eine RaspberryPI mit #DBLog. Dabei setzte ich nochmals alles neu auf.
Mein großes Problem ist am Anfang ein Plot für einen FHT. Genauer um das Fenster und das Thermostat darzustellen. Im Gegensatz zum Filelog bekomme ich einfach nicht die Umwandlung der state in 0 und 1 nach obigem und anderen Beispielen hin.
### Gerät FHT80B
#
define Chr_Heizung FHT 4953
attr Chr_Heizung IODev CUL_0
attr Chr_Heizung event-on-change-reading .*
attr Chr_Heizung event-on-update-reading state
attr Chr_Heizung group Temperaturen
attr Chr_Heizung icon heizung.0
attr Chr_Heizung room 02 Devices,Christoph
###########################################################
#
# weblink / SVG
###########################################################
define wl_Chr_Heizung SVG myDbLog:0_svg_Chr_Heizung:HISTORY
attr wl_Chr_Heizung label "Raum Christoph - aktuelle Temperatur: $data{currval1}"
attr wl_Chr_Heizung room 03_Plots
und dann
set y2label "Zu / Offen"
set y2range [-0.20:1.2]
#DbLog Chr_Heizung:temperature
#DbLog Chr_Heizung:desired-temp
#DbLog Chr_Fenster:state:::$val=~s/(Open|Closed).*/$1eq"Open"?1.05:0.05/eg
plot "<IN>" using 1:2 axes x1y1 title 'Temperatur' ls l0fill lw 1 with lines,\
"<IN>" using 1:2 axes x1y1 title 'Soll-Temperatur' ls l1 lw 1 with lines,\
"< awk '{print $1, $3~/dim.*/? 1 : 0; }' <IN>"\
using 1:2 ls l3 axes x1y1 title 'Fenster' with steps
Die Datenbank sieht korrkt aus (READING = "state", VALUE = "Open" bzw. "Closed") , wobei mich die Anzahl der Einträge noch stört, aber das ist ein anderes Thema.
Mit diesen Einstellungen bekomme ich für das Fenster nur einen Strich am unteren Rand des Plots. Der Wechsel von Closed auf Open ist dabei ganz schwach zu sehen.
Ich hoffe auf Eure Hilfe
vg
Jürgen
Hallo,
#DbLog Chr_Fenster:state:::$val=~s/(Open|Closed).*/$1eq"Open"?1.05:0.05/eg
Versuch mal anstelle von state das Reading Window.
#DbLog Chr_Fenster:Window:::$val=~s/(Open|Closed).*/$1eq"Open"?1.05:0.05/eg
Ungetestet.
Grüße
Hallo Puschel74
vielen Dank für die schnelle und frühe Antwort.
Dein Vorschlag hat leider nicht weitergeholfen. Das hatte ich vorher auch schon getestet. Aber die Antwort hat mich veranlasst, nochmals ganz genau den Code zu zu studieren.
Es war mein Fehler: Die Scalierung habe ich auf die rechten Achse gebracht, im Original war es links. Das hatte ich nicht angepasst. (Den Plot-Editor kann ich im Moment nicht nutzen, da mir falsche Readings (wahrscheinlich wegen fehlender aktueller Daten) die gplot-File zerschießen.
Nochmals Danke :)