Variable über neustart speichern

Begonnen von maeke, 21 Oktober 2013, 18:26:54

Vorheriges Thema - Nächstes Thema

maeke

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


justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

maeke

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