Eigenes Zigbee-Gateway bauen

Wer kein Xiaomi Gateway möchte oder auch Philips Hue und IKEA TRÅDFRI in sein SmartHome integrieren möchte aber auf drei Gateways verzichten möchte, der kann sich auf Basis eines Raspberry Pi 3 ein eigenes Zigbee-Gateway bauen.

Eine Alternative zur der Lösung hier, habe ich im Beitrag „Zigbee Gateway ohne Cloud mit dem Phoscon ConBee II von dresden elektronik“ beschrieben.
Eine Übersicht mit kompatiblen Zigbee-Geräten findet ihr hier.

 

Was benötigt man?

Nebe einer MicroSD-Karte (>=16GB) benötigt man folgende Dinge:

Raspberry Pi 3 Model B
Raspberry Pi
42,77€ Amazon *
Stand: 01.01.2021 16:49
48,00€ Banggood *
Stand: 01.07.2020 14:56
USB Zigbee Sniffer
CC2531
Preis prüfenAliExpress *
8,54€ Banggood *
Stand: 01.07.2020 13:37
9,19€ Amazon *
Stand: 01.01.2021 16:04
TI CC-Debugger
Preis prüfenAliExpress *
20,25€ Amazon *
Stand: 01.01.2021 16:52
Downloader-Kabel
Preis prüfenAliExpress *
3,83€ Amazon *
Stand: 01.01.2021 16:07

 

Schritt 1: Raspbian flashen

Als erstes muss Raspbian auf die MicroSD-Karte geflasht werden. Raspbian ist ein Linux-Betriebssystem auf Basis von Debian, welches für den Raspberry vorkonfiguriert wurde. Dazu laden wir erst einmal das Image von der Webseite herunter. Anschließend laden wir Etcher herunter und installieren es. Etcher ist eine Software zum Flashen von Images auf SD-Karten. Im nächsten Schritt verbinden wir unsere MicroSD-Karte mit dem PC und starten Etcher. Dort wählen wir das Raspbian Image (.img oder .zip Datei) und die SD-Karte aus auf die das Image geflasht werden soll. Zu guter Letzt noch auch „Flash!“ klicken und das wars. Etcher schreibt nun das Image auf die MicroSD-Karte.

Schritt 2: Inbetriebnahme

Nachdem Raspbian geflasht wurde braucht man die MicroSD-Karte nur noch in den MicroSD-Slot des Raspberry einzuschieben und den Raspberry anzuschließen. Es empfiehlt sich den Raspberry an einen Monitor oder Fernseher (mittels HDMI) sowie Maus und Tastatur anzuschließen. Nachdem der Raspberry an den Strom angeschlossen wurde fängt er sofort an zu booten. Sobald er hochgefahren ist durchläuft man beim erstmaligen Booten einen Installations-Wizzard. Anschließend kann man sich auf dem System anmelden.

Schritt 3: CC2531 flashen

Um den CC2531-Stick nutzen zu können müssen wir ersteinmal eine neue Firmware aufspielen. Dazu brauchenwir die Software „SmartRF Flash programmer“ (nicht V2). Um die Software herunterladen zu können muss bei Texas Instruments erst ein Account erstellt werden. Die Software und der Account sind kostenlos.

Unter Windows müssen noch die CC-Debugger Treiber installiert werden. Bevor wir weiter machen müssen wir sicherstellen, dass der Treiber korrekt installiert ist.

Als nächstes verbinden wir den CC-Debugger mit dem Downloader-Kabel und das Downloader-Kabel mit dem CC2531. Sowohl der CC-Debugger als auch der CC2531 müssen jetzt per USB an den PC angeschlossen werden. Sollte die LED vom CC-Debugger rot leuchten drücken wir auf den Reset-Button und die LED müsste grün werden. Sollte es dennoch Probleme geben, gibt es in dem CC-Debugger User Guide ein Troubleshooting Kapitel.

Jetzt müssen wir nur noch die passende Firmware herunterladen und mit dem SmartRF Flash Programmer flashen.

Unter Linux/MacOS ist das Ganze etwas einfacher. Als erstes müssen wir die Abhängigkeiten mit dem jeweiligen Paketmanager installieren:

  • Ubuntu/Debian: libusb-1.0, libboost-all-dev
  • Fedora: boost-devel, libusb1-devel
  • MacOS: libusb boost pkgconfig

Anschließend klonen wir das CC-Tool Repository und kompilieren die Software:

git clone https://github.com/dashesy/cc-tool.git
cd cc-tool
./bootstrap
./configure
make

Jetzt nur noch die Firmware herunterladen und flashen.

sudo ./cc-tool -e -w CC2531ZNP-Prod.hex

Schritt 4: nodejs

Auf unserem Raspberry müssen wir jetzt noch nodejs installieren um die zigbee2mqtt Software nutzen zu können. Hierfür nutzen wir nodejs in der Version 8.x. Dazu müssen wir aber erst eine neue Paketquelle hinzufügen und anschließend nodejs installieren:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

