FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Dracolein am 12 November 2021, 13:33:48

Titel: Differenz zweier Readings mit Vorzeichenproblem
Beitrag von: Dracolein am 12 November 2021, 13:33:48
Hallo zusammen,

ich möchte die Differenz zweier Readings erzeugen und habe dazu ein DOIF hergenommen:


define Gesamtverbrauch doif
attr state {([SMATripower6:SPOT_PACTOT]-[HomeManager:SMAEM3011845853_Saldo_Wirkleistung])}


Beispiel was funktioniert:
1000 - (+500) = 500, stimmt.

Nun kann es sein, dass der Wert des zweiten Readings ein negatives Vorzeichen hat und dann gibts die Fehlermeldung. Der Fehler, dass Folgendes nicht immer funktioniert, liegt klar bei mir aber ich weiß keine Lösung.

Beispiel 2:
1000 - (-500) = soll 1500 ergeben


Zitat
Can't modify constant item in postdecrement (--) at (eval 27938) line 1, near "2057--"
syntax error at (eval 27938) line 1, near "--973.7"
(2057 stand in dem Beispielmoment im ersten Reading, und -973.7 stand im zweiten Reading)

Wenn das zweite Reading ein negatives Vorzeichen hat, soll mathematisch betrachtet "-" und "-" = "+" ergeben, womit die Rechnung stimmen würde.
Aber wie setze ich das korrekt um?

Titel: Antw:Differenz zweier Readings mit Vorzeichenproblem
Beitrag von: Otto123 am 12 November 2021, 13:52:34
Hi,

Du bist sicher das wirklich eine Zahl im Reading steht?
hast Du mal ] - [ anstatt ]-[ probiert?
Und eventuell [HomeManager:SMAEM3011845853_Saldo_Wirkleistung:d]

Versuch der Erklärung: Das Reading wird erstmal als Text extrahiert, ein minus davor geschrieben und dann Perl zur Interpretation gegeben. Perl sieht --973.7 und denkt es ist der decrement Operator.

Gruß Otto
Titel: Antw:Differenz zweier Readings mit Vorzeichenproblem
Beitrag von: Dracolein am 12 November 2021, 17:17:57
Danke Dir, ich habe Leerzeichen vor/ hinter "-" gesetzt und werde beobachten.