Apply Changes 9.0 -> HasActiveParent = false

Guten Abend,

mir ist etwas an der 9.0 und IPSModuleStrict aufgefallen.

Ich habe einen Konfigurator, einen Splitter und ein Gerät.
Lege ich nun über den Konfigurator das Gerät an, wird er auch dem Splitter zugewiesen.

Im Gerätemodul rufe ich am Ende von ApplyChanges() eine Methode auf:

$this→UpdateData();

In dieser Methode wird auf

if (!$this->HasActiveParent()) {
   return $smartLockData;
}

geprüft und er gibt false zurück beim ersten anlegen.

Ersetze ich jetzt:

$this->UpdateData();

durch

$this->SetTimerInterval('Update', 100);

Dann holt er sich auch die Daten für’s Update und der Parent scheint true zu sein.

Unter <9.0 und IPSModule habe ich diesen Effekt nicht.

Ich kann jetzt damit leben es über einen Timer aufzurufen, aber was ist der Grund dafür?

Uli

Das liegt am Umbau der Erstellung. Jetzt hat die Konsole, und damit natürlich direkt der Benutzer, mehr Einfluss beim Erstellen des Stranges. Das bedeutet aber auch im Gegenzug, dass ein ConnectParent und Derivate nicht sofort zum entsprechenden übergeordneten Gateway führen, sondern dies erst asynchron durch die Konsole geschieht. Anstelle eines Timers würde ich dir empfehlen auf FM_CONNECT zu hören. Das ist die Nachricht, dass sich deine Instanz mit einer übergordneten Instanz verbunden hat. Je nach Konfiguration kann das übrigens beliebig lange dauern, da ja potentiell der Benutzer die neue Verbindung aussuchen kann falls es Auswahl gibt.

1 „Gefällt mir“

Hallo Niels,

danke für die Erklärung, dann baue ich mal auf FM_CONNECT um.

Uli

1 „Gefällt mir“