2 * You left the door open!
4 * Copyright 2014 ObyCode
6 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
7 * in compliance with the License. You may obtain a copy of the License at:
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
12 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
13 * for the specific language governing permissions and limitations under the License.
17 name: "You left the door open!",
18 namespace: "com.obycode",
20 description: "Choose a contact sensor from your alarm system (AlarmThing) and get a notification when it is left open for too long.",
21 category: "Safety & Security",
22 iconUrl: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience.png",
23 iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience@2x.png")
27 section("Notify me when the door named...") {
28 input "theSensor", "string", multiple: false, required: true
30 section("On this alarm...") {
31 input "theAlarm", "capability.alarm", multiple: false, required: true
33 section("Is left open for more than...") {
34 input "maxOpenTime", "number", title: "Minutes?"
39 log.debug "Installed with settings: ${settings}"
45 log.debug "Updated with settings: ${settings}"
52 subscribe(theAlarm, theSensor, sensorTriggered)
55 def sensorTriggered(evt) {
56 if (evt.value == "closed") {
59 else if (evt.value == "open" && state.status != "scheduled") {
60 runIn(maxOpenTime * 60, takeAction, [overwrite: false])
61 state.status = "scheduled"
66 if (state.status == "scheduled")
68 log.debug "$theSensor was open too long, sending message"
69 def msg = "Your $theSensor has been open for more than $maxOpenTime minutes!"
73 log.trace "Status is no longer scheduled. Not sending text."