Hallo,
nach einigem rumprobieren habe ich es endlich geschafft, den Status meiner Homematic Fensterkontakte vernünftig in einem SVG-Plot darzustellen. Dafür verwende ich folgende Definition im gPlot File:
#lp FileLog:FileLog_Schlafzimmer.Fenster,extend=86400,predict:3:Schlafzimmer.Fenster.*:3:$fld[2]=~"open"?1:0
Damit mappe ich den Status open auf 1 und closed auf 0.
Jetzt haben die Fensterkontakte aber auch noch den Status "tilted". Also der Wert an der zweiten Spalte im Logfile kann sein "open", "closed", "tilted". Das möchte ich folgendermaßen mappen:
open: 1
tilted: 0.5
close: 0
Und da verließen mich meine Kenntnisse... wie muss ich den Ausdruck hinter "$fld[2]=..." ändern, um das hinzukriegen?
#lp FileLog:FileLog_Schlafzimmer.Fenster,extend=86400,predict:3:Schlafzimmer.Fenster.*:3:$fld[2]=~"open"?1:$fld[2]=~"tilted"?0.5:0
Ungetestet, sollte aber funktionieren...
Zitat von: rapster am 04 Oktober 2015, 14:46:06
#lp FileLog:FileLog_Schlafzimmer.Fenster,extend=86400,predict:3:Schlafzimmer.Fenster.*:3:$fld[2]=~"open"?1:$fld[2]=~"tilted"?0.5:0
Ungetestet, sollte aber funktionieren...
Oh mann. Also ich könnte schwören, dass ich es genau so schon mal hatte. Aber irgendwo war wohl was falsch- vielen Dank, das funktioniert wirklich so 8)
Dann habe ich jetzt noch ein allerletztes (kleines Problem), was aber auch zum Thema RegEx passt. In das Logfile was meinen Plot erstellt möchte ich nur die entsprechenden open/closed/tilted Meldungen loggen (Der Kontakt erzeugt noch jede Menge andere Event, wie Alive etc.). Das mache ich im define so:
./log/Schlafzimmer.Fenster-%Y.log Schlafzimmer.Fenster:closed.*|Schlafzimmer.Fenster:open.*|Schlafzimmer.Fenster:tilted.*
Das Logfile sieht jetzt so aus:
Zitat2015-10-03_19:15:53 Schlafzimmer.Fenster closed
2015-10-04_08:50:23 Schlafzimmer.Fenster open
2015-10-04_09:25:40 Schlafzimmer.Fenster closed
2015-10-04_12:52:08 Schlafzimmer.Fenster open
2015-10-04_13:05:30 Schlafzimmer.Fenster closed
2015-10-04_13:19:40 Schlafzimmer.Fenster open
2015-10-04_13:19:41 Schlafzimmer.Wandthermostat.WindowRec trigLast: Schlafzimmer.Fenster:open
2015-10-04_13:19:41 Schlafzimmer.Fenster open
2015-10-04_13:21:29 Schlafzimmer.Fenster closed
2015-10-04_13:21:29 Schlafzimmer.Fenster closed
2015-10-04_13:24:52 Schlafzimmer.Fenster open
2015-10-04_13:24:52 Schlafzimmer.Wandthermostat.WindowRec trigLast: Schlafzimmer.Fenster:open
2015-10-04_13:24:52 Schlafzimmer.Fenster open
2015-10-04_13:25:36 Schlafzimmer.Fenster closed
2015-10-04_13:25:36 Schlafzimmer.Fenster closed
2015-10-04_15:10:45 Schlafzimmer.Fenster tilted
2015-10-04_15:10:45 Schlafzimmer.Wandthermostat.WindowRec trigLast: Schlafzimmer.Fenster:tilted
2015-10-04_15:10:45 Schlafzimmer.Fenster tilted
2015-10-04_15:17:04 Schlafzimmer.Fenster tilted
2015-10-04_15:19:32 Schlafzimmer.Fenster open
2015-10-04_15:19:32 Schlafzimmer.Wandthermostat.WindowRec trigLast: Schlafzimmer.Fenster:open
2015-10-04_15:19:32 Schlafzimmer.Fenster open
2015-10-04_15:19:33 Schlafzimmer.Fenster open
2015-10-04_15:20:35 Schlafzimmer.Fenster closed
2015-10-04_15:20:36 Schlafzimmer.Fenster closed
Wie man sieht matchen da auch die Events die an das gepeerte Wandthermostat gehen, die aber für den Plot auch stören. Mit welcher Expression bekomme ich es hin das NUR diese Events gelogen werden:
Schlafzimmer.Fenster tilted
Schlafzimmer.Fenster open
Schlafzimmer.Fenster closed
Ich verstehe nicht ganz wieso die Expressions die ich dem FileLog mitgegeben habe, NICHT genau das tun...
^ markiert den Anfang des Strings
$ das ende des Strings
./log/Schlafzimmer.Fenster-%Y.log ^Schlafzimmer.Fenster:(closed|open|tilted)
Das sollte das tun was du willst, allerdings wieder ungetestet...
Und schon wieder gehts, vielen Dank für die schnelle Antwort.
Ich hatte mit dem "^" auch schon romprobiert, aber ich habe es vermutlich direkt vor das open/close/tilted gemacht... :P