Zigbee2MQTT in Proxmox installieren

Zigbee2MQTT ist ein genialer Dienst, um Zigebee-Geräte via MQTT im Smarthome einzubinden und über Home Assistant, Node Red und viele andere Plattformen zu steuern.

Für die Installation in Proxmox zu, gibt es im Grunde zwei Möglichkeiten:

  • Manuell in einem neuen oder bereits vorhanden Container
  • Deutlich schneller und einfacher per Script

Wir verwenden in diesem Tutorial das beliebte Skript von tteck, für die manuelle Installation hilft dir die offizielle Anleitung oder mein Guide für den Raspberry.

USB Adapter anschließen

  1. Verbinde den Zigbee USB Adapter (Conbee II, Sonoff, …) über einen freien USB-Port mit deinem Proxmox Server.
  2. Gehe in die Server-Konsole und such nach dem Stick
  3. Als Antwort sollte der Adapter mit Name und Port erscheinen, in meinem Fall ein ConBee II an ttyACM0
# USB Gateway suchen
ls -l /dev/serial/by-id
# Ausgabebeispiel
.... Jul  2 18:03 usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE266XXXX-if00 -> ../../ttyACM0

Script ausführen

Wurde der Adapter erfolgreich aufgelistet, können wir mit der Installation beginnen.

# Starte das Script
bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/zigbee2mqtt.sh)"

Wie bei allen Scripten von tteck, haben wir die Wahl zwischen automatischer und manueller Installation. Da wir meistens die Container ID und IP direkt festlegen möchte, ist der manuelle Weg die bessere Wahl. Die empfohlene Einstellungen sind:

  • Privileged mode: ja – erspart die manuelle Einbindung des USB-Sticks (USB Passthrough)
  • RAM: 1 GB
  • CPU: 1-2
  • Disk Size: mindestens 2 GB

Als Orientierung: Meine kleine Installtion auf dem Futro S740 mit ConBee II und 10 Zigbee-Geräten benötigt derzeit grob 140 MB Arbeitsspeicher, durchschnittlich 2 % CPU und knapp 2 GB.

Version auswählen

Im Laufe des Vorgangs werden wir nach der gewünschten Version von Zigbee2MQTT gefragt. Für den produktiven Einsatz ist ein „N“ für Nein bzw. einfach Enter, vermutlich die beste Entscheidung, ansonsten wähle „Y“, um die neuste Beta auszutesten.

# N oder Enter für den aktuellen Release, y für die Entwicklungsversion
Switch to Edge/dev branch? (y/N) 

Kurz darauf sollte das Setup dann auch fehlerfrei mit „Completed Successfully!“ enden und der Container gestartet in der Server-Ansicht erscheinen.

Zigbee2MQTT Konfiguration

  1. Wechsle in die Shell des neuen Containers
  2. Überprüfe, ob der Zigbee Adapter auch hier erscheint
  3. Kopiere den Namen des Adapters in die Zwischenablage oder temporär in einen Texteditor
  4. Öffne die configuration.yaml
# USB Gateway suchen
ls -l /dev/serial/by-id

# Config öffnen
nano /opt/zigbee2mqtt/data/configuration.yaml

configuration.yaml

In der noch sehr leeren Konfigurationsdatei gibt es drei besonders wichtige Punkte, den Rest einfach mit Hilfe der offiziellen Anleitung nach Bedarf anpassen.

Frontend aktivieren

Im einfachsten Fall reicht auch der Eintrag: „frontend: true“, du kannst aber auch einen anderen Port (Standard ist: 8080) wählen und das Interface mit einem Passwort absichern.

#Minimal
frontend: true
#oder
frontend:
  port: 8080
  auth_token: geheim

MQTT-Server

Die Mindestanforderung für die MQTT-Verbindung sind die Adresse des Servers und der Base-Topic.

mqtt: 
  base_topic: zigbee2mqtt
  server: 'mqtt://192.168.123.123:1883'

Adapter

Nun geht es zum Adapter: als Port nehmen wir /dev/serial/by-id/ + den vorhin gefunden Namen des USB-Dongles.

erial:
  port: /dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE266XXXX-if00
  adapter: deconz	#nur für ConBee II notwendig
  #adapter: ezsp    #für Sonoff Zigbee 3.0 USB Dongle Plus V2

Anstelle des Namens könnten wir auch direkt den Port angeben, z.B. port: /dev/ttyACM0 (solange sich dieser nicht durch irgendwelche Einstellung später noch ändern sollte).

Beispielkonfiguration

frontend: true
  port: 8080 #oder Wunschport
  
homeassistant: true # bei Bedarf

permit_join: false # keine Automatische Anmeldung von Zigbeegeräten erlauben

mqtt: # entsprechend Konfiguriren
  base_topic: zigbee2mqtt
  server: 'mqtt://192.168.123.123:1883'
  user: usr
  password: pwd
  keepalive: 60
  reject_unauthorized: true
  version: 4
  
serial:
  port: /dev/serial/by-id/usb-dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE266XXXX-if00
  adapter: deconz	#nur für ConBee II notwendig
  #adapter: ezsp    #für Sonoff Zigbee 3.0 USB Dongle Plus V2
  
advanced:
  pan_id: GENERATE
  network_key: GENERATE
  channel: 20

Zigbee2MQTT starten

Der erste Start erfolgt per cd /opt/zigbee2mqtt && npm start, dabei sollten viele grüne Statuszeilen ausgegeben werden, insbesondere: Stick ist da, MQTT-Server verbunden und das Webinterface online.

# Starten
cd /opt/zigbee2mqtt 
npm start

Start mit Boot einrichten

Als wichtiger Dienst soll Zigbee2mqtt natürlich immer automatisch nach einem Neustart ausgeführt werden. Breche die aktuelle Ausführung mit CTRL-C ab, um wieder in die Kommandozeile zu gelangen und aktiviere den Autostart.

# Start abbrechen / zurück zur Eingabe
CTRL + C

# Dienst registrieren
systemctl enable zigbee2mqtt.service

# Dienst einmal starten
systemctl start zigbee2mqtt

Webinterface

Geschafft! Nach wenigen Sekunden sollte nun das Webinterface unter der IP des Containers und des zuvor gewählten Port erreichbar sein.