Compare commits

...

24 Commits

Author SHA1 Message Date
Vinay Rao
2151e2dd3e Merge pull request #1706 from SmartThingsCommunity/staging
Rolling up staging to production for deploy
2017-02-22 13:44:57 -08:00
Vinay Rao
ccb7b6e49d Merge pull request #1703 from scottvlaminck/hue_bridge_use_bridge_cap
CON-79 Update Hue Bridge to use new Bridge marker capability
2017-02-21 12:29:28 -08:00
Scott Vlaminck
34f77a2989 update Hue Bridge to use new Bridge marker capability 2017-02-21 13:42:19 -06:00
Vinay Rao
318cdedaec Merge pull request #1702 from scottvlaminck/add_outlet_capability
add Outlet capability
2017-02-21 10:28:12 -08:00
Scott Vlaminck
649ed033d0 add Outlet capability 2017-02-21 11:07:51 -06:00
Vinay Rao
843d8800ac Merge pull request #1662 from juano2310/LIFX_exceptions
DVCSMP-2425 - LIFX Exceptions
2017-02-15 15:24:24 -08:00
juano2310
bcc680ee5d DVCSMP-2425 - LIFX Exceptions
Adding comment
2017-02-15 18:21:26 -05:00
Vinay Rao
245e85f850 Merge pull request #1680 from varzac/fix-smartpower-outlet-power-usage
[PROB-1518] Properly create event for outlet power
2017-02-15 14:11:05 -08:00
Vinay Rao
af16720528 Merge pull request #1681 from SmartThingsCommunity/master
Rolling up master to staging
2017-02-15 13:58:58 -08:00
Zach Varberg
c6d6ba85f5 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
2017-02-15 13:49:47 -06:00
Jack Chi
51832c8db2 Merge pull request #1671 from skt123/zwave_device_filtering
[DVCSMP-2433] Device Filtering change for Z-wave devices
2017-02-14 15:14:07 -08:00
Jack Chi
f001eb0792 Merge pull request #1672 from pchomal/devicefiltering1
[DVCSMP-2431] DTH Device Filtering change for ZigBee Devices
2017-02-14 15:13:26 -08:00
Vinay Rao
81550ee25c Merge pull request #1673 from larsfinander/ICP-280_Instruction_for_Phlips_Hue_staging
ICP-280 Instruction for Phlips Hue
2017-02-14 13:58:38 -08:00
Vinay Rao
1cc9d8a90b Merge pull request #1675 from SmartThingsCommunity/master
Rolling up master to staging
2017-02-14 12:11:03 -08:00
Lars Finander
9b6e7d3be8 ICP-280 Instruction for Phlips Hue
-Added instructions to tell user to setup in Hue app first
-Fix a null printout and some whitespace
2017-02-14 11:23:27 -07:00
piyush.c
7c5734b752 [DVCSMP-2431] DTH Device Filtering change for ZigBee Devices 2017-02-14 15:26:50 +05:30
Jack Chi
2a3c393534 Merge pull request #1670 from pchomal/devicefiltering1
[DVCSMP-2436] DTH Device Filtering change for Lifx Bulbs
2017-02-14 01:53:48 -08:00
Jack Chi
91763e7b4d Merge pull request #1591 from parijatdas/leviton_receptacle
[CHF-504] [CHF-505] Implementation of HealthCheck for Leviton 5A Incandescent Switch (VRS05-1LZ) and Leviton 15A Split Duplex Receptacle (VRR15-1LZ)
2017-02-14 01:52:34 -08:00
sushant.k1
1263b72a72 [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
2017-02-14 15:13:28 +05:30
piyush.c
bf45430061 [DVCSMP-2436] DTH Device Filtering change for Lifx Bulbs 2017-02-14 15:01:17 +05:30
Jack Chi
054ccbeffe Merge pull request #1590 from pchomal/dimmerswitch_generic
[CHF-477] Health Check implementation for Z-Wave Dimmer Switch Generic
2017-02-13 14:22:54 -08:00
piyush.c
6e28d83e96 [CHF-477]
Health Check implementation for Z-Wave Dimmer Switch Generic
2017-02-13 12:36:32 +05:30
Vinay Rao
2d82b05f90 Merge pull request #1660 from SmartThingsCommunity/staging
Rolling down staging hotfixes to master
2017-02-09 17:54:06 -06:00
Parijat Das
61356ec8a7 Added fingerprints for the following devices:
1. Leviton 5A Incandescent Switch (VRS05-1LZ)
2. Leviton 15A Split Duplex Receptacle (VRR15-1LZ)
2017-01-17 19:17:41 +05:30
18 changed files with 80 additions and 44 deletions

View File

@@ -7,6 +7,7 @@
metadata { metadata {
// Automatically generated. Make future change here. // Automatically generated. Make future change here.
definition (name: "Hue Bridge", namespace: "smartthings", author: "SmartThings") { definition (name: "Hue Bridge", namespace: "smartthings", author: "SmartThings") {
capability "Bridge"
capability "Health Check" capability "Health Check"
attribute "networkAddress", "string" attribute "networkAddress", "string"

View File

@@ -14,6 +14,7 @@ metadata {
capability "Refresh" capability "Refresh"
capability "Sensor" capability "Sensor"
capability "Health Check" capability "Health Check"
capability "Light"
} }
simulator { simulator {

View File

@@ -13,6 +13,7 @@ metadata {
capability "Refresh" capability "Refresh"
capability "Sensor" capability "Sensor"
capability "Health Check" capability "Health Check"
capability "Light"
} }
simulator { simulator {

View File

@@ -36,6 +36,7 @@ metadata {
capability "Switch" capability "Switch"
capability "Refresh" capability "Refresh"
capability "Contact Sensor" capability "Contact Sensor"
capability "Light"
attribute "powered", "string" attribute "powered", "string"

View File

@@ -24,6 +24,7 @@ metadata {
capability "Refresh" capability "Refresh"
capability "Actuator" capability "Actuator"
capability "Sensor" capability "Sensor"
capability "Outlet"
fingerprint profileId: "0104", inClusters: "0000,0003,0004,0005,0006,0008,0B04,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "4257050-ZHAC" fingerprint profileId: "0104", inClusters: "0000,0003,0004,0005,0006,0008,0B04,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "4257050-ZHAC"
@@ -79,7 +80,8 @@ def parse(String description) {
*/ */
event.value = event.value / 10 event.value = event.value / 10
} }
return event
return event ? createEvent(event) : event
} }
def setLevel(value) { def setLevel(value) {

View File

@@ -4,6 +4,7 @@ metadata {
capability "Actuator" capability "Actuator"
capability "Switch" capability "Switch"
capability "Sensor" 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" fingerprint profileId: "0104", inClusters: "0006, 0004, 0003, 0000, 0005", outClusters: "0019", manufacturer: "Compacta International, Ltd", model: "ZBMPlug15", deviceJoinName: "SmartPower Outlet V1"
} }

View File

@@ -83,9 +83,8 @@ def parse(String description) {
if (event) { if (event) {
if (event.name == "power") { if (event.name == "power") {
event.value = event.value / 10 def value = (event.value as Integer) / 10
event.descriptionText = '{{ device.displayName }} power is {{ value }} Watts' event = createEvent(name: event.name, value: value, descriptionText: '{{ device.displayName }} power is {{ value }} Watts', translatable: true)
event.translatable = true
} else if (event.name == "switch") { } else if (event.name == "switch") {
def descriptionText = event.value == "on" ? '{{ device.displayName }} is On' : '{{ device.displayName }} is Off' 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) event = createEvent(name: event.name, value: event.value, descriptionText: descriptionText, translatable: true)
@@ -106,7 +105,7 @@ def parse(String description) {
log.debug "${cluster}" log.debug "${cluster}"
} }
} }
return event return event ? createEvent(event) : event
} }
def off() { def off() {

View File

@@ -23,6 +23,7 @@ Works with:
* **Switch** - can detect state (possible values: on/off) * **Switch** - can detect state (possible values: on/off)
* **Switch Level** - represents current light level, usually 0-100 in percent * **Switch Level** - represents current light level, usually 0-100 in percent
* **Health Check** - indicates ability to get device health notifications * **Health Check** - indicates ability to get device health notifications
* **Light** - indicates that the device belongs to Light category.
## Device Health ## Device Health

View File

@@ -22,6 +22,7 @@ metadata {
capability "Switch" capability "Switch"
capability "Switch Level" capability "Switch Level"
capability "Health Check" 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, 0B04"
fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0702" fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0008, 0702"

View File

@@ -21,6 +21,7 @@ metadata {
capability "Sensor" capability "Sensor"
capability "Switch" capability "Switch"
capability "Health Check" capability "Health Check"
capability "Light"
fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0B04" fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0B04"
fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0702" fingerprint profileId: "0104", inClusters: "0000, 0003, 0004, 0005, 0006, 0702"

View File

@@ -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 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 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 ## 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. 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: 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 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) * [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-)

View File

@@ -20,6 +20,7 @@ metadata {
capability "Polling" capability "Polling"
capability "Refresh" capability "Refresh"
capability "Sensor" capability "Sensor"
capability "Light"
fingerprint inClusters: "0x26", deviceJoinName: "Z-Wave Dimmer" fingerprint inClusters: "0x26", deviceJoinName: "Z-Wave Dimmer"
fingerprint mfr:"001D", prod:"1902", deviceJoinName: "Z-Wave Dimmer" fingerprint mfr:"001D", prod:"1902", deviceJoinName: "Z-Wave Dimmer"
@@ -28,6 +29,8 @@ metadata {
fingerprint mfr:"001D", prod:"1001", model:"0334", deviceJoinName: "Leviton 3-Speed Fan Controller" 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:"0602", model:"0334", deviceJoinName: "Leviton Magnetic Low Voltage Dimmer"
fingerprint mfr:"001D", prod:"0401", model:"0334", deviceJoinName: "Leviton 600W Incandescent 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 { simulator {

View File

@@ -25,6 +25,7 @@ metadata {
capability "Switch Level" capability "Switch Level"
capability "Sensor" capability "Sensor"
capability "Actuator" capability "Actuator"
capability "Light"
command "reset" command "reset"

View File

@@ -21,6 +21,7 @@ metadata {
capability "Refresh" capability "Refresh"
capability "Configuration" capability "Configuration"
capability "Sensor" capability "Sensor"
capability "Light"
command "reset" command "reset"

View File

@@ -19,6 +19,7 @@ metadata {
capability "Polling" capability "Polling"
capability "Refresh" capability "Refresh"
capability "Sensor" capability "Sensor"
capability "Light"
fingerprint inClusters: "0x25", deviceJoinName: "Z-Wave Switch" fingerprint inClusters: "0x25", deviceJoinName: "Z-Wave Switch"
fingerprint mfr:"001D", prod:"1A02", model:"0334", deviceJoinName: "Leviton Appliance Module" fingerprint mfr:"001D", prod:"1A02", model:"0334", deviceJoinName: "Leviton Appliance Module"
@@ -26,6 +27,8 @@ metadata {
fingerprint mfr:"001D", prod:"1D04", model:"0334", deviceJoinName: "Leviton Outlet" fingerprint mfr:"001D", prod:"1D04", model:"0334", deviceJoinName: "Leviton Outlet"
fingerprint mfr:"001D", prod:"1C02", model:"0334", deviceJoinName: "Leviton Switch" 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:"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:"0102", deviceJoinName: "Enerwave On/Off Switch"
fingerprint mfr:"011A", prod:"0101", model:"0603", deviceJoinName: "Enerwave Duplex Receptacle" fingerprint mfr:"011A", prod:"0101", model:"0603", deviceJoinName: "Enerwave Duplex Receptacle"
} }

View File

@@ -20,6 +20,7 @@ metadata {
capability "Refresh" capability "Refresh"
capability "Sensor" capability "Sensor"
capability "Health Check" capability "Health Check"
capability "Light"
fingerprint mfr:"0063", prod:"4952", deviceJoinName: "Z-Wave Wall Switch" fingerprint mfr:"0063", prod:"4952", deviceJoinName: "Z-Wave Wall Switch"
fingerprint mfr:"0063", prod:"5257", deviceJoinName: "Z-Wave Wall Switch" fingerprint mfr:"0063", prod:"5257", deviceJoinName: "Z-Wave Wall Switch"

View File

@@ -17,14 +17,14 @@
*/ */
definition( definition(
name: "Hue (Connect)", name: "Hue (Connect)",
namespace: "smartthings", namespace: "smartthings",
author: "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.", 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", category: "SmartThings Labs",
iconUrl: "https://s3.amazonaws.com/smartapp-icons/Partner/hue.png", iconUrl: "https://s3.amazonaws.com/smartapp-icons/Partner/hue.png",
iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Partner/hue@2x.png", iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Partner/hue@2x.png",
singleInstance: true singleInstance: true
) )
preferences { preferences {
@@ -85,7 +85,8 @@ def bridgeDiscovery(params=[:])
} }
return dynamicPage(name:"bridgeDiscovery", title:"Discovery Started!", nextPage:"bridgeBtnPush", refreshInterval:refreshInterval, uninstall: true) { 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 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) { if (bulbRefreshCount > 200 && numFound == 0) {
// Time out to avoid endless discovery // Time out after 10 minutes
state.inBulbDiscovery = false state.inBulbDiscovery = false
bulbRefreshCount = 0 bulbRefreshCount = 0
return dynamicPage(name:"bulbDiscovery", title:"Light Discovery Failed!", nextPage:"", refreshInterval:0, install:true, uninstall: true) { 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 token = app.id
def host = getBridgeIP() def host = getBridgeIP()
sendHubCommand(new physicalgraph.device.HubAction([ sendHubCommand(new physicalgraph.device.HubAction([
method: "POST", method: "POST",
path: "/api", path: "/api",
headers: [ headers: [
HOST: host HOST: host
], ],
body: [devicetype: "$token-0"]], "${selectedHue}", [callback: "usernameHandler"])) body: [devicetype: "$token-0"]], "${selectedHue}", [callback: "usernameHandler"]))
} }
private discoverHueBulbs() { private discoverHueBulbs() {
def host = getBridgeIP() def host = getBridgeIP()
sendHubCommand(new physicalgraph.device.HubAction([ sendHubCommand(new physicalgraph.device.HubAction([
method: "GET", method: "GET",
path: "/api/${state.username}/lights", path: "/api/${state.username}/lights",
headers: [ headers: [
HOST: host HOST: host
]], "${selectedHue}", [callback: "lightsHandler"])) ]], "${selectedHue}", [callback: "lightsHandler"]))
} }
private verifyHueBridge(String deviceNetworkId, String host) { private verifyHueBridge(String deviceNetworkId, String host) {
log.trace "Verify Hue Bridge $deviceNetworkId" log.trace "Verify Hue Bridge $deviceNetworkId"
sendHubCommand(new physicalgraph.device.HubAction([ sendHubCommand(new physicalgraph.device.HubAction([
method: "GET", method: "GET",
path: "/description.xml", path: "/description.xml",
headers: [ headers: [
HOST: host HOST: host
]], deviceNetworkId, [callback: "bridgeDescriptionHandler"])) ]], deviceNetworkId, [callback: "bridgeDescriptionHandler"]))
} }
private verifyHueBridges() { private verifyHueBridges() {
@@ -399,7 +400,7 @@ def addBulbs() {
log.debug "$dni in not longer paired to the Hue Bridge or ID changed" log.debug "$dni in not longer paired to the Hue Bridge or ID changed"
} }
} else { } else {
//backwards compatable //backwards compatable
newHueBulb = bulbs.find { (app.id + "/" + it.id) == dni } newHueBulb = bulbs.find { (app.id + "/" + it.id) == dni }
d = addChildBulb(dni, "Extended Color Light", newHueBulb?.value?.name, newHueBulb?.value?.hub) d = addChildBulb(dni, "Extended Color Light", newHueBulb?.value?.name, newHueBulb?.value?.hub)
d?.completedSetup = true d?.completedSetup = true
@@ -1151,7 +1152,7 @@ def setColorTemperature(childDevice, huesettings) {
def ct = hueSettings == 6500 ? 153 : Math.round(1000000/huesettings) def ct = hueSettings == 6500 ? 153 : Math.round(1000000/huesettings)
createSwitchEvent(childDevice, "on") createSwitchEvent(childDevice, "on")
put("lights/$id/state", [ct: ct, on: true]) put("lights/$id/state", [ct: ct, on: true])
return "Setting color temperature to $percent" return "Setting color temperature to $ct"
} }
def setColor(childDevice, huesettings) { def setColor(childDevice, huesettings) {
@@ -1226,7 +1227,7 @@ private poll() {
def uri = "/api/${state.username}/lights/" def uri = "/api/${state.username}/lights/"
log.debug "GET: $host$uri" log.debug "GET: $host$uri"
sendHubCommand(new physicalgraph.device.HubAction("GET ${uri} HTTP/1.1\r\n" + 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) { private isOnline(id) {
@@ -1243,10 +1244,10 @@ private put(path, body) {
log.debug "BODY: ${bodyJSON}" log.debug "BODY: ${bodyJSON}"
sendHubCommand(new physicalgraph.device.HubAction("PUT $uri HTTP/1.1\r\n" + sendHubCommand(new physicalgraph.device.HubAction("PUT $uri HTTP/1.1\r\n" +
"HOST: ${host}\r\n" + "HOST: ${host}\r\n" +
"Content-Length: ${length}\r\n" + "Content-Length: ${length}\r\n" +
"\r\n" + "\r\n" +
"${bodyJSON}", physicalgraph.device.Protocol.LAN, "${selectedHue}")) "${bodyJSON}", physicalgraph.device.Protocol.LAN, "${selectedHue}"))
} }
/* /*

View File

@@ -346,7 +346,7 @@ def devicesList(selector = '') {
if (resp.status == 200) { if (resp.status == 200) {
return resp.data return resp.data
} else { } 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 [] return []
} }
} }
@@ -418,9 +418,15 @@ def updateDevices() {
} }
getChildDevices().findAll { !selectors.contains("${it.deviceNetworkId}") }.each { getChildDevices().findAll { !selectors.contains("${it.deviceNetworkId}") }.each {
log.info("Deleting ${it.deviceNetworkId}") log.info("Deleting ${it.deviceNetworkId}")
state.devices[it.deviceNetworkId] = null if (state.devices[it.deviceNetworkId])
deleteChildDevice(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")
}
} }
} }