FHEM Forum

CUL - Entwicklung => CUL Development => Thema gestartet von: maeke am 21 Oktober 2013, 18:26:54

Titel: Variable über neustart speichern
Beitrag von: maeke am 21 Oktober 2013, 18:26:54
Hallo,

habe mir aus dem fhem wiki die Ölverbrauchsanzeige abgeguckt.
http://www.fhemwiki.de/wiki/Ölverbrauchsanzeige_/_Betriebsstundenzähler
das wollte ich so erweitern das ich die verbrauchten Liter sehe.
Dazu habe ich mir den Betriebstundenzähler modifiziert, so dass es mir das total-liter logt:


define boiler_total dummy
define boiler_totLt dummy
define boiler_time notify fs_boiler {\
  if("%" eq "on") {\
   $data{boiler_last} = time();;\
  } elsif("%" eq "off") {\
   $data{boiler_min} = (time()-$data{boiler_last})/60;;\
   $data{boiler_tot} += $data{boiler_min};;\
   $data{boiler_totlt} = ($data{boiler_tot}*0.03296);;\
   fhem "trigger boiler_time $data{boiler_min}";;\
   fhem "trigger boiler_totLt $data{boiler_totlt}";;\
  }\
}

kurz erklärt:
boiler_min ist die Zeit die verstrichen ist, diese addiere ich immer wieder zu boiler_tot daraus berechne ich dann die Liter (Boiler_totlt)


nun habe ich das Problem dass die Variable $data{boiler_tot} nach einem neustart wieder bei 0 anfängt.

hat wer eine Idee wie ich den wert so speichern kann dass er nach dem Neustart noch vorhanden ist?
oder gibt es eine Möglichkeit die einzelnen gelogten werte (boiler_min) zu addieren und auszugeben? (dann könnte ich mir die obige Formel sparen)

Danke für antworten im Voraus, hoffe habe mit dem Post alles richtig gemacht, is mein erster ^^

Titel: Antw:log einträge addieren oder Variable über neustart speichern
Beitrag von: justme1968 am 21 Oktober 2013, 18:41:51
das einfachste ist wenn du dir den wert als reading ins zugehörige device schreibst. dann wird es bei neustart auch wieder gesetzt.

dann kannst du auch völlig auf den dummy verzichten.

schau dir mal userReadings an oder alternativ setreading.

gruss
  andre
Titel: Antw:log einträge addieren oder Variable über neustart speichern
Beitrag von: maeke am 22 Oktober 2013, 14:10:18
habs hinbekommen
besten dank

define boiler_time notify fs_boiler {\
  if("%" eq "on") {\
   $data{boiler_last} = time();;\
  } elsif("%" eq "off") {\
   $data{boiler_min} = (time()-$data{boiler_last})/60*0.03296;;\
   $data{boiler_rv} = ReadingsVal ("fs_boiler","Liter",0);;\
   $data{boiler_tot} = $data{boiler_rv}+$data{boiler_min};;\
fhem "setreading fs_boiler Liter $data{boiler_tot}";;\
  }\
}