Zum Inhalt springen
Alles Automatisch
Guide

MQTT in Home Assistant

Home Assistant MQTT einrichten: Mosquitto Broker installieren, Tasmota-Geräte einbinden und Zigbee2MQTT konfigurieren.

Fortgeschritten9 Min. LesezeitAktualisiert am

Was ist MQTT?

MQTT (Message Queuing Telemetry Transport) ist ein leichtgewichtiges Nachrichtenprotokoll, das speziell für IoT-Geräte entwickelt wurde. Es arbeitet nach dem Publish/Subscribe-Prinzip: Geräte senden (publish) Nachrichten an ein Topic, und andere Geräte empfangen (subscribe) diese Nachrichten über einen zentralen Broker.

Anders als HTTP braucht MQTT nur minimale Bandbreite und funktioniert auch bei instabilen Verbindungen zuverlässig. Deshalb ist es der De-facto-Standard für Smart-Home-Kommunikation.

  1. Sensor (Publisher)
  2. Broker (Mosquitto)
  3. HA (Subscriber)
  4. Automation

Warum MQTT für Smart Home?

  • Extrem schnell: Nachrichten werden in unter 10ms zugestellt, ideal für Echtzeit-Steuerung
  • Energiesparend: Minimaler Overhead, perfekt für batteriebetriebene Sensoren
  • Universell: Funktioniert mit Tasmota, ESPHome, Zigbee2MQTT, Node-RED und tausenden Geräten
  • Entkoppelt: Sender und Empfänger müssen sich nicht kennen, maximale Flexibilität
  • Retained Messages: Der Broker speichert die letzte Nachricht. Neue Subscriber erhalten sofort den aktuellen Wert
  • Sicher: Unterstützt TLS-Verschlüsselung und Benutzer-Authentifizierung

MQTT-Konzepte verstehen

Topics: Die Adresse deiner Nachrichten

Topics sind hierarchische Pfade, die Nachrichten organisieren. Sie funktionieren wie Ordnerpfade:

text
1# Topic-Beispiele
2# Grundstruktur: bereich/raum/gerät/eigenschaft
3haus/wohnzimmer/temperatur          # Temperaturwert
4haus/kueche/licht/status             # Lichtstatus (on/off)
5haus/garten/bewaesserung/command     # Steuerbefehl
6
7# Wildcards:
8haus/+/temperatur                   # + = ein Level (alle Räume)
9haus/#                              # # = alle darunter (alles im Haus)
10
11# Spezielle Topics:
12homeassistant/sensor/...            # MQTT Auto-Discovery
13zigbee2mqtt/...                     # Zigbee2MQTT Geräte

QoS: Quality of Service

QoS LevelBezeichnungZustellungAnwendung
QoS 0At most onceMaximal 1x, kann verloren gehenSensor-Werte (häufige Updates)
QoS 1At least onceMindestens 1x (evtl. doppelt)Standard für die meisten Fälle
QoS 2Exactly onceGenau 1x (langsamer)Kritische Steuerbefehle

Retain und Last Will

Hinweis: Wenn eine Nachricht mit dem Retain-Flag gesendet wird, speichert der Broker sie. Jeder neue Subscriber erhält sofort den letzten Wert, perfekt für Statusanzeigen wie Temperatur oder Schaltzustand.

Hinweis: Ein Gerät kann beim Verbinden eine LWT-Nachricht hinterlegen. Bricht die Verbindung ab, sendet der Broker diese automatisch. So erkennt Home Assistant, wenn ein Gerät offline geht.


Mosquitto Broker installieren

  1. App installieren: Einstellungen, Apps, App installieren, nach Mosquitto broker suchen
  2. Benutzer erstellen: Einstellungen, Personen, neuen Benutzer für MQTT erstellen (z.B. mqtt_user)
  3. App konfigurieren: Mosquitto App, Konfiguration Tab, Standard-Einstellungen reichen meist
  4. App starten: Starten klicken, Watchdog und Autostart aktivieren
  5. Integration hinzufügen: Einstellungen, Geräte & Dienste, MQTT Integration wird automatisch erkannt

Mosquitto Konfiguration (erweitert)

