Am Anfang meiner Smarthome-Planungen stand die Überlegung, für welches System ich mich entscheiden sollte. Zunächst schaute ich daher, was für Systeme es gibt und welche untereinander kompatibel zu sein schienen. Dabei stieß ich auch auf unterschiedliche Protokolle wie ZigBee und Z-Wave , die von verschiedenen Geräten verwendet werden. Meinem Eindruck nach gab es auf dem deutschen Markt mehr Hersteller, die das ZigBee-Protokoll verwenden (z. B. Philips Hue, Osram Smart+, IKEA TRÅDFRI), weshalb ich mich dazu entschied, mich zunächst darauf zu konzentrieren.
Jeder Anbieter von ZigBee-Produkten bietet auch gleichzeitig eine eigene ZigBee-Basisstation an, an die die Lampen, Steckdosen und Sensoren angeschlossen werden und die über eine herstellereigene App gesteuert werden kann. Das Problem ist jedoch, dass die Basisstationen in der Regel auf die Produkte des Herstellers beschränkt sind, wenn man die App und den vollen Funktionsumfang nutzen möchte. Mein Ziel war es jedoch, möglichst flexibel und herstellerunabhängig zu sein, weshalb ich mich auf die Suche nach ZigBee-Basisstationen begab, die dieses Kriterium erfüllen. Ich stieß auf ZigBee-Module der Firma Dresden Elektronik, die unter dem Namen ConBee in Form eines USB-Sticks und unter dem Namen RaspBee in Form eines Aufsatzmoduls für den Raspberry Pi angeboten werden. Aus ästhetischen Gründen entschied ich mich für den RaspBee, da dieser vollständig im Gehäuse des Raspberry Pis verschwindet.
Um das ZigBee-Modul am Raspberry Pi nutzen zu können, bietet Dresden Elektronik eine eigene Software namens deCONZ an, die sich auf unterschiedliche Weise auf dem Raspberry Pi installieren lässt. Da Home Assistant bei mir unter Hassbian läuft, nutze ich deCONZ via Docker-Container.
Nachfolgend wird beschrieben, wie man den Raspberry Pi so konfiguriert, dass das RaspBee-Modul korrekt erkannt wird und wie deCONZ auf einem frisch eingerichteten Raspberry Pi als Docker-Container installiert und für die Verwaltung von ZigBee-Geräten verwendet wird.
deCONZ-Installation unter Hassbian (und anderen Debian-Systemen)
Zunächst verbindet man sich per ssh mit dem Raspberry Pi, an dem das RaspBee-Modul angeschlossen ist.
$ ssh pi@<ip-adresse>
Es folgt der Startbildschirm, mit der Aufforderung, das Passwort des Benutzers pi
zu ändern. Hierzu tippt man den folgenden Befehl passwd
ein und vergibt auf diesem Wege ein neues Passwort.
Um das RaspBee-Modul nutzen zu können, muss das Bluetooth des Raspberry Pi deaktiviert werden. Dazu ruft man per Terminal die config.txt
-Datei auf:
$ sudo nano /boot/config.txt
Nun fügt man am Ende der Datei - je nachdem welchen Raspberry Pi man verwendet - folgende Zeilen ein.
Für den Raspberry Pi 3B und älter:
# Enable RaspBee on Raspberry Pi 3B and lower
enable_uart=1
dtoverlay=pi3-disable-bt
Für den Raspberry Pi 3B+ und neuer:
# Enable RaspBee on Raspberry Pi 3B+ and newer
enable_uart=1
dtoverlay=pi3-disable-bt
In jedem Fall sollte noch eine Leerzeile folgen, da die Einstellung sonst nicht immer erkannt wird.1 Anschließend wird die Datei mit der Tastenkombination STRG+O
gespeichert und mit STRG+X
geschlossen.
Außerdem müssen noch die folgenden Einstellungen in der Raspi-Config vorgenommen werden, damit das RaspBee-Modul ordnungsgemäß erkannt wird und funktioniert:
- raspi-config mit dem Befehl
sudo raspi-config
öffnen Interfacing Options
auswählenSerial
auswählen- Die Frage “Would you like a login shell to be accessible over serial?” mit
No
beantworten - Die Frage “Would you like the serial port hardware to be enabled?” mit
Yes
beantworten - raspi-config mit
Finish
verlassen und rebooten
Da wir das Docker-Image von deCONZ verwenden, muss zunächst Docker installiert werden. Dies geschieht am Raspberry Pi bequem per automatisiertem Installationsskript, das sich mit dem folgenden Befehl starten lässt:
$ curl -sSL https://get.docker.com | sh
Um bei Docker-Befehlen nicht jedes Mal sudo eintippen zu müssen, wird der Benutzer (in dem Fall pi
der Gruppe Docker
hinzugefügt:
$ sudo usermod -aG docker pi
Nun könnte man noch testen, ob die Installation von Docker funktioniert hat, indem man einen Test-Container startet:
$ docker run --rm hello-world
Um den deCONZ-Container zu installieren, kann man den folgenden Befehl eingeben (nähere Informationen zu den einzelnen Optionen finden sich auf der Docker-Hub-Seite des deCONZ-Containers ).
$ docker run -d \
--name=deconz \
--net=host \
--restart=always \
-v /opt/deconz:/root/.local/share/dresden-elektronik/deCONZ \
--device=/dev/ttyAMA0 \
-e DECONZ_WEB_PORT=8080 \
-e DECONZ_WS_PORT=8443 \
-e DECONZ_VNC_MODE=1 \
-e DECONZ_VNC_PORT=8090 \
-e DECONZ_VNC_PASSWORD=mypassword \
marthoc/deconz
Einfacher ist es jedoch, wenn man Docker-Compose verwendet, da man darüber auch sehr einfach die Docker-Container aktualisieren kann. Unter Linux wird Docker-Compose – anders als unter Windows oder macOS – nicht automatisch mit Docker installiert, sodass die Installation noch nachgeholt werden muss. Am einfachsten geht dies über die Installation aus den Paketquellen des Systems, wobei beachtet werden sollte, dass dies meistens nicht die aktuellste Version von Docker-Compose ist. Für unsere Zwecke reicht diese Installation jedoch aus.
$ sudo apt install docker-compose
Mit dem folgenden Befehl kann man überprüfen, welche Version installiert worden ist:
$ docker-compose --version
Anschließend muss eine docker-compose.yml
-Datei angelegt werden, die alle Informationen zum Docker-Container enthält. Diese Datei könnte z. B. so aussehen:
version: "2"
services:
deconz:
image: marthoc/deconz
container_name: deconz
network_mode: host
restart: always
volumes:
- /opt/deconz:/root/.local/share/dresden-elektronik/deCONZ
devices:
- /dev/ttyAMA0
environment:
- DECONZ_WEB_PORT=8080
- DECONZ_WS_PORT=8443
- DEBUG_INFO=1
- DEBUG_APS=0
- DEBUG_ZCL=0
- DEBUG_ZDP=0
- DEBUG_OTAU=0
- DECONZ_VNC_MODE=1
- DECONZ_VNC_PORT=8090
- DECONZ_VNC_PASSWORD=mypassword
Um nun, die aktuelle Version des deCONZ-Containers zu beziehen oder darauf zu aktualisieren, gibt man den folgenden Befehl im Terminal ein.:
$ docker-compose pull
Anschließend kann man den Docker-Container mit dem folgenden Befehl starten:
$ docker-compose up -d
Das -d
am Ende bedeutet, dass der Container im Hintergrund läuft. Mit dem folgenden Befehl kann man den Container wieder stoppen, wenn man z. B. ein Update installieren möchte:
$ docker-compose down
deCONZ-Installation unter Hass.io
Unter Hass.io kann deCONZ einfach als Add-on aus dem offiziellen Add-on-Store installiert werden. Hierbei ist nur zu beachten, dass die korrekte Adressierung des ZigBee-Moduls erfolgt. Für das RaspBee-Modul sieht diese wie folgt aus:
{
"device": "/dev/ttyAMA0"
}
Erste ZigBee-Geräte hinzufügen oder aus einem Backup wiederherstellen
Nach der Installation ist deCONZ unter der IP-Adresse des Raspberry Pi auf Port 8080 erreichbar.
Beim Hinzufügen von ZigBee-Geräten hilft ein Einrichtungsassistent. Grundsätzlich muss man je nach ZigBee-Gerät, das hinzugefügt werden soll im Zweifel im Handbuch des Gerätes nachsehen, wie dieses in den Paarungsmodus versetzt wird. deCONZ sucht dann selbständig nach verfügbaren Geräten und fügt diese automatisch hinzu.
Möchte man ein vorhandenes deCONZ-Backup zurückspielen, kann dieser Schritt übersprungen werden, indem in der Adressleiste folgendes eingegeben wird:
http://hassbian.local:8080/pwa/index.html
Mit Klick auf das Hamburger-Menü oben links und anschließendem Klick auf den Menüpunkt Gateway
kann man sehen, ob das RaspBee-Modul korrekt erkannt wurde. Hier sollte nun unter anderem die deCONZ-Version und die Firmware zu sehen sein.
deCONZ in Home Assistant verfügbar machen
Um die per deCONZ hinzugefügten ZigBee-Geräte auch in Home Assistant sehen und verwenden zu können, muss man deCONZ mit Home Assistant verknüpfen. Dies geschieht über Home Assistant, indem man in der Seitenleiste Einstellungen
und dann Integrationen
auswählt. Hier findet sich das deCONZ Zigbee Gateway. Klickt man auf Konfigurieren
, wird man aufgefordert, das deCONZ-Gateway zu entsperren, um eine Verbindung zwischen Home Assistant und deCONZ zu erreichen.
Hierzu meldet man sich bei deCONZ an und geht über das Hamburger-Menü oben links auf Gateway
und hier auf Erweitert
. Nun hat man die Möglichkeit, das Gateway mit einer externen Anwendung (in unserem Fall Home Assistant) zu verbinden, indem man auf App verbinden
klickt. Anschließend wechselt man zurück zu Home Assistant und klickt auf SUBMIT
.
Es folgt eine Abfrage, ob auch virtuelle Sensoren (z. B. der virtuelle Tageszeitsensor von deCONZ) und deCONZ-Gruppen (d. h. beispielsweise Beleuchtungsgruppen, die man über die deCONZ-Oberfläche angelegt hat) zu Home Assistant importiert werden sollen.
War die Verknüpfung erfolgreich, sollte nun das deCONZ-Gateway oben unter den konfigurierten Integrationen erscheinen und die mit dem RaspBee verbundenen ZigBee-Geräte auch in Home Assistant verfügbar sein.