Homebridge einrichten: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Akw (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 12: | Zeile 12: | ||
== NodeJS installieren == | == NodeJS installieren == | ||
In der Konsole folgende Befehle eingeben: | In der Konsole folgende Befehle eingeben: | ||
< | <source 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 | ||
</ | </source> | ||
UPDATE: Homebridge funktioniert mit einer kleinen Einschränkung nun auch mit node 4.0.0. Laut | 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: | [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: | ||
Zeile 63: | Zeile 63: | ||
Das Konfig file sollte dann wie folgt aussehen: Achtung vor den letzten zwei } am Ende dar kein Komma sein. | Das Konfig file sollte dann wie folgt aussehen: Achtung vor den letzten zwei } am Ende dar kein Komma sein. | ||
< | <source lang="javascript"> | ||
{ | { | ||
"name": "homebridge", | "name": "homebridge", | ||
Zeile 94: | Zeile 94: | ||
} | } | ||
} | } | ||
</ | </source> | ||
== Python, g++, MDNS installieren == | == Python, g++, MDNS installieren == | ||
< | <source lang="bash" style="width:50%;"> | ||
sudo apt-get install python | sudo apt-get install python | ||
sudo apt-get install g++ | sudo apt-get install g++ | ||
sudo apt-get install libavahi-compat-libdnssd-dev | sudo apt-get install libavahi-compat-libdnssd-dev | ||
</ | </source> | ||
== Homebridge installieren == | == Homebridge installieren == | ||
Dazu im Homeverzeichnis | Dazu im Homeverzeichnis | ||
< | <source lang="bash" style="width:50%;"> | ||
git clone https://github.com/nfarina/homebridge.git | git clone https://github.com/nfarina/homebridge.git | ||
cd homebridge | cd homebridge | ||
npm install | npm install | ||
</ | </source> | ||
eingeben. | eingeben. | ||
Zeile 121: | Zeile 121: | ||
== Homebridge konfigurieren == | == Homebridge konfigurieren == | ||
Im Verzeichnis ~/homebridge/ muss nun noch die Config.json erstellt bzw. angepasst werden: | Im Verzeichnis ~/homebridge/ muss nun noch die Config.json erstellt bzw. angepasst werden: | ||
< | <source lang="bash" style="width:50%;"> | ||
nano config.json | nano config.json | ||
</ | </source> | ||
Homebridge muss nicht, kann aber auf dem selben Server laufen wie FHEM. | Homebridge muss nicht, kann aber auf dem selben Server laufen wie FHEM. | ||
Zeile 137: | Zeile 137: | ||
Der PIN kann beliebig in dem Format xxx-xx-xxx angepasst werden. Dieser muss nur einmal bei der Einrichtung in iOS eingegeben werden. | Der PIN kann beliebig in dem Format xxx-xx-xxx angepasst werden. Dieser muss nur einmal bei der Einrichtung in iOS eingegeben werden. | ||
< | <source lang="javascript" style="width:50%;"> | ||
{ | { | ||
"bridge": { | "bridge": { | ||
Zeile 159: | Zeile 159: | ||
"accessories": [] | "accessories": [] | ||
} | } | ||
</ | </source> | ||
Achtung: Für ein FHEM Web Interface mit SSL Zertifikat muss die config wo folgt aussehen: | Achtung: Für ein FHEM Web Interface mit SSL Zertifikat muss die config wo folgt aussehen: | ||
< | <source lang="javascript" style="width:50%;"> | ||
{ | { | ||
"bridge": { | "bridge": { | ||
Zeile 185: | Zeile 185: | ||
"accessories": [] | "accessories": [] | ||
} | } | ||
</ | </source> | ||
== FHEM konfigurieren == | == FHEM konfigurieren == | ||
Um die Device richtig mit FHEM und Homebridge vertraut zu machen, müssen wir noch unter global etwas ergänzen: | Um die Device richtig mit FHEM und Homebridge vertraut zu machen, müssen wir noch unter global etwas ergänzen: | ||
< | <source lang="perl" style="width:50%;"> | ||
attr global userattr genericDeviceType:switch,outlet,light,blind,speaker,thermostat,ignore,lock,window,contact | attr global userattr genericDeviceType:switch,outlet,light,blind,speaker,thermostat,ignore,lock,window,contact | ||
</ | </source> | ||
Einfach folgende Zeilen an die bestehenden Attribute anhängen: | Einfach folgende Zeilen an die bestehenden Attribute anhängen: | ||
< | <source lang="perl" style="width:50%;"> | ||
genericDeviceType:switch,outlet,light,blind,speaker,thermostat,ignore,lock,window,contact | genericDeviceType:switch,outlet,light,blind,speaker,thermostat,ignore,lock,window,contact | ||
</ | </source> | ||
Diese Einstellungen können auch bei den Einzelnen Devices gemacht werden. | Diese Einstellungen können auch bei den Einzelnen Devices gemacht werden. | ||
Zeile 205: | Zeile 205: | ||
== Homebridge starten == | == Homebridge starten == | ||
Wieder im Verzeichnis ~/homebridge/ | Wieder im Verzeichnis ~/homebridge/ | ||
< | <source lang="bash" style="width:50%;"> | ||
npm run start | npm run start | ||
</ | </source> | ||
Hombridge sollte nun laufen. | Hombridge sollte nun laufen. | ||
Zeile 256: | Zeile 256: | ||
1. Es muss die Bridge hinterlegt werden. Beispiel | 1. Es muss die Bridge hinterlegt werden. Beispiel | ||
< | <source lang="javascript" style="width:50%;"> | ||
{ | { | ||
"platform": "MiLight", | "platform": "MiLight", | ||
Zeile 267: | Zeile 267: | ||
"zones":["Wohnzimmer Lampen","Badezimmer Lampen","Büro Lampen","Keller Lampen"] | "zones":["Wohnzimmer Lampen","Badezimmer Lampen","Büro Lampen","Keller Lampen"] | ||
}, | }, | ||
</ | </source> | ||
2. Es muss für jedes zu Steuernde Gerät ein Dummy angelegt werden. Beispiel: | 2. Es muss für jedes zu Steuernde Gerät ein Dummy angelegt werden. Beispiel: | ||
< | <source lang="javascript" style="width:50%;"> | ||
{ | { | ||
"accessory": "Http", | "accessory": "Http", | ||
Zeile 280: | Zeile 280: | ||
"http_method": "POST" | "http_method": "POST" | ||
}, | }, | ||
</ | </source> | ||
== Schalten mit Siri == | == Schalten mit Siri == |
Version vom 30. Oktober 2015, 11:27 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 Raspian getestet).
Um Homebridge erfolgreich zu installieren, müssen zunächst NPM, NodeJS, Python, g++, MDNS, sowie benötigte Hilfspakete installiert werden:
Der WIKI-Eintrag bezieht sich hauptsächlich auf diese Diskussion im FHEM-Forum. Ein Riesendank gilt vor allem Andre (justme1968) .
Eine Sammlung funktionsfähiger Homebridge FHEM Konfiguration können hier gefunden werden http://www.fhemwiki.de/wiki/Hombridge_User_Configs Die Sammlung befindet sich noch im Aufbau
NodeJS installieren
In der Konsole folgende Befehle eingeben:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential libssl-dev
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"
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
cp package.json package.json.bkp oder sudo cp package.json package.json.bkp
Am einfachsten geht das entfernen der Zeilen mit dem Editor vi.
vi package.json oder sudo vi package.json
Mit dem Cursor vor die entsprechende Zeile gehen und mit zwei mal Taste d (dd tippen) wird die Zeile gelöscht.
Eventuell muss vi mit sudo vi aufgerufen werden, je nach verwendeter Distribution.
Gespeichert wird dann mit folgendem Ablauf: ESC :wq! Enter
"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",
Das Konfig file sollte dann wie folgt aussehen: Achtung vor den letzten zwei } am Ende dar 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"
}
}
Python, g++, MDNS installieren
sudo apt-get install python
sudo apt-get install g++
sudo apt-get install libavahi-compat-libdnssd-dev
Homebridge installieren
Dazu im Homeverzeichnis
git clone https://github.com/nfarina/homebridge.git
cd homebridge
npm install
eingeben.
ERR 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
Fehlerursache konnte hier durch eine aktive Firewall verursacht werden.
Homebridge konfigurieren
Im Verzeichnis ~/homebridge/ muss nun noch die Config.json erstellt bzw. angepasst werden:
nano config.json
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.
Läuft der Homebridge Server auf dem gleichen Rechner wie FHEM, kann die IP 127.0.0.1 benutzt werden.
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.
{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:30",
"port": 51826,
"pin": "031-45-154"
},
"platforms": [
{
"platform": "FHEM",
"name": "FHEM",
"server": "192.168.xxx.xxx",
"port": "8083",
"filter": "room=Homekit",
"auth": {"user": "FhemUser", "pass": "XXX"}
}
],
"accessories": []
}
Achtung: Für ein FHEM Web Interface mit SSL Zertifikat muss die config wo folgt aussehen:
{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:30",
"port": 51826,
"pin": "031-45-154"
},
"platforms": [
{
"platform": "FHEM",
"name": "FHEM",
"server": "192.168.xxx.xxx",
"port": "8083",
"filter": "room=Homekit",
"ssl": "true",
"auth": {"user": "FhemUser", "pass": "XXX"}
}
],
"accessories": []
}
FHEM konfigurieren
Um die Device richtig mit FHEM und Homebridge vertraut zu machen, müssen wir noch unter global etwas ergänzen:
attr global userattr genericDeviceType:switch,outlet,light,blind,speaker,thermostat,ignore,lock,window,contact
Einfach folgende Zeilen an die bestehenden Attribute anhängen:
genericDeviceType:switch,outlet,light,blind,speaker,thermostat,ignore,lock,window,contact
Diese Einstellungen können auch bei den Einzelnen Devices gemacht werden. Beispiel bei einem HM-CC-RT-DN, hier wird der subType thermostat gesetzt. Einfach in das Device gehen hier das Attr subtype erstellen und thermostat auswählen.
Homebridge starten
Wieder im Verzeichnis ~/homebridge/
npm run start
Hombridge sollte nun laufen. Hier kann man die Kommunikation nachverfolgen. Abbrechen kann das ganze mit ctrl +c. Es sind keine Befehle mehr mit Siri möglich.
Damit Siri auch Befehle ohne ständig offenes Terminal bearbeiten kann, bitten nächsten Punkt beachten.
Homebridge automatisch starten
Eine Anleitung um die Homebridge automatisch zu starten findet sich
Link 2 arbeitet mit den von Ubuntu bekannten Services. So ist es möglich mit z.B. sudo service homebridge start/stop/status
FHEM Device Einstellungen
Damit man mit Siri auch HM-CC-RT-DN Thermostate steuern kann, muss folgendes beachtet werden
- HM-CC-RT-DN_Clima in den Homekit Raum hinzufügen
- attr Subtype thermostat setzten.
HomeKit in iOS einrichten
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 in verschiedene Räume zugeteilt werden, sowie Szenen und Bereiche erstellt werden.
HomeBridge Allgemein
Nach allen Änderungen die in FHEM gemacht werden, welche Homebridge betreffen, muss Homebridge neu gestartet werden.
Der Neustart ist abhängig davon, wie man Homebridge gestartet hat.
Bitte den entsprechenden Methoden entnehmen.
Steuerung von MiLight Allgemein
Wie hier im Forum http://forum.fhem.de/index.php/topic,32652.msg351706.html#msg351706 erwähnt, ist es möglich auch MiLight gGeräte per Siri anzusprechen. Hierzu muss die config.jason angepasst werden.
1. Es muss die Bridge hinterlegt werden. Beispiel
{
"platform": "MiLight",
"name": "MiLight",
"ip_address": "192.168.001.033",
"port": 8899,
"type": "rgbw",
"delay": 30,
"repeat": 3,
"zones":["Wohnzimmer Lampen","Badezimmer Lampen","Büro Lampen","Keller Lampen"]
},
2. Es muss für jedes zu Steuernde Gerät ein Dummy angelegt werden. Beispiel:
{
"accessory": "Http",
"name": "Kitchen Lamp",
"on_url": "https://192.168.1.22:3030/devices/23222/on",
"off_url": "https://192.168.1.22:3030/devices/23222/off",
"brightness_url": "https://192.168.1.22:3030/devices/23222/brightness/%b",
"http_method": "POST"
},
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.