MQTT-Client App statt ioBroker-HASS-Adapter: gezielte HA → ioBroker Übertragung

Ich habe eine kleine Home-Assistant-App gebaut, die ausgewählte Geräte und Werte gezielt per MQTT an ioBroker überträgt. Ziel ist nicht, den kompletten Home-Assistant-Bestand über den ioBroker-HASS-Adapter zu spiegeln, sondern einzelne Geräte oder Werte bewusst auszuwählen. In ioBroker entsteht dann ein übersichtlicher Gerätebaum, z. B. ha_external → gerätename → wert → state.

Steuerbare Werte wie Switches, Input-Booleans, Slider/Zahlen, Selects, Textfelder und Taster können zusätzlich über /set wieder zurück nach Home Assistant geschaltet oder gedrückt werden. Sensorwerte bleiben nur ausgehend.

Empfohlene Einstellungen im ioBroker-MQTT-Adapter im Server/Broker-Modus:

  • Keine neuen Zustände erstellen: aus

  • Zustandsobjekt als MQTT-Nachricht senden: aus

  • Ausgabe jeder Nachricht loggen / Debug: aus

  • Sendeverzögerung: bei vielen Werten ca. 100–200 ms

  • Retain-Flag setzen: normalerweise aus

Damit wurden bei mir alle state-Werte sauber angelegt und die Warnungen zu fehlenden Objekten waren weg.

GitHub: https://github.com/rockbaer2007/ugso-ha-mqtt-addons
Add-on: MQTT-Client im Repository auswählen.

Das ließt sich gut, werde ich mal in Augenschein nehmen!

Ich nutze einen externen Dash Board Editor (AIO Mediola) der auf externe Daten
aus HA angewiesen ist und die Importiere ich über ioBroker.

Das ganze funktioniert Hervorragend ABER es werden wirklich ALLE Daten
von ioBroker importiert was zum überlauf der Datengrenze dort führt,
was nicht weiter schlimm ist aber jedes mal zu einer Warnung führt.

Wichtiger ist aber, das ich nicht HomeMatic oder Tasmota Geräte auch noch in ioBroker
brauche weil ich diese über ein HM AddOn selber in den Editor bekomme.
Das sollte die Geräteanzahl schon deutlich verringern und auch noch viele andere Daten
die nur die Übersicht beim Importieren beeinflussen.

Danke für deine Rückmeldung, genau das war auch einer der Gründe für die App.

Beim ioBroker-HASS-Adapter kommt schnell eine sehr hohe Zahl an Datenpunkten zusammen, weil im Prinzip alles aus Home Assistant übernommen wird: Entitäten, Attribute, Zustände und oft auch Dinge, die man im externen Dashboard gar nicht braucht. Das funktioniert zwar, macht die Objektliste aber schnell unübersichtlich und kann je nach System zu Warnungen wegen der Datenmenge führen.

Die MQTT-Client-App soll hier gezielter arbeiten: Es werden nur die Geräte bzw. Entitäten übertragen, die man bewusst auswählt. Wenn HomeMatic, Tasmota oder andere Geräte bei dir schon über andere Wege in AIO Mediola verfügbar sind, müssen sie nicht noch einmal über ioBroker importiert werden.

Dadurch sollte die Anzahl der Datenpunkte deutlich kleiner bleiben, der Import übersichtlicher werden und ioBroker nur die Werte bekommen, die für das externe Dashboard wirklich gebraucht werden.

Schau dir die App gerne an. Du findest sie in meinem Repo und kannst sie über „Apps hinzufügen“ installieren.

Gerade für solche Anwendungsfälle ist Feedback sehr hilfreich. Ich freue mich über Rückmeldungen, Verbesserungsvorschläge und natürlich auch Fehlermeldungen. Nur so kann die App wachsen und weiter verbessert werden.

Hatte das Programm gleich nach meiner Nachricht hier Installiert.

Bin schonmal echt begeistert !!!

Es Importiert noch ein paar Infos von anderen Geräten mit aus HA.

Wenn man diese vor dem Import auch noch kurz aus ioBroker löscht ist die
Import Liste sehr viel Übersichtlicher als über hass.0. :slight_smile:

Ich habe immer noch etwas Probleme mit dem Connect in ioBroker von mqtt.0 zu HA,
er Inizalisiert auf Grün dann wieder zurück auf das gelbe Warndreieck dann wieder Grün…

Es funktioniert aber sonst alles, ich schicke dir morgen nach meinem Arztbesuch
Bilder und mehr Infos.

