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
Aber sollte dein "HomeStatus" nicht sowieso in fhem.save gespeichert sein, wenn du FHEM runterfährst?
LG,
Stephan.
naja, vielleicht bedeutet "reboot" hier: "stecker ziehen". :)
Dann wir aber obiges Script zum speichern auch nicht ausgeführt ...
ja dann könnte man ja immer noch die config nach jedem Status ändern speicher...?!
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!?
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