metadata {
definition (name: "Drayton Wiser Room", namespace: "colc1705", author: "Colin Chapman", ocfDeviceType: "oic.d.thermostat", mnmn: "SmartThings", vid: "SmartThings-smartthings-Z-Wave_Thermostat") {
capability "Sensor"
capability "Actuator"
capability "Relative Humidity Measurement"
capability "Refresh"
capability "Thermostat"
capability "Temperature Measurement"
capability "Thermostat Heating Setpoint"
capability "Thermostat Operating State"
capability "Health Check"
attribute "boost", "string"
attribute "demand", "number"
command "heatingSetpointDown" //"spDown"
command "heatingSetpointUp" //"spUp"
command "test"
command "boostOn"
command "boostOff"
}
main(["thermostatMulti"])
details(["thermostatMulti","mode","boost","demand"])
}
def updated() {
logEvent("updated()")
}
def parse(String description) {
logEvent("parse()")
}
def test() {
logEvent("test()")
logEvent("debugging on? " + parent.showDebugInfo())
//parent.test(device.deviceNetworkId)
}
def heatingSetpointUp() {
logEvent("heatingSetpointUp()")
def currentSP = device.currentState("heatingSetpoint").getDoubleValue()
def newSP = currentSP + 0.5
logEvent("Current setting: " + currentSP)
sendEvent(name: "heatingSetpoint", value: newSP, unit: "C", state: "heat")
sendEvent(name: "thermostatSetpoint", value: newSP, unit: "C", state: "heat")
parent.setPoint(device.deviceNetworkId, newSP)
}
def heatingSetpointDown() {
logEvent("heatingSetpointDown()")
def currentSP = device.currentState("heatingSetpoint").getDoubleValue()
def newSP = currentSP - 0.5
logEvent("Current setting: " + currentSP)
sendEvent(name: "heatingSetpoint", value: newSP, unit: "C", state: "heat")
sendEvent(name: "thermostatSetpoint", value: newSP, unit: "C", state: "heat")
parent.setPoint(device.deviceNetworkId, newSP)
}
def setHeatingSetpoint(setpoint) {
logEvent("setHeatingSetpoint($setpoint)")
sendEvent(name: "heatingSetpoint", value: setpoint, unit: "C", state: "heat")
sendEvent(name: "thermostatSetpoint", value: setpoint, unit: "C", state: "heat")
parent.setPoint(device.deviceNetworkId, setpoint)
}
def setTemp(temp, setPoint) {
logEvent(device.name + " is " + temp + "°C")
sendEvent(name: "temperature", value: temp, unit: "°C", state: "heat")
sendEvent(name: "heatingSetpoint", value: setPoint, unit: "C", state: "heat")
sendEvent(name: "thermostatSetpoint", value: setPoint, unit: "C", state: "heat")
}
def setHumidity(humidity) {
logEvent("setHumidity($humidity)")
sendEvent(name: "humidity", value: humidity, unit: "%")
}
def setMode(mode) {
logEvent("setMode($mode)")
sendEvent(name: "mode", value: mode)
}
def setBoost(boost) {
logEvent("setBoost($boost)")
sendEvent(name: "boost", value: boost)
}
def autoMode() {
logEvent("autoMode()")
parent.setRoomManualMode(device.deviceNetworkId, false)
}
def manualMode() {
logEvent("manualMode()")
parent.setRoomManualMode(device.deviceNetworkId, true)
}
def boostOn() {
logEvent("boostOn()")
def currentTemp = device.currentState("temperature").getDoubleValue()
currentTemp = 0.5*(Math.round(currentTemp/0.5))
def setPoint = currentTemp + 2
parent.setRoomBoost(device.deviceNetworkId,30,setPoint)
}
def boostOff() {
logEvent("boostOff()")
parent.setRoomBoost(device.deviceNetworkId,0,0)
}
def setOutputState(outputState) {
logEvent("setOutputState($outputState)")
sendEvent(name: "outputState", value: outputState)
}
def setDemand(demand) {
logEvent("setDemand($demand)")
sendEvent(name: "demand", value: demand)
}
def logEvent(event) {
if (parent.showDebugInfo()) {
log.debug event
} else {
//log.debug "Logging disabled"
}
}