Apple #Home und #Homematic – Dreamteam. #homematic #ubuntu

Ich hätte es wissen müssen, die vielen Euronen für den wahrlich schlechten Mediola Creator Neo waren für’n Allerwertesten. Nicht so für die CCU und HomeMatic. Ein Ubuntu mehr als VM und die herrlich stabil laufende Software #homebridge von nfarina bin ich noch glücklicher und habe ein besseres UI, welches – man staunt – sogar auf mein Wort hört. Sogar, wenn ich nicht zuhause bin, weil ich nämlich mit einem AppleTV4 – ohne es zu wissen – schon das passende Gerät zuhause hatte.

Update 18.12.2017 – Hinweise zu SystemD und Ubuntu 16.04

#update: Im Moment ist mir ein kleines „Sicherheitsproblem“ aufgefallen, mehr dazu hier: Link.

Ich kann so ziemlich alles machen, was ich will. Und einbetten lässt sich nicht nur meine HomeMatic, sondern auch meine Sonos-Boxen und Logitech Harmony Smart. Alles Dinge, die mich bei Mediola richtig viel Geld gekostet hätten. Und das UI, welches mir Apple bietet, ist schöner als ich es jemals hätte selbst bauen können. Außerdem hört es auf mich:

img_0581

Und ich kann verschiedene Programme definieren, z.B. wenn ich das Haus verlasse oder zurück komme, oder wenn ich aufwache. Das geht alles so supersimpel, ohne massiven Konfigurationsaufwand, so dass ich mir einen ganzen Rutsch von Programmen in der CCU selbst sparen kann.


Willst Du auch? Geht recht simpel. Was brauchst Du dafür? N‘ Raspberry oder eine VM. Die Variante Raspberry findest Du hier: Klick

Die Variante Ubuntu VM für HomeMatic, Sonos und Logitech Harmony Hub schreibe ich Dir kurz auf.

Du konfigurierst irgendwo (QNAP, Synology, ESXI, Proxmox) eine VM Ubuntu 16.04 LTS Server (1CPU mit 1GB und 40GB VHD). Problematisch war für mich lediglich, die passende NodeJS zu finden, sowie die passende Distro. Im Moment klappt’s mit Node 6 und Ubuntu 16.04 LTS.

Alle Befehle mit passendem SUDO

apt-get update && apt-get upgrade
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
apt-get install libavahi-compat-libdnssd-dev
apt-get install nodejs
npm install -g --unsafe-perm homebridge
npm install -g homebridge-homematic
npm install -g homebridge-sonos
npm install -g homebridge-harmonyhub

Je nachdem von wo oder durch welchen User Du „homebridge“ startest, solltest Du die config.json adäquat speichern. Für systemctl z.B. sollte sie in nachfolgendem Pfad liegen, dazu legst Du diesen an:

mkdir /var/lib/homebridge
chmod -R 0777 /var/lib/homebridge

So sieht meine „config.json“ in „/var/lib/homebridge“ (Beispiel) aus:

{
"bridge": {
"name": "Homebridge-Mac",
"username": "CC:22:3D:E3:CE:30",
"port": 51826,
"pin": "011-22-333"
},
"description": "CCU",
"platforms": [{
"platform": "HomeMatic",
"name": "HomeMatic CCU",
"ccu_ip": "xxx.xxx.xxx.xxx",
"subsection": "Homekit",
"doors": [],
"filter_device": [],
"filter_channel": [],
"programs": [],
"variables": [],
"outlets": []
},
{
"platform": "HarmonyHub",
"name": "Harmony Hub"
}
],
"accessories": [
{
"accessory": "Sonos",
"name": "Schlafzimmer Sonos",
"room": "Schlafzimmer"
},
{
"accessory": "Sonos",
"name": "Küche Sonos",
"room": "Küche"
},
{
"accessory": "Sonos",
"name": "Wohnzimmer Sonos",
"room": "Wohnzimmer"
},
{
"accessory": "Sonos",
"name": "Büro Sonos",
"room": "Büro"
},
{
"accessory": "Sonos",
"name": "Badezimmer Sonos",
"room": "Badezimmer"
}
]
}

Hier tauschst Du nur noch die korrekte IP für die CCU aus und passt für Deinen Harmony Hub und Deine Sonos Boxen an. Weitere Hinweise zur config.json weiter unten.

Anschließend legst Du den Nutzer „homebridge“ an:

sudo useradd -M --system homebridge

unter „etc/default“ liegt die nachfolgende Datei „homebridge“:

# Defaults / Configuration options for homebridge
# The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others)
HOMEBRIDGE_OPTS=-U /var/lib/homebridge

# If you uncomment the following line, homebridge will log more 
# You can display this via systemd's journalctl: journalctl -f -u homebridge
# DEBUG=*

und unter „/etc/systemd/system“ liegt nachfolgende Datei „homebridge.service“:

[Unit]
Description=Node.js HomeKit Server 
After=syslog.target network-online.target

[Service]
Type=simple
User=homebridge
EnvironmentFile=/etc/default/homebridge
# Adapt this to your specific setup (could be /usr/bin/homebridge)
# See comments below for more information
ExecStart=/usr/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

Anschließend sagst Du systemd bescheid und startest den Dienst homebridge:

systemctl daemon-reload
systemctl enable homebridge
systemctl start homebridge

mit nachfolgendem Befehl kannst Du herausfinden, ob alles gut ist:

systemctl status homebridge

Ein paar Hinweise noch:

  • In Sonos müssen die Räume adäquat sein, so dass sie zu Deiner Umgebung passen, dann werden die Boxen in den passenden Räumen ebenfalls gefunden. Ein Ü für Küche oder Büro ist jeweils kein Problem.
  • Hast Du mehrere Harmony Hubs, müssen sie adäquat benannt sein.
  • In JSON musst Du auf das korrekte Schließen und Öffnen achten, sonst fliegt Dir homebridge um die Ohren.

bildschirmfoto-2016-11-13-um-13-05-18

Nach der Einrichtung über Pin (Wird automatisch in der Home UI gefunden) kannst Du alle Räume korrekt zuordnen und findest auch gleich alles auf Deinen anderen iOS Geräten wieder. Hast Du Dich mal vertan und aus Versehen in Home Deine Homebridge gelöscht, musst Du den Ordner „persist“ neben Deiner config.json löschen und kannst von vorne beginnen.

Ist Dein AppleTV4 eingeschaltet, so brauchst Du nichts weiter zu konfigurieren und kannst auch von der Ferne aus schalten und walten:

img_0580

Ach, das war herrlich einfach. Es klappt und das Ding von nfarina ist wunderbar stabil. Schwierig war für mich lediglich, die passende node.js Version zu finden, aber das ist bei mir und dem Ding ja immer so. Alles andere ging wie von selbst. Perfektes Ergebnis.

Passende Quellen:

  • Ubuntu 16.04 LTS Server: Link
  • NodeJS 6 – Via Package Manager: Link
  • Homebridge: Link
  • Homebridge Sonos: Link
  • Homebridge Harmony: Link