Smart Home openHAB Installation Teil 7 – Beleuchtung


Update 12.11.2020

Ab Dezember  2020 habe ich das Glück, ein Eigenheim zu besitzen. Mit dem Umzug werde ich mein Smart Home zukünftig mit Home Assistant steuern, sodass die Serie Smart Home openHAB Installation nicht länger fortgeführt und gepflegt wird.


Im siebten Teil der Reihe Smart Home openHAB Installation geht’s endlich an die Konfiguration der Gerätesteuerung. Ich widme mich als erstes dem Thema Beleuchtung. Hierzu verwende ich Philips Hue Komponenten. Zwar sind diese nicht gerade günstig, aber das System ist lange auf dem Markt, relativ ausgereift, durch das ZigBee Protokoll lassen sich auch kostengünstigere Komponenten in das System integrieren und es ist ein Binding für openHAB 2 verfügbar. Die Beleuchtung möchte ich zudem per Sprache mit Amazon Echo steuern. Die dafür nötigen Konfigurationen sind im Folgenden mit roter Schrift dargestellt.

Bridge Konfiguration

Nach der ersten Inbetriebnahme der Hue Bridge konfiguriere ich einige Einstellungen, um die Bridge meiner Umgebung anzupassen. Dazu gehört hauptsächlich die Vergabe einer festen IP-Adresse. Statt diesem Schritt lässt sich natürlich auch eine DHCP Reservierung für die MAC der Bridge anlegen, damit sie immer die gleiche IP Adresse bekommt.

API-User

Als ersten Schritt lege ich einen API-User an. Dieser wird später noch benötigt, z.B. für die Konfiguration einer statischen IP.

Zur Anlage des Users nutze ich im Browser die URL des Clip-Formulars der Hue Bridge:

http://<IP-Adresse>/debug/clip.html

Bevor man den User anlegen kann, muss an der Bridge der Link Button geklickt werden. Danach hat man 30 Sekunden Zeit, den User anzulegen. Den API-User lege ich innerhalb der Zeit mit folgenden Werten an:

URL

/api

Body

{ "devicetype": "<API-User-Display-Name>#<API-User-Name>" }                  /* neuere API Versionen */
{ "devicetype": "<API-User-Display-Name>", "username":"<API-User-Name>" }    /* ältere API Versionen */

Method

POST

Wird der User erfolgreich angelegt, wird folgender Wert im Command Response Feld ausgegeben:

{ "success": { "username": "<API-User-String (40-stellig)>" } }

IP Konfiguration

Server und Controller Komponenten sollten möglichst eine feste IP konfiguriert haben. Im Falle der Hue Bridge ist dies leider nicht über die GUI möglich, sondern ich konfiguriere die IP per API. Auch für diese Konfiguration dient das o.g. Clip-Formular. Dort trage ich folgende Werte ein:

URL

/api/<API-User-String (40-stellig)>/config

Body

{ "ipaddress":"<neue IP-Adresse>", "dhcp":false, "netmask": "255.255.255.0", "gateway": "<Gateway IP-Adresse>" }

Method

PUT

Bei erfolgreicher Konfiguration wird folgende Command Response ausgegeben:

{ "success": { "/config/dhcp": false } },
{ "success": { "/config/ipaddress": "<neue IP-Adresse>" } },
{ "success": { "/config/netmask": "255.255.255.0" } },
{ "success": { "/config/gateway": "<Gateway IP-Adresse>" } }

Nach 1-2 Minuten ist die Hue Bridge über die neue IP-Adresse erreichbar.

Leuchtmittel

