ZigBee Grundlagen und Übersicht
- Benötigte Hardware
- Raspberry Pi (ich verwende derzeit Raspberry OS Buster, möglicherweise ist folgende Dokumentation auch für andere Versionen erfolgreich)
- SONOFF Zigbee 3.0 USB Dongle Plus ZBDongle-P (zigbee2mqtt unterstützt noch eine Reihe weiterer ZigBee-Koordinatoren)
- Verwendete Software
- zigbee2mqtt
- Die Software ist OpenSource und unterstützt eine immense Vielzahl an ZigBee-Geräten. Die Bedienung ist wirklich sehr benutzerfreundlich.
- Vor Allem aber wird keine externe Cloud eines anderen Unternehmens verwendet, um die eigenen Geräte zu betreiben
- mosquitto
- Die Einrichtung und Anwendung von MQTT mit mosquitto habe ich in einem eigenen Beitrag dokumentiert. Ein MQTT-Server ist Voraussetzung.
- Raspberry OS (Buster)
- zigbee2mqtt
Was ist ZigBee und wozu brauchst du es?
Bei ZigBee handelt es sich um eine Spezifikation für drahtlose Netzwerke mit geringem Datenvolumen und geringem Stromverbrauch. Viele ZigBee-Geräte dienen untereinander als Relais-Stationen, also als Signal-Verstärker, automatisch und ohne weitere Konfiguration. Dadurch lässt sich das eigene Heim gut mit ZigBee vernetzen, ohne zusätzliche Repeater kaufen zu müssen.
Mittels ZigBee2MQTT lassen sich die Signale auf MQTT-Pfade umsetzen, welche wiederum mit einer SmartHome-Zentrale weiterverarbeitet werden.
Installation auf Raspberry Pi OS Buster (und anderen Debian-Derivaten)
Verbinde dich mittels SSH auf dein Raspberry Pi und verwende den Standardbenutzer „pi“.
# Aktualisieren der Apt-Quellen und Installieren der notwendigen Abhängigkeiten
sudo apt update && sudo apt -yf upgrade
sudo apt -yf install nodejs git make g++ gcc
# Einrichten von Node.js + required dependencies
sudo curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
# Vorbereitung und Installation von zigbee2mqtt
sudo mkdir /opt/zigbee2mqtt
sudo chown -R ${USER}: /opt/zigbee2mqtt
git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
npm ci --prefix /opt/zigbee2mqtt
Zunächst werden unter Raspberry OS die Quellen aktualisiert, das System auf den aktuellen Stand gebracht und die notwendigen Pakete installiert.
Derzeit existiert kein Paket in den Raspberry OS Quellen. Allerdings eine Menge anderer Installations-Alternativen, wie Docker oder als Add-Ons in SmartHome-Zentralen.
ls -l /dev/serial/by-id/
Danach musst du deinen ZigBee-Coordinator finden. Der USB-Stick, der das ZigBee-Netz steuern soll. Bei mir war er fertig vorgeflasht. Anstecken reichte. Ich habe ihn unter /dev/serial/by-id/ gefunden. Um Konflikte zu vermeiden, sollte er anhand seiner ID von zigbee2mqtt identifiziert werden. Das Gerät samt vollem Pfad, dass du mit obigem Befehl findest, trägst du in /opt/zigbee2mqtt/data/configuration.yaml ein.
# MQTT settings
mqtt:
base_topic: zigbee2mqtt
server: 'mqtt://localhost'
user:******* #Offensichtlich musst du hier deine konfigurierten MQTT-Benutzerdaten hier eintragen
password: ******* #Offensichtlich musst du hier deine konfigurierten MQTT-Benutzerdaten hier eintragen
client_id: Zigbee
# Serial settings
serial:
# Location of the adapter (see first step of this guide)
port: >-
/dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_**********-if00-port0
advanced:
network_key: GENERATE
frontend:
port: 8081 #Standardmäßig Port 8080, der war bei mir schon belegt
Beispiel meiner configuration.yaml bei Initialisierung der Software. Im laufenden Betrieb wird zigbee2mqtt hier noch weitere Ergänzungen vornehmen, die du über die Oberfläche einstellst.
npm start --prefix /opt/zigbee2mqtt
Du startest zigbee2mqtt und prüfst, ob es funktioniert. Es folgt nur noch der Autostart.
[Unit]
Description=zigbee2mqtt
After=network.target
[Service]
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
# Or use StandardOutput=null if you don't want Zigbee2MQTT messages filling syslog, for more options see systemd.exec(5)
StandardError=inherit
Restart=always
RestartSec=10s
User=pi
[Install]
WantedBy=multi-user.target
Unter /etc/systemd/system/zigbee2mqtt.service legst du obige Zeilen an.
sudo systemctl enable zigbee2mqtt.service
sudo systemctl start zigbee2mqtt
Du machst diesen neuen Service dem System bekannt und ggf. startest du ihn so.
Erste Schritte
Gib die Adresse deines Raspberry in deinen Browser ein und ergänze ihn durch den eben konfigurierten Port „:8081“.
Aktiviere den Suchmodus mit Klick auf „Anlernen aktivieren (Alle)“ und schalte ein unverbundenes ZigBee-Gerät ein. Es sollte gleich hier auftauchen.

Der Gerätename stellt auch den weiteren ZigBee-Pfad dar. Hier können „/“ verwendet werden, um Strukturen zu erzeugen. Für Hue-Lampen verwende ich hier mit Hinblick auf die MQTT best practices „ug/officeAlex/undef/lightBulb/Hue/WhiteAndColor/E27/[Netzwerk Adresse]“.
Unter „Logs“ kannst du direkt sehen, was jetzt konkret passiert.
Tatsächlich habe ich die ursprüngliche Hue Bridge vollständig ablösen können. zigbee2mqtt unterstützt alle von mir benutzten Funktionen, sowie OTA-Updates für die Leuchten. An dynamischen Szenen und Musik-Sensitivität arbeite ich noch.
Mittels „Gruppen“ lassen sich gleich mehrere Geräte zusammen ansprechen. Dies ersetzt „Räume“ und „Bereiche“, wie sie unter der Hue Bridge verfügbar waren.
Pingback: OpenHAB: Wenn man vergisst das Fenster zu schließen - Smarthome DIY - Heimautomatisierung selbst gemacht
Pingback: Zigbee IR Remote mit OpenHAB - Smarthome DIY - Heimautomatisierung selbst gemacht