openHAB2 und MQTT
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