FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: cubiator am 22 Februar 2016, 20:18:56

Titel: Logfile mit mehreren Werten filtern
Beitrag von: cubiator am 22 Februar 2016, 20:18:56
Hallo,

ich bekomme von einem DHT22 die Werte für Temperatur und Luftfeuchtigkeit über einen ESP8266.
Diese Werte werden dann in einem Logfile gespeichert und sollen in einem Plot visualisiert werden.

Da meine beiden Werte im Logfile in einer Zeile stehen kann ich beim svgplot nur den Temperaturwert auswählen. Wie kann ich das Logfile filtern so das ich beide Werte weiter verarbeiten kann?

So sieht mein Logfile aus:


2016-02-22_20:12:05 esp8266temp T: 20.40 H: 46.60
2016-02-22_20:12:38 esp8266temp T: 20.40 H: 46.60
2016-02-22_20:13:10 esp8266temp T: 20.40 H: 46.60


Wobei T und H für Temperatur und Luftfeuchtigkeit stehen.

Gruß
Cubiator
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: chanky am 22 Februar 2016, 23:28:14
Hi Cubiator,
wie schaut's dein Filelog_esp8266temp aus? Du kannst da mehrere regular expressions einstellen.


Sent from my SM-G903F using Tapatalk

Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: Prof. Dr. Peter Henning am 23 Februar 2016, 07:24:39
Spalte 4 oder 6 einstellen.

LG

pah

Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: cubiator am 23 Februar 2016, 18:31:00
Hallo Ihr Zwei,

danke für Eure Mühe!

@Chanky

Der Auszug oben ist ein direkter Auszug aus meinem Logfile aber hier mal ein aktueller von nun gerade:

2016-02-23_18:12:39 esp8266temp T: 20.00 H: 45.60
2016-02-23_18:13:11 esp8266temp T: 19.90 H: 45.20
2016-02-23_18:13:44 esp8266temp T: 19.90 H: 44.90
2016-02-23_18:14:16 esp8266temp T: 19.90 H: 45.00
2016-02-23_18:14:48 esp8266temp T: 19.90 H: 46.00
2016-02-23_18:15:21 esp8266temp T: 19.80 H: 45.10
2016-02-23_18:15:53 esp8266temp T: 19.80 H: 45.10
2016-02-23_18:16:25 esp8266temp T: 19.80 H: 45.30
2016-02-23_18:16:57 esp8266temp T: 19.90 H: 45.30
2016-02-23_18:17:30 esp8266temp T: 20.00 H: 45.10
2016-02-23_18:18:02 esp8266temp T: 20.00 H: 45.00
2016-02-23_18:18:34 esp8266temp T: 20.00 H: 45.50
2016-02-23_18:19:07 esp8266temp T: 20.10 H: 45.00
2016-02-23_18:19:39 esp8266temp T: 20.10 H: 46.50
2016-02-23_18:20:11 esp8266temp T: 20.20 H: 45.10


Nach dem Begriff "regular expressions" muss ich gleich mal googlen, das sagt mir nichts.
Evtl. ist das ja zielführend.


@Prof. Dr. Peter Henning

Mir ist leider nicht ganz klar wie das gemeint ist, wo stelle ich das ein?
Dort wo ich das SVG Plot einstelle? (Siehe Bild)

Wenn ich den Wer von 4 auf etwas anderes ändere Merke ich kein Unterschied, auch kann ich die Luftfeuchte nicht auswählen.

Ich glaube hier brauche ich ein etwas grösseren Zaunpfahl.

Danke Cubiator
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: Otto123 am 23 Februar 2016, 18:40:03
2016-02-23_18:20:11 esp8266temp T: 20.20 H: 45.10
-->>
Spalte 1: 2016-02-23_18:20:11
Spalte 2: esp8266temp
Spalte 3: T:
Spalte 4: 20.20
Spalte 5: H:
Spalte 6: 45.10

Alles klar?
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: cubiator am 23 Februar 2016, 18:40:25
Ich nehme alles zurück!

Die Spalte auf 6 zu stellen hat wirklich geholfen, keine Ahnung warum das gestern nicht ging.
Aber was habe ich damit eingestellt?

Gruß
Cubiator
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: cubiator am 23 Februar 2016, 18:41:45
Ihr seid Spitze!

Und die Trennung ist dann jeweils an den Leerzeichen?

Danke Euch für Eure Hilfe.
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: Hollo am 23 Februar 2016, 18:53:54
Zitat von: cubiator am 23 Februar 2016, 18:31:00
...Ich glaube hier brauche ich ein etwas grösseren Zaunpfahl.

Dein Screenshot für den SVG-Plot sieht schon ganz okay aus.

