Funktioniert doch:
Komisch ist nur der Eintrag Pi gefunden… ich habe gar keinen (aktiv am Netz) ![:slight_smile: :slight_smile:](https://community.symcon.de/images/emoji/win10/slight_smile.png?v=9)
Außerdem hat sich dein Modul einen schon benutzten ClientSocket geschnappt.
Tausch mal ConnectParent gegen RequireParent, dann sollte er einen neuen Parent erzeugen, wenn er keinen Parent hat.
Außerdem hast du meinen Hinweis zur ParentID nicht beachtet.
So gibt es natürlich Fehlermeldungen, weil es die Variable nicht gibt.
Den Parent kannst du so ermitteln:
$ParentID = IPS_GetInstance($this->InstanceID)['ConnectionID'];
Wie du aber im Screenshot oben siehst, sagt die IPS nicht von welchem Parent du getrennt wurdest.
Somit gibt es zwei Probleme.
Du bekommst mit Pech noch immer Nachrichten vom alten Parent (Statuschange).
Und du weißt nicht mehr welche der alte Parent war um ein UnregisterMessage durchzuführen.
Meine Lösung:
Applychanges
[ul]
[li]ParentID ermitteln
[/li][li]Alte ParentID aus einem Buffer lesen
[/li][li]Wenn unterschiedlich, Unregister auf alte ID (wenn nicht 0) und Register aus neue ID (wenn nicht 0)
[/li][li]ParentID in einem Buffer schreiben
[/li][/ul]
MessageSink:
[ul]
[li]Wenn Nachricht 11101 oder 11102
[/li][li]dann Applychanges aufrufen
[/li][/ul]
Letzeres mach ich nur weil ich faul bin…
IPS liefert beim Connect eines Parent diesen in der Nachricht mit:
01.09.2016 22:54:29*| IPS2GPIO MessageSink*| Message from SenderID 59101 with Message 11101
Data: Array
(
[0] => 45166
)
45166 ist der Parent welchen ich eben deinem Splitter zugeordnet habe.
Beim starten hast du auch noch viele Fehler.
InstanceInterface is not available bedeutet dass du Funktionen ausführst, welche zu diesem Zeitpunkt nicht verfügbar sind. (Hier das InstanceInterface).
Ich würde diesen Part nur ausführen wenn der Kernel ( IPS_GetKernelRunlevel() ) Ready ist.
22:57:35 | 00000 | CUSTOM | IPS2GPIO Netzanbindung: | Raspberry Pi gefunden
22:57:36 | 00000 | CUSTOM | IPS2GPIO Netzanbindung: | Port ist geschlossen!
22:57:36 | 00000 | DEBUG | ScriptEngine | Skript ausgeführt (Text) - Länge: 0 ~ Absender: RunScript
22:57:36 | 59101 | ERROR | InstanceManager | <br />
<b>Notice</b>: Undefined variable: ParentId in <b>C:\IP-Symcon\modules\SymconModules\IPS2GPIO\module.php</b> on line <b>37</b><br />
<br />
<b>Warning</b>: InstanceInterface is not available in <b>C:\IP-Symcon\modules\SymconModules\IPS2GPIO\module.php</b> on line <b>83</b><br />
<br />
<b>Warning</b>: InstanceInterface is not available in <b>C:\IP-Symcon\modules\SymconModules\IPS2GPIO\module.php</b> on line <b>84</b><br />
<br />
<b>Warning</b>: InstanceInterface is not available in <b>C:\IP-Symcon\modules\SymconModules\IPS2GPIO\module.php</b> on line <b>86</b><br />
<br />
<b>Warning</b>: InstanceInterface is not available in <b>C:\IP-Symcon\modules\SymconModules\IPS2GPIO\module.php</b> on line <b>87</b><br />
Und hier deine Nachricht wenn der Kernel in Ready (10103) geht:
22:57:41 | 00000 | SUCCESS | Kernel | *** IPS BETRIEBSBEREIT
22:57:41 | 00000 | DEBUG | ScriptEngine | Skriptausführung (Text) - Länge: 201 ~ Absender: RunScript
22:57:41 | 00000 | DEBUG | ScriptEngine | Skriptausführung (Text) - Länge: 197 ~ Absender: RunScript
22:57:41 | 00000 | CUSTOM | IPS2GPIO MessageSink | Message from SenderID 0 with Message 10100
Data: Array
(
[0] => 10103
)
Hier dann einfach nochmal Appylchanges aufrufen… dann funzt das auch mit dem InstanceInterface ![:smiley: :smiley:](https://community.symcon.de/images/emoji/win10/smiley.png?v=9)
Michael