Homebridge einrichten: Unterschied zwischen den Versionen

Aus FHEMWiki
Keine Bearbeitungszusammenfassung
K (Alternative eingefügt, falls man nicht Homekit haben möchte)
 
(90 dazwischenliegende Versionen von 20 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Dieses HOWTO zeigt die Installation und Erstinbetriebnahme von Homebridge.


== Homebridge einrichten Zusammenfassung ==
Damit kann Siri benutzt werden, um FHEM-Devices zu steuern. So können Devices angesprochen werden, die offiziell HomeKit nicht unterstützen (die Vorgehensweise wurde auf einem Intel NUC mit Ubuntu Server 14.04 LTS und auf einem Raspberry Pi mit Raspbian getestet). Der Wiki-Eintrag bezieht sich hauptsächlich auf eine {{Link2Forum|Topic=32652|LinkText=Diskussion im FHEM-Forum}}. Ein Riesendank gilt vor allem {{Link2FU|430|Andre (justme1968)}}.


Dieses HOWTO zeigt die Installation und Erstinbetriebnahme von Homebridge. Damit kann Siri benutzt werden, um FHEM-Devices zu steuern. So können Devices angesprochen werden, die offiziell HomeKit nicht unterstützen.
Die Konfiguration der inzwischen aktuellen zweiten Version des Homekit-Plugins ist in einem neuen {{Link2Forum|Topic= 48558 |LinkText=Thread im FHEM-Forum}} beschrieben. Hinzugekommen ist vor allem die freie Konfigurierbarkeit der Zuordnung zwischen FHEM Device und Homekit Accessory/Service, zwischen FHEM Reading und Homekit Characteristic, das mapping vom FHEM Readingwerten zu Homekit Werten sowie das Mapping von Homekit Werten zu FHEM Set-Kommandos und Werten.
(Die Vorgehensweise wurde auf einem Intel NUC mit Ubuntu Server 14.04 LTS und auf einem Raspberry Pi mit Raspian getestet.)


Um Homebridge erfolgreich zu installieren müssen zunächst NPM, NodeJS, Python, g++, MDNS, sowie benötigte Hilfspakete installiert werden:
Eine Sammlung funktionsfähiger Homebridge FHEM Konfigurationen kann hier gefunden werden: [[Homebridge User Configs]]. Die Sammlung befindet sich noch im Aufbau.


Der WIKI-Eintrag bezieht sich hauptsächlich auf die Diskussion im FHEM-Forum:
= Vorbereitung der Umgebung =
http://forum.fhem.de/index.php/topic,32652.0.html
Ein riesen Dank gilt vor allem '''justme1968'''


== NodeJS installieren ==
== NodeJS installieren ==
''Die nachfolgenden Befehle sind alle mit "sudo" prefixed. Wenn du unter "root" arbeitest oder deine Distribution einen anderen Mechanismus verwendet, so kannst du dies natürlich weglassen.''


In der Konsole folgende Befehle eingeben:
Zunächst wird das Betriebssystem (in diesem Falle Debian oder Ubuntu) auf den aktuellen Stand gebracht:
<pre style="width:50%;">
<syntaxhighlight lang="bash" style="width:50%;">
sudo apt-get update
sudo apt-get update
sudo apt-get upgrade
sudo apt-get upgrade
sudo apt-get install build-essential libssl-dev
sudo apt-get install build-essential libssl-dev</syntaxhighlight>
</pre>
 
UPDATE:
Nun muss NodeJS installiert werden. Leider ist die Version im Debian Repository deutlich zu alt, daher wird mit den folgenden Befehlen das Node Repository hinzugefügt und NodeJS (in der LTS Version) entsprechend installiert:
Homebridge funktioniert mit einer kleinen Einschränkung nun auch mit node 4.0.0
 
Laut:
'''NodeJS V4'''
https://github.com/cflurin/homebridge-shims/wiki/Minimalist-Homebridge-on-a-Raspberry-Pi
<syntaxhighlight lang="bash" style="width:50%;">
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
</syntaxhighlight>
 
{{Randnotiz|RNTyp=y|RNText=Bei Installation von NodeJS auf einem "alten" RasPi (B) bitte die besonderen Hinweise in {{Link2Forum|Topic=32652|Message=419325|LinkText=diesem Forenbeitrag}} beachten.}}
'''NodeJS V5'''
<syntaxhighlight lang="bash" style="width:50%">
curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash -
sudo apt-get install -y nodejs
</syntaxhighlight>


müssen die folgenden Abhängigkeiten (Dependencies) aus der '''package.json''' entfernt werden:
'''NodeJS V6'''
<pre>
<syntaxhighlight lang="bash" style="width:50%">
"harmonyhubjs-client": "^1.1.4",
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
"harmonyhubjs-discover": "git+https://github.com/swissmanu/harmonyhubjs-discover.git"
sudo apt-get install -y nodejs
</pre>
</syntaxhighlight>


'''NodeJS V11'''
<syntaxhighlight lang="bash" style="width:50%">
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs
</syntaxhighlight>


Damit es auf einem Raspberry schneller läuft wird darüber hinaus empfohlen auch diese Abhängigkeiten aus der '''package.json''' zu entfernen:
Vorher noch ein ein Backup der Datei anlegen
<pre>cp package.json package.json.bkp oder sudo cp package.json package.json.bkp </pre>
Am einfachsten geht das entfernen mit dem Editor vi.
<pre>vi package.json oder sudo vi package.json</pre>
Mit dem Curser vor die Entsprechende Zeile gehen und mit zwei mal Taste d (dd tippen) wir die Zeile gelöscht.
Eventuell muss vi mit sudo vi aufgerufen werden, je nach verwendeter Distribution.
Gespeichert wir dann mit folgendem Ablauf: ESC :wq! Enter
<pre>
"ad2usb": "git+https://github.com/alistairg/node-ad2usb.git#local",
"carwingsjs": "0.0.x",
"chokidar": "^1.0.5",
"eibd": "^0.3.1",
"elkington": "kevinohara80/elkington",
"harmonyhubjs-client": "^1.1.4",
"harmonyhubjs-discover": "git+https://github.com/swissmanu/harmonyhubjs-discover.git",
"lifx-api": "^1.0.1",
"lifx": "git+https://github.com/magicmonkey/lifxjs.git",
"node-hue-api": "^1.0.5",
"node-icontrol": "^0.1.4",
"node-milight-promise": "0.0.x",
"tough-cookie": "^2.0.0",
"sonos": "0.8.x",
"telldus-live": "0.2.x",
"teslams": "1.0.1",
"unofficial-nest-api": "git+https://github.com/hachidorii/unofficial_nodejs_nest.git#d8d48edc952b049ff6320ef99afa7b2f04cdee98",
"wemo": "0.2.x",
"wink-js": "0.0.5",
"komponist" : "0.1.0",
"yamaha-nodejs": "0.4.x",
</pre>


Das Konfig file sollte dann wie folgt aussehen: Achtung vor den letzten zwei } am Ende dar kein Komma sein.
Bei Ubunutu ist es noch nötig apt-get wie folgt auszuführen.
<pre>
<syntaxhighlight lang="bash" style="width:50%">
{
sudo apt-get install -y nodejs
  "name": "homebridge",
</syntaxhighlight>
  "description": "HomeKit support for the impatient",
  "version": "0.1.1",
  "scripts": {
    "start": "DEBUG=* node app.js || true"
  },
  "repository": {
    "type": "git",
    "url": "git://github.com/nfarina/homebridge.git"
  },
  "license": "ISC",
  "dependencies": {
    "async": "^1.4.2",
    "color": "0.10.x",
    "debug": "^2.2.0",
    "hap-nodejs": "^0.0.2",
    "isy-js": "",
    "mdns": "^2.2.4",
    "netatmo": "1.3.0",
    "node-cache": "3.0.0",
    "node-persist": "0.0.x",
    "node-xmpp-client": "1.0.0-alpha23",
    "q": "1.4.x",
    "queue": "^3.1.0",
    "request": "2.49.x",
    "xml2js": "0.4.x",
    "xmldoc": "0.1.x"
  }
}
</pre>