Aktuell habe ich in der Wohnung ausschließlich LED Lampen mit GU10 Sockel. Diese habe ich durch GLEDOPTO GU10 Leuchtmittel ausgetauscht. Einerseits sind die Leuchtmittel erheblich günstiger, als Philips, andererseits waren das die einzigen GU10 Leuchtmittel, mit einem großen 120 Grad Abstrahlwinkel. Die Erkennung im Hue System war eigentlich kein Problem, man muss die Leuchtmittel i.d.R. nur vorher einmal resetten. Dazu müssen die Leuchtmittel lediglich 5 mal ein- und ausgeschaltet werden, wobei zwischen jedem Schaltvorgang 2 Sekunden gewartet werden muss. Zur Bestätigung des erfolgreichen Resets blinken die Leuchtmittel dann 4 mal. Wer allerdings auf Drittanbieter ausweicht, muss mit ein paar Einschränkungen rechnen. Im Fall der GLEDOPTOs ist dies einerseits, dass sich die Firmware der Leuchtmittel nicht über die Hue App aktualisieren lässt und andererseits, dass das Einschaltverhalten (was passiert, wenn der „echte“ Lichtschalter versehentlich betätigt wurde) nicht konfiguriert werden kann. Da ich jedoch alle ursprünglichen Lichtschalter unbedienbar gemacht habe (siehe unten, Thema „Schalter Montage“), stört mich das nicht wirklich.

Schalter Montage

Um die Lampen zu schalten, habe ich mir Philips Hue Dimmer Schalter zugelegt. Da stellt sich jedoch die Frage, wie vermeidet man, dass der ursprüngliche Lichtschalter betätigt und die ganze schöne Installation ausgeschaltet wird. Wer in Miete wohnt kann die Schalter i.d.R. nicht einfach von einem Elektriker durchschleifen und ausbauen lassen. Abhilfe schaffen Adapter, bei denen nur der Schaltwippenaufsatz und der Rahmen des ursprünglichen Schalters ersetzt werden müssen. Die eigentliche Schalttechnik im Inneren bleibt erhalten und der Ursprungszustand kann ganz einfach beim Auszug wieder hergestellt werden. Ich habe mir daher für Einzelschalter Samotech SM201 Adapter und für Doppelschalter Samotech SM202 Adapter mit passender Blindabdeckung zugelegt. Wer bei Doppelschaltern auch wieder 2 eigene Dimmerschalter benötigt, kann die ursprünglichen Schalter z.B. durch Gira Fläche-Serie Rahmen mit Blindabdeckung unbrauchbar machen und sich eine Doppelhalterung daneben schrauben.

openHAB 2 Binding

Das openHAB Binding wird wie gewohnt über die PaperUI oder über HABmin installiert. Im Regelfall erscheint dann kurz darauf die Bridge in der PaperUI Inbox. Diese verbinde ich kurz, damit ich anschließend im Thing den API User auslesen und notieren kann, der für openHAB verwendet wird. Danach lösche ich die Bridge wieder aus Konfiguration, damit ich sie über die üblichen Things-Dateien händisch einbinden kann.

Nach der Installation des Bindings geht’s an die Konfiguration der Bridge, der Leuchtmittel und der Schalter/Sensoren. Im folgenden Beispiel verbinde ich die Hue Bridge mit der vorher konfigurierten IP und dem API User und lege drei Leuchtmittel light1, light2 und light3 , sowie einen Dimm-Schalter switch1 und einen Bewegungsmelder motion1 an. Die IDs der Leuchtmittel und des Dimm-Schalters erhält man z.B. aus dem Clip-Formular der Hue Bridge:

http://<Hue-Bridge-IP-Adresse>/debug/clip.html

Eingabe

URL

/api/<API-User-String (40-stellig)>/lights   -> für Leuchtmittel
/api/<API-User-String (40-stellig)>/sensors  -> für Schalter/Bewegungsmelder

Method

GET

Im Ausgabefenster werden nun alle benötigten Infos zu den Lights/Sensors angezeigt. Hier ein Beispiel für ein Leuchtmittel und einen Dimmer-Switch (die rot markierten Wert ist die ID):

{  "1": {  ..., "type": "Extended color light", "name": "Light 1", "modelid": "GL-S-007Z", "manufacturername": "GLEDOPTO", "productname": "Extended color light", ...  }  }
{  "1": {  ... , "name": "Dimmer Switch 1", "type": "ZLLSwitch", "modelid": "RWL021", "manufacturername": "Signify Netherlands B.V.", "productname": "Hue dimmer switch", ...  }  }

Hat man so die IDs zur Hand, kann die Konfiguration in openHAB durchgeführt werden.

$OPENHAB_CONF/things/hue.things

