Hauscode einer Instanz, wie zu ermitteln?

Hallo,

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).

Kennt jemand einen entsprechenden Befehl?

Viele Grüsse Johannes

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.

Tommi

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.

paresy

Hallo Paresy,

vielen Dank für deine Antwort. Hm, ich habe es noch nicht ganz verstanden. Was meinst du mit:

?

Einen <Level1 /> Eintrag habe ich bei den FS-Komponenten gefunden, aber nicht z.B. bei den FHTs oder den Rauchmeldern.

Meine settings.xml schaut für FHTs z.B. folgendermassen aus:
<ID Value=„12098“>
<UniqueID Value="{A89F8DFA-A439-4BF1-B7CB-43D047208DDD}"/>
<ModuleName Value=„FHT“/>
<ModuleType Value=„3“/>
<GUI>
<X Value=„405“/>
<Y Value=„585“/>
</GUI>
<Settings>
<DeviceAdress Value=„10841“/>
<TemeratureVar Value=„FHT_TEMP_ACTUAL_GAESTE“/>
<PositionVar Value=„FHT_POSITION_GAESTE“/>
<TargetTempVar Value=„FHT_TEMP_TARGET_RES_GAESTE“/>
<TargetModeVar Value=„FHT_MODE_TARGET_RES_GAESTE“/>
<TargetIPSTempVar Value=„FHT_TEMP_TARGET_REQ_GAESTE“/>
<TargetIPSModeVar Value=„FHT_MODE_TARGET_REQ_GAESTE“/>
<LowBatteryVar Value=„FHT_LOW_BATTERY_GAESTE“/>
</Settings>
<LOCATION>
<NAME Value=„FHT GaesteZi“/>
<LEVEL Value=„IP-SYMCON\FHT\Gaestezimmer“/>
<INFO/>
</LOCATION>
<Connection Value=„11854“/>
</ID>

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).

Hast Du da eine Idee?

Viele Grüsse Johannes

[LEFT]DeviceAdress ist es in dem Fall. Es gibt da nunmal keinen Hauscode :slight_smile:


$id=10841;

$hi = $id >> 8;
$lo = $id & 255;

echo $hi." ".$lo; //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.

paresy
[/LEFT]

Herzlichen Dank Paresy, das hilft mir weiter.

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.

Viele Grüsse Johannes

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)

paresy

Ich mach das so:


   $id  = LOC_GetInstanceIDByLocation($name);

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.