Reading in nummerischen Wert umwandeln

Begonnen von musicnrw, 08 November 2022, 10:58:51

Vorheriges Thema - Nächstes Thema

musicnrw

Hallo,
ich habe bei einem Device u.a. ein Reading, welches "energy" heißt und z.B. den Wert 150000 Wh beinhaltet.
Um daraus Stromkosten zu berechnen, habe ich ein userReading "Stromkosten" definiert:
attr Zaehler_PV_Gartenhaus userReadings Stromkosten {sprintf("%.2f Euro",ReadingsVal($name,"energy",0)/1000*0.2903)}
Ich rechne also die Wh in kWh um und multipliziere mit 0.2903 (Preis je kWh).
Ich erhalte so das Reading "Stromkosten", welches dann z.B. 25,36 Euro als Wert beinhaltet, genau was ich auch möchte.
Im Logfile findet sich dazu aber ein Eintrag
2022.11.08 10:26:47 1: PERL WARNING: Argument "172893 Wh" isn't numeric in division (/) at (eval 29195) line 1.
2022.11.08 10:26:47 3: eval: {sprintf("%.2f Euro",ReadingsVal($name,"energy",0)/1000*0.2903)}

Um das Ganze wirklich "richtig" zu machen, muss ich offensichtlich den Wert "energy" erst in einen nummerischen Ausdruck umwandeln.
Wie mache ich das?

Gruß, Thomas

yersinia

dafür gibts ReadingsNum()
attr Zaehler_PV_Gartenhaus userReadings Stromkosten {sprintf("%.2f Euro",ReadingsNum($name,"energy",0)/1000*0.2903)}
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | 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

musicnrw