Mit openHAB 2.4 wurde auch das neue MQTT 2 Binding eingeführt. Es zeichnet sich vor allem dadurch aus, dass man Things und Channels nun auch über die Paper UI hinzufügen und verwalten kann. Viele MQTT Nutzer haben jedoch bereits das alte Binding im Einsatz und die Items dementsprechend auch textbasiert über den Editor gepflegt. Ein Wechsel auf das neue Binding ist auch hier problemlos möglich.

Der neue Aufbau des MQTT 2 Binding

Bisher war es so, dass der MQTT Broker über die entsprechende mqtt.cfg Datei eingetragen wurde. Diese cfg Datei gibt es zukünftig nicht mehr. Der Broker wird als sogenannte Bridge in einer .things Datei angelegt und die Items werden später in einer .items Datei mit den zuvor erstellten Channels verknüpft. Wer KNX im Einsatz hat und hier den Umstieg von KNX1 zu KNX2 in openHAB bereits vollzogen hat, wird einige Parallelen feststellen können.

Ich arbeite mit einem separaten Broker. Das neue MQTT 2 Binding kann auch direkt in openHAB einen Broker zur Verfügung stellen. Da ich aber auch MQTT auch außerhalb von openHAB nutze, bin ich mit einem eigenen MQTT Broker etwas flexibler und konzentriere mich in dieser Anleitung auf die Einbindung eines externen Brokers.

Die Things Datei

Wie oben erwähnt werden Broker, Things und Channels in einer .things Datei konfiguriert. Ich nenne diese Datei ganz einfach mqtt.things 

So ist die Datei zu lesen:

Bridge mqtt:broker:brokerhome [ host=“broker.hivemq.com“, secure=false ] Hierbei handelt es sich um die Definition des Brokers. brokerhome wurde von mir frei gewählt und kann nach belieben angepasst werden. Als Host habe ich hier im Beispiel einen öffentlichen MQTT Broker eingetragen. Zum Test ist das völlig in Ordnung. Für den Live Betrieb empfehle ich einen privaten Broker, damit die Daten nicht öffentlich einsehbar sind. In meinem Fall gibt es keine Sicherheitsschranke, daher secure=false

Thing topic sensoren
An dieser Stelle wird das Thing definiert. Jedes Thing kann mehrere Channels haben. Es gibt keine feste Regel was in ein Thing soll. Ich lege immer pro physisches MQTT Gerät ein Thing an. Hier im Beispiel habe ich allerdings verschiedene Geräte in einem Thing zusammengefasst. Sensoren habe ich frei vergeben und kann zur Identifizierung entsprechend umbenannt werden.

Channels
Unter Channels werden nun das definiert was wir später in den Items verwenden. Im Beispiel findest du einen Switch (Funksteckdose 1), dem nur ein commandTopic zugeordnet ist. Das bedeutet, dass hier kein Status zurückgesendet wird. Dem zweiten Switch (Fernbedienung Schlafzimmer) ist sowohl ein commandTopic, als auch ein stateTopic zugeordnet. Hier bekommt openHAB also auch den aktuellen Status des Gerätes übertragen. Das ist vor allem dann wichtig, wenn das Gerät auch außerhalb von openHAB gesteuert wird und openHAB nicht den echten IST Zustand kennt. Damit die korrekten Befehle gesendet werden, muss noch mitgeteilt werden, welcher Wert für on und off gesendet werden sollen. Das wird über on=“wert“, off=“wert“ definiert. „wert“ wird natürlich durch deinen spezifischen Befehl ersetzt.

Die Number (Feuchtigkeit Node) hat lediglich ein stateTopic, da openHAB hier nur Daten empfängt, aber keine Befehle sendet.

Die mqtt.items Datei

Nachdem wir Broker, Thing und Channels angelegt haben, können wir an die Verknüpfung der Channels mit den Items gehen. Hierzu nutze ich eine mqtt.items Datei. Wenn du vorher schon MQTT genutzt hast und bereits items angelegt hast, kannst du diese weiterverwenden und nur den Teil in der geschweiften Klammer austauschen.

Der Aufbau des Channels ist immer gleich. mqtt:topic stehen fest voran brokerhome ist der selbst vergebene Name des Brokers. sensoren ist der selbst vergebene Name des Things. funksteckdose_1 etc. ist der angelegte Channel innerhalb der Thing, der dem Item zugeordnet werden soll.

Das war es schon. Jetzt können die Items ganz normal in der Sitemap oder in Regeln verwendet werden.