From 358cf261e8aca3bebf0141973e73180e763e42f4 Mon Sep 17 00:00:00 2001 From: Matt Pennig Date: Tue, 22 Dec 2015 11:14:53 -0600 Subject: [PATCH] Adding multiAttributeTile definition to Simulated Thermostat device type handler --- .../simulated-thermostat.groovy | 63 ++++++++++++++----- 1 file changed, 47 insertions(+), 16 deletions(-) diff --git a/devicetypes/smartthings/testing/simulated-thermostat.src/simulated-thermostat.groovy b/devicetypes/smartthings/testing/simulated-thermostat.src/simulated-thermostat.groovy index 5010ed8..ed0b23c 100644 --- a/devicetypes/smartthings/testing/simulated-thermostat.src/simulated-thermostat.groovy +++ b/devicetypes/smartthings/testing/simulated-thermostat.src/simulated-thermostat.groovy @@ -1,5 +1,5 @@ /** - * Copyright 2014 SmartThings + * Copyright 2015 SmartThings * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at: @@ -15,6 +15,7 @@ metadata { // Automatically generated. Make future change here. definition (name: "Simulated Thermostat", namespace: "smartthings/testing", author: "SmartThings") { capability "Thermostat" + capability "Relative Humidity Measurement" command "tempUp" command "tempDown" @@ -22,11 +23,40 @@ metadata { command "heatDown" command "coolUp" command "coolDown" - command "setTemperature", ["number"] + command "setTemperature", ["number"] } - tiles { - valueTile("temperature", "device.temperature", width: 1, height: 1) { + tiles(scale: 2) { + multiAttributeTile(name:"thermostatMulti", type:"thermostat", width:6, height:4) { + tileAttribute("device.temperature", key: "PRIMARY_CONTROL") { + attributeState("default", label:'${currentValue}', unit:"dF") + } + tileAttribute("device.temperature", key: "VALUE_CONTROL") { + attributeState("default", action: "setTemperature") + } + tileAttribute("device.humidity", key: "SECONDARY_CONTROL") { + attributeState("default", label:'${currentValue}%', unit:"%") + } + tileAttribute("device.thermostatOperatingState", key: "OPERATING_STATE") { + attributeState("idle", backgroundColor:"#44b621") + attributeState("heating", backgroundColor:"#ffa81e") + attributeState("cooling", backgroundColor:"#269bd2") + } + tileAttribute("device.thermostatMode", key: "THERMOSTAT_MODE") { + attributeState("off", label:'${name}') + attributeState("heat", label:'${name}') + attributeState("cool", label:'${name}') + attributeState("auto", label:'${name}') + } + tileAttribute("device.heatingSetpoint", key: "HEATING_SETPOINT") { + attributeState("default", label:'${currentValue}', unit:"dF") + } + tileAttribute("device.coolingSetpoint", key: "COOLING_SETPOINT") { + attributeState("default", label:'${currentValue}', unit:"dF") + } + } + + valueTile("temperature", "device.temperature", width: 2, height: 2) { state("temperature", label:'${currentValue}', unit:"dF", backgroundColors:[ [value: 31, color: "#153591"], @@ -39,51 +69,51 @@ metadata { ] ) } - standardTile("tempDown", "device.temperature", inactiveLabel: false, decoration: "flat") { + standardTile("tempDown", "device.temperature", width: 2, height: 2, inactiveLabel: false, decoration: "flat") { state "default", label:'down', action:"tempDown" } - standardTile("tempUp", "device.temperature", inactiveLabel: false, decoration: "flat") { + standardTile("tempUp", "device.temperature", width: 2, height: 2, inactiveLabel: false, decoration: "flat") { state "default", label:'up', action:"tempUp" } - valueTile("heatingSetpoint", "device.heatingSetpoint", inactiveLabel: false, decoration: "flat") { + valueTile("heatingSetpoint", "device.heatingSetpoint", width: 2, height: 2, inactiveLabel: false, decoration: "flat") { state "heat", label:'${currentValue} heat', unit: "F", backgroundColor:"#ffffff" } - standardTile("heatDown", "device.temperature", inactiveLabel: false, decoration: "flat") { + standardTile("heatDown", "device.temperature", width: 2, height: 2, inactiveLabel: false, decoration: "flat") { state "default", label:'down', action:"heatDown" } - standardTile("heatUp", "device.temperature", inactiveLabel: false, decoration: "flat") { + standardTile("heatUp", "device.temperature", width: 2, height: 2, inactiveLabel: false, decoration: "flat") { state "default", label:'up', action:"heatUp" } - valueTile("coolingSetpoint", "device.coolingSetpoint", inactiveLabel: false, decoration: "flat") { + valueTile("coolingSetpoint", "device.coolingSetpoint", width: 2, height: 2, inactiveLabel: false, decoration: "flat") { state "cool", label:'${currentValue} cool', unit:"F", backgroundColor:"#ffffff" } - standardTile("coolDown", "device.temperature", inactiveLabel: false, decoration: "flat") { + standardTile("coolDown", "device.temperature", width: 2, height: 2, inactiveLabel: false, decoration: "flat") { state "default", label:'down', action:"coolDown" } - standardTile("coolUp", "device.temperature", inactiveLabel: false, decoration: "flat") { + standardTile("coolUp", "device.temperature", width: 2, height: 2, inactiveLabel: false, decoration: "flat") { state "default", label:'up', action:"coolUp" } - standardTile("mode", "device.thermostatMode", inactiveLabel: false, decoration: "flat") { + standardTile("mode", "device.thermostatMode", width: 2, height: 2, inactiveLabel: false, decoration: "flat") { state "off", label:'${name}', action:"thermostat.heat", backgroundColor:"#ffffff" state "heat", label:'${name}', action:"thermostat.cool", backgroundColor:"#ffa81e" state "cool", label:'${name}', action:"thermostat.auto", backgroundColor:"#269bd2" state "auto", label:'${name}', action:"thermostat.off", backgroundColor:"#79b821" } - standardTile("fanMode", "device.thermostatFanMode", inactiveLabel: false, decoration: "flat") { + standardTile("fanMode", "device.thermostatFanMode", width: 2, height: 2, inactiveLabel: false, decoration: "flat") { state "fanAuto", label:'${name}', action:"thermostat.fanOn", backgroundColor:"#ffffff" state "fanOn", label:'${name}', action:"thermostat.fanCirculate", backgroundColor:"#ffffff" state "fanCirculate", label:'${name}', action:"thermostat.fanAuto", backgroundColor:"#ffffff" } - standardTile("operatingState", "device.thermostatOperatingState") { + standardTile("operatingState", "device.thermostatOperatingState", width: 2, height: 2) { state "idle", label:'${name}', backgroundColor:"#ffffff" state "heating", label:'${name}', backgroundColor:"#ffa81e" state "cooling", label:'${name}', backgroundColor:"#269bd2" } - main("temperature","operatingState") + main("thermostatMulti") details([ "temperature","tempDown","tempUp", "mode", "fanMode", "operatingState", @@ -101,6 +131,7 @@ def installed() { sendEvent(name: "thermostatMode", value: "off") sendEvent(name: "thermostatFanMode", value: "fanAuto") sendEvent(name: "thermostatOperatingState", value: "idle") + sendEvent(name: "humidity", value: 53, unit: "%") } def parse(String description) {