Wie hast Du das Logfile definiert?
Hier solltest Du sowas in der Art bei der Regexp haben:
REGEXP Sensor_02:T:.*
Damit loggst Du quasi nur die Zeile mit Temperatur - und Luftfeuchte-Angabe; wie auch von Dir gepostet.

Der "Trick" für die Unterscheidung ist der:
logtype temp4hum6:Temp/Hum,text

Im Plot-Editor wählst Du dann den selben Log-Eintrag aus (hast ja auch nichts anderes) und dann die Spalten.
Evtl. musst Du nach der Auswahl des Logfiles erst einmal speichern, damit das übernommen wird.
Du erkennst das eigentlich daran, dass Dir sonst kein Inhalt Deines Logfiles als "Exampel lines for input" angeboten wird.

(//)
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: cubiator am 23 Februar 2016, 19:06:36
Ich glaube mit dem Regexp muss ich mich einmal befassen...
Dazu Habe ich einmal einen Screenshot angehängt was bei mir unter dem Logfile abgelegt ist.

Aber mit den Spalten habe ich es dann ja hinbekommen.

Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: Hollo am 23 Februar 2016, 19:18:55
Regexp brauchst Du im Prinzip nur, wenn Du etwas eingrenzen oder verändern möchtest.

Also beispielsweise wie bei meinem Sensor im Logfile nur alle Events abspeichern, die mit "T:" beginnen und irgendetwas (.*) dahinter haben dürfen.
Damit speicher ich also alle anderen Events (state, temperature, humidity, battery) nicht ab.
Das hält das Logfile schlank, vermindert die Schreibzugriffe, und macht die Ploterstellung schneller.

Wenn eine Angabe nicht "passend" ist, kannst Du mittels Regexp auch Veränderungen vornehmen; zum Beispiel bei einem Temperaturwert aus dem Punkt ein Komma machen, damit die Sprachausgabe funktioniert.
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: cubiator am 23 Februar 2016, 19:26:29
Ahhh!

Langsam wird es klarer, da lese ich mich noch einmal ein.


Danke Cubiator
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: Otto123 am 24 Februar 2016, 13:41:38
Zitat von: cubiator am 23 Februar 2016, 18:41:45
Und die Trennung ist dann jeweils an den Leerzeichen?
So ist es!
Zu Regexp  (http://www.fhemwiki.de/wiki/Regul%C3%A4rer_Ausdruck)- an vielen Stellen (notify und co) kannst Du Dir mit dem Regexp Wizards etwas zusammen klicken. Beim Plot ist das etwas komplexer und schwieriger als Anfänger. Wenn Du im Wiki  (http://www.fhemwiki.de/wiki/Hauptseite) mal nach $fld suchst findest Du ein bisschen was zum lesen. Hier  (http://heinz-otto.blogspot.de/2015/01/fhem-im-svg-plot-die-kurve-verschieben.html)habe ich auch mal was ganz simples aufgeschrieben.

Gruß Otto
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: Prof. Dr. Peter Henning am 24 Februar 2016, 15:03:17
Na, da empfehle ich aber doch eine anerkannte Quelle, um sich das selbst beizubringen:

https://wiki.selfhtml.org/wiki/Perl/Regul%C3%A4re_Ausdr%C3%BCcke

LG

pah
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: sash.sc am 06 März 2016, 10:41:12
Hallo Zusammen.

habe da ein ähnliches Problem !!
Ich bekomme von einem Sensor folgende Einträge, die auch entsprechend gelogt werden !

2016-03-06_10:19:29 Temp.Sens.s02 T: 1.6 H: 90.0
2016-03-06_10:19:29 Temp.Sens.s02 temperature: 1.9
2016-03-06_10:30:23 Temp.Sens.s02 T: 1.9 H: 90.0
2016-03-06_10:30:23 Temp.Sens.s02 humidity: 90.0
2016-03-06_10:31:25 Temp.Sens.s02 T: 1.9 H: 90.0
2016-03-06_10:31:25 Temp.Sens.s02 humidity: 90.0
2016-03-06_10:32:21 Temp.Sens.s02 T: 1.9 H: 90.0
2016-03-06_10:32:21 Temp.Sens.s02 temperature: 2.3


Ich möchte den LOG Eintrag auf die Zeile mit T: und H: begrenzen.

Hier meine folgende LOG defeinition, die ich aus einem Beispiel übernommen habe.


Internals:
   DEF        ./log/Temp.Sens.s02-%Y-%m.log Temp.Sens.s02
   NAME       FileLog_Temp.Sens.s02
   NOTIFYDEV  Temp.Sens.s02
   NR         143
   NTFY_ORDER 50-FileLog_Temp.Sens.s02
   REGEXP     Temp.Sens.s02
   STATE      active
   TYPE       FileLog
   currentlogfile ./log/Temp.Sens.s02-2016-03.log
   logfile    ./log/Temp.Sens.s02-%Y-%m.log
Attributes:
   createGluedFile 1
   logtype    logtype temp4hum6:Temp/Hum,text
   room       _Logs


Könntet Ihr mir ein bischen unter die Arme greifen anhand eines Beispieles ?

Vieel Grüße
Sascha
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: Otto123 am 06 März 2016, 10:43:58
Hallo Sascha,

bei meinem Aussensensor sieht das so aus:
./log/SensorAussen-%Y.log SensorAussen:T:.*

Gruß Otto
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: sash.sc am 06 März 2016, 10:52:05
Hallo otto.

D.h. hier muss die weitere Definition erfolgen ?


  DEF        ./log/Temp.Sens.s02-%Y-%m.log Temp.Sens.s02
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: Otto123 am 06 März 2016, 10:55:06
Einfach so:
Zitat von: sash.sc am 06 März 2016, 10:52:05


  DEF        ./log/Temp.Sens.s02-%Y-%m.log Temp.Sens.s02:T:.*

Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: sash.sc am 06 März 2016, 11:01:36
Danke für die Hilfe.

Auf der Seite vom LogFile gibt es einen Punkt. Siehe Bild 1

Dort habe ich den Eintrage auf State:* geändert, da die Werte die ich habe will im State gespeichert/übergeben werden !
Habe dann die alte RegExpression gelöscht.

Muss jetzt nur noch den SVG Plot anpassen.

Hoffe so das LOG File kleiner zu bekommen !

Danke für die Hilfe

Grüße
Sascha
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: Otto123 am 06 März 2016, 11:12:47
Zitat von: sash.sc am 06 März 2016, 11:01:36
Dort habe ich den Eintrage auf State:* geändert, da die Werte die ich habe will im State gespeichert/übergeben werden !
Habe dann die alte RegExpression gelöscht.
Warum hast Du nicht einfach die RegExp geändert?
Wird so sicher auch gehen...

Viele Wege ....
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: sash.sc am 06 März 2016, 11:15:54
Ein Paar Button´s drücken ist einfacher, als es direkt einzugeben !! ;-)
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: Otto123 am 06 März 2016, 11:17:43
naja aber genau dort hättest Du auch T:.* auswählen können.  8)
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: sash.sc am 06 März 2016, 15:02:38
Geht natürlich auch! Ist ein bisschen kürzer!
;)
Macht sich mit Sicherheit über die Zeit in der Größe des Logfile bemerkbar
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: sash.sc am 17 Juni 2016, 15:41:49
Hallo zusammen!

