Probleme mit der Null (0)

Begonnen von Marcus, 27 Dezember 2012, 11:14:47

Vorheriges Thema - Nächstes Thema

Marcus

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")+%));;\
  }\
}

UliM

Hi,
um 'Null' ins Log zu bekommen, kannst Du
trigger <device> 0.0
setzen.
Gruß Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Marcus

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...

Puschel74

Hallo,

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

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Marcus

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");;\
  }\
}

rudolfkoenig

> 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.