FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Marcus am 27 Dezember 2012, 11:14:47

Titel: Probleme mit der Null (0)
Beitrag von: Marcus am 27 Dezember 2012, 11:14:47
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")+%));;\
  }\
}
Titel: Aw: Probleme mit der Null (0)
Beitrag von: UliM am 27 Dezember 2012, 16:13:02
Hi,
um 'Null' ins Log zu bekommen, kannst Du
trigger <device> 0.0
setzen.
Gruß Uli
Titel: Aw: Probleme mit der Null (0)
Beitrag von: Marcus am 27 Dezember 2012, 20:03:49
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...
Titel: Aw: Probleme mit der Null (0)
Beitrag von: Puschel74 am 27 Dezember 2012, 20:17:13
Hallo,

das wäre eine Möglichkeit.
So hast du beide Fälle abgefangen.

Grüße
Titel: Aw: Probleme mit der Null (0)
Beitrag von: Marcus am 28 Dezember 2012, 09:53:05
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");;\
  }\
}
Titel: Aw: Probleme mit der Null (0)
Beitrag von: rudolfkoenig am 28 Dezember 2012, 11:53:37
> 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.