SLZB-06 mehrere Instanzen

Hallo zusammen
Ich habe eine laufende Home Assistant Installation auf einer Synology. In dieser Installation läuft ein SLZB-06 über Kabelnetzwerk mit zigbee2mqtt und MQTT Broker einwandfrei.

Weiter habe ich einen abgesetzten Raum der keinerlei Funkverbindung zu der bestehenden Installation hat. Ich habe aber eine funktionierende Kabel Netzwerkverbindung in diesen Raum (Cat6a).

Jetzt möchte ich in diesem Raum einen weiteren SLZB-06 (Den Stick habe ich bereits bei mir) an der gleichen HA Installation betreiben. Gemäss Hersteller des Sticks ist dies möglich.

In HA kann ich aber keine weitere Instanz installieren. Also habe ich versucht einen Docker Container (koenkk/zigbee2mqtt) zu installieren als weitere Instanz. Mit keiner Anleitung die ich im Internet gefunden habe, habe ich es geschafft den Container zu starten. Er stoppt immer mit Fehlermeldungen. Mit Docker selbst habe ich keine Erfahrung, das ist für mich Neuland.

Hat jemand schon eine Installation mit mehreren Kordinatoren zum Laufen gebracht und kennt eine Anleitung die funktioniert?
Bin ich mit meinem Vorgehen auf dem Holzweg und es gibt eine bessere Variante?

Gruss
Beni

Home Assistant läuft im Docker oder in einer VM?
Die erste laufende ZigBee2MQTT Instanz hast im Docker am Start oder als Addon in Home Assistant?

Es sollte eigentlich kein Problem sein mehrere ZigBee2MQTT Instanzen zu betreiben, egal ob auf verschieden Hosts, oder wie in Deinem Fall als zusätzlicher Container.

Wie sehen die zwei ZigBee2MQTT configurationen aus. Und mit welcher Fehlermeldung bricht die 2te ZigBee2MQTT Instanz ab.

Gruß
Osorkon

HA läuft in einer VM (Offizielles ova) im Virtual Machine Manager von Synology. Darin der MQTT Broker und zigbee2mqtt in einer Instanz mit dem 1. Koordinator. Das funktioniert einwandfrei, die entsprechende yaml hat folgenden Inhalt:

homeassistant: true
advanced:
  network_key:
    - 206
    - 167
    - 112
    - 15
    - 93
    - 58
    - 9
    - 16
    - 162
    - 253
    - 42
    - 255
    - 254
    - 46
    - 188
    - 132
  pan_id: 61310
  ext_pan_id:
    - 75
    - 130
    - 100
    - 159
    - 214
    - 18
    - 154
    - 230
mqtt:
  server: mqtt://core-mosquitto:1883
  user: addons
  password: uTeiBiv6eodemu2eaphae5Leiw6Shoi2neegea3TeechaeneeZ4fiap5iebah2Ph
serial:
  port: tcp://192.168.0.181:6638
  baudrate: 115200
  adapter: zstack
  disable_led: false
  transmit_power: 20
frontend:
  port: 8099
devices:
  '0x7cb03eaa0a0534ce':
    friendly_name: WZ Spot 4
  '0x7cb03eaa0a05557c':
    friendly_name: WZ Spot 2
  '0x7cb03eaa0a053efa':
    friendly_name: WZ Spot 1 AQ
  '0x7cb03eaa0a054f15':
    friendly_name: WZ Spot 3
  '0x54ef4410002a5916':
    friendly_name: Temperatur, Luftqualität
  '0x00158d0006ed8d03':
    friendly_name: Temperatur 1
  '0x588e81fffe52242e':
    friendly_name: Taster Ikea
  '0xf0d1b8000014c676':
    friendly_name: EB Leuchte
  '0x847127fffeda7b28':
    friendly_name: Aquarium Licht
  '0x7cb03eaa0a00f5a4':
    friendly_name: Werkbank
  '0x003c84fffec38503':
    friendly_name: WZ Tisch
  '0x7cb03eaa0a012e97':
    friendly_name: Ladegeräte Steckdose
  '0x00158d000ab78480':
    friendly_name: Ladegeräte Taster
availability:
  active:
    timeout: 1
  passive:
    timeout: 1440

Die 2. Instanz ist eine Installation im Docker. Gemäss Anleitung muss man im Ordner Docker ein Verzeichnis zigbee2mqtt anlegen und darin ein Unterverzeichnis mit data. Im Verzeichnis zigbee2mqtt liegt das File docker-compose.yml mit folgendem Inhalt:

version: "3.8"
services:
  # Zigbee2MQTT
  zigbee2mqtt:
    container_name: zigbee2mqtt
    restart: unless-stopped
    image: koenkk/zigbee2mqtt
    volumes:
      - /volume1/docker/zigbee2mqtt/data
      - /run/udev:/run/udev:ro
    ports:
      # Frontend port
      - 8098:8098
    environment:
      - TZ=Europe/Amsterdam
    devices:
      - port: tcp://192.168.0.183:6638

Im Ordner data liegt das File configuration.yaml mit folgendem Inhalt:

# Minimal configuration.yml example
permit_join: true
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://192.168.0.182:1883
serial:
  port: tcp://192.168.0.183:6638
# Enable the Zigbee2MQTT frontend
frontend:
  port: 8098
# Let Zigbee2MQTT generate a new network key on first start
advanced:
  network_key: GENERATE

Die Adressen der Geräte sind:

    1. Koordinator 192.168.0.181
  1. HA Installation 192.168.0.182
    1. Koordinator 192.168.0.181

Der Docker Container startet kurz und bricht dann mit folgender Fehlermeldung ab:

koenkk-zigbee2mqtt-1
date,stream,content
2024/03/29 11:28:21,stdout,    at /app/node_modules/@serialport/stream/dist/index.js:118:18

2024/03/29 11:28:21,stdout,    at SerialPort._error (/app/node_modules/@serialport/stream/dist/index.js:82:22)

2024/03/29 11:28:21,stdout,    at SerialPort.<anonymous> (/app/node_modules/zigbee-herdsman/src/adapter/serialPort.ts:28:28)

2024/03/29 11:28:21,stdout,"e[31mZigbee2MQTT:errore[39m 2024-03-29 10:28:21: Error: Error while opening serialport 'Error: Error: No such file or directory, cannot open /dev/ttyACM0'
"
2024/03/29 11:28:21,stdout,e[31mZigbee2MQTT:errore[39m 2024-03-29 10:28:21: Exiting...

2024/03/29 11:28:21,stdout,e[31mZigbee2MQTT:errore[39m 2024-03-29 10:28:21: Check https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start.html for possible solutions

2024/03/29 11:28:21,stdout,e[31mZigbee2MQTT:errore[39m 2024-03-29 10:28:21: Failed to start zigbee

2024/03/29 11:28:21,stdout,e[31mZigbee2MQTT:errore[39m 2024-03-29 10:28:21: Error while starting zigbee-herdsman

2024/03/29 11:28:20,stdout,e[32mZigbee2MQTT:info e[39m 2024-03-29 10:28:20: Starting zigbee-herdsman (0.35.1)

2024/03/29 11:28:20,stdout,e[32mZigbee2MQTT:info e[39m 2024-03-29 10:28:20: Starting Zigbee2MQTT version 1.36.0 (commit #86ed71c)

2024/03/29 11:28:20,stdout,e[32mZigbee2MQTT:info e[39m 2024-03-29 10:28:20: Logging to console and directory: '/app/data/log/2024-03-29.10-28-20' filename: log.txt

2024/03/29 11:28:13,stdout,Using '/app/data' as data directory

Gruss
Beni

Ich habe zwei unter HA am laufen. Ohne Probleme oder “Tricks” installiert. Sollte also auch bei Dir gehen. Einen mit ZHA und einen mit Z2M.

Hallo
Das hatte ich auch mal in Erwägung gezogen wie auch zigbee2mqtt edge.

ZHA unterstützt aber nicht alle Komponenten die ich einsetzen möchte, z.Bsp. Sunricher LED Treiber. Auch scheint es keine Funktion für OTA Updates wie bei zigbee2mqtt zu geben.

zigbee2mqtt edge wird nicht automatisch aktualisiert gemäss Beschreibung. Das möchte ich eigentlich auch nicht.

Das ist hoffentlich ein Tippfehler.

Die IP Adressen von Koordinator 1 kann nicht identisch mit der des Koordinators 2 sein!!

In configuration.yaml der 2ten ZigBee2MQTT Instanz würde ich den Adapter mit angeben und base topic anders als in der ersten benennen.

Gruß
Osorkon

Doch seit einer kurzen Weile schon, ist aber lange nicht so komfortabel gestaltet wie bei Z2M. Bei mir läuft nach vielen rumprobieren mit Z2M, ZHA sehr stabil. Z2M habe ich nur so zum testen installiert.

Ups, ja das ist ein Tippfehler. Der 2. Koordinator ist 192.168.0.183. Die yaml passe ich mal an und teste es.

Da hat Osorkon natürlich Recht. Das kann nicht stimmen!! Hatte ich glatt überlesen.

Cool das das jetzt auch drin ist. Leider sind die Sunricher LED Treiber nicht unterstützt.

Ich habe nochmal ein paar Versuche gemacht, aber Container stoppt noch immer.
Die yaml sieht so aus:

homeassistant: true
permit_join: true
mqtt:
  base_topic: zigbee2mqtt_2
  server: http://192.168.0.132:1883
  user: addons
  password: uTeiBiögjödgdöggfeechaeneeZ4fiap5iebah2Ph
serial:
  port: tcp://192.168.0.183:6638
  baudrate: 115200
  adapter: zstack
  disable_led: false
  transmit_power: 20
  frontend:
  port: 8098

Die docker-compose.yml hat folgendes drin:

version: "3.8"
services:
  # Zigbee2MQTT
  zigbee2mqtt:
    container_name: zigbee2mqtt
    network_mode: bridge
    restart: unless-stopped
    image: koenkk/zigbee2mqtt
    volumes:
      - ./data:/app/data
      - /run/udev:/run/udev:ro
    ports:
      # Frontend port
      - 8020:8020
    environment:
      - TZ=Europe/Berlin
    devices:
      - port: tcp://192.168.0.183:6638

Die Fehlermeldung ist jetzt:

koenkk-zigbee2mqtt-1
date,stream,content
2024/03/29 17:13:39,stdout,    at Object.load (/app/node_modules/js-yaml/lib/loader.js:1714:19)

2024/03/29 17:13:39,stdout,    at loadDocuments (/app/node_modules/js-yaml/lib/loader.js:1688:5)

2024/03/29 17:13:39,stdout,    at readDocument (/app/node_modules/js-yaml/lib/loader.js:1625:3)

2024/03/29 17:13:39,stdout,    at composeNode (/app/node_modules/js-yaml/lib/loader.js:1441:12)

2024/03/29 17:13:39,stdout,    at readBlockMapping (/app/node_modules/js-yaml/lib/loader.js:1164:11)

2024/03/29 17:13:39,stdout,    at composeNode (/app/node_modules/js-yaml/lib/loader.js:1441:12)

2024/03/29 17:13:39,stdout,    at readBlockMapping (/app/node_modules/js-yaml/lib/loader.js:1173:9)

2024/03/29 17:13:39,stdout,    at storeMappingPair (/app/node_modules/js-yaml/lib/loader.js:358:7)

2024/03/29 17:13:39,stdout,    at throwError (/app/node_modules/js-yaml/lib/loader.js:187:9)

2024/03/29 17:13:39,stdout,    at generateError (/app/node_modules/js-yaml/lib/loader.js:183:10)

2024/03/29 17:13:39,stdout,--------^

2024/03/29 17:13:39,stdout, 15 |   port: 8098

2024/03/29 17:13:39,stdout, 14 |   frontend:

2024/03/29 17:13:39,stdout, 13 |   transmit_power: 20

2024/03/29 17:13:39,stdout, 12 |   disable_led: false

2024/03/29 17:13:39,stdout,

2024/03/29 17:13:39,stdout,YAMLException: duplicated mapping key (15:3)

2024/03/29 17:13:39,stdout,         ^

2024/03/29 17:13:39,stdout,"  return new YAMLException(message, mark);
"
2024/03/29 17:13:39,stdout,/app/node_modules/js-yaml/lib/loader.js:183

2024/03/29 17:13:39,stdout,

2024/03/29 17:13:38,stdout,Using '/app/data' as data directory

Im Moment weiss ich hier gerade nicht mehr weiter.
Eine Idee wäre noch eine zweite VM mit HA zu erstellen, z2m einzurichten und auf die erste HA Installation zu verbinden. Ob das wohl gehen würde?

Irgendwie ist es Schade, der Hersteller smlight beschreibt in der Anleitung das es möglich ist, aber es ist nirgends eine funktionierende Konfiguration mit mehreren Adaptern über Netzwerk zu finden. Die Beschreibung ist zumindest für mich zu Allgemein gehalten.

Deine 2te ZigBee2MQTT Instanz läuft doch als eigenständige Docker Installation und nicht als Addon in Home Assistant .

Somit musst Du dich mit einem regulären User Und Passwort, welches Du im MQTT Broker angelegt hast, oder noch anlegen musst, am MQTT Broker anmelden.

Gruß
Osorkon

1 „Gefällt mir“

Yes. Erstes Erfolgserlebnis. Der Container startet und läuft durch. Einerseits war eine IP falsch:

Die muss 192.168.0.182 sein.
Ebenso braucht es einen MQTT Benutzer für dieses Szenario.
Angelernt habe ich jetzt noch nichts, das kommt in den nächsten Tagen. Dann weiss ich ob es funktioniert wie gewünscht.
Ich melde mich nochmal sobald ich das getestet habe.

Gruss
Beni

Also, die 2. Instanz funktioniert sehr gut. Ich habe einen ersten Fühler angelernt, dieser ist sofort nutzbar im Home Assistant.
Falls jemand einen Docker Container auf Synology auch dazu nutzen möchte, hier eine kleine Auflistung was alles zu berücksichtigen ist:

Fangen wir in HA an:

  1. Unter Einstellungen, Personen muss man einen Benutzer mit Passwort für MQTT anlegen. Bei mir heisst der “mqtt_benutzer”.

  2. Diesen Benutzer muss man unter Einstellungen, Add-ons, Mosquitto broker, Konfiguration mit Passwort eintragen.

Bindestrich vor username: nicht vergessen :wink:

Das wars so weit in HA.

Weiter geht es auf der Synology:

Ich gehe davon aus, das Ihr wisst wie man einen Docker Container im Container Manager registriert.

  1. Synology legt ja in der File Station einen Ordner Namens docker an. In diesem Ordner erstellt man ein Unterordner. Meinen habe ich zigbee2mqtt_2 genannt, da es bei mir die zweite z2m Instanz ist.

In diesem Ordner legt man eine Datei mit dem Namen “docker-compose.yml” anlegen. Inhalt der Datei:

version: "3.8"
services:
  # Zigbee2MQTT
  zigbee2mqtt:
    container_name: zigbee2mqtt_2
    network_mode: bridge
    restart: unless-stopped
    image: koenkk/zigbee2mqtt
    volumes:
      - ./data:/app/data
      - /run/udev:/run/udev:ro
    environment:
      - TZ=Europe/Berlin
    devices:
      - port: tcp://192.168.0.183:6638

Der container-name: muss mit dem Namen in des Ordners übereinstimmen.

network_mode: ist bei mir bridge, so wird die gleiche IP wie vom Synology verwendet.

  • port: Ist die IP Adresse von meinem SLZB-06, mit dem dazugehörigen Port wie in der HA Installation.
  1. Im Ordner zigbee2mqtt_2 legt man einen weiteren Unterordner mit dem Namen data an.

In diesem Ordner erstellt man eine Datei mit dem Namen configuration.yaml, mit folgendem Inhalt:

homeassistant: true
permit_join: true
mqtt:
  base_topic: zigbee2mqtt_2
  server: http://192.168.0.182:1883
  user: mqtt_benutzer
  password: password
serial:
  port: tcp://192.168.0.183:6638
  baudrate: 115200
  adapter: zstack
  disable_led: false
  transmit_power: 20
frontend:
  port: 8098
advanced:
  pan_id: GENERATE
  ext_pan_id: [0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08]
  network_key: GENERATE

base_topic: Ist wieder der Name vom Ordner.

server: Ist die IP-Adresse vom MQTT Broker, bei mir ist das die HA Installation.

user: Ist der MQTT Benutzer den man im HA erstellt hat.

password: Das Passwort des Benutzers.

serial: Die Einstellungen die gemäss Handbuch vom SLZB-06 nötig sind, mit IP und Port.

frontend: Ist der Port mit dem die Weboberfläche von z2m aufgerufen wird. Mit dieser Konfiguration ist es http://IP-von-der-Synology:8098

advanced: Diese 3 Einträge werden bei der erstmaligen Installation benötigt, wie ich in den untiefen des Internets herausgefunden habe. Hat man die nicht drin, werden anscheinend immer die gleichen ID’s verwendet, was zum Absturz führt. Die ext_pan_id Einträge können durch beliebige eigene Zahlen ersetzt werden.

Damit ist in den Files alles eingetragen.

  1. Jetzt muss man noch drei Einstellungen im Container auf der Synology eintragen.

Unter Port Einstellungen 8098 (gleicher Port wie im .yaml).

Unter Volume-Einstellungen den Pfad zum Ordner (/docker/zigbee2mqtt_2/data).

Unter Umgebung die Zeitzone.

Das wars. Damit startet der Container und die Oberfläche kann mit http://IP-von-der-Synology:8098 aufgerufen werden.