Hauptmenü

RegExp, Ausdruck kürzen

Begonnen von oniT, 11 März 2015, 21:03:41

Vorheriges Thema - Nächstes Thema

oniT

Hallo,

ich benötige wieder einmal Hilfe bzgl dem folgenden Ausdruck, da ich mich damit immer noch etwas schwer tue:


define filelog_solarlog_day FileLog ./log/filelog_solarlog_day-%d.log (solarlog_dailyyield|solarlog_monthlyyield|solarlog_totalpac|solarlog_totalyield|solarlog_yearlyyield|solarlog_yesterdayyield):(?!RAW)(.*)


Ist es möglich diesen Teil in Klammern zu verkürzen? Und wenn ja, wie sieht dieser dann aus?

Danke

Gruß,
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

nesges

define filelog_solarlog_day FileLog ./log/filelog_solarlog_day-%d.log solarlog_((daily|monthly|total|yearly|yesterday)yield|totalpac):(?!RAW)(.*)

Meinst du sowas? Ich persönlich finde ja die lange Version übersichtlicher ;)

oniT

Hallo nesges,

Danke für die Antwort.

Ich stelle mir dies in etwa so vor:


define filelog_solarlog_day FileLog ./log/filelog_solarlog_day-%d.log solarlog_.*:(?!RAW)(.*)


define filelog_solarlog_day FileLog ./log/filelog_solarlog_day-%d.log (solarlog_.*):(?!RAW)(.*)


Nur funktioniert beides nicht. Es werden immer alle Werte geschrieben und nicht wie gewünscht der RAW Wert ignoriert. Gibts es dafür einen entsprechenden Ausdruck?

Danke,

Gruß
Tino

BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

nesges

Ach das meintest du, war mir nicht aufgefallen :-) So funktioniert negative lookahead nicht. Der Teil in (?!) ist die Negativ-Bedingung für den Teil davor. Du hast hier keinen Teil davor, daher matcht der Ausdruck immer. Ein regulärer Ausdruck bräuchte an der Stelle noch ein ^ vorne dran, um den Anfang des Strings zu markieren:

/^(?!RAW)/

In Worten: "Matche auf den Anfang des Strings, aber nur, wenn er nicht von 'RAW' gefolgt wird." Ich hoffe dass das so auch in dem Konstrukt funktioniert, das hier als Eventbeschreibung dient. Ich bin nicht sicher, weil das zwei mit Doppelpunkt Verbundene Ausdrücke sind, die auf einen Gesamtstring matchen. Der Reading-Part ist dabei nicht unbedingt Anfang des Strings. Versuch mal:

solarlog_.*:^(?!RAW)

Falls das nicht funktioniert müsste man genauer schaun, wie die Eventbeschreibung evaluiert wird.

oniT

Hallo,

ach Fehler vom Amt  ;) ich dachte man kann aus der Definition des Logfiles das Auslesen. Das ist meine Schwäche zu wenige Infos zu liefern.

Also, es werden jeweils zwei Werte von Device welche mit sloarlog_ beginnen in ein Logfile geschrieben. Im Logfile sieht dies dann zum Beispiel so aus:


2015-03-14_14:54:17 solarlog_totalpac RAW: 0044
2015-03-14_14:54:17 solarlog_totalpac 68
2015-03-14_14:54:17 solarlog_dailyyield RAW: 02850000
2015-03-14_14:54:17 solarlog_dailyyield 0.645


Da der Wert mit RAW nicht benötigt wird, soll dieser auch nicht eingetragen werden. Nach der Definiton meines Eingangposts geht es. Allerdings ist halt ziemlich lang, da alle Devices welche mit solarlog_ beginnen aufgeführt werden. Von daher suche ich eine Möglichkeit dies entsprechend zu kürzen.

Ich habe den Ausdruck von Dir mit und ohne Doppelpunkt getestet. In beiden Fällen erfolgt kein Eintrag in das Logfile.

Danke,

Gruß
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

oniT

Hallo,

keiner einen Vorschlag?

Ich bin hier leider nicht der Experte und tue mich entsprechend schwer. Oder werden noch weitere Infos für eine Lösung benötigt?

Danke,

Gruß
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP