UserReading filter für Messwert Ausreißer

Begonnen von Eisix, 08 Dezember 2016, 11:55:32

Vorheriges Thema - Nächstes Thema

Eisix

Hallo,

ich möchte falsche Temperaturwerte eines Sensors ausfiltern mit einem UserReading.


userReadings temp Sensor_aussen:temperature[-]{0,1}[0-4]{0,1}\d.\d C






userReadings temp { (ReadingsVal ("Sensor_aussen","temperature","")[-]{0,1}[0-4]{0,1}\d.\d C) }


Beide Varianten funktionieren nicht. Ich habe noch nicht verstanden wie ich das ganze durch die regex jage. Kann mir jemand auf die Sprünge helfen.

Gruß
Eisix

igami

ich glaube suppressReadings ist dafür gedacht
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Eisix

Ist das nicht um das komplette Reading zu unterdrücken?
Ich möchte ja nur bestimmte Values eines Readings ausfiltern.

igami

#3
Ich verwende es selbst nicht, aber da in der commandref steht, dass die zu unterdrückenden readings als regex angegeben werden müssen sollten auch auch nur bestimmte Werte aus filtern lassen

Edit: Habe mir eben den Thread dazu durchgelesen, es unterdrückt doch nur komplette readings, also kannst du das nicht verwenden.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Eisix

Nach wilder Perl Suche kam ich zu diesem Ansatz der aber auch nicht funktioniert  :-\


userReadings URtemperature {$mystring = {ReadingsVal("Sensor_aussen","temperature",0);;}; if($mystring =~ m/[-]{0,1}[0-4]{0,1}\d.\d C/) {print $mystring;}}


Dann noch die DOIF Variante aus der doku, geht auch nicht  :-\


userReadings URtemperature [Sensor_aussen:temperature:"([-]{0,1}[0-4]{0,1}\d.\d C)":$1]


Fehlt da irgendwo noch noch eine Klammer oder ein Semikolon?

Gruß
Eisix