Für Heute mach ich erst mal Schluss.

Danke dir für die schnelle Rückmeldung, das freut mich sehr!

Genau das war auch die Idee der App: nicht alles blind wie über hass.0 zu importieren, sondern gezielt nur die Geräte und Werte nach ioBroker zu übertragen, die man dort wirklich braucht. Dadurch bleibt die Import-Liste deutlich übersichtlicher.

Wichtig noch als Hinweis: Es gibt auch einen Rückkanal von ioBroker zurück nach Home Assistant. Damit können z. B. Schalter, Buttons, Boolean-Werte oder Slider/Number-Werte auch aus ioBroker heraus wieder nach HA geschrieben bzw. geschaltet werden.

Das Verhalten mit mqtt.0 gelb/grün schaue ich mir gerne an, wenn du morgen Bilder und Infos schickst. Es klingt erstmal nach Reconnect/Status-Handling, aber gut, dass die Übertragung grundsätzlich funktioniert.

Danke fürs Testen und gute Besserung für morgen!

Danke

Nix Akutes nur 1/2 jährliche Kontrolle.

Bilder kommen per PN.

Momentan werden die Schalter von „aussen“ per https / webhook umgeschaltet.

Klappt eigentlich sehr gut oder hat es Vorteile den Rückkanal von mqtt zu nutzen ?

Ich nutze iobroker mit vis2 als Visualisierung für ein Tablet. Da ja VIS2 “vollgrafikfähig” im Gegensatz zu Lovelace. ich bin auch erst am Aufbauen mein altes System lief komplett über IOBroker. Bei den Rückkanal musst du testen der MQTT-Client ist noch sehr neu. Bin nicht komplett durch mit testen.

Gruss Uwe

Ok, behalte ich im Augen.

Seit gestern läuft deine App hier im Dauertest ! :smiley:
(Parallel zur alten)

Wenn das so problemlos weiter geht werde ich,
nach und nach dauerhaft auf deine App wechseln.

Gefällt mir wirklich gut, Danke für deine Arbeit. :+1:

Es Graust mich allerdings etwas wenn ich an die Arbeit bei mir denke,
alle Befehle im Dash Board NEU zu vergeben…

Hallo Uwe

Ich habe die letzten Tage genutzt um Deine App ausgibig zu Testen und
habe auch schon ein paar Dash Board Seiten komplett darauf umgestellt.

Erstmal das Hauptmenü und EIN Popup mit allen Schaltern und Relais.

Hier im Hauptmenü, der farbliche Schalterstatus und rechts die Variablen Werte,
die je nach Wert auch ihre Farbe wechseln,
alles wird sauber von ioBroker übergeben.

Hier das Popup - Schaltermenü mit den Relais,
alle Steckdosenschalter zeigen den korrekten Status.

Mit dem Antippen der Schalter „Beschreibung“ wird dann auch sofort
der momentane Verbrauch des jeweiligen Steckdosenschalters angezeigt.
Die Übergabe der Variablen-Werte klappt also auch problemlos.


Was ist mir aufgefallen:

Deine App läuft Dauerhaft stabil!

Die CPU Leistung in Proxmox, im ioBroker Container.
Mit Mqtt.0. sichtlich geringer als im Vergleich zu Hass.0.
Genau so ja auch gewollt.

Die Rückmelde Funktion über MQTT macht mir momentan noch probleme,
kenne mich mit ioBroker auch nicht so gut aus.

Die Rückmeldung vom Dash Board kommt in ioBroker aber an,
das sehe ich dort unter der SET Variable des jeweiligen Schalters.

Ich muss mich erstmal mit dem Scriptkram auseinander setzen der die
zuordnung für 72 Schalter, und auch die Relaykarten für
die Rückmeldung übernimmt…

Hallo Uwe.

Über das WE habe ich auch die letzten Dash Board Popup Seiten
bei mir umgestellt und getestet.

Die menge der übergebenen Variablen liegt bei mir etwas über 1200,
gegenüber hass.0 mit über 12000 unnützen Einträgen und
anschließender Warnung (wegen Überlauf) im Protokoll.

Dadurch ist auch die Importzeit der ioBroker-Liste bei meinem
Dash Board Editor von 30-40 Sekunden auf 3 Sekunden gesunken.

Beim Neu-Booten von HA geht deine Instanz auf Warnung
(gelbes Dreieck - Initialisierung)
und nach dem Hochfahren von HA wieder auf Initialisiert (Grün).

Dabei wird nichts ins Protokoll geschrieben, was ich sehr gut finde.
Denke ich zurück an HASS.0 ist bei so einem Neustart das Protokoll
fast Übergelaufen mit allen Fehlermeldungen die es in ioBroker gibt.

Weil die Objekt-Liste in ioBroker nun über 10000 Einträge kleiner ist
kommt auch der Seitenaufbau schneller.
Jetzt kann man sich auch die Einträge in der Objekt-Liste genauer ansehen
ohne nerviges warten und ggf. den Namen in HA anpassen für einen Neuimport.

Einige wenige Variable musste ist nochmal kurz nach-Importieren,
ich kann aber im Nachhinein nicht sagen ob das durch mein Experimentieren
kam oder ein BUG ist.

Letzteres würde ich dir dann melden.

Mein Dashboard System läuft nun komplett über deine Instanz.

Das Rückmeldesystem von deinem MQTT nutze ich erstmal nicht,
mir fehlt die Zeit mich damit auseinander zu setzen.
Ich bleibe da erstmal beim bewährten Webhook.

Gruss Jürgen

Hallo DukeNukem,

Neuerung bei MQTT-Client

MQTT-Client 0.1.16: Live-Zustände, erweiterte Steuerung und neue Verwaltungsfunktionen

für den MQTT-Client gibt es ein neues Update auf Version 0.1.16.

Die Home-Assistant-App überträgt gezielt ausgewählte Geräte, Zustände und Attribute an einen externen MQTT-Broker, beispielsweise den ioBroker-MQTT-Adapter im Server-/Broker-Modus. Damit könnt ihr einzelne HA-Geräte in ioBroker verwenden, ohne den gesamten Home-Assistant-Bestand zu spiegeln. Der vorhandene HA-Broker und die MQTT-Integration bleiben bestehen.

Mit diesem Update sind folgende Neuerungen dazugekommen:

  1. Live-Zustände statt ausschließlich regelmäßiger Abfragen

Nach einem vollständigen Erstabgleich empfängt die App Zustandsänderungen über die Home-Assistant-WebSocket-Verbindung. Dadurch können auch schnelle Wechsel übertragen werden, die zwischen zwei regelmäßigen Abfragen liegen würden.

Bei einem Ausfall der Live-Verbindung greift das bisherige Abfrageintervall als Rückfall. Standard sind weiterhin fünf Sekunden; euer bereits eingestellter Wert bleibt erhalten. Nach einer Wiederverbindung erfolgt ein neuer vollständiger Abgleich. Zwischenzustände, die während einer Unterbrechung verpasst wurden, lassen sich allerdings nicht nachträglich rekonstruieren.

  1. Ausführlichere Statusanzeige

Die Weboberfläche zeigt jetzt getrennt die Verbindung zu MQTT und die Erreichbarkeit von Home Assistant. Zusätzlich seht ihr:

  • Live-Empfang oder Polling-Rückfall
  • Zeitpunkt des letzten erfolgreichen Abgleichs
  • Zeitpunkt der letzten MQTT-Übertragung
  • Anzahl der gesendeten Nachrichten
  • Fehlerarten und Hinweise auf einen notwendigen Neuabgleich

Zugangsdaten werden dabei nicht angezeigt.

  1. Veraltete Retain-Topics gezielt entfernen

Über „Veraltete Retain-Topics prüfen“ könnt ihr nicht mehr benötigte Topics auswählen und nach einer Bestätigung löschen. Das ist beispielsweise hilfreich, wenn ihr eine Entität aus der Übertragung entfernt oder das Topic-Präfix geändert habt.

Die App führt dafür eine eigene Liste der erfolgreich veröffentlichten Topics. Gelöscht werden können nur erfasste, veraltete Topics auf dem aktuell eingestellten Broker. Aktive Werte und fremde Topics werden nicht zur Löschung freigegeben. Pro Vorgang sind bis zu 100 Topics möglich.

Es wird nichts automatisch gelöscht. Bereits vor dem Update unbenutzte Topics, die die App noch nicht erfasst hat, müssen weiterhin direkt auf dem Broker bereinigt werden.

  1. Zusätzliche Steuerungsmöglichkeiten

Die bisherigen Rückbefehle bleiben erhalten. Neu sind außerdem:

  • Rollläden: OPEN, CLOSE und STOP
  • Rollladenposition: {„position“:45}
  • Lampenhelligkeit: {„brightness_pct“:75}
  • Lüfterleistung: {„percentage“:50}

