mirror of
https://github.com/mtan93/SmartThingsPublic.git
synced 2026-03-19 05:10:51 +00:00
83 lines
2.0 KiB
Groovy
83 lines
2.0 KiB
Groovy
/**
|
|
* 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
|
|
} |