Bridge  hue:bridge:hue01  "Bridge: HUE01"  [ ipAddress="<Bridge-IP>", userName="<API-User-String>", pollingInterval="15", sensorPollingInterval="1000" ]
{
   0210   light1    "Light: Light 1" @ "Room 1"              [ lightId="1" ]
   0210   light2    "Light: Light 2" @ "Room 1"              [ lightId="2" ]
   0210   light3    "Light: Light 3" @ "Room 1"              [ lightId="3" ]
   0820   switch1   "Sensor: Dimmer Switch 1" @ "Room 1"     [ sensorId="1" ]
   0107   motion1   "Sensor: Motion Detector 1" @ "Room 1"   [ sensorId="2" ]
}

$OPENHAB_CONF/items/hue.items

Item-Groups

Viele meiner Leuchtmittel sind GU10 Spots. Dadurch benötige ich als erstes Gruppen, da ich nicht jedes Leuchtmittel einzeln schalten möchte. Ein Vorteil der Gruppen ist weiterhin, dass man Leuchtmittel entfernen und hinzufügen kann, ohne gleich unzählige Änderungen vornehmen zu müssen. Wichtig bei den Gruppen ist es, openHAB mitzuteilen, welche Funktion die Gruppe hat. Das wird durch die jeweiligen Erweiterungen Switch, Dimmer und Color erreicht.

Hier ein Beispiel:

Group                      Group_Lights1             "Light Group: Lights 1"                     <light>                           { alexa="Endpoint.Light" [category="LIGHT"] }
Group:Switch:OR(ON, OFF)   Group_Lights1_OnOff       "Light Group: Lights 1 On/Off"              <light>        (Group_Lights1)    { alexa="PowerController.powerState" [category="LIGHT"] }
Group:Dimmer:AVG           Group_Lights1_Dimmer      "Light Group: Lights 1 Dimmer"              <slider>       (Group_Lights1)    { alexa="BrightnessController.brightness" [category="LIGHT"] }
Group:Color                Group_Lights1_Color       "Light Group: Lights 1 Color"               <colorwheel>   (Group_Lights1)    { alexa="ColorController.color" [category="LIGHT"] }
Group:Dimmer:AVG           Group_Lights1_ColorTemp   "Light Group: Lights 1 Color Temperature"   <slider>       (Group_Lights1)    { alexa="ColorTemperatureController.colorTemperatureInKelvin" [category="LIGHT"] }

Items (Lights)

Nachdem mit Gruppen die Vorbereitungen für die Steuerung abgeschlossen sind, werden nun die Items für die Light Channels konfiguriert und die vorher angelegten Gruppen bei Bedarf zugewiesen. Für ein beispielhaftes Farbleuchtmittel light1 an der Bridge hue01 mit der Thing-ID hue:0210:hue01:light1 sieht eine Konfiguration dann wie folgt aus (light2 und light3 entsprechend analog):

Switch   Light1_OnOff       "Light: Light 1 On/Off"              <light>        (Group_Lights1_OnOff)       { channel="hue:0210:hue01:light1:color" }
Dimmer   Light1_Dimmer      "Light: Light 1 Dimmer"              <slider>       (Group_Lights1_Dimmer)      { channel="hue:0210:hue01:light1:color" }
Color    Light1_Color       "Light: Light 1 Color"               <colorwheel>   (Group_Lights1_Color)       { channel="hue:0210:hue01:light1:color" }
Dimmer   Light1_ColorTemp   "Light: Light 1 Color Temperature"   <slider>       (Group_Lights1_ColorTemp)   { channel="hue:0210:hue01:light1:color_temperature" }
String   Light1_Alert       "Light: Light 1 Alarm"               <light>                                    { channel="hue:0210:hue01:light1:alert" }
Switch   Light1_Effect      "Light: Light 1 Effect"              <light>                                    { channel="hue:0210:hue01:light1:effect" }

Items (Sensors)

Neben der eigentlichen Konfiguration für die Leuchtmittel, lassen sich auch Sensoren (Schalter, Bewegungsmelder) konfigurieren. Bei den Dimm-Schaltern möchte ich mir in der Sitemap den Batterie-Stand ausgeben lassen. Beim Bewegungsmelder möchte ich den Anwesenheitsstatus anzeigen und ebenfalls den Batterie-Stand. Deswegen lege ich mir auch dafür Items für die Sensor Channels an.

