Hauptmenü

Hilfe bei Regex in FileLog

Begonnen von h002, 20 November 2018, 15:30:36

Vorheriges Thema - Nächstes Thema

h002

Ich bekomme meinen gewünschten regulären Ausdruck einfach nicht hin. Vielleicht kann mir hier jemand helfen?

Input:

2018-11-20_14:31:30 DeviceWaescheZimmer T: 19.7 H: 60
2018-11-20_14:31:35 DeviceWaescheZimmer battery: ok
2018-11-20_14:31:35 DeviceWaescheZimmer temperature: 19.7
2018-11-20_14:31:35 DeviceWaescheZimmer humidity: 61
2018-11-20_14:31:35 DeviceWaescheZimmer T: 19.7 H: 61
2018-11-20_14:31:37 DeviceWohnzimmer T: 22.3 H: 48
2018-11-20_14:31:38 dim_Ruecklauftemperatur 24.6
2018-11-20_14:31:38 dim_Ruecklauftemperatur RAW: 00f6
2018-11-20_14:31:38 dim_Ruecklauftemperatur temperature: 24.6
2018-11-20_14:31:38 dim_Waermequellenaustritt 9
2018-11-20_14:31:38 dim_Waermequellenaustritt RAW: 005a
2018-11-20_14:31:38 dim_Waermequellenaustritt temperature: 9
2018-11-20_14:31:38 dim_Waermequelleneintritt 9.1


Gewünschter Output:

2018-11-20_14:31:38 dim_Ruecklauftemperatur 24.6
2018-11-20_14:31:38 dim_Ruecklauftemperatur temperature: 24.6
2018-11-20_14:31:38 dim_Waermequellenaustritt 9
2018-11-20_14:31:38 dim_Waermequellenaustritt temperature: 9
2018-11-20_14:31:38 dim_Waermequelleneintritt 9.1


Es sollen also nur Zeilen mit dim_ und ohne RAW im Log auftauchen.

Es hörte bei mir mit dem Versuch dim_(?:(?!RAW).)* auf.

Wie komme ich zum gewünschten Output?

Vielen Dank!

DS_Starter

Wie siehts damit aus ?


dim_(?!.*RAW.*).*

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

h002


h002

Dazu fällt mir gleich eine Folgefrage ein. Wie sieht der Ausdruck aus, wenn ich mehrere Ausschlüsse erreichen möchte. Möchte ich z.B. die Strings RAW und temperature ausschließen, funktioniert
dim_(?!.*RAW.*)(?!.*temperature.*).* bei mir leider nicht.

So habe ich dies im FileLog definiert:
./log/filelog_dimWaermemenge-%Y-%m.log dim_(?!.*RAW.*)(?!.*temperature.*).*

Bei https://www.regextester.com/ funktioniert der Ausdruck. Was ist denn hier die Ursache?

DS_Starter

#4
So vielleicht ?


dim_(?!.*(RAW|temperature).*).*


Edir: Das Verhalten müsste/sollte in beiden Fällen (Tester & Filelog) gleich sein. Da kann ich momentan nichts dazu sagen.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

h002

Klingt logisch, aber irgendwie ignoriert FHEM jetzt sämtliche Definitionen der RegEx.

Dies kommt jetzt, auch nach Neustart von FHEM, als Output:
2018-11-20_18:17:20 dim_Ruecklauftemperatur 26.4
2018-11-20_18:17:20 dim_Ruecklauftemperatur RAW: 0108
2018-11-20_18:17:20 dim_Ruecklauftemperatur temperature: 26.4
2018-11-20_18:17:21 dim_Vorlauftemperatur 26.2
2018-11-20_18:17:21 dim_Vorlauftemperatur RAW: 0106
2018-11-20_18:17:21 dim_Vorlauftemperatur temperature: 26.2
2018-11-20_18:17:21 dim_Waermequellenaustritt 8.5
2018-11-20_18:17:21 dim_Waermequellenaustritt RAW: 0055
2018-11-20_18:17:21 dim_Waermequellenaustritt temperature: 8.5
2018-11-20_18:17:21 dim_Waermequelleneintritt 6.4
2018-11-20_18:17:21 dim_Waermequelleneintritt RAW: 0040
2018-11-20_18:17:21 dim_Waermequelleneintritt temperature: 6.4
2018-11-20_18:18:21 dim_Ruecklauftemperatur 26.3
2018-11-20_18:18:21 dim_Ruecklauftemperatur RAW: 0107
2018-11-20_18:18:21 dim_Ruecklauftemperatur temperature: 26.3
2018-11-20_18:18:21 dim_Vorlauftemperatur 26.1
2018-11-20_18:18:21 dim_Vorlauftemperatur RAW: 0105
2018-11-20_18:18:21 dim_Vorlauftemperatur temperature: 26.1
2018-11-20_18:18:21 dim_Waermequellenaustritt 8.4
2018-11-20_18:18:21 dim_Waermequellenaustritt RAW: 0054
2018-11-20_18:18:21 dim_Waermequellenaustritt temperature: 8.4
2018-11-20_18:18:21 dim_Waermequelleneintritt 6.5
2018-11-20_18:18:21 dim_Waermequelleneintritt RAW: 0041
2018-11-20_18:18:21 dim_Waermequelleneintritt temperature: 6.5


Auch die Variante nur mit "RAW" funktioniert nicht mehr.

Definition FileLog:
define filelog_dim FileLog ./log/filelog_dimWaermemenge-%Y-%m.log dim_(?!.*(RAW|temperature).*).*

DS_Starter

Naja, was vorher ging sollte auch jetzt noch gehen  :)
Ansonsten versuche mal das:


.*dim_(?!.*(RAW|temperature).*).*


Ich teste deine Anforderungen damit durch:  https://regex101.com/
Und funktionierte mit jeden Testfällen bisher tadellos.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

h002

Der Ausdruck passt. Ich habe jetzt auch mal ein komplett neues FileLog angelegt und auch dort funktioniert der Ausdruck dim_(?!.*RAW.*).* nicht. Versteh ich nicht. So viel hab ich nun wirklich nicht an der Kiste geschraubt.

DS_Starter

Nimm auch hier mal:


.*dim_(?!.*RAW.*).*
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

h002

#9
Hab ich auch schon versucht, aber ohne Erfolg. Das "dim_" erkennt er offenbar ohne Problem, da Meldungen ohne diesen Pattern nicht angezeigt werden.

Kann es vielleicht mir der Perl-Syntax zusammenhängen?

h002

#10
Ich habe es eben auf http://www.regexe.com/ probiert. Dort wird das RAW auch nicht entfernt.

Getestet mit:
2018-11-20_19:47:35 dim_Waermequellenaustritt 7.8
2018-11-20_19:47:35 dim_Waermequellenaustritt RAW: 004e
2018-11-20_19:47:35 dim_Waermequellenaustritt temperature: 7.8
2018-11-20_19:47:35 dim_Waermequelleneintritt 6.1
2018-11-20_19:47:35 dim_Waermequelleneintritt RAW: 003d
2018-11-20_19:47:35 dim_Waermequelleneintritt temperature: 6.1
2018-11-20_19:48:35 dim_Ruecklauftemperatur 26.1
2018-11-20_19:48:35 dim_Ruecklauftemperatur RAW: 0105
2018-11-20_19:48:35 dim_Ruecklauftemperatur temperature: 26.1
2018-11-20_19:48:35 dim_Vorlauftemperatur 25.9
2018-11-20_19:48:35 dim_Vorlauftemperatur RAW: 0103
2018-11-20_19:48:35 dim_Vorlauftemperatur temperature: 25.9
2018-11-20_19:48:35 dim_Waermequellenaustritt 7.7
2018-11-20_19:48:35 dim_Waermequellenaustritt RAW: 004d
2018-11-20_19:48:35 dim_Waermequellenaustritt temperature: 7.7
2018-11-20_19:48:35 dim_Waermequelleneintritt 6.2
2018-11-20_19:48:35 dim_Waermequelleneintritt RAW: 003e
2018-11-20_19:48:35 dim_Waermequelleneintritt temperature: 6.2
2018-11-20_19:49:36 dim_Ruecklauftemperatur 26
2018-11-20_19:49:36 dim_Ruecklauftemperatur RAW: 0104
2018-11-20_19:49:36 dim_Ruecklauftemperatur temperature: 26
2018-11-20_19:49:36 dim_Vorlauftemperatur 25.8
2018-11-20_19:49:36 dim_Vorlauftemperatur RAW: 0102
2018-11-20_19:49:36 dim_Vorlauftemperatur temperature: 25.8
2018-11-20_19:49:36 dim_Waermequellenaustritt 7.6
2018-11-20_19:49:36 dim_Waermequellenaustritt RAW: 004c
2018-11-20_19:49:36 dim_Waermequellenaustritt temperature: 7.6
2018-11-20_19:49:36 dim_Waermequelleneintritt 6.3
2018-11-20_19:49:36 dim_Waermequelleneintritt RAW: 003f
2018-11-20_19:49:36 dim_Waermequelleneintritt temperature: 6.3


Ausdruck:
.*dim_(?!.*(RAW).*).*

Edit:
Allerdings, als ich die Option "Dot stands for line-break also" deaktiviert habe, ging es.

DS_Starter

#11
Habe es gerade nochmal gemacht, funktioniert tadellos. Siehe Screenshots im Anhang.
Besondere Einstellungen habe ich nicht vorgenommen. Vllt. hilft der Regex-Debugger auf der Seite weiter.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

h002

Ich glaub dir, dass der Ausdruck stimmt. Dort scheint die Ursache nicht zu sein. Vielleicht funktionierte es in FHEM von Anfang an nicht und ich habe bei der ersten Erfolgsmeldung was übersehen und das Problem liegt an anderer Stelle.

DS_Starter

Ja, möglich ist es schon. Habe deinen gesamten Block getestet, hat auch wie gewünscht reagiert.
Vielleicht kommst du weiter wenn du dir auf der Eventmonitorseite ein Notify erstellen lässt und das erzeugte Regex übernimmst und anpasst.
Ich selbst benutze schon lange kein Filelog mehr sondern DbLog. Aber die Regexverarbeitung ist dieselbe.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

h002

Du hast mir eben die Augen für etwas Neues eröffnet. Danke, ich werde es mal testen.