From 35cfd1bc27a60a6f80bdfc54881774bfe85787e0 Mon Sep 17 00:00:00 2001 From: Vinay Rao Date: Fri, 21 Aug 2015 09:56:34 -0700 Subject: [PATCH] Adding enroll changes to the open-close sensors --- .../smartsense-moisture-sensor.groovy | 5 +- .../smartsense-motion-sensor.groovy | 1 - .../smartsense-motion-temp-sensor.groovy | 1 - .../smartsense-multi-sensor.groovy | 1 - ...se-open-closed-accelerometer-sensor.groovy | 51 +++++++++++-------- .../smartsense-open-closed-sensor.groovy | 49 ++++++++++-------- 6 files changed, 60 insertions(+), 48 deletions(-) diff --git a/devicetypes/smartthings/smartsense-moisture-sensor.src/smartsense-moisture-sensor.groovy b/devicetypes/smartthings/smartsense-moisture-sensor.src/smartsense-moisture-sensor.groovy index 62520de..a2e3c2e 100644 --- a/devicetypes/smartthings/smartsense-moisture-sensor.src/smartsense-moisture-sensor.groovy +++ b/devicetypes/smartthings/smartsense-moisture-sensor.src/smartsense-moisture-sensor.groovy @@ -22,8 +22,8 @@ metadata { capability "Water Sensor" command "enrollResponse" - - + + fingerprint inClusters: "0000,0001,0003,0402,0500,0020,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "3315-S" fingerprint inClusters: "0000,0001,0003,0402,0500,0020,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "3315" fingerprint inClusters: "0000,0001,0003,0402,0500,0020,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "3315-Seu" @@ -290,7 +290,6 @@ def enrollResponse() { String zigbeeEui = swapEndianHex(device.hub.zigbeeEui) [ //Resending the CIE in case the enroll request is sent before CIE is written - "zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 1 {${device.zigbeeId}} {}", "delay 200", "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}", "send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 500", //Enroll Response 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 e24887c..604e6e1 100644 --- a/devicetypes/smartthings/smartsense-motion-sensor.src/smartsense-motion-sensor.groovy +++ b/devicetypes/smartthings/smartsense-motion-sensor.src/smartsense-motion-sensor.groovy @@ -313,7 +313,6 @@ def enrollResponse() { String zigbeeEui = swapEndianHex(device.hub.zigbeeEui) [ //Resending the CIE in case the enroll request is sent before CIE is written - "zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 1 {${device.zigbeeId}} {}", "delay 200", "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}", "send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 500", //Enroll Response diff --git a/devicetypes/smartthings/smartsense-motion-temp-sensor.src/smartsense-motion-temp-sensor.groovy b/devicetypes/smartthings/smartsense-motion-temp-sensor.src/smartsense-motion-temp-sensor.groovy index 1a6e9cb..b3e0234 100644 --- a/devicetypes/smartthings/smartsense-motion-temp-sensor.src/smartsense-motion-temp-sensor.groovy +++ b/devicetypes/smartthings/smartsense-motion-temp-sensor.src/smartsense-motion-temp-sensor.groovy @@ -312,7 +312,6 @@ def enrollResponse() { String zigbeeEui = swapEndianHex(device.hub.zigbeeEui) [ //Resending the CIE in case the enroll request is sent before CIE is written - "zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 1 {${device.zigbeeId}} {}", "delay 200", "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}", "send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 500", //Enroll Response 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 cff5c9b..2608cce 100644 --- a/devicetypes/smartthings/smartsense-multi-sensor.src/smartsense-multi-sensor.groovy +++ b/devicetypes/smartthings/smartsense-multi-sensor.src/smartsense-multi-sensor.groovy @@ -397,7 +397,6 @@ def enrollResponse() { String zigbeeEui = swapEndianHex(device.hub.zigbeeEui) [ //Resending the CIE in case the enroll request is sent before CIE is written - "zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 1 {${device.zigbeeId}} {}", "delay 200", "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}", "send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 500", //Enroll Response diff --git a/devicetypes/smartthings/smartsense-open-closed-accelerometer-sensor.src/smartsense-open-closed-accelerometer-sensor.groovy b/devicetypes/smartthings/smartsense-open-closed-accelerometer-sensor.src/smartsense-open-closed-accelerometer-sensor.groovy index 8ef9a52..2582580 100644 --- a/devicetypes/smartthings/smartsense-open-closed-accelerometer-sensor.src/smartsense-open-closed-accelerometer-sensor.groovy +++ b/devicetypes/smartthings/smartsense-open-closed-accelerometer-sensor.src/smartsense-open-closed-accelerometer-sensor.groovy @@ -284,52 +284,61 @@ def getTemperature(value) { ] } - def refresh() - { + def refresh() { log.debug "Refreshing Temperature and Battery " - [ + def refreshCmds = [ "st rattr 0x${device.deviceNetworkId} 1 0x402 0", "delay 200", //"st rattr 0x${device.deviceNetworkId} 1 0xFC02 2", "delay 200", - "st rattr 0x${device.deviceNetworkId} 1 1 0x20" + "st rattr 0x${device.deviceNetworkId} 1 1 0x20", "delay 200" ] + + return refreshCmds + enrollResponse() } def configure() { - String zigbeeId = swapEndianHex(device.hub.zigbeeId) - log.debug "Confuguring Reporting, IAS CIE, and Bindings." + String zigbeeEui = swapEndianHex(device.hub.zigbeeEui) + log.debug "Configuring Reporting, IAS CIE, and Bindings." def configCmds = [ - "zcl global write 0x500 0x10 0xf0 {${zigbeeId}}", "delay 200", - "send 0x${device.deviceNetworkId} 1 1", "delay 1500", + "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}", + "send 0x${device.deviceNetworkId} 1 1", "delay 500", - "zcl global send-me-a-report 1 0x20 0x20 600 3600 {01}", "delay 200", - "send 0x${device.deviceNetworkId} 1 1", "delay 1500", + "zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 0x20 {${device.zigbeeId}} {}", "delay 200", + "zcl global send-me-a-report 1 0x20 0x20 600 3600 {01}", + "send 0x${device.deviceNetworkId} 1 1", "delay 500", - "zcl global send-me-a-report 0x402 0 0x29 300 3600 {6400}", "delay 200", - "send 0x${device.deviceNetworkId} 1 1", "delay 1500", - - "zcl global send-me-a-report 0xFC02 2 0x18 300 3600 {01}", "delay 200", - "send 0x${device.deviceNetworkId} 1 1", "delay 1500", + "zdo bind 0x${device.deviceNetworkId} 1 1 0x402 {${device.zigbeeId}} {}", "delay 500", + "zcl global send-me-a-report 0x402 0 0x29 300 3600 {6400}", + "send 0x${device.deviceNetworkId} 1 1", "delay 500", "zdo bind 0x${device.deviceNetworkId} 1 1 0xFC02 {${device.zigbeeId}} {}", "delay 500", - "zdo bind 0x${device.deviceNetworkId} 1 1 0x402 {${device.zigbeeId}} {}", "delay 500", - "zdo bind 0x${device.deviceNetworkId} 1 1 1 {${device.zigbeeId}} {}" + "zcl global send-me-a-report 0xFC02 2 0x18 300 3600 {01}", + "send 0x${device.deviceNetworkId} 1 1", "delay 500", + "zdo bind 0x${device.deviceNetworkId} 1 1 1 {${device.zigbeeId}} {}", "delay 500" ] return configCmds + refresh() // send refresh cmds as part of config } def enrollResponse() { log.debug "Sending enroll response" + String zigbeeEui = swapEndianHex(device.hub.zigbeeEui) [ - - "raw 0x500 {01 23 00 00 00}", "delay 200", - "send 0x${device.deviceNetworkId} 1 1" - + //Resending the CIE in case the enroll request is sent before CIE is written + "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}", + "send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 500", + //Enroll Response + "raw 0x500 {01 23 00 00 00}", + "send 0x${device.deviceNetworkId} 1 1", "delay 200" ] } + +private getEndpointId() { + new BigInteger(device.endpointId, 16).toString() +} + private hex(value) { new BigInteger(Math.round(value).toString()).toString(16) } diff --git a/devicetypes/smartthings/smartsense-open-closed-sensor.src/smartsense-open-closed-sensor.groovy b/devicetypes/smartthings/smartsense-open-closed-sensor.src/smartsense-open-closed-sensor.groovy index 4b2c8a0..cde1438 100644 --- a/devicetypes/smartthings/smartsense-open-closed-sensor.src/smartsense-open-closed-sensor.groovy +++ b/devicetypes/smartthings/smartsense-open-closed-sensor.src/smartsense-open-closed-sensor.groovy @@ -260,30 +260,29 @@ private Map getContactResult(value) { ] } -def refresh() -{ +def refresh() { log.debug "Refreshing Temperature and Battery" - [ - + def refreshCmds = [ "st rattr 0x${device.deviceNetworkId} 1 0x402 0", "delay 200", - "st rattr 0x${device.deviceNetworkId} 1 1 0x20" - + "st rattr 0x${device.deviceNetworkId} 1 1 0x20", "delay 200" ] + + return refreshCmds + enrollResponse() } def configure() { - String zigbeeId = swapEndianHex(device.hub.zigbeeId) - log.debug "Confuguring Reporting, IAS CIE, and Bindings." + String zigbeeEui = swapEndianHex(device.hub.zigbeeEui) + log.debug "Configuring Reporting, IAS CIE, and Bindings." def configCmds = [ - "zcl global write 0x500 0x10 0xf0 {${zigbeeId}}", "delay 200", - "send 0x${device.deviceNetworkId} 1 1", "delay 1500", + "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}", + "send 0x${device.deviceNetworkId} 1 1", "delay 500", - "zcl global send-me-a-report 1 0x20 0x20 600 3600 {01}", "delay 200", - "send 0x${device.deviceNetworkId} 1 1", "delay 1500", + "zcl global send-me-a-report 1 0x20 0x20 600 3600 {01}", + "send 0x${device.deviceNetworkId} 1 1", "delay 500", - "zcl global send-me-a-report 0x402 0 0x29 300 3600 {6400}", "delay 200", - "send 0x${device.deviceNetworkId} 1 1", "delay 1500", + "zcl global send-me-a-report 0x402 0 0x29 300 3600 {6400}", + "send 0x${device.deviceNetworkId} 1 1", "delay 500", //"raw 0x500 {01 23 00 00 00}", "delay 200", @@ -291,20 +290,28 @@ def configure() { "zdo bind 0x${device.deviceNetworkId} 1 1 0x402 {${device.zigbeeId}} {}", "delay 500", - "zdo bind 0x${device.deviceNetworkId} 1 1 1 {${device.zigbeeId}} {}" + "zdo bind 0x${device.deviceNetworkId} 1 1 1 {${device.zigbeeId}} {}", "delay 500" ] return configCmds + refresh() // send refresh cmds as part of config } def enrollResponse() { log.debug "Sending enroll response" - [ - - "raw 0x500 {01 23 00 00 00}", "delay 200", - "send 0x${device.deviceNetworkId} 1 1" - - ] + String zigbeeEui = swapEndianHex(device.hub.zigbeeEui) + [ + //Resending the CIE in case the enroll request is sent before CIE is written + "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}", + "send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 500", + //Enroll Response + "raw 0x500 {01 23 00 00 00}", + "send 0x${device.deviceNetworkId} 1 1", "delay 200" + ] } + +private getEndpointId() { + new BigInteger(device.endpointId, 16).toString() +} + private hex(value) { new BigInteger(Math.round(value).toString()).toString(16) }