Number   Switch1_BatteryLevel   "Sensor: Dimmer Switch 1 Battery Level [%d %%]"     <batterylevel>   { channel="hue:0820:hue01:switch1:battery_level" }
Switch   Motion1_Presence       "Sensor: Motion Detector 1 Presence"                <presence>       { channel="hue:0107:hue01:motion1:presence" }
Number   Motion1_BatteryLevel   "Sensor: Motion Detector 1 Battery Level [%d %%]"   <batterylevel>   { channel="hue:0107:hue01:motion1:battery_level" }

Items (Scenes)

Neben der eigentlichen Lichtsteuerung möchte ich auch Szenen schalten können, die bestimmte Einstellungen automatisch durchführen. Daher lege ich mir für jede Szene ein neues Item ohne Konfiguration eines Channels an. Die dazugehörige Aktion wird anschließend über die Rules definiert. Im folgenden Beispiel lege ich ein Item für den Nachtmodus und einen für eine blau-weiß-blaue „Bayern-Szene“ an:

Switch   Scene_Lights1_Nightmode   "Light Scene: Lights 1 Nightmode"   <colorpicker>
Switch   Scene_Lights1_Bavaria     "Light Scene: Lights 1 Bavaria"     <colorpicker>

$OPENHAB_CONF$/rules/hue.rules

Um das vorher angelegte Scene-Items nutzen zu können, benötige ich eine Rule die definiert, was zu tun ist, wenn das Item geschaltet wird. Im Beispiel der Nightmode Szene sollen die Leuchtmittel auf Rot bei 30% Dimmung geschaltet werden. Dazu schaut die Regel, ob das Item auf ON geschaltet wird und sendet dann ein HSB Kommando (Hue, Saturation, Brightness) an die Lichtgruppe Lights_1. Abschließend wird der Status des Items wieder auf OFF gesetzt, damit es erneut geschaltet werden kann.

rule "Scene Lights 1: Nightmode"
when
   Item Scene_Lights1_Nightmode received command ON
then
   Group_Lights1_Color.sendCommand(new HSBType(new DecimalType(0), new PercentType(100), new PercentType(30)))
   Scene_Lights1_Nightmode.postUpdate(OFF)
end

Möchte man nicht die Gruppe zur Schaltung verwendet oder z.B. für 3 Leuchtmittel auch zwei oder drei unterschiedliche Einstellungen verwenden, lassen sich die Items auch direkt ansteuern. Im folgenden Beispiel schalte ich alle Leuchtmittel auf blau und stelle die Sättigung des zweiten Leuchtmittels aber auf 10%.

rule "Scene Lights 1: Bavaria"
when
   Item Scene_Lights1_Bavaria received command ON
then
   Light1_Color.sendCommand(new HSBType(new DecimalType(240), new PercentType(100), new PercentType(100)))
   Light2_Color.sendCommand(new HSBType(new DecimalType(240), new PercentType(10), new PercentType(100)))
   Light3_Color.sendCommand(new HSBType(new DecimalType(240), new PercentType(100), new PercentType(100)))
   Scene_Lights1_Bavaria.postUpdate(OFF)
end
Allgemeine Infos zur Hue Konfiguration

HSB Wert (Hue, Saturation, Brightness)

Hue (Farbwert):
Die Farbwerte werden als Dezimalwert zwischen 0 und 360 definiert. Dabei gilt:

0   = rot
60  = gelb
120 = grün
180 = türkis
240 = blau
300 = lila
360 = rot

Saturation (Sättigung), Brightness (Helligkeit)

Die Werte für Saturation und Brightness werden als Prozentwert zwischen 0 und 100 angeben.

Farbtemperatur

Der Wert für die Farbtemperatur wird Prozentwert zwischen 0 und 100 angeben.  Dabei gilt, je höher der Wert, desto wärmer.

Update 15.05.2020

Seit der Addon Version 2.5.5 von openHAB 2 A können nun auch Gruppen (Rooms, Zones, LightGroups), die z.B. über mobile Apps angelegt wurden, direkt in openHAB addressiert werden. Die umständliche und fehleranfällige Konfiguration mit Item-Gruppen entfällt. Daher hier eine kurze Anleitung, wie das group Thing funktioniert und in openHAB 2 eingebunden werden kann.

Für die direkte Adressierung von Gruppen benötigt man deren IDs aus der Hue Bridge. Diese erhält man wieder aus dem Clip-Formular der Hue Bridge:

http://<Hue-Bridge-IP-Adresse>/debug/clip.html

Eingabe

URL

/api/<API-User-String (40-stellig)>/groups

Method

GET

Im Ausgabefenster werden nun alle benötigten Infos zu den Gruppen angezeigt. Hier ein Beispiel (der rot markierte Wert ist die ID):

{  "1": {  "name": "Room 1", "lights": [ "1", "2", "3" ], "type": "Room", ...  }  }

Die Konfiguration erfolgt dann in den Items und den Things wie folgt:

$OPENHAB_CONF/things/hue.things

Bridge hue:bridge:hue01 "Bridge: HUE01" [ ..... ]
{
   group  group1    "Light: Group 1" @ "Room 1"        [ groupId="1" ]
}

$OPENHAB_CONF/items/hue.items

Group    Group1             "Light: Group 1"                     <light>        { alexa="Endpoint.Light" [category="LIGHT"] }
Switch   Group1_OnOff       "Light: Group 1 On/Off"              <light>        { channel="hue:group:hue01:group1:color", alexa="PowerController.powerState" [category="LIGHT"] }
Dimmer   Group1_Dimmer      "Light: Group 1 Dimmer"              <slider>       { channel="hue:group:hue01:group1:color", alexa="BrightnessController.brightness" [category="LIGHT"] }
Color    Group1_Color       "Light: Group 1 Color"               <colorwheel>   { channel="hue:group:hue01:group1:color", alexa="ColorController.color" [category="LIGHT"] }
Dimmer   Group1_ColorTemp   "Light: Group 1 Color Temperature"   <slider>       { channel="hue:group:hue01:group1:color_temperature", alexa="ColorTemperatureController.colorTemperatureInKelvin" [category="LIGHT"] }

Noch ein Hinweis:
Standardmäßig existiert eine Gruppe All lights vom Typ LightGroup auf der Hue-Bridge. Die Gruppe hat die GroupID „0“ und wird von der Bridge selbst verwaltet.

Quellen:
https://www.openhab.org/
https://www.openhab.org/docs/ecosystem/alexa/

4 Antworten

  1. Max2020 sagt:

    Congratulations, I carefully and passionately followed all your articles on OpenHab and I managed to make everything work.
    Your instructions are clear and precise and I have learned a lot.
    I will continue to follow you for other topics, I consider you a good reference.
    Thanks

  2. Vielen Dank für den wertvollen Beitrag! Ausgezeichnet Blog.

  3. Ralf sagt:

    Du schreibst, dass Du in Deinem neuen Haus Home Assistant einsetzt.
    Was ist bei Home Assistant besser, bzw. warum hast du das System gewechselt?
    Mein OpenHab 2 funktioniert, ich muss aber öfter daran basteln, damit alles läuft.
    Ist Assistant vielleicht wartungsarmer?

    • Hallo Ralf
      Vorab, OpenHAB ist meiner Erfahrung nach ein sehr gutes und stabiles System für die Hausautomatisierung. Wenn es mal läuft, gibt es eigentlich keinen Grund, zu wechseln. Bei mir hat den Ausschlag gegeben, dass ich durch den Umzug eh alles neu einrichten muss, weswegen ich die einzelnen Systeme OpenHAB, ioBroker und Home Assistant im Vorfeld einfach mal ausprobiert habe und mich dann für das System entschieden habe, was mir persönlich und subjektiv besser gefällt.
      Letztlich waren es nur wenige Punkte, die die Entscheidung zu Gunsten von Home Assistant gebracht haben:

      • Nutzt man Home Assistantn OS, bekommt man nicht nur die Updates für die Anwendung von den Entwicklern, sondern auch die des Betriebssystems und der Abhängigkeiten (z.B. Docker). Somit hat man zumindest die Gewissheit, nicht in Versionskonflikte oder Ähnliches zu kommen. Nachteil ist, dass i.d.R. einmal pro Woche irgendein Update kommt (was man ja aber nicht immer sofort installieren muss).
      • Die Konfiguration des User Interfaces ist einfacher. Home Assistant benötigt nur eine Konfigurationsoberfläche (Lovelace UI), sowohl für Web, als auch für Displays oder die Mobile-App. OpenHAB benötigt das Classic Inferface für die Mobil-App und HABPanel, wenn man eine schöne Web- oder Display-Oberfläche haben möchte.
      • Stichwort Mobile-App: Ich persönlich finde die Mobile-App von OpenHAB nicht wirklich optisch ansprechend. Funktion top aber das Auge isst halt auch mit. Das Lovelace UI von Home Assistant ist einfach irgendwie edel.
      • Und noch ein Vorteil hat die Mobile-App bei Home Assistant: Bei OpenHAB ist für Geofencing und Location-basierten Automationen mit iOS das iCloud Binding erforderlich. Das hat bei mir den Akku so belastet, dass ich das iPhone jeden Tag laden musste. Zudem gibt’s jedes Jahr, wenn Apple sein Zertifikat für iCloud ändert, Probleme mit dem Binding. Bei Home Assistant gibt’s zwar auch eine iCloud Integration, die ist aber eigentlich unnötig. Alles, was OpenHAB mit dem iCloud Binding macht (Location, Akku-Ladestand, etc.), macht Home Assistant mit der eigenen Mobile-App – und darüber hinaus noch mehr. Wenn man das möchte, kann man sogar seine Bewegungsdaten (Schritte, etc.) von Home Assistant abfragen und weiterverwenden. Was alles geht, findest du hier. Zum Akku-Verbrauch kann ich allerdings hier noch nichts sagen.
      • Aus beruflichen Gründen werde ich zukünftig 2 Wohnsitze haben. Home Assistant bietet eine sog. Custom Component an, namens Home Assistant Remote. Damit ist es möglich, eine Home Assistant „Slave“-Instanz (Wohnsitz 1) an eine Home Assistant „Master“-Instanz (Wohnsitz 2) zu binden, sodass beide Standorte über eine Oberfläche bedient werden können. Bei OpenHAB geht das meines Wissens nach nicht, bzw. ist nur sehr schwierig per MQTT zu bewerkstelligen.
      • Ursprünglich hatte ich geplant, Thermostate von Bosch Smart Home für die Fussbodenheizung zu verwenden. Das habe ich zwar inzwischen verworfen und spielt daher keine Rolle mehr, aber für Home Assistant gibt es auch dafür eine Integration (auch wenn die noch nicht offiziell ist, sondern eine Custom Component; ist aber bereits in der Validierung durch die Home Assistant Entwickler). Für OpenHAB gibt’s da nichts.
      • Home Assistant bietet eine schöne Integration für die Google Maps Traffic API. Dadurch kann ich mir schon beim Aufstehen die Verkehrslage z.B. auf einem Display anzeigen lassen vor der Fahrt vom (100 km entfernten) Haus zur Arbeit. Auch das ist aber ein Spezialfall.

      Dennoch gibt es auch Punkte, die bei Home Assistant nicht oder nicht so gut implementiert sind. So verwende ich z.B. OpenHAB Astro Binding. So detailliert gibt’s das für Home Assistant nicht, aber mir reicht es, das zumindest Sonnenaufgang/-untergang, Mondaufgang/-untergang und Jahreszeiten/Sternzeichen vorhanden sind.
      Was das basteln angeht: je nach Ausprägung deiner Komponenten und deren Anzahl geht kein System auf die Dauer ohne etwas Bastelarbeit. Ich hatten in OpenHAB ja eigentlich nur die Philips Hue Beleuchtung, Media Komponenten und ein paar Spielereien drin. Da hielt sich das in Grenzen. Wie das in Zukunft mit Beleuchtung, Heizung, Fenstersensoren und sonstigen Komponenten wird, kann ich selbst noch nicht abschätzen.
      Gruß
      Andreas

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.