-
Notifications
You must be signed in to change notification settings - Fork 123
-
Notifications
You must be signed in to change notification settings - Fork 123
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature request: Ignore duplicate counter values #98
Comments
Dein Ansatz bei minReadingDelta geht von einem aufsteigendem Zählwert aus - was ich gut finde. Hat aber mehrere Konsequenzen:
|
Ich hätte da noch ein paar Gedanken on top ...
|
Aus der ML: Am Freitag, 9. Januar 2015 schrieb Mike Grüger :
Das ist IMHO das gleiche Thema. |
Besser: Darstellung auf "steps" stellen.
Nein, der Vergleich sollte einfach mit Absolutwerten arbeiten.
Prinzipiell ja, aber das erfordert eine zusätzliche DB-Abfrage während der vzlogger ja schon alle Informationen hat. Daher würde ich die Logik lieber dort ansiedeln. @mbehr1 was meinst Du? Mit wenig Aufwand umsetzbar und Meter-unabhängig? |
Ich könnte in vzlogger/api/volkszaehler eine Logik einbauen, den Wert nicht zu schicken, wenn er dem vorherigen entspricht. Das ginge ganz schnell. Lediglich das Rampenproblem bleibt (Middleware zeigt dann Rampe vom Zeitpunkt des letzten Wert zum Zeitpunkt vom neu geänderten).
Gruß Matthias |
Klingt gut.
Bin mir nicht sicher warum. Du versuchst eine Information zu erfinden die es nicht gibt, denk n die Auflösung des Zählers. M.e. Reicht display steps dafür. Viele Grüße, Andreas
|
Das ist keine neue Info sondern eher ein „komprimieren“ der Infos. Bsp. aus einer Kette von 1,1,1,1,2,2,2,2,3,4 mit dazugehörigen Timestamps würde ich: 1,1,2,2,3,4 machen. Die inneren Timestamps tragen in dem Sinne ja keine Information.
Gruß Matthias Behr |
Verstanden. Das hatte ich mir vor ewiger Zeit mal als Enhancement für vzcompress überlegt aber wieder verworfen. Letztlich ist dann die Aggregation draus geworden.
Jaein. Sie tragen die Information dass sich der Wert zwischenzeitlich nicht geändert hat. Genau die gleiche Information habe ich aber auch wenn kein neuer Wert mehr auftaucht- dann ist der alte Wert weiterhin der gültige.
Ist sicher einfach gemacht aber ich sehe den Nutzen einfach nicht. Würde die Komplexität sparen uns sowas wie |
ok. Der Vorschlag ist gut: pro channel kann konfiguriert werden: Implementation erst mal nur für volkszaehler api. Ok?
Gruß |
Klingt super ... die Idee, das als Zeitfenster zu programmieren toppt das noch etwas. Da hat man dann noch eine Sicherheit, dass alle Naselang mal ein Wert in der DB steht (z.B. des nächtens, wenn die Wärmepumpe gar nix verbraucht). |
Siehe PR#125. Ungetestet, ich füge jetzt Unit Tests hinzu, wäre gut, wenn jemand aber auch am realen System mit testen könnte.
Gruß |
Habe PR mit Unit Tests aktualisiert. Scheint zu funktionieren.
Gruß |
implemented duplicate handling for volkszaehler api (see #98)
Merged with PR #125. |
Siehe hier- wäre das ein alternativer oder zusätzlicher Lösungsansatz? http://comments.gmane.org/gmane.network.volkszaehler.devel/2055 |
geht nur für absolute Werte. Könnte leicht eingebaut werden, aber ist noch eine weitere Config-Option.... |
Jetzt bin ich verwirrt. Hier gehts doch auch um absolute Werte (=Zählerstände) dachte ich? |
Ich mache die Diskussion hier nochmal auf. Aus der ML (http://volkszaehler.org/pipermail/volkszaehler-dev/2015-March/004311.html, leider HTML Mail):
Das ist zumindest nicht das Verhalten das ich verwarten würde und es ist- wie erwähnt- m.E. falsch und irreführend.
Meine Meinung. Wer "die Wellenform halten" will kann das im Frontend mittels steps statt lines machen. Neues Issue oder weitere Diskussion hier da wir sie bereits hatten? |
Ich verstehe den Punkt nicht ganz. |
Nein, ich denke "duplicate Handling" reicht erstmal. Der Aggmode DELTA ist auch interessant aber m.E. erstmal nicht notwendig. Entschuldige die Verwirrung. Evtl. mache ich für DELTA nochmal ein Issue zur Doku auf.
Das ist aus meiner Sicht FALSCH. Für "proper waveform" gibt es display steps. Die jetzige Implementierung schreibt in die Middleware
M.E. ist es richtig zu schreiben
Argumentation dazu siehe meine Kommentare im PR #125 dazu. |
Die jetzige Implementierung fügt keine nicht vorhandenen Werte ein, sondern lässt nur paar raus.
Das ist doch nicht falsch/verkehrt. Dadurch bleibt die "waveform". Einziger Nachteil ist, dass ein paar Werte zu viel geloggt werden oder anders ausgedrückt: nicht alle duplicate werden entfernt. Aber es werden keine falschen Punkte/Werte hinzugefügt. |
Hi, Zur Frage im Beitrag darüber: Ja, eine Option, alle Duplikate zu entfernen, wäre die Lösung. Danke, |
So ist es. Zumal:
Der letzte "Alt-"messwert DARF nicht gespeichert werden. |
Ok. Ich füge Parameter hinzu mit dem man steuern kann, ob man den letzten Wert habe möchte (Default keine Doppler) (und werde mir dann bei mir im Frontend auch mal "steps" anschauen ;-) Gruß Sent from a mobile device.
|
Bitte nicht. Einfach den Wert weg lassen. Wer den haben will muss die |
Ich mag nicht, dass das dadurch eine wichtige Information verloren geht: Ein Parameter mit Default auf deinem gewünschten Verhalten, der also auch weggelassen werden kann, schadet doch nicht. (-> Anwendungsfall für den Conf Editor, wo solche Parameter zB nur im Expertenmode abgefragt werden). Gruß Sent from a mobile device.
|
Das sehe ich auch so. In beiden Fällen hätte ich keine Zeiten mehr, wo nichts verbraucht wird, sondern einen kontinuierlichen Verbrauch lt. Frontend obwohl nichts angefallen ist. Der Wert mag über die Nacht verschwindend gering sein, aber über den Tag (und wenn die WP im Winter ordernlich ballert) macht sich das schon bemerkbar. Ich kann bei reinen Zählerständen nunmal nicht ermitteln, in welchem Zeitraum und welcher Höhe die Stromentnahme stattgefunden hat. Aber ich kann mir leider keinen anderen Zähler aussuchen. |
Wie kommst Du darauf? Auf welchen Wert hast Du 'duplicates' eingestellt? Mit z.B. 300 könntest Du alle 5min einen Wert speichern, das Datenaufkommen ist vernachlässigbar. |
Also: nach kurzem Telefonat mit andig hat sich die Situation geklärt: Daher werde ich die Implementierung wie von Andreas vorgeschlagen ändern. D.h. Duplikate können entweder komplett entfernt werden oder alle x Sek ein Wert eingefügt, nicht jedoch noch den letzten Wert vor Wechsel (den ursprünglich als "Waveform" erhaltenden). |
Hey, das klingt gut. Freu mich schon auf einen Test. Gunnar |
...und uns die Köpfe heissreden ;) Danke Matthias für Deine Geduld! |
Siehe PR #139. Um keine Duplicates zu bekommen, muss der Timeout aktuell auf hohen Wert eingestellt werden (z.B. alle 2Mio Sek / 23Tage). Das sollte für alle praktischen/realen Fälle reichen, oder? |
merged PR after +1 from andig. Issue can be closed, right? |
Hi, Gunnar |
Super Sache! |
Kann geschlossen werden, oder? |
Denke auch. Danke für die Geduld! |
Hallo, |
Hallo, eher nicht. Wenn du Duplicates auf 301 (s) setzt, dann werden alle 301s ein Wert geschickt, auch wenn der dem vorherigen entspricht.
Gruß Matthias |
Hallo Matthias, Hintergrund: Mein Zähler liefert nur alle 300s einen Wert und hat eine Nachkommastelle. Wahrscheinlich sollte ich den Wert an eine Zeit mit sehr wenig Leistungsaufnahme anpassen (Nachts). Oder gibt es hier Erfahrungen/Empfehlungen? |
Was ist denn deine Sorge? Wenn dein Zähler eh nur alle 300s einen Wert liefert, hast du doch eh keine hohe Last/kein hohes Datenvolumen. Du kannst duplicates auf sehr hohen Wert setzen (zB 24h=86400). Wenn du eher sehen willst, ob der Zähler noch Werte liefert, dann kannst du auch einen sehr kleinen Wert nehmen (oder duplicates komplett weg lassen). Gruß Sent from a mobile device.
|
Meine Sorge galt der Kurvenform. Aber ich habe nun gesehen, dass ein höherer Duplicate lediglich das zeichnen der Linie bis zum nächsten (veränderten) Datenpunkt verhindert. Das passt für mich. Vielen Dank für die Erweiterung! |
Aus der ML:
2015-01-02 15:09 GMT+01:00 Martin Heinze martin-heinze@gmx.net:
Sehe ich auch so, ist allerdings vom Anwendungfall abhängig.
Es sollte relativ einfach sein einen Konfigparameter in der Art von
ignoreDuplicateReadings
oder besserminReadingDelta
(flexible) zu bauen den der vzlogger mit dem vorhergegenden Absolut(!)wert vergleicht und nur schreibt wenn größer. Damit kann man sich Roundtrips in die Middleware/DB ersparen.The text was updated successfully, but these errors were encountered: