TL;DR: Tips needed in trying to translate a non-standard cluster binding implemented in zigbee2mqtt into an equivalent ZHA quirk for the Bosch Twinguard.
I’m trying to add a Bosch Twinguard smoke detector + air quality monitor via ZHA. It’s an unusual beast – it needs a QR code to pair, which I managed thanks to this thread.
And it turns out all the real data from the device (humidity, temperature, VOC, alarm status, among others) is transmitted every 5 minutes over a non-standard cluster, 0xe002
. The cluster is there but initially appears empty when checking under Manage Zigbee Device
.
A working configuration was recently implemented with zigbee2mqtt
. So I tried to bodge a quirk with the documented attributes.
I got the attributes to show up but they always report 'None'
when I probe them, and never automatically report [as confirmed by debug logging]. I think the problem is that the cluster doesn’t attempt to ‘bind’ upon pairing or reconfiguration – I can see from both the logs and the reconfiguration table that no bind attempt is ever made on that cluster. I can’t find any documentation or even any good examples of how to set up that binding. I tried adding this to a CustomCluster definition, but no luck:
async def bind(self):
"""Bind cluster."""
return await self.cluster.bind()
# also tried: return await super().bind()
Any advice greatly appreciated!!