Update zwave-thermostat.groovy

This commit is contained in:
Ingvar Marstorp
2017-08-03 15:20:55 -07:00
committed by GitHub
parent 9c655e271f
commit 3a101398dd

View File

@@ -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) {