Zigbee2mqtt Raspberry Pi zu Home Assistant MQTT

Ich bin vor kurzem auf Home Assistant umgestiegen und versuche Zigbee2mqtt auf einem Raspberry Pi mit Home Assistant zu verbinden. Ich habe mir auch verschiedene Videos zur Installation vom HA Addon Zigbee2mqtt angeschaut aber leider zeigt keiner wie man einen externen Zigbee2mqtt Controller mit Home Assistant verbinden kann.

Ich habe im HA einen Mosquitto MQTT Broker erstellt und einen Benutzer angelegt.
Im Zigbee2mqtt habe ich die bei Topic alles so gelassen also (zigbee2mqtt) und bei Host habe ich die IP Adresse angegeben mit Port 1883.
Dann gibt es ja noch einen Reiter Home Assistant Integration.
In der Doku von zigbee2mqtt steht bei Homeassistent muss dieses aktiviert werden. Ich habe in der zigbee2mqtt conf homeassistant: true gesetzt. Danach neugestartet.

Im Home Assistant erscheinen viele Geräte in der MQTT Integration. Also die Verbindung steht schonmal. Aber ich habe seitdem das Problem, sobald die Verbindung zu Home Assistant steht werden die Werte der Sensoren (Bewegungsmelder, Temperatursensor) auf Null geschrieben. Wenn ich dann z.b. den Bewegungsmelder auslösen sieht man ganz kurz die Auslösung und dann direkt Null.

Ich vermute es liegt an der Home Assistant Integration. Kann mir da jemand helfen?
Ich möchte ungern zigbee2mqtt auf Home Assistant laufen lassen weil mein Server in einer Ecke steht und dann der Empfang nicht gut sein wird. Deshalb habe ich extra ein externes Gerät genommen und zentral aufgestellt.

Kleine Ergänzung: Ich habe bis jetzt zigbee2mqtt in Verbindung mit iobroker genutzt. Jetzt wollte ich nur den mqtt Host umstellen.

Du willst also Zigbee2Mqtt extern weiter laufen lassen? Mache ich genauso, so kann man schalten auch wenn HA mal nicht will.

Du musst nur MQTT unter “Geräte und Dienste” installieren. Keinen MQTT-Broker und auch kein Zigbee2Mqtt unter den Addons. Danach dauert es eine weile bis alle Satusmeldungen angekommen sind. Nach einem Neustart von HA dauert es auch etwas bis jeder Status der Geräte angezeigt wird

Hi, ja genau. Brauche ich nicht für zigbee2mqtt einen Mqtt Broker? Deshalb habe ich gedacht ich brauche Addon Mqtt Broker.

Brauche ich auf dem Zigbee2mqtt einen Mqtt Broker?

Du brauchst eigentlich nur den Mosquitto broker und Zigbee2mqtt.

Also wenn dein Zigbee2Mqtt bereits läuft, sollte ja bereits einer vorhanden sein.

Wenn ich auf Home Assistant den Mqtt Broker lösche dann bringt zigbee2mqtt Fehlermeldungen “MQTT nicht erreichbar”. In der zigbee2mqtt config habe ich aktuell die IP von meinem Home Assistant eingetragen.

Meine Überlegung wäre jetzt, auf dem Zigbee2mqtt einen neuen Container zu erstellen mit mosquitto Broker und dann in der zigbee2mqtt config bei Mqtt localhost eintragen.

Im Home Assistant bei Dienste dann MQTT (Client) installieren und warten bis die Geräte erscheinen. So wie du meintest @svensch

Ah okay. Ja also ich betreibe Zigbee2Mqtt und MQTT im gleichen Docker. HA empfängt nurnoch die Daten. Wenn der Broker in HA läuft, würde dann ebenfalls Zigbee ausfallen wenn HA nicht mehr will.

Mein Aufbau ist z2m und mqtt in einer vm mit docker-compose und HA ebenfalls in einer eigenen VM

docker-compose.yml

version: '3.8'
services:
  mqtt:
    image: eclipse-mosquitto:2.0
    restart: unless-stopped
    volumes:
      - "./mosquitto-data:/mosquitto"
    ports:
      - "1883:1883"
      - "9001:9001"
    command: "mosquitto -c /mosquitto-no-auth.conf"

  zigbee2mqtt:
    container_name: zigbee2mqtt
    restart: unless-stopped
    image: koenkk/zigbee2mqtt
    volumes:
      - ./zigbee2mqtt-data:/app/data
      - /run/udev:/run/udev:ro
    ports:
      - 8080:8080
    environment:
      - TZ=Europe/Berlin
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0

1 „Gefällt mir“

Top danke. Das klingt verständlich und auch viel besser als den Broker im HA laufen zu lassen.

Ich werde es mal ausprobieren noch ein mosquitto aufzusetzen. Eine Frage noch: Warum hast du beim Mqtt zwei Ports? Also 1883 für Mqtt und für was ist 9001?

Ich habe parallel nochmal in meiner conf geschaut und mit der Doku abgeglichen.
Zigbee2mqtt MQTT Config

Ich bin über den Punkt gestolpert:
advanced:
Optional: state caching, MQTT message payload will contain all attributes, not only changed ones.
Has to be true when integrating via Home Assistant (default: true)
cache_state: true

Bei mir war in der config cache_state: false
Seitdem bekomme ich keine null Werte mehr bei Geräten wo sich was ändert.

@svensch Kannst du vlt deine Zigbee2mqtt configuration.yaml (Mqtt, advanced Bereich) teilen?

1881 ist der Port ohne SSL und der 9001 für SSL. Aber eigentlich funke ich das in meinem lokalen Netz alles ohne Verschlüsselung.

Ja suche die Config gleich mal raus, nur kurz die Kinder füttern :smiley:

Nachtrag:
Hier ist sie, ist nicht so aufregend

permit_join: false
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://mqtt
serial:
  port: /dev/ttyUSB0
  adapter: zstack
  baudrate: 115200
frontend:
  port: 8080
  ssl_cert: /app/data/cert/certificate.pem
  ssl_key: /app/data/cert/privkey.pem
advanced:
  network_key:
    - 104
    - 138
    - 120
    - 108
    - 32
    - 76
    - 171
    - 36
    - 161
    - 33
    - 135
    - 124
    - 129
    - 196
    - 157
    - 93
  homeassistant_legacy_entity_attributes: false
  legacy_api: false
  legacy_availability_payload: false
  log_level: warn
  log_syslog:
    app_name: Zigbee2MQTT
    eol: /n
    host: localhost
    localhost: localhost
    path: /dev/log
    pid: process.pid
    port: 514
    protocol: udp4
    type: '5424'
  channel: 25
  pan_id: 6755
  last_seen: ISO_8601
  timestamp_format: DD-MM-YYYY HH:mm:ss
device_options:
  legacy: false
homeassistant: true

Die Config kann nicht so übernommen werden, es müsste ein neuer Netzwerk-Key erstellt werden. Und natürlich das Gerät angepasst werden.

advanced:
  network_key: GENERATE

alles Zeilen mit -104 usw… entfernen.

Willst du es auch in der Seitenleiste von HA aufrufen können brauchst du https in z2m. Dafür musst du ein lokales Zertikat erstellen.

openssl req -newkey rsa:2048 -nodes -keyout privkey.pem -x509 -days 3650 -out certificate.pem

Es wird in den Ordner stellt wo du es ausführst, einfach in der Freigabe von Docker ausführen und in den Einstellungen eingeben, siehe mein Config.

:crayon:by HarryP: Zusammenfassung Doppelpost

Danke dir. Werde ich mal noch abgleichen.

Woher weiß der Server wo er mit Mqtt://Mqtt hin muss? Hätte gedacht localhost.

Muss ich im HA noch was bei Integration einstellen? Hört er auf alles was im Netzwerk published wird?

Der MQTT ist localhost, in der docker-comopse steht:

version: '3.8'
services:
  mqtt:
    image: eclipse-mosquitto:2.0

Der Name vom Container ist also für MQTT “mqtt”.

Nun steht in der Config von Zigbee2mqtt als Server:

server: mqtt://mqtt

und nun macht Docker alleine “localhost” daraus.

Danke dir. Ich werde es heute Nachmittag mal ausprobieren.

Mit dem Namen habe ich nicht gewusst, gut zu wissen.

Muss ich bei HA Integration noch was anpassen oder einfach warten?

Da musst du dann nur MQTT unter Geräte hinzufügen und die IP-Adress und Port angeben und es sollte sofort losgehen. Benutzername usw… brauchst du dann nicht wenn du es genauso nachbauen würdest.

Alles klar. Dann hört der nur auf diesen Broker oder? Kann ich im HA mehrere Adressen angeben? Hintergrund: Ich nutze Tasmota und habe deshalb noch einen Broker laufen. Wenn ich jetzt in Geräte die Adresse ändere kann Tasmota wahrscheinlich nicht mehr kommunizieren.

Der Broker geht natürlich auch mit allen anderen Geräten, habe meine Ring auch über diesen laufen lassen. Dafür dann einfach mqtt://IP-Adresse:Port vom Host angeben.

Okay, verstehe ich gerade nicht so.

Ich habe einen Broker auf dem Zigbee2mqtt

Im HA habe ich die Dienste MQTT aktiviert und da bei Konfiguration die IP:Port eingetragen.

Also hört der HA auf die Topic vom zigbee2mqtt.

Wie kann ich dem HA sagen, höre auch noch auf eine andere IP. In der Konfiguration kann ich nur einen Server anlegen.
In meinem Fall, wie sage ich dem Tasmota schicke die Mqtt Daten an den HA? Ich habe ja vorher in der Geräte/MQTT/Konfiguration die IP auf die zigbee2mqtt gesetzt.

Ich schicke alle Geräte an den MQTT von Zigbee, der Broker ist ja soweit unabhänig von Zigbee. Deine Tasmota kannst du einfach auf dem MQTT-Broker im Docker schicken. HA kann nur einen MQTT-Broker.

Danke.

Ich habe so überlegt, wenn ich einen zweiten zigbee2mqtt hätte wie könnte ich den in HA integrieren aber ja ist logisch. Einfach an den Broker im Zigbee2mqtt schicken lassen.

Die Tasmota könnte ich ja trotzdem an den Broker vom HA schicken.

Ich danke dir, jetzt hat sich glaube alles aufgeklärt. Vielen Dank

1 „Gefällt mir“

Servus,

ich habe ein ähnliches Vorhaben, aber evtl auch nur ein Verständnisproblem. :smiley:

I habe HA auf einer Synology NAS im Docker Container laufen.
Aktuell nutze ich noch die DECONZ Integration für meine ZigBee Geräte. (ConBee II Stick auf einem PI3)

Jetzt habe ich mir einen SonOff 3 USB Stick bestellt.
Diesen möchte ich gerne auf einem PI4 nutzen (geht ja in der Synology nicht)
MQTT läuft schon auf einer anderen NAS, darüber habe ich die Sonoff Geräte in HA eingebunden.

Jetzt habe ich festgestellt, dass ich das Addon
https://github.com/zigbee2mqtt/hassio-zigbee2mqtt#installation
nicht in meiner Docker HA Version installieren kann.

Ihr habt es aber trotzdem am laufen. Wie habt ihr dass gemacht ? Also dass die Geräte in HA landen und auch erstellt werden ? Und dass man all die schönen Features nutzen kann, die Simon in seinen Videos gezeigt hat ?

Hier noch einmal das Setup
NAS1 → HA in Docker
NAS2 → MQTT Broker
PI4 → Sonoff 3 Stick

EDIT: Ich bin jetzt von Docker auf einen Intel NUC umgezogen in dem auch der Sonoff3 Stick steckt. Jetzt funktioniert alles.

Hallo Zusammen,

wie aktuell auch etliche andere bin ich gerade dabei vom ioBroker auf HA umzusteigen.
Bis auf das Thema zigbee2mqtt läuft auch alles.

Hier kurz mein Aufbau.

Proxmox
1. VM → mit ioBroker & Zigbee2Mqtt (läuft stabil) IP: 192.168.179.220
2. VM → homassistent IP: 192.168.179.29

Mein Ziel ist es im HA das vorhandene/externe Zigbee2qmtt einzubinden, da ich ca. 50 Geräte laufen habe und mir die Arbeit sparen möchte alles neu anzulernen.
Den ioBroker werde ich dann abschalten.
Nach gefühlt stundenlanger Suche im Google & HA Verbindungsversuchen bin ich mit meinem Latein am Ende.

Verbinungsversuch aus HA mit der Integration “MQTT” waren alle von Erfolg - siehe Bild.
Mit dem HA AddOn “Zigbee2mqtt Proxy” bekommen ich die Zigbb2mqtt Oberfläche angezeigt.

Wo ist der “Hund” begraben?

Hier die Config vom “zigbee2mqtt” von der 1. VM


homeassistant:
  legacy_entity_attributes: true
permit_join: true
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://localhost
  user: xxx
  password: xxx
  keepalive: 60
  reject_unauthorized: true
  version: 4
serial:
  port: /dev/ttyUSB0
advanced:
  legacy_api: false
  legacy_availability_payload: false
  output: json
  log_syslog:
    app_name: Zigbee2MQTT
    eol: /n
    host: localhost
    localhost: localhost
    path: /dev/log
    pid: process.pid
    port: 514
    protocol: udp4
    type: '5424'
  last_seen: ISO_8601_local
  log_level: debug
device_options:
  legacy: false
availability: true
frontend:
  port: 8080
  host: 0.0.0.0
  auth_token: xxxxxx
  url: http://localhost
*****************************************************



:crayon:by HarryP: Codezeilen formatiert