zigbee

ZIGBEE Bridge in FHEM integrieren

Bei Zigbee handelt es sich inzwischen um eines der beliebtesten SmartHome Funkprotokolle. In der Regel werden hier entsprechende Bridges/Hubs benötigt, die nicht gerade als günstig bezeichnet werden
können. Aber es geht auch anders, wie der nachstehende Artikel aufzeigt.

Mit zigbee2mqtt steht eine Möglichkeit zur Verfügung, mit der man unter Zuhilfenahme eines ZigBee USB Sticks entsprechende Geräte in gängige SmartHomesysteme integrieren kann. Eine Kommunikation basiert dann auf meinem inzwischen sehr liebgewonnenen MQTT Protokoll.

Alles was man dafür benötigt ist ein entsprechender zigbee Stick, ein MQTT Broker sowie die Automatisierungs- / SmartHomelösung seiner Wahl.

Bei der Auswahl des Sticks, sollte man jedoch ein wenig Vorsicht walten lassen. Nicht jeder Stick kommt mit allen ZigBee Devices zurecht. Eine gute Hilfestellung erhält man auf den
Webseiten des zigbee2mqtt Projektes. Hier ist auch die Vorgehensweise zur Bereitstellung des notwendigen ZigBee2MQTT Dienstes umfassen beschrieben.

Ich persönlich habe mich auf Grund meiner durchweg guten Erfahrungen im Docker Umfeld für eben diese Bereitstellungsart entschieden.

Die erforderlich Docker Files bzw. Compose Dateien kann man sich bequem auf der Projektseite abschauen und um seine Anforderungen erweitern. Für den schnellen Start reicht reicht es jedoch auch aus,
die Beispielfiles 1 zu 1 zu verwenden.

Der zigbee Stick


Welche Sticks unterstützt werden, kann man wie bereits erwähnt auf der Projektwebseite einsehen. Empfehlen kann ich den ZBDONGLE-E (Chipset EFR32MG21 + CH9102F). Dieses konnte ich in meiner Umgebung im Dockersetup umstandslos in Betrieb nehmen.
Dieser kommt bereits mit der entsprechenden Firmware und muss nicht geflasht werden (Updates natürlich ausgenommen).
Angemerkt seinen dabei die Hinweise zur ggf. erforderlich werdenden Anpassung der Berechtigung zum System-/Userzugriff auf den „seriellen“ Port des Hostsystems.

Beispiel Compose File für Dockerumgebung

version: '3.3'
services:
zigbee2mqtt:
container_name: zigbee2mqtt
image: koenkk/zigbee2mqtt
restart: unless-stopped
volumes:
- /opt/containers/zigbee2mqtt/data:/app/data
- /run/udev:/run/udev:ro
ports:
# Frontend port
- 8080:8080
environment:
- TZ=Europe/Berlin
devices:
# Make sure this matched your adapter location
- /dev/serial/by-id/usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_202308

Adapter Port auf dem Host ermitteln

Auf dem Host, an welchen der USB Stick gesteckt wird, führt man folgenden Befehl aus, um den Port zu ermitteln:

ls -l /dev/ttyACM0

Hier sollte dann, wenn alls passt, eine Ausgabe in folgender Art erfolgen:
crw-rw—- 1 root dialout 166, 0 May 16 19:15 /dev/ttyACM0

Sollte es zu Problemen kommen und ein Mapping nicht gelingen, kann es erforderlich sein, den kompletten Devicepfad anzugeben. Dafür schauen wir uns die Angaben im Pfad
/dev/serial/by-id an.

Config File des ZigBee2MQTT Dienstes

Sind wir der Anleitung gefolgt und haben entsprechend auch die Compose Datei wie oben gezeigt verwendet, haben wir das Datenlaufwerk des Containers gemappt und die Daten stehen
auch nach einem Containerneustart zur Verfügung.
Im Editor kann / sollte eine Configuration.yaml wie folgt aussehen:

homeassistant: false
permit_join: true
mqtt:
base_topic: zigbee2mqtt
client_id: zigbee_fhem
server: mqtt://DEINMQTTBroker:1883
keepalive: 60
reject_unauthorized: false
version: 4
frontend:
port: 8080
serial:
adapter: ezsp
port: /dev/ttyACM0
advanced:
homeassistant_legacy_entity_attributes: false

Gut zu wissen: Der Docker zigbee2mqtt Container startet und läuft nur dann, wenn alles sauber funktioniert hat und auch der angesteckte Adapter initialisiert werden konnte.
Ggf. unter serial um folgendes ergänzen, wenn ein ZBDONGLE-E zum Einsatz kommt:

adapter: ezsp

Die Angabe des Server Attributes ist abhängig davon, ob wir bereits einen Broker im Einsatz haben oder aber nicht. Da ich in meinem Setup bereits einen FHEM MQTT Server am Start haben, kann hier
diesen als server angeben.

Vorteil: Nach erfolgreichem Start des ZigBee2MQTT Dienstes wird in FHEM direkt das erforderlich Device (MQTT2DEVICE) erstellt. Vorausgesetzt natürlich, wir haben autocreate aktiv gesetzt.

Device Templates:

FHEM bzw. die Devices liefern eine Vielzahl an Attribute Templates mit. Daher verwundert es nicht, dass hier auch zahlreiche zigbee2mqtt Templates zur Verfügung stehen.
Für das soeben erstellte Device, wählen wir im Set Befehl das BRIDGE Template aus. Alle notwendigen Attribute werden dann automatisch gesetzt und wir können direkt
durchstarten.

Geräte anlernen

Nun können auch schin die ersten ZigBee Geräte angelernt werden. Wie sich die jeweiligen Devices in den Pairing Modus bringen lassen ist unterschiedlich. Hier sollte man dann ggf. das Gerätehandbuch zur Hilfe nehmen.

Ich für meinen Teil beschränke mich aktuell auf die „günstigeren“ Aquara Fensterkontakte, um meine Heizungssteuerung zu optimieren.
In der configuration.yaml haben wir den Abschnitt „frontend:“ definiert. Dieses macht eine WebGUI des zigbee2mqtt Dienstes auf dem Port 8080 verfügbar. Dieses ist durch aus hilfreich.

Hier kann man Logs einsehen, Geräte umbenennen usw..
Wurde ein Gerät angelernt, wird wieder automatisch ein entsprechendes Geräte in FHEM angelegt (autocreate aktiv). Dieses Device kann man dann ebenso mit einem Attibute Template versehen.
Im Falle der Fensterkontakte, wählt man hier zigbee2mqtt_ContactSensor. Alles notwendige für einen reibungslosen Betrieb wird dann gesetzt (Attributes).

Nun steht unserer geistigen Freiheit nichts mehr im Wege und wir können den Geräte in unsere Gebäudesteuerung durch Logiken, Trigger etc. einbinden.

Ein fertig eingebundenes / gebridgtes Device stellt sich in FHEM wie folgt dar:

zigbee Device

Die GUI zeigt sich folgendermassen:

zigbee2mqtt GUI

Kostenpunkt

Der notwendige stick schlägt mit rund 25€ zu buche.

Devices bekommt man bereits für unter 10 €.

Aquara Fensterkontakte liegen aktuell bei rund 15€.

5 Gedanken zu „ZIGBEE Bridge in FHEM integrieren“

  1. Komisch erklärt alles in der Anleitung.
    Du springst von Docker Config zu Fhem Config hin und her, ohne korrekt die Einbindung in Fhem zu beschreiben.

    So leider nicht hilfreich.

    1. Jetzt musste ich doch selbst mal schauen. Ist ja schon ein paar Tage her ;-).
      Wie im Artikel beschrieben, beziehe ich mich auf Docker. Daher auch der entsprechende Bereich zur Bereitstellung des Containers.
      Wenn die Konfiguration des MQTT2ZigBee Dienstes so wie beschrieben vollzogen und der Broker (in diesem Fall FHEM selbst) gesetzt ist, richtet sich das Ganze quasi „von selbst“ ein.
      Vorausgesetzt, autocreate von Geräten in FHEM ist aktiv.
      Jeder weitere angelernte Gerät, erstellt sich im Anschluss ebenfalls automatisch in FHEM.
      Wenn Du tiefergehende Informationen benötigst, lass es mich wissen. 🙂

      1. Danke erstmal für die schnelle Antwort 🙂

        Der Punkt hier ist mir noch unklar:
        Config File des ZigBee2MQTT Dienstes
        Wo lege ich das Config File ab, wenn ich den Container laut Anleitung mit gemappten Volumes und dem Device erstellt habe?

        Und wie sage ich Fhem, das er jetzt die neuen Devices vom neuen Docker Server empfangen kann? Ich verstehe das es über autocreate funktionieren sollte. Ich habe bei mir einen eigenen MQTT Docker Server laufen, über den die ganze Kommunikation läuft.

        1. Ja genau. Das Config File liegt im data Ordner des im Container gemappten Laufwerkes. Das ist persistent und wird entsprechend vom zigbee2mqtt Dienst beim Start gelesen.
          Wie ich es verstehe, hast du also schon einen broker am Start. Dann brauchst natürlich keinen mehr in FHEM selbst.

          Die Kommunikation wäre in Deinem Fall dann: zigbee2mqtt<->Dein Broker<->FHEM.

          Was Du brauchst, ist dann einen MQTT2_CLIENT in FHEM, der sich mit Deinem vorhandenen Broker verbindet. Auf diesem Client aktivierst du dann autocreate complex.
          Ganz grob (in FHEM):
          define mqttIO MQTT2_CLIENT Deine.vorhandene.Broker.Ip:1883
          attr mqttIO clientId FHEM
          #attr mqttIO user mqttuser
          #attr mqttIO pass DeinPasswort
          attr mqttIO keepalive 60

          Dann: attr mqttIO autocreate complex
          Startet zigbee2Mqtt neu bzw.publiziert Daten an Deinen Broker, sollten die devices in fhem im Raum MQTT auftauchen.

          1. Ja super, so ähnlich habe ich es mir bereits ergoogelt.
            Bin halt in deiner Anleitung nicht weiter gekommen, weil da nicht expliziet drauf eingegangen wird wo das Config File liegt.

            Jetzt ist alles eingerichtet mit Fhem und z2mqtt

            Danke dir!

Schreibe einen Kommentar

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