RaspBee ZigBee-Bridge einrichten

RaspBee in Verbindung mit deCONZ und Home Assistant auf dem Raspberry Pi einrichten

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.

/img/home_assistant/hassbian_ssh_1.png

Erste ssh-Verbindung mit Hassbian

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:

  1. raspi-config mit dem Befehl sudo raspi-config öffnen
  2. Interfacing Options auswählen
  3. Serial auswählen
  4. Die Frage “Would you like a login shell to be accessible over serial?” mit No beantworten
  5. Die Frage “Would you like the serial port hardware to be enabled?” mit Yes beantworten
  6. 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
/img/home_assistant/docker_installation_test.png

Test, ob die Installation von Docker funktioniert hat

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.

/img/home_assistant/deCONZ_setup.png

deCONZ-Startseite der Phoscon Web App

/img/home_assistant/deCONZ_setup_1.png

Vergabe eines deCONZ-Passwortes

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.

/img/home_assistant/deCONZ_setup_2.png

Hinzufügen erster ZigBee-Geräte über die Phoscon Web App

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.

/img/home_assistant/deCONZ_setup_4.png

Anzeige der installierten deCONZ-Version und RaspBee-Firmware

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.

/img/home_assistant/homeassistant_deCONZ_integration.png

deCONZ in Home Assistant integrieren

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.

/img/home_assistant/deCONZ_integration.png

Erfolgreiche deCONZ-Integration

Die folgenden Beiträge könnten Dich auch interessieren: