mirror of
https://github.com/mtan93/SmartThingsPublic.git
synced 2026-03-08 05:31:56 +00:00
Update zwave-thermostat.groovy
This commit is contained in:
@@ -264,13 +264,13 @@ def zwaveEvent(physicalgraph.zwave.commands.thermostatfanmodev3.ThermostatFanMod
|
|||||||
def map = [name: "thermostatFanMode", data:[supportedThermostatFanModes: state.supportedFanModes]]
|
def map = [name: "thermostatFanMode", data:[supportedThermostatFanModes: state.supportedFanModes]]
|
||||||
switch (cmd.fanMode) {
|
switch (cmd.fanMode) {
|
||||||
case physicalgraph.zwave.commands.thermostatfanmodev3.ThermostatFanModeReport.FAN_MODE_AUTO_LOW:
|
case physicalgraph.zwave.commands.thermostatfanmodev3.ThermostatFanModeReport.FAN_MODE_AUTO_LOW:
|
||||||
map.value = "auto" // "fanAuto"
|
map.value = "auto"
|
||||||
break
|
break
|
||||||
case physicalgraph.zwave.commands.thermostatfanmodev3.ThermostatFanModeReport.FAN_MODE_LOW:
|
case physicalgraph.zwave.commands.thermostatfanmodev3.ThermostatFanModeReport.FAN_MODE_LOW:
|
||||||
map.value = "on" // "fanOn"
|
map.value = "on"
|
||||||
break
|
break
|
||||||
case physicalgraph.zwave.commands.thermostatfanmodev3.ThermostatFanModeReport.FAN_MODE_CIRCULATION:
|
case physicalgraph.zwave.commands.thermostatfanmodev3.ThermostatFanModeReport.FAN_MODE_CIRCULATION:
|
||||||
map.value = "circulate" // "fanCirculate"
|
map.value = "circulate"
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
sendEvent(map)
|
sendEvent(map)
|
||||||
@@ -381,9 +381,9 @@ def alterSetpoint(raise, setpoint) {
|
|||||||
}
|
}
|
||||||
if (data.targetHeatingSetpoint && data.targetCoolingSetpoint) {
|
if (data.targetHeatingSetpoint && data.targetCoolingSetpoint) {
|
||||||
runIn(5, "updateHeatingSetpoint", [data: data, overwrite: true])
|
runIn(5, "updateHeatingSetpoint", [data: data, overwrite: true])
|
||||||
} else if (setpoint == "heatingSetpoint") {
|
} else if (setpoint == "heatingSetpoint" && data.targetHeatingSetpoint) {
|
||||||
runIn(5, "updateHeatingSetpoint", [data: data, overwrite: true])
|
runIn(5, "updateHeatingSetpoint", [data: data, overwrite: true])
|
||||||
} else if (setpoint == "coolingSetpoint") {
|
} else if (setpoint == "coolingSetpoint" && data.targetCoolingSetpoint) {
|
||||||
runIn(5, "updateCoolingSetpoint", [data: data, overwrite: true])
|
runIn(5, "updateCoolingSetpoint", [data: data, overwrite: true])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -424,22 +424,39 @@ def enforceSetpointLimits(setpoint, data) {
|
|||||||
|
|
||||||
def setHeatingSetpoint(degrees) {
|
def setHeatingSetpoint(degrees) {
|
||||||
if (degrees) {
|
if (degrees) {
|
||||||
def data = enforceSetpointLimits("heatingSetpoint",
|
state.heatingSetpoint = degrees.toDouble()
|
||||||
[targetValue: getTempInDeviceScale(degrees.toDouble(), getTemperatureScale()),
|
runIn(2, "updateSetpoints", [overwrite: true])
|
||||||
heatingSetpoint: getTempInDeviceScale("heatingSetpoint"), coolingSetpoint: getTempInDeviceScale("coolingSetpoint")])
|
|
||||||
updateSetpoints(data)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def setCoolingSetpoint(degrees) {
|
def setCoolingSetpoint(degrees) {
|
||||||
if (degrees) {
|
if (degrees) {
|
||||||
def data = enforceSetpointLimits("coolingSetpoint",
|
state.coolingSetpoint = degrees.toDouble()
|
||||||
[targetValue: getTempInDeviceScale(degrees.toDouble(), getTemperatureScale()),
|
runIn(2, "updateSetpoints", [overwrite: true])
|
||||||
heatingSetpoint: getTempInDeviceScale("heatingSetpoint"), coolingSetpoint: getTempInDeviceScale("coolingSetpoint")])
|
|
||||||
updateSetpoints(data)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def updateSetpoints() {
|
||||||
|
def deviceScale = (state.scale == 1) ? "F" : "C"
|
||||||
|
def data = [targetHeatingSetpoint: null, targetCoolingSetpoint: null]
|
||||||
|
def heatingSetpoint = getTempInLocalScale("heatingSetpoint")
|
||||||
|
def coolingSetpoint = getTempInLocalScale("coolingSetpoint")
|
||||||
|
if (state.heatingSetpoint) {
|
||||||
|
data = enforceSetpointLimits("heatingSetpoint", [targetValue: state.heatingSetpoint,
|
||||||
|
heatingSetpoint: heatingSetpoint, coolingSetpoint: coolingSetpoint])
|
||||||
|
}
|
||||||
|
if (state.coolingSetpoint) {
|
||||||
|
heatingSetpoint = data.targetHeatingSetpoint ? getTempInLocalScale(data.targetHeatingSetpoint, deviceScale) : heatingSetpoint
|
||||||
|
coolingSetpoint = data.targetCoolingSetpoint ? getTempInLocalScale(data.targetCoolingSetpoint, deviceScale) : coolingSetpoint
|
||||||
|
data = enforceSetpointLimits("coolingSetpoint", [targetValue: state.coolingSetpoint,
|
||||||
|
heatingSetpoint: heatingSetpoint, coolingSetpoint: coolingSetpoint])
|
||||||
|
data.targetHeatingSetpoint = data.targetHeatingSetpoint ?: heatingSetpoint
|
||||||
|
}
|
||||||
|
state.heatingSetpoint = null
|
||||||
|
state.coolingSetpoint = null
|
||||||
|
updateSetpoints(data)
|
||||||
|
}
|
||||||
|
|
||||||
def updateSetpoints(data) {
|
def updateSetpoints(data) {
|
||||||
def cmds = []
|
def cmds = []
|
||||||
if (data.targetHeatingSetpoint) {
|
if (data.targetHeatingSetpoint) {
|
||||||
|
|||||||
Reference in New Issue
Block a user