Ok, I implemented it with a user app. My brain just can't work with the rules for some reason (don't laugh).
definition(
name: "Alarm After Door Open 5s, defeat with Button",
namespace: "your.namespace",
author: "Your Name",
description: "Trigger an alarm after Door Contact 1 has been open for 5 seconds, unless the Third Reality Smart Button is pressed",
category: "Convenience",
iconUrl: "",
iconX2Url: ""
)
preferences {
section("Select Devices") {
input "doorContact1", "capability.contactSensor", title: "Door Contact 1", required: true
input "alarm1", "capability.alarm", title: "Alarm 1", required: true
input "button1", "capability.pushableButton", title: "Third Reality Smart Button", required: true
}
}
def installed() {
subscribe(doorContact1, "contact.open", contactOpenHandler)
subscribe(doorContact1, "contact.closed", contactClosedHandler)
subscribe(button1, "pushed", buttonPushedHandler)
}
def updated() {
unsubscribe()
subscribe(doorContact1, "contact.open", contactOpenHandler)
subscribe(doorContact1, "contact.closed", contactClosedHandler)
subscribe(button1, "pushed", buttonPushedHandler)
}
def contactOpenHandler(evt) {
log.debug "Door Contact 1 opened"
runIn(5, triggerAlarm)
}
def contactClosedHandler(evt) {
log.debug "Door Contact 1 closed"
unschedule(triggerAlarm)
alarm1.off()
}
def buttonPushedHandler(evt) {
log.debug "Third Reality Smart Button pushed"
unschedule(triggerAlarm)
alarm1.off()
}
def triggerAlarm() {
log.debug "Triggering Alarm 1"
alarm1.on()
}