Motion nach x mal umschalten
Verfasst: 12. Feb 2022 08:36
MoinZen
ich habe mir überlegt, das ich gerne einen Motion-Sensor in der Küche nach X Auslösungen in ein längeres Timeintervall umschalten möchte. Ziel ist es...das wenn man(n) in der Küche länger aktiv ist das Timer-Intervall auf 10 Minuten zu schalten, sonst auf 3. Die Prüfung soll sich nach y Mal wieder auf 3 zurückstellen. z.B. Erstauslösung -> 3 Min., nächste Auslösung ->3 Min., nächste Auslösung ->3 Min., nächste Auslösung ->10 Min., nächste Auslösung ->10 Min., nächste Auslösung ->3 Min., usw.
Aktuell schaltet der nach genau einer Auslösung und nach 3 Minuten aus
Was hab ich bisher (ja...sind viele logInfos drin)
Die unterschiedlichen Lichtszenen muss ich noch implementieren. Der Timer ist "global" definiert
Ich hab schon an
gedacht...aber keinen Plan wie ich
1. einen "globalen" Counter definieren kann (var Number counter=0 im Header der Rule klappt nicht)
2. wo ich das reschedule einbaue
3. wie ich diese Umschaltung hinbekomme. Evtl. mit 2 "globalen" Countern und 1 Boolean?!
Vielleicht habt ihr ja ein paar Ideen?
ich habe mir überlegt, das ich gerne einen Motion-Sensor in der Küche nach X Auslösungen in ein längeres Timeintervall umschalten möchte. Ziel ist es...das wenn man(n) in der Küche länger aktiv ist das Timer-Intervall auf 10 Minuten zu schalten, sonst auf 3. Die Prüfung soll sich nach y Mal wieder auf 3 zurückstellen. z.B. Erstauslösung -> 3 Min., nächste Auslösung ->3 Min., nächste Auslösung ->3 Min., nächste Auslösung ->10 Min., nächste Auslösung ->10 Min., nächste Auslösung ->3 Min., usw.
Aktuell schaltet der nach genau einer Auslösung und nach 3 Minuten aus
Was hab ich bisher (ja...sind viele logInfos drin)
Code: Alles auswählen
rule "Kueche_Bewegung_an"
when
Item I_eg_ku_bs_01_oc changed to ON
then
if (x_eg_ku_sz_01_sw.state==ON){
logInfo("Kueche", "Lichtszene Kochen")
} else if (x_eg_ku_sz_02_sw.state==ON){
logInfo("Kueche", "Lichtszene Essen")
} else if (x_eg_ku_sz_03_sw.state==ON){
logInfo("Kueche", "Lichtszene Kaffee")
} else {
logInfo("Kueche", "Bewegung erkannt")
if(sTageslicht.state==OFF){
x_eg_ku_sz_05_sw.sendCommand(ON)
logInfo("Kueche", "Abend")
if(kitchenTimer === null) {
logInfo("Kueche", "Warte 3 Minuten")
kitchenTimer = createTimer(now.plusMinutes(3), [|
kitchenTimer = null
logInfo("Kueche", "Nach 3 Minuten")
x_eg_ku_sz_05_sw.sendCommand(OFF)
logInfo("Kueche", "Aus")
])
}else {
logInfo("Kueche", "tagsueber")
}
}
}
end
Ich hab schon an
Code: Alles auswählen
bewegungTimer.reschedule(now.plusMinutes(timeoutMinutes ))
1. einen "globalen" Counter definieren kann (var Number counter=0 im Header der Rule klappt nicht)
2. wo ich das reschedule einbaue
3. wie ich diese Umschaltung hinbekomme. Evtl. mit 2 "globalen" Countern und 1 Boolean?!
Vielleicht habt ihr ja ein paar Ideen?