Logfile mit mehreren Werten filtern

Begonnen von cubiator, 22 Februar 2016, 20:18:56

Vorheriges Thema - Nächstes Thema

cubiator

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

chanky

Hi Cubiator,
wie schaut's dein Filelog_esp8266temp aus? Du kannst da mehrere regular expressions einstellen.


Sent from my SM-G903F using Tapatalk


Prof. Dr. Peter Henning


cubiator

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

Otto123

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?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

cubiator

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

cubiator

Ihr seid Spitze!

Und die Trennung ist dann jeweils an den Leerzeichen?

Danke Euch für Eure Hilfe.

Hollo

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.

(//)
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

cubiator

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.


Hollo

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.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

cubiator

Ahhh!

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


Danke Cubiator

Otto123

Zitat von: cubiator am 23 Februar 2016, 18:41:45
Und die Trennung ist dann jeweils an den Leerzeichen?
So ist es!
Zu Regexp - 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 mal nach $fld suchst findest Du ein bisschen was zum lesen. Hier habe ich auch mal was ganz simples aufgeschrieben.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Prof. Dr. Peter Henning

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

sash.sc

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
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Otto123

Hallo Sascha,

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

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz