userReadings: Kombination von differential und round() rundet nicht

Begonnen von willybauss, 13 Februar 2016, 10:18:34

Vorheriges Thema - Nächstes Thema

willybauss

Hi,
ich lese mit dem OBIS-Modul die Strom-Zählerstände aus und rechne sie per userReadings im differential Modus in Leistungswerte um. Die dabei entstehenden unsinnigen 13 Nachkommastellen möchte ich mit round() abschneiden:


P_Bezug_Watt:energy_total differential { round( (ReadingsVal("Hausstrom_Zaehler","energy_total",0)*3600000), 2) }


Aber das klappt nicht. Das round() wird ignoriert; es bleiben Ergebnisse in dieser Form:


2016-02-13 10:02:25 OBIS Hausstrom_Zaehler P_Bezug_Watt: 29.2511499806347


Ich vermute, dass das durch die differential-Bildung nach dem runden kommt.

Ein Ersatz des round() durch sprintf("%.2f",ReadingsVal...  wird aus demselben Grund nicht funktionieren.

==> muss ich das Ergebnis mit einem zweiten userReading aufbereiten, oder geht das einfacher?
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

stromer-12

Ich tippe mal auf differential welches die nachkommastellen produziert
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

willybauss

Ich habs jetzt in einem zweiten userReading gerundet:


P_Bezug_temp:energy_total differential { ReadingsVal("Hausstrom_Zaehler","energy_total",0)*3600000 }, P_Einsp_temp:feed_total differential { ReadingsVal("Hausstrom_Zaehler","feed_total",0)*3600000 },  P_Bezug_Watt { sprintf("%.0f",ReadingsVal("Hausstrom_Zaehler","P_Bezug_temp",0)) },  P_Einsp_Watt { sprintf("%.0f",ReadingsVal("Hausstrom_Zaehler","P_Einsp_temp",0)) }
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS