I finally got Z4D working in Bookworm. I've re-paired everything and it's working.
Unfortunately, I'm now occasionally getting an error from Z4D in the Domoticz log.
{"0":{"0":{"Time":"18/11/2025 15:29:02","PermitToJoin":{"Duration":0,"Starttime":1763472328},"PluginHealth":"Ready","Thread":"ZigpyForwarder_6 27742","nwkid":"768c","Module":"Cluster","message":"ReadCluster - Warning - unknow 768c/01 Cluster: 0000 Attribute: ff02 Status: 00 DataType: 4c DataSize: 0013 Data: 100121c70b21a8132402000000002142832063","DeviceInfos":{"Version":"3","ZDeviceName":"Motion BK","Status":"inDB","SQN":"2c","Ep":{"01":{"0406":{"0000":1},"ClusterType":{"116":"Motion"},"0000":{"ff02":"100121c70b21a8132402000000002142832063"}}},"Heartbeat":"4017","RIA":"4","LQI":36,"Battery":{},"Model":"","ForceAckCommands":[],"MacCapa":"80","IEEE":"00158d0002c0815d","Type":"Motion","ProfileID":{},"ZDeviceID":{},"App Version":"","Attributes List":{},"DeviceType":"RFD","HW Version":"","Last Cmds":[],"LogicalType":"End Device","Manufacturer":"","Manufacturer Name":"","NbEp":"","PowerSource":"Battery","ReadAttributes":{"Ep":{"01":{"0000":{"TimeStamp":"18/11/2025 09:51:22","iSQN":{"0004":"01","0005":"01"},"Attributes":{},"ZigateRequest":{}},"0406":{"TimeStamp":"18/11/2025 14:35:28","iSQN":{"0000":"03","0001":"03","0002":"03","0010":"04","0011":"04","0012":"04","0020":"05","0022":"05","0023":"05","0030":"06","0032":"06","0033":"06","fffd":"07","fffe":"07"},"Attributes":{"0000":"00"},"ZigateRequest":{}}}}},"ReceiveOnIdle":"","Stack Version":"","Stamp":{"time":1763476142.4857306,"Time":"2025-11-18 15:29:02","MsgType":"8102","LastSeen":"18/11/2025 15:29:02"},"ZCL Version":"","Health":"Live","Param":{},"ConfigureReporting":{"Ep":{"01":{"0406":{"TimeStamp":"18/11/2025 09:51:32","iSQN":{"0000":"02"},"Attributes":{},"ZigateRequest":{}}}}},"WriteAttributes":{"Ep":{"01":{"0406":{"TimeStamp":0,"iSQN":{},"Attributes":{},"ZigateRequest":{}},"0000":{"TimeStamp":0,"iSQN":{},"Attributes":{},"ZigateRequest":{}}}}},"BindingTable":[{"Devices":[],"SQN":0,"Status":"","TimeStamp":"18/11/2025 09:51:32","Time":"18/11/2025 09:51:32"}],"Capability":["Reduced-Function Device","Standard security","NwkAddr should be allocated"],"CertifiedDevice":false,"ConsistencyCheck":"ok","CheckParam":false,"ErrorManagement":0,"RollingLQI":[32,43,18,32,36,36]},"context":{"MsgClusterId":"0000","MsgSrcEp":"01","MsgAttrID":"ff02","MsgAttType":"4c","MsgAttSize":"0013","MsgClusterData":"100121c70b21a8132402000000002142832063","StackTrace":" File \"/usr/lib/python3.11/threading.py\", line 995, in _bootstrap\n self._bootstrap_inner()\n File \"/usr/lib/python3.11/threading.py\", line 1038, in _bootstrap_inner\n self.run()\n File \"/usr/lib/python3.11/threading.py\", line 975, in run\n self._target(*self._args, **self._kwargs)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Classes/ZigpyTransport/forwarderThread.py\", line 49, in forwarder_thread\n forward_message(self, message)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Classes/ZigpyTransport/instrumentation.py\", line 38, in f_out\n result = f_in(self, message)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Classes/ZigpyTransport/forwarderThread.py\", line 65, in forward_message\n self.F_out(message)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/plugin.py\", line 801, in processFrame\n zigbee_receive_message(self, Devices, Data)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Modules/input.py\", line 165, in zigbee_receive_message\n _decode_message(self, MsgType, Devices, Data, MsgData, MsgLQI)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Modules/input.py\", line 172, in _decode_message\n decoding_method(self, Devices, MsgData, MsgLQI)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Z4D_decoders/z4d_decoder_Read_Report_Attribute_Rsp.py\", line 52, in Decode8102\n scan_attribute_reponse(self, Devices, MsgSQN, i_sqn, MsgSrcAddr, MsgSrcEp, MsgClusterId, MsgData, '8102')\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Z4D_decoders/z4d_decoder_Read_Report_Attribute_Rsp.py\", line 88, in scan_attribute_reponse\n read_report_attributes( self, Devices, msgtype, MsgSQN, MsgSrcAddr, MsgSrcEp, MsgClusterId, MsgAttrID, MsgAttStatus, MsgAttType, MsgAttSize, MsgClusterData, )\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Z4D_decoders/z4d_decoder_Read_Report_Attribute_Rsp.py\", line 121, in read_report_attributes\n ReadCluster( self, Devices, MsgType, MsgSQN, MsgSrcAddr, MsgSrcEp, MsgClusterId, MsgAttrID, MsgAttStatus, MsgAttType, MsgAttSize, MsgClusterData, Source=MsgType, )\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Modules/readClusters.py\", line 186, in ReadCluster\n self.log.logging( \"Cluster\", \"Error\", \"ReadCluster - Warning - unknow %s/%s Cluster: %s Attribute: %s Status: %s DataType: %s DataSize: %s Data: %s\" %(\n"}},"LastLog":0,"StartTime":"18/11/2025 12:21:37","FirmwareVersion":"Z-Stack 3.30+ (build 20220219)","FirmwareMajorVersion":"20","PluginVersion":"stable7-7.1.024"},"1":{"0":{"Time":"18/11/2025 16:24:03","PermitToJoin":{"Duration":0,"Starttime":1763477958},"PluginHealth":"Ready","Thread":"ZigpyForwarder_6 2685","nwkid":"768c","Module":"Cluster","message":"ReadCluster - Warning - unknow 768c/01 Cluster: 0000 Attribute: ff02 Status: 00 DataType: 4c DataSize: 0013 Data: 100121c70b21a8132401000000002142832066","DeviceInfos":{"Version":"3","ZDeviceName":"Motion BK","Status":"inDB","SQN":"2d","Ep":{"01":{"0406":{"0000":1},"ClusterType":{"116":"Motion"},"0000":{"ff02":"100121c70b21a8132401000000002142832066"}}},"Heartbeat":"4509","RIA":"4","LQI":47,"Battery":{},"Model":"","ForceAckCommands":[],"MacCapa":"80","IEEE":"00158d0002c0815d","Type":"Motion","ProfileID":{},"ZDeviceID":{},"App Version":"","Attributes List":{},"DeviceType":"RFD","HW Version":"","Last Cmds":[],"LogicalType":"End Device","Manufacturer":"","Manufacturer Name":"","NbEp":"","PowerSource":"Battery","ReadAttributes":{"Ep":{"01":{"0000":{"TimeStamp":"18/11/2025 09:51:22","iSQN":{"0004":"01","0005":"01"},"Attributes":{},"ZigateRequest":{}},"0406":{"TimeStamp":"18/11/2025 14:35:28","iSQN":{"0000":"03","0001":"03","0002":"03","0010":"04","0011":"04","0012":"04","0020":"05","0022":"05","0023":"05","0030":"06","0032":"06","0033":"06","fffd":"07","fffe":"07"},"Attributes":{"0000":"00"},"ZigateRequest":{}}}}},"ReceiveOnIdle":"","Stack Version":"","Stamp":{"time":1763479443.2301342,"Time":"2025-11-18 16:24:03","MsgType":"8102","LastSeen":"18/11/2025 16:24:03"},"ZCL Version":"","Health":"Live","Capability":["Reduced-Function Device","Standard security","NwkAddr should be allocated"],"WriteAttributes":{"Ep":{"01":{"0406":{"TimeStamp":0,"iSQN":{},"Attributes":{},"ZigateRequest":{}},"0000":{"TimeStamp":0,"iSQN":{},"Attributes":{},"ZigateRequest":{}}}}},"BindingTable":[{"Devices":[],"SQN":0,"Status":"","TimeStamp":"18/11/2025 09:51:32","Time":"18/11/2025 09:51:32"}],"CertifiedDevice":false,"ConfigureReporting":{"Ep":{"01":{"0406":{"TimeStamp":"18/11/2025 09:51:32","iSQN":{"0000":"02"},"Attributes":{},"ZigateRequest":{}}}}},"Param":{},"ConsistencyCheck":"ok","ErrorManagement":0,"RollingLQI":[47]},"context":{"MsgClusterId":"0000","MsgSrcEp":"01","MsgAttrID":"ff02","MsgAttType":"4c","MsgAttSize":"0013","MsgClusterData":"100121c70b21a8132401000000002142832066","StackTrace":" File \"/usr/lib/python3.11/threading.py\", line 995, in _bootstrap\n self._bootstrap_inner()\n File \"/usr/lib/python3.11/threading.py\", line 1038, in _bootstrap_inner\n self.run()\n File \"/usr/lib/python3.11/threading.py\", line 975, in run\n self._target(*self._args, **self._kwargs)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Classes/ZigpyTransport/forwarderThread.py\", line 49, in forwarder_thread\n forward_message(self, message)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Classes/ZigpyTransport/instrumentation.py\", line 38, in f_out\n result = f_in(self, message)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Classes/ZigpyTransport/forwarderThread.py\", line 65, in forward_message\n self.F_out(message)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/plugin.py\", line 801, in processFrame\n zigbee_receive_message(self, Devices, Data)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Modules/input.py\", line 165, in zigbee_receive_message\n _decode_message(self, MsgType, Devices, Data, MsgData, MsgLQI)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Modules/input.py\", line 172, in _decode_message\n decoding_method(self, Devices, MsgData, MsgLQI)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Z4D_decoders/z4d_decoder_Read_Report_Attribute_Rsp.py\", line 52, in Decode8102\n scan_attribute_reponse(self, Devices, MsgSQN, i_sqn, MsgSrcAddr, MsgSrcEp, MsgClusterId, MsgData, '8102')\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Z4D_decoders/z4d_decoder_Read_Report_Attribute_Rsp.py\", line 88, in scan_attribute_reponse\n read_report_attributes( self, Devices, msgtype, MsgSQN, MsgSrcAddr, MsgSrcEp, MsgClusterId, MsgAttrID, MsgAttStatus, MsgAttType, MsgAttSize, MsgClusterData, )\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Z4D_decoders/z4d_decoder_Read_Report_Attribute_Rsp.py\", line 121, in read_report_attributes\n ReadCluster( self, Devices, MsgType, MsgSQN, MsgSrcAddr, MsgSrcEp, MsgClusterId, MsgAttrID, MsgAttStatus, MsgAttType, MsgAttSize, MsgClusterData, Source=MsgType, )\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Modules/readClusters.py\", line 186, in ReadCluster\n self.log.logging( \"Cluster\", \"Error\", \"ReadCluster - Warning - unknow %s/%s Cluster: %s Attribute: %s Status: %s DataType: %s DataSize: %s Data: %s\" %(\n"}},"LastLog":0,"StartTime":"18/11/2025 15:58:28","FirmwareVersion":"Z-Stack 3.30+ (build 20220219)","FirmwareMajorVersion":"20","PluginVersion":["stable7-7.1.024"]},"2":{"6":{"Time":"18/11/2025 20:43:32","PermitToJoin":{"Duration":0,"Starttime":1763542598},"PluginHealth":"Ready","Thread":"ZigpyForwarder_6 26296","nwkid":"79e9","Module":"Cluster","message":"ReadCluster - Warning - unknow 79e9/01 Cluster: 0000 Attribute: ff01 Status: 00 DataType: 42 DataSize: 0021 Data: 0121c70b0328120421a8130521f202062401000000000a2100006410000b210600","DeviceInfos":{"Version":"3","ZDeviceName":"Motion res","Status":"inDB","SQN":"02","Ep":{"01":{"0400":{"0000":0},"0406":{"0000":1},"ClusterType":{"118":"Motion"},"0000":{"ff01":"0121d10b0328120421a8130521fb02062401000000000a2100006410000b210000"}}},"Heartbeat":"5973","RIA":"4","LQI":32,"Battery":{},"Model":"","ForceAckCommands":[],"MacCapa":"80","IEEE":"00158d000774d77e","Type":"Lux/Motion","ProfileID":{},"ZDeviceID":{},"App Version":"","Attributes List":{},"DeviceType":"RFD","HW Version":"","Last Cmds":[],"LogicalType":"End Device","Manufacturer":"1037","Manufacturer Name":"","NbEp":"","PowerSource":"Battery","ReadAttributes":{"Ep":{"01":{"0000":{"TimeStamp":"18/11/2025 12:07:07","iSQN":{"0005":"01"},"Attributes":{},"ZigateRequest":{}},"0400":{"TimeStamp":"19/11/2025 05:33:41","iSQN":{"0000":"09","0001":"09","0002":"09","0003":"0a","0004":"0a","fffd":"0a","fffe":"0b"},"Attributes":{"0000":"00"},"ZigateRequest":{}},"0406":{"TimeStamp":"18/11/2025 13:23:04","iSQN":{"0000":"04","0001":"04","0002":"04","0010":"05","0011":"05","0012":"05","0020":"06","0022":"06","0023":"06","0030":"07","0032":"07","0033":"07","fffd":"08","fffe":"08"},"Attributes":{"0000":"00"},"ZigateRequest":{}}}}},"ReceiveOnIdle":"Off","Stack Version":"","Stamp":{"time":1763530127.6754706,"Time":"2025-11-19 06:28:47","MsgType":"8102","LastSeen":"19/11/2025 06:28:47"},"ZCL Version":"","Health":"Live","ConfigureReporting":{"Ep":{"01":{"0400":{"TimeStamp":"18/11/2025 12:07:17","iSQN":{"0000":"02"},"Attributes":{},"ZigateRequest":{}},"0406":{"TimeStamp":"18/11/2025 12:07:17","iSQN":{"0000":"03"},"Attributes":{},"ZigateRequest":{}}}}},"bitfield":"4002","descriptor_capability":"00","Capability":["Reduced-Function Device","Standard security","NwkAddr should be allocated"],"WriteAttributes":{"Ep":{"01":{"0400":{"TimeStamp":0,"iSQN":{},"Attributes":{},"ZigateRequest":{}},"0406":{"TimeStamp":0,"iSQN":{},"Attributes":{},"ZigateRequest":{}},"0000":{"TimeStamp":0,"iSQN":{},"Attributes":{},"ZigateRequest":{}}}}},"Max Buffer Size":"7f","macapa":"80","Param":{},"Max Tx":"0064","BindingTable":[{"Devices":[],"SQN":0,"Status":"","TimeStamp":"18/11/2025 12:07:17","Time":"18/11/2025 12:07:17"}],"CertifiedDevice":false,"_rawNodeDescriptor":"103700640064000000807f4002","Max Rx":"0064","server_mask":"0000","ConsistencyCheck":"ok","ErrorManagement":0,"RollingLQI":[25,25,32]},"context":{"MsgClusterId":"0000","MsgSrcEp":"01","MsgAttrID":"ff01","MsgAttType":"42","MsgAttSize":"0021","MsgClusterData":"0121c70b0328120421a8130521f202062401000000000a2100006410000b210600","StackTrace":" File \"/usr/lib/python3.11/threading.py\", line 995, in _bootstrap\n self._bootstrap_inner()\n File \"/usr/lib/python3.11/threading.py\", line 1038, in _bootstrap_inner\n self.run()\n File \"/usr/lib/python3.11/threading.py\", line 975, in run\n self._target(*self._args, **self._kwargs)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Classes/ZigpyTransport/forwarderThread.py\", line 49, in forwarder_thread\n forward_message(self, message)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Classes/ZigpyTransport/instrumentation.py\", line 38, in f_out\n result = f_in(self, message)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Classes/ZigpyTransport/forwarderThread.py\", line 65, in forward_message\n self.F_out(message)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/plugin.py\", line 801, in processFrame\n zigbee_receive_message(self, Devices, Data)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Modules/input.py\", line 165, in zigbee_receive_message\n _decode_message(self, MsgType, Devices, Data, MsgData, MsgLQI)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Modules/input.py\", line 172, in _decode_message\n decoding_method(self, Devices, MsgData, MsgLQI)\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Z4D_decoders/z4d_decoder_Read_Report_Attribute_Rsp.py\", line 52, in Decode8102\n scan_attribute_reponse(self, Devices, MsgSQN, i_sqn, MsgSrcAddr, MsgSrcEp, MsgClusterId, MsgData, '8102')\n File \"/home/fredom/domoticz/plugins/Domoticz-Zigbee/Z4D_decoders/z4d_decoder_Read_Report_Attribute_Rsp.py\", line 88, in scan_attribute_reponse\n read_report_attributes( self, Devices, msgtype, MsgSQN, MsgSrcAddr, MsgSrcEp, MsgClusterId, MsgAttrID, MsgAttStatus, MsgAttType, MsgAttSize, MsgClusterData, )\n File \"/home/fredom/domoticz/plugins/Domoticz-