yaml
1# Mosquitto App Config (fortgeschritten)
2# Standard-Konfiguration (App Konfiguration Tab)
3logins: []          # Leer = HA-Benutzer verwenden
4require_certificate: false
5certfile: fullchain.pem
6keyfile: privkey.pem
7customize:
8  active: true
9  folder: mosquitto
10
11# Für TLS-Verschlüsselung (mit Let's Encrypt):
12# certfile und keyfile auf deine Zertifikate zeigen lassen
13# Port 8883 wird automatisch aktiviert
text
1# mosquitto/accesscontrollist (ACL)
2# Datei: /share/mosquitto/accesscontrollist
3# Zugriffsrechte pro Benutzer definieren
4
5# Standard-Benutzer: Lesen und Schreiben auf eigene Topics
6user mqtt_sensor
7topic readwrite sensor/#
8
9# Home Assistant: Vollzugriff
10user mqtt_ha
11topic readwrite #
12
13# Nur-Lesen für Monitoring
14user mqtt_monitor  
15topic read #

MQTT in Home Assistant konfigurieren

Automatische Discovery

Die meisten MQTT-Geräte (Tasmota, Zigbee2MQTT, ESPHome) unterstützen MQTT Auto-Discovery. Dabei sendet das Gerät seine Konfiguration an ein spezielles Topic, und Home Assistant erstellt automatisch die passenden Entities.

Die Discovery-Option object_id gibt es nicht mehr. Nutze stattdessen default_entity_id, falls du eigene Discovery-Payloads baust.

json
1{
2  "name": "Wohnzimmer Temperatur",
3  "unique_id": "sensor_wz_temp_01",
4  "device_class": "temperature",
5  "state_topic": "haus/wohnzimmer/sensor/temperatur",
6  "unit_of_measurement": "°C",
7  "value_template": "{{ value_json.temperature }}",
8  "device": {
9    "identifiers": ["sensor_wz_01"],
10    "name": "Wohnzimmer Multisensor",
11    "manufacturer": "DIY",
12    "model": "ESP32-DHT22"
13  }
14}

Manuelle MQTT-Sensoren in configuration.yaml

Die YAML-Syntax für Sensoren und Integrationen wird im YAML-Konfiguration Guide ausführlich erklärt.

yaml
1# MQTT Sensoren manuell definieren
2mqtt:
3  # Temperatursensor
4  sensor:
5    - name: "Aussentemperatur"
6      state_topic: "haus/aussen/temperatur"
7      unit_of_measurement: "°C"
8      device_class: temperature
9      value_template: "{{ value_json.temperature | round(1) }}"
10      json_attributes_topic: "haus/aussen/temperatur"
11      json_attributes_template: >
12        {{ {'humidity': value_json.humidity,
13            'battery': value_json.battery} | tojson }}
14
15    - name: "Regenmenge Heute"
16      state_topic: "haus/aussen/regen"
17      unit_of_measurement: "mm"
18      icon: "mdi:weather-rainy"
19      value_template: "{{ value_json.rain_mm }}"
20
21  # Binär-Sensoren (An/Aus)
22  binary_sensor:
23    - name: "Haustür"
24      state_topic: "haus/eingang/tuer"
25      device_class: door
26      payload_on: "open"
27      payload_off: "closed"
28
29    - name: "Bewegung Flur"
30      state_topic: "haus/flur/pir"
31      device_class: motion
32      payload_on: "1"
33      payload_off: "0"
34      off_delay: 120    # Nach 120s automatisch auf "off"
35
36  # Schalter (steuerbar)
37  switch:
38    - name: "Gartenpumpe"
39      state_topic: "haus/garten/pumpe/status"
40      command_topic: "haus/garten/pumpe/set"
41      payload_on: "ON"
42      payload_off: "OFF"
43      retain: true
44
45  # Licht (dimmbar)
46  light:
47    - name: "Schreibtischlampe"
48      state_topic: "haus/buero/lampe/status"
49      command_topic: "haus/buero/lampe/set"
50      brightness_state_topic: "haus/buero/lampe/brightness"
51      brightness_command_topic: "haus/buero/lampe/brightness/set"
52      brightness_scale: 255

Tasmota-Geräte über MQTT

Tasmota ist eine beliebte Open-Source-Firmware für ESP8266/ESP32-basierte Geräte (Sonoff, Tuya, usw.). Nach dem Flashen kommunizieren sie über MQTT mit Home Assistant.

  1. Gerät mit Tasmota flashen: Über USB mit tasmota.github.io/install oder Tuya-Convert (OTA)
  2. WLAN konfigurieren: Mit dem Tasmota-Hotspot verbinden, WLAN-Daten eingeben
  3. MQTT konfigurieren: Web-UI, Configuration, MQTT: Broker-IP, Benutzer und Passwort eingeben
  4. Auto-Discovery aktivieren: Tasmota Console: SetOption19 0 und SetOption30 1 (HA Discovery Format)
  5. In HA erkannt: Das Gerät erscheint automatisch unter Geräte & Dienste
