Hallo,
ich messe mit einem Radarsensor die Wasserhöhe. Ab und an bekomme ich sehr große negative Werte in mein Reading übermittelt. Liegt vermutlich an der Kabellänge zum Sensor. Besteht die Möglichkeit, dass ich die negativen Werte über event-on-change-reading NICHT in das Log-File schreiben lasse?
Nicht über event-on-change-reading. Aber über die Regex vom Logdevice
Danke für den Hinweis. Funktioniert trotz mehreren Versuchen bei mir leider nicht. Vermutlich habe ich einen Fehler beim ">0".
defmod FileLog_SchHoehe FileLog ./log/SchHoehe-%Y.log SchHoehe:>0
Zitat von: thiese am 05 Januar 2019, 11:03:29
Danke für den Hinweis. Funktioniert trotz mehreren Versuchen bei mir leider nicht. Vermutlich habe ich einen Fehler beim ">0".
defmod FileLog_SchHoehe FileLog ./log/SchHoehe-%Y.log SchHoehe:>0
Das ist auch keine RegEx und es wird wie beim Notify auch eine Regex erwartet.
Suche mal im Web nach Perl und Regex. Testen kannst Du Deine Regex hier
https://regex101.com
Alternativ könntest du dem Radarsensor auch ein Userreading anlegen, welches die korrekten Werte übernimmt, die falschen negativen Werte aber ignoriert bzw auf 0 setzt.
Ausgewertet und geloggt wird dann nur noch das neue Userreading.
(\d+(\.\d+)?)
Dieser Teil Regex liefert Dir ausschließlich positive Zahlen.
So als kleiner Anreiz.
Ein UserReading hatte ich schon. Allerdings schaffe ich es nicht, dass die negativen Werte "ausgeblendet" werden.
WHoehe {ReadingsVal("$name","READING","(\d+(\.\d+)?)")}
.
Jetzt erscheinen mir zwei Readings mit den gleichen Werten.
Zitat von: thiese am 05 Januar 2019, 12:07:29
Ein UserReading hatte ich schon. Allerdings schaffe ich es nicht, dass die negativen Werte "ausgeblendet" werden.
WHoehe {ReadingsVal("$name","READING","(\d+(\.\d+)?)")}
.
Jetzt erscheinen mir zwei Readings mit den gleichen Werten.
Und was genau ist das jetzt? Dein userReading oder Deine Log RegEx
Das UserReading
Das ist auch Unsinn was Du da geschrieben hast.
Gib mal ein list vom Logdevice. Also entweder FileLog oder dblog
Beispiel für ein Userreading
neuesreading:altesreading.* { ReadingsVal($name,'altesreading',0)<0 ? 0 : ReadingsVal($name,'altesreading',0) }
Top. Das ist die Lösung. Allerbesten Dank und schöne Grüße.