FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: macmattes am 30 April 2015, 11:46:23

Titel: Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: macmattes am 30 April 2015, 11:46:23
versuche mich gerade am event-aggregator, und stelle mit erschrecken fest, dass ich 11 nachkommastellen geloggt bekomme.
kann man dass irgendwo begrenzen?

mein Atributes sieht so aus
event-aggregator volume_measured:900:linear:mean

das Reading entsprechned so:
volume_measured  1753.03757484938

ich will jetzt nicht unbedingt ein zusätzliches Userreading aufmachen
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: Dr. Boris Neubert am 01 Mai 2015, 09:02:43
Hallo macmattes,

wozu möchtest Du die Werte mit geringerer Stellenanzahl loggen?

Viele Grüße
Boris
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: macmattes am 01 Mai 2015, 09:26:17
habe mir mit Ethersex eine Tanklevelmessung gebaut und die schwankt ziemlich, daher dachte ich, wäre sinnvoll die Werte über eine gewisse zeit zu mitteln, hab für mittelwerte immer average bzw in letzter zeit statistics benutzt, bin dann aber auf den event-aggregator gestossen. funktioniert auch soweit, bis eben auf die vielen Stellen nach dem Komma.
beim richtigen überlegen hat es sich jetzt eigentlich erledigt, sieht nur komisch aus mit so vielen Stellen nach dem Komma im Log.
im FHEMWEB ist es eigentlich nur ein rein optisches problem wenn ich mir den Wert als stateFormat anzeigen lasse, dann kommen auch die ganzen kommastellen, dachte ich könnte es umgehen Stateformat zu formatieren oder ein zusätzliches userreading anzulegen.
Ich nehme aber mal an event-aggregator benutzt die vielen stellen zum weiterrechnen, richtig?
sorry musste warscheinlich nur mal nachfragen, damit ich selber nachdenke :-)
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: Dr. Boris Neubert am 01 Mai 2015, 10:31:17
Hallo,

das hinter event-aggregator liegende Modul TimeSeries.pm weiß ja nicht, was der Anwender will, und rechnet daher natürlich immer mit maximaler Fließkommagenauigkeit.

Für die Anzeige kannst Du stateFormat verwenden.

Viele Grüße
Boris
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: vbs am 01 Mai 2015, 12:20:04
Ich finde das auch etwas unschön, dort diese maximale Anzahl an Nachkommastellen zu sehen. Außerdem vermute ich, dass in den meisten Anwendungsfällen die zugrunde liegenden Daten gar nicht so genau sind, dass diese Anzahl an Nachkommastellen gerechtfertigt wäre (bzw. für den Nutzer einfach keinen Mehrwert bietet). Suggeriert dann mMn nur eine Genauigkeit, die nicht gegeben ist.
Bin natürlich voll bei dir, dass das darunter liegende TimeSeries-Modul von all dem nichts wissen muss und einfach mathematisch beste Werte ermitteln sollte.

Ich hab mir erstmal damit beholfen, dass ich Zeile 3830 der fhem.pl wie folgt geändert habe, so dass auf zwei Nachkommastellen gerundet wird:
$value = eval sprintf("%.2f", $ts->{$function}) if($changed);
(Mag dafür noch schönere Wege geben)
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: vbs am 01 Mai 2015, 18:10:20
Darf ich einen Patch vorschlagen zu dem Thema? Man kann optional dem Attribut einen fünften Parameter mitgeben, der die Anzahl der Nachkommastellen angibt, die man haben möchte. Beispiel:
airQuality:120:linear:mean:2

Wenn man nichts angibt, bleibt alles wie vorher.
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: Markus Bloch am 01 Mai 2015, 20:43:54
Finde ich einen guten Vorschlag. Mich stören diese ellenlangen Nachkommastellen auch schon seit längerem.
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: Dr. Boris Neubert am 10 Mai 2015, 18:38:12
Hallo,

ich habe immer noch nicht verstanden, welches Problem mit der Begrenzung der Nachkommastellen gelöst werden soll. Wer kann es mir bitte erklären?

