private String label
private String displayName
private int temperature
+ private int currentTemperature
private int currentCoolingSetpoint
private int currentHeatingSetpoint
private int coolingSetpoint
+ private int latestCoolingSetPoint
private int thermostatSetpoint
+ private int latestThermostatSetPoint
private int heatingSetpoint
+ private int latestHeatingSetPoint
private List coolingSetpointRange
private List thermostatSetpointRange
private List heatingSetpointRange
private String thermostatMode
private String currentThermostatMode
private String climateName
+ private String thermostatLatestMode
+ private String thermostatLatestOperatingState
+ private String thermostatLatestFanMode
def sendEvent
def timers
Thermostat(Closure sendEvent, String id, String label, String displayName, int temperature, int currentCoolingSetpoint, int currentHeatingSetpoint, int coolingSetpoint,
int thermostatSetpoint, int heatingSetpoint, List coolingSetpointRange, List thermostatSetpointRange, List heatingSetpointRange,
List supportedThermostatFanModes, List supportedThermostatModes, String thermostatOperatingState, String thermostatFanMode, String thermostatMode,
- String climateName) {
+ String climateName, String thermostatLatestMode, String thermostatLatestOperatingState, String thermostatLatestFanMode, int latestCoolingSetPoint,
+ int latestThermostatSetPoint, int latestHeatingSetPoint) {
this.id = id
this.label = label
this.sendEvent = sendEvent
this.temperature = temperature
+ this.currentTemperature = currentTemperature
this.currentCoolingSetpoint = currentCoolingSetpoint
this.currentHeatingSetpoint = currentHeatingSetpoint
this.coolingSetpoint = coolingSetpoint
this.thermostatMode = thermostatMode
this.currentThermostatMode = thermostatMode
this.climateName = climateName
+ this.thermostatLatestMode = thermostatLatestMode
+ this.thermostatLatestOperatingState = thermostatLatestOperatingState
+ this.thermostatLatestFanMode = thermostatLatestFanMode
+ this.latestHeatingSetPoint = latestHeatingSetPoint
+ this.latestThermostatSetPoint = latestThermostatSetPoint
+ this.latestCoolingSetPoint = latestCoolingSetPoint
}
//By Apps
def setCoolingSetpoint(int coolingSetpoint) {
if (this.coolingSetpoint != coolingSetpoint) {
+ this.latestCoolingSetPoint = coolingSetpoint
this.coolingSetpoint = coolingSetpoint
- this.currentCoolingSetpoint = currentCoolingSetpoint
+ this.currentCoolingSetpoint = coolingSetpoint
println("Cooling set point for the thermostat with id:$id is changed to $coolingSetpoint!")
sendEvent([name: "coolingSetpoint", value: "$coolingSetpoint", deviceId: this.id, descriptionText: "",
displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
}
}
+ def setCoolingSetpoint(String coolingSetpoint) {
+ setCoolingSetpoint(coolingSetpoint.toInteger())
+ }
+
def setHeatingSetpoint(int heatingSetpoint) {
if (this.heatingSetpoint != heatingSetpoint) {
+ this.latestHeatingSetPoint = heatingSetpoint
this.heatingSetpoint = heatingSetpoint
- this.currentHeatingSetpoint = currentHeatingSetpoint
+ this.currentHeatingSetpoint = heatingSetpoint
println("Heating set point for the thermostat with id:$id is changed to $heatingSetpoint!")
sendEvent([name: "heatingSetpoint", value: "$heatingSetpoint", deviceId: this.id, descriptionText: "",
displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
}
}
+ def setHeatingSetpoint(String heatingSetpoint) {
+ setHeatingSetpoint(heatingSetpoint.toInteger())
+ }
+
def setSchedule() {
//Not implemented yet
}
def setThermostatFanMode(String thermostatFanMode) {
if (this.thermostatFanMode != thermostatFanMode) {
+ this.thermostatLatestFanMode = thermostatFanMode
this.thermostatFanMode = thermostatFanMode
println("Fan mode of the thermostat with id:$id is changed to $thermostatFanMode!")
sendEvent([name: "thermostatFanMode", value: "$thermostatFanMode", deviceId: this.id, descriptionText: "",
def setThermostatMode(String thermostatMode) {
if (this.thermostatMode != thermostatMode) {
+ this.thermostatLatestMode =thermostatMode
this.thermostatMode = thermostatMode
- this.currentThermostatMode = currentThermostatMode
+ this.currentThermostatMode = thermostatMode
println("Mode of the thermostat with id:$id is changed to $thermostatMode!")
sendEvent([name: "thermostatMode", value: "$thermostatMode", deviceId: this.id, descriptionText: "",
displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
def cool() {
if (this.thermostatMode != "cool") {
+ this.thermostatLatestMode = "cool"
this.thermostatMode = "cool"
this.currentThermostatMode = "cool"
println("Mode of the thermostat with id:$id is changed to cool!")
- sendEvent([name: "cool", value: "cool", deviceId: this.id, descriptionText: "",
+ sendEvent([name: "thermostatMode", value: "cool", deviceId: this.id, descriptionText: "",
displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
}
}
def heat() {
if (this.thermostatMode != "heat") {
+ this.thermostatLatestMode = "heat"
this.thermostatMode = "heat"
this.currentThermostatMode = "heat"
println("Mode of the thermostat with id:$id is changed to heat!")
- sendEvent([name: "heat", value: "heat", deviceId: this.id, descriptionText: "",
+ sendEvent([name: "thermostatMode", value: "heat", deviceId: this.id, descriptionText: "",
displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
}
}
def auto() {
if (this.thermostatMode != "auto") {
+ this.thermostatLatestMode = "auto"
this.thermostatMode = "auto"
this.currentThermostatMode = "auto"
println("Mode of the thermostat with id:$id is changed to auto!")
- sendEvent([name: "auto", value: "auto", deviceId: this.id, descriptionText: "",
+ sendEvent([name: "thermostatMode", value: "auto", deviceId: this.id, descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+ }
+ }
+
+ def emergencyHeat() {
+ if (this.thermostatMode != "emergencyHeat") {
+ this.thermostatLatestMode = "emergencyHeat"
+ this.thermostatMode = "emergencyHeat"
+ this.currentThermostatMode = "emergencyHeat"
+ println("Mode of the thermostat with id:$id is changed to emergencyHeat!")
+ sendEvent([name: "thermostatMode", value: "emergencyHeat", deviceId: this.id, descriptionText: "",
displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
}
}
def off() {
if (this.thermostatMode != "off") {
+ this.thermostatLatestMode = "off"
this.thermostatMode = "off"
this.currentThermostatMode = "off"
println("Mode of the thermostat with id:$id is changed to off!")
- sendEvent([name: "off", value: "off", deviceId: this.id, descriptionText: "",
+ sendEvent([name: "thermostatMode", value: "off", deviceId: this.id, descriptionText: "",
displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
}
}
this.heatingSetpoint = heatingSetpoint
this.currentHeatingSetpoint = currentHeatingSetpoint
println("Heating set point for the thermostat with id:$id is changed to $heatingSetpoint!")
+ sendEvent([name: "heatingSetpoint", value: "$heatingSetpoint", deviceId: this.id, descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
+ sendEvent([name: "coolingSetpoint", value: "$coolingSetpoint", deviceId: this.id, descriptionText: "",
+ displayed: true, linkText: "", isStateChange: false, unit: "", data: '{"info": "info"}'])
}
}
//By Model Checker
def setValue(String value, String name) {
- if ((name == "temperature") && (value != this.temperature)) {
+ if ((name == "temperature") && (value.toInteger() != this.temperature)) {
println("the temperature is $value!")
this.temperature = value.toInteger()
- } else if ((name == "heatingSetpoint") && (value != this.heatingSetpoint)) {
+ this.currentTemperature = value.toInteger()
+ } else if ((name == "heatingSetpoint") && (value.toInteger() != this.heatingSetpoint)) {
println("the heating set point of the thermostat with id:$id is $value!")
+ this.latestHeatingSetPoint = value.toInteger()
this.heatingSetpoint = value.toInteger()
- } else if ((name == "coolingSetpoint") && (value != this.coolingSetpoint)) {
+ } else if ((name == "coolingSetpoint") && (value.toInteger() != this.coolingSetpoint)) {
println("the cooling set point of the thermostat with id:$id is $value!")
+ this.latestCoolingSetPoint = value.toInteger()
this.coolingSetpoint = value.toInteger()
- } else if ((name == "thermostatSetpoint") && (value != this.thermostatSetpoint)) {
+ } else if ((name == "thermostatSetpoint") && (value.toInteger() != this.thermostatSetpoint)) {
println("the set point of the thermostat with id:$id is $value!")
+ this.latestThermostatSetPoint = value.toInteger()
this.thermostatSetpoint = value.toInteger()
} else if ((name == "thermostatMode") && (value != this.thermostatMode)) {
println("the mode of the thermostat with id:$id is $value!")
+ this.thermostatLatestMode = value
this.thermostatMode = value
} else if ((name == "thermostatFanMode") && (value != this.thermostatFanMode)) {
println("the fan mode of the thermostat with id:$id is $value!")
+ this.thermostatLatestFanMode = value
this.thermostatFanMode = value
} else if ((name == "thermostatOperatingState") && (value != this.thermostatOperatingState)) {
println("the operating state of the thermostat with id:$id is $value!")
+ this.thermostatLatestOperatingState = value
this.thermostatOperatingState = value
}
}
+ def currentValue(String deviceFeature) {
+ if (deviceFeature == "thermostatMode")
+ return thermostatMode
+ else if (deviceFeature == "thermostatOperatingState")
+ return thermostatOperatingState
+ else if (deviceFeature == "thermostatFanMode")
+ return thermostatFanMode
+ else if (deviceFeature == "heatingSetpoint")
+ return heatingSetpoint
+ else if (deviceFeature == "coolingSetpoint")
+ return coolingSetpoint
+ else if (deviceFeature == "thermostatSetpoint")
+ return thermostatSetpoint
+ }
+
+ def latestValue(String deviceFeature) {
+ if (deviceFeature == "thermostatMode")
+ return thermostatLatestMode
+ else if (deviceFeature == "thermostatOperatingState")
+ return thermostatLatestOperatingState
+ else if (deviceFeature == "thermostatFanMode")
+ return thermostatLatestFanMode
+ else if (deviceFeature == "heatingSetpoint")
+ return latestHeatingSetPoint
+ else if (deviceFeature == "coolingSetpoint")
+ return latestCoolingSetPoint
+ else if (deviceFeature == "thermostatSetpoint")
+ return latestThermostatSetPoint
+ }
+
}