Konfigurator ordnet Geräte nicht dem richtigen Gateway zu

Hallo,

ich bräuchte einmal Hilfe zu folgender Situation:

Ich habe einen Konfigurator, der mit einer IOInstanz verbunden ist.Wähle ich ein Gerät zum Konfigurieren aus, dann wird es auch korrekt eingerichtet und ebenfalls mit der IOInstanz verbunden. Soweit alles gut.

Richte ich aber eine zweite IOInstanz ein, dann wird beim Konfigurieren eines Gerätes diese zweite IO-Instanz genommen. Ich vermute, dass bei der Zuordnung die erste passende IO-Instanz genommen wird und nicht die, die im Konfigurator zugeordnet ist.

Kann ich das irgendwie beeinflussen?

Gruß

Burkhard

Rede wir von PHP-Modulen?
Dann sind wir im falschen Bereich vom Forum.
Btt:
Da sind mehrere Punkte zu beachten.
Zum einen könnte das Gerät ja selber schon sich einen IO im Create schnappen (ConnectParent usw …).
Und dann ob du die Daten des gewünschten IO (also dessen GUID und Einstellungen) überhaupt im Create Array der Liste hast.
Wenn da nichts enthalten ist, macht die Console auch nix weiter.

Du musst also selber bei GetConfigurationForm den Parent (oder die ganze Kette nach oben) deiner Konfigurator Instanz auslesen und allen Einträgen der Liste im Create mit übergeben.
Dann kann die Console die Instanzen auch dem korrekten Parent zuordnen.
In der Doku sind Beispiele wie so eine Kette zu übergeben ist.
Michael

Das ist so nicht ganz korrekt. In deinem Fall sollte keine Kette erforderlich sein. Wird nämlich keine Kette verwendet, dann wird die neu erstellte Instanz bevorzugt an die übergeordnete Instanz vom Konfigurator gehängt. Dies geschieht allerdings nur, wenn die übergeordnete Instanz auch dazu kompatibel ist.

Danke schon mal für Eure Hilfe!

Dann bitte ruhig verschieben. Ich dachte der Modul Bereich ist mehr was zur Vorstellung von Moduln,

Das macht es auch. Man soll ja nicht auf den Konfigurator angewiesen sei.:slight_smile:
Aber dort kann man sich nur den ersten besten passenden holen. Man kann ja nur eine GUID angeben.

Da sind GUID und Einstellungen drin - aber nicht welche Instanz der GUID. Da weiß ich nicht wie das geht.

Damit muss es irgendwie zusammenhängen.Ich habe im Konfigurator eine übergeordnete Instanz (Gateway), über die ja auch die Devices geholt werden. Solange es nur eine Instanz dieses Gateway gibt, funktioniert alles. Aber sobald ich eine zweite Instanz des Gateways (mit anderen Verbindungsdaten(Login etc.)) angelegt habe, dann wird ein ausgewähltes Device dieser zweiten Gateway Instanz zugeordnet.

Wie kann ich also beim Anlegen nicht nur die GUID sondern auch die InstanzID des aktuellen Gateways mitgeben?

Sind die Instanzen denn miteinander kompatibel? Kannst du beispielsweise die neu erstellte Instanz im Nachhinein korrekt via „Gateway ändern“ umhängen? Denn wenn der Gateway dort nicht auftaucht, dann hängt auch der Konfigurator die nicht um.

Man kann beim Konfigurator übrigens keine InstanzID für übergeordnete Instanzen angeben, aber das sollte hier ja auch nicht erforderlich sein, sofern das mit dem Umhängen vernünftig klappt.

Bin gerade selber verwirrt…
Ganz zu Anfang ging es mal. Habe ich beim PRTG-Konfigurator auch so umgesetzt (ohne Kette, allerdings habe ich auch nie mehr als einen IO getestet :o ).
Aber aus irgendeinen Grund, hatte ich bei anderen Modulen ebenfalls Probleme damit und gebe dort immer die ganze Kette an.

Also entweder so wie Dr. Niels schrieb, ganz weglassen.
Oder so wie es ist sollte es funktionieren. Sonst bitte die erstellte ConfigForm posten (z.B. mit SendDebug ausgeben und dann hier reinkopieren).

Hört sich auf jeden Fall falsch an und nach dem Problem welches ich auch hatte.

Gar nicht. Die Console sucht den Parent entweder über die übergebene Kette bzw. erstellt diese neu, oder nutzt den vorhanden Parent des Konfigurator (hoffentlich :smiley: )

Aber… Gab es da nicht mal einen bc ?
Weil z.B. eine Discovery Instanz häufig (immer) keinen oder einen ganz anderen IO hat, als die Geräte welche diese Instanz erzeugen soll?
Michael

PS: Ich habe da Thema mal verschoben. (Vielleicht brauchen wir mal zwei Unterforen für PHP-Module und PHP-Module Entwicklung :smiley: )