Viele Grüße
Boris
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: vbs am 10 Mai 2015, 19:32:50
Ich fürchte, ich kann da nicht mehr zu sagen als weiter oben schon schon geschrieben wurde: ich würde es nicht als "Problem" bezeichnen, aber ich finde es mindestens unschön. Ich denke, dass es einfach keinen Mehrwert hat, diese vielen Nachkommastellen zu sehen. Impliziert ja auch, dass die Eingangsdaten eine dermaßen hohe Genauigkeit haben, dass diese Anzahl an Nachkommastellen überhaupt gerechtfertigt wäre.

Mit dem Patch hätte der User einfach die freie Wahl, wieviel er sehen möchte. D.h. es geht ja niemandem etwas verloren durch die Option.
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: Markus Bloch am 10 Mai 2015, 21:13:01
@Boris: Ich würde es nicht als technisches Problem darstellen sondern eher als "optisch kontraproduktiv". Wenn ich Werte mit 1 Nachkommastelle in den event-aggregator laufen lasse, dann ist es ja klar, dass der Mittelwert höchstens 2-3 Nachkommastellen brauch und nicht 11. Wenn ich die Werte so direkt als STATE in der Raumübersicht anzeige, ist immer alles verschoben weil dort wieder solche monströssen Nachkommastellen aus dem Gebüsch gesprungen sind. Ich persönlich brauche die nicht und finde daher den Patch von vbs optimal, so kann jeder seine eigenen Vorstellungen setzen und wir müssen uns nicht streiten ob man jetzt 2 oder 3 Nachkommastellen dafür nehmen müsste.

Ich hatte dir dazu schonmal ein Ticket im Bugzilla aufgemacht: https://git.fhem.de/bugzilla/show_bug.cgi?id=10 . Dein Vorschlag war ein globales readingsFormat Attribut, was ich aber für den falschen Weg halte (da wir schon genug solcher globalen Attribute haben).

Gruß
Markus
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: Dr. Boris Neubert am 10 Mai 2015, 21:38:07
Hallo,

es geht also um die Anzeige. Es ist richtig, dass es nicht sinnvoll ist, mehr Nachkommastellen anzuzeigen, als der ursprüngliche Messwert an Genauigkeit hat.

Meiner Meinung nach ist die Vorgabe einer Nachkommastellenzahl beim event-aggregator eine Funktionalität, die da nicht so recht hingehört.

Das Argument, dass ein weiteres Attribut dafür auch eine sehr spezielle Lösung ist, teile ich mittlerweile auch.

Richtig wäre m.E. der in dem Ticket gemachte Vorschlag, dies über Metainformationen am Reading zu lösen. Seit einer gefühlten Ewigkeit habe ich die RTypes.pm als leere Hülle für so was im fhem.pl inkludiert. Leider hat die Zeit und der Mut bisher nicht gereicht, daraus etwas entstehen zu lassen, was zukunftsfähig ist.

Gedacht war hier, hierarchisch Metainformationen zu Readings abzulegen. Der Benutzer würde dann u.a. konfigurieren können, dass das Reading namens foo am Gerät bar im Format %4.1f ausgegeben wird. Muss da nochmal drüber nachdenken. Vielleicht fällt mir ein einfacher Weg ein, dass schlicht aber erweiterbar zu implementieren.

Viele Grüße
Boris



Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: Markus Bloch am 10 Mai 2015, 23:21:08
Hallo Boris,

auf deine Implementation der RTypes.pm bin ich auch schon die ganze Zeit gespannt, da man hier eine tatsächliche Entkoppelung von Modulen, Frontends und den Nutzerwünschen schafft, sowie einen festen Platz für Einheiten (°C, %, ...) inkl. Umrechnungen.

Momentan gibt es aber eine solche strikte Trennung nicht. Ich gebe dir Recht, dass die Angabe der Nachkommastellen direkt im event-aggregator reinweg von der eigentlichen Funktion dort nicht hingehört. Leider hat der User aber aktuell nur begrenzt einfache Möglichkeiten die eigenen Wünsche der Nachkommastellen abzubilden. Dies führt in den meisten Fällen zu Perl-Ausdrücken, die nicht unbedingt jedem User sofort geläufig sind. Man kann jetzt viel mit stateFormat oder userReadings rumwurschteln um sich eigene Formatierungen zu bauen. Letzten Endes bleibt der Zahlenwert aber unverändert (z.B. bei FileLog).

