Ich wünsche mir, dass die Nachkommastellen beim event-aggregator begrenzt werden, wie hier auch schon angefragt. https://forum.fhem.de/index.php/topic,36771.0.html
Ich logge die Temperatur meines Kühlschrankes, mittels event-aggregator berechne ich den Average.
attr TempKS userReadings temperature_avg:temperature:.* {ReadingsNum($name,'temperature',0)}
attr TempKS event-aggregator temperature_avg::linear:mean:18000
Für temperature_avg erhalte ich werte wie
temperature_avg 7.03757484938
Das macht doch keinen Sinn:
- Man schreibt 11 nachkommastellen in die db
- Jede Änderung der x-ten nachkommastelle führt zu einem zusätzlichen Event, auch wenn sich die temperatur nur unwesentlich ändert
- Um die Nachkommstellen zu begrenzen, muss man ein neues userreading einführen, was wieder zusätzliche events generiert.
- der Anwendungssfall rechtfertigt eine Fliesskommagenauigkeit gar nicht.
Wäre ich auch dafür. Ich habe bei der PV Anlage und bei den Stromzählern mit event-aggregator das gleiche Problem. Die Notifys reagieren auf die Events leider unnötig oft.
Das ist nicht die Aufgabe des event-aggregator.
Rundungen, egal welcher Art, die im Hintergrund automatisch passieren, können mMn zu unerwarteten Ergebnissen führen.
Es sollten daher in einer allgemeinen Funktion so viele Stellen wie möglich mitgenommen werden und nur als letzte Tat eine Rundung durch den user gezielt durchgeführt werden.
Der Eine möchte 4 Stelllen, der Andere 1 Stelle hinter dem Komma usw.
Nur meine Meinung...
Man könnte einen Rundungsparamer optional der Syntax (https://wiki.fhem.de/wiki/Event-aggregator#Syntax) hinzufügen. Dann ist allen geholfen: jene, die es genau brauchen, jene mit n-nachkommastellen-wünschen, und jene, die es nicht interessiert:
attr <device> event-aggregator reading:interval:method:function:holdTime[:round(n)]
Wäre aber imho was für @rudolfkoenig.
Oder ein userReading mit Rundung und Angabe der Nachkommastellen erstellen
z.B.
TempZirku {sprintf("%.0f", ReadingsNum($name, "TZW", 0))}