[gelöst] event-on-change-reading nur bei Werten größer 0

Begonnen von thiese, 05 Januar 2019, 10:38:48

Vorheriges Thema - Nächstes Thema

thiese

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?

CoolTux

Nicht über event-on-change-reading. Aber über die Regex vom Logdevice
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

thiese

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

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

roedert

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.

CoolTux


(\d+(\.\d+)?)

Dieser Teil Regex liefert Dir ausschließlich positive Zahlen.

So als kleiner Anreiz.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

thiese

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.

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

thiese


CoolTux

Das ist auch Unsinn was Du da geschrieben hast.
Gib mal ein list vom Logdevice. Also entweder FileLog oder dblog
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

roedert

Beispiel für ein Userreading

neuesreading:altesreading.* { ReadingsVal($name,'altesreading',0)<0 ? 0 : ReadingsVal($name,'altesreading',0) }

thiese

Top. Das ist die Lösung. Allerbesten Dank und schöne Grüße.