-
-
Notifications
You must be signed in to change notification settings - Fork 14
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
Kompression auf Basis von relativer Änderung #421
Comments
Das gibt aber bei allen Messwerten, die auf 0 oder unter 0 gehen können, merkwürdige Effekte. Beispiel für eine Temperaturmessung mit 5% Kompression: Bei 20°C wird alles mit einem Delta von 1°C archiviert. Bei Werten im Bereich +/- 1°C wird aber praktisch jeder Wert archiviert, da eine Änderung der Temperatur mindestens 0,1°C ist. Mir kommt da kein Anwendungsfall in den Sinn, wo es Vorteile bringen würde. Hilfreich wären aber z.B. 5% vom Messbereich. Das könnte der CCU-Historian selber in einen Absolutwert umrechnen. Voraussetzung dafür ist, dass die CCU den Messbereich (Minimum und Maximum) korrekt mitteilt. |
Stimmt. Danke für den Hinweis. Ich habe auch darüber nachgedacht, ob es bezogen auf den Messbereich sinnvoller wäre. Womöglich braucht es eine Kombination aus beidem!?
Die relative Kompression macht überall dort Sinn, wo man auch logarithmische Skalen (siehe #154) verwenden würde. Ich denke da weniger an Temperaturen, als beispielsweise Strombedarf (Leistung). |
Ich habe mal ein Beispiel rausgesucht, in dem man die hohe Dynamik gut erkennen kann. Dabei fällt mir aber auch auf, dass alleine die Amplitude zu komprimieren eventuell nicht ausreicht. Eventuell braucht es eine Methode, die auch der zeitlichen Dynamik gerecht wird. Womöglich sollte meine ursprüngliche Idee dahingehend ausgeweitet werden, dass die Änderungsrate des Signals als Grundlage der Kompression dient. (Das wird bei Swinging Door z.T. schon berücksichtigt, aber mit absoluten Werten.) Das Problem resultiert zum Teil auch einfach aus der Tatsache, dass man mit dem CCU-JACK wunderbar auch Geräte per MQTT einbinden kann. Die Frequenz, mit der die Daten sprudeln ist damit meist deutlich höher als "nur" mit HM. Das Signal-zu-Rausch-Verhältnis ist wegen höherer Bandbreite (Abtastrate nach Nyquist) nun etwas anders... Ich werde mal ein paar Berechnungen mit o.g. Daten anstellen, um zu sehen, wie sich diese besser komprimieren lassen. |
Eine alternative für hohe Datenmengen ist auch ein performanter Rechner/NAS mit einer SSD für den CCU-Historian. |
Der Raspi mit 8GB RAM liegt schon bereit, allerdings möchte ich trotzdem die Daten komprimieren. Was habe ich schon davon, meinen Stromverbrauch der letzten X Jahre auf die Sekunde und das Milliampere genau auswerten zu können? (rhetorische Frage) Hier ein Konferenzbeitrag über mögliche Optimierungen des Swinging-Door-Algorithmus: Swinging Door Trending Compression Algorithm for IoT Environments |
Noch eine Idee:
|
Um einfach neue Kompressionsalgorithmen zu testen, ohne diese gleich im CCU-Historian zu implementieren, kann auch die zyklische Ausführung von Skripten in der Konfigurationsdatei verwendet werden. Einmal am Tag könnte dann der vorhergehende Tag komprimiert werden. Parameter könnten auch in der custom-Eigenschaft der Datenpunkte abgelegt werden. |
Meine 2-3 Gedanken dazu:
Diese Ideen lösen nicht das ursprüngliche Thema, nämlich die Anpassung der Parameter an den Wertebereich der Datenreihe... ABER:
|
Hallo zusammen, nur kurz dazu eine Frage: Kann ich die Delta-Kompression auch bei einer bestehen Datenbank hinterher einschalten und die so die Datenbank verkleinern? Ich habe das am Anfang verschlafen und eine jetzt eine Datenbank, die "mikrige" 300GB groß ist. Ich habe das Skript, das die Datenpunkte entsprechend umkonfiguriert, bereits laufen lassen. Danke für das großartige Tool! FantOEM |
Die Wahl der Parameter für Delta- und Swinging-Door-Kompression ist u. A. vom Wertebereich abhängig. Es sollte hier eine Möglichkeit geben, auch relative Werte anzugeben, beispielsweise 1% bezogen auf den Momentanwert.
The text was updated successfully, but these errors were encountered: