FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Muschelpuster am 26 April 2017, 20:35:54

Titel: fehlerhafte Werte ausblenden
Beitrag von: Muschelpuster am 26 April 2017, 20:35:54
Moin zusammen,

Aus mir nicht bekannten Gründen liefert mein 1-Wire-Luftfeuchtesensor im Schnitt 1x am Tag einen falschen Wert. Der ist recht leicht zu erkennen, da er größer als 100% ist. Dank logdb ist das Löschen nur ein SQL-Statement, welches ich sicher auch scripten könnte, aber kann ich nicht im Vorfeld schon verhindern, dass der fehlerhafte Wert geloggt wird.

bereinigte Grüße
Niels
Titel: Antw:fehlerhafte Werte ausblenden
Beitrag von: franky08 am 26 April 2017, 20:40:09
Alle Werte die größer 100 sind verwerfen, mittels notify und if ..., dann den sog. "Korrekturwert" mit setreading als neues Reading in das device schreiben.

VG
Frank
Titel: Antw:fehlerhafte Werte ausblenden
Beitrag von: rudolfkoenig am 26 April 2017, 21:39:58
Oder etwas kuerzer mit readingsChange:

define rc readingsChange myDevice myReading (.+) { $1 > 100 ? 100 : $1}
Titel: Antw:fehlerhafte Werte ausblenden
Beitrag von: DS_Starter am 26 April 2017, 22:40:22
Eine weitere Möglichkeit wäre mit valueFn direkt in DbLog eine Korrektur vorzunehmen oder mit $IGNORE den Daten Satz zu verwerfen.

VG
Heiko
Titel: Antw:fehlerhafte Werte ausblenden
Beitrag von: Muschelpuster am 26 April 2017, 23:10:27
Ok, erst einmal Danke an Alle.
Zitat von: rudolfkoenig am 26 April 2017, 21:39:58
Oder etwas kuerzer mit readingsChange:
define rc readingsChange myDevice myReading (.+) { $1 > 100 ? 100 : $1}
Sieht toll aus, verstehe ich aber nicht  :'(
Das muss ich am Wochenende nochmal in Ruhe genießen  8)

Zitat von: DS_Starter am 26 April 2017, 22:40:22
Eine weitere Möglichkeit wäre mit valueFn direkt in DbLog eine Korrektur vorzunehmen oder mit $IGNORE den Daten Satz zu verwerfen.
Das bekomme ich wohl hin. Könnte bei mehreren Korrekturen zwar ein langer Lex werden, aber dafür kein zusätzliches Device. Müsste also wohl so aussehen:attr logdb valueFN {if ($DEVICE eq "1Wire_TerraLF" && $READING eq "Luftfeuchte" && $VALUE > 99){$IGNORE=1;}}
Da könnte ich ja auch gleich noch einen Temperaturwert korrigieren, bei dem Value immer noch das °C dran hängt. Also z.B. '23.4 °C'. Das kann ich ja mit '[0-9\.]*' filtern, aber an der fertigen Formulierung hapert es noch.

korrigierte Grüße
Niels
Titel: Antw:fehlerhafte Werte ausblenden
Beitrag von: Muschelpuster am 27 April 2017, 11:43:45
Zitat von: Muschelpuster am 26 April 2017, 23:10:27Da könnte ich ja auch gleich noch einen Temperaturwert korrigieren, bei dem Value immer noch das °C dran hängt. Also z.B. '23.4 °C'. Das kann ich ja mit '[0-9\.]*' filtern, aber an der fertigen Formulierung hapert es noch.
Hat er auch kapiert:{$VALUE =~ s/[^0-9\.]//g;}

lernfähige Grüße
Niels
Titel: Antw:fehlerhafte Werte ausblenden
Beitrag von: DS_Starter am 27 April 2017, 18:37:17
Hallo Niels,

na das liest sich doch gut.
Nach meinem Urlaub, der glücklicherweise noch einige Zeit dauert  :D , werde ich noch etwas weiter am DbLog arbeiten. Unter anderem dass man mit valueFn auch Werte auf 0 bzw. " " setzen kann. Das geht momentan nicht falls du bei deinen Versuchen darauf stossen solltest.
Die aktuellen Diskussionen dazu findest du hier :  https://forum.fhem.de/index.php/topic,65860.msg571048.html#msg571048

viele Grüße