[gelöst] Rechnen in UserReadings

Begonnen von rhoffm34, 26 November 2023, 18:44:18

Vorheriges Thema - Nächstes Thema

rhoffm34

Hallo zusammen.

Ich möchte gerne in den UserReadings die Kw/h in Euro umrechnen.

Versucht habe ich folgendes:

statEnergyDayLast_Euro { ReadingsVal($name,"statEnergyDayLast",0)*[P_value_StromPreis] }
Als Fehler kommt dann:

Error evaluating HM_Leistung3_WoZiTV_Pwr userReading statEnergyDayLast_Euro: Bareword "P_value_StromPreis" not allowed while "strict subs" in use at (eval 126491) line 1.
P_value_StromPreis ist der Parameter für den Strompreis

Offensichtlich funktioniert meine Syntax nicht.

Kann mir jemand auf die Sprünge helfen?

Danke und Gruß,

Ralf

betateilchen

Als erstes solltest Du mit ReadingsNum() arbeiten statt mit ReadingsVal(), für den Fall, dass in dem Reading noch eine Einheit steckt.

Dann solltest Du mal erklären, wo P_value_StromPreis überhaupt herkommt. So wie das von Dir hier angegeben wurde, kann das halt nicht funktionieren, weil es syntaktisch falsch ist.

Entweder kommt P_value_StromPreis aus einem Reading, dann solltest Du das eben auch mit ReadingsNum() angeben oder es ist eine Variable, dann fehlt die korrekte Angabe einer Variablen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rhoffm34

[P_value_StromPreis] ist ein Dummy den ich als Variable nutze

betateilchen

Dann gib halt den Wert aus dem Dummy auch mit ReadingsNum() an. Dieser Mischmasch aus FHEM, perl und anderer Pseudo-Syntax führt immer wieder zu Problemen. Mach es einheitlich, simpel und richtig, dann funktioniert es auch.

Irgendeinen Namen in eckige Klammern zu setzen, ist keine perl-Syntax. Da hat iein FHEM Entwickler vermutlich mal schlecht geschlafen und sich dann was ausgedacht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rhoffm34

#4
so?

statEnergyDayLast_Euro { ReadingsNum($name,"statEnergyDayLast",0)*ReadingsNum("P_value_StromPreis","state",0)}

klappt leider auch nicht...


Edit.: ... doch klappt wohl... Stand mir selber im weg.

DAnke

betateilchen

kaum macht mans richtig, schon klappts...  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rhoffm34