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
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
Oder etwas kuerzer mit readingsChange:
define rc readingsChange myDevice myReading (.+) { $1 > 100 ? 100 : $1}
Eine weitere Möglichkeit wäre mit valueFn direkt in DbLog eine Korrektur vorzunehmen oder mit $IGNORE den Daten Satz zu verwerfen.
VG
Heiko
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
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
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