Ich logge meinen Gasverbrauch, dieser wird von einem Binäreingang gezählt.
Den Zählerwert sendet der Binärkontakt (Cnt_Gas) sobald er sich ändert (also eine Umdrehung gezählt wurde). Um den Verbrauch über den Tag sehen zu können, lese ich den Wert alle 5 Minuten, addiere ihn auf den Tageswert und setze den Zähler wieder zurück (Rst_Gas).
Das funktioniert auch soweit. Nur wenn der Zähler noch auf 0 steht (weil in den letzten 5 Min kein Gasverbrauch war), landet im Log ein leerer Wert anstatt der 0. Obwohl der Wert des Binäreingangs definitiv auf 0 steht.
D.h. obwohl ich "trigger GasZaehler 0" aufrufe, landet im Log "leer". Außerdem landet von der GasAddieren Funktion jedesmal ein Fehler im Log: GasAddieren return value: syntax error at (eval 329) line 1, near "+)"
Ich hatte schonmal in den Groups gelesen, einfach 0.1 zu nehmen, finde ich aber sehr unelegant und ja auch nicht korrekt. 0.0 funktioniert leider auch nicht.
Mein Code dazu:
define GasZaehler dummy
define GasSchreiben at +*00:05 {\
my $wert = $value{Cnt_Gas};;\
fhem("trigger GasZaehler $wert;;set Rst_Gas on");;\
}
define FL_Cnt_Gas FileLog /opt/fhem/log/Cnt_Gas-%Y-%m.log GasZaehler
define GasZaehlerTag dummy
define GasAddieren notify GasZaehler {\
if("%" ne "") {\
fhem("set GasZaehlerTag ".(Value("GasZaehlerTag")+%));;\
}\
}
Hi,
um 'Null' ins Log zu bekommen, kannst Du
trigger <device> 0.0
setzen.
Gruß Uli
Wie man am Code sieht, schreibe ich ja nicht selbst den Wert, sondern übernehme den vom Binäreingang (siehe GasSchreiben).
Ich hab aber auch schon probiert, $wert auf 0 abzufragen und dann auf 0.0 zu setzen. Das funktioniert aber auch nicht.
Wobei, was mir grad noch einfällt: ich müsste vielleicht den trigger Befehl jeweils in den if Zweigen haben, einmal mit dem Wert und im 0-Fall mit hardcodiert 0.0?
Werd ich mal testen...
Hallo,
das wäre eine Möglichkeit.
So hast du beide Fälle abgefangen.
Grüße
So funktioniert es:
define GasSchreiben at +*00:05 {\
my $wert = $value{Cnt_Gas};;\
if($wert == 0) {\
fhem("trigger GasZaehler 0.0;;set Rst_Gas on");;\
}\
else {\
fhem("trigger GasZaehler $wert;;set Rst_Gas on");;\
}\
}
> Nur wenn der Zähler noch auf 0 steht (weil in den letzten 5 Min kein Gasverbrauch war), landet im Log ein leerer Wert anstatt der 0.
Gefixed und eingecheckt.