Zigbee EndpointId set as null on pairing

It could be, but he's on channel 20, so it is usually not an issue. As far as the device is concerned it doesn't have problems with that channel since it is one of the 3 channels Aqara use. So unless there is congestion in that frequency or he just hasn't built a very stong mesh yet, I wouldn't know.

It does end up in the Data section, but when I try to write there I get TWO instances of endpointId. I tried to move it to endpoint 02 on my own hub just to test it, it doesn't work.

That is what I did, or rather, I'm wrapping the commands building the strings and replacing 0xnull with 0x01.

ArrayList<String> zigbeeCommand(Integer cluster, Integer command, Map additionalParams, int delay = 2000, String... payload) {
    ArrayList<String> cmd = zigbee.command(cluster, command, additionalParams, delay, payload)
    cmd[0] = cmd[0].replace('0xnull', '0x01')
    return cmd
}

Thank you for looking at this! Another thing, how about that STRUCT-parsing that fails in zigbee.parseDescriptionAsMap?