Hier mal die Ausgabe. Momentan übergebe ich die ModulID ({496AB8B5-396A-40E4-AF41-32F4C48AC90D}) des Devices:

{"actions":[{"type":"Configurator","name":"AmazonEchoConfiguration","rowCount":20,"add":false,"delete":true,"sort":{"column":"name","direction":"ascending"},"columns":[{"label":"device name","name":"name","width":"auto"},{"label":"device type","name":"devicetype","width":"250px"},{"label":"device family","name":"devicefamily","width":"350px"},{"label":"device number","name":"devicenumber","width":"250px"},{"label":"device account id","name":"deviceaccountid","width":"250px","visible":false}],"values":[{"instanceID":0,"name":"Burkhard's Fire TV stick","devicetype":"unknown: ADVBD696BHNV5","devicefamily":"Fire TV","devicenumber":"70940511534406C5","deviceaccountid":"A1H56HWUFFNFU4","location":["Ger\u00e4te","Amazon Echo","Amazon Remote"],"create":[{"moduleID":"{496AB8B5-396A-40E4-AF41-32F4C48AC90D}","configuration":{"Devicetype":"ADVBD696BHNV5","DeviceFamily":"FIRE_TV","Devicenumber":"70940511534406C5","DeviceAccountID":"A1H56HWUFFNFU4"}}]},{"instanceID":26168,"name":"Echo Dot K\u00fcche","devicetype":"Echo Dot","devicefamily":"Echo","devicenumber":"G090L9096485148N","deviceaccountid":"A34217EVI3ECNE","location":["Ger\u00e4te","Amazon Echo","Amazon Remote"],"create":[{"moduleID":"{496AB8B5-396A-40E4-AF41-32F4C48AC90D}","configuration":{"Devicetype":"A3S5BH2HU6VAYF","DeviceFamily":"ECHO","Devicenumber":"G090L9096485148N","DeviceAccountID":"A34217EVI3ECNE"}}]},{"instanceID":0,"name":"Echo Dot Badezimmer","devicetype":"Echo Dot","devicefamily":"Echo","devicenumber":"G090LF1071751P3R","deviceaccountid":"A15QISGVC2OJHK","location":["Ger\u00e4te","Amazon Echo","Amazon Remote"],"create":[{"moduleID":"{496AB8B5-396A-40E4-AF41-32F4C48AC90D}","configuration":{"Devicetype":"A3S5BH2HU6VAYF","DeviceFamily":"ECHO","Devicenumber":"G090LF1071751P3R","DeviceAccountID":"A15QISGVC2OJHK"}}]},{"instanceID":0,"name":"Echo Dot Wintergarten","devicetype":"Echo Dot","devicefamily":"Echo","devicenumber":"G090L90964351BML","deviceaccountid":"A1MHJOH35ZXVRY","location":["Ger\u00e4te","Amazon Echo","Amazon Remote"],"create":[{"moduleID":"{496AB8B5-396A-40E4-AF41-32F4C48AC90D}","configuration":{"Devicetype":"A3S5BH2HU6VAYF","DeviceFamily":"ECHO","Devicenumber":"G090L90964351BML","DeviceAccountID":"A1MHJOH35ZXVRY"}}]},{"instanceID":44231,"name":"Echo Show Wintergarten","devicetype":"Echo Show","devicefamily":"Show","devicenumber":"G000MW0474830HFX","deviceaccountid":"AB3CU3QFLNK6J","location":["Ger\u00e4te","Amazon Echo","Amazon Remote"],"create":[{"moduleID":"{496AB8B5-396A-40E4-AF41-32F4C48AC90D}","configuration":{"Devicetype":"A1NL4BVLQ4L3N3","DeviceFamily":"KNIGHT","Devicenumber":"G000MW0474830HFX","DeviceAccountID":"AB3CU3QFLNK6J"}}]},{"instanceID":35696,"name":"\u00dcberall","devicetype":"Multiroom Musik-Gruppe","devicefamily":"WHA","devicenumber":"8ab8dfa9f4854decbb0c617d249d2682","deviceaccountid":"A02025353K5ORFKF1L1H7","location":["Ger\u00e4te","Amazon Echo","Amazon Remote"],"create":[{"moduleID":"{496AB8B5-396A-40E4-AF41-32F4C48AC90D}","configuration":{"Devicetype":"A3C9PE6TNYLTCH","DeviceFamily":"WHA","Devicenumber":"8ab8dfa9f4854decbb0c617d249d2682","DeviceAccountID":"A02025353K5ORFKF1L1H7"}}]},{"instanceID":0,"name":"Dieses Ger\u00e4t","devicetype":"unknown: A2IVLV5VM2W81","devicefamily":"VOX","devicenumber":"7AC0CC5FA3964DEFBC60270E7A4651C2","deviceaccountid":"A0885074253VGZDT7JOTA","location":["Ger\u00e4te","Amazon Echo","Amazon Remote"],"create":[{"moduleID":"{496AB8B5-396A-40E4-AF41-32F4C48AC90D}","configuration":{"Devicetype":"A2IVLV5VM2W81","DeviceFamily":"VOX","Devicenumber":"7AC0CC5FA3964DEFBC60270E7A4651C2","DeviceAccountID":"A0885074253VGZDT7JOTA"}}]},{"instanceID":0,"name":"Alexa Apps von Burkhard","devicetype":"App","devicefamily":"Amazon Mobile Music IOS","devicenumber":"E6A77862A8AF4E7187373C940F4B92C0","deviceaccountid":"A3MHE1G31KUKPK","location":["Ger\u00e4te","Amazon Echo","Amazon Remote"],"create":[{"moduleID":"{496AB8B5-396A-40E4-AF41-32F4C48AC90D}","configuration":{"Devicetype":"A2825NDLA7WDZV","DeviceFamily":"AMAZONMOBILEMUSIC_IOS","Devicenumber":"E6A77862A8AF4E7187373C940F4B92C0","DeviceAccountID":"A3MHE1G31KUKPK"}}]}]}]}

