Instanz identifizieren

Ist es irgendwie möglich wenn nur die Objekt ID vorhanden ist die Art der Instanz zu Identifizieren und dann die passende Funktion aufzurufen? Wie bekomme ich denn die zugehörige GUID für die Instanz heraus bzw. wie läst sich diese eindeutig erkennen. Ich bekomme z.B. einfach den Befehl ein und eine Objekt ID wie stelle ich jetzt sicher das die passende Funktion aufgerufen wird?

Das kannst du mit der Funktion IPS_GetInstance machen: IPS_GetInstance — IP-Symcon :: Automatisierungssoftware

Die Rückgabe enthält die Modulinfos, in denen unter anderem die GUID steckt. Sollte es sich nicht automatisch aus dem Kontext ergeben, solltest du eventuell zusätzlich mit IPS_GetObject prüfen, ob die ObjektID überhaupt eine Instanz beschreibt.

Ok gibt es auch eine Möglichkeit den genauen Typ zu identifizieren oder geht das nur über suchen der Variable. Also könnte ja z.B. bei Homematic das ein Rollladen, Schalter oder Dimmer usw. sein.

Vom Vorgehen her prüfst du zuerst via IPS_GetObject (IPS_GetObject — IP-Symcon :: Automatisierungssoftware) ob das Objekt überhaupt eine Instanz ist. Das ist der Fall, wenn im Feld ObjectType eine 1 steht. Den Schritt kannst du eventuell überspringen, wenn du schon aus dem Kontext heraus sichergestellt hast, dass sich hinter deiner Objekt-ID eine Instanz verbirgt.

Als nächstes rufst du IPS_GetInstance (IPS_GetInstance — IP-Symcon :: Automatisierungssoftware) auf der Objekt-ID auf. In der Rückgabe findest du unter ModuleInfo.ModuleID die GUID des dazugehörigen Moduls. Diese ist für jedes Modul eindeutig. Du hast also eine GUID

Eine Liste der GUIDs in IP-Symcon findest du hier: IPS_GetModuleList — IP-Symcon :: Automatisierungssoftware

HomeMatic ist ein Sonderfall, da hier wohl für alles das HomeMatic Device benutzt wird. Hier kann man vielleicht über die Konfiguration genaueres herausfinden, aber dafür habe ich zu wenig Erfahrung mit HomeMatic.