mirror of
https://github.com/mtan93/SmartThingsPublic.git
synced 2026-04-06 22:04:49 +01:00
Compare commits
3 Commits
MSA-884-4
...
plantlink-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
69a6fc4f9e | ||
|
|
d82a387c68 | ||
|
|
20d660e236 |
@@ -30,7 +30,6 @@ metadata {
|
|||||||
command "lowerSetpoint"
|
command "lowerSetpoint"
|
||||||
command "resumeProgram"
|
command "resumeProgram"
|
||||||
command "switchMode"
|
command "switchMode"
|
||||||
command "switchFanMode"
|
|
||||||
|
|
||||||
attribute "thermostatSetpoint","number"
|
attribute "thermostatSetpoint","number"
|
||||||
attribute "thermostatStatus","string"
|
attribute "thermostatStatus","string"
|
||||||
@@ -64,9 +63,10 @@ metadata {
|
|||||||
state "updating", label:"Working", icon: "st.secondary.secondary"
|
state "updating", label:"Working", icon: "st.secondary.secondary"
|
||||||
}
|
}
|
||||||
standardTile("fanMode", "device.thermostatFanMode", inactiveLabel: false, decoration: "flat") {
|
standardTile("fanMode", "device.thermostatFanMode", inactiveLabel: false, decoration: "flat") {
|
||||||
state "auto", action:"switchFanMode", nextState: "updating", icon: "st.thermostat.fan-auto"
|
state "auto", label:'Fan: ${currentValue}', action:"switchFanMode", nextState: "on"
|
||||||
state "on", action:"switchFanMode", nextState: "updating", icon: "st.thermostat.fan-on"
|
state "on", label:'Fan: ${currentValue}', action:"switchFanMode", nextState: "off"
|
||||||
state "updating", label:"Working", icon: "st.secondary.secondary"
|
state "off", label:'Fan: ${currentValue}', action:"switchFanMode", nextState: "circulate"
|
||||||
|
state "circulate", label:'Fan: ${currentValue}', action:"switchFanMode", nextState: "auto"
|
||||||
}
|
}
|
||||||
standardTile("upButtonControl", "device.thermostatSetpoint", inactiveLabel: false, decoration: "flat") {
|
standardTile("upButtonControl", "device.thermostatSetpoint", inactiveLabel: false, decoration: "flat") {
|
||||||
state "setpoint", action:"raiseSetpoint", icon:"st.thermostat.thermostat-up"
|
state "setpoint", action:"raiseSetpoint", icon:"st.thermostat.thermostat-up"
|
||||||
@@ -96,14 +96,14 @@ metadata {
|
|||||||
state "default", action:"refresh.refresh", icon:"st.secondary.refresh"
|
state "default", action:"refresh.refresh", icon:"st.secondary.refresh"
|
||||||
}
|
}
|
||||||
standardTile("resumeProgram", "device.resumeProgram", inactiveLabel: false, decoration: "flat") {
|
standardTile("resumeProgram", "device.resumeProgram", inactiveLabel: false, decoration: "flat") {
|
||||||
state "resume", action:"resumeProgram", nextState: "updating", label:'Resume', icon:"st.samsung.da.oven_ic_send"
|
state "resume", action:"resumeProgram", nextState: "updating", label:'Resume Schedule', icon:"st.samsung.da.oven_ic_send"
|
||||||
state "updating", label:"Working", icon: "st.secondary.secondary"
|
state "updating", label:"Working", icon: "st.secondary.secondary"
|
||||||
}
|
}
|
||||||
valueTile("humidity", "device.humidity", decoration: "flat") {
|
valueTile("humidity", "device.humidity", decoration: "flat") {
|
||||||
state "humidity", label:'${currentValue}%'
|
state "humidity", label:'${currentValue}% humidity'
|
||||||
}
|
}
|
||||||
main "temperature"
|
main "temperature"
|
||||||
details(["temperature", "upButtonControl", "thermostatSetpoint", "currentStatus", "downButtonControl", "mode", "fanMode","resumeProgram", "humidity", "refresh"])
|
details(["temperature", "upButtonControl", "thermostatSetpoint", "currentStatus", "downButtonControl", "mode", "resumeProgram", "refresh", "humidity"])
|
||||||
}
|
}
|
||||||
|
|
||||||
preferences {
|
preferences {
|
||||||
@@ -154,9 +154,6 @@ def generateEvent(Map results) {
|
|||||||
} else if (name=="heatMode" || name=="coolMode" || name=="autoMode" || name=="auxHeatMode"){
|
} else if (name=="heatMode" || name=="coolMode" || name=="autoMode" || name=="auxHeatMode"){
|
||||||
isChange = isStateChange(device, name, value.toString())
|
isChange = isStateChange(device, name, value.toString())
|
||||||
event << [value: value.toString(), isStateChange: isChange, displayed: false]
|
event << [value: value.toString(), isStateChange: isChange, displayed: false]
|
||||||
} else if (name=="thermostatFanMode"){
|
|
||||||
isChange = isStateChange(device, name, value.toString())
|
|
||||||
event << [value: value.toString(), isStateChange: isChange, displayed: false]
|
|
||||||
} else if (name=="humidity") {
|
} else if (name=="humidity") {
|
||||||
isChange = isStateChange(device, name, value.toString())
|
isChange = isStateChange(device, name, value.toString())
|
||||||
event << [value: value.toString(), isStateChange: isChange, displayed: false, unit: "%"]
|
event << [value: value.toString(), isStateChange: isChange, displayed: false, unit: "%"]
|
||||||
@@ -306,7 +303,7 @@ def modes() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
def fanModes() {
|
def fanModes() {
|
||||||
["on", "auto"]
|
["off", "on", "auto", "circulate"]
|
||||||
}
|
}
|
||||||
|
|
||||||
def switchMode() {
|
def switchMode() {
|
||||||
@@ -335,15 +332,17 @@ def switchFanMode() {
|
|||||||
def returnCommand
|
def returnCommand
|
||||||
|
|
||||||
switch (currentFanMode) {
|
switch (currentFanMode) {
|
||||||
case "on":
|
case "fanAuto":
|
||||||
returnCommand = switchToFanMode("auto")
|
returnCommand = switchToFanMode("fanOn")
|
||||||
break
|
break
|
||||||
case "auto":
|
case "fanOn":
|
||||||
returnCommand = switchToFanMode("on")
|
returnCommand = switchToFanMode("fanCirculate")
|
||||||
|
break
|
||||||
|
case "fanCirculate":
|
||||||
|
returnCommand = switchToFanMode("fanAuto")
|
||||||
break
|
break
|
||||||
|
|
||||||
}
|
}
|
||||||
if(!currentFanMode) { returnCommand = switchToFanMode("auto") }
|
if(!currentFanMode) { returnCommand = switchToFanMode("fanOn") }
|
||||||
returnCommand
|
returnCommand
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -352,20 +351,25 @@ def switchToFanMode(nextMode) {
|
|||||||
log.debug "switching to fan mode: $nextMode"
|
log.debug "switching to fan mode: $nextMode"
|
||||||
def returnCommand
|
def returnCommand
|
||||||
|
|
||||||
if(nextMode == "auto") {
|
if(nextMode == "fanAuto") {
|
||||||
if(!fanModes.contains("auto")) {
|
if(!fanModes.contains("fanAuto")) {
|
||||||
returnCommand = fanAuto()
|
returnCommand = fanAuto()
|
||||||
} else {
|
} else {
|
||||||
returnCommand = switchToFanMode("on")
|
returnCommand = switchToFanMode("fanOn")
|
||||||
}
|
}
|
||||||
} else if(nextMode == "on") {
|
} else if(nextMode == "fanOn") {
|
||||||
if(!fanModes.contains("on")) {
|
if(!fanModes.contains("fanOn")) {
|
||||||
returnCommand = fanOn()
|
returnCommand = fanOn()
|
||||||
} else {
|
} else {
|
||||||
returnCommand = switchToFanMode("auto")
|
returnCommand = switchToFanMode("fanCirculate")
|
||||||
|
}
|
||||||
|
} else if(nextMode == "fanCirculate") {
|
||||||
|
if(!fanModes.contains("fanCirculate")) {
|
||||||
|
returnCommand = fanCirculate()
|
||||||
|
} else {
|
||||||
|
returnCommand = switchToFanMode("fanAuto")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
returnCommand
|
returnCommand
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -375,10 +379,13 @@ def getDataByName(String name) {
|
|||||||
|
|
||||||
def setThermostatMode(String value) {
|
def setThermostatMode(String value) {
|
||||||
log.debug "setThermostatMode({$value})"
|
log.debug "setThermostatMode({$value})"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def setThermostatFanMode(String value) {
|
def setThermostatFanMode(String value) {
|
||||||
|
|
||||||
log.debug "setThermostatFanMode({$value})"
|
log.debug "setThermostatFanMode({$value})"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def generateModeEvent(mode) {
|
def generateModeEvent(mode) {
|
||||||
@@ -465,48 +472,23 @@ def auto() {
|
|||||||
|
|
||||||
def fanOn() {
|
def fanOn() {
|
||||||
log.debug "fanOn"
|
log.debug "fanOn"
|
||||||
String fanMode = "on"
|
// parent.setFanMode (this,"on")
|
||||||
def heatingSetpoint = device.currentValue("heatingSetpoint")
|
|
||||||
def coolingSetpoint = device.currentValue("coolingSetpoint")
|
|
||||||
def deviceId = device.deviceNetworkId.split(/\./).last()
|
|
||||||
|
|
||||||
def sendHoldType = holdType ? (holdType=="Temporary")? "nextTransition" : (holdType=="Permanent")? "indefinite" : "indefinite" : "indefinite"
|
|
||||||
|
|
||||||
def coolingValue = location.temperatureScale == "C"? convertCtoF(coolingSetpoint) : coolingSetpoint
|
|
||||||
def heatingValue = location.temperatureScale == "C"? convertCtoF(heatingSetpoint) : heatingSetpoint
|
|
||||||
|
|
||||||
if (parent.setFanMode(this, heatingValue, coolingValue, deviceId, sendHoldType, fanMode)) {
|
|
||||||
generateFanModeEvent(fanMode)
|
|
||||||
} else {
|
|
||||||
log.debug "Error setting new mode."
|
|
||||||
def currentFanMode = device.currentState("thermostatFanMode")?.value
|
|
||||||
generateModeEvent(currentFanMode) // reset the tile back
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def fanAuto() {
|
def fanAuto() {
|
||||||
log.debug "fanAuto"
|
log.debug "fanAuto"
|
||||||
String fanMode = "auto"
|
// parent.setFanMode (this,"auto")
|
||||||
def heatingSetpoint = device.currentValue("heatingSetpoint")
|
|
||||||
def coolingSetpoint = device.currentValue("coolingSetpoint")
|
|
||||||
def deviceId = device.deviceNetworkId.split(/\./).last()
|
|
||||||
|
|
||||||
def sendHoldType = holdType ? (holdType=="Temporary")? "nextTransition" : (holdType=="Permanent")? "indefinite" : "indefinite" : "indefinite"
|
|
||||||
|
|
||||||
def coolingValue = location.temperatureScale == "C"? convertCtoF(coolingSetpoint) : coolingSetpoint
|
|
||||||
def heatingValue = location.temperatureScale == "C"? convertCtoF(heatingSetpoint) : heatingSetpoint
|
|
||||||
|
|
||||||
if (parent.setFanMode(this, heatingValue, coolingValue, deviceId, sendHoldType, fanMode)) {
|
|
||||||
generateFanModeEvent(fanMode)
|
|
||||||
} else {
|
|
||||||
log.debug "Error setting new mode."
|
|
||||||
def currentFanMode = device.currentState("thermostatFanMode")?.value
|
|
||||||
generateModeEvent(currentFanMode) // reset the tile back
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def fanCirculate() {
|
||||||
|
log.debug "fanCirculate"
|
||||||
|
// parent.setFanMode (this,"circulate")
|
||||||
|
}
|
||||||
|
|
||||||
|
def fanOff() {
|
||||||
|
log.debug "fanOff"
|
||||||
|
// parent.setFanMode (this,"off")
|
||||||
|
}
|
||||||
|
|
||||||
def generateSetpointEvent() {
|
def generateSetpointEvent() {
|
||||||
|
|
||||||
|
|||||||
@@ -422,8 +422,7 @@ def pollChildren(child = null) {
|
|||||||
heatingSetpoint: stat.runtime.desiredHeat / 10,
|
heatingSetpoint: stat.runtime.desiredHeat / 10,
|
||||||
coolingSetpoint: stat.runtime.desiredCool / 10,
|
coolingSetpoint: stat.runtime.desiredCool / 10,
|
||||||
thermostatMode: stat.settings.hvacMode,
|
thermostatMode: stat.settings.hvacMode,
|
||||||
humidity: stat.runtime.actualHumidity,
|
humidity: stat.runtime.actualHumidity
|
||||||
thermostatFanMode: stat.runtime.desiredFanMode
|
|
||||||
]
|
]
|
||||||
|
|
||||||
if (location.temperatureScale == "F")
|
if (location.temperatureScale == "F")
|
||||||
@@ -677,19 +676,9 @@ def setHold(child, heating, cooling, deviceId, sendHoldType) {
|
|||||||
|
|
||||||
int h = heating * 10
|
int h = heating * 10
|
||||||
int c = cooling * 10
|
int c = cooling * 10
|
||||||
|
|
||||||
|
|
||||||
def jsonRequestBody = '{"selection":{"selectionType":"thermostats","selectionMatch":"' + deviceId + '","includeRuntime":true},"functions": [{ "type": "setHold", "params": { "coolHoldTemp": '+c+',"heatHoldTemp": '+h+', "holdType": '+sendHoldType+' } } ]}'
|
def jsonRequestBody = '{"selection":{"selectionType":"thermostats","selectionMatch":"' + deviceId + '","includeRuntime":true},"functions": [{ "type": "setHold", "params": { "coolHoldTemp": '+c+',"heatHoldTemp": '+h+', "holdType": '+sendHoldType+' } } ]}'
|
||||||
|
|
||||||
def result = sendJson(child, jsonRequestBody)
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
def setFanMode(child, heating, cooling, deviceId, sendHoldType, fanMode) {
|
|
||||||
|
|
||||||
int h = heating * 10
|
|
||||||
int c = cooling * 10
|
|
||||||
|
|
||||||
|
|
||||||
def jsonRequestBody = '{"selection":{"selectionType":"thermostats","selectionMatch":"' + deviceId + '","includeRuntime":true},"functions": [{ "type": "setHold", "params": { "coolHoldTemp": '+c+',"heatHoldTemp": '+h+', "holdType": '+sendHoldType+', "fan": '+fanMode+' } } ]}'
|
|
||||||
def result = sendJson(child, jsonRequestBody)
|
def result = sendJson(child, jsonRequestBody)
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user