Das wäre vielleicht gar nicht schlecht. Dann hätte man alle Fragen zur Modulentwicklung schön beisammen.

Deine create-Anweisungen sind Listen mit nur einem Element. Diese werden nicht an den Gateway vom Konfigurator gehängt. Um das zu umgehen musst du das Objekt direkt angeben, also statt


"create": [{
	"moduleID": "{496AB8B5-396A-40E4-AF41-32F4C48AC90D}",
	"configuration": {
		"Devicetype": "A3S5BH2HU6VAYF",
		"DeviceFamily": "ECHO",
		"Devicenumber": "G090L9096485148N",
		"DeviceAccountID": "A34217EVI3ECNE"
	}
}]

musst du beispielsweise


"create": {
	"moduleID": "{496AB8B5-396A-40E4-AF41-32F4C48AC90D}",
	"configuration": {
		"Devicetype": "A3S5BH2HU6VAYF",
		"DeviceFamily": "ECHO",
		"Devicenumber": "G090L9096485148N",
		"DeviceAccountID": "A34217EVI3ECNE"
	}
}

angeben. Die Klammern [ und ] um das Objekt müssen weg.

Ach, so einfach:rolleyes:

Da wäre ich so schnell nicht drauf gekommen. Nun funktioniert es wie gewünscht!

Besten Dank!

Nun habe ich doch noch ein Problem. Ich habe zwei IOs (ein aktiver und ein fehlerhafter). Dem Konfigurator ist das aktive zugeordnet;
Gateway.PNG
Konfiuriere ich nun eine Instanz, dann ordnet der Konfigurator dem Device zwar im Endeffekt das richtige Gateway zu, aber scheinbar erst, wenn das ApplyChanges() im Device schon gelaufen ist.:frowning:

Nach der Neuzuordnung erfolgt scheinbar kein erneutes ApplyChanges() mehr, kann das sein? Im Log File sieht es so aus:

17.08.2018 10:53:21 | 24874 | MESSAGE | EchoRemote           | Erstelle...
17.08.2018 10:53:21 | 24874 | MESSAGE | EchoRemote           | Einstellungen gespeichert
17.08.2018 10:53:21 | 24874 | MESSAGE | EchoRemote           | Einstellungen gespeichert
17.08.2018 10:53:21 | 24874 | MESSAGE | EchoRemote           | Parent (ConnectionID: 13636) ist nicht aktiv! (InstanceStatus = 211)
17.08.2018 10:53:21 | 24874 | MESSAGE | EchoRemote           | ApplyChanges durchgeführt

Zum Zeitpunkt des Apply ist die ConnectionID 13636 mit Status 211 eingetragen. Schaut man sich die Instanz dagegen an, dann ist das richtige IO eingetragen …

Da im ApplyChanges aber die Statusvariablen angelegt werden und diese wiederum über nur über ein aktives Gateway geholt werden können, fehlen diese nach der Anlage.

Gibt es dafür auch eine Lösung?

Gruß

Burkhard

PS: die ParentID ermittle ich über IPS_GetInstance($this->InstanceID)[‚ConnectionID‘].

Das ist so korrekt. Erst wird ApplyChanges aufgerufen, da dies unter Umständen das Gerät umhängt. Dies bietet den Vorzug, dass sich das Gerät eventuell schon selbstständig an die vorgesehene übergeordnete Instanz anhängt. Und danach kann es sich nicht mehr durch ein ApplyChanges umhängen.

Funktioniert diese Methodik in deinem Falle nicht?

Nein, leider nicht. Oder kann ich mich im ApplyChanges an eine bestimmte Instanz hängen?

Müsste der Fall beim Homematic Konfigurator nicht der gleiche sein? Wenn das Device zunächst einem inaktiven IO zugeordnet wird, dann können doch dort auch keine Statusvariablen angelegt werden. Oder wie funktioniert das da?