[gelöst] Nach Neustart 99_myUtils.pm ausser Funktion

Begonnen von Thyrador, 21 Oktober 2016, 10:38:48

Vorheriges Thema - Nächstes Thema

Thyrador

Das Problem treibt mich noch in den Wahnsinn. Ich hoffe ihr könnt mir hierbei helfen.

Wenn ich meinen RPi, auf dem FHEM 5.7 läuft, aus welchen Gründen auch immer neu starten muss, so werden sämtliche Subs nach dem Neustart einfach nicht ausgeführt, wenn ich eine Entsprechende Aktion ausführe.
Fehler im Log konnte ich keine finden.

Sobald ich die 99_myUtils.pm innerhalb von FHEM öffne und wieder speichere, funktioniert alles wieder wie es soll.

Hat jemand ne Ahnung, was hier das Problem sein könnte?

rudolfkoenig

Na subs werden ja beim Start auch nicht ausgefuehrt, sondern nur definiert, und stehen zur Verfuegung.

Ich wuerde in fhem.pl / doGlobalDef "global verbose 3" auf 5 aendern, FHEM neu starten, und das Log pruefen. Und/oder im 99_myUtils.pm ausserhalb der subs
Log 1, "This is myUtils";
reinschreiben, und schauen, ob die Meldung beim Starten im Log auftaucht.

Thyrador

Danke für die schnelle Antwort :)

Du hattest mich aber falsch verstanden: Nach dem Neustart sollen die Subs ja nicht ausgeführt werden, sondern wenn z.B. über ein Notify ein Sub aufgerufen wird. Das passierte bisher nicht, wenn ich die myUtils nicht noch einmal neu gespeichert hatte.

Ich stelle mal das Verbose-Level um und schaue, was dann das Log ausspuckt

Thyrador

#3
2016.10.21 10:55:17 0: Server shutdown
2016.10.21 10:55:20 5: Loading ./FHEM/99_AlarmClock.pm
2016.10.21 10:55:20 5: Loading ./FHEM/99_SUNRISE_EL.pm
2016.10.21 10:55:20 5: Loading ./FHEM/99_Utils.pm
2016.10.21 10:55:20 5: Loading ./FHEM/99_myUtils.pm
2016.10.21 10:55:20 1: PERL WARNING: Subroutine myUtils_Initialize redefined at ./FHEM/99_myUtils.pm line 14.
2016.10.21 10:55:20 1: PERL WARNING: Subroutine Aufstehen redefined at ./FHEM/99_myUtils.pm line 57.
2016.10.21 10:55:20 1: PERL WARNING: Subroutine WeckerStellen redefined at ./FHEM/99_myUtils.pm line 148.
2016.10.21 10:55:20 1: This is myUtils
2016.10.21 10:55:20 1: Including fhem.cfg
2016.10.21 10:55:21 1: PERL WARNING: Subroutine myUtils_Initialize redefined at ./FHEM/99_AlarmClock.pm line 15, <$fh> line 7.
2016.10.21 10:55:21 1: PERL WARNING: Subroutine Aufstehen redefined at ./FHEM/99_AlarmClock.pm line 25, <$fh> line 7.
2016.10.21 10:55:21 1: PERL WARNING: Subroutine WeckerStellen redefined at ./FHEM/99_AlarmClock.pm line 36, <$fh> line 7.


Danach kommt das Übliche Gedöns, welche Geräte geladen werden, usw.
Ich erinnere mich dunkel die Warnungen aber schonmal, mit dem 3er Verbose-Level gesehen zu haben.


EDIT: lass mich raten: Die Warnungen werden das Problem sein, weil es dieses Modul AlarmClock jetzt gibt und meine Subs aushebelt, oder?
Solange bis ich sie eben überschreibe.

EDIT2: Ja, das war das Problem... Mein Fehler, ich geh in die Ecke, mich schämen :D
Ich bin mir nicht mal sicher, wie die 99_AlarmClock.pm da hin kommt. Aber evtl hatte ich da mal was versucht und wieder vergessen.

Danke trotzdem für die Hilfe :)

rudolfkoenig

AlarmClock kenne ich nicht, klingt so, als ob es nicht perfekt mit 99_myUtils harmoniert.
Viellecht untersuchst mal beide Dateien genauer.

Thyrador

Ich erinnere mich dunkel, dass ich die mal auslagern wollte. Also die ganze Apparatur, für den Wecker.
Aus irgend einem Grund hat das aber gar nicht gegriffen.

Jetzt, nachdem ich die Datei gelöscht habe, funktioniert auch alles nach dem Neustart wieder problemlos.

Aber wenn ich schonmal dabei bin: Kann man sich denn nicht auch selbst solcherlei Module basteln, die dann nicht in der myUtils stehen, sondern eben in einer eigens dafür angelegten Script-Datei?
Wenn ja, muss ich da noch irgendwo Referenzen setzen, damit das geht?

rudolfkoenig

Funktionen in unterschiedliche Module hast du ja schon gepackt, du musst nur dafuer sorgen, dass in den beiden Dateien die Funktionen unterschiedlich heissen, sonst ueberschreiben die in der Zweiten die in den Ersten, und es regnet Warnungen.

Wenn du weitere Funktionalitaeten des Frameworks nutzen willst (define/notify/etc), dann musst du Funktionen im Initialize Funktion des Moduls anmelden (DefineFn/NotifyFn/usw, siehe die anderen Module). Achtung: der Name dieser Funktion muss $Modulname."_Initialize" sein.

Wenn der Dateiname nicht mit 99 anfaengt, dann wird sie erst geladen, wenn ein passendes "define" ausgefuehrt wird.

Thyrador

ZitatAchtung: der Name dieser Funktion muss $Modulname."_Initialize" sein.

Das war mein Problem, wieso das Script außerhalb der myUtils nicht funktionierte! Das scheint jetzt auch super zu klappen, auch nach dem Neustart.

Letzte Frage, hierzu, um die Verwirrung bei mir zu lösen: gibt's ne Möglichkeit, dieses eigenständige Script dann auch unter dem Menüpunkt "Edit Files" aufzulisten? So kann ich das ggf. auch mal schnell am Browser bearbeiten und muss mich nicht immer erst zwingend auf den Pi aufschalten.

Also dass meinetwegen recht weit oben auch die 99_AlarmClock.pm aufgeführt wird?

DeeSPe

Zitat von: Thyrador am 21 Oktober 2016, 11:23:07
Also dass meinetwegen recht weit oben auch die 99_AlarmClock.pm aufgeführt wird?

Nenne sie 99_myUtilsAlarmClock.pm, dann erscheint sie auch unter "Edit files".

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

Thyrador

Super, ich danke euch.
Finde ich zwar von der Namensgebung her jetzt nicht ganz so schick, soll ja aber auch keinen Schönheitspreis gewinnen :D
Es funktioniert und ist in der Liste, das ist das wichtigste.

Vielen Dank :)

herrmannj

99_myAlarmClock.pm müsste auch gehen. Muss nur mit 99_my.. beginnen.

vg
joerg

Thyrador

Ohne Utils ging's leider nicht. Das hat er dann nicht angezeigt.

herrmannj

dann hat meine Erinnerung mich betrogen und ich bitte um Nachsicht  :)

vg
joerg