Leben, Essen, Schlafen

Schnipsel, Anregungen, Haltbares

Projekte, Aufgaben, Einfaches

RGB+W Bulb in openHAB integerieren und für HomeKit und Alexa ereichbar machen

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!


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.