From 61356ec8a7798f417e53ef14d57a284f24858dc0 Mon Sep 17 00:00:00 2001 From: Parijat Das Date: Tue, 17 Jan 2017 19:17:41 +0530 Subject: [PATCH 01/10] Added fingerprints for the following devices: 1. Leviton 5A Incandescent Switch (VRS05-1LZ) 2. Leviton 15A Split Duplex Receptacle (VRR15-1LZ) --- .../zwave-switch-generic.src/zwave-switch-generic.groovy | 2 ++ 1 file changed, 2 insertions(+) diff --git a/devicetypes/smartthings/zwave-switch-generic.src/zwave-switch-generic.groovy b/devicetypes/smartthings/zwave-switch-generic.src/zwave-switch-generic.groovy index ef1134a..c630353 100644 --- a/devicetypes/smartthings/zwave-switch-generic.src/zwave-switch-generic.groovy +++ b/devicetypes/smartthings/zwave-switch-generic.src/zwave-switch-generic.groovy @@ -26,6 +26,8 @@ metadata { fingerprint mfr:"001D", prod:"1D04", model:"0334", deviceJoinName: "Leviton Outlet" fingerprint mfr:"001D", prod:"1C02", model:"0334", deviceJoinName: "Leviton Switch" fingerprint mfr:"001D", prod:"0301", model:"0334", deviceJoinName: "Leviton 15A Switch" + fingerprint mfr:"001D", prod:"0F01", model:"0334", deviceJoinName: "Leviton 5A Incandescent Switch" + fingerprint mfr:"001D", prod:"1603", model:"0334", deviceJoinName: "Leviton 15A Split Duplex Receptacle" fingerprint mfr:"011A", prod:"0101", model:"0102", deviceJoinName: "Enerwave On/Off Switch" fingerprint mfr:"011A", prod:"0101", model:"0603", deviceJoinName: "Enerwave Duplex Receptacle" } From 6e28d83e963062b54e8a04da23858896ae1a5115 Mon Sep 17 00:00:00 2001 From: "piyush.c" Date: Tue, 17 Jan 2017 12:05:13 +0530 Subject: [PATCH 02/10] [CHF-477] Health Check implementation for Z-Wave Dimmer Switch Generic --- .../zwave-dimmer-switch-generic.src/README.md | 13 ++++++++++++- .../zwave-dimmer-switch-generic.groovy | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/devicetypes/smartthings/zwave-dimmer-switch-generic.src/README.md b/devicetypes/smartthings/zwave-dimmer-switch-generic.src/README.md index d959894..a76bbd7 100644 --- a/devicetypes/smartthings/zwave-dimmer-switch-generic.src/README.md +++ b/devicetypes/smartthings/zwave-dimmer-switch-generic.src/README.md @@ -6,6 +6,12 @@ Works with: * [Leviton Plug-in Lamp Dimmer Module (DZPD3-1LW)](https://www.smartthings.com/works-with-smartthings/outlets/leviton-plug-in-lamp-dimmer-module) * [Leviton Universal Dimmer (DZMX1-LZ)](https://www.smartthings.com/works-with-smartthings/switches-and-dimmers/leviton-universal-dimmer) +* [Leviton 1000W Incandescent Dimmer](https://www.smartthings.com/works-with-smartthings/leviton/leviton-1000w-incandescent-dimmer) +* [Leviton 600W Incandescent Dimmer](https://www.smartthings.com/works-with-smartthings/leviton/leviton-600w-incandescent-dimmer) +* [Enerwave In-Wall Dimmer](https://www.smartthings.com/works-with-smartthings/enerwave/enerwave-in-wall-dimmer-zw500d) +* [Leviton 3-Speed Fan Controller](https://www.smartthings.com/works-with-smartthings/leviton/leviton-3-speed-fan-controller) +* [Leviton Magnetic Low Voltage Dimmer](https://www.smartthings.com/works-with-smartthings/leviton/leviton-magnetic-low-voltage-dimmer) +* [Remotec Technology Plug-In Dimmer](https://www.smartthings.com/works-with-smartthings/remotec-technology/remotec-technology-plug-in-dimmer) ## Table of contents @@ -40,4 +46,9 @@ If the device doesn't pair when trying from the SmartThings mobile app, it is po 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: * [Leviton Plug-in Lamp Dimmer Module (DZPD3-1LW) Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/206171053-How-to-connect-Leviton-Z-Wave-devices) -* [Leviton Universal Dimmer (DZMX1-LZ) Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/206171053-How-to-connect-Leviton-Z-Wave-devices) \ No newline at end of file +* [Leviton Universal Dimmer (DZMX1-LZ) Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/206171053-How-to-connect-Leviton-Z-Wave-devices) +* [Leviton 1000W Incandescent Dimmer Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/206171053-How-to-connect-Leviton-Z-Wave-devices) +* [Leviton 600W Incandescent Dimmer Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/206171053-How-to-connect-Leviton-Z-Wave-devices) +* [Leviton 3-Speed Fan Controller Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/206171053-How-to-connect-Leviton-Z-Wave-devices) +* [Enerwave In-Wall Dimmer Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/204854176-How-to-connect-Enerwave-switches-and-dimmers) +* [Remotec Technology Plug-In Dimmer Troubleshooting Tips](https://support.smartthings.com/hc/en-us/articles/202295150-Remotec-Technology-Plug-In-Dimmer-ZDS-100-) \ No newline at end of file diff --git a/devicetypes/smartthings/zwave-dimmer-switch-generic.src/zwave-dimmer-switch-generic.groovy b/devicetypes/smartthings/zwave-dimmer-switch-generic.src/zwave-dimmer-switch-generic.groovy index 841fac5..b95ff35 100644 --- a/devicetypes/smartthings/zwave-dimmer-switch-generic.src/zwave-dimmer-switch-generic.groovy +++ b/devicetypes/smartthings/zwave-dimmer-switch-generic.src/zwave-dimmer-switch-generic.groovy @@ -28,6 +28,8 @@ metadata { fingerprint mfr:"001D", prod:"1001", model:"0334", deviceJoinName: "Leviton 3-Speed Fan Controller" fingerprint mfr:"001D", prod:"0602", model:"0334", deviceJoinName: "Leviton Magnetic Low Voltage Dimmer" fingerprint mfr:"001D", prod:"0401", model:"0334", deviceJoinName: "Leviton 600W Incandescent Dimmer" + fingerprint mfr:"0111", prod:"8200", model:"0200", deviceJoinName: "Remotec Technology Plug-In Dimmer" + fingerprint mfr:"1104", prod:"001D", model:"0501", deviceJoinName: "Leviton 1000W Incandescant Dimmer" } simulator { From bf454300618fc4c875accf8b799fa5af113b48bf Mon Sep 17 00:00:00 2001 From: "piyush.c" Date: Tue, 14 Feb 2017 15:01:17 +0530 Subject: [PATCH 03/10] [DVCSMP-2436] DTH Device Filtering change for Lifx Bulbs --- .../smartthings/lifx-color-bulb.src/lifx-color-bulb.groovy | 1 + .../smartthings/lifx-white-bulb.src/lifx-white-bulb.groovy | 1 + 2 files changed, 2 insertions(+) diff --git a/devicetypes/smartthings/lifx-color-bulb.src/lifx-color-bulb.groovy b/devicetypes/smartthings/lifx-color-bulb.src/lifx-color-bulb.groovy index 5ecfae0..5240c60 100644 --- a/devicetypes/smartthings/lifx-color-bulb.src/lifx-color-bulb.groovy +++ b/devicetypes/smartthings/lifx-color-bulb.src/lifx-color-bulb.groovy @@ -14,6 +14,7 @@ metadata { capability "Refresh" capability "Sensor" capability "Health Check" + capability "Light" } simulator { diff --git a/devicetypes/smartthings/lifx-white-bulb.src/lifx-white-bulb.groovy b/devicetypes/smartthings/lifx-white-bulb.src/lifx-white-bulb.groovy index 16e7c57..bc559c8 100644 --- a/devicetypes/smartthings/lifx-white-bulb.src/lifx-white-bulb.groovy +++ b/devicetypes/smartthings/lifx-white-bulb.src/lifx-white-bulb.groovy @@ -13,6 +13,7 @@ metadata { capability "Refresh" capability "Sensor" capability "Health Check" + capability "Light" } simulator { From 1263b72a725b2ebef4ed5902ea3cb0d0c9a1b10c Mon Sep 17 00:00:00 2001 From: "sushant.k1" Date: Tue, 14 Feb 2017 15:13:28 +0530 Subject: [PATCH 04/10] [DVCSMP-2433] Adding "Light" capability to the following Z-wave DTHs: 1. Z-Wave Metering Dimmer 2. Z-Wave Metering Switch 3. Z-Wave Dimmer Switch Generic 4. Z-Wave Switch 5. Z-Wave Switch Generic 6. MimoLite Garage Door Controller --- .../mimolite-garage-door-controller.groovy | 1 + .../zwave-dimmer-switch-generic.groovy | 1 + .../zwave-metering-dimmer.src/zwave-metering-dimmer.groovy | 1 + .../zwave-metering-switch.src/zwave-metering-switch.groovy | 1 + .../zwave-switch-generic.src/zwave-switch-generic.groovy | 1 + devicetypes/smartthings/zwave-switch.src/zwave-switch.groovy | 1 + 6 files changed, 6 insertions(+) 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 fb7407e..e21832c 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 @@ -36,6 +36,7 @@ metadata { capability "Switch" capability "Refresh" capability "Contact Sensor" + capability "Light" attribute "powered", "string" diff --git a/devicetypes/smartthings/zwave-dimmer-switch-generic.src/zwave-dimmer-switch-generic.groovy b/devicetypes/smartthings/zwave-dimmer-switch-generic.src/zwave-dimmer-switch-generic.groovy index b95ff35..498e438 100644 --- a/devicetypes/smartthings/zwave-dimmer-switch-generic.src/zwave-dimmer-switch-generic.groovy +++ b/devicetypes/smartthings/zwave-dimmer-switch-generic.src/zwave-dimmer-switch-generic.groovy @@ -20,6 +20,7 @@ metadata { capability "Polling" capability "Refresh" capability "Sensor" + capability "Light" fingerprint inClusters: "0x26", deviceJoinName: "Z-Wave Dimmer" fingerprint mfr:"001D", prod:"1902", deviceJoinName: "Z-Wave Dimmer" diff --git a/devicetypes/smartthings/zwave-metering-dimmer.src/zwave-metering-dimmer.groovy b/devicetypes/smartthings/zwave-metering-dimmer.src/zwave-metering-dimmer.groovy index 4631203..5e95f5a 100644 --- a/devicetypes/smartthings/zwave-metering-dimmer.src/zwave-metering-dimmer.groovy +++ b/devicetypes/smartthings/zwave-metering-dimmer.src/zwave-metering-dimmer.groovy @@ -25,6 +25,7 @@ metadata { capability "Switch Level" capability "Sensor" capability "Actuator" + capability "Light" command "reset" diff --git a/devicetypes/smartthings/zwave-metering-switch.src/zwave-metering-switch.groovy b/devicetypes/smartthings/zwave-metering-switch.src/zwave-metering-switch.groovy index 21ceb1b..7939170 100644 --- a/devicetypes/smartthings/zwave-metering-switch.src/zwave-metering-switch.groovy +++ b/devicetypes/smartthings/zwave-metering-switch.src/zwave-metering-switch.groovy @@ -21,6 +21,7 @@ metadata { capability "Refresh" capability "Configuration" capability "Sensor" + capability "Light" command "reset" diff --git a/devicetypes/smartthings/zwave-switch-generic.src/zwave-switch-generic.groovy b/devicetypes/smartthings/zwave-switch-generic.src/zwave-switch-generic.groovy index ef1134a..0eaab58 100644 --- a/devicetypes/smartthings/zwave-switch-generic.src/zwave-switch-generic.groovy +++ b/devicetypes/smartthings/zwave-switch-generic.src/zwave-switch-generic.groovy @@ -19,6 +19,7 @@ metadata { capability "Polling" capability "Refresh" capability "Sensor" + capability "Light" fingerprint inClusters: "0x25", deviceJoinName: "Z-Wave Switch" fingerprint mfr:"001D", prod:"1A02", model:"0334", deviceJoinName: "Leviton Appliance Module" diff --git a/devicetypes/smartthings/zwave-switch.src/zwave-switch.groovy b/devicetypes/smartthings/zwave-switch.src/zwave-switch.groovy index ac0f46d..e196a71 100644 --- a/devicetypes/smartthings/zwave-switch.src/zwave-switch.groovy +++ b/devicetypes/smartthings/zwave-switch.src/zwave-switch.groovy @@ -20,6 +20,7 @@ metadata { capability "Refresh" capability "Sensor" capability "Health Check" + capability "Light" fingerprint mfr:"0063", prod:"4952", deviceJoinName: "Z-Wave Wall Switch" fingerprint mfr:"0063", prod:"5257", deviceJoinName: "Z-Wave Wall Switch" From 7c5734b752f83c16ddffd0eeddafb16404f25775 Mon Sep 17 00:00:00 2001 From: "piyush.c" Date: Tue, 14 Feb 2017 15:26:50 +0530 Subject: [PATCH 05/10] [DVCSMP-2431] DTH Device Filtering change for ZigBee Devices --- devicetypes/smartthings/zigbee-dimmer-power.src/README.md | 1 + .../zigbee-dimmer-power.src/zigbee-dimmer-power.groovy | 1 + .../zigbee-switch-power.src/zigbee-switch-power.groovy | 1 + 3 files changed, 3 insertions(+) diff --git a/devicetypes/smartthings/zigbee-dimmer-power.src/README.md b/devicetypes/smartthings/zigbee-dimmer-power.src/README.md index 130f20c..196101f 100644 --- a/devicetypes/smartthings/zigbee-dimmer-power.src/README.md +++ b/devicetypes/smartthings/zigbee-dimmer-power.src/README.md @@ -23,6 +23,7 @@ Works with: * **Switch** - can detect state (possible values: on/off) * **Switch Level** - represents current light level, usually 0-100 in percent * **Health Check** - indicates ability to get device health notifications +* **Light** - indicates that the device belongs to Light category. ## Device Health diff --git a/devicetypes/smartthings/zigbee-dimmer-power.src/zigbee-dimmer-power.groovy b/devicetypes/smartthings/zigbee-dimmer-power.src/zigbee-dimmer-power.groovy index 4bef6a9..87f4a92 100644 --- a/devicetypes/smartthings/zigbee-dimmer-power.src/zigbee-dimmer-power.groovy +++ b/devicetypes/smartthings/zigbee-dimmer-power.src/zigbee-dimmer-power.groovy @@ -22,6 +22,7 @@ metadata { capability "Switch" capability "Switch Level" capability "Health Check" + capability "Light" fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0B04" fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0702" diff --git a/devicetypes/smartthings/zigbee-switch-power.src/zigbee-switch-power.groovy b/devicetypes/smartthings/zigbee-switch-power.src/zigbee-switch-power.groovy index c118fe6..8581252 100644 --- a/devicetypes/smartthings/zigbee-switch-power.src/zigbee-switch-power.groovy +++ b/devicetypes/smartthings/zigbee-switch-power.src/zigbee-switch-power.groovy @@ -21,6 +21,7 @@ metadata { capability "Sensor" capability "Switch" capability "Health Check" + capability "Light" fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0B04" fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0702" From 9b6e7d3be89ab094c9aea6895d2cd083c9d082b2 Mon Sep 17 00:00:00 2001 From: Lars Finander Date: Tue, 14 Feb 2017 11:23:27 -0700 Subject: [PATCH 06/10] ICP-280 Instruction for Phlips Hue -Added instructions to tell user to setup in Hue app first -Fix a null printout and some whitespace --- .../hue-connect.src/hue-connect.groovy | 67 ++++++++++--------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/smartapps/smartthings/hue-connect.src/hue-connect.groovy b/smartapps/smartthings/hue-connect.src/hue-connect.groovy index fe5a4f7..047a8dd 100644 --- a/smartapps/smartthings/hue-connect.src/hue-connect.groovy +++ b/smartapps/smartthings/hue-connect.src/hue-connect.groovy @@ -17,14 +17,14 @@ */ definition( - name: "Hue (Connect)", - namespace: "smartthings", - author: "SmartThings", - description: "Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Adjust colors by going to the Thing detail screen for your Hue lights (tap the gear on Hue tiles).\n\nPlease update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.", - category: "SmartThings Labs", - iconUrl: "https://s3.amazonaws.com/smartapp-icons/Partner/hue.png", - iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Partner/hue@2x.png", - singleInstance: true + name: "Hue (Connect)", + namespace: "smartthings", + author: "SmartThings", + description: "Allows you to connect your Philips Hue lights with SmartThings and control them from your Things area or Dashboard in the SmartThings Mobile app. Adjust colors by going to the Thing detail screen for your Hue lights (tap the gear on Hue tiles).\n\nPlease update your Hue Bridge first, outside of the SmartThings app, using the Philips Hue app.", + category: "SmartThings Labs", + iconUrl: "https://s3.amazonaws.com/smartapp-icons/Partner/hue.png", + iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Partner/hue@2x.png", + singleInstance: true ) preferences { @@ -85,7 +85,8 @@ def bridgeDiscovery(params=[:]) } return dynamicPage(name:"bridgeDiscovery", title:"Discovery Started!", nextPage:"bridgeBtnPush", refreshInterval:refreshInterval, uninstall: true) { - section("Please wait while we discover your Hue Bridge. Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.") { + section("Please wait while we discover your Hue Bridge. Kindly note that you must first configure your Hue Bridge and Lights using the Philips Hue application. " + + "Discovery can take five minutes or more, so sit back and relax! Select your device below once discovered.") { input "selectedHue", "enum", required:false, title:"Select Hue Bridge (${numFound} found)", multiple:false, options:options, submitOnChange: true } } @@ -178,7 +179,7 @@ def bulbDiscovery() { } if (bulbRefreshCount > 200 && numFound == 0) { - // Time out to avoid endless discovery + // Time out after 10 minutes state.inBulbDiscovery = false bulbRefreshCount = 0 return dynamicPage(name:"bulbDiscovery", title:"Light Discovery Failed!", nextPage:"", refreshInterval:0, install:true, uninstall: true) { @@ -216,32 +217,32 @@ private sendDeveloperReq() { def token = app.id def host = getBridgeIP() sendHubCommand(new physicalgraph.device.HubAction([ - method: "POST", - path: "/api", - headers: [ - HOST: host - ], - body: [devicetype: "$token-0"]], "${selectedHue}", [callback: "usernameHandler"])) + method: "POST", + path: "/api", + headers: [ + HOST: host + ], + body: [devicetype: "$token-0"]], "${selectedHue}", [callback: "usernameHandler"])) } private discoverHueBulbs() { def host = getBridgeIP() sendHubCommand(new physicalgraph.device.HubAction([ - method: "GET", - path: "/api/${state.username}/lights", - headers: [ - HOST: host - ]], "${selectedHue}", [callback: "lightsHandler"])) + method: "GET", + path: "/api/${state.username}/lights", + headers: [ + HOST: host + ]], "${selectedHue}", [callback: "lightsHandler"])) } private verifyHueBridge(String deviceNetworkId, String host) { log.trace "Verify Hue Bridge $deviceNetworkId" sendHubCommand(new physicalgraph.device.HubAction([ - method: "GET", - path: "/description.xml", - headers: [ - HOST: host - ]], deviceNetworkId, [callback: "bridgeDescriptionHandler"])) + method: "GET", + path: "/description.xml", + headers: [ + HOST: host + ]], deviceNetworkId, [callback: "bridgeDescriptionHandler"])) } private verifyHueBridges() { @@ -399,7 +400,7 @@ def addBulbs() { log.debug "$dni in not longer paired to the Hue Bridge or ID changed" } } else { - //backwards compatable + //backwards compatable newHueBulb = bulbs.find { (app.id + "/" + it.id) == dni } d = addChildBulb(dni, "Extended Color Light", newHueBulb?.value?.name, newHueBulb?.value?.hub) d?.completedSetup = true @@ -1151,7 +1152,7 @@ def setColorTemperature(childDevice, huesettings) { def ct = hueSettings == 6500 ? 153 : Math.round(1000000/huesettings) createSwitchEvent(childDevice, "on") put("lights/$id/state", [ct: ct, on: true]) - return "Setting color temperature to $percent" + return "Setting color temperature to $ct" } def setColor(childDevice, huesettings) { @@ -1226,7 +1227,7 @@ private poll() { def uri = "/api/${state.username}/lights/" log.debug "GET: $host$uri" sendHubCommand(new physicalgraph.device.HubAction("GET ${uri} HTTP/1.1\r\n" + - "HOST: ${host}\r\n\r\n", physicalgraph.device.Protocol.LAN, selectedHue)) + "HOST: ${host}\r\n\r\n", physicalgraph.device.Protocol.LAN, selectedHue)) } private isOnline(id) { @@ -1243,10 +1244,10 @@ private put(path, body) { log.debug "BODY: ${bodyJSON}" sendHubCommand(new physicalgraph.device.HubAction("PUT $uri HTTP/1.1\r\n" + - "HOST: ${host}\r\n" + - "Content-Length: ${length}\r\n" + - "\r\n" + - "${bodyJSON}", physicalgraph.device.Protocol.LAN, "${selectedHue}")) + "HOST: ${host}\r\n" + + "Content-Length: ${length}\r\n" + + "\r\n" + + "${bodyJSON}", physicalgraph.device.Protocol.LAN, "${selectedHue}")) } /* From c6d6ba85f55ffd71a44fa1d84bbc711217887677 Mon Sep 17 00:00:00 2001 From: Zach Varberg Date: Wed, 15 Feb 2017 13:22:43 -0600 Subject: [PATCH 07/10] Properly create event for outlet power We were not properly creating the event before returning it, causing us to not actually generate the power event. This resolves: https://smartthings.atlassian.net/browse/PROB-1518 --- .../smartpower-dimming-outlet.groovy | 3 ++- .../smartpower-outlet.src/smartpower-outlet.groovy | 7 +++---- 2 files changed, 5 insertions(+), 5 deletions(-) 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 80ca040..7b1117f 100644 --- a/devicetypes/smartthings/smartpower-dimming-outlet.src/smartpower-dimming-outlet.groovy +++ b/devicetypes/smartthings/smartpower-dimming-outlet.src/smartpower-dimming-outlet.groovy @@ -79,7 +79,8 @@ def parse(String description) { */ event.value = event.value / 10 } - return event + + return event ? createEvent(event) : event } def setLevel(value) { diff --git a/devicetypes/smartthings/smartpower-outlet.src/smartpower-outlet.groovy b/devicetypes/smartthings/smartpower-outlet.src/smartpower-outlet.groovy index 7561c63..0261b47 100644 --- a/devicetypes/smartthings/smartpower-outlet.src/smartpower-outlet.groovy +++ b/devicetypes/smartthings/smartpower-outlet.src/smartpower-outlet.groovy @@ -83,9 +83,8 @@ def parse(String description) { if (event) { if (event.name == "power") { - event.value = event.value / 10 - event.descriptionText = '{{ device.displayName }} power is {{ value }} Watts' - event.translatable = true + def value = (event.value as Integer) / 10 + event = createEvent(name: event.name, value: value, descriptionText: '{{ device.displayName }} power is {{ value }} Watts', translatable: true) } else if (event.name == "switch") { def descriptionText = event.value == "on" ? '{{ device.displayName }} is On' : '{{ device.displayName }} is Off' event = createEvent(name: event.name, value: event.value, descriptionText: descriptionText, translatable: true) @@ -106,7 +105,7 @@ def parse(String description) { log.debug "${cluster}" } } - return event + return event ? createEvent(event) : event } def off() { From bcc680ee5d93e5a161a422af358d8d2e000abcee Mon Sep 17 00:00:00 2001 From: juano2310 Date: Fri, 10 Feb 2017 19:36:39 -0500 Subject: [PATCH 08/10] DVCSMP-2425 - LIFX Exceptions Adding comment --- .../lifx-connect.src/lifx-connect.groovy | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/smartapps/smartthings/lifx-connect.src/lifx-connect.groovy b/smartapps/smartthings/lifx-connect.src/lifx-connect.groovy index 7a4afe7..734889f 100644 --- a/smartapps/smartthings/lifx-connect.src/lifx-connect.groovy +++ b/smartapps/smartthings/lifx-connect.src/lifx-connect.groovy @@ -346,7 +346,7 @@ def devicesList(selector = '') { if (resp.status == 200) { return resp.data } else { - log.error("Non-200 from device list call. ${resp.status} ${resp.data}") + log.debug("No response from device list call. ${resp.status} ${resp.data}") return [] } } @@ -418,9 +418,15 @@ def updateDevices() { } getChildDevices().findAll { !selectors.contains("${it.deviceNetworkId}") }.each { log.info("Deleting ${it.deviceNetworkId}") - state.devices[it.deviceNetworkId] = null - deleteChildDevice(it.deviceNetworkId) + if (state.devices[it.deviceNetworkId]) + state.devices[it.deviceNetworkId] = null + // The reason the implementation is trying to delete this bulb is because it is not longer connected to the LIFX location. + // Adding "try" will prevent this exception from happening. + // Ideally device health would show to the user that the device is not longer accessible so that the user can either force delete it or remove it from the SmartApp. + try { + deleteChildDevice(it.deviceNetworkId) + } catch (Exception e) { + log.debug("Can't remove this device because it's being used by an SmartApp") + } } } - - From 649ed033d0abf9f9e76fd6f8d7fdab7898a7970f Mon Sep 17 00:00:00 2001 From: Scott Vlaminck Date: Tue, 21 Feb 2017 11:07:51 -0600 Subject: [PATCH 09/10] add Outlet capability --- .../smartpower-dimming-outlet.groovy | 1 + .../smartpower-outlet-v1.src/smartpower-outlet-v1.groovy | 1 + 2 files changed, 2 insertions(+) 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 80ca040..ac72846 100644 --- a/devicetypes/smartthings/smartpower-dimming-outlet.src/smartpower-dimming-outlet.groovy +++ b/devicetypes/smartthings/smartpower-dimming-outlet.src/smartpower-dimming-outlet.groovy @@ -24,6 +24,7 @@ metadata { capability "Refresh" capability "Actuator" capability "Sensor" + capability "Outlet" fingerprint profileId: "0104", inClusters: "0000,0003,0004,0005,0006,0008,0B04,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "4257050-ZHAC" diff --git a/devicetypes/smartthings/smartpower-outlet-v1.src/smartpower-outlet-v1.groovy b/devicetypes/smartthings/smartpower-outlet-v1.src/smartpower-outlet-v1.groovy index 4be7bce..9df0a7f 100644 --- a/devicetypes/smartthings/smartpower-outlet-v1.src/smartpower-outlet-v1.groovy +++ b/devicetypes/smartthings/smartpower-outlet-v1.src/smartpower-outlet-v1.groovy @@ -4,6 +4,7 @@ metadata { capability "Actuator" capability "Switch" capability "Sensor" + capability "Outlet" fingerprint profileId: "0104", inClusters: "0006, 0004, 0003, 0000, 0005", outClusters: "0019", manufacturer: "Compacta International, Ltd", model: "ZBMPlug15", deviceJoinName: "SmartPower Outlet V1" } From 34f77a2989d6b01d73b5565aabee5c8bd3c0f4bd Mon Sep 17 00:00:00 2001 From: Scott Vlaminck Date: Tue, 21 Feb 2017 13:42:19 -0600 Subject: [PATCH 10/10] update Hue Bridge to use new Bridge marker capability --- devicetypes/smartthings/hue-bridge.src/hue-bridge.groovy | 1 + 1 file changed, 1 insertion(+) diff --git a/devicetypes/smartthings/hue-bridge.src/hue-bridge.groovy b/devicetypes/smartthings/hue-bridge.src/hue-bridge.groovy index e7fbce1..55b3841 100644 --- a/devicetypes/smartthings/hue-bridge.src/hue-bridge.groovy +++ b/devicetypes/smartthings/hue-bridge.src/hue-bridge.groovy @@ -7,6 +7,7 @@ metadata { // Automatically generated. Make future change here. definition (name: "Hue Bridge", namespace: "smartthings", author: "SmartThings") { + capability "Bridge" capability "Health Check" attribute "networkAddress", "string"