Hue Lampe Zustand in einer Regel auswerten und schalten

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
toto1975
Beiträge: 47
Registriert: 8. Jan 2016 10:47
Answers: 1

Hue Lampe Zustand in einer Regel auswerten und schalten

Beitrag von toto1975 »

Hallo in die Runde,

ich habe mehrere Hue Lampen die ich jetzt ebenfalls in OpenHab einbinden möchte. Dazu habe ich einen Lichtschalter (HmIp-BSM) diesen kann ich mit einen kurzen Druck auf Taster 1 (unten) oder 2 (oben) verschiedene Aktionen zu ordnen. Das Problem ist hier das der Zustand sehr schnell von "ON" auf "OFF" springt.

Damit ich nun die Lampen einschalten kann habe ich mir folgende Regel erstellt:

Code: Alles auswählen

rule "Hue Wohnzimmer an"
when
    Item LichtschalterWohnzimmer_2_PRESS_SHORT changed 
then
    if (Wohnzimmer_mitte_Farbe.state == "82,56,0") { //Licht einschalten
        Wohnzimmer_mitte_Farbe.sendCommand(ON)
    }
    else if (Wohnzimmer_mitte_Farbe.state == "82,56,100") { //Licht ausschalten
        Wohnzimmer_mitte_Farbe.sendCommand(OFF)   
    }
end
Es passiert allerdings absolut nichts. Wenn die Lampe eingeschaltet ist bekomme ich die Werte 82.56.100 angezeigt bei ausgeschalteter Lampe 82.56.0

Hat hier jemand eine Idee? Was mache ich falsch?

Viele Grüße
Torsten
von udo1toni » 9. Feb 2024 02:03
Wenn ich gemein sein wollte... Alles :)

Aber tröste Dich, es gibt so viele Möglichkeiten mit openHAB, da sieht man manchmal die "korrekte" (im Sinne von "sauberste") Lösung nicht.

Punkt eins ist schon der Trigger der Rule. Ein Taster wird nicht mit einem Item verkoppelt, stattdessen verwendet man in der Rule einen Channel Trigger.
https://www.openhab.org/addons/bindings ... ic/#button zeigt das beispielhaft:

Code: Alles auswählen

rule "example trigger rule"
when
    Channel 'homematic:HM-RC-19-B:ccu:KEQ0012345:1#BUTTON' triggered SHORT_PRESSED
then
    ...
end
Punkt zwei ist das Toggeln des Schaltzustands. Da es sich bei der Lampe um ein Color Item handelt, hast Du als Status gewöhnlich HSBType, was es etwas unpraktisch macht. Man könnte nun versuchen, HSBType nach String zu konvertieren, aber die kleinste Abweichung - warum auch immer - und die Rule funktioniert nicht mehr.
Zum Glück gibt es aber die Möglichkeit, explizit einen bestimmten Status abzurufen (sofern dieser grundsätzlich vom Item unterstützt wird).

Code: Alles auswählen

rule "example trigger rule"
when
    Channel 'homematic:HM-RC-19-B:ccu:KEQ0012345:1#BUTTON' triggered SHORT_PRESSED
then
    Wohnzimmer_mitte_Farbe.sendCommand(if(Wohnzimmer_mitte_Farbe.getStateAs(OnOffType) != ON) ON else OFF)
end
Den Trigger musst Du natürlich anpassen :) der Rest sollte aber 1:1 funktionieren. .getStateAs(OnOffType) liefert für die Helligkeit 0 OFF, ansonsten ON. .getStateAs(PercentType) sollte ebenfalls funktionieren und dann den reinen Helligkeitswert liefern (also 0 - 100).
Den HSBType könntest Du auch so auswerten:

Code: Alles auswählen

Wohnzimmer_mitte_Farbe.sendCommand(if((Wohnzimmer_mitte_Farbe.state as HSBType).brightness != 0) OFF else ON)
Erscheint aber vergleichsweise umständlich...
Gehe zur vollständigen Antwort

Benutzeravatar
udo1toni
Beiträge: 13986
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Hue Lampe Zustand in einer Regel auswerten und schalten

Beitrag von udo1toni »

Wenn ich gemein sein wollte... Alles :)

Aber tröste Dich, es gibt so viele Möglichkeiten mit openHAB, da sieht man manchmal die "korrekte" (im Sinne von "sauberste") Lösung nicht.

Punkt eins ist schon der Trigger der Rule. Ein Taster wird nicht mit einem Item verkoppelt, stattdessen verwendet man in der Rule einen Channel Trigger.
https://www.openhab.org/addons/bindings ... ic/#button zeigt das beispielhaft:

Code: Alles auswählen

rule "example trigger rule"
when
    Channel 'homematic:HM-RC-19-B:ccu:KEQ0012345:1#BUTTON' triggered SHORT_PRESSED
then
    ...
end
Punkt zwei ist das Toggeln des Schaltzustands. Da es sich bei der Lampe um ein Color Item handelt, hast Du als Status gewöhnlich HSBType, was es etwas unpraktisch macht. Man könnte nun versuchen, HSBType nach String zu konvertieren, aber die kleinste Abweichung - warum auch immer - und die Rule funktioniert nicht mehr.
Zum Glück gibt es aber die Möglichkeit, explizit einen bestimmten Status abzurufen (sofern dieser grundsätzlich vom Item unterstützt wird).

Code: Alles auswählen

rule "example trigger rule"
when
    Channel 'homematic:HM-RC-19-B:ccu:KEQ0012345:1#BUTTON' triggered SHORT_PRESSED
then
    Wohnzimmer_mitte_Farbe.sendCommand(if(Wohnzimmer_mitte_Farbe.getStateAs(OnOffType) != ON) ON else OFF)
end
Den Trigger musst Du natürlich anpassen :) der Rest sollte aber 1:1 funktionieren. .getStateAs(OnOffType) liefert für die Helligkeit 0 OFF, ansonsten ON. .getStateAs(PercentType) sollte ebenfalls funktionieren und dann den reinen Helligkeitswert liefern (also 0 - 100).
Den HSBType könntest Du auch so auswerten:

Code: Alles auswählen

Wohnzimmer_mitte_Farbe.sendCommand(if((Wohnzimmer_mitte_Farbe.state as HSBType).brightness != 0) OFF else ON)
Erscheint aber vergleichsweise umständlich...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

toto1975
Beiträge: 47
Registriert: 8. Jan 2016 10:47
Answers: 1

Re: Hue Lampe Zustand in einer Regel auswerten und schalten

Beitrag von toto1975 »

Perfekt, manchmal geht es so einfach wenn man weiß wie.
@udo1toni vielen Dank für die schnelle Hilfe.

Antworten