[Hubitat C-8 Pro] Persistent MissingMethodException: zigbee.zdoBind() - Firmware 2.4.2.134

Dear Hubitat Support Team,

I am experiencing a persistent issue with my Hubitat C-8 Pro when attempting to perform ZDO Binding for a Zigbee sensor. I have developed a custom driver, and the zigbee.zdoBind() function (and attempts using the he raw command) consistently fail with a MissingMethodException.

My hub is a Hubitat C-8 Pro running firmware version 2.4.2.134.

Device Details (Ekaza Temperature and Humidity Sensor):

  • Manufacturer: _TZ3000_jnhu1llv
  • Model: TS0201
  • Device Network ID (DNI): 0x9910
  • Zigbee ID (EUI64): AAC13B59E1531F60
  • Full Driver Fingerprint: fingerprint profileId: "0104", deviceId: "0402", inClusters: "0001,0003,0402,0405,0000", outClusters: "0003,0019,000A", manufacturer: "_TZ3000_jnhu1llv", model: "TS0201"

Problem Description and Error Logs:

When attempting to execute the configure() method of my custom driver (which includes the zigbee.zdoBind() function to bind the On/Off cluster to the hub), I consistently receive the following MissingMethodException error. This error persists regardless of the argument types I've tried for the hub's EUI (String or Long).

Most Recent Log (After Soft Reset and Long EUI Attempt):

dev:72025-07-26 23:50:02.049errorgroovy.lang.MissingMethodException: No signature of method: com.hubitat.zigbee.Zigbee.zdoBind() is applicable for argument types: (java.lang.Integer, java.lang.Integer, java.lang.Long, java.lang.Integer) values: [1, 6, 2915660745263282144, 1] dev:72025-07-26 23:50:01.902infoSensor de Temperatura e Humidate (Ekaza): EUI do Hub obtido e convertido para Long: 2915660745263282144 dev:72025-07-26 23:50:01.896infoSensor de Temperatura e Humidate (Ekaza): Executing configure()...

Previous Logs (For Context, showing other zdoBind and he raw failures):

  • Failure Log with he raw ( getMsgType Error):dev:72025-07-26 23:24:28.775errorgroovy.lang.MissingMethodException: No signature of method: static com.hubitat.zigbee.message.ZigBeeMessageBuilder.getMsgType() is applicable for argument types: (java.util.ArrayList) values: [[zdo bind 0x9910 0x01 0x01 0x0402 {A4C13856E1531F60} {}, delay 2000, ...]]Context: This occurred when attempting to use the he raw command for ZDO Bind, indicating an issue with how the command list was processed by ZigBeeMessageBuilder.
  • Original zdoBind() Failure Log (String EUI - Coordinator DNI as 0x0000 placeholder):dev:62025-07-26 23:15:24.346errorgroovy.lang.MissingMethodException: No signature of method: com.hubitat.zigbee.Zigbee.zdoBind() is applicable for argument types: (java.lang.Integer, java.lang.Integer, java.lang.String, java.lang.Integer) values: [1, 6, 0x0000, 1]

Troubleshooting Steps Already Performed:

  1. Completely rebooted the Hubitat hub (unplugging from power for over 5 minutes).
  2. Checked and confirmed that I am running the latest firmware version available for Hubitat C-8 Pro (2.4.2.134).
  3. Performed a full "Soft Reset" on the hub (after backing up and then restoring my data).
  4. The custom driver has been re-applied to the device multiple times by switching to a generic driver and then back to the custom one.

Relevant Code Snippet from the Driver (configure() function):

def configure() {
logInfo "Executing configure()..."
def cmds =
Long hubEuiLong = 0L // Variable for hub EUI in Long format

try {
    def hubReference = device.getHub()
    if (hubReference != null) {
        String hubEuiString = hubReference.zigbeeEui.toString().toUpperCase().replace("0X", "")
        hubEuiLong = Long.parseUnsignedLong(hubEuiString, 16)
        logInfo "Hub EUI obtained and converted to Long: ${hubEuiLong}"
    } else {
        logError "CRITICAL Error: device.getHub() returned NULL."
    }
} catch (e) {
    logError "Exception while trying to get/convert Hub EUI to Long: ${e.message}. Using 0L."
}

// This is the line that is consistently generating the MissingMethodException
cmds << zigbee.zdoBind(0x01, 0x0006, hubEuiLong, 0x01) 
cmds << "delay 200"

cmds << zigbee.configureReporting(0x0402, 0x0000, 0x29, 10, 300, 0x0005)
cmds << "delay 200"
cmds << zigbee.configureReporting(0x0405, 0x0000, 0x21, 10, 300, 0x0005)
cmds << "delay 200"
cmds << zigbee.readAttribute(0x0402, 0x0000)
cmds << "delay 200"
cmds << zigbee.readAttribute(0x0405, 0x0000)
cmds << "delay 200"

logDebug "Commands to be sent: ${cmds}"
return cmds

}

I appreciate your assistance in diagnosing and resolving this unusual issue with the Zigbee API on my Hubitat C-8 Pro.

Can anyone help?

Thank you

Hi @ilx ,

There is no zigbee.zdoBind() method in Hubitat.
You could use a raw command instead, for example :

cmds += "zdo bind 0x${device.deviceNetworkId} 0x01 0x01 0x0402 {${device.zigbeeId}} {}"

But this is not necessary, as the zigbee.configureReporting() method includes the binding command.

So, just remove the zdoBind() call from the code.

4 Likes

As mentioned above, the reason you're receiving this error is because the method does not exist (i.e., exactly what the error it's throwing is telling you -- yes, I know, sometimes Groovy is misleading :smiley: ).

But I'm curious, in case there is anything that can be done to help others: what led you to be confident that it should work?

Here's a configure command with several zdo bind commands...

List<String> configure() {
    log.warn "configure..."
    runIn(1800,logsOff)
    List<String> cmds = []
    cmds.addAll(zigbee.configureReporting(0x0001, 0x0020, 0x20, battReport, battReport, 0x01,[destEndpoint:0x23],0))
    cmds.add("zdo bind 0x${device.deviceNetworkId} 0x26 0x01 0xFC03 {${device.zigbeeId}} {}") //airquality... needs 0x1015 for configure reporting
    cmds.add("zdo bind 0x${device.deviceNetworkId} 0x26 0x01 0x0402 {${device.zigbeeId}} {}") //temp sensor...
    cmds.add("zdo bind 0x${device.deviceNetworkId} 0x26 0x01 0x0405 {${device.zigbeeId}} {}") //hum sensor...
    return delayBetween(cmds, 400)
}
2 Likes

Thank you! It worked.

I'm learning, even if I'm not familiar with it.

But where did it come from? Documentation, for example?

I'm not sure what you were looking at, but this (plus the recommended reading before that if you aren't already familiar) would be a good place to start:

Thank you very much

No problem! But still very curious... :wink:

Probably from AI would be my guess.

4 Likes