doif Berechnung mit negativen Zahlen

Begonnen von jailbreaker07, 16 Februar 2020, 11:58:02

Vorheriges Thema - Nächstes Thema

jailbreaker07

Hallo,
Ich habe ein Doif womit der aktuelle Stromverbrauch im aktuellen Monat berechnet wird.
Jetzt wurde der Zähler erneuert und somit ist der Stand von Monatsanfang jetzt eine negative Zahl.
Der erfasste Verbrauch von alten Zähler in diesen Monat war  305,83 kwh der Stand von neuen Zähler ist jetzt 130,26kwh.

Bei dem doif was ich jetzt habe kommt -185,36kwh raus.

([Stromzaehler:kWh])
(setreading $SELF Verbrauch {([Zaehlerstand_doif:Zaehlerstand]-[Zaehlerstand_doif:Zaehlerstand_vormonat])})


Vielen Dank für eure Hilfe.

Per

Ich weiss zwar nicht, was dein Problem ist, denn das schreibst du nicht, aber du solltest um das "-" ein paar Leerzeichen packen.

Frank_Huber

Einfach "ZählerstandVormonat" manuell neu setzen BEVOR das DOIF läuft.

jailbreaker07

Hallo, es ging darum dass das Ergebniss falsch war.... aber es lag an den fehlenden Lehrzeichen ...
Danke für den Tip.

Frank_Huber

Wenn es die Leerzeichen waren hatte es aber nichts mit dem Zählerwechsel zu tun.
Das war dann ja auch vorher schon falsch.

Otto123

Hi,

zumindest im FHEM setreading ist es völlig egal ob
setreading Zaehler Neu {([Zaehler:state]-[Zaehler:lichtaus])}
setreading Zaehler Neu {([Zaehler:state] - [Zaehler:lichtaus])}
gerade zur Sicherheit nochmal getestet. Vielleicht ist es im DOIF anders ...

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

jailbreaker07

Zitat von: Frank_Huber am 18 Februar 2020, 08:39:53
Wenn es die Leerzeichen waren hatte es aber nichts mit dem Zählerwechsel zu tun.
Das war dann ja auch vorher schon falsch.
Doch nach dem Zählerwechel war die Zahl negativ für den Start des Abrechnungszeitraums. Stand 1.5.: zb - 300 kWh vorher war der Stand ja positiv.


Gesendet von iPhone mit Tapatalk

Per

Ist ein kombiniertes Perl-DOIF-Problem.
a-b geht, egal, ob positiv oder negativ, aber DOIF ersetzt ja die Werte direkt.
Perl kann zwar 12-15 rechnen, auch -12-15, aber nicht 12--15. 12- -15 geht wiederum, sinnvoll ist aber gleich und immer 12 - -15 zu schreiben.

Damian

Zitat von: Per am 18 Februar 2020, 11:19:00
Ist ein kombiniertes Perl-DOIF-Problem.
a-b geht, egal, ob positiv oder negativ, aber DOIF ersetzt ja die Werte direkt.
Perl kann zwar 12-15 rechnen, auch -12-15, aber nicht 12--15. 12- -15 geht wiederum, sinnvoll ist aber gleich und immer 12 - -15 zu schreiben.

ja, im FHEM-Modus wird der Klammerausdruck in Zahlen gewandelt, daher die Probleme.

Im DOIF-Perlmodus wird dagegen ein Klammerausdruck nicht in eine Zahl, sondern in eine Perl-Funktion übersetzt (das gilt übrigens auch für die DOIF-Bedingungen im FHEM-Modus). Diese Vorgehensweise ist eleganter, weil Perl-kompatibler.

Allerdings würde man dort direkt mit ReadingsVal-Funktion arbeiten, wenn es keine triggernden Readingangaben sein müssen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF