Apple HomeKit: Anbindung an IPS auf Basis der HomeBridge von nfarina

…ich führe meinen Monolog mal weiter…:smiley:

Der Server scheint jetzt stabil zu laufen, aber seit gestern werden die Devices nicht mehr in der App eingebunden…:eek:
Viel mehr noch: Die gesicherte Konfiguration war plötzlich weg…

Durch Löschen des persists-Ordners wird zwar die Neukonfigurations mit der Homebridge angeboten, die Devises werden aber nicht übernommen…

Spielen da irgendwelche Updates eine Rolle? Ist das bei Euch auch so??

Joachim

Hallo Leute,

für mich ist dieses Projekt - bei allem Respekt für die tollen anderen neuen Features und Version im IPS - der "Knaller des Jahres! Warum ist es so still hier geworden? Ich bin ein wenig verwundert…

Nach vielem hin und her habe ich aktuell eine luffähige Version, die Anbindung an mein Produktiv-System habe ich derzeit noch verschoben, da das Windows-IPS noch nicht die neuen Module unterstützt. Sicherlich könnte man sich da auch etwas „basteln“. Trotzdem hätte ich starkes Interesse das Projekt hier gemeinsam voranzutreiben…

Joachim

Hallo Joachim,

ich habe das Projekt für mich erst einmal „auf Eis“ gelegt.
Das hat folgende Gründe:

[ul]
[li]Die Funktionsfähigkeit ist aktuell grundsätzlich gegeben und kann so eingesetzt werden
[/li][li]Die PHP-Module verlieren leider in der aktuellen Version beim Update immer alle Einstellungen. Daher möchte ich aktuell nicht so viele Instanzen der Module erstellen, um nicht bei jedem Update alle neu konfigurieren zu müssen.
[/li][li]Ich warte auf die neuen Möglichkeiten von iOS 9. Dann muss ich nicht mehr mein „Garagentor zumachen“, um den Rolladen runterfahren zu lassen. :wink:
[/li][/ul]

Bis dahin wollte ich mich anderen Projekten widmen und warte, bis die zwei letzten Punkte von mir adressiert worden sind, so dass ich weitermachen kann.

Wenn ich dir aber aktuell noch irgendwie weiterhelfen kann, dann melde dich gerne noch einmal!

Gruß,
André

Ich kann mich Andre nur anschließen,

derzeit unterstützen die hier im Thread vorhandenen Versionen viele der aktuellen Funktionen des HomeKits.
Weitere Wünsche, welche ich auch habe, muss erst einmal Apples HomeKit anbieten. Mal sehen was in IOS 9 passiert.

Hallo zusammen !
Gibt es hier seit IOS 9 was neues ? Bin auch total heiß auf Homekit in Verbindung mit IPS.

Gruß
Christian

Hi!

Ich vermute, dass zusammen mit dem neuen Apple TV (der im Oktober?! erscheinen soll), als mögliche „Zentrale“ etwas kommen/passieren wird :slight_smile: Also bleiben wir weiterhin gespannt und hoffen das Beste :slight_smile:

Hier wird ein wenig geschrieben und noch in ein paar anderen Blogs…aber der eine sagt dies und der andere das…usw :smiley:
HomeKit in iOS 9 looks good but we’re waiting on more devices - Fortune
Apple HomeKit lässt sich mit iOS 9 per iCloud steuern
iOS 9: Apples HomeKit wird schlauer - CHIP
Inside iOS 9: HomeKit Gains Simpler Set Up, Pre-Defined Scenes, Triggers and More - Mac Rumors

Aber so wie es aussieht, müsste die IPS App uns da etwas zu bieten :slight_smile: Oder jemand macht eine extra App für uns :slight_smile:

Grüße,
Chris

Oder die Eve App wird einfach noch besser und Apple verbessert Siri. :wink:

Zählen wir mal die aktuellen möglichkeiten auf…

[ul]
[li]HomeControl[/li][li]HomeBridge[/li][li] und noch weitere kleine Ableger bei GitHub[/li][/ul]

Unterscheiden wir hier noch zwischen Raspberry Installationen oder Installationen auf dem IPS Server via VM Ware etc…

Da ich selber kein Programmierer bin und hier noch viele nicht ganz zufieden sind mit der ganzen HomeKit Integration, vermute ich einfach mal daß wir noch etwas warten müssen. Hoffe aber, daß hier noch ne Menge passiert wenn es gut funktioniert.

Müsste das HIER einem Programmierer unter euch es nicht erleichtern es gescheit an IPS anzubinden… ?! Oder ist es ähnlich der genannten Lösung hier mit HomeBridge. Ist warscheinlich genau das gleiche ^^

Ich hatte auch gehofft, daß Apple endlich mal mit einer HOME App kommt und alles etwas vereinheitlicht… wehe das bleibt so, daß jeder Hersteller hier sein eigenes Süppchen kocht. Mit dem kommenden ATV wird es so wie es ausschaut auch nocht nicht besser… aber warten wir mal ab. Mit geht das ganze nur nicht schnell genug :wink:

Weiß jemand wie man Siri sagen kann, dass es eine Lampe dimmen soll. Ich meine den Wortlaut.

Hi!

Google spuckt eine Menge dazu aus :wink:

Zum Beispiel diese Seite:
HomeKit-kompatible Heimelektronik über ein iPhone, iPad oder einen iPodÂ*touch nutzen - Apple Support

…und auf dieser Seite stehen, unter anderem, diese Kommandos:

•„Dimme das Licht in der Küche.“
•„Dimme das Licht im Esszimmer auf 50 %.“

Grüße,
Chris

Wie kann ich mir eine PHP basteln, in welcher ich mittels der URL den brightness wert einer variable als auch den an/aus wert steuern kann. Am wichtigsten hierbei wäre mir die möglichkeit der brighness variable.

Hallo Andre,

vielen Dank für die tolle Anleitung und die Bereitstellung Deiner Homebridge.

Mit iOS 9 sollen sich jetzt ja auch Jalousien steuern lassen. Kann man das noch irgendwie integrieren ?

Wenn ich Jalousien mittels des Homekit Accessoire Garage Door Openers steuere, was muss ich dann bei Value Stopped eintragen ?

Vielen Dank für Deine Hilfe

Gruß
WegiMa

Ich habe für die Jalousien mal angefangen eine generische Klasse zu bauen. Aufbauend auf dieser und der Lightbulb Klassen kann man Jalousien steuern. Ist es bei weitem nicht perfekt, aber vielleicht hilft es dem einen oder anderen ja.

Wichtig ist, dass die types.js unter /homebridge/lib/HAP-NodeJS/accessories angepasst wird.

Anbei die types.js


var exports = module.exports = {};

//HomeKit Types UUID's

var stPre = "000000";
var stPost = "-0000-1000-8000-0026BB765291";


//HomeKitServiceTypes

exports.LIGHTBULB_STYPE = stPre + "43" + stPost;
exports.SWITCH_STYPE = stPre + "49" + stPost;
exports.THERMOSTAT_STYPE = stPre + "4A" + stPost;
exports.GARAGE_DOOR_OPENER_STYPE = stPre + "41" + stPost;
exports.ACCESSORY_INFORMATION_STYPE = stPre + "3E" + stPost;
exports.FAN_STYPE = stPre + "40" + stPost;
exports.OUTLET_STYPE = stPre + "47" + stPost;
exports.LOCK_MECHANISM_STYPE = stPre + "45" + stPost;
exports.LOCK_MANAGEMENT_STYPE = stPre + "44" + stPost;
exports.WINDOW_COVERING_STYPE = stPre + "8C" + stPost;
//HomeKitCharacteristicsTypes

exports.ADMIN_ONLY_ACCESS_CTYPE = stPre + "01" + stPost;
exports.AUDIO_FEEDBACK_CTYPE = stPre + "05" + stPost;
exports.BRIGHTNESS_CTYPE = stPre + "08" + stPost;
exports.COOLING_THRESHOLD_CTYPE = stPre + "0D" + stPost;
exports.CURRENT_DOOR_STATE_CTYPE = stPre + "0E" + stPost;
exports.CURRENT_LOCK_MECHANISM_STATE_CTYPE = stPre + "1D" + stPost;
exports.CURRENT_RELATIVE_HUMIDITY_CTYPE = stPre + "10" + stPost;
exports.CURRENT_TEMPERATURE_CTYPE = stPre + "11" + stPost;
exports.HEATING_THRESHOLD_CTYPE = stPre + "12" + stPost;
exports.HUE_CTYPE = stPre + "13" + stPost;
exports.IDENTIFY_CTYPE = stPre + "14" + stPost;
exports.LOCK_MANAGEMENT_AUTO_SECURE_TIMEOUT_CTYPE = stPre + "1A" + stPost;
exports.LOCK_MANAGEMENT_CONTROL_POINT_CTYPE = stPre + "19" + stPost;
exports.LOCK_MECHANISM_LAST_KNOWN_ACTION_CTYPE = stPre + "1C" + stPost;
exports.LOGS_CTYPE = stPre + "1F" + stPost;
exports.MANUFACTURER_CTYPE = stPre + "20" + stPost;
exports.MODEL_CTYPE = stPre + "21" + stPost;
exports.MOTION_DETECTED_CTYPE = stPre + "22" + stPost;
exports.NAME_CTYPE = stPre + "23" + stPost;
exports.OBSTRUCTION_DETECTED_CTYPE = stPre + "24" + stPost;
exports.OUTLET_IN_USE_CTYPE = stPre + "26" + stPost;
exports.POWER_STATE_CTYPE = stPre + "25" + stPost;
exports.ROTATION_DIRECTION_CTYPE = stPre + "28" + stPost;
exports.ROTATION_SPEED_CTYPE = stPre + "29" + stPost;
exports.SATURATION_CTYPE = stPre + "2F" + stPost;
exports.SERIAL_NUMBER_CTYPE = stPre + "30" + stPost;
exports.TARGET_DOORSTATE_CTYPE = stPre + "32" + stPost;
exports.TARGET_LOCK_MECHANISM_STATE_CTYPE = stPre + "1E" + stPost;
exports.TARGET_RELATIVE_HUMIDITY_CTYPE = stPre + "34" + stPost;
exports.TARGET_TEMPERATURE_CTYPE = stPre + "35" + stPost;
exports.TEMPERATURE_UNITS_CTYPE = stPre + "36" + stPost;
exports.VERSION_CTYPE = stPre + "37" + stPost;
exports.CURRENTHEATINGCOOLING_CTYPE = stPre + "0F" + stPost;
exports.TARGETHEATINGCOOLING_CTYPE = stPre + "33" + stPost;
exports.WINDOW_COVERING_TARGET_POSITION_CTYPE = stPre + "7C" + stPost;
exports.WINDOW_COVERING_CURRENT_POSITION_CTYPE = stPre + "6D" + stPost;
exports.WINDOW_COVERING_OPERATION_STATE_CTYPE = stPre + "72" + stPost;
exports.HUE_CTYPE = stPre + "13" + stPost;

…und die generische Klasse:


var types = require("HAP-NodeJS/accessories/types.js");
var symconGeneric = require('../SymconGenericAccessory.js');

function SymconGenericWindowCoveringAccessory(log, rpcClientOptions, instanceId, name, instance, instanceConfig) {
        symconGeneric.call(this, log, rpcClientOptions, instanceId, name, instance, instanceConfig);
};

