mirror of
https://github.com/mtan93/SmartThingsPublic.git
synced 2026-04-21 14:23:06 +01:00
Initial commit
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
/**
|
||||
* Hall Light: Welcome Home
|
||||
*
|
||||
* Author: brian@bevey.org
|
||||
* Date: 9/25/13
|
||||
*
|
||||
* Turn on the hall light if someone comes home (presence) and the door opens.
|
||||
*/
|
||||
|
||||
definition(
|
||||
name: "Hall Light: Welcome Home",
|
||||
namespace: "imbrianj",
|
||||
author: "brian@bevey.org",
|
||||
description: "Turn on the hall light if someone comes home (presence) and the door opens.",
|
||||
category: "Convenience",
|
||||
iconUrl: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience.png",
|
||||
iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience%402x.png"
|
||||
)
|
||||
|
||||
preferences {
|
||||
section("People to watch for?") {
|
||||
input "people", "capability.presenceSensor", multiple: true
|
||||
}
|
||||
|
||||
section("Front Door?") {
|
||||
input "sensors", "capability.contactSensor", multiple: true
|
||||
}
|
||||
|
||||
section("Hall Light?") {
|
||||
input "lights", "capability.switch", title: "Switch Turned On", multilple: true
|
||||
}
|
||||
|
||||
section("Presence Delay (defaults to 30s)?") {
|
||||
input name: "presenceDelay", type: "number", title: "How Long?", required: false
|
||||
}
|
||||
|
||||
section("Door Contact Delay (defaults to 10s)?") {
|
||||
input name: "contactDelay", type: "number", title: "How Long?", required: false
|
||||
}
|
||||
}
|
||||
|
||||
def installed() {
|
||||
init()
|
||||
}
|
||||
|
||||
def updated() {
|
||||
unsubscribe()
|
||||
init()
|
||||
}
|
||||
|
||||
def init() {
|
||||
state.lastClosed = now()
|
||||
subscribe(people, "presence.present", presence)
|
||||
subscribe(sensors, "contact.open", doorOpened)
|
||||
}
|
||||
|
||||
def presence(evt) {
|
||||
def delay = contactDelay ?: 10
|
||||
|
||||
state.lastPresence = now()
|
||||
|
||||
if(now() - (delay * 1000) < state.lastContact) {
|
||||
log.info('Presence was delayed, but you probably still want the light on.')
|
||||
lights?.on()
|
||||
}
|
||||
}
|
||||
|
||||
def doorOpened(evt) {
|
||||
def delay = presenceDelay ?: 30
|
||||
|
||||
state.lastContact = now()
|
||||
|
||||
if(now() - (delay * 1000) < state.lastPresence) {
|
||||
log.info('Welcome home! Let me get that light for you.')
|
||||
lights?.on()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user