gibt es in IPS eine Möglichkeit den Hauscode einer Instanz zu ermitteln?
In der settings.xml ist er nicht drin und somit kriege ich den Hauscode auch nicht über IPS_GetInstanceSettings(46755).
Du meinst bestimmt den Hauscode einer FSx0-Komponente.
Für FS20 gibt es ja den FS20Tester-Addin und als Einzelprogramm. Dort wird Dir jede Sendung mit Hauscode angezeigt.
Für FS10 gibt es das leider meines Wissens nicht. Da wäre ich aber auch dran interessiert. Ich bin mir auch nicht sicher, ob der ELV-Empfänger die Info überhaupt mitliefert.
In den Instance Settings ist der Hauscode unter Level1. Das ist ein Word (2xByte) in dem der ELV Hauscode steckt. In die bekannte Schreibweise müsstest du dir dann selber konvertieren, wenn du brauchst.
@tommi: Wenn ich mich recht entsinne, hat das FS10 System nur eine Adresse 0-F für die einzelnen Komponenten, der beim Batterieeinlegen festgelegt wird. Sowas komplexes wie einen Hauscode gibt es da nicht.
Ich habe für die o.a. FHT den Hauscode „42 89“. In IPS hat dieser FHT die Instance ID „12098“. Genau für diese Verbindung suche ich eine Funktion oder einen Algorithmus mit dem ich für einen bekannten Hauscode, die InstanceID bekommen, z.B. $instanceID = getInstanceIDForHausCode(42, 89).
Performant ist es aber nicht, die Instanz jedesmal aus allen Instanzen rauszusuchen… Mach dir da lieber eine Include Datei, in der die Instanzen als Konstanten definiert sind.
Bezüglich der Performance werde ich den den umgekehrten Weg gehen. Ausgehend vom Hauscode muss ich die InstanceID errechnen. Sobald die InstanceID bekannt ist, kann ich mit IPS-Befehlen weiterarbeiten. Das müsste entsprechend performant gehen.
Wie willst du denn aus der Adresse des FHT’s die Instanz berechen? Die haben doch keinerlei zusammenhang!? (Die ID oben ist nicht die InstanceID sonder die DeviceAdress die in deinem XML Code zu finden ist)
Die einzige Möglichkeit ist alle FHT Instanzen zu iterieren und zu vergleichen oder die Adresse mit der gesuchen übereinstimmt. (Was intern aber trotzdem alle Instanze durchgeht, weil IPS alle Instanzen iteriert, um nur die FHT’s auszugeben)
wobei $name nach dem Schema „FHT_aabc“ aufgebaut ist. aabc ist der „Hauscode“. Meine FHT Hauscodes sind nach einem bestimmten Schema aufgebaut und zwar 70bc. 70 ist meine Hausnummer :D, b markiert das Stockwerk (b=0 ist der Keller, b=3 das Dachgeschoss), c ist die Raumnummer, wobei ich ab der Eingangstür im Uhrzeigersinn durchnummeriere, 7011 ist z.B. die Küche. 7010 wäre der Flur. Das Schema hatte ich schon vor meiner IPS-Zeit und es hat sich bewährt, weil ich an Hand der Nummer den Standort oder umgekehrt aus der Lage des Raums den Hauscode herauslesen kann.
Das Schema funktioniert natürlich nur bei bis zu 9 Räumen pro Geschoss. Schlossbesitzer müssen sich was anderes ausdenken :D.