SymconGenericWindowCoveringAccessory.prototype = Object.create(symconGeneric.prototype, {

        setWindowCoveringTargetPosition: {
                value: function(value) {
                        this.writeLogEntry('Error: generic method called! Overwrite for specific module!');
                }
        },

        getWindowCoveringTargetPosition: {
                value: function(callback) {
                        this.writeLogEntry('Error: generic method called! Overwrite for specific module!');
                }
        },

        getWindowCoveringCurrentPosition: {
                value: function(callback) {
                        this.writeLogEntry('Error: generic method called! Overwrite for specific module!');
                }
        },

        getControlCharacteristics : {
                value: function () {
                        var that = this;
                        var cTypes = symconGeneric.prototype.getControlCharacteristics.call(this);

                        this.writeLogEntry('adding control characteristic WINDOW_COVERING_TARGET_POSITION_CTYPE...');
                        this.writeLogEntry('adding control characteristic WINDOW_COVERING_CURRENT_POSITION_CTYPE...');
                        this.writeLogEntry('adding control characteristic WINDOW_COVERING_OPERATION_STATE_CTYPE...');

                        cTypes.push(
                                {
                                        cType : types.WINDOW_COVERING_TARGET_POSITION_CTYPE,
                                        onUpdate : function(value) {
                                                that.setWindowCoveringTargetPosition(value);
                                        },
                                        onRead: function(callback) {
                                                that.getWindowCoveringTargetPosition(callback);
                                        },
                                        perms: ["pr","pw","ev"],
                                        format: "int",
                                        initialValue: 0,
                                        supportEvents: false,
                                        supportBonjour: false,
                                        manfDescription: "Target window covering position",
                                        designedMinValue: 0,
                                        designedMaxValue: 100,
                                        designedMinStep: 10,
                                        //unit : "%"
                                },
                                {
                                        cType: types.WINDOW_COVERING_CURRENT_POSITION_CTYPE,
                                        onUpdate: function(value) { that.writeLogEntry("onUpdate called for CURRENT_DOOR_STATE_CTYPE with value: " + value); },
                                        onRead : function(callback) { that.getWindowCoveringCurrentPosition(callback); },
                                        perms: ["pr", "ev"],
                                        format: "int",
                                        initialValue: 0,
                                        supportEvents: false,
                                        supportBonjour: false,
                                        manfDescription: "Current window covering position",
                                        designedMinValue: 0,
                                        designedMaxValue: 100,
                                        designedMinStep: 10,
                                        //unit: "%"
                                },
                                {
                                        cType: types.WINDOW_COVERING_OPERATION_STATE_CTYPE,
                                        onUpdate: function(value) { that.writeLogEntry("onUpdate called for WINDOW_COVERING_STATE_CTYPE"); },
                                        onRead : function(callback) { that.writeLogEntry("onRead calld for WINDOW_COVERING_OPERATION_STATE_CTYPE"); },
                                        perms: ["pr","ev"],
                                        format: "boolean",
                                        initialValue: false,
                                        supportEvents:false,
                                        supportBonjour: false,
                                        manfDescription: "Window Covering Operation State",
                                }

                        );

                        return cTypes;
                }
        },

        getServices : {
                value: function () {
                        var services = [{
                                        sType : types.ACCESSORY_INFORMATION_STYPE,
                                        characteristics : this.getInformationCharacteristics(),
                                }, {
                                        sType : types.WINDOW_COVERING_STYPE,
                                        characteristics : this.getControlCharacteristics()
                                }
                        ];
                        this.writeLogEntry("services loaded");
                        return services;
                }
        }

});

SymconGenericWindowCoveringAccessory.prototype.constructor = SymconGenericWindowCoveringAccessory;

module.exports = SymconGenericWindowCoveringAccessory;

Was mir auch aufgefallen ist, dass es auch schon eine Implementierung für HUE gibt. Eventuell kann man das ja für RGB Controller benutzen.

Ich komme aktuell auf meinen Pi nicht weiter:

npm run start

> homebridge@0.0.0 start /root/homebridge
> node app.js

Starting HomeBridge server...
*** WARNING *** The program 'node' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node>
*** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node&f=DNSServiceRegister>
Loading 1 platforms...
[Symcon] Initializing Symcon platform...
[Symcon] Fetching Symcon instances...
Loading 0 accessories...
Client: TODO Status Code: 401
/root/homebridge/platforms/Symcon.js:26
                                } else if (res.error) {
                                              ^
TypeError: Cannot read property 'error' of undefined
    at /root/homebridge/platforms/Symcon.js:26:19
    at IncomingMessage.<anonymous> (/root/homebridge/node_modules/node-json-rpc/lib/rpcclient.js:182:9)
    at IncomingMessage.emit (events.js:129:20)
    at _stream_readable.js:908:16
    at process._tickCallback (node.js:355:11)

npm ERR! Linux 4.1.7+
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "start"
npm ERR! node v0.12.6
npm ERR! npm  v2.11.2
npm ERR! code ELIFECYCLE
npm ERR! homebridge@0.0.0 start: `node app.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the homebridge@0.0.0 start script 'node app.js'.
npm ERR! This is most likely a problem with the homebridge package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node app.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls homebridge
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /root/homebridge/npm-debug.log

Was mache ich verkehrt, bzw. wo muss ich suchen? Der Server startet ja schon mal, bricht aber bei der Verbindung zu meiner IPS ab.

Stefan

Kann jetzt zumindest ohne Fehler starten, nachdem ich verinnerlicht hatte, dass für „login“ der Lizenz-Benutzername, für Port 3777 zu verwenden ist und nicht eine eigene Webserver-Instanz und das Kennwort wirklich base64 kodiert sein muss.

Nun geht’s weiter…

Hallo zusammen,
ich bin nach der Anleitung im zweiten Beitrag vorgegangen, und habe die Installation auch (irgenwie) abschließen können (Raspberry, jessie). Wenn ich aus dem Verzeichnis „/home/pi/homebridge“ mit „npm run start“ starte, erhalte ich folgende Fehlermeldung:


Starting HomeBridge server...
module.js:339
    throw err;
    ^

Error: Cannot find module 'HAP-NodeJS/Accessory.js'
    at Function.Module._resolveFilename (module.js:337:15)
    at Function.Module._load (module.js:287:25)
    at Module.require (module.js:366:17)
    at new require (module.js:385:17)
    at Object.<anonymous> (/home/pi/homebridge/app.js:94:24)
    at Module._compile (module.js:425:26)
    at Object.Module._extensions..js (module.js:432:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Function.Module.runMain (module.js:457:10)

In der config.json habe ich als Plattform nur Symcon, und als Accessory nur HomeMatic.
Im Verzeichnis „/home/pi/homebridge/HAP-NodeJS“ gibt es tatsächlich nicht die Datei „Accessory.js“. Wenn ich diese aus HAP-NodeJS/lib dort hinkopiere, ändert sich nichts an der Fehlermeldung.

In der Anleitung unter 3. gibt es die Zeile „cd lib/HAP-NodeJS“. Dieses Verzeichnis existiert aber nicht.

An dieser Stelle komme ich nicht weiter.

Gruß
Peter

Hallo Leute,

ich hatte das Ganze schon mal am auf einem Raspberry Pi am Laufen, bekomme es aber jetzt nicht mehr hin…:confused:

Mein Haupt-IPS läuft ja auf Windows. Hat das dort schon mal jemand zum Laufen bekommen? Wie muss man da vorgehen? Ich habe mal den node.js installiert, aber wie geht es weiter?

Joachim

Hallo Andre,

bereitest Du gerade etwas „Neues“ in Bezug auf Siri und IPS vor?:smiley:

Joachim

Hallo Leute,

für eine Windows-Version der Homebridge bin ich nach dieser Anleitung vorgegangen.
Leider kome ich nur „fehlerfrei“ bis zum Punkt 2 der To-Do’s in der Liste „Running Homebridge“. Mir erscheint es so, das es auch dort analog bei der Raspberry Pi Version hakt… (immer wieder geht es in den Fehlermeldungen auch um die curve25519, in Windows auch um eine CL.exe)

Das hier im Thread abgebildete Siri-Projekt scheint mir die derzeit beste Möglichkeit aufzuzeigen, wäre toll wenn ich da mal einen Tipp bekommen könnte, was da schief laufen könnte…

Joachim

Hallo Leute,

ich führe meinen Monolog mal weiter…:slight_smile:

Mit der schon oben erwähnten Anleitung bin ich nun so weit gekommen das der Homebridge-Server startet. Das Geheimnis war wohl, dass das Microsoft Visual Studio erst komplett installiert wird, wenn man es mal gestartet hat. Im Detail geht das dabei um die Windows SKB die erst nachinstalliert wurden als ich ein neues Projekt angelegt habe.

Die nächsten Schritte:

  • Anbindung von Andre’s Erweiterungen
  • Homebridge in den Autostart

Für sachdienliche Hinweise bin ich selbstverständlich dankbar!:smiley:

Joachim

Hallo zusammen,

wie Joachim richtig erraten hat, habe ich die Anbindung von IPS an HomeKit umgestellt.
Die Homebridge von nfarina (nfarina/homebridge · GitHub) hat sich seit meinem Fork komplett verändert und eine andere API gewonnen. Dadurch ist es nun leichter „Plugins“ dafür bereitzustellen. Aus diesem Grund habe ich nun auf Basis der neuen API meinen vorhandenen Code umgestrickt und daraus ein Plugin gebaut.
Des Weiteren habe ich mein Plugin so umgestellt, dass es nur noch mit meinen HomeKit-Modulen (für IPS >= 4.0) funktioniert. Diese habe ich in ein eigenes GitHub repository ausgelagert und erweitert.

Wie installiere ich die neue Version?

[ol]
[li]Debian 8.2 (Jessie) installieren
[/li][li]Dependencies installieren (u.a. NodeJS, NPM)
[/li]


$ sudo apt-get install libavahi-compat-libdnssd-dev
$ sudo apt-get install libkrb5-dev
$ sudo wget -qO- https://deb.nodesource.com/setup_5.x | sudo bash -
$ sudo apt-get install nodejs
$ sudo apt-get install build-essential
$ sudo apt-get install git

[li]Homebridge installieren
[/li]


$ sudo npm install -g homebridge

[li]Symcon-Plugin für Homebridge installieren
[/li]


$ sudo npm install -g homebridge-symcon

[li]Homebridge config-Datei ‚config.json‘ im Verzeichnis ‚.homebridge‘ (im User-Home) erstellen. (Beispiel: homebridge-symcon/config-sample.json at master · w-andre/homebridge-symcon · GitHub)
[/li][li]Homebridge starten
[/li]


$ homebridge

[li]Homebridge mit HomeKit-App hinzufügen (bspw. Elgato Eve oder Insteon+, PIN: 031-45-154)
[/li][/ol]

Wie installiere ich die PHP-Module?

[ol]
[li]Modules Kern-Instanz in der IPS-Console öffnen
[/li][li]Auf Hinzufügen klicken
[/li][li]Folgende URL eingeben: git://github.com/w-andre/symcon-php-homekit.git
[/li][/ol]

Wie verwende ich die PHP-Module?

  1. [li]Als erstes erstellt man eine Instanz von dem Modul „HomeKit Accessory“. Dieses Modul repräsentiert ein HomeKit Accessory (ein physikalisches Gerät) und wird von der Homebridge erkannt und angezeigt.
    [/li]
    Bei HomeKit hat ein Accessory ein oder mehrere Services. Diese haben dann die eigentlichen Funktionalitäten. Ein Accessory mit mehreren Services kann bspw. eine Stehleuchte sein, die ein indirektes Licht und eine Leselampe besitzt, die jeweils einzeln schaltbar sind. Ein anderes Beispiel wäre ein Sensor, der die Temperatur und die Luftfeuchtigkeit messen kann.


    [li] In den Eigenschaften des Accessory-Moduls kann man die Anzahl der gewünschten Services angeben. Dies dient lediglich zur einfachen Anlage der Services-Instanzen, die sich unterhalb des Accessory-Moduls befinden müssen. Es ist auch eine manuelle Anlage möglich. Es werden keine vorhandenen Module gelöscht, wenn die Anzahl verringert wird. Achtet aber darauf, dass diese Anzahl bspw. beim IPS-Neustart geprüft wird und wenn die dort hinterlegte Anzahl höher ist, als die Anzahl an vorhandenen Services, dann werden neue Service-Instanzen erstellt.
    [/li]
    [li] In den Eigenschaften der Services könnt ihr dann den HomeKit-Eigenschaften (Characteristics) eure IPS-Variablen auswählen, die den entsprechenden Wert enthalten. Beim Setzen von Werten über HomeKit wird die Aktion, die mit der Variable verknüpft ist, ausgeführt (Standardaktion oder eigene Aktion).
    [/li]
    Zum Umwandeln von bestimmten Werten gibt es bei folgenden Datentypen immer weitere Eigenschaften in den Modulen, um ein Mapping zu euren Werten in IPS zu realisieren:

    - Allgemein: Es muss immer ein String-Wert angegeben werden, der sich ergibt, wenn ihr euren Wert wie folgt abruft:

    $value = GetValue($variableId); $valueString = strval($value);


    - Boolean: Hier können die Werte für True und False angegeben werden.
    - Prozent-Werte: Hier könnt ihr noch euren max. Wert angeben. Bspw. kann es sein, dass bei euch das Dimmen vom Licht nicht von 0-100 funktioniert, sondern von 0-250 (oder ein anderer Bereich). Somit könnt ihr hier 250 als max. Wert eintragen, so dass eine Umrechnung durchgeführt werden kann.

    - Enums in HomeKit (bspw. Thermostatzustand (Aus/Heizen/Kühlen)): Hier gibt es für jeden möglichen HomeKit-Wert eine Eigenschaft, wo ihr euren Wert in IPS eintragen könnt.

Außerdem gibt es bei HomeKit-Services Pflichteigenschaften und optionale. Bei den optionalen könnt ihr bei der Variablenauswahl einfach „Keine“ auswählen, dann wird die Eigenschaft in HomeKit auch nicht angezeigt. Wenn ihr bei einer Pflichteigenschaft keine passende Variable in IPS habt, dann könnt ihr euch entweder eine Variable erstellen und euch selbst um die Aktualisierung (bspw. mit Ereignissen und Scripten (Variablen-Aktionen)) kümmern oder die Variable auch leer lassen. In diesem Fall wird in HomeKit ein Standardwert verwendet.

Generell seid ihr mit dieser neuen Variante sehr flexibel was die Einrichtung der Geräte in HomeKit angeht.

Ich habe bei mir im Wohnzimmer das Deckenlicht in zwei unterschiedlich schaltbare Bereiche unterteilt. Ich wollte aber immer die Möglichkeit haben, Siri zu sagen, dass ich das Deckenlicht im Wohnzimmer, also beide Bereiche, auf einen bestimmten Wert gedimmt haben möchte. Nun kann ich ein Accessory „Deckenlicht“ erstellen, welches zwei Services mit den einzelnen Bereichen enthält. Hier bin ich aber auch noch am experimentieren, wie das am besten einzurichten ist.

Ich freue mich über eure Fragen oder Anmekungen! :wink:

Viele Grüße

André