Damit ist NodeJS installiert.


== Python, g++, MDNS installieren ==
== Python, g++, MDNS installieren ==
<pre style="width:50%;">
<syntaxhighlight lang="bash" style="width:50%;">
sudo apt-get install python
sudo apt-get install python g++ libavahi-compat-libdnssd-dev
sudo apt-get install g++
</syntaxhighlight>
sudo apt-get install libavahi-compat-libdnssd-dev
 
</pre>
Nun sind alle Voraussetzungen geschaffen.


= Installation von Homebridge & notwendiger Shims =
Im nachfolgenden Absatz wird die Installation von Homebridge sowie des notwendigen Plugins (Shim) für FHEM erläutert.
Eventuell muss vor die Befehle ein
<syntaxhighlight lang="bash" style="width:50%;">
sudo
</syntaxhighlight>
vorangestellt werden.
== Homebridge installieren ==
== Homebridge installieren ==
Dazu im Homeverzeichnis
Die aktuelle Homebridge version wird mit
<pre style="width:50%;">
<syntaxhighlight lang="bash" style="width:50%;">
git clone https://github.com/nfarina/homebridge.git
npm install -g --unsafe-perm homebridge
cd homebridge
</syntaxhighlight>
npm install
installiert, was eine Weile dauert. Anschließend wird der FHEM platform shim mit:
</pre>
<syntaxhighlight lang="bash" style="width:60%;">
eingeben.
npm install -g homebridge-fhem
</syntaxhighlight>
installiert.


== ERR während der Installation ==
=== Fehler während der Installation ===
Bei folgendem Fehler ist das abrufen von Github nicht möglich.
Bei folgendem Fehler ist das Abrufen von Github nicht möglich.
<pre>npm ERR! git clone --template=/home/hs-server-admin/.npm/_git-remotes/_templates --mirror  
<pre>npm ERR! git clone --template=/home/hs-server-admin/.npm/_git-remotes/_templates --mirror  
git://github.com/KhaosT/ed25519.git /home/hs-server-admin/.npm/_git-remotes/git-github-com-KhaosT-ed25519-git-d8bdee1d:  
git://github.com/KhaosT/ed25519.git /home/hs-server-admin/.npm/_git-remotes/git-github-com-KhaosT-ed25519-git-d8bdee1d:  
github.com[0: 192.30.252.128]: errno=Die Wartezeit für die Verbindung ist abgelaufen</pre>
github.com[0: 192.30.252.128]: errno=Die Wartezeit für die Verbindung ist abgelaufen</pre>
Fehlerursache konnte hier durch eine aktive Firewall verursacht werden.
Fehler könnte hier durch eine aktive Firewall verursacht werden.


Kommt eine DNS Fehlermeldung fehlt meistens der AVAHI-DAEMON, zu installieren via
<syntaxhighlight lang="bash" style="width=50%">
sudo apt-get install avahi-daemon
</syntaxhighlight>


== Homebridge konfigurieren ==
Wenn npm beim Kompilieren von mdns mit der Meldung abbricht, dass "dns_sd.h" nicht gefunden wird, fehlt das Paket libavahi-compat-libdnssd-dev, zu installieren via
Im Verzeichnis ~/homebridge/ muss nun noch die Config.json erstellt bzw. angepasst werden:
<syntaxhighlight lang="bash" style="width=50%">
<pre style="width:50%;">
sudo apt-get install libavahi-compat-libdnssd-dev
nano config.json
</syntaxhighlight>
</pre>
 
== Homebridge aktualisieren ==
Prüfen, ob es Updates gibt:
<syntaxhighlight lang="bash" style="width:50%;">
npm -g outdated
</syntaxhighlight>
Die aktuelle Homebridge version wird mit
<syntaxhighlight lang="bash" style="width:50%;">
npm -g update homebridge
</syntaxhighlight>
installiert, was eine Weile dauert. Anschließend wird der FHEM platform shim mit:
<syntaxhighlight lang="bash" style="width:60%;">
npm -g update homebridge-fhem
</syntaxhighlight>
installiert.
 
Sollte dies nicht funktionieren, kann mit
<syntaxhighlight lang="bash" style="width:60%;">
npm -g install homebridge
</syntaxhighlight>
bzw.  
<syntaxhighlight lang="bash" style="width:60%;">
npm -g install homebridge-fhem
</syntaxhighlight>
das Update installiert werden.
 
 
Um eine spezielle Version zu installieren, können die Installationsbefehle, von oben, wie folgt angepasst werden.
<syntaxhighlight lang="bash" style="width:60%;">
npm -g install homebridge-fhem@0.4.5
</syntaxhighlight>
 
 
= Homebridge konfigurieren =
''Wichtig: Für die weiteren Schritte sollte man nicht root verwenden, sondern beispielsweise einen dedizierten Nutzer für homebridge oder der Einfachheit halber den Nutzer, unter dem auch FHEM läuft (meist "fhem").''


Homebridge muss nicht, kann aber auf dem selben Server laufen wie FHEM. Unter "server" muss die IP des FHEM-Servers und unter "port" der benutzte Port des benutzten FHEMWEBS eingetragen werden.
== Einstellungen für homebridge ==
Läuft der Homebridge Server auf dem gleichen Rechner wie FHEM kann die IP 127.0.0.1 benutzt werden.
Zunächst wird das Verzeichnis für die Konfigurationsdatei erstellt und in dieses gewechselt:
<syntaxhighlight lang="bash" style="width:50%;">
mkdir -p ~/.homebridge
cd ~/.homebridge/
</syntaxhighlight>


WICHTIG: Damit nicht alle Devices von Homebridge berücksichtig werden, bietet es sich an die Devices zu filtern. In diesem Beispiel wurden alle Devices, die über Siri steuerbar sein sollen zusätzlich in den ROOM Homekit per FHEM eingerichtet. Der PIN kann beliebig in dem Format xxx-xx-xxx angepasst werden. Dieser muss nur einmal bei der Einrichtung in iOS eingegeben werden.
Nun muss darin noch die config.json erstellt bzw. angepasst werden:
<syntaxhighlight lang="bash" style="width:50%;">
nano ~/.homebridge/config.json
</syntaxhighlight>


<pre style="width:50%;">
Hinweise zur Konfiguration:
  {
* "''bridge''":
              "bridge": {
** "''username''": Sollte so belassen werden. Sollte später auf dem iOS Device keine Homebridge gefunden werden, so kann man hier beispielsweise den String auf 31 statt 30 enden lassen um so eine neue Homebridge vorzutäuschen.
** "''port''": Sollte so belassen werden
** "''pin''": Der PIN kann beliebig in dem Format xxx-xx-xxx angepasst werden. Dieser muss nur einmal bei der Einrichtung in iOS eingegeben werden.
* "''platforms''":
** "''platform''": Hier muss "FHEM" beibehalten werden.
** "''server''": Hier muss die IP des FHEM-Servers eingetragen werden. Dabei muss Homebridge nicht auf dem selben Server laufen wie FHEM, kann aber. Wenn es auf dem gleichen Rechner läuft, dann bietet es sich an, die IP 127.0.0.1 zu verwenden.
** "''port''": Hier muss der Port des gewählten FHEMWEBs eingetragen werden (muss nicht das "normale" sein, kann eine extra Instanz sein)
** "''auth''": Ist FHEM nicht mit Nutzername/Password abgesichert, so kann man diese Zeile einfach entfernen.
** "''filter''": Damit nicht alle Devices von Homebridge berücksichtigt werden, bietet es sich an, die Devices zu filtern. In diesem Beispiel wurden alle Devices, die über Siri steuerbar sein sollen, zusätzlich in den Raum Homekit konfiguriert.
<syntaxhighlight lang="json" style="width:50%;">
{
    "bridge": {
         "name": "Homebridge",
         "name": "Homebridge",
         "username": "CC:22:3D:E3:CE:30",
         "username": "CC:22:3D:E3:CE:30",
Zeile 146: Zeile 166:
             "platform": "FHEM",
             "platform": "FHEM",
             "name": "FHEM",
             "name": "FHEM",
             "server": "192.168.xxx.xxx",
             "server": "127.0.0.1",
             "port": "8083",
             "port": "8083",
            "filter": "room=Homekit",
             "auth": {"user": "FhemUser", "pass": "XXX"},
             "auth": {"user": "FhemUser", "pass": "XXX"}
            "filter": "room=Homekit"
         }
         }
     ],
     ],
Zeile 155: Zeile 175:
     "accessories": []
     "accessories": []
}
}
</pre>
</syntaxhighlight>
 
Wenn für FHEMWEB kein user/password vergeben ist muss die "auth" Zeile weggelassen werden.
Wird FHEM mit SSL abgesichert, so muss zusätzlich in der Sektion "platforms" noch diese Zeile (nach "port") eingefügt werden:
<syntaxhighlight lang="javascript" style="width:50%;">
            "ssl": true,
</syntaxhighlight>
Wenn man SSL ohne user/password benutzt, muss man "auth" Zeile einfugen, wobei die Werte weggelassen werden:
<syntaxhighlight lang="javascript" style="width:50%;">
            "auth": {"user": "", "pass": ""},
</syntaxhighlight>
 
Natürlich kann man auch nach beliebigen anderen Kriterien filtern. z.b. nach Device TYPE, nach subtype Attribut, ... Es können mehrere FHEM platforms Abschnitte mit eigenem Filter im config file stehen (dabei das Komma zwischen den einzelnen Abschnitten nicht vergessen!) .  Auch Geräte auf die mehr als ein Filterausdruck matched werden dabei nur einmal hinzugefügt.
 
= FHEM konfigurieren =
Es empfiehlt sich ein siri Gerät in FHEM anzulegen.
define siri siri
 
Die benötigten Attribute werden inzwischen beim ersten Start von homebridge-fhem automatisch auf FHEM Seite eingetragen.
 
Mehr zu den inzwischen verfügbaren Konfigurationsmöglichkeiten findet sich auf den github und npmjs Seiten des Plugins und im ersten Beitrag des zugehörigen Thread im {{Link2Forum|Topic= 48558 |LinkText=Diskussion im FHEM-Forum}}
 
= Start von Homebridge =
 
== Hinweis ==
Nach allen Änderungen die in FHEM gemacht werden, welche Homebridge betreffen, muss Homebridge neu gestartet werden. Wie der Neustart erfolgen muss, ist abhängig davon, wie man Homebridge gestartet hat. Bitte den entsprechenden Methoden entnehmen.
 
== Einmaliger Manueller Start ==
<syntaxhighlight lang="bash" style="width:50%;">
homebridge
</syntaxhighlight>
 
Homebridge sollte nun laufen. Hier kann man die Kommunikation nachverfolgen. Abbrechen kann das ganze mit CTRL+c (es sind dann auch keine Befehle mehr mit Siri möglich). Damit Siri auch Befehle ohne ständig offenes Terminal bearbeiten kann, bitte nächsten Punkt beachten.
 
=== Fehler während des Manuellen Starts ===
Kommt ein Fehler der ähnlich aussieht wie folgender, sollte zuerst die Nodesversion geprüft werden.
Die Nodes version kann durch ein System Update auf eine niedrigere Version wie benötigt gedowngraded werden
<syntaxhighlight lang="bash" style="width=50%">
Error: Module version mismatch. Expected 47, got 46.
    at Error (native)
    at Object.Module._extensions..node (module.js:450:18)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:313:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (/usr/lib/node_modules/homebridge/node_modules/mdns/lib/dns_sd.js:24:20)
    at Module._compile (module.js:425:26)
    at Object.Module._extensions..js (module.js:432:10)
    at Module.load (module.js:356:32)
</syntaxhighlight>
Geprüft werden kann die Nodes Version mit:
<syntaxhighlight lang="bash" style="width=50%">node -v zeigt mir: v0.10.28, nodejs -v: v5.11.1</syntaxhighlight>
Hier ist die Version v0.10.28 wobei v0.12 Mindestvorraussetzung ist.
Die Installation der richtigen Nodes Version kann oben am Anhang des Wiki Artikels entnommen werden.
 
 
== Homebridge automatisch starten ==
Es gibt verschiedene Methoden, Homebridge automatisch zu starten.
 
=== Steuerung via FHEM ===
Auf Basis der unten stehenden ''Alternativen Methode'' wurde eine Version entwickelt, mit der man auch den Status einsehen und den Restart des Dienstes aus FHEM heraus erledigen kann. Diese Version ist auf der Seite [[Homebridge Start und Status in FHEM]] im Detail beschrieben.
 
=== Alternative Methode: Init-Skript ===
Dies startet homebridge als einen Service.
 
==== Service anlegen ====
<code>
sudo nano /etc/init.d/homebridge
</code>
 
Code einfügen (startet den Homebridge Server als Benutzer "pi" und nimmt an, dass sich .homebridge/config.json in seinem Homeverzeichnis unter /home/pi/ befindet):
 
<syntaxhighlight lang=bash>
#!/bin/sh
### BEGIN INIT INFO
# Provides: homebridge
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time for homebridge
# Description: Enable service provided by daemon.
### END INIT INFO
export PATH=$PATH:/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules
PID=`pidof homebridge`
case "$1" in
start)
if ps -p $PID > /dev/null 2>&1; then
        echo "Homebridge is already running"
else
        su - pi -c "homebridge > /dev/null 2>&1 &"
        echo "Homebridge starting"
        $0 status
fi
;;
stop)
if ! ps -p $PID > /dev/null 2>&1; then
        echo "Homebridge is not running"
else
        kill $PID
        echo "Homebridge closed"
fi
;;
restart)
if ! ps -p $PID > /dev/null 2>&1; then
        $0 start
else
        $0 stop
        $0 start
fi
;;
status)
if ps -p $PID > /dev/null 2>&1; then
        echo "Homebridge is running PID $PID"
else
        echo "Homebridge is not running"
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0
</syntaxhighlight>
 
==== Autostart aktivieren ====
 
<code>
sudo chmod 755 /etc/init.d/homebridge
 
sudo update-rc.d homebridge defaults
</code>
 
Nun kann man mit
 
<code>
sudo service homebridge start
</code>
 
bzw.
 
<code>
sudo /etc/init.d/homebridge start
</code>
 
den Dienst starten
 
=== Alternative Methode: systemd ===
 
Während das Init-Skript grundsätzlich auch mit systemd funktioniert, kann man natürlich für Homebridge auch ein systemd-Skript anlegen. Wie das geht, ist im [https://github.com/nfarina/homebridge/wiki/Running-HomeBridge-on-a-Raspberry-Pi#running-homebridge-on-bootup-systemd Wiki zu Homebridge] beschrieben.
 
== FHEM Device Einstellungen ==
Damit die zu schaltenden Geräte überhaupt in der Homebridge aufgenommen werden, muss man sie im Raum Homekit hinzufügen.
 
Um HM-CC-RT-DN Thermostate steuern zu können, muss wie oben beschrieben folgendes attribute gesetzt werden (hier als Beispiel das Device "Heizung"):
# attr Heizung subtype thermostat
Für einen Dummy muss man den genericDeviceType setzen, also beispielsweise:
# attr Dummy genericDeviceType switch
# attr Dummy setList on off


== Homebridge starten ==
Wie bereits vorher angemerkt: fügt man ein Device hinzu oder führt eine Änderung an einem Device durch, so sollte homebridge neu gestartet werden.
Wieder im Verzeichnis ~/homebridge/
<pre style="width:50%;">
npm run start
</pre>


Hombridge sollte nun laufen.
= HomeKit in iOS =


Eine Anleitung um die Homebridge automatisch zu starten findet sich hier:
== Einrichtung ==
[https://github.com/nfarina/homebridge/wiki/Running-HomeBridge-on-a-Raspberry-Pi] oder
Um FHEM über Homebridge in iOS nutzen zu können, muss HomeKit eingerichtet werden.  
[http://www.meintechblog.de/2015/10/mit-siri-und-fhem-das-gesamte-smart-home-per-stimme-steuern/]


== HomeKit in iOS einrichten ==
Es gibt verschiedene Apps. Im Folgenden wird die App EVE von Elgato empfohlen, die aus dem App-Store geladen werden muss.
Um FHEM über Homebridge in iOS nutzen zu können muss HomeKit eingerichtet werden. Es gibt verschiedene Apps. Im folgenden wird die App EVE von Elgato empfohlen, die aus dem App-Store geladen werden muss.
In der App auf:
In der App auf:
<pre style="width:50%;">
<pre style="width:50%;">
Zeile 181: Zeile 355:
eingeben.
eingeben.


Im Anschluss können die Devices nach belieben in verschiedene Räume zugeteilt werden, sowie Szenen und Bereiche erstellt werden.
Im Anschluss können die Devices nach Belieben verschiedenen Räumen zugeteilt werden, sowie Szenen und Bereiche erstellt werden.


== Schalten mit Siri ==
== Schalten mit Siri ==
'''HolyMoly''' aus dem FHEM-Forum hat ein paar Beispiele gegeben, wie man Siri dazu bringt Devices zu schalten:
'''HolyMoly''' aus dem FHEM-Forum hat ein paar Beispiele gegeben, wie man Siri dazu bringt Devices zu schalten:
<pre style="width:50%;">
<pre style="width:50%;">
Zeile 201: Zeile 374:


Mittlerweile kann Siri auch noch die Lichtfarbe von LEDs ändern.
Mittlerweile kann Siri auch noch die Lichtfarbe von LEDs ändern.
= Hinweise =
== Unterstützte Geräte ==
Das FHEM Plugin von {{Link2FU|430|Andre (justme1968)}} unterstützt automatisch mindestens die folgenden Geräte:
    switches (devices with set on and set off commands)
    lights (devices with set on and set off commands)
    HomeMatic, FS20 and ZWave dimmers (devices with set on, set off and set dim or set pct commands)
    HUE, WifiLight, MilightDevice, SWAP_0000002200000003 (hue, sat, bri, rgb)
    homematic, max and pid20 thermostats
    homematic, DUOFERN and FS20/IT(?) blinds
    homematic, MAX and FHTTK contact sensors (door, window)
    HM-SEC-WIN, HM-SEC-KEY
    presence, ROOMMATE
    SONOS (power, volume)
    harmony scenes
    temperaturecw and humidity sensors
    CO20 air quality sensor
    probably some more ...
Über eine entsprechende Konfiguration lässt sich darüber hinaus jedes mit FHEM steuerbare Gerät auf die unterstützten Homekit-Typen abbilden.
Die aktuelle Liste und eine Beschreibung der Konfigurationsmöglichkeiten findet sich [https://www.npmjs.com/package/homebridge-fhem auf den npmjs seiten] bzw. [https://github.com/justme-1968/homebridge-fhem auf github].
Mehr zum homebridgeMapping findet sich hier: [[Alexa_und_Mappings#homebridgeMapping]]
Mehr zu den unterstützen Services und Characteristics findet sich hier: [https://github.com/homebridge/HAP-NodeJS/blob/master/src/lib/gen/HomeKit.ts]
Über eine '''history''' Characteristic lässt sich für bestimmte Service-Typen eine Eve-Kompatible history aktivieren:
  ... history:size=1024 ...
=== Beispiele ===
Gesammelte Beispiele funktionierender HomebridgeMappings sind hier zu finden: [[Homebridge_User_Configs]]
== Zusätzliche Plugins ==
Für manche der über FHEM steuerbaren Geräte wie z.b. MiLight, Harmony Hub, Philips Hue, Sonos,... gibt es eigene homekit plugins. Wenn immer möglich, empfiehlt es sich aber diese '''nicht''' zu verwenden, sondern die Steuerung über die FHEM-Integration zu realisieren, da
* diese in der Regel sehr viel mächtiger und frei konfigurierbar ist
* es FHEM erlaubt, als zentrale Instanz den Überblick über den aktuellen Gesamtzustand zu haben (wichtig bei Geräten, die gepollt werden)
* die Ressourcen auf den angesteuerten Geräten schont, da Werte optimal gecached werden und nur eine einzige Verbindung aufgebaut wird
== Hinweis für alte homebridge Versionen ==
UPDATE: Homebridge funktioniert mit einer kleinen Einschränkung nun auch mit node 4.0.0. Laut
[https://github.com/cflurin/homebridge-shims/wiki/Minimalist-Homebridge-on-a-Raspberry-Pi Homebridge on a Raspberry Pi] müssen die folgenden Abhängigkeiten (Dependencies) aus der '''package.json''' entfernt werden:
<pre>
"harmonyhubjs-client": "^1.1.4",
"harmonyhubjs-discover": "git+https://github.com/swissmanu/harmonyhubjs-discover.git"
</pre>
== Hinweis zur Geschwindigkeitsoptimierung auf einem Raspberry PI ==
Damit es auf einem Raspberry schneller läuft, wird darüber hinaus empfohlen, auch diverse Abhängigkeiten aus der '''package.json''' zu entfernen:
<pre>
"ad2usb": "git+https://github.com/alistairg/node-ad2usb.git#local",
"carwingsjs": "0.0.x",
"chokidar": "^1.0.5",
"eibd": "^0.3.1",
"elkington": "kevinohara80/elkington",
"harmonyhubjs-client": "^1.1.4",
"harmonyhubjs-discover": "git+https://github.com/swissmanu/harmonyhubjs-discover.git",
"lifx-api": "^1.0.1",
"lifx": "git+https://github.com/magicmonkey/lifxjs.git",
"node-hue-api": "^1.0.5",
"node-icontrol": "^0.1.4",
"node-milight-promise": "0.0.x",
"tough-cookie": "^2.0.0",
"sonos": "0.8.x",
"telldus-live": "0.2.x",
"teslams": "1.0.1",
"unofficial-nest-api": "git+https://github.com/hachidorii/unofficial_nodejs_nest.git#d8d48edc952b049ff6320ef99afa7b2f04cdee98",
"wemo": "0.2.x",
"wink-js": "0.0.5",
"komponist" : "0.1.0",
"yamaha-nodejs": "0.4.x",
</pre>
Daher zunächst ein Backup der Datei anlegen
<pre>sudo cp package.json package.json.bkp </pre>
Am einfachsten geht das Entfernen der Zeilen mit einem Editor, beispielsweise nano oder vi.
<pre>sudo nano package.json</pre>
Das config file sollte dann wie folgt aussehen: Achtung vor den letzten zwei "}" am Ende darf kein Komma sein.
<syntaxhighlight lang="json">
{
  "name": "homebridge",
  "description": "HomeKit support for the impatient",
  "version": "0.1.1",
  "scripts": {
    "start": "DEBUG=* node app.js || true"
  },
  "repository": {
    "type": "git",
    "url": "git://github.com/nfarina/homebridge.git"
  },
  "license": "ISC",
  "dependencies": {
    "async": "^1.4.2",
    "color": "0.10.x",
    "debug": "^2.2.0",
    "hap-nodejs": "^0.0.2",
    "isy-js": "",
    "mdns": "^2.2.4",
    "netatmo": "1.3.0",
    "node-cache": "3.0.0",
    "node-persist": "0.0.x",
    "node-xmpp-client": "1.0.0-alpha23",
    "q": "1.4.x",
    "queue": "^3.1.0",
    "request": "2.49.x",
    "xml2js": "0.4.x",
    "xmldoc": "0.1.x"
  }
}
</syntaxhighlight>
== Links ==
* [https://github.com/nfarina/homebridge Github homebridge]
* [https://github.com/justme-1968/homebridge-fhem Github homebridge-fhem]
* [https://www.npmjs.com/package/homebridge NPM homebridge]
* [https://www.npmjs.com/package/homebridge-fhem NPM homebridge-fhem]
= Alternativen =
Will man nur "Hey Siri: Radio An" als Schaltbefehl senden und Homekit vermeiden, kann man auch Apple Shortcuts nutzen: [[Hey Siri Kurzbefehle, Apple Shortcuts]]


[[Kategorie:HOWTOS]]
[[Kategorie:HOWTOS]]
[[Kategorie:Sprachsteuerung]]

Aktuelle Version vom 11. Juli 2023, 20:06 Uhr

Dieses HOWTO zeigt die Installation und Erstinbetriebnahme von Homebridge.

Damit kann Siri benutzt werden, um FHEM-Devices zu steuern. So können Devices angesprochen werden, die offiziell HomeKit nicht unterstützen (die Vorgehensweise wurde auf einem Intel NUC mit Ubuntu Server 14.04 LTS und auf einem Raspberry Pi mit Raspbian getestet). Der Wiki-Eintrag bezieht sich hauptsächlich auf eine Diskussion im FHEM-Forum. Ein Riesendank gilt vor allem Andre (justme1968) .

Die Konfiguration der inzwischen aktuellen zweiten Version des Homekit-Plugins ist in einem neuen Thread im FHEM-Forum beschrieben. Hinzugekommen ist vor allem die freie Konfigurierbarkeit der Zuordnung zwischen FHEM Device und Homekit Accessory/Service, zwischen FHEM Reading und Homekit Characteristic, das mapping vom FHEM Readingwerten zu Homekit Werten sowie das Mapping von Homekit Werten zu FHEM Set-Kommandos und Werten.

Eine Sammlung funktionsfähiger Homebridge FHEM Konfigurationen kann hier gefunden werden: Homebridge User Configs. Die Sammlung befindet sich noch im Aufbau.

Vorbereitung der Umgebung

NodeJS installieren

Die nachfolgenden Befehle sind alle mit "sudo" prefixed. Wenn du unter "root" arbeitest oder deine Distribution einen anderen Mechanismus verwendet, so kannst du dies natürlich weglassen.

Zunächst wird das Betriebssystem (in diesem Falle Debian oder Ubuntu) auf den aktuellen Stand gebracht:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential libssl-dev

Nun muss NodeJS installiert werden. Leider ist die Version im Debian Repository deutlich zu alt, daher wird mit den folgenden Befehlen das Node Repository hinzugefügt und NodeJS (in der LTS Version) entsprechend installiert:

NodeJS V4

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
Emblem-question-yellow.svgBei Installation von NodeJS auf einem "alten" RasPi (B) bitte die besonderen Hinweise in diesem Forenbeitrag beachten.

NodeJS V5

curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash -
sudo apt-get install -y nodejs

NodeJS V6

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

NodeJS V11

curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs


Bei Ubunutu ist es noch nötig apt-get wie folgt auszuführen.

 sudo apt-get install -y nodejs

Damit ist NodeJS installiert.

Python, g++, MDNS installieren

sudo apt-get install python g++ libavahi-compat-libdnssd-dev

Nun sind alle Voraussetzungen geschaffen.

Installation von Homebridge & notwendiger Shims

Im nachfolgenden Absatz wird die Installation von Homebridge sowie des notwendigen Plugins (Shim) für FHEM erläutert. Eventuell muss vor die Befehle ein

sudo

vorangestellt werden.

Homebridge installieren

Die aktuelle Homebridge version wird mit

npm install -g --unsafe-perm homebridge

installiert, was eine Weile dauert. Anschließend wird der FHEM platform shim mit:

npm install -g homebridge-fhem

installiert.

Fehler während der Installation

Bei folgendem Fehler ist das Abrufen von Github nicht möglich.

npm ERR! git clone --template=/home/hs-server-admin/.npm/_git-remotes/_templates --mirror 
git://github.com/KhaosT/ed25519.git /home/hs-server-admin/.npm/_git-remotes/git-github-com-KhaosT-ed25519-git-d8bdee1d: 
github.com[0: 192.30.252.128]: errno=Die Wartezeit für die Verbindung ist abgelaufen

Fehler könnte hier durch eine aktive Firewall verursacht werden.

Kommt eine DNS Fehlermeldung fehlt meistens der AVAHI-DAEMON, zu installieren via

sudo apt-get install avahi-daemon

Wenn npm beim Kompilieren von mdns mit der Meldung abbricht, dass "dns_sd.h" nicht gefunden wird, fehlt das Paket libavahi-compat-libdnssd-dev, zu installieren via

sudo apt-get install libavahi-compat-libdnssd-dev

Homebridge aktualisieren

Prüfen, ob es Updates gibt:

npm -g outdated

Die aktuelle Homebridge version wird mit

npm -g update homebridge

installiert, was eine Weile dauert. Anschließend wird der FHEM platform shim mit:

npm -g update homebridge-fhem

installiert.

Sollte dies nicht funktionieren, kann mit

npm -g install homebridge

bzw.

npm -g install homebridge-fhem

das Update installiert werden.


Um eine spezielle Version zu installieren, können die Installationsbefehle, von oben, wie folgt angepasst werden.

npm -g install homebridge-fhem@0.4.5


Homebridge konfigurieren

Wichtig: Für die weiteren Schritte sollte man nicht root verwenden, sondern beispielsweise einen dedizierten Nutzer für homebridge oder der Einfachheit halber den Nutzer, unter dem auch FHEM läuft (meist "fhem").

Einstellungen für homebridge

Zunächst wird das Verzeichnis für die Konfigurationsdatei erstellt und in dieses gewechselt:

mkdir -p ~/.homebridge
cd ~/.homebridge/

Nun muss darin noch die config.json erstellt bzw. angepasst werden:

nano ~/.homebridge/config.json

Hinweise zur Konfiguration:

  • "bridge":
    • "username": Sollte so belassen werden. Sollte später auf dem iOS Device keine Homebridge gefunden werden, so kann man hier beispielsweise den String auf 31 statt 30 enden lassen um so eine neue Homebridge vorzutäuschen.
    • "port": Sollte so belassen werden
    • "pin": Der PIN kann beliebig in dem Format xxx-xx-xxx angepasst werden. Dieser muss nur einmal bei der Einrichtung in iOS eingegeben werden.
  • "platforms":
    • "platform": Hier muss "FHEM" beibehalten werden.
    • "server": Hier muss die IP des FHEM-Servers eingetragen werden. Dabei muss Homebridge nicht auf dem selben Server laufen wie FHEM, kann aber. Wenn es auf dem gleichen Rechner läuft, dann bietet es sich an, die IP 127.0.0.1 zu verwenden.
    • "port": Hier muss der Port des gewählten FHEMWEBs eingetragen werden (muss nicht das "normale" sein, kann eine extra Instanz sein)
    • "auth": Ist FHEM nicht mit Nutzername/Password abgesichert, so kann man diese Zeile einfach entfernen.
    • "filter": Damit nicht alle Devices von Homebridge berücksichtigt werden, bietet es sich an, die Devices zu filtern. In diesem Beispiel wurden alle Devices, die über Siri steuerbar sein sollen, zusätzlich in den Raum Homekit konfiguriert.
{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "031-45-154"
    },

    "platforms": [
        {
            "platform": "FHEM",
            "name": "FHEM",
            "server": "127.0.0.1",
            "port": "8083",
            "auth": {"user": "FhemUser", "pass": "XXX"},
            "filter": "room=Homekit"
        }
     ],

    "accessories": []
}

Wenn für FHEMWEB kein user/password vergeben ist muss die "auth" Zeile weggelassen werden. Wird FHEM mit SSL abgesichert, so muss zusätzlich in der Sektion "platforms" noch diese Zeile (nach "port") eingefügt werden:

            "ssl": true,

Wenn man SSL ohne user/password benutzt, muss man "auth" Zeile einfugen, wobei die Werte weggelassen werden:

            "auth": {"user": "", "pass": ""},

Natürlich kann man auch nach beliebigen anderen Kriterien filtern. z.b. nach Device TYPE, nach subtype Attribut, ... Es können mehrere FHEM platforms Abschnitte mit eigenem Filter im config file stehen (dabei das Komma zwischen den einzelnen Abschnitten nicht vergessen!) . Auch Geräte auf die mehr als ein Filterausdruck matched werden dabei nur einmal hinzugefügt.

FHEM konfigurieren

Es empfiehlt sich ein siri Gerät in FHEM anzulegen.

define siri siri

Die benötigten Attribute werden inzwischen beim ersten Start von homebridge-fhem automatisch auf FHEM Seite eingetragen.

Mehr zu den inzwischen verfügbaren Konfigurationsmöglichkeiten findet sich auf den github und npmjs Seiten des Plugins und im ersten Beitrag des zugehörigen Thread im Diskussion im FHEM-Forum

Start von Homebridge

Hinweis

Nach allen Änderungen die in FHEM gemacht werden, welche Homebridge betreffen, muss Homebridge neu gestartet werden. Wie der Neustart erfolgen muss, ist abhängig davon, wie man Homebridge gestartet hat. Bitte den entsprechenden Methoden entnehmen.

Einmaliger Manueller Start

homebridge

Homebridge sollte nun laufen. Hier kann man die Kommunikation nachverfolgen. Abbrechen kann das ganze mit CTRL+c (es sind dann auch keine Befehle mehr mit Siri möglich). Damit Siri auch Befehle ohne ständig offenes Terminal bearbeiten kann, bitte nächsten Punkt beachten.

Fehler während des Manuellen Starts

Kommt ein Fehler der ähnlich aussieht wie folgender, sollte zuerst die Nodesversion geprüft werden. Die Nodes version kann durch ein System Update auf eine niedrigere Version wie benötigt gedowngraded werden

Error: Module version mismatch. Expected 47, got 46.
    at Error (native)
    at Object.Module._extensions..node (module.js:450:18)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:313:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (/usr/lib/node_modules/homebridge/node_modules/mdns/lib/dns_sd.js:24:20)
    at Module._compile (module.js:425:26)
    at Object.Module._extensions..js (module.js:432:10)
    at Module.load (module.js:356:32)

Geprüft werden kann die Nodes Version mit:

node -v zeigt mir: v0.10.28, nodejs -v: v5.11.1

Hier ist die Version v0.10.28 wobei v0.12 Mindestvorraussetzung ist. Die Installation der richtigen Nodes Version kann oben am Anhang des Wiki Artikels entnommen werden.


Homebridge automatisch starten

Es gibt verschiedene Methoden, Homebridge automatisch zu starten.

Steuerung via FHEM

Auf Basis der unten stehenden Alternativen Methode wurde eine Version entwickelt, mit der man auch den Status einsehen und den Restart des Dienstes aus FHEM heraus erledigen kann. Diese Version ist auf der Seite Homebridge Start und Status in FHEM im Detail beschrieben.

Alternative Methode: Init-Skript

Dies startet homebridge als einen Service.

Service anlegen

sudo nano /etc/init.d/homebridge

Code einfügen (startet den Homebridge Server als Benutzer "pi" und nimmt an, dass sich .homebridge/config.json in seinem Homeverzeichnis unter /home/pi/ befindet):

#!/bin/sh
### BEGIN INIT INFO
# Provides: homebridge
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time for homebridge
# Description: Enable service provided by daemon.
### END INIT INFO
export PATH=$PATH:/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules
PID=`pidof homebridge`
case "$1" in
start)
if ps -p $PID > /dev/null 2>&1; then
        echo "Homebridge is already running"
else
        su - pi -c "homebridge > /dev/null 2>&1 &"
        echo "Homebridge starting"
        $0 status
fi
;;
stop)
if ! ps -p $PID > /dev/null 2>&1; then
        echo "Homebridge is not running"
else
        kill $PID
        echo "Homebridge closed"
fi
;;
restart)
if ! ps -p $PID > /dev/null 2>&1; then
        $0 start
else
        $0 stop
        $0 start
fi
;;
status)
if ps -p $PID > /dev/null 2>&1; then
        echo "Homebridge is running PID $PID"
else
        echo "Homebridge is not running"
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0

Autostart aktivieren

sudo chmod 755 /etc/init.d/homebridge

sudo update-rc.d homebridge defaults

Nun kann man mit

sudo service homebridge start

bzw.

sudo /etc/init.d/homebridge start

den Dienst starten

Alternative Methode: systemd

Während das Init-Skript grundsätzlich auch mit systemd funktioniert, kann man natürlich für Homebridge auch ein systemd-Skript anlegen. Wie das geht, ist im Wiki zu Homebridge beschrieben.

FHEM Device Einstellungen

Damit die zu schaltenden Geräte überhaupt in der Homebridge aufgenommen werden, muss man sie im Raum Homekit hinzufügen.

Um HM-CC-RT-DN Thermostate steuern zu können, muss wie oben beschrieben folgendes attribute gesetzt werden (hier als Beispiel das Device "Heizung"):

  1. attr Heizung subtype thermostat

Für einen Dummy muss man den genericDeviceType setzen, also beispielsweise:

  1. attr Dummy genericDeviceType switch
  2. attr Dummy setList on off

Wie bereits vorher angemerkt: fügt man ein Device hinzu oder führt eine Änderung an einem Device durch, so sollte homebridge neu gestartet werden.

HomeKit in iOS

Einrichtung

Um FHEM über Homebridge in iOS nutzen zu können, muss HomeKit eingerichtet werden.

Es gibt verschiedene Apps. Im Folgenden wird die App EVE von Elgato empfohlen, die aus dem App-Store geladen werden muss. In der App auf:

Gerät hinzufügen

Es sollte ein Gerät mit der Bezeichnung "Homebridge" zur Auswahl erscheinen. Zur Ersteinrichtung auf PIN manuell eingeben gehen und (falls in der config.json nicht geändert):

031-45-154

eingeben.

Im Anschluss können die Devices nach Belieben verschiedenen Räumen zugeteilt werden, sowie Szenen und Bereiche erstellt werden.

Schalten mit Siri

HolyMoly aus dem FHEM-Forum hat ein paar Beispiele gegeben, wie man Siri dazu bringt Devices zu schalten:

"Schalte alle Lampen im Obergeschoss ein."
"Schalte Chloes Licht aus."
"Dimme das Licht in der Küche."
"Dimme das Licht im Esszimmer auf 50 %."
"Stelle das Licht in der Küche am hellsten ein."
"Stelle die Temperatur im Tahoe-Haus auf 22 °C ein."
"Stelle das Thermostat im Erdgeschoss auf 21 °C ein.
"Schalte den Drucker im Büro ein."
"Siri, bereite alles für eine Party vor."
"Bereite das Ambiente fürs Abendessen vor."
"Aktiviere den Nachtruhemodus."

Mittlerweile kann Siri auch noch die Lichtfarbe von LEDs ändern.

Hinweise

Unterstützte Geräte

Das FHEM Plugin von Andre (justme1968) unterstützt automatisch mindestens die folgenden Geräte:

   switches (devices with set on and set off commands)
   lights (devices with set on and set off commands)
   HomeMatic, FS20 and ZWave dimmers (devices with set on, set off and set dim or set pct commands)
   HUE, WifiLight, MilightDevice, SWAP_0000002200000003 (hue, sat, bri, rgb)
   homematic, max and pid20 thermostats
   homematic, DUOFERN and FS20/IT(?) blinds
   homematic, MAX and FHTTK contact sensors (door, window)
   HM-SEC-WIN, HM-SEC-KEY
   presence, ROOMMATE
   SONOS (power, volume)
   harmony scenes
   temperaturecw and humidity sensors
   CO20 air quality sensor
   probably some more ...

Über eine entsprechende Konfiguration lässt sich darüber hinaus jedes mit FHEM steuerbare Gerät auf die unterstützten Homekit-Typen abbilden.

Die aktuelle Liste und eine Beschreibung der Konfigurationsmöglichkeiten findet sich auf den npmjs seiten bzw. auf github.

Mehr zum homebridgeMapping findet sich hier: Alexa_und_Mappings#homebridgeMapping

Mehr zu den unterstützen Services und Characteristics findet sich hier: [1]

Über eine history Characteristic lässt sich für bestimmte Service-Typen eine Eve-Kompatible history aktivieren:

 ... history:size=1024 ...

Beispiele

Gesammelte Beispiele funktionierender HomebridgeMappings sind hier zu finden: Homebridge_User_Configs

Zusätzliche Plugins

Für manche der über FHEM steuerbaren Geräte wie z.b. MiLight, Harmony Hub, Philips Hue, Sonos,... gibt es eigene homekit plugins. Wenn immer möglich, empfiehlt es sich aber diese nicht zu verwenden, sondern die Steuerung über die FHEM-Integration zu realisieren, da

  • diese in der Regel sehr viel mächtiger und frei konfigurierbar ist
  • es FHEM erlaubt, als zentrale Instanz den Überblick über den aktuellen Gesamtzustand zu haben (wichtig bei Geräten, die gepollt werden)
  • die Ressourcen auf den angesteuerten Geräten schont, da Werte optimal gecached werden und nur eine einzige Verbindung aufgebaut wird

Hinweis für alte homebridge Versionen

UPDATE: Homebridge funktioniert mit einer kleinen Einschränkung nun auch mit node 4.0.0. Laut Homebridge on a Raspberry Pi müssen die folgenden Abhängigkeiten (Dependencies) aus der package.json entfernt werden:

"harmonyhubjs-client": "^1.1.4",
"harmonyhubjs-discover": "git+https://github.com/swissmanu/harmonyhubjs-discover.git"

Hinweis zur Geschwindigkeitsoptimierung auf einem Raspberry PI

Damit es auf einem Raspberry schneller läuft, wird darüber hinaus empfohlen, auch diverse Abhängigkeiten aus der package.json zu entfernen:

"ad2usb": "git+https://github.com/alistairg/node-ad2usb.git#local",
"carwingsjs": "0.0.x",
"chokidar": "^1.0.5",
"eibd": "^0.3.1",
"elkington": "kevinohara80/elkington",
"harmonyhubjs-client": "^1.1.4",
"harmonyhubjs-discover": "git+https://github.com/swissmanu/harmonyhubjs-discover.git",
"lifx-api": "^1.0.1",
"lifx": "git+https://github.com/magicmonkey/lifxjs.git",
"node-hue-api": "^1.0.5",
"node-icontrol": "^0.1.4",
"node-milight-promise": "0.0.x",
"tough-cookie": "^2.0.0",
"sonos": "0.8.x",
"telldus-live": "0.2.x",
"teslams": "1.0.1",
"unofficial-nest-api": "git+https://github.com/hachidorii/unofficial_nodejs_nest.git#d8d48edc952b049ff6320ef99afa7b2f04cdee98",
"wemo": "0.2.x",
"wink-js": "0.0.5",
"komponist" : "0.1.0",
"yamaha-nodejs": "0.4.x",

Daher zunächst ein Backup der Datei anlegen

sudo cp package.json package.json.bkp 

Am einfachsten geht das Entfernen der Zeilen mit einem Editor, beispielsweise nano oder vi.

sudo nano package.json

Das config file sollte dann wie folgt aussehen: Achtung vor den letzten zwei "}" am Ende darf kein Komma sein.

{
  "name": "homebridge",
  "description": "HomeKit support for the impatient",
  "version": "0.1.1",
  "scripts": {
    "start": "DEBUG=* node app.js || true"
  },
  "repository": {
    "type": "git",
    "url": "git://github.com/nfarina/homebridge.git"
  },
  "license": "ISC",
  "dependencies": {
    "async": "^1.4.2",
    "color": "0.10.x",
    "debug": "^2.2.0",
    "hap-nodejs": "^0.0.2",
    "isy-js": "",
    "mdns": "^2.2.4",
    "netatmo": "1.3.0",
    "node-cache": "3.0.0",
    "node-persist": "0.0.x",
    "node-xmpp-client": "1.0.0-alpha23",
    "q": "1.4.x",
    "queue": "^3.1.0",
    "request": "2.49.x",
    "xml2js": "0.4.x",
    "xmldoc": "0.1.x"
  }
}

Links

Alternativen

Will man nur "Hey Siri: Radio An" als Schaltbefehl senden und Homekit vermeiden, kann man auch Apple Shortcuts nutzen: Hey Siri Kurzbefehle, Apple Shortcuts