99_myUtils und $init_done

Begonnen von wolfgang99, 05 Februar 2017, 13:57:45

Vorheriges Thema - Nächstes Thema

wolfgang99

Hallo zusammen,

nach einem fhem-Neustart oder Shutdown/Restart ist beim Start der 99_myUtils die globale Variable $init_done=0, d.h. ReadingsVals stehen noch nicht zur Verfügung!

Eigentlich wundert mich das, das Einlesen der fhem.cfg sollte abgeschlossen sein und damit auch der Restore der letzten Werte. Kann man beeinflussen, dass die 99_myUtils erst dann von fhem.pl aufgerufen wird, wenn $init_done=1 ist.

Hintergrund ist, dass ich an divesen Stellen mit vielen Variablen arbeite, die (nur zu diesem Zeitpunkt) nicht richtig initialisiert werden.

Danke für Hinweise!

rudolfkoenig

ZitatKann man beeinflussen, dass die 99_myUtils erst dann von fhem.pl aufgerufen wird, wenn $init_done=1 ist.
Ja, indem man es nicht 99 nennt, und sie per notify auf global:INITIALIZED via reload (oder sonstwie) aktiviert.

Das Problem wundert mich, da in der 99_myUtils.pm eigentlch kein freier Code sondern Funktionen definiert sein sollten, die von at/notify/etc aufgerufen werden. Und sowas passiert erst nach dem fhem.cfg eingelesen wurde.

wolfgang99

Danke!
Ich nutze globale Variable für Readings, die per Notify  Subs gesetzt werden, um an anderer Stelle schnell verfügbar sein sollen.
Damit das auch nach fhem restart (täglich nach Backup) funktioniert, muss ich beim Start etliche Readingsval absetzen, aber die stehen zu diesem Zeitpunkt noch nicht zur Verfügung.

rudolfkoenig

Sowas kann man in einer Funktion setzen, die man so aufruft:
define ntfy_init notify global:INITIALIZED { MeineInitialisierungsFunktion() }