HomeStatus speichern vor Reboot und dann wieder auslesen

Begonnen von tschimi, 08 Oktober 2019, 16:01:42

Vorheriges Thema - Nächstes Thema

tschimi

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

loescher

Aber sollte dein "HomeStatus" nicht sowieso in fhem.save gespeichert sein, wenn du FHEM runterfährst?
LG,
Stephan.

frank

naja, vielleicht bedeutet "reboot" hier: "stecker ziehen".  :)
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Wernieman

Dann wir aber obiges Script zum speichern auch nicht ausgeführt ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

AET_FHEM

ja dann könnte man ja immer noch die config nach jedem Status ändern speicher...?!

nils_

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!?
viele Wege in FHEM es gibt!

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe