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€.

Schreibe einen Kommentar

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