LW IT Solutions logo LW IT Solutions logo LW IT Solutions
« Blog-Übersicht /Smart Home/Tutorials / MQTT-Sensoren in Home Assistant einbinden: Messwerte in...
Diesen Artikel in anderen Sprachen lesen:

MQTT-Sensoren in Home Assistant einbinden: Messwerte in der Energieübersicht anzeigen

MQTT-Sensoren in Home Assistant einbinden: Messwerte in der Energieübersicht anzeigenMQTT-Sensoren in Home Assistant einbinden: Messwerte in der Energieübersicht anzeigen

Management Summary

Das Energie-Dashboard von Home Assistant macht Zählerwerte als Übersicht über den Energiehaushalt sichtbar. MQTT Discovery meldet einen Zähler über eine Nachricht beim System an, damit dessen Werte richtig eingeordnet und gespeichert werden können. Das hilft bei der Einbindung eigener Geräte. Momentane Leistung und über die Zeit aufsummierte Energie beschreiben jedoch Verschiedenes; die Übersicht braucht den passenden Messwert. Ein Zähler mit bloßem Saldo liefert keine getrennten Gesamtsummen für Strombezug und Einspeisung.

Inhalt
  1. 1. Zuerst die Messgröße festlegen
  2. 2. Eine gültige Sensorkonfiguration veröffentlichen
  3. 3. Konfiguration verfügbar und Messwerte aktuell halten
  4. 4. Jede Stufe getrennt prüfen
  5. Fragen und Antworten
  6. Quellen

MQTT Discovery beschreibt einen Sensor für Home Assistant. Ein separates Topic, also ein benannter Nachrichtenkanal, transportiert die Messwerte. Das Energie-Dashboard nutzt anschließend geeignete Sensordaten und Statistiken. Diese Schritte sind getrennt zu prüfen: Gültiges JSON allein garantiert weder einen funktionierenden Sensoreintrag in Home Assistant noch eine Energiegrafik.

1. Zuerst die Messgröße festlegen

Das Beispiel erfasst aufgelaufenen Strombezug in kWh. Der Zähler steigt normalerweise und kann wieder bei null beginnen. Dafür passt total_increasing. Ein Lebenszeitzähler ohne Rücksetzung kann total ohne last_reset verwenden. Ein saldierender Zähler mit steigenden und fallenden Werten benötigt eine andere Behandlung; total_increasing würde echte Rückgänge falsch einordnen.

Leistung in W beschreibt den momentanen Energieumsatz, Energie in kWh eine aufsummierte Menge. Aktuelle Home-Assistant-Versionen unterstützen geeignete Leistungssensoren in den Leistungsfeldern des Dashboards: device_class: power mit state_class: measurement. Ein W-Messwert darf nicht einfach die Beschriftung kWh erhalten.

Vier Prüfungen von Discovery bis zum Energie-Dashboard
Vier Prüfungen von Discovery bis zum Energie-Dashboard

2. Eine gültige Sensorkonfiguration veröffentlichen

Der Broker ist der Server, der MQTT-Nachrichten an die jeweiligen Abonnenten verteilt. Voraussetzungen sind ein erreichbarer Broker, eine eingerichtete MQTT-Integration und aktivierte Discovery mit dem erwarteten Präfix. Das Beispiel für eine einzelne Komponente verwendet homeassistant/sensor/example_meter_import/config. Die Kennungen im Discovery-Topic erlauben Buchstaben, Ziffern, Unterstriche und Bindestriche, keinen beliebigen Freitext.

Die Datei energy-discovery.json beschreibt einen erfundenen Zähler. Die stabile eindeutige Kennung muss innerhalb der Installation eindeutig bleiben. Der Anzeigename lässt sich unabhängig davon ändern.

{
  "name": "Imported energy",
  "state_topic": "example/meter/import_kwh",
  "unique_id": "example_meter_import",
  "device_class": "energy",
  "unit_of_measurement": "kWh",
  "state_class": "total_increasing",
  "expire_after": 900,
  "device": {
    "identifiers": [
      "example_meter"
    ],
    "name": "Example meter"
  }
}

state_topic ist für einen MQTT-Sensor erforderlich. Weitere Felder richten sich nach der gewünschten Funktion. Eine eindeutige Kennung ermöglicht die Verwaltung über das Entitätsregister und die hier gezeigte Gerätezuordnung; eine allgemeine Pflicht des Energie-Dashboards ist das Feld nicht. Geräte-Discovery mit einer gemeinsamen device-Nachricht verwendet ein anderes Format mit zusätzlichen Pflichtfeldern.

3. Konfiguration verfügbar und Messwerte aktuell halten

Das Beispiel speichert die Konfiguration mit Retain beim Broker. Alternativ kann der Sender Discovery nach der Startmeldung von Home Assistant erneut veröffentlichen, normalerweise online auf homeassistant/status. Nach Discovery werden außerdem aktuelle Zustände benötigt. Retain ist damit eine Übertragungsmöglichkeit, weder Pflichtfeld noch Garantie für eine Sicherung auf Festplatte bei Brokerausfällen.

Die folgenden Befehle benötigen Mosquitto-Clients ab Version 2.1, da -o erst dort verfügbar ist. mqtt-client.conf enthält Brokeradresse, TLS-Einstellungen und Zugangsdaten als Optionen, jeweils eine pro Zeile. Restriktive Dateirechte schützen die Zugangsdaten; das Passwort steht nicht in der Befehlszeile. Bei älteren Versionen ist die Standard-Konfigurationsdatei eine Alternative. Für Zustandsnachrichten darf die Datei keine Retain-Option enthalten.

