Deckenlicht im Badezimmer

Diesen Beitrag schrieb ich 8 Jahre und 12 Monate zuvor; die nachfolgenden Ausführungen müssen heute weder genau so nach wie vor funktionieren, noch meiner heutigen Meinung entsprechen. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 3 Minuten

Unsere Badezimmerrenovierung nähert sich dem Ende, die Fertigstellung ist zum Greifen nahe. So langsam ist es daher an der Zeit, die Beleuchtungssteuerung in Angriff zu nehmen! Hier kommt der HM-LC-Sw4-DR zum Einsatz: ein 4-fach Funk-Schaltaktor, der per Hutschienenmontage seinen Platz direkt im Sicherungskasten findet. Die Deckenbeleuchtung (LED, nicht dimmbar) ist an Channel 1 angeschlossen: ist LEQ0900581:1 also auf ON, so brennt das Licht, ist es auf OFF, so ist das Licht aus. Analog hierzu lässt sich in openHAB ein Switch definieren, der genau das widerspiegelt: alle weiteren Schalter, die eingesetzt werden sollen, werden dann diesen Switch manipulieren, so dass zu jeder Zeit ein konsistenter Zustand herrscht.

Switch Badezimmer_1_Deckenlicht
  "Deckenlicht"
  (Badezimmer_1, Lampen)
  { homematic="address=LEQ0900581, channel=1, parameter=STATE" }

Deckenlicht per App

In meinem Setup ist der Switch Badezimmer_1_Deckenlicht der Gruppe Badezimmer_1 angegliedert und somit auch in der openHAB-App angezeigt: übers Smartphone kann ich das Licht nun schon ein- und ausschalten. Das allein ist jedoch natürlich nicht praktikabel, schon gar nicht für Besucher ;-)

Deckenlicht per Wandschalter

Es wird auch ein üblicher Wandschalter benötigt (unsere sind von Merten), und ihn habe ich über HM-SwI-3-FM, eine 3-fach Funk-Schalterschnittstelle, ins Spiel gebracht: er hängt an Channel 1. Im Webinterface der CCU2 können wir nun also den Button betätigen (Status und Bedienung → Geräte → HM-SwI-3-FM → Button anklicken) und in der DEBUG-Ausgabe von openHAB beobachten, wie er sich meldet:

Received new (Boolean) value 'true' for DatapointConfig[address=LEQ1097103,channel=1,parameter=PRESS]

Wird hingegen der physikalische Schalter betätigt, verwirrt er damit, dass er kein PRESS-Event liefert, sondern lediglich ein INSTALL_TEST; alle weiteren Aktionen in openHAB müssen hiervon abhängig gemacht werden!

Received new (Boolean) value 'true' for DatapointConfig[address=LEQ1097103,channel=1,parameter=INSTALL_TEST]

Und in meinem Setup sieht das dann so aus:

Switch Badezimmer_1_3fach_1
  "Außenschalter: Deckenlicht"
  { homematic="address=LEQ1097103, channel=1, parameter=INSTALL_TEST" }

Das Verwirrende an dieser Schalterschnittstelle ist im ersten Moment, dass sie beim Betätigen nicht klassisch ON beziehungsweise OFF sendet; sie weiß nicht, was eigentlich an ihr angeschlossen ist und welchen Status das angeschlossene Gerät gerade innehat. Stattdessen wird mit jedem Betätigen ein true für INSTALL_TEST gesendet. Da Badezimmer_1_3fach_1 als Switch in openHAB hinterlegt wird, wird das übergebene true zu einem ON konvertiert – keep in mind, den Zustand OFF wird er nie annehmen! In meinem Setup gehört der Außenschalter keiner openHAB-Gruppe an und wird in der App nicht angezeigt.

Was also soll nun passieren, wenn der Schalter betätigt wird? Eigentlich ganz einfach: ist das Licht aus, soll es angeschaltet werden – und umgekehrt. Und da die Schaltung wiederum auf Badezimmer_1_Deckenlicht erfolgt, müssen wir nichts weiter tun, um den Zustand konsistent zu halten – auch, wenn das Licht über den Außenschalter eingeschaltet wird, wird es in der App korrekt angezeigt und kann beispielsweise hierüber ausgeschaltet werden. Mein Regelwerk habe ich in `Badezimmer_1_Deckenlicht.rules festgehalten.

rule "Aussenschalter Deckenlicht Badezimmer_1"
when
  Item Badezimmer_1_3fach_1 received update ON
then
  logInfo("Badezimmer_1", "Status Deckenlicht ist {}", Badezimmer_1_Deckenlicht.state)
  if(Badezimmer_1_Deckenlicht.state==ON) {
    Badezimmer_1_Deckenlicht.sendCommand(OFF)
  } else {
    Badezimmer_1_Deckenlicht.sendCommand(ON)
  }
  logInfo("Badezimmer_1", "Aussenschalter schaltet Deckenlicht {}", Badezimmer_1_Deckenlicht.state)
end

In der DEBUG-Ausgabe lässt sich die Abarbeitung des Regelwerks gut nachvollziehen – erst für das Anschalten des Lichts, anschließend wird der Schalter erneut betätigt um es wieder auszuschalten:

19:45:21.344 [DEBUG] [.b.h.i.c.HomematicCommunicator:174  ] - Received new (Boolean) value 'true' for DatapointConfig[address=LEQ1097103,channel=1,parameter=INSTALL_TEST]
19:45:21.352 [DEBUG] [.h.i.c.s.AbstractTypeConverter:105  ] - Converting (Boolean) value 'true' with OnOffTypeConverter for HmDatapoint[address=LEQ1097103,channel=1,parameter=INSTALL_TEST]
19:45:21.357 [INFO ] [runtime.busevents             :26   ] - Badezimmer_1_3fach_1 state updated to ON
19:45:21.396 [DEBUG] [m.r.internal.engine.RuleEngine:305  ] - Executing rule 'Aussenschalter Deckenlicht Badezimmer_1'
19:45:21.484 [INFO ] [nhab.model.script.Badezimmer_1:53   ] - Status Deckenlicht ist OFF
19:45:21.511 [INFO ] [runtime.busevents             :22   ] - Badezimmer_1_Deckenlicht received command ON
19:45:21.519 [DEBUG] [.b.h.i.c.HomematicCommunicator:243  ] - Received command ON for item Badezimmer_1_Deckenlicht
19:45:21.541 [DEBUG] [.h.i.c.s.AbstractTypeConverter:66   ] - Converting type OnOffType with value 'ON' to (Boolean) value with OnOffTypeConverter for HmDatapoint[address=LEQ0900581,channel=1,parameter=STATE]
19:45:21.547 [DEBUG] [o.o.b.h.i.c.HomematicPublisher:73   ] - Sending to Homematic server HmDatapoint[address=LEQ0900581,channel=1,parameter=STATE]
19:45:21.794 [DEBUG] [.b.h.i.c.HomematicCommunicator:174  ] - Received new (Boolean) value 'true' for DatapointConfig[address=LEQ0900581,channel=1,parameter=STATE]
19:45:21.799 [DEBUG] [.h.i.c.s.AbstractTypeConverter:105  ] - Converting (Boolean) value 'true' with OnOffTypeConverter for HmDatapoint[address=LEQ0900581,channel=1,parameter=STATE]
19:45:21.813 [INFO ] [runtime.busevents             :26   ] - Badezimmer_1_Deckenlicht state updated to ON
19:45:21.817 [DEBUG] [.b.h.i.c.HomematicCommunicator:174  ] - Received new (Boolean) value 'false' for DatapointConfig[address=LEQ0900581,channel=1,parameter=WORKING]
19:45:21.824 [INFO ] [nhab.model.script.Badezimmer_1:53   ] - Aussenschalter schaltet Deckenlicht ON
19:45:25.844 [DEBUG] [.b.h.i.c.HomematicCommunicator:174  ] - Received new (Boolean) value 'true' for DatapointConfig[address=LEQ1097103,channel=1,parameter=INSTALL_TEST]
19:45:25.849 [DEBUG] [.h.i.c.s.AbstractTypeConverter:105  ] - Converting (Boolean) value 'true' with OnOffTypeConverter for HmDatapoint[address=LEQ1097103,channel=1,parameter=INSTALL_TEST]
19:45:25.854 [INFO ] [runtime.busevents             :26   ] - Badezimmer_1_3fach_1 state updated to ON
19:45:25.861 [DEBUG] [m.r.internal.engine.RuleEngine:305  ] - Executing rule 'Aussenschalter Deckenlicht Badezimmer_1'
19:45:25.878 [INFO ] [nhab.model.script.Badezimmer_1:53   ] - Status Deckenlicht ist ON
19:45:25.913 [INFO ] [runtime.busevents             :22   ] - Badezimmer_1_Deckenlicht received command OFF
19:45:25.919 [DEBUG] [.b.h.i.c.HomematicCommunicator:243  ] - Received command OFF for item Badezimmer_1_Deckenlicht
19:45:25.925 [DEBUG] [.h.i.c.s.AbstractTypeConverter:66   ] - Converting type OnOffType with value 'OFF' to (Boolean) value with OnOffTypeConverter for HmDatapoint[address=LEQ0900581,channel=1,parameter=STATE]
19:45:25.931 [DEBUG] [o.o.b.h.i.c.HomematicPublisher:73   ] - Sending to Homematic server HmDatapoint[address=LEQ0900581,channel=1,parameter=STATE]
19:45:26.133 [DEBUG] [.b.h.i.c.HomematicCommunicator:174  ] - Received new (Boolean) value 'false' for DatapointConfig[address=LEQ0900581,channel=1,parameter=STATE]
19:45:26.138 [DEBUG] [.h.i.c.s.AbstractTypeConverter:105  ] - Converting (Boolean) value 'false' with OnOffTypeConverter for HmDatapoint[address=LEQ0900581,channel=1,parameter=STATE]
19:45:26.146 [INFO ] [runtime.busevents             :26   ] - Badezimmer_1_Deckenlicht state updated to OFF
19:45:26.173 [DEBUG] [.b.h.i.c.HomematicCommunicator:174  ] - Received new (Boolean) value 'false' for DatapointConfig[address=LEQ0900581,channel=1,parameter=WORKING]
19:45:26.161 [INFO ] [nhab.model.script.Badezimmer_1:53   ] - Aussenschalter schaltet Deckenlicht OFF

Deckenlicht per Wandtaster

Zuguterletzt darf auch HM-PB-6-WM55 mitspielen, ein 6-fach-Wandtaster, der sich äußerst variabel einsetzen lässt. Ich reserviere für mein Deckenlicht Channel 1 und Channel 2, beliebige andere Konstellationen sind denkbar.

Switch Badezimmer_1_6fach_1_release
  "Wandtaster: Deckenlicht an/ aus"
  { homematic="address=MEQ0385873, channel=1, parameter=PRESS_LONG_RELEASE" }
 
Switch Badezimmer_1_6fach_2_release
  "Wandtaster: Deckenlicht an/ aus"
  { homematic="address=MEQ0385873, channel=2, parameter=PRESS_LONG_RELEASE" }

Das Schalten des Deckenlichts lege ich auf das Event PRESS_LONG_RELEASE, also auf den Moment, in dem die Taste nach einem langen Tastendruck losgelassen wird (PRESS_SHORT werde ich beim Einbinden der Wandlampen nutzen, welche auch dimmbar sein werden; auf Channel 1 und Channel 2 belasse ich dieses Event vorerst unbelegt, ebenso wie PRESS_LONG). Das Regelwerk zur Schaltung lässt sich nun leicht anpassen, indem lediglich der when-Teil der Regel erweitert wird (vgl. Badezimmer_1_Deckenlicht.rules):

rule "Schaltung Deckenlicht Badezimmer_1"
when
  Item Badezimmer_1_3fach_1 received update ON or
  Item Badezimmer_1_6fach_1_release received update ON or
  Item Badezimmer_1_6fach_2_release received update ON
then
  ...
11:42:49.659 [INFO ] [runtime.busevents             :26   ] - Badezimmer_1_6fach_1_release state updated to ON
11:42:49.667 [DEBUG] [m.r.internal.engine.RuleEngine:305  ] - Executing rule 'Schalte Deckenlicht Badezimmer_1'
11:42:50.678 [INFO ] [nhab.model.script.Badezimmer_1:53   ] - Status Deckenlicht ist OFF
11:42:51.880 [INFO ] [runtime.busevents             :22   ] - Badezimmer_1_Deckenlicht received command ON
11:42:51.888 [DEBUG] [.b.h.i.c.HomematicCommunicator:243  ] - Received command ON for item Badezimmer_1_Deckenlicht
11:42:51.894 [DEBUG] [.h.i.c.s.AbstractTypeConverter:66   ] - Converting type OnOffType with value 'ON' to (Boolean) value with OnOffTypeConverter for HmDatapoint[address=LEQ0900581,channel=1,parameter=STATE]
11:42:51.900 [DEBUG] [o.o.b.h.i.c.HomematicPublisher:73   ] - Sending to Homematic server HmDatapoint[address=LEQ0900581,channel=1,parameter=STATE]
11:42:52.083 [DEBUG] [.b.h.i.c.HomematicCommunicator:174  ] - Received new (Boolean) value 'true' for DatapointConfig[address=LEQ0900581,channel=1,parameter=STATE]
11:42:52.087 [DEBUG] [.h.i.c.s.AbstractTypeConverter:105  ] - Converting (Boolean) value 'true' with OnOffTypeConverter for HmDatapoint[address=LEQ0900581,channel=1,parameter=STATE]
11:42:52.103 [INFO ] [runtime.busevents             :26   ] - Badezimmer_1_Deckenlicht state updated to ON
11:42:52.108 [DEBUG] [.b.h.i.c.HomematicCommunicator:174  ] - Received new (Boolean) value 'false' for DatapointConfig[address=LEQ0900581,channel=1,parameter=WORKING]
11:42:52.566 [DEBUG] [.h.i.c.s.AbstractTypeConverter:66   ] - Converting type OnOffType with value 'OFF' to (Boolean) value with OnOffTypeConverter for HmDatapoint[address=MEQ0385873,channel=1,parameter=PRESS_LONG_RELEASE]
11:42:52.571 [DEBUG] [.h.i.c.s.AbstractTypeConverter:105  ] - Converting (Boolean) value 'false' with OnOffTypeConverter for HmDatapoint[address=MEQ0385873,channel=1,parameter=PRESS_LONG_RELEASE]
11:42:52.583 [INFO ] [runtime.busevents             :26   ] - Badezimmer_1_6fach_1_release state updated to OFF
11:42:52.587 [DEBUG] [.h.i.communicator.ItemDisabler:98   ] - Disabled Item Badezimmer_1_6fach_1_release with binding DatapointConfig[address=MEQ0385873,channel=1,parameter=PRESS_LONG_RELEASE]
11:42:52.695 [INFO ] [nhab.model.script.Badezimmer_1:53   ] - Schalte Deckenlicht in Badezimmer_1 ON

HM-PB-6-WM55, der Wandtaster, äußert sich in der DEBUG-Ausgabe von openHAB anders als HM-SwI-3-FM, an welchem der Wandschalter hängt: beim Betätigen von PRESS_LONG_RELEASE sendet er ein ON und einen Moment später dann ein OFF, so dass bei ihm der Default-Zustand jederzeit OFF, also false, ist. Deshalb ist es auch sehr wichtig, das Regelwerk von received update ON abhängig zu machen und nicht lediglich von received update – die obenstehende Regel würde sonst bei (einmaligem!) Betätigen des Wandtasters im ersten Schritt das Licht an- und im nächsten Moment direkt wieder abschalten.

Alle Bilder dieser Seite: © Marianne Spiller – Alle Rechte vorbehalten
Hintergrundbild: 1500x 1000px, Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten

Eure Gedanken zu „Deckenlicht im Badezimmer“

Ich freue mich über jeden Kommentar, es sei denn, er ist blöd. Deshalb behalte ich mir auch vor, die richtig blöden kurzerhand wieder zu löschen. Die Kommentarfunktion ist über GitHub realisiert, weshalb ihr euch zunächst dort einloggen und „utterances“ bestätigen müsst. Die Kommentare selbst werden im Issue-Tracker und mit dem Label „✨💬✨ comment“ erfasst – jeder Blogartikel ist ein eigenes Issue. Über GitHub könnt ihr eure Kommentare somit jederzeit bearbeiten oder löschen.