,

MQTT für Home Assistant

Viele Smart-Home-Geräte, Tasmota-Steckdosen, Zigbee2MQTT, Node-RED-Flows und eigene ESP32-Projekte tauschen ihre Daten über MQTT aus. Damit diese Geräte miteinander kommunizieren können, wird ein MQTT-Broker benötigt – in der Praxis meist Mosquitto.

In diesem Tutorial zeige ich beide üblichen Installationswege: den offiziellen Mosquitto Broker direkt als Home-Assistant-App sowie einen eigenständigen Mosquitto-Container, beispielsweise auf einem Unraid-Server.

Beide Varianten funktionieren zuverlässig. Welche davon besser passt, hängt vor allem davon ab, wie Home Assistant bei dir installiert ist und ob MQTT auch unabhängig von Home Assistant für weitere Dienste verfügbar sein soll.

  • MQTT und die Aufgabe eines Brokers verstehen
  • Den offiziellen Mosquitto Broker in Home Assistant installieren
  • Einen eigenen Mosquitto-Server als Docker-Container auf Unraid einrichten
  • Home Assistant sicher mit dem Broker verbinden
  • Die Verbindung mit einer Testnachricht prüfen
  • Typische Fehler schnell beheben

Grundlagen

Was ist MQTT?

MQTT ist ein leichtgewichtiges Nachrichtenprotokoll für Geräte im Netzwerk. Die Geräte senden ihre Werte nicht direkt aneinander, sondern verbinden sich mit einem zentralen Broker.

ESP32 / Tasmota / Node-RED
          │
          │ veröffentlicht Nachrichten auf Topics
          ▼
   Mosquitto MQTT-Broker
          │
          │ verteilt Nachrichten an Abonnenten
          ▼
     Home Assistant

Ein Gerät kann zum Beispiel einen Helligkeitswert auf dem Topic gerlcraft/outdoor_lux/illuminance veröffentlichen. Home Assistant abonniert dieses Topic und kann den Wert sofort als Sensor verwenden.

  • Broker: nimmt MQTT-Nachrichten entgegen und verteilt sie weiter.
  • Topic: die Adresse einer Nachricht, zum Beispiel wohnzimmer/temperatur.
  • Publisher: ein Gerät oder Dienst, der eine Nachricht sendet.
  • Subscriber: ein Gerät oder Dienst, der ein Topic abonniert.

Entscheidungshilfe

Welche Variante passt zu dir?

VarianteGut geeignet fürBesonderheit
Mosquitto als Home-Assistant-AppHome Assistant OS und eine einfache, reine Smart-Home-InstallationDie schnellste Einrichtung. Nicht bei Home Assistant Container verfügbar.
Mosquitto als eigener Docker-ContainerUnraid, Docker, Node-RED, Zigbee2MQTT und eigene ESP32-ProjekteBleibt unabhängig von Home Assistant und kann von mehreren Diensten verwendet werden.

Wenn du Home Assistant auf Unraid als Container betreibst, ist die zweite Variante in der Regel die passendere und flexiblere Lösung.

01

Voraussetzungen

Für beide Varianten benötigst du Administratorzugriff auf Home Assistant sowie Zugriff auf dein lokales Netzwerk. Entscheide dich anschließend für eine der beiden Broker-Installationen – zwei MQTT-Broker sind für ein einzelnes Smart Home normalerweise nicht nötig.

  • Methode 1: Home Assistant OS oder Home Assistant Supervised mit Zugriff auf den Add-on-Shop.
  • Methode 2: ein Docker-Host, zum Beispiel ein Unraid-Server, mit dauerhaftem Speicherplatz für die Mosquitto-Daten.
  • Eine feste IP-Adresse oder DHCP-Reservierung für den Server, auf dem Mosquitto läuft.
  • Ein langes, eigenes Kennwort für MQTT.

Wichtig

MQTT niemals offen ins Internet stellen

Port 1883 ist für dein lokales Netzwerk gedacht. Lege dafür keine Portfreigabe im Router an und verwende keinen anonymen Zugriff. Für einen sicheren Fernzugriff auf dein Smart Home eignen sich VPN, Home Assistant Cloud oder ein korrekt abgesicherter Reverse-Proxy.

02

Methode 1: Mosquitto direkt in Home Assistant installieren

Diese Methode eignet sich für Home Assistant OS. Mosquitto läuft dabei als verwaltete Home-Assistant-App auf demselben System.

Mosquitto Broker installieren

  1. Öffne Einstellungen → Apps → App Installieren.
  2. Suche nach Mosquitto broker und öffne die offizielle App.
  3. Klicke auf Installieren.
  4. Aktiviere bei Bedarf Beim Start starten und Watchdog.
  5. Starte die App.

Wenn du die MQTT-Integration noch nicht eingerichtet hast, kannst du auch über Einstellungen → Geräte & Dienste → Integration hinzufügen → MQTT beginnen. Home Assistant kann den offiziellen Mosquitto Broker dabei direkt einrichten und die internen Zugangsdaten selbst verwalten.

03

Zusätzlichen MQTT-Benutzer anlegen

Home Assistant selbst verbindet sich automatisch mit dem offiziellen Broker. Für externe Geräte und Dienste wie Node-RED, Tasmota, Zigbee2MQTT oder eigene ESP32-Projekte legst du einen eigenen MQTT-Benutzer an.

Öffne in der Mosquitto-App den Reiter Konfiguration und trage zum Beispiel Folgendes ein:

logins:
  - username: mqtt
    password: "HIER_EIN_LANGES_EIGENES_PASSWORT_EINTRAGEN"
anonymous: false
customize:
  active: false

Speichere die Konfiguration und starte die Mosquitto-App neu. Für Geräte im Heimnetz verwendest du anschließend die IP-Adresse oder den Hostnamen deines Home-Assistant-Systems, Port 1883 und die gerade angelegten Zugangsdaten.

Optional: ohne Benutzer und Passwort

Anonymer Zugriff beim Home-Assistant-Broker

Der Broker kann auch vollständig ohne Anmeldung betrieben werden. Jedes Gerät im selben Netzwerk kann sich dann ohne Benutzername und Kennwort verbinden. Für ein abgeschlossenes, vertrauenswürdiges Heimnetz kann das praktisch sein, ist aber weniger sicher.

Ersetze die Konfiguration im Mosquitto-Add-on dafür durch:

logins: []
anonymous: true
customize:
  active: false

Danach speicherst du die Konfiguration und startest die Mosquitto-App neu. In Home Assistant sowie auf allen MQTT-Geräten bleiben Benutzername und Kennwort dann leer.

Hinweis

Home Assistant Container besitzt keine Add-on-Verwaltung

Wenn Home Assistant als Docker-Container auf Unraid, einem NAS oder einem Linux-Server läuft, steht der Add-on-Shop nicht zur Verfügung. In diesem Fall installierst du Mosquitto separat als Docker-Container – genau das zeigt die nächste Methode.

04

Methode 2: Eigenständigen Mosquitto-Server auf Unraid installieren

Ein eigener Mosquitto-Container ist unabhängig von Home Assistant. Dadurch kann derselbe Broker gleichzeitig von Home Assistant, Node-RED, Zigbee2MQTT, Tasmota und eigenen ESP32-Projekten verwendet werden. Ein Neustart von Home Assistant unterbricht den Broker dabei nicht.

Dauerhafte Ordner anlegen

Öffne auf deinem Unraid-Server ein Terminal und lege die drei benötigten Ordner an:

mkdir -p /mnt/user/appdata/mosquitto/config
mkdir -p /mnt/user/appdata/mosquitto/data
mkdir -p /mnt/user/appdata/mosquitto/log

In diesen Ordnern speichert Mosquitto seine Konfiguration, gespeicherte Nachrichten und Log-Dateien dauerhaft. Bei einem Container-Update bleiben sie erhalten.

05

Mosquitto konfigurieren und Benutzer erstellen

Erstelle die Datei /mnt/user/appdata/mosquitto/config/mosquitto.conf und füge diesen vollständigen Inhalt ein:

persistence true
persistence_location /mosquitto/data/

log_dest file /mosquitto/log/mosquitto.log

listener 1883
allow_anonymous false
password_file /mosquitto/config/passwordfile

Die Konfiguration aktiviert die dauerhafte Speicherung und erlaubt ausschließlich Benutzer mit Kennwort. Als Nächstes erzeugst du die Passwortdatei für den MQTT-Benutzer mqtt:

docker run --rm -it \
  -v /mnt/user/appdata/mosquitto/config:/mosquitto/config \
  eclipse-mosquitto:2 \
  mosquitto_passwd -c /mosquitto/config/passwordfile mqtt

Du wirst danach zweimal nach einem Kennwort gefragt. Dieses wird nur als sicherer Hash in der Datei passwordfile gespeichert.

Optional: anonymer Docker-Broker

Auch der eigenständige Docker-Broker kann ohne MQTT-Benutzer betrieben werden. Verwende dafür diese vollständige Konfiguration für die Datei mosquitto.conf:

persistence true
persistence_location /mosquitto/data/

log_dest file /mosquitto/log/mosquitto.log

listener 1883
allow_anonymous true

Die Zeile password_file /mosquitto/config/passwordfile muss in dieser Variante entfernt werden. Das Erstellen der Passwortdatei mit mosquitto_passwd ist dann nicht erforderlich. Nach dem Neustart des Containers trägst du bei Home Assistant und den MQTT-Geräten keinen Benutzer und kein Kennwort ein.

Wichtig: Diese Variante nur verwenden, wenn der Broker ausschließlich im vertrauenswürdigen lokalen Netzwerk erreichbar ist. Jeder Client im LAN kann sonst Nachrichten lesen und veröffentlichen.

Achtung

Der Parameter -c erstellt die Passwortdatei neu. Möchtest du später einen weiteren Benutzer ergänzen, verwendest du denselben Befehl ohne -c. Andernfalls würdest du die vorhandenen Benutzer überschreiben.

06

Docker-Container in Unraid erstellen

Erstelle in Unraid einen neuen Docker-Container mit dem Image eclipse-mosquitto:2. Lege folgende Pfad- und Portzuordnungen an:

Container-PfadHost-PfadTyp
/mosquitto/config/mnt/user/appdata/mosquitto/configPfad
/mosquitto/data/mnt/user/appdata/mosquitto/dataPfad
/mosquitto/log/mnt/user/appdata/mosquitto/logPfad
18831883TCP-Port

Als Netzwerkmodus ist Bridge mit der Portfreigabe 1883:1883 für die meisten Unraid-Installationen ausreichend. Aktiviere außerdem die automatische Neustart-Option des Containers.

Wenn du Docker Compose verwendest, kannst du alternativ diese Konfiguration einsetzen:

services:
  mosquitto:
    image: eclipse-mosquitto:2
    container_name: mosquitto
    restart: unless-stopped
    ports:
      - "1883:1883"
    volumes:
      - /mnt/user/appdata/mosquitto/config:/mosquitto/config
      - /mnt/user/appdata/mosquitto/data:/mosquitto/data
      - /mnt/user/appdata/mosquitto/log:/mosquitto/log

Starte den Container. Im Log sollte Mosquitto anschließend ohne Fehler starten und auf Port 1883 lauschen.

07

Home Assistant mit dem eigenständigen Broker verbinden

  1. Öffne in Home Assistant Einstellungen → Geräte & Dienste.
  2. Klicke auf Integration hinzufügen und suche nach MQTT.
  3. Als Broker trägst du die IP-Adresse deines Unraid-Servers ein, zum Beispiel 192.168.1.10.
  4. Verwende den Port 1883 sowie den Benutzer mqtt und dein selbst vergebenes Kennwort.
  5. Schließe die Einrichtung ab.

Wenn Home Assistant und Mosquitto im selben Docker-Netzwerk liegen, kann auch der Container-Name verwendet werden. Für eine klare und wartungsarme Heimnetz-Konfiguration ist die feste IP-Adresse des Unraid-Servers jedoch meist die einfachere Wahl.