Ich muss nochmal des Verständnisses halber nachfragen.

Mit dem filtern der Werte klappt soweit. Jetzt möchte ich das ganze nur aufzeichnen,  wenn sich die Werte im state ändern!

Habe dafür


event-on-change .*


eingesetzt.
Habe noch dazu ein

event-min-intervall. *:300


Eingebaut, damit, wenn sich nix ändert, trotzdem geloggt wird.

Müsste dann aber feststellen, dass manchmal über eine Stunde nix geloggt wird.

Würde das auch mit einem even-on-update gehen?
Die commandref_DE.html ist da nicht wirklich hilfreich.

Irgendwie fehlt Skizze ein bisschen an Beispielen und Erklärung was da passiert bzw nicht passiert.

Gruß Sascha

Gesendet von meinem SM-T560 mit Tapatalk

Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: Puschel74 am 17 Juni 2016, 21:01:48
Du hast aber gesehen das du hier
event-min-intervall. *:300
den Punkt direkt nach intervall stehen hast und dann ein Leerzeichen und dann erst der Stern kommt?

Hier https://forum.fhem.de/index.php/topic,54682.msg462544.html#msg462544 (https://forum.fhem.de/index.php/topic,54682.msg462544.html#msg462544) wurde selbiges mit den Attributen gelöst - nur leider geschlossen und nicht mit gelöst gekennzeichnte.
Vermutlich ist es zu schwer angepinnte Beiträge zu lesen und zu verstehen.
Titel: Antw:Logfile mit mehreren Werten filtern
Beitrag von: sash.sc am 18 Juni 2016, 08:11:44
Das war ein Schreibfehler von mir.  Natürlich kommt erst eineLeerzeichen, dann Punkt und der Stern mit dem Doppelpunkt und der Zeit dahinter.

Hätte das Event-on-change .* und event-min-intervall in Kombination gehabt. Es sollen auch alle 10 Minuten (event-min-intervall .*:600) ein Wert geloggt werden wurde es aber nicht. Deshalb frage ich nochmal nach.

Danke für die Unterstützung

Gruß Sascha

Gesendet von meinem SM-T560 mit Tapatalk