RGB+W Bulb in openHAB integerieren und für HomeKit und Alexa ereichbar machen
Update!
Das zuvor eingesetzte Binding empedded broker wird nicht mehr weiter entwickelt (spätestens mit dem Update auf OpenHAB 3). Daher nehme ich aktuell Mosquitto als Broker.
Installation und Einrichtung folgt, den alten Artikel lasse ich zur Übersicht angehängt.
neue Version mit Mosquitto Broker
Installation mit folgenden Befehlen:
sudo 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-stretch.list sudo apt-get install mosquitto sudo systemctl enable mosquitto sudo systemctl start mosquitto sudo systemctl status mosquitto
Statusausgabe sollte active (running) ausgeben. Über netstat -a sollte als locale Adresse 0.0.0.0:1883 aufzufinden sein, das ist der passende Port.
Im nächsten Schritt wird die Konfiguration des Brokers angepasst.
sudo nano /etc/mosquitto/mosquitto.conf
Dort wird persistance auf false gesetzt und folgende Zeilen ergänzt:
allow_anonymous false password_file /etc/mosquitto/passwd
Um den Zugriff einzuschränken ist ein Benutzer (in meinem Fall openhab) mit Passwort anzulegen und den Broker im Anschluss neuzustarten.
sudo mosquitto_passwd -c /etc/mosquitto/passwd openhab sudo systemctl restart mosquitto
Diese Angaben sind natürlich in der MQTT Konfiguration der Lampen anzupassen.
Das Anlegen der OpenHAB Geschichte kann über eine mqtt.things und mqtt.items geschehen.
Bridge mqtt:broker:mosquitto "Mosquitto" [ host="<IP openhab server>", port=<Port aus netstat Abfrage>, secure=false, clientID="openHAB", username="<oben gewählter Benutzer>", password="<oben gewähltes Passwort>"] { }
In der Things Datei ist es sinnvoll zuerst nur die Bridge anzulegen, um zu prüfen ob sie in OpenHAb als Online erkannt wird. Anschließend können in den geschweiften Klammern die einzelnen Things angelegt werden.
Bridge mqtt:broker:mosquitto "Mosquitto" [ host="<IP openhab server>", port=<Port aus netstat Abfrage>, secure=false, clientID="openHAB", username="<oben gewählter Benutzer>", password="<oben gewähltes Passwort>"] { Thing topic licht_fl_flurkueche "Flur Küche" @ "Flur" { Channels: Type colorRGB : color "Flur Küche Farbe" [ stateTopic="stat/licht_fl_flurkueche/COLOR", commandTopic="cmnd/licht_fl_flurkueche/COLOR"] } Thing topic licht_fl_flurmitte "Flur Mitte" @ "Flur" { Channels: Type colorRGB : color "Flur Mitte Farbe" [ stateTopic="stat/licht_fl_flurmitte/COLOR", commandTopic="cmnd/licht_fl_flurmitte/COLOR"] } }
Nun werden die Lampen als Items angelegt, damit sie auch geschaltet werden können.
Color licht_fl_flurkueche_farbe "Flur Kueche" <colorpicker> (ghome, gflur) {homekit="Lighting", channel="mqtt:topic:mosquitto:licht_fl_flurkueche:color"} Color licht_fl_flurmitte_farbe "Flur Mitte" <colorpicker> (ghome, gflur) {homekit="Lighting", channel="mqtt:topic:mosquitto:licht_fl_flurmitte:color"}
Den Channel bekommt man im Zweifelsfall aus der OpenHAB Thing Übersicht. Ich habe gleich die Verfügbarkeit im Homekit mit angelegt.
Alte Version mit embedded Broker
Um die zuvor geflashte Lampe in openHAB einzubinden sind das MQTT Binding Version 2.5 und der MQTT Broker Moquette (unter Misc) über die PaperUI zu installieren. Über die Inbox kann jetzt der MQTT Broker als Thing hinzugefügt werden. Unter Configuration -> Services können noch ein paar Einstellungen vorgenommen werden (Username, Password). Um zu prüfen ob alles läuft habe ich das Programm MQTT.fx genutzt, um als unabhängiger Client im MQTT Netzwerk aktiv zu sein. Ist es geöffnet, kann über das Zahnrad und das “+” ein neuer MQTT Broker eingepflegt werden.
Profilname: mqtt embedded broker
IP: <openHAB-IP>
Unter user Credentials noch den eventuell vergebenen Usernamen und das Passwort eintragen.Speichern und danach im Hauptfenster “Connect” drücken um eine Verbindung aufzubauen. Oben rechts sollte die Lampe grün werden, dann ist die Verbindung aufgebaut. In dem Reiter “Subscribe” eine “#” eintragen und “Subscribe” drücken um allen anfallenden Datenverkehr abzufangen.
Jetzt ist es an der Zeit die Lampe in openHAB einzubinden. Wichtig dabei ist, dass die Lampe ein eindeutiges Topic hat und sich mit dem eben angelegten Broker verbindet. >IP der Lampe> in Browser -> Configuration -> Configure MQTT aufrufen und folgende Daten speichern.
Host: <openHAB-IP>
Port: 1883 (es sei denn in openHAB ist ein anderer eingetragen worden)
Client: [so lassen]
User: <in openHAB vergebener Username angeben>
Password: <in openHAB vergebenes Passwort angeben und Haken markieren>
Topic: <eindeutigen Namen vergeben>
Full Topic: [so lassen]
In openHAB in der Inbox auf “+, dann auf MQTT Binding, “manually add” und auf generic MQTT Thing drücken. Dort einen eindeutigen Namen vergeben, gegebenenfalls die ID anpassen und die embedded bridge auswählen, speichern.
Unter Configuration -> Things das soeben erstelle Thing öffnen und und einen Channel erstellen.
Color Value als Channel Type auswählen, eindeutige Channel ID vergeben, Label zu Erklärung anpassen. Als MQTT State Topic ist “stat/$topic/Color” und als MQTT Command Topic ist ” cmnd/$topic/Color” einzutragen. $topic entspricht dem auf der Lampe vergebenen Topic weiter oben. Falls diese Topiczusammensetzung nicht klar ist, lässt sich diese entweder in MQTT.fx unter Subscribe oder in der Console der Lampe nach einem Schaltvorgang einsehen. “stat”, beziehungsweise “cmnd” bleibt immer gleich, $topic wird selbst vergeben und die einstellenden Größen sind dann eben zu sehen. Beispiel:
{"POWER":"ON","Dimmer":100,"Color":"89,122,255,0","HSBColor":"228,65,100","Channel":[35,48,100,0]}
Jetzt ist das Thing angelegt, ein Item muss erstellt werden, also eine *.items anlegen:
Color item_name "Beschreibung" <colorpicker> (Gruppenname) [ "Lighting" ] {channel="Channelname zu finden in der PaperUI -> Configuration -> Things -> Lampe unter dem Channel"}
Für die Homekit Integration ist der Tag [ “Lighting” ] schon eingepflegt, um die Lampe über Alexa steuern zu können muss das Thing an myOpenhab.org übergeben werden. Eine Möglichkeit: Unter Configuration -> Services -> IO ->openHAB Cloud ->Items to Expose das angelegte Thing auswählen. Fertig, fröhliches schalten!