ConnectParent zu bestimmter Instanz?

Wenn ich mehrere Spltter habe, die logischerweise die gleiche Guid besitzten, wie schaffe ich es dann mit einem Konfigurator beim Anlegen der Instanz den passenden Splitter zu verbinden?

Mit ConnectParent wird mir die Instanz zwar mit einem der Splitter verbunden, aber ich kann nicht beeinflussen welche Instanz genau verbunden werden soll. Wenn ich versuche die ObjektID mit dem Konfigurator zu übergeben und nachdem ConnectParent durchgeführt worden ist in ApplyChances ein


IPS_ConnectInstance($this->InstanceID, $ConnectionID);

duchzuführen bekomme ich eine Fehlermeldung, dass die Instanz bereits verbunden ist.

Hat also jemand ein konkretes Vorgehen wie man eine Instanz mit dem passenden Splitter beim Anlegen verbindet?

Der Konfigurator macht das anhand der Konfig im Create fest, dazu musst du eine Kette im Create definieren.
Sobald die Konfig im Create einer vorhandenen Instanz entspricht, hängt die Konsole deine Instanz automatisch um :cool:
Definierst du keine Kette, so wird der Splitter der geöffneten Konfigurator-Instanz benutzt.
Michael

Ich finde in der Dokumenation nur ein Hinweis auf Variante 2: Konfiguration einer Kette aber kein Beispiel dazu. Ich gehe davon as das ich momentan immer Variante 1 nutze also die Instanz direkt erstelle.

Gibt es irgendwo ein anschauliches Beispiel zum Nachschlagen wie so eine Kette auszusehen hat?

So was in der Art suche ich, ich habe nur noch nicht verstanden wie das im Detail geht bzw. die Dokumenation ist da wenig eindeutig aus meiner persönlichen Sicht.

Leider nicht, das wäre ja auch auch ok, aber die Instanz wird nicht unter den gleichen Splitter gehängt wie der Konfigurator zugeordnet ist.

Zur Kette findest du ganz unten auf Configurator — IP-Symcon :: Automatisierungssoftware ein Beispiel, in der ein OZW 772 zusammen mit Splitter und Gateway definiert wird.

Bei Erstellung einer einzelnen Instanz ohne Kette wird der Splitter des Konfigurators bevorzugt. Hat also der Konfigurator einen Splitter und erfüllt dieser die Anforderungen der neu erstellten Instanz, dann wird dieser genommen. Sind die parentRequirements von der Instanz korrekt gesetzt, so dass der Splitter des Konfigurators hier auch als passend erkannt wird?

Ja nur es ist für mich nicht nachvollziehbar wie das funktionieren soll, in der Kette gebe ich ja doch nur wieder eine GUID an. Wie soll da also festgelegt werden welchem Splitter das Device konkret hat?

In meinem Fall muss zunächst eine Splitter angelegt werden, der einen Clientsocket anlegt. Der Splitter holt Infomationen ab. Sobald diese verfügbar sind kann ein Konfigurator erzeugt werden der die Geräte anlegt.

Wenn ich jetzt mehrere Splitter habe mit jeweils einem zugehörigen Clientsocket und einem dazugehörigen Konfigurator wie soll das dann konkret funktionieren? Die GUID ist ja immer die gleiche.

Wird er leider bei mir nicht. Ich weis aber auch nicht was da falsch laufen sollte. Es wird zwar ein Splitter an die Instanz gebunden aber nicht der identische wie beim Konfigurator.

Die GUID im Konfigurator in parentRequirements ist im Konfigurator und im Device identisch.

Also es funktioniert, ich nutze es schon aktiv.
Ohne Hardware schlecht zu testen, aber hier nutze ich das intensiv.
GitHub - Nall-chan/IPSBVIP: IPSModul für RCP+ Devices
Bin die Tage unterwegs, sonst hätte ich die einer fertig erzeugte Form gezeigt.
Wobei zuerst immer der Konfigurator angelegt wird!
Der bringt dann Splitter und ClientSocket mit.
Und in dem Fall wird sogar der Konfigurator über eine DiscoveryInstanz erstellt :cool:
Michael

Das Problem bei deinem Konfigurator war, dass du eine ein-elementige Kette definiert hast. Der Wert bei create muss direkt das Objekt sein und nicht in einer Liste, damit dies korrekt als einzelne Konfiguration erkannt wird und an den Splitter vom Konfigurator gehängt wird.

Danke es funktioniert jetzt, manchmal sind es nur Kleinigkeiten die den Unterschied ausmachen.