Differenz zweier Readings mit Vorzeichenproblem

Begonnen von Dracolein, 12 November 2021, 13:33:48

Vorheriges Thema - Nächstes Thema

Dracolein

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?

Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Otto123

#1
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Dracolein

Danke Dir, ich habe Leerzeichen vor/ hinter "-" gesetzt und werde beobachten.
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;