Ich bin gerade dabei mein System um ein paar Funktionen zu erweitern und bin auf ein "Problem" gestoßen. Ich möchte gerne dass mein System erkennt, dass das Licht manuell ausgeschaltet wurde.
Dies hat folgenden Hintergrund:
Ich habe ein Zeitschaltuhr mit Automatik-Funktion in meinem System, diese sieht wie folgt aus:
Code: Alles auswählen
rule "Zeitschaltuhren"
when
Time cron "0 00 17-23 * * ?" or
Item Sunset_State changed to ON or
Item Anwesend changed or
Item Kitchen_Spotlight1_Timer_On changed or
Item Kitchen_Spotlight1_Timer_Off changed or
Item Childsroom_Livingwall_Timer_On changed or
Item Childsroom_Livingwall_Timer_Off changed
then
val Sl1_OnSel = if(Kitchen_Spotlight1_Timer_On.state instanceof Number)(Kitchen_Spotlight1_Timer_On.state as Number) else 0
val Sl1_OffSel = if(Kitchen_Spotlight1_Timer_Off.state instanceof Number)(Kitchen_Spotlight1_Timer_Off.state as Number) else 0
val Lc_OnSel = if(Childsroom_Livingwall_Timer_On.state instanceof Number)(Childsroom_Livingwall_Timer_On.state as Number) else 0
val Lc_OffSel = if(Childsroom_Livingwall_Timer_Off.state instanceof Number)(Childsroom_Livingwall_Timer_Off.state as Number) else 0
var Sl1 = OFF
var Lc = OFF
if(Anwesend.state == ON){
if(Sl1_OnSel == 0)
if(Sunset_State.state == ON) Sl1 = ON
else if(now.getHour > (15 + Sl1_OnSel) && Sl1_OnSel != 0) Sl1 = ON
if(now.getHour > (19 + Sl1_OffSel) || now.getHour < 15) Sl1 = OFF
if(Lc_OnSel == 0)
if(Sunset_State.state == ON) Lc = ON
else if(now.getHour > (15 + Lc_OnSel) && Lc_OnSel != 0) Lc = ON
if(now.getHour > (19 + Lc_OffSel) || now.getHour < 15) Lc = OFF
} else {
Lc = OFF
Sl1 = OFF
}
if(Sl1 != HUE_Kitchen_Spotlight1.getStateAs(OnOffType)) HUE_Kitchen_Spotlight1.sendCommand(Sl1)
if(Lc != HUE_Childsroom_Livingwall.getStateAs(OnOffType)) HUE_Childsroom_Livingwall.sendCommand(Lc)
Wenn jetzt allerdings das Licht über Alexa vor der Ausschaltzeit der Zeitschaltuhr ausgeschaltet wurde, dann wird beim nächsten triggern der Rule (z.B. weil der Time Cron triggert) das Licht wieder eingeschaltet. Das soll so aber nicht sein. Es sollte aus bleiben.
Ich hätte das Problem mit Schaltern gelöst, doch mich würde interessieren, ob es eine bessere und elegantere Lösung gibt.
MfG
Elias