mirror of
https://github.com/mtan93/SmartThingsPublic.git
synced 2026-04-15 22:05:27 +01:00
Initial commit
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
/**
|
||||
* HVAC Auto Off
|
||||
*
|
||||
* Author: dianoga7@3dgo.net
|
||||
* Date: 2013-07-21
|
||||
*/
|
||||
|
||||
// Automatically generated. Make future change here.
|
||||
definition(
|
||||
name: "Thermostat Auto Off",
|
||||
namespace: "dianoga",
|
||||
author: "dianoga7@3dgo.net",
|
||||
description: "Automatically turn off thermostat when windows/doors open. Turn it back on when everything is closed up.",
|
||||
category: "Green Living",
|
||||
iconUrl: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience.png",
|
||||
iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience%402x.png",
|
||||
oauth: true
|
||||
)
|
||||
|
||||
preferences {
|
||||
section("Control") {
|
||||
input("thermostat", "capability.thermostat", title: "Thermostat")
|
||||
}
|
||||
|
||||
section("Open/Close") {
|
||||
input("sensors", "capability.contactSensor", title: "Sensors", multiple: true)
|
||||
input("delay", "number", title: "Delay (seconds)")
|
||||
}
|
||||
}
|
||||
|
||||
def installed() {
|
||||
log.debug "Installed with settings: ${settings}"
|
||||
|
||||
initialize()
|
||||
}
|
||||
|
||||
def updated() {
|
||||
log.debug "Updated with settings: ${settings}"
|
||||
|
||||
unsubscribe()
|
||||
unschedule()
|
||||
initialize()
|
||||
}
|
||||
|
||||
def initialize() {
|
||||
state.changed = false
|
||||
subscribe(sensors, 'contact', "sensorChange")
|
||||
}
|
||||
|
||||
def sensorChange(evt) {
|
||||
log.debug "Desc: $evt.value , $state"
|
||||
if(evt.value == 'open' && !state.changed) {
|
||||
unschedule()
|
||||
runIn(delay, 'turnOff')
|
||||
} else if(evt.value == 'closed' && state.changed) {
|
||||
// All closed?
|
||||
def isOpen = false
|
||||
for(sensor in sensors) {
|
||||
if(sensor.id != evt.deviceId && sensor.currentValue('contact') == 'open') {
|
||||
isOpen = true
|
||||
}
|
||||
}
|
||||
|
||||
if(!isOpen) {
|
||||
unschedule()
|
||||
runIn(delay, 'restore')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def turnOff() {
|
||||
log.debug "Turning off thermostat due to contact open"
|
||||
state.thermostatMode = thermostat.currentValue("thermostatMode")
|
||||
thermostat.off()
|
||||
state.changed = true
|
||||
log.debug "State: $state"
|
||||
}
|
||||
|
||||
def restore() {
|
||||
log.debug "Setting thermostat to $state.thermostatMode"
|
||||
thermostat.setThermostatMode(state.thermostatMode)
|
||||
state.changed = false
|
||||
}
|
||||
Reference in New Issue
Block a user