openHAB2 und MQTT

DruckversionDruckversion

Die Hausautomation mit openHAB2 läuft schon mal, die nächste Herausforderung ist nun die Verbindung von Arduino Systemen mit openHAB, im Prinzip also einen IoT Prototyp.

Als Kommunikationsprotokoll wird am einfachsten MQTT verwendet. Unter Linux kann dazu der Mosquitto als MQTT Server verwendet werden. 

Mosquitto installieren

Im Debian Repository ist eine alte Version des Mosquitto MQTT Servers enthalten, insofern am beste die Version aus dem Mosquitto Repo installieren
 

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
sudo apt-get update
sudo apt-get install mosquitto

Nach der Installation ist der Mosquitto Server einsatzbereit, Testen könnt ihr es recht einfach. Auf der ersten Konsole wird der Client Subscriber gestartet, dieser hört in dem Besipielk auf die Topic ingo/test

mosquitto_sub -t ingo/test

Auf einer zweiten Konsole kann jetzt eine Nachricht auf die obige Topic gesendet werden

mosquitto_pub -t ingo/test -m "Dies ist ein Test" 

Auf der ersten Konsole sollte nun die Nachricht erscheinen.
Soweit sogut, MQTT funktioniert. Was jetzt noch fehlt ist die Verbindung zu openHAB2

Damit ich überhaupt sehe was passiert habe ich erst mal den LOG Level von Mosquitto hoch gesetzt, dazu in /etc/mosquitto/mosquitto.conf folgenden Eintrage hinzufügen :

log_type debug
connection_messages true
log_timestamp true

openHAB anpassen

Jetzt muss das MQTT Binding hinzugefügt werden, dazu in dem PAPER UI das MQTT Binding installieren. Das hat bei mir nicht richtig funktioniert, ich habe dann das org.openhab.binding.mqtt-1.9.0-SNAPSHOT.jar  direkt in /usr/share/openhab2/addons kopiert.

Zum Konfigurieren von MQTT in openHAB muss nun die Datei /etc/openhab2/services/mqtt.cfg angepasst werden, dabei reichen folgende 2 Anpassungen

oh2mqtt.url=tcp://localhost:1883
oh2mqtt.clientId=openhab2

Jetzt kann in der items Datei ein Schalter erstellt werden, entsprechend der vorherigen Konfiguration ist jetzt der Nachrichtenaustausch über die Topic openhab2/xxxx mittels Service oh2mqtt möglich. Konkret sieht dies dann wie folgt aus:

Switch MQTTSwitch  "Test MQTT"     {mqtt=">[oh2mqtt:openhab2/Test_Switch:command:ON:1],>[oh2mqtt:openhab2/Test_Switch:command:OFF:0]"}

Wird der Schalter nun betätigt ist dies im mosquitto LOG zu sehen :

1482320821: Received PUBLISH from openhab2 (d0, q0, r0, m0, 'openhab2/Test_Switch', ... (1 bytes))
1482320821: Sending PUBLISH to mosqsub/13754-openhab (d0, q0, r0, m0, 'openhab2/Test_Switch', ... (1 bytes))

Die übertragenen Daten können am einfachsten über den oben bereits gezeigten mosquitto Client betrachtet werden, dazu den Subscriber starten und auf die verwendete Topic lauschen lassen

mosquitto_sub -t openhab2/Test_Switch

Beim Betätigen des Schalters wird nun jeweils der Wert 0 oder 1 ausgegeben.

Perfekt, soweit ist alles am Start und der nächste Schritt kann kommen

 

Taxonomy Technik: