MQTT (Message Queuing Telemetry Transport) ist ein recht einfaches und gerade im IoT Bereich verbreitetes Protokoll für die Übermittlung von Nachrichten zwischen verschiedenen Endgeräten.
Dieser Beitrag beschreibt die Einbindung von MQTT in ioBroker zum Senden und Empfangen von Nachrichten.
Die Installation des MQTT Brokers Mosca habe ich bereits in einem anderen Beitrag beschrieben.
Installation des MQTT Adapters
Als erstes installieren wir den Adapter MQTT Broker/Client über die Administrationsoberfläche von ioBroker. Auch wenn wir nur den Client benötigen empfehle ich trotzdem diesen Adapter, da er deutlich aktueller ist als der ebenfalls verfügbare Adapter MQTT Client.
Nach der Installation öffnet sich wie gewohnt direkt wieder die Konfigurationsseite der Adapterinstanz.
Hier wählen wir im Reiter Verbindung als Typ Client/subscriber aus und tragen die IP-Adresse und den Port unseres MQTT Brokers, sowie den Benutzernamen und das Passwort für die Verbindung ein.
Im Reiter Client Settings sollte bei Subscribe patterns eine Liste der zu empfangenden Topics eingetragen werden. Die Client ID ist in den meisten Fällen gleich dem Benutzernamen für den Login.
Unter MQTT Einstellungen empfehle ich zudem die Maske zum Bekanntgeben eigener States so anzupassen, dass nur die States gesendet werden, die man auch wirklich senden möchte. Zumindest sollte dies auf mqtt.0.*
beschränkt werden, da sonst alle ioBroker States bei Veränderungen gesendet werden.
Diese Einstellungen bestätigen wir mit Speichern und Schließen.
Anschließend kann die Adapterinstanz mit einem Klick auf den noch roten Start-Button gestartet werden. Kurz darauf sollte der Punkt vor der Instanz grün werden, was eine erfolgreiche Verbindung zum MQTT Broker anzeigt.
MQTT Objekte in ioBroker
Für alle empfangenen Topics legt der MQTT Adapter automatisch Objekte innerhalb der Adapterinstanz an.
Beispiel: Für die Topic esp-stall/sensor/0/value
wird das Objekt mqtt.0.esp-stall.sensor.0.value
angelegt und der empfangene Wert wird in den aktuellen State dieses Objektes geschrieben.
Beim Senden eines geänderten States erfolgt diese Umschlüsselung genau entgegengesetzt. Aus dem State für mqtt.0.esp-stall.switch.light.set
wird die Topic esp-stall/switch/light/set
mit dem entsprechenden Wert aus dem State.
Zusätzlich zu den automatisch angelegten Objekten können auch eigene Objekte manuell erstellt werden. Ebenso ist es möglich die automatisch erzeugten Objekte nachträglich nach den eigenen Bedürfnissen anzupassen.
Hinweis
Zum Erstellen und Anpassen der States unter mqtt.0.*
muss gegebenenfalls der Expertenmodus in der Adminoberfläche aktiviert werden.