Hallo Zusammen,
ich würde gerne via "_Initialize" des My_Utility Moduls ein paar Variablen aufsetzen, damit ich diese nicht regelmäßig berechnen muss.
So will ich auch zwei Variablen haben, welche mir das Datum von Sunrise / SunSet des aktuellen Tages bereithalten. Diese
will ich dann halt nach Mitternacht via Notify wieder aktualisieren.
Nur während der Entwicklung/Änderung der Software, würden so meine Module nach einer Änderung nicht mehr korrekt arbeiten.
Leider bekomme ich derzeit nur die SunSet/Sunrise aus dem FHEM Modul mittels Parameter in FHEM rüber in der perl Welt.
Wie kann ich in einem _Initialize Modul auf diese Werte zugreifen ?
Gibt es da einen Trick, wie ich derartige Variablen beim reload des Moduls neu aufsetze. Derzeit muss ich den Wert innerhalb des Notify ständig neu als Parameter mit übergeben.
Gruss R.
Man sollte private Daten in die global verfuegbare %data speichern, oder noch besser, in einem dummy oder in den readings von beliebigen Instanzen. Initialisieren tut man sowas in einem Funktion, was durch ein global:INITIALIZED notify aufgerufen wird.
Oder man schreibt im Modul direkt statements rein, die werden bei einem relaod auch ausgefuehrt.
Dank für die Antwort,
das mit den Funktion innerhalb der Routine "_Initialize" habe ich mir auch schon so gedacht.
Wenn ich die Command ref richtig gelesen habe, wäre es dann so
define evt_GlobalInit notify global:INITIALIZED { evtInitVariables($NAME,$EVENT,$we,sunset_abs(),sunrise_abs());; }
Meine Perl Routine wäre dann wohl so
sub evtInitVariables($$$$$)
{
my $Component = shift;
my $State = shift;
my $WeekendFlag = shift;
my $SunSetAbs = shift;
my $SunRiseAbs = shift;
.... do stuff
}
Wobei der $Name und $event wahrscheintlich nur der Vollständigkeit verwendet werden.
Verstehe ich das also dann richtig, das diese Routine ausgeführt wird, wenn ich ein
reload 99_myUtilitiy.pm
in der Kommandozeile eingebe ?
Gruss R.
Nein, fuer Reload gibt es kein Event.
Dazu kann man im event "globale statements" schreiben. Das ist nichts fhem-spezifisches, sondern "normales" perl. Andererseits ist das vermutlich auch nicht notwendig, da diese Daten durch ein reload nicht geloescht werden.