Hi,
First off, I’m not sure if this is the right category for this question, since Device Types are NOT SmartApps, but I didn’t see another better category, so I apologize ahead of time if that’s incorrect.
I have two questions about Zigbee device types at the moment.
My first question is about the SmartSense Motion/Temp Sensor Device type that’s published by SmartThings and is the default one used for the Smart Things starter kit motion sensor. Its a zigbee sensor, and in the device type, there is the following:
metadata {
definition (name: "SmartSense Motion/Temp Sensor", namespace: "smartthings", author: "SmartThings") {
capability "Motion Sensor"
capability "Configuration"
capability "Battery"
capability "Temperature Measurement"
capability "Refresh"
command "enrollResponse"
fingerprint inClusters: "0000,0001,0003,0402,0500,0020,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "3305-S"
fingerprint inClusters: "0000,0001,0003,0402,0500,0020,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "3305"
fingerprint inClusters: "0000,0001,0003,0402,0500,0020,0B05", outClusters: "0019", manufacturer: "CentraLite", model: "3325"
}
What is that enrollResponse command doing? I couldn’t find anything describing it in the documentation. The command is define later on as the following, but that’s not helping me much either.
def enrollResponse() {
log.debug "Sending enroll response"
[
"raw 0x500 {01 23 00 00 00}", "delay 200",
"send 0x${device.deviceNetworkId} 1 1"
]
}
Is the 0x500 referring to the IAS Zone cluster I presume? Where is the best document to decode the other numbers? This is proprietary to ST or can I find that somehow in the ZCL documentation?
My second question is about the configure function. How often does this function run? What triggers it? I only saw one indirect mention of this function in the documentation under the ZDO bind section here:
The code is here:
def configure() {
String zigbeeId = swapEndianHex(device.hub.zigbeeId)
log.debug "Confuguring 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 send-me-a-report 1 0x20 0x20 300 3600 {01}", "delay 200",
"send 0x${device.deviceNetworkId} 1 1", "delay 1500",
"zcl global send-me-a-report 0x402 0 0x29 300 3600 {6400}", "delay 200",
"send 0x${device.deviceNetworkId} 1 1", "delay 1500",
"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
}