Jetzt überprüfen wir noch ob die korrekten Versionen installiert sind:

node --version # Sollte > 8.X.X sein
npm --version # Sollte > 5.X.X sein

Schritt 5: zigbee2mqtt

zigbee2mqtt ist sehr simpel installiert. Hierzu klonen wir das Git-Repository in den /opt-Ordner und installieren die Abhängigkeiten per npm und fertig.

sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
sudo chown -R pi:pi /opt/zigbee2mqtt

cd /opt/zigbee2mqtt
npm install

Schritt 6: zigbee2mqtt konfigurieren

Wir müssen jetzt zigbee2mqtt noch mitteilen wie es unseren MQTT-Broker erreichen kann und wie das Topik heißen soll. Dazu öffnen wir die Datei configuration.yaml mit dem Editor unserer Wahl z.B.:

vim /opt/zigbee2mqtt/data/configuration.yaml

Der Inhalt der Datei muss dann an die eigenen Anforderungen angepasst werden. Standardmäßig sieht der Inhalt der Datei wie folgt aus:

# Home Assistant integration (MQTT discovery)
homeassistant: false

# allow new devices to join
permit_join: true

# MQTT settings
mqtt:
  # MQTT base topic for zigbee2mqtt MQTT messages
  base_topic: zigbee2mqtt
  # MQTT server URL
  server: 'mqtt://localhost'
  # MQTT server authentication, uncomment if required:
  # user: my_user
  # password: my_password

# Serial settings
serial:
  # Location of CC2531 USB sniffer
  port: /dev/ttyACM0

Schritt 7: Zigbee Geräte am Zigbee-Gateway anlernen

Um die Zigbee-Geräte nutzen zu können muss ein Pairing stattfinden. Das heißt, dass sowohl der Stick als auch das Zigbee-Gerät in den Pairing-Zustand versetzt werden müssen. Im Wiki von zigbee2mqtt findet sich eine Anleitung wie man die Geräte der verschiedenen Hersteller anlernen kann.

Zigbee ohne Cloud

Jetzt sind wir soweit, dass wir die Zigbee-Geräte abfragen und steuern können indem wir die Zigbee-Signale in MQTT umwandeln und zurück. Zum Beispiel die Aqara Tür und Fenster Sensoren oder den Aqara Cube. Für MQTT gibt es Schnittstellen zu den gängigsten OpenSource SmartHome Diensten wie ioBroker, Home-Assistant und openHAB2. Damit sind wir nicht mehr auf die Hersteller Cloud der einzelnen Hersteller angewiesen und haben die volle Kontroller über unser Smart Home.

Weitere Geräte die zu Zigbee kompatibel sind und deren Bezugsquellen findet ihr unter dem folgenden Link: Zigbee-Geräte.

 

21 Antworten auf „Eigenes Zigbee-Gateway bauen“

    1. Du kannst folgendes versuchen:

      - alias: 'Cube'
        trigger:
          platform: mqtt
          topic: 'zigbee/aqara_cube'
        condition:
          condition: template
          value_template: "{{ 'fall' == trigger.payload_json.action }}"

      Also direkt über MQTT den Status abfragen und in der condition dann auf die Action überprüfen.

      Hoffe das hilft Dir weiter.

  1. Ich gerade per Google über Deine tolle Anleitung gestolpert.

    Frage dazu: Kann man auf diesen Stick eine Kombination für XIAOMI und IKEA Tradfri flashen, um schließlich EINEN Hub für BEIDE Systeme zu erhalten?

  2. Kann ich den zigbee2mqtt einmal für iobroker konfigurieren und gleichzeitig auch mit fhem?? Oder geht beides nicht weg /dev/serial/by-id………

    Gruss

    1. Das müsste gehen, da du über MQTT darauf zugreifst. Sowohl iobroker als auch FHEM haben Schnittstellen zu MQTT. Was du aber beachten musst, ist, dass zigbee2mqtt nur einmal gestartet wird.

    1. Du musst erst ./bootstrap ausführen, dann geht auch ./configure. Diese Anleitung hier ist leider nicht sooo 100%ig aktuell.
      /Andreas

  3. Guten Abend,

    habe mich durch die Linux-Orgie gekämpft – irgendwann muss ich es ja mal lernen. Firmware ist runtergeladen und entpackt. Beim Aufruf von sudo ./cc-Tool … kommt aber nur die Fehlermeldung:
    „CC Debugger device not found“.
    Es ist ein Raspi 1, an den ich alles angeschlossen habe – sowohl Debugger, als auch Zigbee-USB-Stick leuchten brav grün. Unter der Meldung sind auch keine hilfreichen Tipps im Netz zu finden.

    Können Sie helfen?
    Danke – ccf

    1. Hallo,

      ich habe auch einweig recherchiert und auch nur sehr wenig gefunden. Taucht denn das Gerät auf, wenn Sie „lsusb“ ausführen?

      Beste Grüße

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert