Merge pull request #33 from workingmonk/enrollment_changes

Updating device types for v2 zigbee eui changes and enrollment changes
This commit is contained in:
Vinay Rao
2015-08-21 16:12:31 -07:00
6 changed files with 209 additions and 187 deletions

View File

@@ -255,52 +255,53 @@ private Map getMoistureResult(value) {
] ]
} }
def refresh() def refresh() {
{
log.debug "Refreshing Temperature and Battery" log.debug "Refreshing Temperature and Battery"
[ def refreshCmds = [
"st rattr 0x${device.deviceNetworkId} 1 0x402 0", "delay 200", "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() { def configure() {
String zigbeeEui = swapEndianHex(device.hub.zigbeeEui)
String zigbeeId = swapEndianHex(device.hub.zigbeeId) log.debug "Configuring Reporting, IAS CIE, and Bindings."
log.debug "Confuguring Reporting, IAS CIE, and Bindings."
def configCmds = [ def configCmds = [
"zcl global write 0x500 0x10 0xf0 {${zigbeeId}}", "delay 200", "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}", "delay 200",
"send 0x${device.deviceNetworkId} 1 1", "delay 1500", "send 0x${device.deviceNetworkId} 1 1", "delay 500",
"zcl global send-me-a-report 1 0x20 0x20 300 0600 {01}", "delay 200", "zcl global send-me-a-report 1 0x20 0x20 300 0600 {01}", "delay 200",
"send 0x${device.deviceNetworkId} 1 1", "delay 1500", "send 0x${device.deviceNetworkId} 1 1", "delay 500",
"zcl global send-me-a-report 0x402 0 0x29 300 3600 {6400}", "delay 200", "zcl global send-me-a-report 0x402 0 0x29 300 3600 {6400}", "delay 200",
"send 0x${device.deviceNetworkId} 1 1", "delay 1500", "send 0x${device.deviceNetworkId} 1 1", "delay 500",
"zdo bind 0x${device.deviceNetworkId} 1 1 0x402 {${device.zigbeeId}} {}", "delay 500", "zdo bind 0x${device.deviceNetworkId} 1 1 0x402 {${device.zigbeeId}} {}", "delay 500",
"zdo bind 0x${device.deviceNetworkId} 1 1 0x001 {${device.zigbeeId}} {}", "delay 1000", "zdo bind 0x${device.deviceNetworkId} 1 1 0x001 {${device.zigbeeId}} {}", "delay 500"
"raw 0x500 {01 23 00 00 00}", "delay 200",
"send 0x${device.deviceNetworkId} 1 1", "delay 1000",
] ]
return configCmds + refresh() // send refresh cmds as part of config return configCmds + refresh() // send refresh cmds as part of config
} }
def enrollResponse() { def enrollResponse() {
log.debug "Sending enroll response" log.debug "Sending enroll response"
String zigbeeEui = swapEndianHex(device.hub.zigbeeEui)
[ [
//Resending the CIE in case the enroll request is sent before CIE is written
"raw 0x500 {01 23 00 00 00}", "delay 200", "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}",
"send 0x${device.deviceNetworkId} 1 1" "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) { private hex(value) {
new BigInteger(Math.round(value).toString()).toString(16) new BigInteger(Math.round(value).toString()).toString(16)
} }

View File

@@ -137,10 +137,6 @@ private boolean shouldProcessMessage(cluster) {
return !ignoredMessage return !ignoredMessage
} }
private int getHumidity(value) {
return Math.round(Double.parseDouble(value))
}
private Map parseReportAttributeMessage(String description) { private Map parseReportAttributeMessage(String description) {
Map descMap = (description - "read attr - ").split(",").inject([:]) { map, param -> Map descMap = (description - "read attr - ").split(",").inject([:]) { map, param ->
def nameAndValue = param.split(":") def nameAndValue = param.split(":")
@@ -248,7 +244,8 @@ private Map getBatteryResult(rawValue) {
def pct = (volts - minVolts) / (maxVolts - minVolts) def pct = (volts - minVolts) / (maxVolts - minVolts)
result.value = Math.min(100, (int) pct * 100) result.value = Math.min(100, (int) pct * 100)
result.descriptionText = "${linkText} battery was ${result.value}%" result.descriptionText = "${linkText} battery was ${result.value}%"
}} }
}
return result return result
} }
@@ -280,53 +277,54 @@ private Map getMotionResult(value) {
] ]
} }
def refresh() def refresh() {
{
log.debug "refresh called" log.debug "refresh called"
[ def refreshCmds = [
"st rattr 0x${device.deviceNetworkId} 1 0x402 0", "delay 200", "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() { def configure() {
String zigbeeEui = swapEndianHex(device.hub.zigbeeEui)
log.debug "Configuring Reporting, IAS CIE, and Bindings."
String zigbeeId = swapEndianHex(device.hub.zigbeeId)
log.debug "Confuguring Reporting, IAS CIE, and Bindings."
def configCmds = [ def configCmds = [
"zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}",
"zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 0x402 {${device.zigbeeId}} {}", "delay 200", "send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 500",
"zcl global send-me-a-report 0x402 0 0x29 300 3600 {6400}",
"send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 1500",
"zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 0x20 {${device.zigbeeId}} {}", "delay 200", "zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 0x20 {${device.zigbeeId}} {}", "delay 200",
"zcl global send-me-a-report 1 0x20 0x20 300 3600 {01}", "zcl global send-me-a-report 1 0x20 0x20 300 3600 {01}",
"send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 1500", "send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 500",
"zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 0x001 {${device.zigbeeId}} {}", "delay 200",
"zcl global write 0x500 0x10 0xf0 {${zigbeeId}}",
"send 0x${device.deviceNetworkId} 1 ${endpointId}"
"zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 0x402 {${device.zigbeeId}} {}", "delay 200",
"zcl global send-me-a-report 0x402 0 0x29 300 3600 {6400}",
"send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 500",
"zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 1 {${device.zigbeeId}} {}", "delay 200"
] ]
return configCmds + enrollResponse() + refresh() // send refresh cmds as part of config return configCmds + refresh() // send refresh cmds as part of config
}
private getEndpointId() {
new BigInteger(device.endpointId, 16).toString()
} }
def enrollResponse() { def enrollResponse() {
log.debug "Sending enroll response" log.debug "Sending enroll response"
String zigbeeEui = swapEndianHex(device.hub.zigbeeEui)
[ [
//Resending the CIE in case the enroll request is sent before CIE is written
"raw 0x500 {01 23 00 00 00}", "delay 200", "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}",
"send 0x${device.deviceNetworkId} 1 ${endpointId}" "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) { private hex(value) {
new BigInteger(Math.round(value).toString()).toString(16) new BigInteger(Math.round(value).toString()).toString(16)
} }

View File

@@ -136,10 +136,6 @@ private boolean shouldProcessMessage(cluster) {
return !ignoredMessage return !ignoredMessage
} }
private int getHumidity(value) {
return Math.round(Double.parseDouble(value))
}
private Map parseReportAttributeMessage(String description) { private Map parseReportAttributeMessage(String description) {
Map descMap = (description - "read attr - ").split(",").inject([:]) { map, param -> Map descMap = (description - "read attr - ").split(",").inject([:]) { map, param ->
def nameAndValue = param.split(":") def nameAndValue = param.split(":")
@@ -226,22 +222,29 @@ private Map getBatteryResult(rawValue) {
log.debug 'Battery' log.debug 'Battery'
def linkText = getLinkText(device) def linkText = getLinkText(device)
log.debug rawValue
def result = [ def result = [
name: 'battery' name: 'battery',
value: '--'
] ]
def volts = rawValue / 10 def volts = rawValue / 10
def descriptionText def descriptionText
if (rawValue == 0) {}
else {
if (volts > 3.5) { if (volts > 3.5) {
result.descriptionText = "${linkText} battery has too much power (${volts} volts)." result.descriptionText = "${linkText} battery has too much power (${volts} volts)."
} }
else { else if (volts > 0){
def minVolts = 2.1 def minVolts = 2.1
def maxVolts = 3.0 def maxVolts = 3.0
def pct = (volts - minVolts) / (maxVolts - minVolts) def pct = (volts - minVolts) / (maxVolts - minVolts)
result.value = Math.min(100, (int) pct * 100) result.value = Math.min(100, (int) pct * 100)
result.descriptionText = "${linkText} battery was ${result.value}%" result.descriptionText = "${linkText} battery was ${result.value}%"
} }
}
return result return result
} }
@@ -273,50 +276,54 @@ private Map getMotionResult(value) {
] ]
} }
def refresh() def refresh() {
{
log.debug "refresh called" log.debug "refresh called"
[ def refreshCmds = [
"st rattr 0x${device.deviceNetworkId} 1 0x402 0", "delay 200", "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() { def configure() {
String zigbeeEui = swapEndianHex(device.hub.zigbeeEui)
log.debug "Configuring Reporting, IAS CIE, and Bindings."
String zigbeeId = swapEndianHex(device.hub.zigbeeId)
log.debug "Confuguring Reporting, IAS CIE, and Bindings."
def configCmds = [ def configCmds = [
"zcl global write 0x500 0x10 0xf0 {${zigbeeId}}", "delay 200", "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}",
"send 0x${device.deviceNetworkId} 1 1", "delay 1500", "send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 500",
"zcl global send-me-a-report 1 0x20 0x20 300 3600 {01}", "delay 200", "zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 0x20 {${device.zigbeeId}} {}", "delay 200",
"send 0x${device.deviceNetworkId} 1 1", "delay 1500", "zcl global send-me-a-report 1 0x20 0x20 300 3600 {01}",
"send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 500",
"zcl global send-me-a-report 0x402 0 0x29 300 3600 {6400}", "delay 200", "zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 0x402 {${device.zigbeeId}} {}", "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 ${endpointId}", "delay 500",
"zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 1 {${device.zigbeeId}} {}", "delay 200"
"zdo bind 0x${device.deviceNetworkId} 1 1 0x402 {${device.zigbeeId}} {}", "delay 200",
"zdo bind 0x${device.deviceNetworkId} 1 1 0x001 {${device.zigbeeId}} {}", "delay 1500",
"raw 0x500 {01 23 00 00 00}", "delay 200",
"send 0x${device.deviceNetworkId} 1 1", "delay 1500",
] ]
return configCmds + refresh() // send refresh cmds as part of config return configCmds + refresh() // send refresh cmds as part of config
} }
def enrollResponse() { def enrollResponse() {
log.debug "Sending enroll response" log.debug "Sending enroll response"
String zigbeeEui = swapEndianHex(device.hub.zigbeeEui)
[ [
//Resending the CIE in case the enroll request is sent before CIE is written
"raw 0x500 {01 23 00 00 00}", "delay 200", "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}",
"send 0x${device.deviceNetworkId} 1 1" "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) { private hex(value) {
new BigInteger(Math.round(value).toString()).toString(16) new BigInteger(Math.round(value).toString()).toString(16)
} }

View File

@@ -158,6 +158,7 @@ private boolean shouldProcessMessage(cluster) {
return !ignoredMessage return !ignoredMessage
} }
//TODO: Not sure why this is here. Clean up if not required during refactor
private int getHumidity(value) { private int getHumidity(value) {
return Math.round(Double.parseDouble(value)) return Math.round(Double.parseDouble(value))
} }
@@ -313,52 +314,48 @@ def getTemperature(value) {
] ]
} }
def refresh() def refresh() {
{
log.debug "Refreshing Values " log.debug "Refreshing Values "
[ def refreshCmds = [
/* sensitivity - default value (8) */ /* sensitivity - default value (8) */
"zcl mfg-code 0x104E", "delay 200", "zcl mfg-code 0x104E", "delay 200",
"zcl global write 0xFC02 0 0x20 {02}", "delay 200", "zcl global write 0xFC02 0 0x20 {02}", "delay 200",
"send 0x${device.deviceNetworkId} 1 1", "delay 400",
"zcl mfg-code 0x104E", "delay 200",
"zcl global read 0xFC02 0x0000", "delay 200",
"send 0x${device.deviceNetworkId} 1 1", "delay 400", "send 0x${device.deviceNetworkId} 1 1", "delay 400",
"st rattr 0x${device.deviceNetworkId} 1 0x402 0", "delay 200", "st rattr 0x${device.deviceNetworkId} 1 0x402 0", "delay 200",
"st rattr 0x${device.deviceNetworkId} 1 1 0x20", "delay 200", "st rattr 0x${device.deviceNetworkId} 1 1 0x20", "delay 200",
"zcl mfg-code 0x104E", "delay 200", "zcl mfg-code 0x104E", "delay 200",
"zcl global read 0xFC02 0x0010", "delay 100", "zcl global read 0xFC02 0x0010",
"send 0x${device.deviceNetworkId} 1 1","delay 400", "send 0x${device.deviceNetworkId} 1 1","delay 400",
"zcl mfg-code 0x104E", "delay 200", "zcl mfg-code 0x104E", "delay 200",
"zcl global read 0xFC02 0x0012", "delay 100", "zcl global read 0xFC02 0x0012",
"send 0x${device.deviceNetworkId} 1 1","delay 400", "send 0x${device.deviceNetworkId} 1 1","delay 400",
"zcl mfg-code 0x104E", "delay 200", "zcl mfg-code 0x104E", "delay 200",
"zcl global read 0xFC02 0x0013", "delay 100", "zcl global read 0xFC02 0x0013",
"send 0x${device.deviceNetworkId} 1 1","delay 400", "send 0x${device.deviceNetworkId} 1 1","delay 400",
"zcl mfg-code 0x104E", "delay 200", "zcl mfg-code 0x104E", "delay 200",
"zcl global read 0xFC02 0x0014", "delay 100", "zcl global read 0xFC02 0x0014",
"send 0x${device.deviceNetworkId} 1 1" "send 0x${device.deviceNetworkId} 1 1", "delay 400"
] ]
return refreshCmds + enrollResponse()
} }
def configure() { def configure() {
String zigbeeId = swapEndianHex(device.hub.zigbeeId) String zigbeeEui = swapEndianHex(device.hub.zigbeeEui)
log.debug "Configuring Reporting" log.debug "Configuring Reporting"
def configCmds = [ def configCmds = [
"zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 1 {${device.zigbeeId}} {}", "delay 200", "zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 1 {${device.zigbeeId}} {}", "delay 200",
"zcl global write 0x500 0x10 0xf0 {${zigbeeId}}", "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}",
"send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 500", "send 0x${device.deviceNetworkId} 1 ${endpointId}", "delay 500",
"zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 0x20 {${device.zigbeeId}} {}", "delay 200", "zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 0x20 {${device.zigbeeId}} {}", "delay 200",
@@ -397,11 +394,14 @@ private getEndpointId() {
def enrollResponse() { def enrollResponse() {
log.debug "Sending enroll response" log.debug "Sending enroll response"
String zigbeeEui = swapEndianHex(device.hub.zigbeeEui)
[ [
//Resending the CIE in case the enroll request is sent before CIE is written
"raw 0x500 {01 23 00 00 00}", "delay 200", "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}",
"send 0x${device.deviceNetworkId} 1 1" "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"
] ]
} }

View File

@@ -284,52 +284,61 @@ def getTemperature(value) {
] ]
} }
def refresh() def refresh() {
{
log.debug "Refreshing Temperature and Battery " log.debug "Refreshing Temperature and Battery "
[ def refreshCmds = [
"st rattr 0x${device.deviceNetworkId} 1 0x402 0", "delay 200", "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 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() { def configure() {
String zigbeeId = swapEndianHex(device.hub.zigbeeId) String zigbeeEui = swapEndianHex(device.hub.zigbeeEui)
log.debug "Confuguring Reporting, IAS CIE, and Bindings." log.debug "Configuring Reporting, IAS CIE, and Bindings."
def configCmds = [ def configCmds = [
"zcl global write 0x500 0x10 0xf0 {${zigbeeId}}", "delay 200", "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}",
"send 0x${device.deviceNetworkId} 1 1", "delay 1500", "send 0x${device.deviceNetworkId} 1 1", "delay 500",
"zcl global send-me-a-report 1 0x20 0x20 600 3600 {01}", "delay 200", "zdo bind 0x${device.deviceNetworkId} 1 ${endpointId} 0x20 {${device.zigbeeId}} {}", "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", "zdo bind 0x${device.deviceNetworkId} 1 1 0x402 {${device.zigbeeId}} {}", "delay 500",
"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",
"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 0xFC02 {${device.zigbeeId}} {}", "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", "zcl global send-me-a-report 0xFC02 2 0x18 300 3600 {01}",
"zdo bind 0x${device.deviceNetworkId} 1 1 1 {${device.zigbeeId}} {}" "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 return configCmds + refresh() // send refresh cmds as part of config
} }
def enrollResponse() { def enrollResponse() {
log.debug "Sending enroll response" log.debug "Sending enroll response"
String zigbeeEui = swapEndianHex(device.hub.zigbeeEui)
[ [
//Resending the CIE in case the enroll request is sent before CIE is written
"raw 0x500 {01 23 00 00 00}", "delay 200", "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}",
"send 0x${device.deviceNetworkId} 1 1" "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) { private hex(value) {
new BigInteger(Math.round(value).toString()).toString(16) new BigInteger(Math.round(value).toString()).toString(16)
} }

View File

@@ -260,30 +260,29 @@ private Map getContactResult(value) {
] ]
} }
def refresh() def refresh() {
{
log.debug "Refreshing Temperature and Battery" log.debug "Refreshing Temperature and Battery"
[ def refreshCmds = [
"st rattr 0x${device.deviceNetworkId} 1 0x402 0", "delay 200", "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() { def configure() {
String zigbeeId = swapEndianHex(device.hub.zigbeeId) String zigbeeEui = swapEndianHex(device.hub.zigbeeEui)
log.debug "Confuguring Reporting, IAS CIE, and Bindings." log.debug "Configuring Reporting, IAS CIE, and Bindings."
def configCmds = [ def configCmds = [
"zcl global write 0x500 0x10 0xf0 {${zigbeeId}}", "delay 200", "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}",
"send 0x${device.deviceNetworkId} 1 1", "delay 1500", "send 0x${device.deviceNetworkId} 1 1", "delay 500",
"zcl global send-me-a-report 1 0x20 0x20 600 3600 {01}", "delay 200", "zcl global send-me-a-report 1 0x20 0x20 600 3600 {01}",
"send 0x${device.deviceNetworkId} 1 1", "delay 1500", "send 0x${device.deviceNetworkId} 1 1", "delay 500",
"zcl global send-me-a-report 0x402 0 0x29 300 3600 {6400}", "delay 200", "zcl global send-me-a-report 0x402 0 0x29 300 3600 {6400}",
"send 0x${device.deviceNetworkId} 1 1", "delay 1500", "send 0x${device.deviceNetworkId} 1 1", "delay 500",
//"raw 0x500 {01 23 00 00 00}", "delay 200", //"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 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 return configCmds + refresh() // send refresh cmds as part of config
} }
def enrollResponse() { def enrollResponse() {
log.debug "Sending enroll response" log.debug "Sending enroll response"
String zigbeeEui = swapEndianHex(device.hub.zigbeeEui)
[ [
//Resending the CIE in case the enroll request is sent before CIE is written
"raw 0x500 {01 23 00 00 00}", "delay 200", "zcl global write 0x500 0x10 0xf0 {${zigbeeEui}}",
"send 0x${device.deviceNetworkId} 1 1" "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) { private hex(value) {
new BigInteger(Math.round(value).toString()).toString(16) new BigInteger(Math.round(value).toString()).toString(16)
} }