Hallo,
ich würde gerne Ausreißer von Reading filtern. Hab da ein Gerät was ich mittels HTTPMOD auslesen, wenn das Gerät einen Neustart macht vom Strom getrennt wird habe ich einen Wert von z.b. 1.000.000 im Reading. Der Wert ist nicht immer gleich daher auch der Thread für anderes habe ich eine Lösung durch suchen gefunden.
Der theoretisch maximale Wert ist jedoch 5.000, meine Frage daher, wie kann ich verhindern das Werte über 5000 in die DB geloggt werden und meine SVG Grafik zerstören?
Danke!
Mfg
Das Modul readingsChange könnte hier weiterhelfen.
Gruß
Dan
Hallo,
könntest du eventuell ein Beispiel hierfür nennen?
Danke!
mfg
Ich habe auch den einen oder anderen Sensor der gerne mal aus der Reihe tanzt.
Um die im Zaum zu halten definiere ich dort immer ein userReading das entweder den Wert 1:1 spiegelt wenn er ok ist oder eine Konstante wenn er ausserhalb liegt.
In den Plots verwende ich dann nur das userReading bzw. logge den Ur Wert auch erst gar nicht.
Edit :
um der Nachfrage nach einem Beispiel zuvor zu kommen :
Das Reading sei temperature und soll nicht über 100 gehen , wenn doch wird auf 100 begernzt, der Name des neuen Readings ist mytemp
attr <name-des_device> userReadings mytemp {if (ReadingsNum($name,"temperature",101) > 100){return 100;} else {return ReadingsNum($name,"temperature",0);}}
Zitat von: Wzut am 17 September 2017, 15:05:45
Ich habe auch den einen oder anderen Sensor der gerne mal aus der Reihe tanzt.
Ah klasse, ich habe auch so einen Fall. Wie kann ich denn pro Device ein zweites userreadings definieren?
Aktuell habe ich mal Ausreißer bei "energy" und "temperature" des gleichen Device.
Reicht es hier den veränderten Befehl erneut abzusetzen?
Danke!
Andre
das Attribut heisst nicht umsonst userReadings und nicht userReading :)
D.h. wenn es mehr als ein eigenes Reading sein soll so sind diese durch Komma getrennt zu definieren
Bsp
attr <name-des_device> userReadings mytemp {mache_was} , mypower {mache_nochwas} , usw.
Super, danke!!
Das hilft mir ungemein bei der Ausreißer Problematik :-)
Andre
Perlen in den Anfängerfragen von Wzut! Auch nach 100 Jahren. Ich freu mich ;)
Danke für die Blumen, allerdings merkt man doch das die Beiträge schon ein "paar Tage" alt sind :o
Ich würde heute niemand mehr raten userReadings ohne Trigger anzulegen 8)
wie meinst du das?
ei genau so wie ich geschrieben habe, statt :
userReadings mytemp bla bla
eher so
userReadings mytemp:temperature.* blub blub
Ich würde das Filtern heute per valueFn in DbLog umsetzen.
Zitat von: Wzut am 05 Oktober 2024, 08:50:55ei genau so wie ich geschrieben habe, statt :
userReadings mytemp bla bla
eher so
userReadings mytemp:temperature.* blub blub
ich ging von deinem
attr <name-des_device> userReadings mytemp {if (ReadingsNum($name,"temperature",101) > 100){return 100;} else {return ReadingsNum($name,"temperature",0);}}
aus, und bei mir somit
PV_Power_W {ReadingsNum("Studer485_VT","PV_Power_KW_RAW",0)*1000},PV_Power_KW {if (ReadingsNum($name,"PV_Power_KW_RAW",4) > 3){return 3;} else {return ReadingsNum($name,"PV_Power_KW_RAW",0);}}
was sich auf das Reading "PV_Power_KW_RAW" "als Trigger" bezieht. Von daher habe ich nicht ganz verstanden was du meinst.
@betateilchen. Ich bin noch immer mit Logs unterwegs ... das einzig und alleine weils trotz der offenkundigen Nachteile seit "Jahrzehnten" funktioniert und ich mich scheue/zu faul bin, eine Datenbank aufzusetzen und die ganzen Verknüpfungen zu modifizieren. Auch meine uralte ftui Implementierung und Grafiken würde ich nicht auf Anhieb easy umbauen können. Irgendwann werde aber auch ich mich der Aufgabe stellen.
Zitat von: holle75 am 06 Oktober 2024, 10:19:19was sich auf das Reading "PV_Power_KW_RAW" "als Trigger" bezieht.
nein du hast leider noch nicht verstanden was ich mit trigger sagen will, daher wirf bitte einen Blick in die command.ref zum Thema userReadings :
ZitatA comma-separated list of definitions of user-defined readings. Each definition has the form:
<reading>[:<trigger>] [<modifier>] { <perl code> }
Ok, war mir nicht bewußt, dass es überhaupt "einen Trigger" geben kann und dachte, das Userreadings wird nur aktualisiert, wenn sich das definierte Reading bewegt. Dankeschön, was gelernt.
PV_Power_W:PV_Power_KW_RAW.* {ReadingsVal("Studer485_VT","PV_Power_KW_RAW",0)*1000},PV_Power_KW:PV_Power_KW_RAW.* {if (ReadingsNum($name,"PV_Power_KW_RAW",4) > 3){return 3;} else {return ReadingsNum($name,"PV_Power_KW_RAW",0);}}