FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: musicnrw am 08 November 2022, 10:58:51

Titel: Reading in nummerischen Wert umwandeln
Beitrag von: musicnrw am 08 November 2022, 10:58:51
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
Titel: Antw:Reading in nummerischen Wert umwandeln
Beitrag von: yersinia am 08 November 2022, 11:10:23
dafür gibts ReadingsNum() (https://fhem.de/commandref_DE.html#perl)
attr Zaehler_PV_Gartenhaus userReadings Stromkosten {sprintf("%.2f Euro",ReadingsNum($name,"energy",0)/1000*0.2903)}
Titel: Antw:Reading in nummerischen Wert umwandeln
Beitrag von: musicnrw am 08 November 2022, 13:04:52
Vielen Dank, klappt perfekt!