IPS_GetInstanceParentID unknown

Ich muss vor dem Ausführen von SendDataToParent prüfen, ob ein Parent verbunden ist, sonst gibt es eine unschöne Fehlermeldung (s.u.). Da lt. Doku IPS_HasInstanceParent nicht mehr für V4.0 verwendet werden soll habe ich die Funktion IPS_GetInstanceParentID gefunden, die mir hoffentlich durch Rückgabe einer ID>0 mitteilen soll, ob ein Parent verbunden ist. Leider wird dieser Befehl aktuell nicht gefunden. Ist das ein Bug oder Feature?

Gibt es evtl. andere Methoden in 4.0 um im PHP-Modul festzustellen, ob meine eigene Instance einen gültigen Parent hat?
Und/Oder innerhalb von SendDataToParent die Fehlermeldung „ungültige Instance #0“ bei nicht vorhandenen Parent unterdrücken?

Festgestellt mit Symcon Version 4.0-291 auf Raspberry

Tommi

Ja, IPS_GetInstance und dort die ConnectionID prüfen.

paresy

Ich habe mir dafür eine kleine Funktion gebaut, welche ich gerne nutze:


    private function HasActiveParent()
    {
        $instance = IPS_GetInstance($this->InstanceID);
        if ($instance['ConnectionID'] > 0)
        {
            $parent = IPS_GetInstance($instance['ConnectionID']);
            if ($parent['InstanceStatus'] == 102)
                return true;
        }
        return false;
    }

Es wird auch gleich geprüft ob der Parent aktiv ist.
Michael

Danke! Schon geklaut :smiley:

Gibt es eigentlich einen Grund, warum man sich die Eigenschaften der eigenen Instance erst mit GetInstance besorgen muss und nicht als Objektvariable bekommt?

Tommi

An welcher Stelle genau? Du meinst bei den Actions in der Eigenschaftenseite?

paresy

Hust:
$this->ReadPropertyInteger('Propertyname);

Michael

PS: Gibt es natürlich auch für Boolean, String, Float :wink:

Ich dachte da eher ähnlich wie $this->InstanceID an $this->ConnectionID. Den Weg die Standard =nicht eigenen-Variablen über IPS_GetProperty* zu bekommen sehe ich jetzt das erste Mal und das war auch nicht in Deiner netten Funktion.

Aber egal, irgendwann ist immer das erste Mal (sagte die Jungfrau ) :rolleyes:

Tommi

Wir haben übrigens Doku für die PHP Module: ReadPropertyBoolean — IP-Symcon :: Automatisierungssoftware

:smiley: :smiley: :smiley:

paresy

Die kennt Tommi bestimmt, immerhin hat er sie in seinem Quellcode verlinkt :smiley: :wink:
Dennoch verstehe ich den letzten Satz… nicht wirklich.

Michael

Ich war bisher der wirren Ansicht, das man damit in Modulen nur seine eigenen (mit RegisterProperty definierten) Properties auslesen kann. Nun gut, wieder was gelernt.

Am Ende bleibt die Frage, ob IPS_GetInstanceParentID() noch kommt oder eine Doku-Leiche ist.

Tommi

Dokuleiche, hatten wir in einem anderen Thread erst.
Pio ist wohl noch nicht dazu gekommenen :slight_smile:
Michael