FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: tschimi am 08 Oktober 2019, 16:01:42

Titel: HomeStatus speichern vor Reboot und dann wieder auslesen
Beitrag von: tschimi am 08 Oktober 2019, 16:01:42
Hi,
mein Problem beim Reboot war immer, das der HomeStatus unter Umständen nicht richtig war. Meine Lösung sieht nun so aus, das ich ihn beim Setzen in eine Datei schreibe und ggf. beim Reboot wieder auslese.
In der 99_myUtils.pm dazu folgendes anlegen:

#---------------------------------------
# write Value
#---------------------------------------
sub writeVal($){
   my ($str) = @_;

my $filename = '/opt/fhem/fhem.ini';
open(FH, '>', $filename) or die $!;
print FH $str;
close(FH);
}

#---------------------------------------
# read Value
#---------------------------------------
sub readVal(){
my $filename = '/opt/fhem/fhem.ini';
open(SRC, '<', $filename) or die $!;
while(<SRC>){
  fhem("$_");
}
close(SRC);
}


Gesetzt wird der HomeStatus etwas so:

define Nacht DOIF ( [HomeStatus] == 2 ) ( {writeVal("set HomeStatus 2")};;)


Und wenn ich reboote, dann wird er wie folgt ausgelesen:

define notify_fhem_reload notify global:INITIALIZED {readVal()}}


Zur Zeit wird immer nur eine Zeile geschrieben - nämlich die an writeVal übergebene. Und es wird gnadenlos überschrieben. Das geht sicher noch besser. Wer Lust hat, kann es ja gerne erweitern :-)

Lg, tschimi
Titel: Antw:HomeStatus speichern vor Reboot und dann wieder auslesen
Beitrag von: loescher am 09 Oktober 2019, 22:37:28
Aber sollte dein "HomeStatus" nicht sowieso in fhem.save gespeichert sein, wenn du FHEM runterfährst?
LG,
Stephan.
Titel: Antw:HomeStatus speichern vor Reboot und dann wieder auslesen
Beitrag von: frank am 11 Oktober 2019, 12:13:49
naja, vielleicht bedeutet "reboot" hier: "stecker ziehen".  :)
Titel: Antw:HomeStatus speichern vor Reboot und dann wieder auslesen
Beitrag von: Wernieman am 11 Oktober 2019, 12:23:50
Dann wir aber obiges Script zum speichern auch nicht ausgeführt ...
Titel: Antw:HomeStatus speichern vor Reboot und dann wieder auslesen
Beitrag von: AET_FHEM am 14 Oktober 2019, 12:02:50
ja dann könnte man ja immer noch die config nach jedem Status ändern speicher...?!
Titel: Antw:HomeStatus speichern vor Reboot und dann wieder auslesen
Beitrag von: nils_ am 16 Oktober 2019, 08:45:12
open(FH, '>', $filename) or die $!;
na dann hoffen wir mal das er nie das "die" erreicht....



ansonsten würde mich eher interessieren, warum du diesen "work-around" benötigst!?
Titel: Antw:HomeStatus speichern vor Reboot und dann wieder auslesen
Beitrag von: DeeSPe am 16 Oktober 2019, 08:58:53
Zitat von: nils_ am 16 Oktober 2019, 08:45:12
ansonsten würde mich eher interessieren, warum du diesen "work-around" benötigst!?

Das würde mich auch interessieren.
Ebenso würde mich interessieren was überhaupt "HomeStatus" ist.
Zusätzlich frage ich mich noch warum nicht die FHEM-internen Funktionen FileRead() und FileWrite() benutzt werden.

Gruß
Dan