OH3.1 Milestone on RPi4
Can someone please help me convert my Kitchen Motion rule to OH3? I’m having a very difficult time with complex rules in the UI that used the Expire function:
Items:
Dimmer Sink1 "Sink1" <hue> (KitchenLight, Kitchen_Group, Lights, StartPersist) {channel="hue:0100:00178860ae33:21:brightness"}
Dimmer Sink2 "Sink2" <hue> (KitchenLight, Kitchen_Group, Lights, StartPersist) {channel="hue:0100:00178860ae33:19:brightness"}
Dimmer Stove1 "Stove1" <hue> (KitchenLight, Kitchen_Group, Lights, StartPersist) {channel="hue:0220:00178860ae33:25:brightness"}
Dimmer Stove2 "Stove2" <hue> (KitchenLight, Kitchen_Group, Lights, StartPersist) {channel="hue:0220:00178860ae33:28:brightness"}
Color Fridge1 "Fridge1" <hue> (KitchenLight, Kitchen_Group, Lights, StartPersist) {channel="hue:0210:00178860ae33:27:color"}
Color Fridge2 "Fridge2" <hue> (KitchenLight, Kitchen_Group, Lights, StartPersist) {channel="hue:0210:00178860ae33:26:color"}
String KitchenArmedTripped "Kitchen Sensor Armed/Tripped [%d]" (Kitchen_Group) {mios="unit:house,device:208/service/SecuritySensor1/ArmedTripped"}
Switch Kitchen_TIMER_5m_OFF (Virtuals, StartPersist) { expire="6m,command=OFF" }
Switch Kitchen_TIMER_61s_OFF (Virtuals, StartPersist) { expire="65s,command=OFF" }
Rules:
rule "Kitchen motion sensor fires"
when
Item KitchenArmedTripped changed to 1
then
val HSBType cRed = new HSBType(new DecimalType(0),new PercentType(100),new PercentType(100))
val HSBType cWhite = new HSBType(new DecimalType(0),new PercentType(0),new PercentType(100))
logInfo("Kitchen Motion", "Lux Reading, lights on KitchenLux.state =" + KitchenLux.state.toString)
if (KarenBedtime.state == OFF){
logInfo("Day time Kitchen Motion", "KitchenArmedTripped.state = " + KitchenArmedTripped.state.toString)
sendCommand(KitchenLight, ON)
sendCommand(Fridge1, cWhite)
sendCommand(Fridge2, cWhite)
} else {
logInfo("Night time Kitchen Motion", "KitchenArmedTripped.state = " + KitchenArmedTripped.state.toString)
sendCommand(Fridge1, cRed)
sendCommand(Fridge2, cRed)
}
Kitchen_TIMER_5m_OFF.sendCommand(ON)
Kitchen_TIMER_61s_OFF.sendCommand(ON)
end
rule "Kitchen_TIMER_5m_OFF changed to OFF"
when
Item Kitchen_TIMER_5m_OFF changed to OFF
then
if (KitchenArmedTripped.state == "1") {
logInfo("Kitchen Motion", "Kitchen Motion still detected, reset timer.")
Kitchen_TIMER_61s_OFF.sendCommand(ON)
Kitchen_TIMER_5m_OFF.sendCommand(ON)
} else {
logInfo("Kitchen Motion", "KitchenArmedTripped.state=" + KitchenArmedTripped.state)
logInfo("Kitchen Motion", "No Motion Detected. Turning off kitchen")
sendCommand(KitchenLight, OFF)
}
end
rule "Kitchen_TIMER_61s_OFF changed to OFF"
when
Item Kitchen_TIMER_61s_OFF changed to OFF
then
if (KitchenArmedTripped.state == "1") {
logInfo("Kitchen Motion", "Kitchen Motion still detected, reset timer.")
Kitchen_TIMER_61s_OFF.sendCommand(ON)
Kitchen_TIMER_5m_OFF.sendCommand(ON)
} else {
logInfo("Kitchen Motion", "60s timer off KitchenArmedTripped.state = " + KitchenArmedTripped.state)
}
end