From 33d9efad238e632db85d6a08907328d59aeb89cc Mon Sep 17 00:00:00 2001 From: Vinay Rao Date: Tue, 1 Sep 2015 13:42:07 -0700 Subject: [PATCH] as Integer causes the temp to be off by 1 --- .../centralite-thermostat.groovy | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/devicetypes/smartthings/centralite-thermostat.src/centralite-thermostat.groovy b/devicetypes/smartthings/centralite-thermostat.src/centralite-thermostat.groovy index c9d87d8..b6c69a4 100644 --- a/devicetypes/smartthings/centralite-thermostat.src/centralite-thermostat.groovy +++ b/devicetypes/smartthings/centralite-thermostat.src/centralite-thermostat.groovy @@ -153,31 +153,37 @@ def refresh() //} def getTemperature(value) { - def celsius = Integer.parseInt(value, 16) / 100 - if(getTemperatureScale() == "C"){ - return celsius - } else { - return celsiusToFahrenheit(celsius) as Integer + if (value != null) { + def celsius = Integer.parseInt(value, 16) / 100 + if (getTemperatureScale() == "C") { + return celsius + } else { + return Math.round(celsiusToFahrenheit(celsius)) + } } } def setHeatingSetpoint(degrees) { - def temperatureScale = getTemperatureScale() - - def degreesInteger = degrees as Integer - log.debug "setHeatingSetpoint({$degreesInteger} ${temperatureScale})" - sendEvent("name":"heatingSetpoint", "value":degreesInteger) - - def celsius = (getTemperatureScale() == "C") ? degreesInteger : (fahrenheitToCelsius(degreesInteger) as Double).round(2) - "st wattr 0x${device.deviceNetworkId} 1 0x201 0x12 0x29 {" + hex(celsius*100) + "}" + if (degrees != null) { + def temperatureScale = getTemperatureScale() + + def degreesInteger = Math.round(degrees) + log.debug "setHeatingSetpoint({$degreesInteger} ${temperatureScale})" + sendEvent("name": "heatingSetpoint", "value": degreesInteger) + + def celsius = (getTemperatureScale() == "C") ? degreesInteger : (fahrenheitToCelsius(degreesInteger) as Double).round(2) + "st wattr 0x${device.deviceNetworkId} 1 0x201 0x12 0x29 {" + hex(celsius * 100) + "}" + } } def setCoolingSetpoint(degrees) { - def degreesInteger = degrees as Integer - log.debug "setCoolingSetpoint({$degreesInteger} ${temperatureScale})" - sendEvent("name":"coolingSetpoint", "value":degreesInteger) - def celsius = (getTemperatureScale() == "C") ? degreesInteger : (fahrenheitToCelsius(degreesInteger) as Double).round(2) - "st wattr 0x${device.deviceNetworkId} 1 0x201 0x11 0x29 {" + hex(celsius*100) + "}" + if (degrees != null) { + def degreesInteger = Math.round(degrees) + log.debug "setCoolingSetpoint({$degreesInteger} ${temperatureScale})" + sendEvent("name": "coolingSetpoint", "value": degreesInteger) + def celsius = (getTemperatureScale() == "C") ? degreesInteger : (fahrenheitToCelsius(degreesInteger) as Double).round(2) + "st wattr 0x${device.deviceNetworkId} 1 0x201 0x11 0x29 {" + hex(celsius * 100) + "}" + } } def modes() {