I had to dig through several posts/drivers to get to the point where it pairs successfully and reads the button presses. There's several things that I still don't entirely understand how it works on the zigbee side that I want to read up on to understand better
This post - Went back to smarthings [But came back] - #145 by vjv clued me on to changing my configure function
From this (ST)
def configure(){
log.debug "Config Called"
def configCmds = [
"zcl global write 0x500 0x10 0xf0 {${device.zigbeeId}}", "delay 200",
"send 0x${device.deviceNetworkId} ${endpointId} 1", "delay 1500",
"zdo bind 0x${device.deviceNetworkId} ${endpointId} 0x01 0x0501 {${device.zigbeeId}} {}", "delay 500",
"zdo bind 0x${device.deviceNetworkId} ${endpointId} 1 1 {${device.zigbeeId}} {}"
]
return configCmds
}
To this (plus adding the two functions (swapEndianHex and reverseArray)
def configure(){
String zigbeeId = swapEndianHex(device.hub.zigbeeId)
log.debug "Config Called"
def configCmds = [
"zcl global write 0x500 0x10 0xf0 {${zigbeeId}}", "delay 200",
"send 0x${device.deviceNetworkId} 0x08 1", "delay 1500",
"zdo bind 0x${device.deviceNetworkId} 0x08 0x01 0x0501 {${device.zigbeeId}} {}", "delay 500",
"zdo bind 0x${device.deviceNetworkId} 0x08 1 1 {${device.zigbeeId}} {}"
]
return configCmds
}
From there, I needed to figure out what was different in how to respond to the enroll request:
Eventually I found this driver: HubitatPublic/examples/drivers/haloSmokeCoDetector.groovy at master · hubitat/HubitatPublic · GitHub that clued me into the fact that for Hubitat, the enroll is super simple
zigbee.enrollResponse(1200)
Rather then adding it to the configure cmd like that driver does, I decided to add it into my parse function
if (description?.startsWith("enroll request")) {
if (logEnable) log.debug "RECEVED ENROLL REQUEST: ${description}"
List cmds = zigbee.enrollResponse(1200)
result = cmds?.collect { new hubitat.device.HubAction(it, hubitat.device.Protocol.ZIGBEE) }
}
Once I did that, reset, and re-paired, it all worked.
@snell - I did try that Securifi driver. One thing I noticed right off the bat is that you have a different fingerprint, which probably is why it's not detecting correctly. It looks like you were still using the almond click fingerprint
Yours
fingerprint profileId: "0104", inClusters: "0000, 0001, 0003, 0013, 0402, 0500, 0501, 0B05", outClusters: "0019", manufacturer: "Securifi", model: "ZB2-BU01", deviceJoinName: "Almond Click"
Mine
fingerprint profileId: "0104", inClusters: "0000,0003,0500", outClusters: "0003,0501", manufacturer: "Sercomm Corp.", model: "SZ-KFB01", deviceJoinName: "Securifi Key Fob"