yaml
1# Tasmota MQTT-Einstellungen (Web-UI)
2# Tasmota Configuration > MQTT:
3Host:     192.168.1.100      # IP deines HA-Servers
4Port:     1883
5Client:   tasmota_steckdose
6User:     mqtt_user
7Password: dein_passwort
8Topic:    steckdose_buero
9
10# Wichtige Console-Befehle:
11# SetOption19 0    -> Neues HA Discovery Format
12# SetOption30 1    -> HA Discovery aktivieren  
13# TelePeriod 30    -> Telemetrie alle 30 Sekunden

Tasmota Energiemessung in HA

yaml
1# Tasmota Energiedaten auswerten
2# Tasmota sendet automatisch Energiedaten:
3# Topic: tele/steckdose_buero/SENSOR
4# Payload:
5# {
6#   "ENERGY": {
7#     "Power": 45,
8#     "Voltage": 230,
9#     "Current": 0.196,
10#     "Today": 1.234,
11#     "Total": 567.89
12#   }
13# }
14
15# In HA als Template-Sensor:
16template:
17  - sensor:
18      - name: "Büro Steckdose Kosten Heute"
19        state: >
20          {{ (states('sensor.steckdose_buero_energy_today') | float * 0.35) | round(2) }}
21        unit_of_measurement: "EUR"
22        icon: "mdi:currency-eur"

MQTT mit Zigbee2MQTT

Zigbee2MQTT verbindet Zigbee-Geräte über MQTT mit Home Assistant. Mehr zu den Funkprotokollen selbst findest du im Zigbee & Z-Wave Guide. Z2M ist die beliebteste Alternative zur ZHA-Integration und bietet mehr Kontrolle und Geräteunterstützung.

Vorteile:

  • Sehr viele unterstützte Geräte (öffentliche Geräteliste)
  • Eigene Web-UI für Geräteverwaltung
  • OTA-Firmware-Updates
  • Gerätegruppen und Binding
  • Aktive Community mit schnellem Support

Nachteile:

  • Braucht Mosquitto MQTT als Voraussetzung
  • Etwas komplexerer Setup als ZHA
  • Separate App neben HA
yaml
1# Zigbee2MQTT Konfiguration
2# /config/zigbee2mqtt/configuration.yaml
3# Stand Zigbee2MQTT 2.x
4homeassistant:
5  enabled: true        # HA Auto-Discovery
6
7mqtt:
8  base_topic: zigbee2mqtt
9  server: mqtt://localhost:1883
10  user: mqtt_user
11  password: '!secret.yaml password'   # Z2M-eigene secret.yaml, mit Anführungszeichen
12
13serial:
14  port: /dev/ttyUSB0   # Dein Zigbee-Koordinator
15  adapter: ember       # Silicon Labs (ZBT-1/ZBT-2/ZBDongle-E), für ZBDongle-P: zstack
16
17advanced:
18  network_key: GENERATE
19  pan_id: GENERATE
20  channel: 25           # Empfohlen: 15, 20 oder 25
21
22frontend:
23  enabled: true         # Standalone: Port 8080, mit der HA-App über die Seitenleiste
24
25devices:
26  # Geräte werden automatisch hinzugefügt
27  '0x00158d0001234567':
28    friendly_name: 'wohnzimmer_sensor'
29
30groups:
31  '1':
32    friendly_name: 'alle_lichter_wohnzimmer'
33    devices:
34      - '0x00158d0001234568'
35      - '0x00158d0001234569'

MQTT testen und debuggen

MQTT Explorer

MQTT Explorer ist ein kostenloses Desktop-Tool zum Visualisieren aller MQTT-Topics und Nachrichten. Unverzichtbar beim Debuggen.

HA-interne MQTT-Tools

yaml
1# MQTT-Nachrichten in HA testen
2# Einstellungen > Geräte & Dienste > MQTT > Konfigurieren > Ein Topic abonnieren:
3# Topic: haus/#
4# -> Zeigt alle eingehenden Nachrichten
5
6# Einstellungen > Geräte & Dienste > MQTT > Konfigurieren > Ein Paket veröffentlichen:
7# Topic: haus/garten/pumpe/set
8# Payload: ON
9# -> Schaltet die Gartenpumpe ein
10
11# Automation zum MQTT-Debugging:
12automation:
13  - alias: "MQTT Debug Logger"
14    triggers:
15      - trigger: mqtt
16        topic: "haus/#"
17    actions:
18      - action: system_log.write
19        data:
20          message: >
21            MQTT: {{ trigger.topic }} = {{ trigger.payload }}
22          level: info