Aufgrund der aktuellen Möglichkeiten finde ich einen optionalen Zusatzparameter bei event-aggregator für die Nachkommastellen als die einfachste Möglichkeit, sowohl für den User, als auch für Developer, um diesem Wunsch gerecht zu werden.

Gruß
Markus
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: JoeALLb am 05 Januar 2016, 10:36:46
Wie sieht es hier aus? Ich finde den Patch äußerst sinnvoll und nützlich! Überigens nicht nur zur Anzeige, sondern auch zum Ausdünnen der Werte. Mit so vielen Nachkommastellen gibt es einfach mehr scheinbar unterschiedliche Werte, die gerundet die selben wären! Von daher fürde ich die Einbindung davon stakr befürworten!
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: Dr. Boris Neubert am 05 Januar 2016, 19:41:48
Guckst Du hier: http://forum.fhem.de/index.php?topic=46730 (http://forum.fhem.de/index.php?topic=46730)
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: JoeALLb am 06 Januar 2016, 07:55:36
werde das weiter verfolgen,  bis sich da aber was tut,  nutze ich den Patch weiter. Würde daher dennoch seine Übernahme vorschlagen, da er an der Kompatibilität nicht rüttelt.
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: Wolfspirit am 19 Januar 2016, 14:07:40
Ich stimme zu.
Zumindest als übergangslösung wäre der Patch echt sinnvoll bis eine bessere Lösung gefunden ist.
Ich muss im moment jedesmal die fhem.pl nach einem Update ändern da ich sonst probleme mit meinen readings bekomme.

Vorallem macht dieser patch ja nichts kaputt sondern ertweitert lediglich.
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: vbs am 20 Januar 2016, 12:40:08
Fände es auch nach wie vor gut, wenn der Patch eingecheckt werden könnte. Ich hab für mich noch keine nutzbare Alternative gefunden. Der Patch hat mMn ja auch erstmal keine Nachteile und steigert die Code-Komplexität auch nur minimal.
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: rtv am 23 Januar 2016, 14:45:58
Vielen Dank vbs für den Patch.
Ich nutze das Attribut z.B: für Thermostaten um sparsame Logs und damit schnelle und saubere Plots zu bekommen.
Leider zerschießen die Nachkommastellen nicht nur die ReadingGroups, sondern auch die Werte des Statistics Moduls (und damit wiederum die Logdateien).
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: Dr. Boris Neubert am 23 Januar 2016, 14:58:19
Hallo,

warum legt Ihr nicht ein userReading über das Reading mit den vielen Nachkommastellen, welches eine mathematische Rundungsfunktion verwendet?

Viele Grüße
Boris
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: vbs am 23 Januar 2016, 15:19:15
Weil das mMn ziemlich umständlich ist: Man müsste a) das userreading incl. Perl-Code anlegen, b) das DbLog so anpassen, dass die entsprechenden UserReadings geloggt werden (und die alten nicht) und c) die Plots auf die userreadings ändern und d) dann die alten Datenbankeinträge, so ändern, dass sie den neuen userreading-Namen tragen, da sonst erstmal alle Plots leer sind. Und das Ganze eben für alle Reading, die gerundet werden sollen.
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: betateilchen am 23 Januar 2016, 15:28:32
Zitat von: Dr. Boris Neubert am 23 Januar 2016, 14:58:19
welches eine mathematische Rundungsfunktion verwendet?

