Nachkommastellen beim event-aggregator begrenzen

Begonnen von Jamo, 30 Januar 2022, 23:25:12

Vorheriges Thema - Nächstes Thema

Jamo

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.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Chris46

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.

Nobbynews

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...

yersinia

Man könnte einen Rundungsparamer optional der 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.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Thomas0401

Oder ein userReading mit Rundung und Angabe der Nachkommastellen erstellen

z.B.
TempZirku {sprintf("%.0f", ReadingsNum($name, "TZW", 0))}