Inbetriebnahme Zigbee2MQTT in Docker - Schritt fĂŒr Schritt

 

Zigbee2MQTT ist eine Open-Source Zigbee-Bridge welche sich, dank dem Netzwerkprotokoll MQTT, leicht in bestehende Smarthome-Lösungen integrieren lÀsst. Als Beispiel kann Zigbee2MQTT kombiniert mit MQTT - Broker  Mosquitto und Home-Assistant Daten der Zigbee-GerÀte erfassen, anzeigen, aufzeichnen und diese steuern. Das hier beschriebene Setup verwendet Docker als Basis. Herstellerseite: https://www.zigbee2mqtt.io

Wie der Name schon sagt, wird fĂŒr das Setup ein MQTT-Broker vorausgesetzt: siehe:  MQTT - Broker  Mosquitto, bzw. fĂŒr das komplette Setup siehe: Home-Assistant Docker Conbee 2 und Zigbee2MQTT / deCONZ.

Docker-Container mit Zigbee2MQTT starten

Ich habe Home-Assistant in Docker gestartet, daher kann Zigbee2MQTT nicht ĂŒber den AddOn Store installiert werden. Um Zigbee2MQTT dennoch zu starten, kann folgendes Docker-Image verwendet werden: "koenkk/zigbee2mqtt". Aktuelle Zigbee2MQTTVersion: 1.35.3 (gefunden: 22.02.2024)

Docker Basics

Docker ermöglicht es, Services oder Applikationen per Befehl in einem sogenannten Container zu starten.
Ein Container ist eine vom Betriebssystem (OS) unabhÀngige isolierte Umgebung:
Beim ersten Start eines Containers, lÀdt Docker selbststÀndig alle notwendigen Quellen
aus dem Internet.
Docker kann unter Windows, macOS oder einer Linux-Distribution installiert werden,
siehe auch: Docker
Nachdem Zigbee2MQTT meist in Kombination mit anderen Docker-Containern betrieben wird, bietet sich Docker-Compose an, da in der yml-Datei mehrere Container kombiniert werden können. Hier fĂŒrs Erste die docker-compose.yml-Datei rein fĂŒr Zigbee2MQTT:
[+]
version: "3"
services:
  zigbee2mqtt:
      container_name: zigbee2mqtt
      restart: always
      image: koenkk/zigbee2mqtt
      volumes:
        - ./zigbee2mqtt-data:/app/data
        - /run/udev:/run/udev:ro
      ports:
        - 83:8080
      environment:
        - TZ=Europe/Vienna

Das Beispiel verwendet Bind-Mounts und keine Docker Volumes fĂŒr das permanente Speichern der Daten. Siehe: Docker Daten speichern: Docker Volumes vs. Host-Ordner

Der Docker-Container wird nach dem Anlegen der Datei "docker-compose.yml" mit dem Befehl "docker-compose up" gestartet.

Beim ersten Start legt Zigbee2MQTT eine configuration.yaml-Datei im Ordner zigbee2mqtt-data an. In der Datei kann der Hostname, Benutzername und das Kennwort des MQTT-Broker angegeben werden. Zudem muss bei einer neuen Installation der Zugriff auf den ZigBee-USB-Stick angepasst werden.

[+]
# Home Assistant integration (MQTT discovery)
homeassistant: true

# 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://mqtt'
  # MQTT server authentication, uncomment if required:
  user: mqtt
  password: ???xx

# Serial settings
serial:
  # Location of CC2531 USB sniffer
  port: /dev/ttyACM0
  
# Enable the Zigbee2MQTT frontend
frontend:
  port: 8080
# Let Zigbee2MQTT generate a new network key on first start
advanced:
  network_key: GENERATE

Die komplette Docker-Compose-Datei mit vorgeschaltetem LetsEncrypt Reverse Proxy,  MQTT - Broker  Mosquitto und Home-Assistant habe ich auf der folgenden Seite notiert: docker-compose.yml fĂŒr Zigbee2MQTT, MQTT und HomeAssistant

Nach dem Start kann die WeboberflÀche mit dem in der Konfig-Datei angegebenen Port im Browser aufgerufen werden:

WeboberflÀche

Beim ersten Start ist das Anlernen fĂŒr alle GerĂ€te aktiv, entsprechend registrieren sich diese automatisch nach einem Reset oder beim Aktivieren des Verbindungsmodus. Beim Einsatz des MQTT - Broker und Home-Assistant werden die GerĂ€te mit folgender Einstellung automatisch auch in Home-Assistant angelegt: "Home Assistant integration"

Damit nicht jeder im WLAN auf die Verwaltung von Zigbee2MQTT zugreifen kann, sollte in den Einstellungen ein Authentifizierungstoken gesetzt werden. 

Authentifizierung - Token

Das Frontend besitzt keine Benutzerverwaltung, als Absicherung kann lediglich ein Token hinterlegt werden:

Der Token muss nach dem Aktivieren fĂŒr den Zugriff auf die WeboberlĂ€che im Browser angegeben werden:

Zigbee - Bindungen (Binding)

Zugegeben, habe ich es mit deConz und Phoscon bisher nicht geschafft GerĂ€te, wie den Philips Dimmer Switch direkt mit einem Licht zu verbinden. Schuld war im Nachhinein, denke ich, nicht die umstĂ€ndliche OberflĂ€che von deConz, sondern die Tatsache, dass ein Schalter vor dem Verbinden mit einem Licht vom Coordinator getrennt werden muss: Dieses Licht ist mir erst jetzt mit Zigbee2MQTT aufgegangen. Das Zigbee2MQTT-Webfrontend ist hier eindeutig wesentlich ĂŒbersichtlicher und nach dem Trennen des Coordinators konnte ich zuvor angelegte Gruppen bestehend aus mehreren Lampen ganz einfach mit einem Schalter verbinden. Der Schaltvorgang funktioniert nach dem Binding auch wenn das Zigbee-Gateway komplett ausgeschaltet ist und trĂ€gt neben einer schnellen Reaktion wesentlich zur StabilitĂ€t bei.

Gruppen anlegen

Direkt ohne Gateway verbinden

Die Schalter können, wie beschrieben,  in "Bindungen" vom Coordinator (Zigbee-Gateway) getrennt und im Anschluss mit bestimmten GerÀten oder Gruppen verbunden werden:

Firmware

FĂŒr bestimmte GerĂ€te schlĂ€gt Zigbee2MQTT neue Firmwareversionen vor und kann diese bei Bedarf installieren:

Nicht unterstĂŒtzt: der Yagusmart Zigbee Smart Vorhangschalter

Sollte ein GerĂ€t nicht unterstĂŒtzt werden, kann dies vorerst trotzdem verbunden und mittels einer externen Konverterdatei eingebunden werden:

Dazu kann eine Datei mit der Endung .js im Daten-Ordner von Zigbee2MQTT angelegt werden:

 Um die Aktionen des GerÀtes sichtbar zu machen, kann in der configuration.yml-Datei der Log-Level auf "debug" gesetzt werden.

advanced:
  log_level: debug
...
external_converters:
  - FB56+CUR17SB2.2.js

Beim BetÀtigen des Schalters meldet sich dieser damit im Log:

Debug Received Zigbee message from 'Markise', type 'attributeReport', cluster 'genOnOff', data '{"onOff":0}' from endpoint 1 with groupID null
Debug No converter available for 'FB56+CUR17SB2.2' with cluster 'genOnOff' and type 'attributeReport' and data '{"onOff":0}'
Debug Received Zigbee message from 'Markise', type 'attributeReport', cluster 'genOnOff', data '{"onOff":1}' from endpoint 1 with groupID null
Debug No converter available for 'FB56+CUR17SB2.2' with cluster 'genOnOff' and type 'attributeReport' and data '{"onOff":1}'

 

Ich konnte daraus noch nicht wirklich rauslesen, wie die .js-Datei aussehen muss damit der Schalter funktioniert, dafĂŒr habe ich aber im Internet ein Beispiel fĂŒr einen Ă€hnlichen Schalter gefunden und dieses verwenden können:

[+]
const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const extend = require('zigbee-herdsman-converters/lib/extend');
const e = exposes.presets;
const ea = exposes.access;

const definition = {
    zigbeeModel: ['FB56+CUR17SB2.2'],
    model: 'FB56+CUR17SB2.2', 
    vendor: 'Feibit Co.Ltd', 
    description: 'Smart Zigbee 3.0 curtain controller',
    fromZigbee: [fz.tuya_cover_options],
    toZigbee: [tz.cover_state],
    whiteLabel: [{vendor: 'Zemismart', model: 'ZW-EU-01', description: 'Smart light relay - 1 gang'}],
    meta: {configureKey: 2},
    exposes: [e.cover_position(), exposes.enum('moving', ea.STATE, ['UP', 'STOP', 'DOWN'])],
    configure: async (device, coordinatorEndpoint, logger) => {
        const endpoint1 = device.getEndpoint(1);
        await reporting.bind(endpoint1, coordinatorEndpoint, ['genOnOff']);
        await reporting.onOff(endpoint1);
        await reporting.bind(endpoint1, coordinatorEndpoint, ['closuresWindowCovering'])      
        device.powerSource = 'Mains (single phase)';
        device.type = 'EndDevice';
        device.save();
    },
};

module.exports = definition;

Quelle: github.com/Koenkk/zigbee-herdsman-converters/issues/2489 bzw. github.com/Koenkk/zigbee-herdsman-converters/blob/master/devices/nue_3a.js

Übersicht Mesh-Netzwerk

Der Reiter "Karte" zeigt das Zigbee-Mesh-Netzwerk grafisch an. FĂŒr einen besseren Überblick verschwinden beim Klick auf ein GerĂ€t anderen Verbindungen im Hintergrund.

Fazit

Verglichen mit deConz und Phoscon finde ich die Verwaltung der GerĂ€te in Zigbee2MQTT wesentlich ĂŒbersichtlicher. Alle Funktionen sind gesammelt in einer OberflĂ€che vorhanden und können bei Bedarf auch von einem Smartphone bedient werden. FĂŒr eine Integration in HomeAssistant, siehe: Home-Assistant Docker Conbee 2 und Zigbee2MQTT / deCONZ und Zigbee2MQTT vs deCONZ und Phoscon.   Siehe auch: ZHA Inbetriebnahme und Wechsel von Zigbee2MQTT

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE fĂŒr deine Bewertung!

Aktualisiert: 23.02.2024 von Bernhard | Translation English |🔔 | Kommentare:0

➚ Zigbee2MQTT vs deCONZ und Phoscon | ➊ Smart Home | Conbee 2: Phoscon deCONZ - Docker Inbetriebnahme | Review ➚
➩ Container | sichere https Verbindung: Traefik Reverse Proxy + Let®s Encrypt ➹
➊ ZigBee | Conbee 2: Phoscon deCONZ - Docker Inbetriebnahme | Review ➚

Top-Artikel in diesem Bereich


WasserzĂ€hler ĂŒberwachen, Verbrauch aufzeichnen: ESP32-Cam

Vorab schon mal ein herzliches Dankeschön an die Macher des "AI-on-the-edge-device" Digitizer. Das Projekt ermöglicht das Digitalisieren des Wasserverbrauchs einer analogen Wasseruhr mit einer 10 € billigen ESP32-Cam. Wie das genau funktioniert, beschreibe ich in diesem Artikel.


Smart-Home-Plattform - Systeme: ioBroker vs. Home-Assistant

Meine Empfehlung, mĂŒsste ich mich zwischen ioBroker und Home Assistant entscheiden, wĂŒrde zugunsten von Home Assistant fallen. Mit Home Assistant fĂ€llt der Start wesentlich leichter und dank der zahlreichen Plugins kann Home Assistent allen BedĂŒrfnissen angepasst werden


ioBroker installieren - Docker

Mit ioBroker können verschiedene Automatisierungslösungen oder GerÀte in einem System zusammengefasst werden. Um bestimmte Gateways oder GerÀte ansprechen zu können, werden in ioBroker verschiedene Adapter verwendet.

Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details