zum Beispiel die in fhem enthaltene Funktion round()... ;)
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: Jostar am 05 April 2016, 23:13:21
Ich glaube die Antwort (an Boris), warum das Loggen solch vieler Nachkommastellen vermieden werden sollte fehlt noch:
* vermehrter Speicherplatzbedarf (mit den ganzen Nachteilen, verminderte Verarbeitungsgeschwindigkeit in der DB, etc.)
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: willybauss am 24 September 2016, 19:47:27
Wollte mal nachfragen, wie es nun aussieht. Weder hier noch bei "Guckst Du hier" sehe ich wirklich was. Wäre aber wirklich ganz praktisch, sich in effizienter Weise auf eine sinnvolle Anzahl Nachkommastellen beschränken zu können.
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: Weissbrotgrill am 24 September 2017, 10:54:18
Schade das dieser einfache und nützliche Patch nicht übernommen wurde.
Ich habe aktuell das gleiche "Problem" mit LaCrosse Sensoren deren Werte ich über 60 Sekunden aggregiere. Die vielen Nachkommastellen sind extrem unnötig und erfordern an den unterschiedlichsten Stellen manuelle Eingriffe.
Da finde ich den Patch doch wesentlich sinnvoller. Habe ihn daher in meiner FHEM Installation übernommen. Ich hoffe ich finde einen Weg nach einem Update daran zu denken ihn wieder anzuwenden :-)

@vbs: vielen Dank
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: willybauss am 24 September 2017, 11:49:10
Eigentlich wäre die Lösung einfach: bei der Mittelwertbildung wird das Ergebnis automatisch auf die Anzahl Nachkommastellen begrenzt, die die Eingangswerte hatten. Alles darüber hinaus suggeriert eine Genauigkeit, die die Eingangswerte schon nicht hatten.

Bei 23 Beiträgen in diesem Thread sind wir nun bei ca. 20 (= 86,95652173913043%) angelangt, die sich sowas wünschen würden. Dennoch scheint eine demokratisch eindeutige Entscheidung keine Einsicht zur Implementierung zu bewirken - schade.

PS:
Alle meine Versuche, im Label von SVG-Plots die Nachkommastellen zu begrenzen, haben nicht geklappt. Entweder ich bin zu doof oder die nachträgliche Rundung findet hier ihre Grenzen.
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: Jostar am 05 Januar 2018, 20:31:51
Gibt es in der Zwischenzeit schon eine Lösung für die unnötigen und störenden Nachkommastellen?
Ich wäre sonst auch sehr dafür den Patch für alle verfügbar zu machen, es scheint für mich keine Nachteile zu geben (5. Parameter in der Übergabe).
Gruß J.
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: willybauss am 05 Januar 2018, 23:17:44
Zitat von: Jostar am 05 Januar 2018, 20:31:51
...5. Parameter in der Übergabe
Oder sogar ganz ohne zusätzliche Parameter, wenn die Rundung automatisch auf dieselbe Anzahl Nachkommastellen begrenzt wird wie die Eingangsdaten.

Es ist schon traurig, was hier passiert, der reinste Kindergarten. Boris stampft nur mit dem Fuß auf den Boden und will einfach nicht, und Betateilchen ist mir bis heute die Antwort schuldig (Frage sh. mein Beitrag vom 24 September 2017, 11:49:10), wie er die round()-Funktion ins Label eines SVG-Plots einbauen will. Außer fhem-Abstürzen konnte ich da nichts erreichen.
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: KernSani am 07 Januar 2018, 01:47:43
die Diskussion ist hier irgendwie am falschen Platz... Ich nehme an, der ursprüngliche TE liest ohnehin nicht mehr mit, daher verschiebe ich mal ins Developer-Forum...
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: JimKnopf am 01 Juni 2020, 14:20:06
Hallo!

Ich hänge mich jetzt hier auch mal ran und erwecke den Thread vielleicht wieder zum leben.
Mich neven diese vielen Nachkommastellen auch und es gibt immer noch keine Lösung?
Echt schade, dass manche so stur sein können.

Gruß,
Burkhard
Titel: Antw:Nachkommastellen beim event-aggregator begrenzen?
Beitrag von: abc2006 am 15 Juli 2020, 11:19:34
Hallo,
ich würde auch befürworten, die Ausgangsgenauigkeit auf die Eingangsgenauigkeit zu beschränken.

Grüße,
Stephan