In diesem Artikel kannst du nachlesen, wie du MQTT in Home Assistant einrichten kannst. In meinem anderen Artikel kannst du nachlesen, wie du Home Assistant installieren kannst.

Mosquitto ist ein Open Source MQTT Broker (Wikipedia). Dieser eignet sich perfekt, um Daten von kleinen stromsparenden Sensoren über Netzwerk einzusammeln und diese Daten anschließend auf leistungsfähigeren Geräten weiterzuverarbeiten.

Die Sensoren dafür kannst du selber mit Mikrocontrollern wie zum Beispiel dem NodeMCU erstellen. Außerdem gibt es aber auch fertige Sensoren zum Kaufen die mit MQTT arbeiten können.

Einrichtung auf Raspberry Pi

Wenn du Home Assistant auf einem Raspberry Pi mit einem Image von hass.io betreibst (hassbian), ist die Einrichtung besonders einfach.

Im somit verfügbaren Addon-Store von HASS (Menüband links) gibt es ein vorgefertigtes Addon für den Mosquitto MQTT Broker.

Dieses kannst du wie gewohnt per Knopfdruck installieren und der Broker ist anschließend in Betrieb und in der HASS-Config hinterlegt.

Lokale Linux Installation

Mosquitto ist in den meisten Paket-Managern bereits verfügbar. Wenn du ihn lokal installieren willst, hier ein Beispiel für apt:

#Paket-Quelle hinzufügen
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt update

#Mosquitto Broker installieren
sudo apt install mosquitto

#Mosquitto CLI installieren
sudo apt install mosquitto-clients

Damit hast du den Mosquitto MQTT Broker auch schon installiert.

Wichtig: Wie immer beim Installieren von Server-Software solltest du an deine Firewall denken beim Test :-)

Einrichtung als Docker Container

Für die Installation per Docker Container stellt die Eclipse Foundation ein zertifiziertes Image bereit. Dieses findest du auf DockerHUB

Dockerhub Screenshot Mosquitto Image
Offizielles Docker Image von Mosquitto- mit 6MB auch schön schmal :-)

Einrichtung mit Docker Compose

Um Mosquitto mit Docker Compose einzurichten, brauchst du unter Linux zunächst Docker Compose selbst. Verwende dazu am besten den vorhanden Packet-Manager wie zum Beispiel apt:

$ sudo apt install docker-compose

Bei Windows und unter Macintosh sollte Docker Compose bereits standardmäßig mit Docker mitinstalliert worden sein.

Als Nächstes erstellst du dir in einem Ordner eine docker-compose.yml:

version: "2"
services:
  mosquitto:
    image: eclipse-mosquitto
    container_name: mqtt
    network_mode: host
    restart: always
    volumes:
      - /var/dockerfiles/mosquitto/config:/mosquitto/config
      - /var/dockerfiles/mosquitto/data:/mosquitto/data
      - /var/dockerfiles/mosquitto/log:/mosquitto/log
    ports:
      - "1883:1883"
      - "9001:9001"

Wie du siehst, habe ich 3 Volumes definiert, um die Konfiguration und Daten außerhalb des Containers zu speichern. So bleiben die Daten erhalten auch, wenn du den Container ausschalten musst.

Die Pfade kannst du frei bestimmen. Nur die Mount-Points, der Teil nach dem Doppelpunkt, muss bleiben wie er ist.

Speicher die Datei und führe in der Shell im gleichen Ordner folgenden Befehl aus um den Container zu starten:

docker-compose up -d

Installation auf einem Synology NAS

Zunächst musst du Docker auf dem Synology NAS installieren. Ob das bei deinem NAS geht und wie du das machst, kannst du in meinem anderen Artikel Docker auf Synology NAS installieren nachlesen.

Wenn du Docker installiert hast, gehe wie folgt vor:

  1. Melde dich an deinem NAS über die Weboberfläche an
  2. Wechsle in die Docker App
  3. Gehe zur Registrierung und suche nach dem Mosquitto Image. Lade das Image herunter
  4. Öffne nun das Wizard für einen neuen Container mit diesem Image.
  5. Wechsle zu erweiterten Einstellungen und geh zum Tab Volumes
  6. Erstelle einen Ordner mqtt-config und mounte ihn unter /mosquitto/config
  7. Lege einen Ordner mqtt-data an und mounte ihn unter /mosquitto/config
  8. Erstelle einen Ordner mqtt-log und mounte ihn unter /mosquitto/log
  9. Wechsle zum Reiter Ports (Alternativ für 9-11 kannst du den Container im gleichen Netzwerk betreiben)
  10. Leite den Container-Port 1883 auf einen lokalen Port um. Das ist der Standardport. Du kannst lokal ebenfalls 1883 verwenden.
  11. Leite den Container-Port 9001 auf einen lokalen Port um. Das ist der Socket-Port. Du kannst lokal ebenfalls 9001 verwenden
  12. Lege in deinem config-Ordner eine Datei mosquitto.conf an. Beispiel siehe gleich unten
  13. Starte den erstellten Container, fertig!

mosquitto.conf minimal

Hier eine minimale conf-Datei:

# When run as root, drop privileges to this user and its primary
# group.
# Set to root to stay as root, but this is not recommended.
# If run as a non-root user, this setting has no effect.
# Note that on Windows this has no effect and so mosquitto should
# be started by the user you wish it to run as.
user mosquitto

# Port to use for the default listener.
port 1883
listener 9001
protocol websockets

# Save persistent message data to disk (true/false).
# This saves information about all messages, including
# subscriptions, currently in-flight messages and retained
# messages.
# retained_persistence is a synonym for this option.
persistence true

# Location for persistent database. Must include trailing /
# Default is an empty string (current directory).
# Set to e.g. /var/lib/mosquitto/ if running as a proper service on Linux or
# similar.
persistence_location /mosquitto/data

Für mehr Paramter findest du auf Github die volle Version einer conf-Datei

Die Installation testen und Tools

Für das Testen deiner frischen MQTT Broker Installation gibt jede Menge Open Source Tools. Hier einer Liste von denen, die mir am besten gefallen:

  1. MQTTLens (Google Chrome Addon)
  2. MyMQTT (Android App)
  3. mqtt-spy (Java-Client)
  4. mqtt-fx (JavaFX Client)

Am besten davon gefallen mir 1-3!

MQTT-Spy Screenshot
Mit Tools wie MQTT-Spy kannst du leicht deinen neuen Broker testen
Hinweis: Mosquitto ist standardmäßig ungeschützt. Wenn du Benutzer und Passwort vergeben willst musst das in der mosquitto.conf Datei hinterlegen.

Um die Installation zu testen, besorge dir eines der Tools aus der Liste. Hier nehme ich als Beispiel mqtt-lens.

  1. Installiere mqtt-lens aus dem Chrome-Appstore
  2. Lege eine neue Verbindung an über den Connection Button
  3. Subscribe ein beliebiges Topic, zum Beispiel "test"
  4. Sende eine Nachricht im Topic das du gerade angelegt hast. Du solltest die Nachricht nun in der Ausgabe sehen.
mqtt-lens Screenshot
Hier der Test als Screenshot. Mit mqtt-lens kannst du deine Installation leicht testen.

Mosquitto MQTT Broker in Home Assistant einbinden

Für die Einrichtung des Brokers selbst kannst du entweder direkt über die Weboberfläche unter Einstellungen/Integrationen MQTT hinzufügen, oder du gehst über die configuration.yaml

Hier zeige ich dir, wie du es direkt in der YAML-Datei machst. Das bring dir auf Dauer mehr.

Öffne die configuration.yaml deiner Home Assistant Installation und füge folgenden Eintrag ein:

#MQTT Broker
mqtt:
  broker: <ersetze-durch-deine-ip>
  port: 1883

Starte anschließend Home Assistant neu und du solltest unter Integrationen einen neuen Eintrag für deinen Broker sehen

Du kannst jetzt aus dem Test noch das Topic "test" anlegen als eine Art Test-Sensor. Trage dafür folgendes in deine configuration.yaml ein:

sensor:
  - platform: mqtt
    name: "Testsensor"
    state_topic: "test"

Starte anschließend nochmals Home Assistant neu. Jetzt kannst du nochmal eine Testnachricht in das test-topic senden. Diese Message sollte dann im Logbuch als neuer Status deines Testsensors auftauchen:

Home Assistant Logbuch
Test erfolgreich und den MQTT Broker erfolgreich in Home Assistant eingebunden :-)
Du kannst übringes auch direkt aus dem Dashboard eine Topic-Subscription anlegen und Nachrichten in Topics schreiben. Gehe dazu auf :
Entwicklerwerkzeuge --> MQTT

Nach Abschluss der Installation und der Einbindung bist du grundsätzlich erstmal bereit mit MQTT Sensoren in Home Assistant zu arbeiten. Deine nächsten Schritte könnten sein etwas einzubinden. Dazu wird es bald weitere Artikel hier geben.

Viele Grüße
tm