mosquitto_pub -o ./mqtt-client.conf -q 1 -r \
  -t homeassistant/sensor/example_meter_import/config \
  -f energy-discovery.json
mosquitto_pub -o ./mqtt-client.conf -q 1 \
  -t example/meter/import_kwh -m '1234.500'
mosquitto_pub -o ./mqtt-client.conf -q 1 \
  -t example/meter/import_kwh -m '1234.625'

Zuerst läuft nur der Konfigurationsbefehl. Vor den beiden Messwertbefehlen müssen Entität und Zustandsabonnement bereitstehen; eine erfolgreiche Veröffentlichung beweist noch keine verarbeitete Discovery. Bei einer Umstellung muss außerdem ein vorhandener Retain-Wert auf dem Zustandstopic entfernt werden. Spätere Nachrichten ohne Retain löschen diesen alten gespeicherten Wert nicht.

Die beiden Beispielwerte unterscheiden sich um 0,125 kWh. Dafür ist ein isolierter Testsensor vorgesehen; erfundene Werte gehören nicht in die Historie eines echten Zählers. Der Sender sollte regelmäßig und mit ausreichendem Abstand zur eingestellten Ablaufzeit von 900 Sekunden melden.

Die Zustandsnachrichten verwenden bewusst kein -r. Bei expire_after könnte ein gespeicherter alter Wert nach erneutem Laden wieder zugestellt werden und frisch erscheinen. Verfügbarkeitsmeldungen mit Birth und Will können zusätzlich einen Verbindungsabbruch anzeigen. Ein Nachweis aktueller physischer Messungen entsteht dadurch nicht.

4. Jede Stufe getrennt prüfen

  • Discovery: Das genaue Konfigurationstopic abonnieren und MQTT-Fehler in Home Assistant prüfen. Syntaktisch gültiges JSON kann trotzdem das Sensorschema verletzen.
  • Messwert: Auf example/meter/import_kwh muss eine Zahl mit Dezimalpunkt und ohne Einheit stehen. Ein Abonnement dieses Zweigs erfasst keine Nachrichten unter homeassistant/....
  • Statistik: Energieklasse, kWh-Einheit, passende Summenklasse und aktiven Recorder prüfen. Statistikfehler und nicht verfügbare Werte sind vor der Interpretation einer Grafik zu klären.
  • Dashboard: Den Sensor im Feld für bezogene Energie auswählen. Kurzzeitstatistiken entstehen alle fünf Minuten, Langzeitstatistiken stündlich. Der erste Wert setzt den Ausgangspunkt und zählt nicht als Verbrauch seit der Installation. Direkt nach Discovery ist deshalb keine vollständige Grafik garantiert.

Unerwartete Rückgänge erfordern eine Prüfung von Zähler und Zustandsklasse. Eine Rücksetzung und ein echter negativer Energiefluss sind verschiedene Vorgänge. Die Addition von Zählern mit unterschiedlichen Rücksetzzeitpunkten kann künstliche Summen erzeugen; getrennte Dashboard-Quellen vermeiden dieses konkrete Additionsproblem.

Fragen und Antworten

Wie lässt sich ein erkannter Sensor entfernen?

Eine leere Retain-Nachricht auf genau diesem Discovery-Topic entfernt die Konfiguration. Historische Statistiken werden dadurch nicht automatisch gelöscht. Die Bereinigung muss auf das beabsichtigte Topic und die betreffende Entität begrenzt bleiben.

mosquitto_pub -o ./mqtt-client.conf -q 1 -r \
  -t homeassistant/sensor/example_meter_import/config -n

Liefert ein saldierter Zähler Bezug und Einspeisung getrennt?

Aus aufsummierten Nettowerten allein lässt sich diese Trennung nicht rekonstruieren. Getrennte Bezugs- und Einspeiseregister erhalten beide Flüsse; die Saldierung verliert diese Information. Verfügbare Register hängen vom Zählermodell ab. Die Integration ausreichend häufiger Leistungswerte ist eine weitere Möglichkeit; Abtastung und Rechenverfahren beeinflussen deren Genauigkeit.

Welche Rechte werden benötigt?

Der Beispielsender benötigt Schreibrechte auf Konfigurations- und Zustandstopic. Home Assistant braucht passende Abonnements. Startgesteuerte Discovery und Verfügbarkeit benötigen zusätzliche Topics. Das Sensorbeispiel ist keine vollständige ACL-Regelung für Aktoren oder eine gesamte Installation.

Quellen

Lukas Wojcik

Lukas Wojcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Kontakt

Eine Frage oder eine Idee für ein Webprojekt? Schreib mir kurz, worum es geht. Das Formular nutzt reCAPTCHA und formconfirmed zum Schutz vor Spam.

Kommentar schreiben

Erfahrungen mit anderen Geräten oder Integrationen und Rückfragen zur Einrichtung sind hier willkommen.

Die E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind mit einem Stern versehen.

LUKASWOJCIK.COM · NEWSLETTER

Neue Ideen im Postfach

Neue Blogartikel, praktische Tools und Einblicke in die Projekte.

Themen auswählen (optional)
Ohne Auswahl: alle Themen.

Erst nach Bestätigung per E-Mail. · Datenschutz

Datenschutz · Newsletter

E-Mail-Adresse, Sprache, Themenauswahl sowie Anmelde- und Bestätigungszeit werden für den Newsletter gespeichert. Versand nur nach Double-Opt-in. Jede Ausgabe enthält eine sofortige Abmeldung. Formconfirmed prüft die Anmeldung auf Spam; dafür werden Formularsignale und die E-Mail-Adresse verarbeitet. Keine Öffnungs- oder Klicktracking-Pixel im Newsletter.

Vollständige Datenschutzerklärung öffnen ↗