@paresy:
Nach einem Absturz gerade habe ich mir das IPSlog angesehen, darin sind zu allen Modulen, die ich eingebunden habe folgende Meldungen beim Neustart:
15:25:46 | 10494 | ERROR | InstanceManager | <br />
<b>Warning</b>: InstanceInterface is not available in <b>/usr/share/symcon/modules/rk_dwd_werte/rk_dwd_werte/module.php</b> on line <b>99</b><br />
<br />
<b>Warning</b>: InstanceInterface is not available in <b>/usr/share/symcon/modules/rk_dwd_werte/rk_dwd_werte/module.php</b> on line <b>100</b><br />
Meine aktuelle Entwicklung als Beispiel, das betrifft aber auch SqueezeBox, Whitings, ownCloud, BY_…, etc. mit mehr oder weniger vielen Einträgen, somit vermute ich einen allgemeineren Fehler, eventuell in der Reihenfolge des Starts oder noch nicht vorhandener Abhängigkeiten.
Check aller Logs, der Fehler ist erst seit c963918c5148 (31.01. bei mir 16:37) vorhanden, danach bei jeden Neustart, aber auch Nachts gegen 00:04 jeweils alle Module.
Squeezebox auch ?
Weil beim Starten kommt der Fehler durch Instanzfunktionen welche im Applychanges liegen.
Ich prüfe dort ob der Kernel schon betriebsbereit ist und führe keine Funktion vom Instance-Manager aus, somit sollten auch keine Fehler auftreten
Nachteil: Ich muss die eigene Instanz in ‚Fehlerzustand‘ setzen, damit IPS nach 60 sekunden wieder Applychanges aufruft um die Initialisierung zur Hardware/Server neu anzustoßen, in der Hoffnung dass IPS dann betriebsbereit ist.
Prüft man nicht auf den Runlevel, kommen diese Meldungen, wenn du irgendeine Funktion welche Instanzen betrifft, ausführst.
Das ist so auch ‚korrekt‘ weil IPS ja in dem Zustand noch nicht betriebsbereit ist.
Das mit Nachts habe ich in meinen Log ebenfalls nicht, sicher das IPS bei dir da nicht abstürzt ? Zum Beispiel das ‚Problem‘ mit dem Connect-Control ?
15:25:46 | 45934 | MESSAGE | SqueezeboxDevice | Erstelle...
15:25:46 | 00000 | DEBUG | ScriptEngine | Executing Text (Length: 188) ~ Sender: RunScript
15:25:46 | 00000 | DEBUG | ScriptEngine | Executed Text (Length: 0) ~ Sender: RunScript
15:25:46 | 00000 | DEBUG | ScriptEngine | Executing Text (Length: 194) ~ Sender: RunScript
15:25:46 | 00000 | DEBUG | ScriptEngine | Executed Text (Length: 0) ~ Sender: RunScript
15:25:46 | 45934 | ERROR | InstanceManager | <br />
<b>Warning</b>: InstanceInterface is not available in <b>/usr/share/symcon/modules/IPSSqueezeBox/SqueezeBoxDevice/module.php</b> on line <b>1799</b><br />
<br />
<b>Warning</b>: Invalid argument supplied for foreach() in <b>/usr/share/symcon/modules/IPSSqueezeBox/SqueezeBoxDevice/module.php</b> on line <b>1801</b><br />
<br />
<b>Warning</b>: InstanceInterface is not available in <b>/usr/share/symcon/modules/IPSSqueezeBox/SqueezeBoxDevice/module.php</b> on line <b>1815</b><br />
<br />
<b>Warning</b>: InstanceInterface is not available in <b>/usr/share/symcon/modules/IPSSqueezeBox/SqueezeBoxDevice/module.php</b> on line <b>1816</b><br />
Connect werde ich noch mal ausschalten, in den letzten Tagen hatte ich ein paar Abstürze, die ich eher auf meine „Modul Unfähigkeit“ geschoben haben.
Fehlendes Komma oder Semikolon oder geschweifte Klammer sorgen scheinbar für ein schnelles Ende.
Das Nachts war nach genauer Analyse ein Neustart von IPS, das sieht nicht nach einem Absturz aus.
Ah ok das SqueezeBoxDevice nicht der LMSSplitter… dann ist das ein Fehler bei mir, den hatte ich nicht auf dem Zettel
Danke.
Michael
PS: Hier ist es das RegisterHook was ‚böse‘ ist.
IPS_GetInstanceListByModuleID scheint dann noch nicht möglich zu sein. Ich versuche das mal genauso zu ‚umschiffen‘.
Ich habe meinen fix schon
Nur noch nicht online, weil jetzt gerade keine Zeit.
Selbst wenn sich da etwas geändert hat, du kannst nie sagen was zuerst geladen wird.
Also ist der Entwickler des Moduls in der Pflicht dies selbst zu lösen (war im Delphi-SDK auch so).
Michael
Ich schaffe es ja noch nicht mein dein Modul zutesten :o
Aktuell fehlt irgendwie überall Zeit
‚Eigentlich‘ ist es ganz ‚einfach‘ sofern man nicht so verworrenen Code hat wie ich aktuell im Applychanges
Du musst halt aufpassen dass du keine Funktionen des InstanceInterface aufrufst, wenn der Kernel nicht bereit ist.
Den Runlevel vom Kernel kannst du mit IPS_GetKernelRunlevel bekommen.
Nur wenn hier 10103 gemeldet wird, ist der IPS-Kernel ‚ready and running‘ und du kannst alle Funktionen nutzen.