Probleme mit MessageSink nach Update auf 4.3

Hallo zusammen,

ich hab mein IPS mal auf 4.3 geupdatet und habe jetzt Probleme mit meiner MessageSink Methode, hat sich da was geändert? Wenn ich eine Device-Instanz erstelle, bekommt das mein Splitter nicht mehr mit. Starte ich dann IPS neu, funktioniert es ganz normal.

Im Splitter habe ich folgende Methoden:


    public function ApplyChanges()
    {
        // register messages
        $this->RegisterMessage(0, IPS_KERNELMESSAGE);
        $this->RegisterMessage($this->InstanceID, FM_CONNECT);
        $this->RegisterMessage($this->InstanceID, FM_DISCONNECT);

        // call parent
        parent::ApplyChanges();

        // return when kernel is not ready
        if (IPS_GetKernelRunlevel() != KR_READY) {
            return;
        }

        ....
   }


    public function MessageSink($TimeStamp, $SenderID, $Message, $Data)
    {
        switch ($Message) {
            case IPS_KERNELMESSAGE :
                if ($Data [0] == KR_READY)
                    $this->ApplyChanges();
                break;
            case FM_CONNECT :
            case FM_DISCONNECT :
                $this->ForceRefresh();
                break;
            case IM_CHANGESTATUS :
                if (($SenderID == @IPS_GetInstance($this->InstanceID) ['ConnectionID']) and ($Data [0] == IS_ACTIVE)) {
                    $this->ForceRefresh();
                }
                break;
            case IM_CHANGESETTINGS :
                // check changed properties
                foreach ($Data as $changedPropertyJson) {
                    $changedProperty = json_decode($changedPropertyJson, true);
                    // if property duoFernCode is changed
                    if (is_array($changedProperty) && array_key_exists("duoFernCode", $changedProperty)) {
                        $duoFernCode = $changedProperty["duoFernCode"];
                        // valid duo fern code
                        if (preg_match(DUOFERN_REGEX_DUOFERN_CODE, $duoFernCode)) {
                            $this->ForceRefresh();
                            break;
                        }
                    }
                }
                break;
        }
    }

Im Device nutze ich ConnectParent um den Splitter als Parent zu setzen:


    public function ApplyChanges()
    {
        parent::ApplyChanges();

        // require gateway as parent
        $this->ConnectParent("{7AB07511-BABA-418B-81C5-88A7C709D318}");

        ...
   }

Das Problem ist, dass die MessageSink Methode garnicht mehr aufgerufen wird bei einer neu erstellten Instanz, solange ich IPS nicht neustarte. Es funktioniert weder beim Erstellen oder Löschen einer Instanz noch beim Ändern einer Property.

Vielen Dank!

Gruß baba

Ich habe heute nochmal ein paar Stunden getestet, kann den Fehler aber nicht finden. Ich bin einfach überfragt… Bin von 4.0 gekommen, falls das was hilft…

Danke!

Gruß baba

Bist du dir sicher, dass das je funktioniert hat? Bei FM_CONNECT ist die SenderID die von der Instanz. Nicht die vom Splitter.

paresy

Ja irgendwie schon unter 4.0 [emoji3] Aber ich habe eben schon mit Nall Chan gesprochen und das wird so nichts werden.

Hast du denn eine gute Idee?

Ich muss ein Property von allen Childs vom Splitter zum IO senden, jedesmal wenn ein Child in der Konsole erstellt, gelöscht oder ein bestimmtes Property im Child geändert wird.

Vielen Dank!