ioBroker/ioBroker.history

erweiterte Einstellung für Differenzwerte

oke24 opened this issue · 7 comments

oke24 commented

In der Datenpunktkonfiguration kann man im history-Adapter die
"Minimale Differenz zum letzten Wert"
einstellen.
Sehr sinnvoll wäre zusätzlich eine Konfiguration der
"Maximale Differenz zum letzten Wert"
um große Meßfehler und nicht erwartete Werte herausfiltern zu können.
Ich würde mich freuen wenn das Feature in die Roadmap aufgenommen werden könnte.

Bild 245

Hm ... die Logik wird dann aber interessant.

Was passiert wenn der Wert wirklich von 1 auf 11 springt und jemand hat "maximale Differenz 5" ... dann würde ab dann nie wieder ein Wert geschrieben bis der Wert wieder unter 6 geht ...

Was wäre denn der Usecase?

oke24 commented

... ja, das würde sich beissen. Die Bedingung könnte wahrscheinlich nur als "oder" - Bedingung implementiert werden.
Der Nutzer hat dann auf die speziellen Bedingungen des jeweiligen Datenpunkts angepasst die Möglichkeit die "minimale Differenz" oder die "maximale Differenz" einzustellen, um von history-Adapter aufgenommen zu werden. Kleine und große Meßwertänderungen oder Meßwertfehler liessen sich so m.E. herausfiltern, ohne das die Filterung an der Quelle geschehen muss, auf die man z.Tl. keinen Einfluß hat.

Ich versteh deine antwort nicht. Das Problem bei maximal hat nichts damit zu tun das man Min/Max kombiniert ... Am Ende besteht das gleiche Problem auch bei "minimal" ist da aber einfacher weg-argumentierbar :-) Weil "naja ok wenn Wert Änderung zu klein das ists ok wenn nie wieder was geloggt wird wenn es halt nicht mehr wird". Aber bei der "max differenz" idee müsste man irgendwie noch eine Zeitkomponente reinbringen - am ende ist das dann aber quasi "debounce" - damit kann man ausreißer-Werte auch wegfiltern.

oke24 commented

meine Idee ging dahin, den absoluten Differenzwert per Dropdown nach min ("<") oder max (">") festzulegen.
Bsp: abs. Diffwert mit Option "min" = 0.5 -> nächster Wert mit diff=0.4 --> raus, nächster Wert mit diff=0.6 --> rein
abs. Diffwert mit Option "max" = 100000 -> nächster Wert mit diff=100001 --> raus, nächster Wert mit diff=99999 --> rein

bei der debounce -Idee könnte man die untere Werte-Ausschluß-Zeile erweitern. Neben negativ-Werten und NULL-Werte dann auch Werte größer (">") einem Grenzwert filtern, z.b.
Bild 248

ich versttehe deine Idee schon, aber wie oben beschrieben gibt es in meinen Augen sehr einfache Fälle die das komplett kaputt machen weil man will halt dann am Ende doch Werte loggen auch wenn der wert mal um viel "dauerhaft" nach oben springt. Das ist genau das Thema. Bei "nicht loggen wenn Abweichung kleiner als X" ist das am Ende was anderes.

Debounce werde ich nicht anpassen weil die Definition klar ist: Wert unverändert für mindestens Zeit X" ...

hast Du denn einen ganz konkreten Anwendungsfall für die Idee? Ich würde es gern verstehen ...

oke24 commented

debounce war der falsche Begriff - mir ging es als alternative Lösung um eine Erweiterung der unteren Zeile bei "Werte ignorieren" ... , wie im Bild oben beispielhaft in rot dargestellt.
Ein Anwendungsfall : bei einem Meßwertfühler (hier ein Heizkostenverteiler eines Heizkörpers auf WMBus-Basis) erhalte ich auf dem gleichen Datenpunkt die Verbrauchswerte z.B. 0 (Jahresanfang) .... 5000 (Jahresende), und zusätzlich interne Daten des HKV-Herstellers, z.B. "144934452574329350830". Es würde in der Auswertung einiges vereinfachen wenn diese Werte über einem erwarteten Maximalwert nicht in die history aufgenommen würden.

Also wenn das so ein spezialfall ist dann bin ich stark dafür die Power von iobroker zu nutzen und mit einem kleinen JavaScriptchen diese "verschiedenen Werte" in unterschiedliche States aufzusplitten. Diese kannst Du dann perfekt historisieren ...