Can you just not look at the fingerprint or the zwaveInfo? (see my Z-Wave Tweaker).
// Parse fingerprint for supported command classes:
def ccIds = []
if (getZwaveInfo()?.cc) {
logger("Device has new-style fingerprint: ${device.rawDescription}","info")
ccIds = getZwaveInfo()?.cc + getZwaveInfo()?.sec
}
else {
logger("Device has legacy fingerprint: ${device.rawDescription}","info")
// Look for hexadecimal numbers (0x##) but remove the first one, which will be deviceID.
ccIds = device.rawDescription.findAll(/0x\p{XDigit}+/)
if (ccIds.size() > 0) { ccIds.remove(0) }
}
ccIds.removeAll([null])
// Check the device supports MULTI_CHANNEL:
if (ccIds.find( {it == "0x60" }) ) {
// Supports MultiChannel...
}