From 9e3a6e830fca29b38d03994f5ad6109fc037473f Mon Sep 17 00:00:00 2001 From: Parijat Das Date: Tue, 16 May 2017 12:16:01 +0530 Subject: [PATCH 1/7] Added health-check for Aeon Labs Multisensor 6 --- .../aeon-multisensor-6.src/.st-ignore | 2 + .../aeon-multisensor-6.src/README.md | 43 +++++++++++++++++++ .../aeon-multisensor-6.groovy | 16 +++++++ 3 files changed, 61 insertions(+) create mode 100644 devicetypes/smartthings/aeon-multisensor-6.src/.st-ignore create mode 100644 devicetypes/smartthings/aeon-multisensor-6.src/README.md diff --git a/devicetypes/smartthings/aeon-multisensor-6.src/.st-ignore b/devicetypes/smartthings/aeon-multisensor-6.src/.st-ignore new file mode 100644 index 0000000..71af75c --- /dev/null +++ b/devicetypes/smartthings/aeon-multisensor-6.src/.st-ignore @@ -0,0 +1,2 @@ +.st-ignore +README.md \ No newline at end of file diff --git a/devicetypes/smartthings/aeon-multisensor-6.src/README.md b/devicetypes/smartthings/aeon-multisensor-6.src/README.md new file mode 100644 index 0000000..22015f9 --- /dev/null +++ b/devicetypes/smartthings/aeon-multisensor-6.src/README.md @@ -0,0 +1,43 @@ +# Aeon Multisensor 6 + +Cloud Execution + +Works with: + +* [Aeon Labs MultiSensor 6](https://www.smartthings.com/products/aeon-labs-multisensor-6) + +## Table of contents + +* [Capabilities](#capabilities) +* [Health](#device-health) +* [Troubleshooting](#troubleshooting) + +## Capabilities + +* **Motion Sensor** - can detect motion +* **Temperature Measurement** - defines device measures current temperature +* **Relative Humidity Measurement** - allow reading the relative humidity from devices that support it +* **Illuminance Measurement** - gives the illuminance reading from devices that support it +* **Ultraviolet Index** - gives the ability to get the ultraviolet index from devices that report it +* **Configuration** - _configure()_ command called when device is installed or device preferences updated +* **Sensor** - detects sensor events +* **Battery** - defines device uses a battery +* **Health Check** - indicates ability to get device health notifications + +## Device Health + +Aeon Labs MultiSensor 6 is polled by the hub. +As of hubCore version 0.14.38 the hub sends up reports every 15 minutes regardless of whether the state changed. +Device-Watch allows 2 check-in misses from device plus some lag time. So Check-in interval = (2*15 + 2)mins = 32 mins. +Not to mention after going OFFLINE when the device is plugged back in, it might take a considerable amount of time for +the device to appear as ONLINE again. This is because if this listening device does not respond to two poll requests in a row, +it is not polled for 5 minutes by the hub. This can delay up the process of being marked ONLINE by quite some time. + +* __32min__ checkInterval + +## Troubleshooting + +If the device doesn't pair when trying from the SmartThings mobile app, it is possible that the device is out of range. +Pairing needs to be tried again by placing the device closer to the hub. +Instructions related to pairing, resetting and removing the device from SmartThings can be found in the following link: +* [Aeon Labs MultiSensor 6 Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/206157226) \ No newline at end of file diff --git a/devicetypes/smartthings/aeon-multisensor-6.src/aeon-multisensor-6.groovy b/devicetypes/smartthings/aeon-multisensor-6.src/aeon-multisensor-6.groovy index 56c3568..c789cd9 100644 --- a/devicetypes/smartthings/aeon-multisensor-6.src/aeon-multisensor-6.groovy +++ b/devicetypes/smartthings/aeon-multisensor-6.src/aeon-multisensor-6.groovy @@ -22,6 +22,7 @@ metadata { capability "Configuration" capability "Sensor" capability "Battery" + capability "Health Check" attribute "tamper", "enum", ["detected", "clear"] attribute "batteryStatus", "string" @@ -29,6 +30,7 @@ metadata { fingerprint deviceId: "0x2101", inClusters: "0x5E,0x86,0x72,0x59,0x85,0x73,0x71,0x84,0x80,0x30,0x31,0x70,0x7A", outClusters: "0x5A" fingerprint deviceId: "0x2101", inClusters: "0x5E,0x86,0x72,0x59,0x85,0x73,0x71,0x84,0x80,0x30,0x31,0x70,0x7A,0x5A" + fingerprint mfr:"0086", prod:"0102", model:"0064", deviceJoinName: "Aeon Labs MultiSensor 6" } simulator { @@ -127,7 +129,14 @@ metadata { } } +def installed(){ +// Device-Watch simply pings if no device events received for 32min(checkInterval) + sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID]) +} + def updated() { +// Device-Watch simply pings if no device events received for 32min(checkInterval) + sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID]) log.debug "Updated with settings: ${settings}" log.debug "${device.displayName} is now ${device.latestValue("powerSupply")}" @@ -326,6 +335,13 @@ def zwaveEvent(physicalgraph.zwave.Command cmd) { createEvent(descriptionText: cmd.toString(), isStateChange: false) } +/** + * PING is used by Device-Watch in attempt to reach the Device + * */ +def ping() { + secure(zwave.batteryV1.batteryGet()) +} + def configure() { // This sensor joins as a secure device if you double-click the button to include it log.debug "${device.displayName} is configuring its settings" From 483a25e900845cfccb54221dc65795f39a8ffd5b Mon Sep 17 00:00:00 2001 From: jackchi Date: Thu, 4 May 2017 14:51:23 +0800 Subject: [PATCH 2/7] [DVCSMP-2607] Standardize remaining SmartThingsPublic ON/CLOSED/TAMPERED & OPEN state colors --- .../drzwave/ezmultipli.src/ezmultipli.groovy | 24 +++++++++---------- ...-window-sensor-zw5-with-temperature.groovy | 4 ++-- .../fibaro-door-window-sensor-zw5.groovy | 4 ++-- .../fibaro-motion-sensor-zw5.groovy | 4 ++-- .../coopboss-h3vx.src/coopboss-h3vx.groovy | 20 ++++++++-------- .../fibaro-door-window-sensor.groovy | 6 ++--- .../fibaro-motion-sensor.groovy | 4 ++-- .../mimolite-garage-door-controller.groovy | 4 ++-- .../smartpower-dimming-outlet.groovy | 4 ++-- ...martsense-garage-door-sensor-button.groovy | 4 ++-- .../smartsense-motion-sensor.groovy | 4 ++-- .../smartsense-multi-sensor.groovy | 4 ++-- .../simulated-refrigerator-door.groovy | 12 +++++----- .../simulated-refrigerator.groovy | 4 ++-- .../tile-multiattribute-generic.groovy | 6 ++--- .../wemo-light-switch.groovy | 6 ++--- .../wemo-motion.src/wemo-motion.groovy | 4 ++-- .../wemo-switch.src/wemo-switch.groovy | 12 +++++----- .../zigbee-rgbw-bulb.groovy | 4 ++-- .../zigbee-switch.src/zigbee-switch.groovy | 4 ++-- ...zigbee-white-color-temperature-bulb.groovy | 4 ++-- .../zll-dimmer-bulb.groovy | 4 ++-- .../zwave-plus-motion-temp-sensor.groovy | 4 ++-- 23 files changed, 75 insertions(+), 75 deletions(-) diff --git a/devicetypes/drzwave/ezmultipli.src/ezmultipli.groovy b/devicetypes/drzwave/ezmultipli.src/ezmultipli.groovy index 879580a..621edef 100644 --- a/devicetypes/drzwave/ezmultipli.src/ezmultipli.groovy +++ b/devicetypes/drzwave/ezmultipli.src/ezmultipli.groovy @@ -38,9 +38,9 @@ metadata { tiles (scale: 2){ multiAttributeTile(name:"switch", type: "lighting", width: 6, height: 4, canChangeIcon: true){ tileAttribute ("device.switch", key: "PRIMARY_CONTROL", icon: "st.Lighting.light18") { - attributeState "on", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "on", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "off", label:'${name}', action:"switch.on", icon:"st.switches.light.off", backgroundColor:"#ffffff", nextState:"turningOn" - attributeState "turningOn", label:'${name}', icon:"st.switches.light.on", backgroundColor:"#79b821" + attributeState "turningOn", label:'${name}', icon:"st.switches.light.on", backgroundColor:"#00A0DC" attributeState "turningOff", label:'${name}', icon:"st.switches.light.off", backgroundColor:"#ffffff" } tileAttribute ("device.color", key: "COLOR_CONTROL") { @@ -52,20 +52,20 @@ metadata { } standardTile("motion", "device.motion", width: 2, height: 2, canChangeIcon: true, canChangeBackground: true) { - state "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#53a7c0" - state "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#ffffff" + state "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#00A0DC" + state "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#cccccc" } valueTile("temperature", "device.temperature", width: 2, height: 2) { state "temperature", label:'${currentValue}°', unit:"F", icon:"", // would be better if the units would switch to the desired units of the system (imperial or metric) backgroundColors:[ - [value: 0, color: "#1010ff"], // blue=cold - [value: 65, color: "#a0a0f0"], - [value: 70, color: "#e0e050"], - [value: 75, color: "#f0d030"], // yellow - [value: 80, color: "#fbf020"], - [value: 85, color: "#fbdc01"], - [value: 90, color: "#fb3a01"], - [value: 95, color: "#fb0801"] // red=hot + [value: 0, color: "#153591"], // blue=cold + [value: 65, color: "#44b621"], // green + [value: 70, color: "#44b621"], // green + [value: 75, color: "#f1d801"], // yellow + [value: 80, color: "#f1d801"], // yellow + [value: 85, color: "#f1d801"], // yellow + [value: 90, color: "#d04e00"], // red + [value: 95, color: "#bc2323"] // red=hot ] } diff --git a/devicetypes/fibargroup/fibaro-door-window-sensor-zw5-with-temperature.src/fibaro-door-window-sensor-zw5-with-temperature.groovy b/devicetypes/fibargroup/fibaro-door-window-sensor-zw5-with-temperature.src/fibaro-door-window-sensor-zw5-with-temperature.groovy index 9b98808..406d23c 100644 --- a/devicetypes/fibargroup/fibaro-door-window-sensor-zw5-with-temperature.src/fibaro-door-window-sensor-zw5-with-temperature.groovy +++ b/devicetypes/fibargroup/fibaro-door-window-sensor-zw5-with-temperature.src/fibaro-door-window-sensor-zw5-with-temperature.groovy @@ -39,8 +39,8 @@ metadata { } tileAttribute("device.tamper", key:"SECONDARY_CONTROL") { - attributeState("active", label:'tamper active', backgroundColor:"#53a7c0") - attributeState("inactive", label:'tamper inactive', backgroundColor:"#ffffff") + attributeState("active", label:'tamper active', backgroundColor:"#00A0DC") + attributeState("inactive", label:'tamper inactive', backgroundColor:"#CCCCCC") } } diff --git a/devicetypes/fibargroup/fibaro-door-window-sensor-zw5.src/fibaro-door-window-sensor-zw5.groovy b/devicetypes/fibargroup/fibaro-door-window-sensor-zw5.src/fibaro-door-window-sensor-zw5.groovy index 10cefd1..ab49f3b 100644 --- a/devicetypes/fibargroup/fibaro-door-window-sensor-zw5.src/fibaro-door-window-sensor-zw5.groovy +++ b/devicetypes/fibargroup/fibaro-door-window-sensor-zw5.src/fibaro-door-window-sensor-zw5.groovy @@ -37,8 +37,8 @@ metadata { } tileAttribute("device.tamper", key:"SECONDARY_CONTROL") { - attributeState("active", label:'tamper active', backgroundColor:"#53a7c0") - attributeState("inactive", label:'tamper inactive', backgroundColor:"#ffffff") + attributeState("active", label:'tamper active', backgroundColor:"#00A0DC") + attributeState("inactive", label:'tamper inactive', backgroundColor:"#CCCCCC") } } diff --git a/devicetypes/fibargroup/fibaro-motion-sensor-zw5.src/fibaro-motion-sensor-zw5.groovy b/devicetypes/fibargroup/fibaro-motion-sensor-zw5.src/fibaro-motion-sensor-zw5.groovy index 3d709d1..848c50b 100644 --- a/devicetypes/fibargroup/fibaro-motion-sensor-zw5.src/fibaro-motion-sensor-zw5.groovy +++ b/devicetypes/fibargroup/fibaro-motion-sensor-zw5.src/fibaro-motion-sensor-zw5.groovy @@ -34,8 +34,8 @@ metadata { tiles(scale: 2) { multiAttributeTile(name:"FGMS", type:"lighting", width:6, height:4) {//with generic type secondary control text is not displayed in Android app tileAttribute("device.motion", key:"PRIMARY_CONTROL") { - attributeState("inactive", label:"no motion", icon:"st.motion.motion.inactive", backgroundColor:"#79b821") - attributeState("active", label:"motion", icon:"st.motion.motion.active", backgroundColor:"#ffa81e") + attributeState("inactive", label:"no motion", icon:"st.motion.motion.inactive", backgroundColor:"#cccccc") + attributeState("active", label:"motion", icon:"st.motion.motion.active", backgroundColor:"#00A0DC") } tileAttribute("device.tamper", key:"SECONDARY_CONTROL") { diff --git a/devicetypes/johnrucker/coopboss-h3vx.src/coopboss-h3vx.groovy b/devicetypes/johnrucker/coopboss-h3vx.src/coopboss-h3vx.groovy index e398e09..e7beaa8 100644 --- a/devicetypes/johnrucker/coopboss-h3vx.src/coopboss-h3vx.groovy +++ b/devicetypes/johnrucker/coopboss-h3vx.src/coopboss-h3vx.groovy @@ -95,12 +95,12 @@ metadata { multiAttributeTile(name:"doorCtrl", type:"generic", width:6, height:4) {tileAttribute("device.doorState", key: "PRIMARY_CONTROL") { attributeState "unknown", label: '${name}', action:"openDoor", icon: "st.Outdoor.outdoor20", nextState:"Sent" - attributeState "open", label: '${name}', action:"closeDoor", icon: "st.Outdoor.outdoor20", backgroundColor: "#0000ff" , nextState:"Sent" - attributeState "opening", label: '${name}', action:"closeDoor", icon: "st.Outdoor.outdoor20", backgroundColor: "#ffa81e" - attributeState "closed", label: '${name}', action:"openDoor", icon: "st.Outdoor.outdoor20", backgroundColor: "#79b821", nextState:"Sent" - attributeState "closing", label: '${name}', action:"openDoor", icon: "st.Outdoor.outdoor20", backgroundColor: "#ffa81e" - attributeState "jammed", label: '${name}', action:"closeDoorHiI", icon: "st.Outdoor.outdoor20", backgroundColor: "#ff0000", nextState:"Sent" - attributeState "forced close", label: 'forced\rclose', action:"openDoor", icon: "st.Outdoor.outdoor20", backgroundColor: "#ff8000", nextState:"Sent" + attributeState "open", label: '${name}', action:"closeDoor", icon: "st.Outdoor.outdoor20", backgroundColor: "#00A0DC" , nextState:"Sent" + attributeState "opening", label: '${name}', action:"closeDoor", icon: "st.Outdoor.outdoor20", backgroundColor: "#00A0DC" + attributeState "closed", label: '${name}', action:"openDoor", icon: "st.Outdoor.outdoor20", backgroundColor: "#ffffff", nextState:"Sent" + attributeState "closing", label: '${name}', action:"openDoor", icon: "st.Outdoor.outdoor20", backgroundColor: "#ffffff" + attributeState "jammed", label: '${name}', action:"closeDoorHiI", icon: "st.Outdoor.outdoor20", backgroundColor: "#ff0000", nextState:"Sent" + attributeState "forced close", label: 'forced\rclose', action:"openDoor", icon: "st.Outdoor.outdoor20", backgroundColor: "#ff8000", nextState:"Sent" attributeState "fault", label: 'FAULT', action:"openDoor", icon: "st.Outdoor.outdoor20", backgroundColor: "#ff0000", nextState:"Sent" attributeState "Sent", label: 'wait', icon: "st.motion.motion.active", backgroundColor: "#ffa81e" } @@ -135,13 +135,13 @@ metadata { } standardTile("autoClose", "device.autoCloseEnable", width: 2, height: 2){ - state "on", label: 'Auto', action:"autoCloseOff", icon: "st.doors.garage.garage-closing", backgroundColor: "#79b821", nextState:"Sent" + state "on", label: 'Auto', action:"autoCloseOff", icon: "st.doors.garage.garage-closing", backgroundColor: "#00A0DC", nextState:"Sent" state "off", label: 'Auto', action:"autoCloseOn", icon: "st.doors.garage.garage-closing", nextState:"Sent" state "Sent", label: 'wait', icon: "st.motion.motion.active", backgroundColor: "#ffa81e" } standardTile("autoOpen", "device.autoOpenEnable", width: 2, height: 2){ - state "on", label: 'Auto', action:"autoOpenOff", icon: "st.doors.garage.garage-opening", backgroundColor: "#79b821", nextState:"Sent" + state "on", label: 'Auto', action:"autoOpenOff", icon: "st.doors.garage.garage-opening", backgroundColor: "#00A0DC", nextState:"Sent" state "off", label: 'Auto', action:"autoOpenOn", icon: "st.doors.garage.garage-opening", nextState:"Sent" state "Sent", label: 'wait', icon: "st.motion.motion.active", backgroundColor: "#ffa81e" } @@ -189,13 +189,13 @@ metadata { standardTile("aux1", "device.Aux1", width: 2, height: 2, canChangeIcon: true) { state "off", label:'Aux 1', action:"Aux1On", icon:"st.switches.switch.off", backgroundColor:"#ffffff", nextState:"Sent" - state "on", label:'Aux 1', action:"Aux1Off", icon:"st.switches.switch.on", backgroundColor:"#79b821", nextState:"Sent" + state "on", label:'Aux 1', action:"Aux1Off", icon:"st.switches.switch.on", backgroundColor:"#00A0DC", nextState:"Sent" state "Sent", label: 'wait', icon: "st.motion.motion.active", backgroundColor: "#ffa81e" } standardTile("aux2", "device.Aux2", width: 2, height: 2, canChangeIcon: true) { state "off", label:'Aux 2', action:"Aux2On", icon:"st.switches.switch.off", backgroundColor:"#ffffff", nextState:"Sent" - state "on", label:'Aux 2', action:"Aux2Off", icon:"st.switches.switch.on", backgroundColor:"#79b821", nextState:"Sent" + state "on", label:'Aux 2', action:"Aux2Off", icon:"st.switches.switch.on", backgroundColor:"#00A0DC", nextState:"Sent" state "Sent", label: 'wait', icon: "st.motion.motion.active", backgroundColor: "#ffa81e" } diff --git a/devicetypes/smartthings/fibaro-door-window-sensor.src/fibaro-door-window-sensor.groovy b/devicetypes/smartthings/fibaro-door-window-sensor.src/fibaro-door-window-sensor.groovy index 4ece9ab..10cbc7d 100644 --- a/devicetypes/smartthings/fibaro-door-window-sensor.src/fibaro-door-window-sensor.groovy +++ b/devicetypes/smartthings/fibaro-door-window-sensor.src/fibaro-door-window-sensor.groovy @@ -68,8 +68,8 @@ tiles { standardTile("contact", "device.contact", width: 2, height: 2) { - state "open", label: '${name}', icon: "st.contact.contact.open", backgroundColor: "#ffa81e" - state "closed", label: '${name}', icon: "st.contact.contact.closed", backgroundColor: "#79b821" + state "open", label: '${name}', icon: "st.contact.contact.open", backgroundColor: "#e86d13" + state "closed", label: '${name}', icon: "st.contact.contact.closed", backgroundColor: "#00A0DC" } valueTile("temperature", "device.temperature", inactiveLabel: false) { state "temperature", label:'${currentValue}°', @@ -86,7 +86,7 @@ } standardTile("tamper", "device.alarm") { state("secure", label:'secure', icon:"st.locks.lock.locked", backgroundColor:"#ffffff") - state("tampered", label:'tampered', icon:"st.locks.lock.unlocked", backgroundColor:"#53a7c0") + state("tampered", label:'tampered', icon:"st.locks.lock.unlocked", backgroundColor:"#00a0dc") } valueTile("battery", "device.battery", inactiveLabel: false, decoration: "flat") { state "battery", label:'${currentValue}% battery', unit:"" diff --git a/devicetypes/smartthings/fibaro-motion-sensor.src/fibaro-motion-sensor.groovy b/devicetypes/smartthings/fibaro-motion-sensor.src/fibaro-motion-sensor.groovy index 9e2d769..a0c9322 100644 --- a/devicetypes/smartthings/fibaro-motion-sensor.src/fibaro-motion-sensor.groovy +++ b/devicetypes/smartthings/fibaro-motion-sensor.src/fibaro-motion-sensor.groovy @@ -107,8 +107,8 @@ state "configure", label:'', action:"configuration.configure", icon:"st.secondary.configure" } standardTile("acceleration", "device.acceleration") { - state("active", label:'vibration', icon:"st.motion.acceleration.active", backgroundColor:"#53a7c0") - state("inactive", label:'still', icon:"st.motion.acceleration.inactive", backgroundColor:"#ffffff") + state("active", label:'vibration', icon:"st.motion.acceleration.active", backgroundColor:"#00a0dc") + state("inactive", label:'still', icon:"st.motion.acceleration.inactive", backgroundColor:"#cccccc") } diff --git a/devicetypes/smartthings/mimolite-garage-door-controller.src/mimolite-garage-door-controller.groovy b/devicetypes/smartthings/mimolite-garage-door-controller.src/mimolite-garage-door-controller.groovy index 9440d21..c3e91a8 100644 --- a/devicetypes/smartthings/mimolite-garage-door-controller.src/mimolite-garage-door-controller.groovy +++ b/devicetypes/smartthings/mimolite-garage-door-controller.src/mimolite-garage-door-controller.groovy @@ -62,8 +62,8 @@ metadata { state "off", label: '${name}', action: "on", icon: "st.switches.switch.off", backgroundColor: "#ffffff" } standardTile("contact", "device.contact", inactiveLabel: false) { - state "open", label: '${name}', icon: "st.contact.contact.open", backgroundColor: "#ffa81e" - state "closed", label: '${name}', icon: "st.contact.contact.closed", backgroundColor: "#79b821" + state "open", label: '${name}', icon: "st.contact.contact.open", backgroundColor: "#e86d13" + state "closed", label: '${name}', icon: "st.contact.contact.closed", backgroundColor: "#00A0DC" } standardTile("refresh", "device.switch", inactiveLabel: false, decoration: "flat") { state "default", label:'', action:"refresh.refresh", icon:"st.secondary.refresh" diff --git a/devicetypes/smartthings/smartpower-dimming-outlet.src/smartpower-dimming-outlet.groovy b/devicetypes/smartthings/smartpower-dimming-outlet.src/smartpower-dimming-outlet.groovy index fa5da7a..c2870e3 100644 --- a/devicetypes/smartthings/smartpower-dimming-outlet.src/smartpower-dimming-outlet.groovy +++ b/devicetypes/smartthings/smartpower-dimming-outlet.src/smartpower-dimming-outlet.groovy @@ -44,9 +44,9 @@ metadata { tiles(scale: 2) { multiAttributeTile(name:"switch", type: "lighting", width: 6, height: 4, canChangeIcon: true){ tileAttribute ("device.switch", key: "PRIMARY_CONTROL") { - attributeState "on", label:'${name}', action:"switch.off", icon:"st.switches.switch.on", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "on", label:'${name}', action:"switch.off", icon:"st.switches.switch.on", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "off", label:'${name}', action:"switch.on", icon:"st.switches.switch.off", backgroundColor:"#ffffff", nextState:"turningOn" - attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.switch.on", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.switch.on", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "turningOff", label:'${name}', action:"switch.on", icon:"st.switches.switch.off", backgroundColor:"#ffffff", nextState:"turningOn" } tileAttribute ("device.level", key: "SLIDER_CONTROL") { diff --git a/devicetypes/smartthings/smartsense-garage-door-sensor-button.src/smartsense-garage-door-sensor-button.groovy b/devicetypes/smartthings/smartsense-garage-door-sensor-button.src/smartsense-garage-door-sensor-button.groovy index 1ff5426..7574d91 100644 --- a/devicetypes/smartthings/smartsense-garage-door-sensor-button.src/smartsense-garage-door-sensor-button.groovy +++ b/devicetypes/smartthings/smartsense-garage-door-sensor-button.src/smartsense-garage-door-sensor-button.groovy @@ -56,8 +56,8 @@ metadata { state("closing", label:'${name}', icon:"st.doors.garage.garage-closing", backgroundColor:"#00A0DC") } standardTile("contact", "device.contact") { - state("open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"#ffa81e") - state("closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#79b821") + state("open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"#e86d13") + state("closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#00A0DC") } standardTile("acceleration", "device.acceleration", decoration: "flat") { state("active", label:'${name}', icon:"st.motion.acceleration.active", backgroundColor:"#00A0DC") diff --git a/devicetypes/smartthings/smartsense-motion-sensor.src/smartsense-motion-sensor.groovy b/devicetypes/smartthings/smartsense-motion-sensor.src/smartsense-motion-sensor.groovy index 131dca4..3109335 100644 --- a/devicetypes/smartthings/smartsense-motion-sensor.src/smartsense-motion-sensor.groovy +++ b/devicetypes/smartthings/smartsense-motion-sensor.src/smartsense-motion-sensor.groovy @@ -61,8 +61,8 @@ metadata { tiles(scale: 2) { multiAttributeTile(name: "motion", type: "generic", width: 6, height: 4) { tileAttribute("device.motion", key: "PRIMARY_CONTROL") { - attributeState "active", label: 'motion', icon: "st.motion.motion.active", backgroundColor: "#53a7c0" - attributeState "inactive", label: 'no motion', icon: "st.motion.motion.inactive", backgroundColor: "#ffffff" + attributeState "active", label: 'motion', icon: "st.motion.motion.active", backgroundColor: "#00A0DC" + attributeState "inactive", label: 'no motion', icon: "st.motion.motion.inactive", backgroundColor: "#cccccc" } } valueTile("temperature", "device.temperature", width: 2, height: 2) { diff --git a/devicetypes/smartthings/smartsense-multi-sensor.src/smartsense-multi-sensor.groovy b/devicetypes/smartthings/smartsense-multi-sensor.src/smartsense-multi-sensor.groovy index 2629724..0714794 100644 --- a/devicetypes/smartthings/smartsense-multi-sensor.src/smartsense-multi-sensor.groovy +++ b/devicetypes/smartthings/smartsense-multi-sensor.src/smartsense-multi-sensor.groovy @@ -87,8 +87,8 @@ metadata { state("closed", label: 'Closed', icon: "st.contact.contact.closed", backgroundColor: "#00a0dc") } standardTile("acceleration", "device.acceleration", width: 2, height: 2) { - state("active", label: 'Active', icon: "st.motion.acceleration.active", backgroundColor: "#53a7c0") - state("inactive", label: 'Inactive', icon: "st.motion.acceleration.inactive", backgroundColor: "#ffffff") + state("active", label: 'Active', icon: "st.motion.acceleration.active", backgroundColor: "#00a0dc") + state("inactive", label: 'Inactive', icon: "st.motion.acceleration.inactive", backgroundColor: "#cccccc") } valueTile("temperature", "device.temperature", width: 2, height: 2) { state("temperature", label: '${currentValue}°', diff --git a/devicetypes/smartthings/testing/simulated-refrigerator-door.src/simulated-refrigerator-door.groovy b/devicetypes/smartthings/testing/simulated-refrigerator-door.src/simulated-refrigerator-door.groovy index cf7f3ef..fbddf64 100644 --- a/devicetypes/smartthings/testing/simulated-refrigerator-door.src/simulated-refrigerator-door.groovy +++ b/devicetypes/smartthings/testing/simulated-refrigerator-door.src/simulated-refrigerator-door.groovy @@ -22,16 +22,16 @@ metadata { tiles { standardTile("contact", "device.contact", width: 2, height: 2) { - state("closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#79b821", action: "open") - state("open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"#ffa81e", action: "close") + state("closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#00A0DC", action: "open") + state("open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"#e86d13", action: "close") } standardTile("freezerDoor", "device.contact", width: 2, height: 2, decoration: "flat") { - state("closed", label:'Freezer', icon:"st.contact.contact.closed", backgroundColor:"#79b821") - state("open", label:'Freezer', icon:"st.contact.contact.open", backgroundColor:"#ffa81e") + state("closed", label:'Freezer', icon:"st.contact.contact.closed", backgroundColor:"#00A0DC") + state("open", label:'Freezer', icon:"st.contact.contact.open", backgroundColor:"#e86d13") } standardTile("mainDoor", "device.contact", width: 2, height: 2, decoration: "flat") { - state("closed", label:'Fridge', icon:"st.contact.contact.closed", backgroundColor:"#79b821") - state("open", label:'Fridge', icon:"st.contact.contact.open", backgroundColor:"#ffa81e") + state("closed", label:'Fridge', icon:"st.contact.contact.closed", backgroundColor:"#00A0DC") + state("open", label:'Fridge', icon:"st.contact.contact.open", backgroundColor:"#e86d13") } standardTile("control", "device.contact", width: 1, height: 1, decoration: "flat") { state("closed", label:'${name}', icon:"st.contact.contact.closed", action: "open") diff --git a/devicetypes/smartthings/testing/simulated-refrigerator.src/simulated-refrigerator.groovy b/devicetypes/smartthings/testing/simulated-refrigerator.src/simulated-refrigerator.groovy index ba5fbfe..a9047f9 100644 --- a/devicetypes/smartthings/testing/simulated-refrigerator.src/simulated-refrigerator.groovy +++ b/devicetypes/smartthings/testing/simulated-refrigerator.src/simulated-refrigerator.groovy @@ -25,8 +25,8 @@ metadata { tiles(scale: 2) { standardTile("contact", "device.contact", width: 4, height: 4) { - state("closed", label:'${name}', icon:"st.fridge.fridge-closed", backgroundColor:"#79b821") - state("open", label:'${name}', icon:"st.fridge.fridge-open", backgroundColor:"#ffa81e") + state("closed", label:'${name}', icon:"st.fridge.fridge-closed", backgroundColor:"#00A0DC") + state("open", label:'${name}', icon:"st.fridge.fridge-open", backgroundColor:"#e86d13") } childDeviceTile("freezerDoor", "freezerDoor", height: 2, width: 2, childTileName: "freezerDoor") childDeviceTile("mainDoor", "mainDoor", height: 2, width: 2, childTileName: "mainDoor") diff --git a/devicetypes/smartthings/tile-ux/tile-multiattribute-generic.src/tile-multiattribute-generic.groovy b/devicetypes/smartthings/tile-ux/tile-multiattribute-generic.src/tile-multiattribute-generic.groovy index 9353c00..8394012 100644 --- a/devicetypes/smartthings/tile-ux/tile-multiattribute-generic.src/tile-multiattribute-generic.groovy +++ b/devicetypes/smartthings/tile-ux/tile-multiattribute-generic.src/tile-multiattribute-generic.groovy @@ -27,7 +27,7 @@ metadata { tileAttribute("device.switch", key: "PRIMARY_CONTROL") { attributeState "on", label:'${name}', action:"switch.off", icon:"st.switches.switch.on", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "off", label:'${name}', action:"switch.on", icon:"st.switches.switch.off", backgroundColor:"#ffffff", nextState:"turningOn" - attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.switch.on", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.switch.on", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "turningOff", label:'${name}', action:"switch.on", icon:"st.switches.switch.off", backgroundColor:"#ffffff", nextState:"turningOn" } } @@ -35,7 +35,7 @@ metadata { tileAttribute("device.switch", key: "PRIMARY_CONTROL") { attributeState "on", label:'${name}', backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "off", label:'${name}', backgroundColor:"#ffffff", nextState:"turningOn" - attributeState "turningOn", label:'${name}', backgroundColor:"#79b821", nextState:"turningOff" + attributeState "turningOn", label:'${name}', backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "turningOff", label:'${name}', backgroundColor:"#ffffff", nextState:"turningOn" } tileAttribute("device.level", key: "SECONDARY_CONTROL") { @@ -59,7 +59,7 @@ metadata { tileAttribute("device.switch", key: "SECONDARY_CONTROL") { attributeState "on", label:'${name}', action:"switch.off", icon:"st.switches.switch.on", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "off", label:'${name}', action:"switch.on", backgroundColor:"#ffffff", nextState:"turningOn" - attributeState "turningOn", label:'…', action:"switch.off", icon:"st.switches.switch.on", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "turningOn", label:'…', action:"switch.off", icon:"st.switches.switch.on", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "turningOff", label:'…', action:"switch.on", backgroundColor:"#ffffff", nextState:"turningOn" } tileAttribute("device.level", key: "VALUE_CONTROL") { diff --git a/devicetypes/smartthings/wemo-light-switch.src/wemo-light-switch.groovy b/devicetypes/smartthings/wemo-light-switch.src/wemo-light-switch.groovy index b5a4881..db21866 100644 --- a/devicetypes/smartthings/wemo-light-switch.src/wemo-light-switch.groovy +++ b/devicetypes/smartthings/wemo-light-switch.src/wemo-light-switch.groovy @@ -40,11 +40,11 @@ metadata { tiles(scale: 2) { multiAttributeTile(name:"rich-control", type: "switch", canChangeIcon: true){ tileAttribute ("device.switch", key: "PRIMARY_CONTROL") { - attributeState "on", label:'${name}', action:"switch.off", icon:"st.Home.home30", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "on", label:'${name}', action:"switch.off", icon:"st.Home.home30", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "off", label:'${name}', action:"switch.on", icon:"st.Home.home30", backgroundColor:"#ffffff", nextState:"turningOn" - attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.Home.home30", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.Home.home30", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "turningOff", label:'${name}', action:"switch.on", icon:"st.Home.home30", backgroundColor:"#ffffff", nextState:"turningOn" - attributeState "offline", label:'${name}', icon:"st.Home.home30", backgroundColor:"#ff0000" + attributeState "offline", label:'${name}', icon:"st.Home.home30", backgroundColor:"#cccccc" } tileAttribute ("currentIP", key: "SECONDARY_CONTROL") { attributeState "currentIP", label: '' diff --git a/devicetypes/smartthings/wemo-motion.src/wemo-motion.groovy b/devicetypes/smartthings/wemo-motion.src/wemo-motion.groovy index fe844f2..e094d27 100644 --- a/devicetypes/smartthings/wemo-motion.src/wemo-motion.groovy +++ b/devicetypes/smartthings/wemo-motion.src/wemo-motion.groovy @@ -46,8 +46,8 @@ } standardTile("motion", "device.motion", width: 2, height: 2) { - state("active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#53a7c0") - state("inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#ffffff") + state("active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#00A0DC") + state("inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#CCCCCC") state("offline", label:'${name}', icon:"st.motion.motion.inactive", backgroundColor:"#ff0000") } diff --git a/devicetypes/smartthings/wemo-switch.src/wemo-switch.groovy b/devicetypes/smartthings/wemo-switch.src/wemo-switch.groovy index 27c735e..51894fd 100644 --- a/devicetypes/smartthings/wemo-switch.src/wemo-switch.groovy +++ b/devicetypes/smartthings/wemo-switch.src/wemo-switch.groovy @@ -38,11 +38,11 @@ tiles(scale: 2) { multiAttributeTile(name:"rich-control", type: "switch", canChangeIcon: true){ tileAttribute ("device.switch", key: "PRIMARY_CONTROL") { - attributeState "on", label:'${name}', action:"switch.off", icon:"st.switches.switch.off", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "on", label:'${name}', action:"switch.off", icon:"st.switches.switch.off", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "off", label:'${name}', action:"switch.on", icon:"st.switches.switch.on", backgroundColor:"#ffffff", nextState:"turningOn" - attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.switch.off", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.switch.off", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "turningOff", label:'${name}', action:"switch.on", icon:"st.switches.switch.on", backgroundColor:"#ffffff", nextState:"turningOn" - attributeState "offline", label:'${name}', icon:"st.switches.switch.off", backgroundColor:"#ff0000" + attributeState "offline", label:'${name}', icon:"st.switches.switch.off", backgroundColor:"#cccccc" } tileAttribute ("currentIP", key: "SECONDARY_CONTROL") { attributeState "currentIP", label: '' @@ -50,11 +50,11 @@ } standardTile("switch", "device.switch", width: 2, height: 2, canChangeIcon: true) { - state "on", label:'${name}', action:"switch.off", icon:"st.switches.switch.off", backgroundColor:"#79b821", nextState:"turningOff" + state "on", label:'${name}', action:"switch.off", icon:"st.switches.switch.off", backgroundColor:"#00A0DC", nextState:"turningOff" state "off", label:'${name}', action:"switch.on", icon:"st.switches.switch.on", backgroundColor:"#ffffff", nextState:"turningOn" - state "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.switch.off", backgroundColor:"#79b821", nextState:"turningOff" + state "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.switch.off", backgroundColor:"#00A0DC", nextState:"turningOff" state "turningOff", label:'${name}', action:"switch.on", icon:"st.switches.switch.on", backgroundColor:"#ffffff", nextState:"turningOn" - state "offline", label:'${name}', icon:"st.switches.switch.off", backgroundColor:"#ff0000" + state "offline", label:'${name}', icon:"st.switches.switch.off", backgroundColor:"#cccccc" } standardTile("refresh", "device.switch", inactiveLabel: false, height: 2, width: 2, decoration: "flat") { diff --git a/devicetypes/smartthings/zigbee-rgbw-bulb.src/zigbee-rgbw-bulb.groovy b/devicetypes/smartthings/zigbee-rgbw-bulb.src/zigbee-rgbw-bulb.groovy index a46e5a6..aa2cd02 100644 --- a/devicetypes/smartthings/zigbee-rgbw-bulb.src/zigbee-rgbw-bulb.groovy +++ b/devicetypes/smartthings/zigbee-rgbw-bulb.src/zigbee-rgbw-bulb.groovy @@ -46,9 +46,9 @@ metadata { tiles(scale: 2) { multiAttributeTile(name:"switch", type: "lighting", width: 6, height: 4, canChangeIcon: true){ tileAttribute ("device.switch", key: "PRIMARY_CONTROL") { - attributeState "on", label:'${name}', action:"switch.off", icon:"st.lights.philips.hue-single", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "on", label:'${name}', action:"switch.off", icon:"st.lights.philips.hue-single", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "off", label:'${name}', action:"switch.on", icon:"st.lights.philips.hue-single", backgroundColor:"#ffffff", nextState:"turningOn" - attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.lights.philips.hue-single", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.lights.philips.hue-single", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "turningOff", label:'${name}', action:"switch.on", icon:"st.lights.philips.hue-single", backgroundColor:"#ffffff", nextState:"turningOn" } tileAttribute ("device.level", key: "SLIDER_CONTROL") { diff --git a/devicetypes/smartthings/zigbee-switch.src/zigbee-switch.groovy b/devicetypes/smartthings/zigbee-switch.src/zigbee-switch.groovy index 94dc7e7..868ad0b 100644 --- a/devicetypes/smartthings/zigbee-switch.src/zigbee-switch.groovy +++ b/devicetypes/smartthings/zigbee-switch.src/zigbee-switch.groovy @@ -41,9 +41,9 @@ metadata { tiles(scale: 2) { multiAttributeTile(name:"switch", type: "lighting", width: 6, height: 4, canChangeIcon: true){ tileAttribute ("device.switch", key: "PRIMARY_CONTROL") { - attributeState "on", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "on", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "off", label:'${name}', action:"switch.on", icon:"st.switches.light.off", backgroundColor:"#ffffff", nextState:"turningOn" - attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "turningOff", label:'${name}', action:"switch.on", icon:"st.switches.light.off", backgroundColor:"#ffffff", nextState:"turningOn" } } diff --git a/devicetypes/smartthings/zigbee-white-color-temperature-bulb.src/zigbee-white-color-temperature-bulb.groovy b/devicetypes/smartthings/zigbee-white-color-temperature-bulb.src/zigbee-white-color-temperature-bulb.groovy index 6f913a4..1e6d454 100644 --- a/devicetypes/smartthings/zigbee-white-color-temperature-bulb.src/zigbee-white-color-temperature-bulb.groovy +++ b/devicetypes/smartthings/zigbee-white-color-temperature-bulb.src/zigbee-white-color-temperature-bulb.groovy @@ -45,9 +45,9 @@ metadata { tiles(scale: 2) { multiAttributeTile(name:"switch", type: "lighting", width: 6, height: 4, canChangeIcon: true){ tileAttribute ("device.switch", key: "PRIMARY_CONTROL") { - attributeState "on", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "on", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "off", label:'${name}', action:"switch.on", icon:"st.switches.light.off", backgroundColor:"#ffffff", nextState:"turningOn" - attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "turningOff", label:'${name}', action:"switch.on", icon:"st.switches.light.off", backgroundColor:"#ffffff", nextState:"turningOn" } tileAttribute ("device.level", key: "SLIDER_CONTROL") { diff --git a/devicetypes/smartthings/zll-dimmer-bulb.src/zll-dimmer-bulb.groovy b/devicetypes/smartthings/zll-dimmer-bulb.src/zll-dimmer-bulb.groovy index c706147..f27f847 100644 --- a/devicetypes/smartthings/zll-dimmer-bulb.src/zll-dimmer-bulb.groovy +++ b/devicetypes/smartthings/zll-dimmer-bulb.src/zll-dimmer-bulb.groovy @@ -49,9 +49,9 @@ metadata { tiles(scale: 2) { multiAttributeTile(name:"switch", type: "lighting", width: 6, height: 4, canChangeIcon: true){ tileAttribute ("device.switch", key: "PRIMARY_CONTROL") { - attributeState "on", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "on", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "off", label:'${name}', action:"switch.on", icon:"st.switches.light.off", backgroundColor:"#ffffff", nextState:"turningOn" - attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#79b821", nextState:"turningOff" + attributeState "turningOn", label:'${name}', action:"switch.off", icon:"st.switches.light.on", backgroundColor:"#00A0DC", nextState:"turningOff" attributeState "turningOff", label:'${name}', action:"switch.on", icon:"st.switches.light.off", backgroundColor:"#ffffff", nextState:"turningOn" } tileAttribute ("device.level", key: "SLIDER_CONTROL") { diff --git a/devicetypes/smartthings/zwave-plus-motion-temp-sensor.src/zwave-plus-motion-temp-sensor.groovy b/devicetypes/smartthings/zwave-plus-motion-temp-sensor.src/zwave-plus-motion-temp-sensor.groovy index 02d327c..e72dba5 100644 --- a/devicetypes/smartthings/zwave-plus-motion-temp-sensor.src/zwave-plus-motion-temp-sensor.groovy +++ b/devicetypes/smartthings/zwave-plus-motion-temp-sensor.src/zwave-plus-motion-temp-sensor.groovy @@ -37,8 +37,8 @@ metadata { tiles { standardTile("motion", "device.motion", width: 3, height: 2) { - state "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#53a7c0" - state "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#ffffff" + state "active", label:'motion', icon:"st.motion.motion.active", backgroundColor:"#00A0DC" + state "inactive", label:'no motion', icon:"st.motion.motion.inactive", backgroundColor:"#CCCCCC" } valueTile("temperature", "device.temperature", inactiveLabel: false) { From d41162afe47320cf794761f04a0d904ad9e309fe Mon Sep 17 00:00:00 2001 From: "sushant.k1" Date: Fri, 16 Dec 2016 17:28:30 +0530 Subject: [PATCH 3/7] [CHF-481] Added Health Check Implementation for CT100 Programmable Thermostat. --- .../ct100-thermostat.groovy | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/devicetypes/smartthings/ct100-thermostat.src/ct100-thermostat.groovy b/devicetypes/smartthings/ct100-thermostat.src/ct100-thermostat.groovy index 1737fed..d07c6c8 100644 --- a/devicetypes/smartthings/ct100-thermostat.src/ct100-thermostat.groovy +++ b/devicetypes/smartthings/ct100-thermostat.src/ct100-thermostat.groovy @@ -9,6 +9,7 @@ metadata { capability "Configuration" capability "Refresh" capability "Sensor" + capability "Health Check" attribute "thermostatFanState", "string" @@ -18,6 +19,7 @@ metadata { command "quickSetHeat" fingerprint deviceId: "0x08", inClusters: "0x43,0x40,0x44,0x31,0x80,0x85,0x60" + fingerprint mfr:"0098", prod:"6401", model:"0107", deviceJoinName: "2Gig CT100 Programmable Thermostat" } // simulator metadata @@ -106,6 +108,16 @@ metadata { } } +def updated() { + // Device-Watch simply pings if no device events received for 32min(checkInterval) + sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID]) +} + +def installed() { + // Device-Watch simply pings if no device events received for 32min(checkInterval) + sendEvent(name: "checkInterval", value: 2 * 15 * 60 + 2 * 60, displayed: false, data: [protocol: "zwave", hubHardwareId: device.hub.hardwareID]) +} + def parse(String description) { def result = [] @@ -439,6 +451,14 @@ def setCoolingSetpoint(Double degrees, Integer delay = 30000) { ], delay) } +/** + * PING is used by Device-Watch in attempt to reach the Device + * */ +def ping() { + log.debug "ping() called" + refresh() +} + def configure() { delayBetween([ zwave.thermostatModeV2.thermostatModeSupportedGet().format(), From 20f149378820a6f59a8e3307b4e90075a39d2039 Mon Sep 17 00:00:00 2001 From: jackchi Date: Thu, 18 May 2017 14:47:46 -0700 Subject: [PATCH 4/7] [DVCSMP-2664] WWST Proper Naming --- .../zwave-door-window-sensor.groovy | 8 +++++++- .../zwave-motion-sensor.src/zwave-motion-sensor.groovy | 2 +- .../zwave-smoke-alarm.src/zwave-smoke-alarm.groovy | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/devicetypes/smartthings/zwave-door-window-sensor.src/zwave-door-window-sensor.groovy b/devicetypes/smartthings/zwave-door-window-sensor.src/zwave-door-window-sensor.groovy index 4edce26..0cf6d46 100644 --- a/devicetypes/smartthings/zwave-door-window-sensor.src/zwave-door-window-sensor.groovy +++ b/devicetypes/smartthings/zwave-door-window-sensor.src/zwave-door-window-sensor.groovy @@ -30,9 +30,15 @@ metadata { fingerprint deviceId: "0x0701", inClusters: "0x5E,0x86,0x72,0x98", outClusters: "0x5A,0x82" fingerprint deviceId: "0x0701", inClusters: "0x5E,0x80,0x71,0x85,0x70,0x72,0x86,0x30,0x31,0x84,0x59,0x73,0x5A,0x8F,0x98,0x7A", outClusters:"0x20" // Philio multi+ fingerprint mfr:"0086", prod:"0002", model:"001D", deviceJoinName: "Aeon Labs Door/Window Sensor (Gen 5)" - fingerprint mfr:"014A", prod:"0001", model:"0002", deviceJoinName: "Ecolink Door/Window Sensor" fingerprint mfr:"0086", prod:"0102", model:"0070", deviceJoinName: "Aeon Labs Door/Window Sensor 6" + fingerprint mfr:"0086", prod:"0102", model:"0059", deviceJoinName: "Aeon Labs Recessed Door Sensor" + fingerprint mfr:"014A", prod:"0001", model:"0002", deviceJoinName: "Ecolink Door/Window Sensor" + fingerprint mfr:"014A", prod:"0001", model:"0003", deviceJoinName: "Ecolink Tilt Sensor" fingerprint mfr:"011A", prod:"0601", model:"0903", deviceJoinName: "Enerwave Magnetic Door/Window Sensor" + fingerprint mfr:"014F", prod:"2001", model:"0102", deviceJoinName: "Nortek GoControl Door/Window Sensor" + fingerprint mfr:"0063", prod:"4953", model:"3031", deviceJoinName: "Jasco Hinge Pin Door Sensor" + fingerprint mfr:"019A", prod:"0003", model:"0003", deviceJoinName: "Sensative Strips" + } // simulator metadata diff --git a/devicetypes/smartthings/zwave-motion-sensor.src/zwave-motion-sensor.groovy b/devicetypes/smartthings/zwave-motion-sensor.src/zwave-motion-sensor.groovy index 3e76677..7cf9ed8 100644 --- a/devicetypes/smartthings/zwave-motion-sensor.src/zwave-motion-sensor.groovy +++ b/devicetypes/smartthings/zwave-motion-sensor.src/zwave-motion-sensor.groovy @@ -29,7 +29,7 @@ metadata { fingerprint mfr: "0060", prod: "0001", model: "0002", deviceJoinName: "Everspring Motion Sensor" // Everspring SP814 fingerprint mfr: "0060", prod: "0001", model: "0003", deviceJoinName: "Everspring Motion Sensor" // Everspring HSP02 fingerprint mfr: "011A", prod: "0601", model: "0901", deviceJoinName: "Enerwave Motion Sensor" // Enerwave ZWN-BPC - fingerprint mfr: "0063", prod: "4953", model: "3133", deviceJoinName: "GE Smart Motion Sensor" + fingerprint mfr: "0063", prod: "4953", model: "3133", deviceJoinName: "GE Portable Smart Motion Sensor" } simulator { diff --git a/devicetypes/smartthings/zwave-smoke-alarm.src/zwave-smoke-alarm.groovy b/devicetypes/smartthings/zwave-smoke-alarm.src/zwave-smoke-alarm.groovy index a5de607..3acaa8e 100644 --- a/devicetypes/smartthings/zwave-smoke-alarm.src/zwave-smoke-alarm.groovy +++ b/devicetypes/smartthings/zwave-smoke-alarm.src/zwave-smoke-alarm.groovy @@ -22,6 +22,7 @@ metadata { attribute "alarmState", "string" fingerprint deviceId: "0xA100", inClusters: "0x20,0x80,0x70,0x85,0x71,0x72,0x86" + fingerprint mfr:"0138", prod:"0001", model:"0001", deviceJoinName: "First Alert Smoke Detector" fingerprint mfr:"0138", prod:"0001", model:"0002", deviceJoinName: "First Alert Smoke Detector and Carbon Monoxide Alarm (ZCOMBO)" } From 6fbaf15f42e130e1a24843ce77de6d71219af5c3 Mon Sep 17 00:00:00 2001 From: jackchi Date: Fri, 19 May 2017 16:11:24 -0700 Subject: [PATCH 5/7] [CP-975] Proper WWST Z-Wave Lock names --- .../zigbee-lock.src/zigbee-lock.groovy | 2 +- .../zwave-lock.src/zwave-lock.groovy | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/devicetypes/smartthings/zigbee-lock.src/zigbee-lock.groovy b/devicetypes/smartthings/zigbee-lock.src/zigbee-lock.groovy index b14730d..7e0b572 100644 --- a/devicetypes/smartthings/zigbee-lock.src/zigbee-lock.groovy +++ b/devicetypes/smartthings/zigbee-lock.src/zigbee-lock.groovy @@ -34,7 +34,7 @@ import physicalgraph.zigbee.zcl.DataType fingerprint profileId: "0104", inClusters: "0000,0001,0003,0009,000A,0101,0020", outClusters: "000A,0019", manufacturer: "Yale", model: "YRD210 PB DB", deviceJoinName: "Yale Push Button Deadbolt Lock" fingerprint profileId: "0104", inClusters: "0000,0001,0003,0009,000A,0101,0020", outClusters: "000A,0019", manufacturer: "Yale", model: "YRD220/240 TSDB", deviceJoinName: "Yale Touch Screen Deadbolt Lock" fingerprint profileId: "0104", inClusters: "0000,0001,0003,0009,000A,0101,0020", outClusters: "000A,0019", manufacturer: "Yale", model: "YRL210 PB LL", deviceJoinName: "Yale Push Button Lever Lock" - fingerprint profileId: "0104", inClusters: "0000,0001,0003,0009,000A,0101,0020", outClusters: "000A,0019", manufacturer: "Yale", model: "YRD226/246 TSDB", deviceJoinName: "Yale Touch Screen Deadbolt Lock" + fingerprint profileId: "0104", inClusters: "0000,0001,0003,0009,000A,0101,0020", outClusters: "000A,0019", manufacturer: "Yale", model: "YRD226/246 TSDB", deviceJoinName: "Yale Touch Screen Deadbolt Lock" } tiles(scale: 2) { diff --git a/devicetypes/smartthings/zwave-lock.src/zwave-lock.groovy b/devicetypes/smartthings/zwave-lock.src/zwave-lock.groovy index 38f9e43..50b251f 100644 --- a/devicetypes/smartthings/zwave-lock.src/zwave-lock.groovy +++ b/devicetypes/smartthings/zwave-lock.src/zwave-lock.groovy @@ -26,7 +26,24 @@ metadata { fingerprint deviceId: "0x4003", inClusters: "0x98" fingerprint deviceId: "0x4004", inClusters: "0x98" - fingerprint mfr:"0129", prod:"0002", model:"0000", deviceJoinName: "Yale Key Free Touchscreen Deadbolt" + fingerprint mfr:"0090", prod:"0001", model:"0236", deviceJoinName: "KwikSet SmartCode 910 Deadbolt Door Lock" + fingerprint mfr:"0090", prod:"0003", model:"0238", deviceJoinName: "KwikSet SmartCode 910 Deadbolt Door Lock" + fingerprint mfr:"0090", prod:"0001", model:"0001", deviceJoinName: "KwikSet SmartCode 910 Contemporary Deadbolt Door Lock" + fingerprint mfr:"0090", prod:"0003", model:"0339", deviceJoinName: "KwikSet SmartCode 912 Lever Door Lock" + fingerprint mfr:"0090", prod:"0003", model:"4006", deviceJoinName: "KwikSet SmartCode 914 Deadbolt Door Lock" //backlit version + fingerprint mfr:"0090", prod:"0003", model:"0440", deviceJoinName: "KwikSet SmartCode 914 Deadbolt Door Lock" + fingerprint mfr:"0090", prod:"0001", model:"0642", deviceJoinName: "KwikSet SmartCode 916 Touchscreen Deadbolt Door Lock" + fingerprint mfr:"0090", prod:"0003", model:"0642", deviceJoinName: "KwikSet SmartCode 916 Touchscreen Deadbolt Door Lock" + fingerprint mfr:"003B", prod:"6341", model:"0544", deviceJoinName: "Schlage Camelot Touchscreen Deadbolt Door Lock" + fingerprint mfr:"003B", prod:"6341", model:"5044", deviceJoinName: "Schlage Century Touchscreen Deadbolt Door Lock" + fingerprint mfr:"003B", prod:"634B", model:"504C", deviceJoinName: "Schlage Connected Keypad Lever Door Lock" + fingerprint mfr:"0129", prod:"0002", model:"0800", deviceJoinName: "Yale Touchscreen Deadbolt Door Lock" // YRD120 + fingerprint mfr:"0129", prod:"0002", model:"0000", deviceJoinName: "Yale Touchscreen Deadbolt Door Lock" // YRD220, YRD240 + fingerprint mfr:"0129", prod:"0002", model:"FFFF", deviceJoinName: "Yale Touchscreen Lever Door Lock" // YRD220 + fingerprint mfr:"0129", prod:"0004", model:"0800", deviceJoinName: "Yale Push Button Deadbolt Door Lock" // YRD110 + fingerprint mfr:"0129", prod:"0004", model:"0000", deviceJoinName: "Yale Push Button Deadbolt Door Lock" // YRD210 + fingerprint mfr:"0129", prod:"0001", model:"0000", deviceJoinName: "Yale Push Button Lever Door Lock" // YRD210 + fingerprint mfr:"0129", prod:"8002", model:"0600", deviceJoinName: "Yale Assure Lock with Bluetooth" } simulator { From 93d8e96efc80c5243526612753227788c39a4d0a Mon Sep 17 00:00:00 2001 From: Donald Kirker Date: Sun, 21 May 2017 01:42:08 -0700 Subject: [PATCH 6/7] ICP-951 Add deviceJoinName for Aeon Panic Button Also properly report 1 button for Aeon Panic Button --- .../smartthings/aeon-key-fob.src/aeon-key-fob.groovy | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/devicetypes/smartthings/aeon-key-fob.src/aeon-key-fob.groovy b/devicetypes/smartthings/aeon-key-fob.src/aeon-key-fob.groovy index a782169..deb7047 100644 --- a/devicetypes/smartthings/aeon-key-fob.src/aeon-key-fob.groovy +++ b/devicetypes/smartthings/aeon-key-fob.src/aeon-key-fob.groovy @@ -21,6 +21,7 @@ metadata { capability "Battery" fingerprint deviceId: "0x0101", inClusters: "0x86,0x72,0x70,0x80,0x84,0x85" + fingerprint mfr: "0086", prod: "0001", model: "0026", deviceJoinName: "Aeon Panic Button" } simulator { @@ -130,5 +131,12 @@ def updated() { } def initialize() { - sendEvent(name: "numberOfButtons", value: 4) + def zwMap = getZwaveInfo() + def buttons = 4 // Default for Key Fob + + // Only one button for Aeon Panic Button + if (zwMap && zwMap.mfr == "0086" && zwMap.prod == "0001" && zwMap.model == "0026") { + buttons = 1 + } + sendEvent(name: "numberOfButtons", value: buttons) } From 772cd7005a0f5280beb54bef3ab01d2ea7e170e7 Mon Sep 17 00:00:00 2001 From: Dave Hastings Date: Tue, 16 May 2017 15:37:49 -0500 Subject: [PATCH 7/7] ICP-781 Fixing DTH for valve capability Making suggested fixes making fixes fixing to correctly use createEvent fixing DTH Also adding the fortrezz water valve refactoring a bit adding back in debug messages updating ocf device type adding zigbee water valve refactor --- .../fortrezz-water-valve.groovy | 23 +++++++++----- .../zigbee-valve.src/zigbee-valve.groovy | 3 ++ .../zwave-water-valve.groovy | 31 ++++++++++++------- 3 files changed, 38 insertions(+), 19 deletions(-) diff --git a/devicetypes/smartthings/fortrezz-water-valve.src/fortrezz-water-valve.groovy b/devicetypes/smartthings/fortrezz-water-valve.src/fortrezz-water-valve.groovy index 80ee6a0..5c8901a 100644 --- a/devicetypes/smartthings/fortrezz-water-valve.src/fortrezz-water-valve.groovy +++ b/devicetypes/smartthings/fortrezz-water-valve.src/fortrezz-water-valve.groovy @@ -12,13 +12,13 @@ * */ metadata { - definition (name: "Fortrezz Water Valve", namespace: "smartthings", author: "SmartThings") { + definition (name: "Fortrezz Water Valve", namespace: "smartthings", author: "SmartThings", ocfDeviceType: "oic.d.watervalve") { capability "Actuator" capability "Health Check" capability "Valve" capability "Refresh" capability "Sensor" - + fingerprint deviceId: "0x1000", inClusters: "0x25,0x72,0x86,0x71,0x22,0x70" fingerprint mfr:"0084", prod:"0213", model:"0215", deviceJoinName: "FortrezZ Water Valve" } @@ -62,22 +62,23 @@ def updated(){ def parse(String description) { log.trace description - def result = null def cmd = zwave.parse(description) if (cmd) { - result = createEvent(zwaveEvent(cmd)) + return zwaveEvent(cmd) } - log.debug "Parse returned ${result?.descriptionText}" - return result + log.debug "Could not parse message" + return null } def zwaveEvent(physicalgraph.zwave.commands.switchbinaryv1.SwitchBinaryReport cmd) { def value = cmd.value ? "closed" : "open" - [name: "contact", value: value, descriptionText: "$device.displayName valve is $value"] + + return [createEventWithDebug([name: "contact", value: value, descriptionText: "$device.displayName valve is $value"]), + createEventWithDebug([name: "valve", value: value, descriptionText: "$device.displayName valve is $value"])] } def zwaveEvent(physicalgraph.zwave.Command cmd) { - [:] // Handles all Z-Wave commands we aren't interested in + return createEvent([:]) // Handles all Z-Wave commands we aren't interested in } def open() { @@ -98,3 +99,9 @@ def ping() { def refresh() { zwave.switchBinaryV1.switchBinaryGet().format() } + +def createEventWithDebug(eventMap) { + def event = createEvent(eventMap) + log.debug "Event created with ${event?.descriptionText}" + return event +} diff --git a/devicetypes/smartthings/zigbee-valve.src/zigbee-valve.groovy b/devicetypes/smartthings/zigbee-valve.src/zigbee-valve.groovy index 657da69..82ca256 100644 --- a/devicetypes/smartthings/zigbee-valve.src/zigbee-valve.groovy +++ b/devicetypes/smartthings/zigbee-valve.src/zigbee-valve.groovy @@ -83,6 +83,9 @@ def parse(String description) { } } sendEvent(event) + //handle valve attribute + event.name = "valve" + sendEvent(event) } else { def descMap = zigbee.parseDescriptionAsMap(description) diff --git a/devicetypes/smartthings/zwave-water-valve.src/zwave-water-valve.groovy b/devicetypes/smartthings/zwave-water-valve.src/zwave-water-valve.groovy index 8826760..a7f8137 100644 --- a/devicetypes/smartthings/zwave-water-valve.src/zwave-water-valve.groovy +++ b/devicetypes/smartthings/zwave-water-valve.src/zwave-water-valve.groovy @@ -12,7 +12,7 @@ * */ metadata { - definition (name: "Z-Wave Water Valve", namespace: "smartthings", author: "SmartThings") { + definition (name: "Z-Wave Water Valve", namespace: "smartthings", author: "SmartThings", ocfDeviceType: "oic.d.watervalve") { capability "Actuator" capability "Valve" capability "Polling" @@ -59,18 +59,19 @@ def updated() { def parse(String description) { log.trace "parse description : $description" - def result = null def cmd = zwave.parse(description, [0x20: 1]) if (cmd) { - result = createEvent(zwaveEvent(cmd)) + return zwaveEvent(cmd) } - log.debug "Parse returned ${result?.descriptionText}" - return result + log.debug "Could not parse message" + return null } def zwaveEvent(physicalgraph.zwave.commands.basicv1.BasicReport cmd) { - def value = cmd.value == 0xFF ? "open" : cmd.value == 0x00 ? "closed" : "unknown" - [name: "contact", value: value, descriptionText: "$device.displayName valve is $value"] + def value = cmd.value == 0xFF ? "open" : cmd.value == 0x00 ? "closed" : "unknown" + + return [createEventWithDebug([name: "contact", value: value, descriptionText: "$device.displayName valve is $value"]), + createEventWithDebug([name: "valve", value: value, descriptionText: "$device.displayName valve is $value"])] } def zwaveEvent(physicalgraph.zwave.commands.manufacturerspecificv2.ManufacturerSpecificReport cmd) { //TODO should show MSR when device is discovered @@ -80,20 +81,22 @@ def zwaveEvent(physicalgraph.zwave.commands.manufacturerspecificv2.ManufacturerS log.debug "productTypeId: ${cmd.productTypeId}" def msr = String.format("%04X-%04X-%04X", cmd.manufacturerId, cmd.productTypeId, cmd.productId) updateDataValue("MSR", msr) - [descriptionText: "$device.displayName MSR: $msr", isStateChange: false] + return createEventWithDebug([descriptionText: "$device.displayName MSR: $msr", isStateChange: false]) } def zwaveEvent(physicalgraph.zwave.commands.deviceresetlocallyv1.DeviceResetLocallyNotification cmd) { - [descriptionText: cmd.toString(), isStateChange: true, displayed: true] + return createEventWithDebug([descriptionText: cmd.toString(), isStateChange: true, displayed: true]) } def zwaveEvent(physicalgraph.zwave.commands.switchbinaryv1.SwitchBinaryReport cmd) { def value = cmd.value == 0xFF ? "open" : cmd.value == 0x00 ? "closed" : "unknown" - [name: "contact", value: value, descriptionText: "$device.displayName valve is $value"] + + return [createEventWithDebug([name: "contact", value: value, descriptionText: "$device.displayName valve is $value"]), + createEventWithDebug([name: "valve", value: value, descriptionText: "$device.displayName valve is $value"])] } def zwaveEvent(physicalgraph.zwave.Command cmd) { - [:] // Handles all Z-Wave commands we aren't interested in + return createEvent([:]) // Handles all Z-Wave commands we aren't interested in } def open() { @@ -122,3 +125,9 @@ def refresh() { } delayBetween(commands,100) } + +def createEventWithDebug(eventMap) { + def event = createEvent(eventMap) + log.debug "Event created with ${event?.descriptionText}" + return event +}