Hauptmenü

notify regex negieren

Begonnen von holle75, 10 Mai 2023, 15:46:35

Vorheriges Thema - Nächstes Thema

holle75

Hello!

Jetzt muss ich mal eine Anfängerfrage stellen. RegEx, (m)ein ewiges Leid.

Ich habe ein notify (bin eher der DOIF-Nutzer, vergebt mir etwähige Fehler)

EatonUSV:ups.status:OB.* {Log 1, "EatonUSV:Verbleibende-Minuten ".ReadingsVal("EatonUSV", "Verbleibende-Minuten", "");Log 1, "EatonUSV:ups.status ".ReadingsVal("EatonUSV", "ups.status", "");}
und möchte das OB.* negieren. Also alles ausser OB.*
Habe mich mal in das Lookaround ein bißchen eingelesen, aber das macht das Komplizierte ja noch komplizierter.

Jemand RegEx/notify Profi?

Danke und Gruß
H.


Jamo

das notify attribut ignoreRegexp ist dein Freund:
attr ignoreRegexp regexp
It is hard to create a regexp which is _not_ matching something, this attribute helps in this case, as the event is ignored if it matches the argument. The syntax is the same as for the original regexp.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

holle75

Danke Jamo, wie nutze ich das in einem notify wo die regex im DEF eingebaut ist?

define EatonUSV_Stromausfall_LOG1 EatonUSV:ups.status:.* {Log 1, "EatonUSV:Verbleibende-Minuten ".ReadingsVal("EatonUSV", "Verbleibende-Minuten", "");Log 1, "EatonUSV:ups.status ".ReadingsVal("EatonUSV", "ups.status", "");}
attr EatonUSV_Stromausfall_LOG1 ignoreRegexp OL

In der DEF alles aufmachen und das OL wäre dann in diesem Fall die Negierung von allem anderen?


Jamo

Ja, Du würdest im notify alles aufmachen, und mit ignoreRegexp OB ignorieren.
Allerdings hast Du das notify vergessen, und im attribute keine regexp definiert, ich denke das muss so aussehen:define EatonUSV_Stromausfall_LOG1 notify       EatonUSV:ups.status:.* {Log 1, "EatonUSV:Verbleibende-Minuten ".ReadingsVal("EatonUSV", "Verbleibende-Minuten", "");Log 1, "EatonUSV:ups.status ".ReadingsVal("EatonUSV", "ups.status", "");}
attr   EatonUSV_Stromausfall_LOG1 ignoreRegexp EatonUSV:ups.status:OB.*
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

betateilchen

Warum willst Du eigentlich über ein notify loggen und nicht über FileLog?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

holle75

@Jamo, ak ok, verstehe (fehlendes notify war ein copy+paste Fehler). Dankeschön
@Betateilchen Ich hoffe, dass bei der USV im Status was anderes als OL nur seltenst vorkommt. Aber ja, könnte ich auch in ein FileLog schreiben. Will sagen, es gibt nicht wirklich einen Sinn warum das jetzt ins fhem log geht ;)

betateilchen

Zitat von: holle75 am 10 Mai 2023, 16:52:38@Betateilchen Ich hoffe, dass bei der USV im Status was anderes als OL nur seltenst vorkommt. Aber ja, könnte ich auch in ein FileLog schreiben. Will sagen, es gibt nicht wirklich einen Sinn warum das jetzt ins fhem log geht

*achselzuck* das habe ich nicht verstanden.
Aber es ist mir ja eigentlich auch wurscht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

holle75

Vielleicht habe ich dich auch ncht richtig verstanden?

Deine Frage war, warum ich die Events nicht in ein separates FileLog schreibe anstatt ins fhem Log?

betateilchen

Nein. Meine Frage war, warum Du ein notify-device verwendest anstatt ein FileLog-device.

Egal, Du hast eine Lösung gefunden, mit der Du leben kannst, das ist die Hauptsache.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

holle75

Ich finds ja noch spannend andere Ansätze zu hören. Ein FileLog device schreibt, meines Wissens nach, in einen definierten File und nicht ins fhem Log. Über ein Notify ist der mir einzig bekannte Weg ins fhem Log zu schreiben. Kennst du noch einen anderen?

betateilchen

Zitat von: holle75 am 10 Mai 2023, 19:43:23Ein FileLog device schreibt, meines Wissens nach, in einen definierten File

Völlig korrekt. Es steht aber nirgends, dass Du nicht in einem von Dir angelegten FileLog-device das gleiche file verwenden darfst wie FHEM selbst.

Zitat von: holle75 am 10 Mai 2023, 19:43:23Über ein Notify ist der mir einzig bekannte Weg ins fhem Log zu schreiben

Naja, Du hast halt Deinen Gedanken oben nicht weit genug gedacht.

Zitat von: holle75 am 10 Mai 2023, 19:43:23Kennst du noch einen anderen?

Siehe oben.

defmod test_Log FileLog %L/fhem-%Y-%m-%d_%H.log <irgendeinDevice>.*
wobei "%L/fhem-%Y-%m-%d_%H.log" die gleiche Namensangabe ist wie im FHEM-Logfile (das ist ja auch nur ein FileLog-device!) selbst:

defmod Logfile FileLog %L/fhem-%Y-%m-%d_%H.log fakelog
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

holle75

Sehr schön, ich danke dir ...