NEWS
Test Adapter Tiefpassfilter
-
@klassisch top Filter Verhalten, würde ich sagen ;-).
0 wird als ganz normaler Wert erkannt und darauf wird auch gefiltert. -
@ben1983 sagte in Test Adapter Tiefpassfilter:
0 wird als ganz normaler Wert erkannt und darauf wird auch gefiltert.
Bei mir steht aber nicht "0" sondern "null", also "kein gültiger Wert", akademisches Schulterzucken
Beispiel:
{ "val": null, "ack": 0, "ts": 1649474110435, "q": 0, "c": "script.js.tests.test-climateValues", "from": "system.adapter.javascript.0", "user": "system.user.admin" },
Gegenbeispiel
{ "val": 72.0804237247672, "ack": 0, "ts": 1649473810456, "q": 0, "c": "script.js.tests.test-climateValues", "from": "system.adapter.javascript.0", "user": "system.user.admin" },
In meinen Graphen fällt das nicht auf, weil FLOT das ausblenden kann und ich das standarmäßig so einstelle.
Stellt sich die Frage, ob Du auch so eine Möglichkeit einbauen möchtest?
Und ja, ansonsten sieht die Sprungantwort gut aus....
-
@klassisch Für mich stellt sich erst mal die Frage, warum bei Dir NULL Werte kommen
-
@ben1983 sagte in Test Adapter Tiefpassfilter:
@klassisch Für mich stellt sich erst mal die Frage, warum bei Dir NULL Werte kommen
Wahrscheinlich damit man auch diesen Fall testen kann
-
@klassisch Du möchtest also eine Checkbox
NULL ausblenden…. Oder Wert ausblenden…. Und wert xy eintragen? -
@ben1983 Ja, vielen Dank!
Ja, das wäre das erste Resultat meines Tests.
Und wenn das altbewährte Flot so etwas implementiert hat, dann ist das sicher nicht so abwegig.
Ich habe mittlerweile vor dem Speichern der Daten auf "null" geprüft. Hat ein paar Stunden gut funktioniert. Jetzt gibt es wieder ein paar null-Werte. Muß nochmals die Skripte durchsuchen. Vielleicht gibt es auch noch andere Gründe.Zum Testen Deines TP Adapters werden diese Prüfungen natürlich wieder rausgenommen.
-
@klassisch Mir schwebt da folgendes vor.
Ein Eingabefeld, bei dem man mittels Semikolon getrennt Werte eintragen kann, welche ignoriert werden sollen. -
@ben1983 Wäre auch eine Möglichkeit.
Typische Werte wären 0 und null. Was würde man für null schreiben? null oder "null"?
So eine offene Liste macht aber viel Arbeit. Man muß alles mögliche abfangen, Länge begrenzen etc. Künnte ja einer <0 oder <=0 schreiben. Checkboxen für 0 und null sind da wahrscheinlich einfacher. -
@klassisch ich würde dann einfach auf die eingetragenen Werte abfragen, dass geht ja Ruck zuck. Müsste nur die Semikolons suchen.
Wenn man halt <0 einträgt dann ist die Bedingung halt nicht erfüllt. -
@ben1983 So weit reichen meine JS Kenntnisse nicht.
Aber so ein freies Feld weckt Begehrlichkeiten und hat das Potential Fragen und Mißverständnisse zu schaffen.
Jemand gibt nach bestem Wissen und Gewissen etwas ein und JS macht etwas anderes draus. Schon hat man Fragen udn Unsicherheit generiert. -
@klassisch stimmt wohl.
Ich schau mir mal eine Tabelle an. -
@klassisch Komme aktuell noch nicht mit der Tabelle zu Recht, aber habe null mal ausgeblendet.
Vielleicht kannst Du ja einfach mal die neue Version testen.null sollte jetzt eigentlich keine Auswirkungen mehr haben, wenn ich die richtige Stelle im sourcecode getroffen habe
-
@ben1983 Vielen Dank!
Habe jetzt die V 1.2.4 aktiv.2022-04-10 05:17:59.353 info starting. Version 1.2.4 in C:/Program Files/iobroker/ioBrMain036/node_modules/iobroker.lowpass-filter, node: v14.18.2, js-controller: 3.3.22
Die null Werte sind mir noch immer unklar. Die Daten werden bei mir von einem Skript an einer einzigen Stelle geschrieben. Und an dieser Stelle frage ich mittlerweile vor dem Speichern auf null ab. Dennoch finden sich die nulls in den Daten.
-
@klassisch Aber werden jetzt beim filtern ignoriert, oder?
-
@ben1983 Ja, bisher sieht es gut aus. Die letzten Stunden - seit Installation der neuen Version - gab es keinen Einbruch in der Kurve mehr.
Ich beobachte weiter. -
@klassisch Habe noch ein Min und Max Limit hinzugefügt.
-
@ben1983 vielen Dank, ist das ein Clipping der Eingangswerte? oder werden größere Werte gescippt?
-
@klassisch Beispiel am positiven Limit:
Limit steht auf 100
=> Alle Werte > 100 werden als Eingangswert ignoriert. -
@klassisch ist das soweit verständlich?
Also das es die Werte ignoriert und nicht den Wert annimmt, wenn der Wert bsp. Kleiner ist.
Das würde ich auch ungern machen. Lieber ignorieren. -
@ben1983 Habe darüber nachgedacht und mir hat es zumindest nicht auf anhieb eingeleuchtet.
Angenommen der Fall x > x_limit tritt ein. Was macht dann der TP? nimmt er den letzten gültigen Wert, den er hatte (das könnte auch ein ganz kleiner, also beliebig weit weg sein) und rechnet mit dem weiter? Könnte beliebig falsch enden.
Oder rechnet er gar nichts? Dann gibt es Kuddelmuddel mit der timebase, weil die dann wesentlich verlängert wird.
Meine Vorstellungskraft hat auch nicht ausgereicht um spontan einen konkreten Anwendungsfall dafür zu sehen.
Clipping hingegen wäre eher etwas, dem ich ab und an begegne.
Man ist dann schon im Bereich zu nichtlinearen Filtern. Man kümmert sich dann nicht mehr um das was jenseits der Limits passiert. Das wird ja dem Speicherelement vorenthalten.
Was mir schon ab und an begenet ist, sind nichtlineare Filter mit einem ggf adaptiven Totbereich. Also einem Bereich, in dem ein konstantes Signal ausgegeben wird, solange sich deas Eingangssignal innerhalb dieses Bereiches bewegt. Typischerweise nach dem Summationsglied am Eingang eines Reglers, also um die 0 herum. Das sorgt dann dafür, daß ein Signalrauschen sich nicht bis zum Stellglied durchschlägt.
Ist aber wieder eine ganz andere Geschichte.Die "null" Unterdrückung funktioniert bisher.
Magenta ungefiltert (5 min), schwarz gefiltert (30min = 6 Eingangswerte).