08

MQTT-Verbindung testen

Nach der Einrichtung kannst du direkt in Home Assistant prüfen, ob Nachrichten am Broker ankommen:

  1. Öffne Einstellungen → Geräte & Dienste → MQTT.
  2. Klicke auf Konfigurieren.
  3. Trage unter Auf ein Topic hören ein # ein.
  4. Klicke auf Lauschen starten.

Das Zeichen # steht für alle Topics. Sobald ein MQTT-Gerät eine Nachricht sendet, sollte sie hier sichtbar werden.

Alternativ kannst du mit den Mosquitto-Clients aus einem Linux-Terminal testen. Zuerst hörst du auf alle Nachrichten:

mosquitto_sub -h 192.168.1.10 -p 1883 -u mqtt -P "DEIN_PASSWORT" -v -t "#"

In einem zweiten Terminal veröffentlichst du eine Testnachricht:

mosquitto_pub -h 192.168.1.10 -p 1883 -u mqtt -P "DEIN_PASSWORT" \
  -t "test/hello" -m "MQTT funktioniert"

Erscheint die Nachricht im ersten Terminal oder in Home Assistant, ist dein MQTT-Broker korrekt eingerichtet.

Häufige Probleme und Lösungen

Verbindung abgelehnt: nicht autorisiert

Fast immer stimmen Benutzername oder Kennwort nicht, oder ein Gerät versucht sich anonym zu verbinden.

  • Benutzername und Kennwort in Home Assistant und auf dem Gerät exakt vergleichen.
  • Prüfen, ob die Datei passwordfile im Mosquitto-Konfigurationsordner vorhanden ist.
  • Den Mosquitto-Container oder die App nach jeder Konfigurationsänderung neu starten.
Home Assistant findet den Broker nicht

Prüfe zuerst, ob Mosquitto läuft und Port 1883 erreichbar ist. Bei einer Unraid-Installation ist als Broker die IP-Adresse des Unraid-Servers einzutragen – nicht die IP-Adresse des Home-Assistant-Containers.

  • Container-Log auf Startfehler kontrollieren.
  • Portfreigabe 1883:1883 im Docker-Container überprüfen.
  • IP-Adresse und Netzwerkverbindung des Unraid-Servers prüfen.
Das Gerät erscheint nicht automatisch in Home Assistant

Eine funktionierende MQTT-Verbindung bedeutet zunächst nur, dass Nachrichten übertragen werden. Damit Geräte automatisch angelegt werden, müssen sie MQTT Discovery unterstützen und ihre Konfiguration unter einem Topic wie homeassistant/sensor/.../config veröffentlichen.

Für eigene Projekte sollten Discovery-Konfigurationen mit retain: true veröffentlicht werden. Dann erhält Home Assistant die Gerätebeschreibung auch nach einem Neustart wieder.

Nach einem Neustart sind MQTT-Geräte offline

Der Broker muss automatisch starten und unter derselben Adresse erreichbar bleiben. Verwende beim Docker-Container daher restart: unless-stopped beziehungsweise die automatische Neustart-Option von Unraid. Eine DHCP-Reservierung verhindert zusätzlich, dass sich die Server-IP ändert.

Zusammenfassung

Der Mosquitto Broker als Home-Assistant-App ist der einfachste Weg für Home Assistant OS. Die Installation, Updates und der Start werden direkt über Home Assistant verwaltet.

Ein eigenständiger Mosquitto-Container ist die flexiblere Lösung für Unraid- und Docker-Installationen. Er bleibt unabhängig von Home Assistant und steht gleichzeitig Node-RED, Zigbee2MQTT, Tasmota und eigenen ESP32-Projekten zur Verfügung.

In beiden Fällen solltest du den Broker nur im Heimnetz verwenden, anonyme Zugriffe deaktivieren und für alle Geräte sichere Zugangsdaten verwenden.

Weiterführende Links: Home Assistant MQTT-Integration · Mosquitto Broker App · Mosquitto-Konfigurationsreferenz