Rundung unter userReadings "%.3f" funktioniert nicht

Begonnen von Burny4600, 05 September 2026, 10:38:35

Vorheriges Thema - Nächstes Thema

Burny4600

Ich habe eine Definition inklusive Rundung unter userReadings angelegt.
Dabei wird die Rundung nicht übernommen.

Active_Energy_Imp__kWh:Active_Power_Total_Imp__W.* integral {sprintf("%.3f", ReadingsNum("$NAME","Active_Power_Total_Imp__W",0) / 3600000 )},
Active_Energy_Exp__kWh:Active_Power_Total_Exp__W.* integral {sprintf("%.3f", ReadingsNum("$NAME","Active_Power_Total_Exp__W",0) / 3600000 )}

Ich habe eine Anpassung vorgenommen damit auch die Rundung funktioniert.
AEI:Active_Power_Total_Imp__W.* integral {ReadingsNum("$name","Active_Power_Total_Imp__W",0) / 3600000 },
Active_Energy_Imp__kWh:AEI.* {sprintf("%.3f",ReadingsNum("$name","AEI",0))},

AEE:Active_Power_Total_Exp__W.* integral {ReadingsNum("$name","Active_Power_Total_Exp__W",0) / 3600000 },
Active_Energy_Exp__kWh:AEE.* {sprintf("%.3f",ReadingsNum("$name","AEE",0))}

Entweder übersehe ich etwas, oder es gibt dazu keine andere Lösung.
LG Chris

Raspberry Pi 2-5 => Jessie, Bullseye, Bookworm, Trixie
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Davis, Eastron, FS20, Homematic, IT, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, SkyWind, TEK603

betateilchen

Zitat von: Burny4600 am 05 September 2026, 10:38:35Entweder übersehe ich etwas

Vermutung:
Deine Rundung innerhalb des perl codes funktioniert wahrscheinlich einwandfrei. Aber durch das "integral" wird der gerundete Wert fürs Weiterrechnen verwendet und dann wieder verhunzt.

Leg doch mal testweise ein userReading mit dem perl code ohne das integral an und schaue, ob dann ein dreistelliger Wert im userReading steht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Burny4600

Test mit
TEST:Active_Power_L1__W.* {(sprintf("%.3f", ReadingsNum($name,"Active_Power_L1__W",0)))}
Ohne Integral kommen die Werte 3 Stellig an. Das dürfte an dem Integral liegen.
LG Chris

Raspberry Pi 2-5 => Jessie, Bullseye, Bookworm, Trixie
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Davis, Eastron, FS20, Homematic, IT, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, SkyWind, TEK603

betateilchen

(offtopic)

Zitat von: Burny4600 am 05 September 2026, 14:24:16{(sprintf("%.3f", ReadingsNum($name,"Active_Power_L1__W",0)))}

Die erste runde Klammer in diesem perl code ist überflüssig.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Burny4600

Zitat von: betateilchen am 05 September 2026, 15:06:49Die erste runde Klammer in diesem perl code ist überflüssig.

Stammt noch aus einer anderen Berechnung.
LG Chris

Raspberry Pi 2-5 => Jessie, Bullseye, Bookworm, Trixie
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Davis, Eastron, FS20, Homematic, IT, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, SkyWind, TEK603

TomLee

ZitatOhne Integral kommen die Werte 3 Stellig an. Das dürfte an dem Integral liegen.

Jetzt ein zweites userReadings erstellen und das erste "verstecken".

https://forum.fhem.de/index.php?topic=59666.0

Burny4600

Das mit dem Punkt am Anfang funktioniert bei mir nicht.
Wenn ich einen Punkt am Anfang mache, wird das gesamte userReadings nicht behandelt, und es gibt auch keine Fehlermeldung dazu.
LG Chris

Raspberry Pi 2-5 => Jessie, Bullseye, Bookworm, Trixie
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Davis, Eastron, FS20, Homematic, IT, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, SkyWind, TEK603

TomLee

Verweist in dem Readingsnum im Readingnamen auch auf das versteckte Reading und hast einen Punkt davor ergänzt?

Zeig mal was definiert hast.

Burny4600

#8
Das der Punkt zur Bezeichnung notwendig ist hatte ich nicht erkannt.
Das war der Fehler.

userReadings
.AEI:Active_Power_Total_Imp__W.* integral {ReadingsNum($name,"Active_Power_Total_Imp__W",0) / 3600000 },
Active_Energy_Imp__kWh:.AEI.* {sprintf("%.3f",ReadingsNum($name,".AEI",0))},

.AEE:Active_Power_Total_Exp__W.* integral {ReadingsNum($name,"Active_Power_Total_Exp__W",0) / 3600000 },
Active_Energy_Exp__kWh:.AEE.* {sprintf("%.3f",ReadingsNum($name,".AEE",0))},

TEST:Active_Power_L1__W.* {sprintf("%.3f", ReadingsNum($name,"Active_Power_L1__W",0))}

.AEE und .AEI ist somit ein eigenes Reading das nicht angezeigt wird.
LG Chris

Raspberry Pi 2-5 => Jessie, Bullseye, Bookworm, Trixie
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Davis, Eastron, FS20, Homematic, IT, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, SkyWind, TEK603

TomLee

Ok, habs mal ausprobiert. Bei mir klappts nur wenn ich keinen Trigger angebe.
Wie der korrekt angegeben werden muss ist mir noch unklar.

TomLee

#10
Versteckte Readings erzeugen offensichtlich kein Event. Mit bspw.
Zitatsetreading d .pi 3.14159265359
seh ich nix im Eventmonitor.

TomLee

Das Reading zur Berechnung nicht verstecken und damit leben, wird wohl die Lösung sein.

Burny4600

Bei mir funktioniert die Definition für die kWh Berechnung.

userReadings
.AEI:Active_Power_Total_Imp__W.* integral {ReadingsNum($name,"Active_Power_Total_Imp__W",0) / 3600000 },
Active_Energy_Imp__kWh:.AEI.* {sprintf("%.3f",ReadingsNum($name,".AEI",0))},

.AEE:Active_Power_Total_Exp__W.* integral {ReadingsNum($name,"Active_Power_Total_Exp__W",0) / 3600000 },
Active_Energy_Exp__kWh:.AEE.* {sprintf("%.3f",ReadingsNum($name,".AEE",0))}

Ich werde das noch beobachten.
LG Chris

Raspberry Pi 2-5 => Jessie, Bullseye, Bookworm, Trixie
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Davis, Eastron, FS20, Homematic, IT, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, SkyWind, TEK603

TomLee

#13
So sollte es klappen:

Active_Energy_Imp__kWh:.AEI:.* ...
Active_Energy_Exp__kWh:.AEE:.* ...

So hab ich es nachgestellt und den Regex aus dem Eventmonitor abgeguckt:
https://demo-fhem.cooltux.net/fhem?detail=d

edit:
Demnach sollte deine Variante auch klappen:
Active_Energy_Imp__kWh:.AEI.* ...
Active_Energy_Exp__kWh:.AEE.* ...

Burny4600

Es geht beim Demo auch ohne den Doppelpunkt hinter
round3:.pi.*
LG Chris

Raspberry Pi 2-5 => Jessie, Bullseye, Bookworm, Trixie
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Davis, Eastron, FS20, Homematic, IT, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, SkyWind, TEK603