Die JSON-Payloads werden an das jeweilige /set-Topic gesendet. Beispiel für einen Rollladen:

Topic: <topic_prefix>/<gerät>//set
Payload: {„position“:45}

Die Prozentwerte liegen zwischen 0 und 100. Das jeweilige HA-Gerät muss die entsprechende Funktion unterstützen. Befehle bitte weiterhin ohne Retain senden. Ungültige Payloads, zusätzliche unerlaubte JSON-Felder, gespeicherte Retain-Befehle und veraltete Warteschlangenbefehle werden verworfen.

  1. Einstellungen sichern und wiederherstellen

„Einstellungen sichern“ lädt eine JSON-Datei mit Broker-Einstellungen, eigener CA und der Entitäts-/Attributauswahl herunter. „Sicherung öffnen“ prüft die Datei und fragt vor dem Ersetzen der Einstellungen nach.

Die Datei enthält kein MQTT-Passwort, kein Client-Zertifikat, keinen privaten Schlüssel und keinen HA-Token. Beim Wiederherstellen für denselben Broker bleiben lokal vorhandene Zugangsdaten und Client-Zertifikate erhalten. Bei einem anderen Broker müssen diese separat eingetragen werden.

Die Einstellungssicherung enthält keine Retain-Nachrichten und ersetzt keine vollständige Sicherung der HA-App.

  1. Eigene TLS-Zertifikate

Unter „Übertragung und TLS“ könnt ihr jetzt eine eigene CA sowie ein Client-Zertifikat mit passendem privatem Schlüssel als PEM-Dateien hochladen oder als Text eintragen.

Serverzertifikat und Hostname werden weiterhin geprüft. Ohne eigene CA verwendet die App wie bisher die Zertifizierungsstellen des Systems. Leere Felder in der Weboberfläche behalten bereits gespeicherte Zertifikate; zum Entfernen gibt es eine ausdrückliche Option.

Was passiert mit bestehenden Einstellungen?

Vorhandene Einstellungen aus Version 0.1.15 bleiben gültig. Broker-Zugangsdaten, Client-ID, Topic-Präfix, ausgewählte Entitäten und Attribute, Publish-Pause sowie das Abfrageintervall werden beim Start nicht automatisch überschrieben. Ein Neuanlegen der Konfiguration ist nicht erforderlich. Auch vorhandene Retain-Werte bleiben erhalten, solange ihr deren Löschung nicht ausdrücklich bestätigt.

Prüfung und Dokumentation

Die Änderungen wurden mit 37 Tests geprüft, darunter Tests mit Mosquitto, echter WebSocket-Verbindung, Polling-Rückfall, alten Konfigurationen und gegenseitiger TLS-Authentifizierung. Hinzu kommen die Browserprüfung sowie Dockerbuild und Containerstart. Die Tests fanden in einer lokalen Testumgebung statt. Die deutsche und englische Dokumentation wurden aktualisiert.

Repository und Installation:

MQTT-Client mit Anleitung:

Wenn ihr die App bereits installiert habt, könnt ihr auf Version 0.1.16 aktualisieren. Rückmeldungen zur Zusammenarbeit mit euren Geräten und dem ioBroker-MQTT-Adapter sind willkommen.

MQTT-Client 0.1.17 – Zustände per Home-Assistant-Label weiterleiten

Ab Version 0.1.17 könnt ihr Entitäten direkt in Home Assistant für die MQTT-Weiterleitung markieren. Alle Entitäten mit dem ausgewählten Label werden automatisch berücksichtigt. Die manuelle Auswahl im MQTT-Client bleibt verfügbar.

So richtet ihr es ein

  1. Unter Einstellungen → Bereiche, Labels und Zonen → Labels ein Label anlegen, zum Beispiel zu mqtt client.
  2. Unter Einstellungen → Werkzeuge → Vorlage mit {{ label_id("zu mqtt client") }} die tatsächliche Label-ID ermitteln, zum Beispiel zu_mqtt_client.
  3. In der Seitenleiste MQTT-Client öffnen. Unter Übertragung und TLS steht direkt unter Topic-Präfix das Feld HA-Label-ID für Zustandsweiterleitung. Dort die ID eintragen und Speichern und verbinden klicken.
  4. Unter Einstellungen → Geräte & Dienste → Entitäten die gewünschte Entität öffnen, auf das Zahnrad klicken, das Label hinzufügen und mit Aktualisieren speichern.

Anleitung zur Label-Weiterleitung · GitHub-Release 0.1.17