Häufige MQTT-Probleme

ProblemUrsacheLösung
Gerät verbindet nichtFalsche Broker-Adresse oder ZugangsdatenIP, Port, User und Passwort prüfen
Nachrichten kommen nicht anFalsches Topic oder FirewallMQTT Explorer nutzen, Topics prüfen
Gerät zeigt offlineLWT-Nachricht ausgelöstGerät-Verbindung und WLAN prüfen
Doppelte EntitiesDiscovery sendet mehrfachAlte Discovery-Topics löschen
Werte veraltetKein Retain oder zu langes IntervallRetain-Flag aktivieren, TelePeriod reduzieren

Praxis-Beispiel: Kompletter MQTT-Sensor

Hier ein vollständiges Beispiel eines ESP32 mit DHT22 und MQTT, das Temperatur und Luftfeuchtigkeit an Home Assistant sendet:

yaml
1# ESPHome-Variante (empfohlen, statt Arduino)
2# ESPHome nutzt zwar nativ die API, kann aber auch MQTT:
3esphome:
4  name: aussen-sensor
5
6esp32:
7  board: esp32dev
8
9wifi:
10  ssid: !secret wifi_ssid
11  password: !secret wifi_password
12
13mqtt:
14  broker: 192.168.1.100
15  username: mqtt_user
16  password: !secret mqtt_password
17  topic_prefix: haus/aussen
18
19sensor:
20  - platform: dht
21    pin: GPIO4
22    model: DHT22
23    temperature:
24      name: "Temperatur"
25    humidity:
26      name: "Luftfeuchtigkeit"
27    update_interval: 30s
28
29  - platform: adc
30    pin: GPIO34
31    name: "Batterie"
32    unit_of_measurement: "%"
33    filters:
34      - calibrate_linear:
35          - 1.0 -> 0
36          - 3.3 -> 100

Hinweis: Für eigene ESP-Geräte empfehle ich die native ESPHome-API statt MQTT, sie ist schneller, verschlüsselt und braucht keinen Broker. Nutze MQTT nur, wenn du das Gerät auch mit anderen Systemen (Node-RED, Grafana) verbinden willst.

Hinweis: Teste das Publish/Subscribe-Prinzip live in unserem MQTT Nachrichten-Simulator →

Häufige Fragen

Was ist MQTT und wofür brauche ich es?

MQTT ist ein leichtgewichtiges Nachrichtenprotokoll für IoT-Geräte. Geräte senden Nachrichten an Topics, ein zentraler Broker verteilt sie an alle Empfänger. In Home Assistant brauchst du MQTT vor allem für Zigbee2MQTT, Tasmota-Geräte und DIY-Projekte.

Wie installiere ich einen MQTT-Broker in Home Assistant?

Installiere die App „Mosquitto broker" über Einstellungen → Apps, lege einen eigenen Benutzer für MQTT an und starte die App. Home Assistant erkennt den Broker danach automatisch und schlägt die MQTT-Integration vor. Die Standard-Einstellungen reichen für die meisten Setups.

Was bedeutet Retain bei MQTT?

Eine Nachricht mit Retain-Flag wird vom Broker gespeichert. Jeder neue Subscriber bekommt sofort den letzten Wert, statt auf die nächste Nachricht zu warten. Das ist praktisch für Statuswerte wie Temperatur oder Schaltzustände.

Wie teste ich, ob MQTT funktioniert?

In Home Assistant kannst du unter Einstellungen, Geräte & Dienste, MQTT, Konfigurieren Nachrichten abhören und selbst senden. Mit dem Topic haus/# siehst du zum Beispiel alles, was unterhalb von „haus" ankommt. Für die große Übersicht ist der kostenlose MQTT Explorer am Desktop unverzichtbar.

Braucht ESPHome MQTT?

Nein. Eigene ESP-Geräte verbinden sich über die native ESPHome-API mit Home Assistant, die schneller und verschlüsselt ist und keinen Broker braucht. MQTT lohnt sich bei ESPHome nur, wenn du das Gerät auch mit anderen Systemen wie Node-RED oder Grafana verbinden willst.

Weiter lesen:

Zum Thema

Passende Videos