[OBSOLETE] Help a newbie write a Device Handler for a Zigbee Multi-Button Scene Controller

Here is my device:

	fingerprint profileId: "0104",
		deviceId: "000C",
		inClusters: "0000, 0005",
		outClusters: "0000, 0005, 0017",
		manufacturer: "欧瑞博",
		model: "75d430d66c164c26ac8601c05932dc94",
		deviceJoinName: "7 Button Scene Controller"

I started with a very basic handler having only a configure and refresh sections (with buttons to invoke each) that I add/remove pieces of code from/to to piecemeal test.

Here’s my config:

def configure() {
log.debug "Setting numberOfButtons to 7"
sendEvent(name: "numberOfButtons", value: 7, displayed: false)

log.debug "Configuring Reporting and Bindings."
def configCmds = [
	"zcl global send-me-a-report 0 0 0x00 0 3600 {01}", "delay 500",
    "send 0x${device.deviceNetworkId} ${endpointId} 1", "delay 1000",
    "zcl global send-me-a-report 5 0 0x00 0 3600 {01}", "delay 500",
    "send 0x${device.deviceNetworkId} ${endpointId} 1", "delay 1000",
    
    "zdo bind 0x${device.deviceNetworkId} 1 1 0 {${device.zigbeeId}} {}", "delay 2000",
    "zdo bind 0x${device.deviceNetworkId} 1 1 5 {${devicezigbeeId}} {}", "delay 2000"
]
return configCmds + refresh()
}

And my refresh:

def refresh() {

log.debug "Starting Refresh"

log.debug "Get Clusters Called"
["zdo active 0x${device.deviceNetworkId}", "delay 2000"]
}

My parse:

def parse(String description) {
log.debug "Parsing '${description}'"  
def event = zigbee.parse(description)    
log.debug "$event"
log.debug "EventData: '${event.data}'"

if (event) {
	sendEvent(event)
}
else {
	log.warn "DID NOT PARSE MESSAGE for description : $description"
	log.debug zigbee.parseDescriptionAsMap(description)
}
}

This is what that returns:

	Parsing 'catchall: 0000 8021 00 00 0100 00 4AB3 00 00 0000 00 00 6700'
	SmartShield(
		clusterId: 0x8021, command: 0x00,
        data: [0x67, 0x00], //increments - see below
        destinationEndpoint: 0x00, direction: 0x00,
        isClusterSpecific: false, isManufacturerSpecific: false,
        manufacturerId: 0x0000,
        messageType: 0x00,
        number: null, options: 0x0100, profileId: 0x0000,
        senderShortId: 0x4ab3, sourceEndpoint: 0x00,
        text: null
	)
    EventData: '[103, 0]'  //increments by some amount each run. resets at about 126

When I try to read attributes from cluster 5:

[
"st rattr 0x${device.deviceNetworkId} 1 5 0", "delay 200",
"st rattr 0x${device.deviceNetworkId} 1 5 1", "delay 200",
"st rattr 0x${device.deviceNetworkId} 1 5 2", "delay 200",
"st rattr 0x${device.deviceNetworkId} 1 5 3", "delay 200",
"st rattr 0x${device.deviceNetworkId} 1 5 4", "delay 200",
"st rattr 0x${device.deviceNetworkId} 1 5 5", "delay 200"
]

For each attribute, I get back:

Parsing 'read attr - raw: 4AB301000506000086, dni: 4AB3, endpoint: 01, cluster: 0005, size: 06, attrId: 0000, result: unsupported attr'

I am able to read a few results back from cluster 0

I then try adding a few scenes, and reading back scene count and current scene attributes:

log.debug "Attemping to Add some Scenes"    
delayBetween([
	zigbee.command(0x0005, 0x00, "0000", "01", "1111", "Test1"),
	zigbee.command(0x0005, 0x00, "0000", "02", "2112", "Test2"),
	zigbee.command(0x0005, 0x00, "0000", "03", "3113", "Test3"),
	zigbee.command(0x0005, 0x00, "0001", "04", "4114", "Test4"),
	zigbee.command(0x0005, 0x00, "0001", "05", "5115", "Test5"),
	zigbee.command(0x0005, 0x00, "0001", "06", "6116", "Test6")
], 1000)
 
log.debug "Attempting to Read Attributes"
[
"st rattr 0x${device.deviceNetworkId} 1 5 0", "delay 200", //scene count
"st rattr 0x${device.deviceNetworkId} 1 5 1", "delay 200"  //current scene
]

I get no response from the add scene commands, and the same unsupported attr results as above. I can similarly send view/remove scene commands with equal success. Not sure what to try next.

If configured for buttons, I am able to log pressed/held/released events from the device. So I could use this as a plain vanilla button controller. But I want to be able to utilize the LED’s to display the active scenes. And I can only assume that is controlled solely by the device in this case.