Daten persistent speichern

OK danke, dann prüfe ich auf ConnectionID und ob das Property duoFernCode vorhanden ist.

Ich hab noch nen anderes Problem, weiß aber nicht ob ich dazu nen Thread aufmachen soll:
Seit einiger Zeit bleibt die Anzeige vom Status der Instanz nach erstellen der Instanz auf (101 - Instanz wird erstellt). Die Instanz ist aber tatsächlich aktiv (102). Hast du eine Idee? Finde garkein Anhaltspunkt.

Dann ist beim erstellen (Neustart IPS oder anlegen der Instanz) ein Fehler in PHP aufgetreten, so dass die Funktion Create + anschließenden ApplyChanges nicht sauber durchlaufen wurden.
Michael

Kann ich irgendwo Fehlermeldungen finden? Wird nirgends was angezeigt. Nach einem IPS neustart ist alles normal. Dann suche ich heute nochmal.

Gruß Basti

Im Logfile, woanders zu dem Zeitpunkt wohl kaum.
Michael

Danke ins Logfile schaue ich mal…

Ich habe das jetzt so implementiert wie du beschrieben hast, allerdings habe ich eines nicht bedacht. Es gibt unterschiedliche Devices als Module, welche auch unterschiedliche GUID’s haben. Dann müsste ich das ja dann für jede GUID machen, was irgendwann bei vielen Devices sehr viel Code wird. Ist dann meine erste Lösung mit PS_GetChildrenIDs() doch besser?

Danke

Nein, ist ganz einfach… kannst ja unten mal schauen.
Aber vorher muss die Frage kommen; warum so viele verschiedene Module für die Geräte?
Das macht ja auch einen Konfigurator viel komplizierter.

Warum nicht eine generische Instanz welche, je nach gewählten Property oder Abfrage an den Stick, die gewünschten Funktionen und Statusvariablen mitbringt ?

Der Befehl macht nicht dass, was du erwartest:

IPS_GetChildrenIDs — IP-Symcon :: Automatisierungssoftware

Der Befehl ermittelt die IDs aller Unterobjekte von Objekt ObjektID. Die IDs werden in einem Array aufgelistet.

Du willst nicht die Unterobjekte (aus dem logischen Baum) von deinem Splitter haben, du möchtest alle Instanzen haben welche physikalisch unter deinem Splitter liegen.
Und das ist IPS_GetInstanceChildrenIDs (IPS_GetInstanceChildrenIDs — IP-Symcon :: Automatisierungssoftware) diese Funktion wurde aber aus IPS 4.0 entfernt.
Du kannst aber:

$AllInstanceIDs = IPS_GetInstanceList();
$InstanceIDs = array();
foreach($AllInstanceIDs as $IID)
{
    if(IPS_GetInstance($IID)['ConnectionID'] == $this->InstanceID)
        $InstanceIDs[] = $IID;
}

Michael

PS: Ich teste gerade ein Modul wo es auch nur eine Instanz für alles (Switch, Button, RGBW, Motion etc) gibt.
Den Link / Code sende ich dir mal per PN.

Hallo Michael,

da nimmst du mich ja ganz schön ran bei meinem ersten Modul :slight_smile: Aber die Idee gefällt mir gut, das schaue ich mir am Wochenende mal genauer an. Es sind halt bestimmt 20 verschiedene Devices, wobei ich nur einen Bruchteil selber besitze. Vielen Dank!

Gruss Basti

Ist halt etwas anders als ein Script in IPS :wink:
Dafür aber, so finde ich, macht es nachher richtig Spaß wenn alles in IPS wie von Geisterhand funktioniert und sich so verhält und aussieht als wenn IPS es schon ab Werk mitbringt.
Gerade dieses Thema Datenaustausch gab es in dieser Form ja bisher nicht (selbst der Datenaustausch in IPS 3.4 mit Delphi war ja etwas anders).
Du bekommst das schon hin :smiley:
Michael