Kann ich Feuchtigkeit, Temperatur UND Luftdruck in einen Plot bringen? Es werden doch immer nur zwei Größen angezeigt. Und der Plot müsste auf zwei logfiles zugreifen.
es gehen beliebig viele kurven mit bis zu 6 y-achsen von denen aber nur zwei angezeigt werden. ich hatte für das alte plot modul (vor SVG) einen patch gebaut der eine dritte angezeigt hat.
die daten müssen aus dem gleichen log file komme.
zum mischen unterschiedlicher sensoren bietet sich db log an. einfach alles in eine db logge. und dann beliebig kombinieren.
gruss
andre
ne, stimmt nicht ganz - siehe Anhang.
Bernhard
Doch das stimmt. Was soll man Deinem Screenshot entnehmen?
Natürlich kann ich beliebig viele Devices in einem Logfile loggen, das ich dann zum plotten verwende, aber der SVG Plot liest nur aus EINEM Logfile, wie von andre schon geschrieben:
DEF FileLog_out_Balkon:wl_out_Balkon:CURRENT
^^^^^^^^^^^^^^^^^^
:-)
die Antwort gibst du doch selber. Die Kernfrage war doch, wie kann ich weitere Kurven im Plot anzeigenß
Dafür sorgen, dass im Logfile die entsprechenden Daten vorhanden sind - wie auch immer
Bernhard
Das war aber auch ein Teil der Frage, wie bekomme ich von zwei Devices die Daten in einen Log?
Indem du die Definition des Logfiles so änderst, dass auch das zweite Device mit geloggt wird. Stichwort: regexp
define blaLog FileLog ./log/blaLog-%Y.log (device1|device2|device3)
loggt die aufgeführten drei Geräte in ein gemeinsames Logfile.
Ahh, viel Danke vielmals. Ich hatte die Devices mit "," getrennt.
das ist regex (http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck) und nicht irgendeine fhem-Aufzählung ;)
Ich bekomme es immer noch nicht geregelt. So sieht es jetzt aus:
define FileLog_Test FileLog ./log/Meine_Logs/Test-%m.log (Temp_aussen|BMP180)
attr FileLog_Test logtype TempDruck:Temp/Hum,text
attr FileLog_Test room CUL_TX
define weblink_TEST SVG FileLog_TEST:TempDruck:CURRENT
attr weblink_TEST label "Temp_Druck Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr weblink_TEST room Plots,CUL_TX
Ausschnitt aus der logfile:
2013-10-14_17:17:02 Temp_aussen T: 13.4 H: 73.0
2013-10-14_17:17:02 Temp_aussen temperature: 13.2
2013-10-14_17:17:09 BMP180 T: 43.0 P: 1006.0 P-NN: 1016.4
2013-10-14_17:17:09 BMP180 temperature: 43.0
2013-10-14_17:17:09 BMP180 pressure: 1006.0
2013-10-14_17:17:09 BMP180 pressure-nn: 1016.4
2013-10-14_17:20:12 BMP180 T: 43.0 P: 1006.0 P-NN: 1016.4
2013-10-14_17:20:12 BMP180 temperature: 43.0
2013-10-14_17:20:12 BMP180 pressure: 1006.0
2013-10-14_17:20:12 BMP180 pressure-nn: 1016.4
Die TempDruck.gplot ist eine kopie der temp4hum4.gplot. Es erscheint aber keine Auswahlzeile in dem Editor "Example lines for input:"
Was fehlt da?
Nächster Versuch, ich krieg es nicht hin. Teil der cfg:
define FileLog_Test FileLog ./log/Meine_Logs/Test-%m.log (Temp_aussen|BMP180)
attr FileLog_Test logtype SVG_FileLog_Test_1:Druck,text
attr FileLog_Test room CUL_TX
define weblink_TEST SVG FileLog_TEST:SVG_FileLog_Test_1:CURRENT
attr weblink_TEST label "Temp_Druck Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr weblink_TEST plotsize 800,400
attr weblink_TEST room Plots,CUL_TX
Wenn ich den room CUL_TX aufrufe sehe ich meine plots von temp_aussen und temp_innen wie gewünscht. Nur der plot Test erscheint mit willkürlichem Inhalt
(meist temp_aussen) mit label CURRENT anstelle von "Temp_Druck Min $data{min1}, Max $data{max1}, Last $data{currval1}"
Ich weis nicht warum
du hat in der SVG definition das test in FileLog_TEST gross geschrieben. dein log file heisst aber FileLog_Test mit mixed case test.
SVG macht seltsame sachen wenn das logfile oder die db nicht da sind.
gruss
andre
Oh, Mann, das kommt davon, wenn man vor lauter Bäumen den Wald nicht sieht. Danke!!!!!!!!!!!!!!!!!!!!!!!!
Hallo,
ich hab mal wieder eine Fräge.
Ich logge ja alles in mein DBLog.
Kurven meiner Sensoren kann ich auch wunderbar darstellen aber bei meinen Schaltern komme ich nicht weiter.
Evtl. kann mir ja mal jemand (andre? ;) ) auf die Srpünge helfen bitte.
Definiert ist
- ein FS20-Schalter der per FHEM einwandfrei bedient werden kann und der state auch brav on und off ist
- mein DBLog (logischerweise)
- mein Weblink der aber immer nur off zeigt
############################
# 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 '<L1>'
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"
#DbLog <SPEC1>:state::
plot "< awk '{print $1, $3~/on/? 1 : 0; }' <IN>"\
using 1:2 notitle with steps
versuch es mal mit data statt state. da wird genau so wie bei einigen anderen devices state umgemapped.
gruss
andre
Hallo,
danke für die Antowrt andre aber ein
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 ("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"
#DbLog <SPEC1>:data::
plot "< awk '{print $1, $3~/on/? 1 : 0; }' <IN>"\
using 1:2 notitle with steps
in der fs20db.gplot brachte nur einen leeren Plot hervor.
Also nichtmal die Linie bei off.
Grüße
du musst die on/off aus dem log noch auf 0/1 mappen etwa so:<SPEC1>:data:::$val=~s/(on|off).*/$1eq"on"?1:0/eg
gruss
andre
Hallo,
Zitat<SPEC1>:data:::$val=~s/(on|off).*/$1eq"on"?1:0/eg
Autsch - auf sowas muss man erstmal kommen.
Aber klappt leider auch nicht - Plot bleibt leer.
Ich dachte in meiner "jugendlichen" Naivität das
plot "< awk '{print $1, $3~/on/? 1 : 0; }' <IN>"\
nach on sucht - als Ergebnis eine 1 an plot liefert sonst eine 0 und das
set ytics ("Off" 0, "On" 1)
set y2tics ("Off" 0, "On" 1)
aus einer 0 im Plot ein OFF macht und eine 1 ein ON.
Grüße
Zitat von: Puschel74 am 18 Oktober 2013, 21:06:51
Hallo,
Autsch - auf sowas muss man erstmal kommen.
oder in der commandref nachschauen :)
ZitatAber klappt leider auch nicht - Plot bleibt leer.
Ich dachte in meiner "jugendlichen" Naivität das
plot "< awk '{print $1, $3~/on/? 1 : 0; }' <IN>"\
nach on sucht - als Ergebnis eine 1 an plot liefert sonst eine 0 und das
der teil ist noch aus gplot zeiten und wird nur zum teil ausgewertet. das mapping z.b. genau nicht.
Zitatset ytics ("Off" 0, "On" 1)
set y2tics ("Off" 0, "On" 1)
aus einer 0 im Plot ein OFF macht und eine 1 ein ON.
das ist nur für die achsen beschriftung da. sonst für nichts.
also schritt für schritt:
- zuerst nachschauen was wirklich in der db steht:
sqlite <dein db file>
und dann
select * from HISTORY where DEVICE="<dein fs20 device>";
oder entsprechend für mysql.
da muss als READING data auftauchen uns als VALUE etwas mit on oder off.
gruss
andre
Hallo,
Zitatselect * from HISTORY where DEVICE="EG_Eingang_Licht_innen";
liefert als state Aus und Ein-for-timer 30 8)
Stimmt ja auch - ich schalte das Licht meist mit Timer ein :o
Dann werd ich deine Tipps nochmal versuchen. Diesmal mit Ein-for-timer 30.
Grüße
dann musst du beim mappen im plotfile natürlich ein und aus statt on und off verwenden.
das -for-timer wird schon abgefangen.
gruss
andre
Hallo,
Zitatdas -for-timer wird schon abgefangen.
was die Sache schon ungemein erleichtert.
Danke nochmal für die Hilfe andre.
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 ("Aus" 0, "Ein" 1)
set y2tics ("Aus" 0, "Ein" 1)
set yrange [-0.1:1.1]
set y2range [-0.1:1.1]
set ylabel "Status"
set y2label "Status"
#DbLog <SPEC1>:state:::$val=~s/(Ein|Aus).*/$1eq"Ein"?1:0/eg
plot "< awk '{print $1, $3~/Ein/? 1 : 0; }' <IN>"\
using 1:2 notitle with steps
So klappts auch mit dem Plot.
Grüße
Edith: Mal schauen ob ichs auch für on/off und dim hinbekomme.
wirklich state und nicht data?
gruss
andre
Hallo,
Zitatwirklich state und nicht data?
Jep. state
Mit data bekomm ich nur einen leeren Plot geliefert und die select-Abfrage hat auch state geliefert.
Grüße
seltsam...
aber wenn es geht ist ja alles gut.
gruss
andre
Hallo,
so sehen zumindest die Plots aus:
(http://screenshot018.jpg)
Nur der OG_Flur_Licht lässt sich auch mit einem
#DbLog <SPEC1>:state:::$val=~s/(Ein|Aus|dim).*/$1eq"Ein"?1:0/eg
nicht überreden - klar kann aiúch nicht da ja Ein auf 1 und der Rest auf 0 gemapped wird.
Als state habe ich dort dim100% und dim81%.
Wenn ich
#DbLog <SPEC1>:state:::$val=~s/(Ein|Aus|dim).*/$1eq"dim"?1:0/eg
eintrage wird natürlich alles mit dim auf 1 gemapped und die restlichen Plots bringen wieder nur Aus.
Ist es möglich (wird sicher sein nur wie??) das ich bei FS20-Dimmer so einen "ähnlichen" Plot mache wie bei den FHT80-actuator?
Also den Prozentwert zwischen 0 und 100 und Aus = 0 und dim100% und Ein = 100.
Die fs20db.gplot aber so allgemein gehalten bleibt das ich auch Geräte plotten kann die nur Ein und Aus liefern?
Danke für die Hilfe.
Grüße
Edith: Das
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 ("Aus" 0, "Ein" 100)
set y2tics ("Aus" 0, "Ein" 100)
set yrange [-0.1:100.1]
set y2range [-0.1:100.1]
set ylabel "Status"
set y2label "Status"
#DbLog <SPEC1>:state:::$val=~s/(Ein|Aus|dim).*/$1eq"Ein"?100:0/eg
plot "< awk '{print $1, $3~/Ein/? 1 : 0; }' <IN>"\
using 1:2 notitle with steps
klappt auch nicht.
Irgendwo habe ich noch einen gewaltigen Denkfehler :-\
ich würde zweistufig vorgehen:
- per eventMap dim0 auf aus und dim100 auf ein mappen. etwa so:attr <device> eventMap
/dim0%:Aus/dim100%:Ein/
- dann die $val bestimmung drei stufig machen:$val=~s/(Ein|Aus|dim).*/$1eq"Ein"?1:($1eq"dim"?0.5:0)/eg
wenn du mit der regex beim suchen spielst kannst du vermutlich sogar die dim werte genau bestimmen und nicht alles was gedimmt ist auf 0.5 setzen.
gruss
andre
edit: idee für die dim level:$val=~s/(Ein|Aus|dim(\d*)).*/$1eq"Ein"?1:($1eq"dim"?$2/100:0)/eg
Hallo,
das
$val=~s/(Ein|Aus|dim(\d*)).*/$1eq"Ein"?1:($1eq"dim"?$2/100:0)/eg
brachte das
Zitat2013.10.21 19:30:36 3: DbLog: Error in inline function: <$val=~s/(Ein|Aus|dim(\d*)).*/$1eq"Ein"?1:($1eq"dim"?$2/100:0)/eg>, Error: syntax error at (eval 338384) line 1, near "s/(Ein|Aus|dim(\d*)).*/$1eq"Ein"?1:($1eq"dim"?$2/100"
Ich habe erstmal aber auch nur ein einfaches
$val=~s/(Ein|Aus|dim).*/$1eq"Aus"?0:1/eg
am Start was mir wenigstens anstelle des Dimmwertes eine 1 bringt im Plot.
Grüße
der parser kommt mit den / für geteilt durch durcheinander.
wenn du noch lust hast versuch mal das hier:
$val=~s/(Ein|Aus|dim(\d*)).*/$1eq"Ein"?1:($1eq"dim"?$2*0.01:0)/eg;
gruss
andre
Hallo,
danke nochmal für deine unermüdliche Unterstützung andre :)
Leider hat
$val=~s/(Ein|Aus|dim(\d*)).*/$1eq"Ein"?1:($1eq"dim"?$2*0.01:0)/eg;
(in meiner Verzweiflung auch mit und ohne ; am Ende versucht) nicht geklappt.
Und auch mein versuchtes
$val=~s/(Ein|Aus|dim).*/$1eq"Ein"?1:($1eq"dim"?$2*0.01:0)/eg;
sowie
$val=~s/(Ein|Aus|dim).*/$1eq"Ein"?1:$1eq"dim"?$2*0.01:0/eg;
und auch
$val=~s/(Ein|Aus|dim(\d*)).*/$1eq"Ein"?1:$1eq"dim"?$2*0.01:0/eg;
hat nicht gefruchtet.
Ein und dim wurde bei beiden ignoriert und der Plot zeigt nur eine schöne Linie bei Aus.
Grüße
mein fehler... die klammern waren falsch.$val=~s/(Ein|Aus|dim)(\d*).*/$1eq"Ein"?1:($1eq"dim"?$2*0.01:0)/eg
und ohne das semikolon.
gruss
andre
Hallo,
yeah - bingo.
Tausend Dank andre.
Wenn man genau hinsieht erkennt man das die Linien mal bei ~80% enden und mal bis ganz rauf gehen.
Grüße
Ich klinke mich hier auch mal kurz ein, weil das Thema so schön passt.
Wie zuvor ja schon gesagt wurde kann man ja mehr als die zwei (linke und rechte) Y-Achsen nutzen. Die ist zum Beispiel nötig, wenn meine 3+ Kurven völlig verschiedene Ranges haben. Mit dem SVG-Editor komm ich ich dann nicht weiter, was nicht dramatisch ist, das kann ich ja auch mit nem Texteditor anpassen: axes x1y3
Der Haken ist nur, dass, sobald man den SVG-Editor dann irgendwann verwendet um z.B. an Kurve 1 eine Kleinigkeit zu ändern, er auch Kurve 3 versaut, weil er dort dann die Achse auf right (y2) setzt.
Gibt es eine Möglichkeit das zu verhindern? Kann ich da etwas sperren?
Grüße
Jan
Der SVG-Editor macht noch ganz andere schräge Sachen. Damit muss man sich abfinden und bei karierten Maiglöckchen auf seine Verwendung komplett verzichten.