FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Rampler am 30 März 2015, 09:28:15

Titel: setreading und stromausfall ==> Verlust
Beitrag von: Rampler am 30 März 2015, 09:28:15
Guten Morgen zusammen,
heute Nacht hatte ich einen Stromausfall mit folgen...

Ich verwende zur Heizoelverbrauchsmessung folgendens Notify:
HZ.brenner1 {
if("%" eq "closed"){
$data{brenneron_lasttime}=time()}
elsif("%" eq "open") {
$data{oelverbrauch} = (time()-$data{brenneron_lasttime})/60*0.0273 ;;
$data{oelverbrauch_reading} = ReadingsVal ("HZ.brenner1","Gesamtliter",0);;
$data{oelverbrauch_tot} = $data{oelverbrauch_reading}+$data{oelverbrauch};;
fhem "trigger HZ.brenner Verbrauch: $data{oelverbrauch}" ;;
fhem "trigger HZ.brenner Gesamtliter: $data{oelverbrauch_tot}" ;;
fhem "setreading HZ.brenner1 Gesamtliter $data{oelverbrauch_tot}"}};

Nach dem Stromausfall war der Wert Gesamtliter auf einem Fantasiewert.
Zeitgleich habe ich im Log folgenden Eintrag:
PERL WARNING: Use of uninitialized value in subtraction (-) at (eval 49) line 5.

Ich dachte, dass durch das Reading der Wert automatisch gesichert ist.
Kann ich irgendwie das Reading "Gesamtliter" sichern ?
Ich denke mit Save geht das nicht oder ?
Habe auch schon überlegt meinen Raspberry an eine Powerbank anzuschließen, um so eine USV zu erhalten ..
Haben die Profis einen Tipp für mich ?
Ich sag schonmal Danke
Klaus
Titel: Antw:setreading und stromausfall ==> Verlust
Beitrag von: rudolfkoenig am 30 März 2015, 11:48:39
setreading setzt "nur" den Wert in dem Haupspeicher. Um diese auf die Platte zu schreiben muss man save, oder, falls es nur um readings geht, {WriteStateFile()} verwenden.
Bei der Verwendung einer USV kann man beim Stromausfall den Server herunterfahren, ein shutdown verschickt an alle Prozesse ein SIGTERM, dabei ruft FHEM WriteStateFile() auf, und beendet sich.
Titel: Antw:setreading und stromausfall ==> Verlust
Beitrag von: Rampler am 30 März 2015, 19:32:02
Zitat von: rudolfkoenig am 30 März 2015, 11:48:39
setreading setzt "nur" den Wert in dem Haupspeicher. Um diese auf die Platte zu schreiben muss man save, oder, falls es nur um readings geht, {WriteStateFile()} verwenden.
Bei der Verwendung einer USV kann man beim Stromausfall den Server herunterfahren, ein shutdown verschickt an alle Prozesse ein SIGTERM, dabei ruft FHEM WriteStateFile() auf, und beendet sich.

Danke, habe jetzt mal fhem{WriteStateFile()} eingebaut ...
Titel: Antw:setreading und stromausfall ==> Verlust
Beitrag von: rudolfkoenig am 30 März 2015, 22:23:17
Am besten ohne fhem.