Repository: zigpy/zha-device-handlers

Issue:
[Device Support Request] ZLinky_TIC (French Linky electricity meter)
**Is your feature request related to a problem? Please describe.**

Add support for ZLinky_TIC, an add-on to transmit all data from the French Linky electricity meter.

Firmware for this device is open source, and clusters are documented at https://github.com/fairecasoimeme/Zlinky_TIC

**Describe the solution you'd like**

I'd like to be able to query the manufacturer specific cluster attributes:
![image](https://user-images.githubusercontent.com/318490/141344317-8a7672f9-980a-48a5-a55d-caec32a40e14.png)


**Device signature**

```
{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered|FullFunctionDevice: 142>, manufacturer_code=4151, maximum_buffer_size=127, maximum_incoming_transfer_size=100, server_mask=11264, maximum_outgoing_transfer_size=100, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0x0053",
      "in_clusters": [
        "0x0000",
        "0x0003",
        "0x0702",
        "0x0b01",
        "0x0b04",
        "0xff66"
      ],
      "out_clusters": [
        "0x0019"
      ]
    },
    "242": {
      "profile_id": 41440,
      "device_type": "0x0061",
      "in_clusters": [
        "0x0021"
      ],
      "out_clusters": [
        "0x0021"
      ]
    }
  },
  "manufacturer": "LiXee",
  "model": "ZLinky_TIC",
  "class": "zigpy.device.Device"
}
```

```
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.TCDevInd.Callback(SrcNwk=0xE837, SrcIEEE=00:15:8d:00:04:ff:ff:ff, ParentNwk=0x0BA5)
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 INFO (MainThread) [zigpy_znp.zigbee.application] TC device join: ZDO.TCDevInd.Callback(SrcNwk=0xE837, SrcIEEE=00:15:8d:00:04:ff:ff:ff, ParentNwk=0x0BA5)
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteDisc.Req(Dst=0xE837, Options=<RouteDiscoveryOptions.UNICAST: 0>, Radius=30)
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.ExtRouteDisc.Rsp(Status=<Status.SUCCESS: 0>)
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.EndDeviceAnnceInd.Callback(Src=0xE837, NWK=0xE837, IEEE=00:15:8d:00:04:ff:ff:ff, Capabilities=<MACCapabilities.AllocateShortAddrDuringAssocNeeded|RXWhenIdle|MainsPowered|Router: 142>)
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 INFO (MainThread) [zigpy_znp.zigbee.application] ZDO device announce: ZDO.EndDeviceAnnceInd.Callback(Src=0xE837, NWK=0xE837, IEEE=00:15:8d:00:04:ff:ff:ff, Capabilities=<MACCapabilities.AllocateShortAddrDuringAssocNeeded|RXWhenIdle|MainsPowered|Router: 142>)
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 INFO (MainThread) [zigpy.application] New device 0xe837 (00:15:8d:00:04:ff:ff:ff) joined the network
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 DEBUG (MainThread) [zigpy.device] [0xe837] Scheduling initialization
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 DEBUG (MainThread) [zigpy_znp.zigbee.application] Pretending we received a ZDO message: b'\xFF\x37\xE8\xFF\xFF\xFF\x04\x00\x8D\x15\x00\x8E'
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 DEBUG (MainThread) [zigpy.application] Received frame on uninitialized device <Device model=None manuf=None nwk=0xE837 ieee=00:15:8d:00:04:ff:ff:ff is_initialized=False> from ep 0 to ep 0, cluster ZDOCmd.Device_annce: b'\xFF\x37\xE8\xFF\xFF\xFF\x04\x00\x8D\x15\x00\x8E'
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 DEBUG (MainThread) [zigpy.zdo] [0xe837:zdo] ZDO request ZDOCmd.Device_annce: [0xE837, 00:15:8d:00:04:ff:ff:ff, 142]
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 DEBUG (MainThread) [zigpy.util] Tries remaining: 3
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 INFO (MainThread) [zigpy.device] [0xe837] Requesting 'Node Descriptor'
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 DEBUG (MainThread) [zigpy.util] Tries remaining: 2
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 DEBUG (MainThread) [zigpy.device] [0xe837] Extending timeout for 0xfa request
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteChk.Req(Dst=0xE837, RtStatus=<RouteStatus.ACTIVE: 1>, Options=<RouteOptions.NO_ROUTE_CACHE|MTO_ROUTE: 3>)
Nov 06 16:08:58 myhost hass[1643]: 2021-11-06 16:08:58 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.ExtRouteChk.Rsp(Status=<RoutingStatus.FAIL: 1>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted a ZDO request: dst_addr=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0xE837), dst_ep=0, src_ep=0, cluster=ZDOCmd.Node_Desc_req, sequence=250, options=TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST, radius=30, data=b'\xfa7\xe8'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted AP ZDO request ZDOCmd.Node_Desc_req({'NWKAddrOfInterest': 0xE837}) and replaced with ZDO.NodeDescReq.Req(DstAddr=0xE837, NWKAddrOfInterest=0xE837)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.NodeDescReq.Req(DstAddr=0xE837, NWKAddrOfInterest=0xE837)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.NodeDescReq.Rsp(Status=<Status.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.NodeDescRsp.Callback(Src=0xE837, Status=<Status.SUCCESS: 0>, NWK=0xE837, NodeDescriptor=NullableNodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered|FullFunctionDevice: 142>, manufacturer_code=4151, maximum_buffer_size=127, maximum_incoming_transfer_size=100, server_mask=11264, maximum_outgoing_transfer_size=100, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False))
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Pretending we received a ZDO message: b'\xFA\x00\x37\xE8\x01\x40\x8E\x37\x10\x7F\x64\x00\x00\x2C\x64\x00\x00'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.application] Received frame on uninitialized device <Device model=None manuf=None nwk=0xE837 ieee=00:15:8d:00:04:ff:ff:ff is_initialized=False> from ep 0 to ep 0, cluster ZDOCmd.Node_Desc_rsp: b'\xFA\x00\x37\xE8\x01\x40\x8E\x37\x10\x7F\x64\x00\x00\x2C\x64\x00\x00'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 INFO (MainThread) [zigpy.device] [0xe837] Got Node Descriptor: NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered|FullFunctionDevice: 142>, manufacturer_code=4151, maximum_buffer_size=127, maximum_incoming_transfer_size=100, server_mask=11264, maximum_outgoing_transfer_size=100, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 INFO (MainThread) [zigpy.device] [0xe837] Discovering endpoints
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.util] Tries remaining: 3
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteChk.Req(Dst=0xE837, RtStatus=<RouteStatus.ACTIVE: 1>, Options=<RouteOptions.NO_ROUTE_CACHE|MTO_ROUTE: 3>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.ExtRouteChk.Rsp(Status=<RoutingStatus.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted a ZDO request: dst_addr=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0xE837), dst_ep=0, src_ep=0, cluster=ZDOCmd.Active_EP_req, sequence=251, options=TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST, radius=30, data=b'\xfb7\xe8'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted AP ZDO request ZDOCmd.Active_EP_req({'NWKAddrOfInterest': 0xE837}) and replaced with ZDO.ActiveEpReq.Req(DstAddr=0xE837, NWKAddrOfInterest=0xE837)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ActiveEpReq.Req(DstAddr=0xE837, NWKAddrOfInterest=0xE837)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.ActiveEpReq.Rsp(Status=<Status.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.ActiveEpRsp.Callback(Src=0xE837, Status=<Status.SUCCESS: 0>, NWK=0xE837, ActiveEndpoints=[1, 242])
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Pretending we received a ZDO message: b'\xFB\x00\x37\xE8\x02\x01\xF2'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.application] Received frame on uninitialized device <Device model=None manuf=None nwk=0xE837 ieee=00:15:8d:00:04:ff:ff:ff is_initialized=False> from ep 0 to ep 0, cluster ZDOCmd.Active_EP_rsp: b'\xFB\x00\x37\xE8\x02\x01\xF2'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 INFO (MainThread) [zigpy.device] [0xe837] Discovered endpoints: [1, 242]
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 INFO (MainThread) [zigpy.device] [0xe837] Initializing endpoints [<Endpoint id=1 in=[] out=[] status=<Status.NEW: 0>>, <Endpoint id=242 in=[] out=[] status=<Status.NEW: 0>>]
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 INFO (MainThread) [zigpy.endpoint] [0xe837:1] Discovering endpoint information
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.util] Tries remaining: 3
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteChk.Req(Dst=0xE837, RtStatus=<RouteStatus.ACTIVE: 1>, Options=<RouteOptions.NO_ROUTE_CACHE|MTO_ROUTE: 3>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.ExtRouteChk.Rsp(Status=<RoutingStatus.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted a ZDO request: dst_addr=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0xE837), dst_ep=0, src_ep=0, cluster=ZDOCmd.Simple_Desc_req, sequence=252, options=TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST, radius=30, data=b'\xfc7\xe8\x01'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted AP ZDO request ZDOCmd.Simple_Desc_req({'NWKAddrOfInterest': 0xE837, 'EndPoint': 1}) and replaced with ZDO.SimpleDescReq.Req(DstAddr=0xE837, NWKAddrOfInterest=0xE837, Endpoint=1)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.SimpleDescReq.Req(DstAddr=0xE837, NWKAddrOfInterest=0xE837, Endpoint=1)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.SimpleDescReq.Rsp(Status=<Status.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.SimpleDescRsp.Callback(Src=0xE837, Status=<Status.SUCCESS: 0>, NWK=0xE837, SimpleDescriptor=SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=83, device_version=1, input_clusters=[0, 3, 1794, 2820, 2817, 65382], output_clusters=[25]))
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Pretending we received a ZDO message: b'\xFC\x00\x37\xE8\x16\x01\x04\x01\x53\x00\x01\x06\x00\x00\x03\x00\x02\x07\x04\x0B\x01\x0B\x66\xFF\x01\x19\x00'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.application] Received frame on uninitialized device <Device model=None manuf=None nwk=0xE837 ieee=00:15:8d:00:04:ff:ff:ff is_initialized=False> from ep 0 to ep 0, cluster ZDOCmd.Simple_Desc_rsp: b'\xFC\x00\x37\xE8\x16\x01\x04\x01\x53\x00\x01\x06\x00\x00\x03\x00\x02\x07\x04\x0B\x01\x0B\x66\xFF\x01\x19\x00'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 INFO (MainThread) [zigpy.endpoint] [0xe837:1] Discovered endpoint information: SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=83, device_version=1, input_clusters=[0, 3, 1794, 2820, 2817, 65382], output_clusters=[25])
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 INFO (MainThread) [zigpy.endpoint] [0xe837:242] Discovering endpoint information
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.util] Tries remaining: 3
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteChk.Req(Dst=0xE837, RtStatus=<RouteStatus.ACTIVE: 1>, Options=<RouteOptions.NO_ROUTE_CACHE|MTO_ROUTE: 3>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.ExtRouteChk.Rsp(Status=<RoutingStatus.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted a ZDO request: dst_addr=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0xE837), dst_ep=0, src_ep=0, cluster=ZDOCmd.Simple_Desc_req, sequence=253, options=TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST, radius=30, data=b'\xfd7\xe8\xf2'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted AP ZDO request ZDOCmd.Simple_Desc_req({'NWKAddrOfInterest': 0xE837, 'EndPoint': 242}) and replaced with ZDO.SimpleDescReq.Req(DstAddr=0xE837, NWKAddrOfInterest=0xE837, Endpoint=242)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.SimpleDescReq.Req(DstAddr=0xE837, NWKAddrOfInterest=0xE837, Endpoint=242)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.SimpleDescReq.Rsp(Status=<Status.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.SimpleDescRsp.Callback(Src=0xE837, Status=<Status.SUCCESS: 0>, NWK=0xE837, SimpleDescriptor=SizePrefixedSimpleDescriptor(endpoint=242, profile=41440, device_type=97, device_version=0, input_clusters=[33], output_clusters=[33]))
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Pretending we received a ZDO message: b'\xFD\x00\x37\xE8\x0C\xF2\xE0\xA1\x61\x00\x00\x01\x21\x00\x01\x21\x00'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.application] Received frame on uninitialized device <Device model=None manuf=None nwk=0xE837 ieee=00:15:8d:00:04:ff:ff:ff is_initialized=False> from ep 0 to ep 0, cluster ZDOCmd.Simple_Desc_rsp: b'\xFD\x00\x37\xE8\x0C\xF2\xE0\xA1\x61\x00\x00\x01\x21\x00\x01\x21\x00'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 INFO (MainThread) [zigpy.endpoint] [0xe837:242] Discovered endpoint information: SizePrefixedSimpleDescriptor(endpoint=242, profile=41440, device_type=97, device_version=0, input_clusters=[33], output_clusters=[33])
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: AF.DataRequestExt.Req(DstAddrModeAddress=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0xE837), DstEndpoint=1, DstPanId=0x0000, SrcEndpoint=1, ClusterId=0, TSN=254, Options=<TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST: 48>, Radius=30, Data=b'\x00\xFE\x00\x04\x00\x05\x00')
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.DataRequestExt.Rsp(Status=<Status.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.DataConfirm.Callback(Status=<Status.SUCCESS: 0>, Endpoint=1, TSN=254)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.IncomingMsg.Callback(GroupId=0x0000, ClusterId=0, SrcAddr=0xE837, SrcEndpoint=1, DstEndpoint=1, WasBroadcast=<Bool.false: 0>, LQI=69, SecurityUse=<Bool.false: 0>, TimeStamp=7407223, TSN=0, Data=b'\x18\xFE\x01\x04\x00\x00\x42\x05\x4C\x69\x58\x65\x65\x05\x00\x00\x42\x0B\x5A\x4C\x69\x6E\x6B\x79\x5F\x54\x49\x43\x00', MacSrcAddr=0x0BA5, MsgResultRadius=28)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.zcl] [0xe837:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=254 command_id=Command.Read_Attributes_rsp>
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 INFO (MainThread) [zigpy.device] [0xe837] Read model 'ZLinky_TIC' and manufacturer 'LiXee' from <Endpoint id=1 in=[basic:0x0000, identify:0x0003, smartenergy_metering:0x0702, electrical_measurement:0x0B04, meter_id:0x0B01, manufacturer_specific:0xFF66] out=[ota:0x0019] status=<Status.ZDO_INIT: 1>>
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 INFO (MainThread) [zigpy.device] [0xe837] Discovered basic device information for <Device model='ZLinky_TIC' manuf='LiXee' nwk=0xE837 ieee=00:15:8d:00:04:ff:ff:ff is_initialized=True>
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.application] Device is initialized <Device model='ZLinky_TIC' manuf='LiXee' nwk=0xE837 ieee=00:15:8d:00:04:ff:ff:ff is_initialized=True>
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.quirks.registry] Checking quirks for LiXee ZLinky_TIC (00:15:8d:00:04:ff:ff:ff)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.xbee.xbee_io.XBeeSensor'>
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {232, 230} {1, 242}
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.xbee.xbee3_io.XBee3Sensor'>
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {232, 230} {1, 242}
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.smartthings.tag_v4.SmartThingsTagV4'>
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {1} {1, 242}
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.smartthings.multi.SmartthingsMultiPurposeSensor'>
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {1} {1, 242}
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.netvox.z308e3ed.Z308E3ED'>
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {1} {1, 242}
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.gledopto.soposhgu10.SoposhGU10'>
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {11, 13} {1, 242}
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'bellows.zigbee.application.EZSPCoordinator'>
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {1} {1, 242}
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.discovery] 'sensor' component -> 'ElectricalMeasurement' using ['electrical_measurement']
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.discovery] 'sensor' component -> 'ElectricalMeasurementRMSCurrent' using ['electrical_measurement']
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.discovery] 'sensor' component -> 'ElectricalMeasurementRMSVoltage' using ['electrical_measurement']
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.discovery] 'sensor' component -> 'SmartEnergyMetering' using ['smartenergy_metering']
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.discovery] 'sensor' component -> 'SmartEnergySummation' using ['smartenergy_metering']
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.gateway] device - 0xE837:00:15:8d:00:04:ff:ff:ff entering async_device_initialized - is_new_join: True
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.gateway] device - 0xE837:00:15:8d:00:04:ff:ff:ff has joined the ZHA zigbee network
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.device] [0xE837](ZLinky_TIC): started configuration
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:ZDO](ZLinky_TIC): 'async_configure' stage succeeded
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteChk.Req(Dst=0xE837, RtStatus=<RouteStatus.ACTIVE: 1>, Options=<RouteOptions.NO_ROUTE_CACHE|MTO_ROUTE: 3>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0000]: finished channel configuration
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0019]: finished channel configuration
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.appdb] Error handling '_save_attribute' event with (00:15:8d:00:04:ff:ff:ff, 1, 0, 4, 'LiXee') params: FOREIGN KEY constraint failed
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.appdb] Error handling '_save_attribute' event with (00:15:8d:00:04:ff:ff:ff, 1, 0, 5, 'ZLinky_TIC') params: FOREIGN KEY constraint failed
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.ExtRouteChk.Rsp(Status=<RoutingStatus.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted a ZDO request: dst_addr=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0xE837), dst_ep=0, src_ep=0, cluster=ZDOCmd.Bind_req, sequence=255, options=TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST, radius=30, data=b'\xff\xFF\xFF\xFF\x04\x00\x8d\x15\x00\x01\x04\x0b\x03\xa5\x7f\xb7!\x00K\x12\x00\x01'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted AP ZDO request ZDOCmd.Bind_req({'SrcAddress': 00:15:8d:00:04:ff:ff:ff, 'SrcEndpoint': 1, 'ClusterID': 2820, 'DstAddress': MultiAddress(addrmode=3, ieee=00:12:4b:00:21:b7:7f:a5, endpoint=1)}) and replaced with ZDO.BindReq.Req(Dst=0xE837, Src=00:15:8d:00:04:ff:ff:ff, SrcEndpoint=1, ClusterId=2820, Address=MultiAddress(addrmode=3, ieee=00:12:4b:00:21:b7:7f:a5, endpoint=1))
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteChk.Req(Dst=0xE837, RtStatus=<RouteStatus.ACTIVE: 1>, Options=<RouteOptions.NO_ROUTE_CACHE|MTO_ROUTE: 3>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.ExtRouteChk.Rsp(Status=<RoutingStatus.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted a ZDO request: dst_addr=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0xE837), dst_ep=0, src_ep=0, cluster=ZDOCmd.Bind_req, sequence=0, options=TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST, radius=30, data=b'\x00\xFF\xFF\xFF\x04\x00\x8d\x15\x00\x01\x02\x07\x03\xa5\x7f\xb7!\x00K\x12\x00\x01'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted AP ZDO request ZDOCmd.Bind_req({'SrcAddress': 00:15:8d:00:04:ff:ff:ff, 'SrcEndpoint': 1, 'ClusterID': 1794, 'DstAddress': MultiAddress(addrmode=3, ieee=00:12:4b:00:21:b7:7f:a5, endpoint=1)}) and replaced with ZDO.BindReq.Req(Dst=0xE837, Src=00:15:8d:00:04:ff:ff:ff, SrcEndpoint=1, ClusterId=1794, Address=MultiAddress(addrmode=3, ieee=00:12:4b:00:21:b7:7f:a5, endpoint=1))
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.BindReq.Req(Dst=0xE837, Src=00:15:8d:00:04:ff:ff:ff, SrcEndpoint=1, ClusterId=2820, Address=MultiAddress(addrmode=3, ieee=00:12:4b:00:21:b7:7f:a5, endpoint=1))
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.BindReq.Rsp(Status=<Status.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.BindReq.Req(Dst=0xE837, Src=00:15:8d:00:04:ff:ff:ff, SrcEndpoint=1, ClusterId=1794, Address=MultiAddress(addrmode=3, ieee=00:12:4b:00:21:b7:7f:a5, endpoint=1))
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.BindReq.Rsp(Status=<Status.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.BindRsp.Callback(Src=0xE837, Status=<Status.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Pretending we received a ZDO message: b'\xFF\x00'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0b04]: bound 'electrical_measurement' cluster: Status.SUCCESS
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: AF.DataRequestExt.Req(DstAddrModeAddress=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0xE837), DstEndpoint=1, DstPanId=0x0000, SrcEndpoint=1, ClusterId=2820, TSN=1, Options=<TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST: 48>, Radius=30, Data=b'\x00\x01\x06\x00\x0B\x05\x29\x05\x00\x84\x03\x01\x00\x00\x0D\x05\x29\x1E\x00\x84\x03\x01\x00\x00\x08\x05\x21\x05\x00\x84\x03\x01\x00')
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.DataRequestExt.Rsp(Status=<Status.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.BindRsp.Callback(Src=0xE837, Status=<Status.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Pretending we received a ZDO message: b'\x00\x00'
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0702]: bound 'smartenergy_metering' cluster: Status.SUCCESS
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: AF.DataRequestExt.Req(DstAddrModeAddress=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0xE837), DstEndpoint=1, DstPanId=0x0000, SrcEndpoint=1, ClusterId=1794, TSN=2, Options=<TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST: 48>, Radius=30, Data=b'\x00\x02\x06\x00\x00\x04\x2A\x05\x00\x84\x03\x01\x00\x00\x00\x00\x00\x25\x1E\x00\x84\x03\x01\x00\x00\x00\x00\x00\x00\x00\x02\x18\x01\x00\x84\x03')
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.DataRequestExt.Rsp(Status=<Status.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.DataConfirm.Callback(Status=<Status.SUCCESS: 0>, Endpoint=1, TSN=1)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.IncomingMsg.Callback(GroupId=0x0000, ClusterId=2820, SrcAddr=0xE837, SrcEndpoint=1, DstEndpoint=1, WasBroadcast=<Bool.false: 0>, LQI=66, SecurityUse=<Bool.false: 0>, TimeStamp=7423626, TSN=0, Data=b'\x18\x01\x07\x8C\x00\x0D\x05', MacSrcAddr=0x0BA5, MsgResultRadius=28)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.zcl] [0xe837:1:0x0b04] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=1 command_id=Command.Configure_Reporting_rsp>
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0b04]: Successfully configured reporting for '{'active_power', 'rms_current'}' on 'electrical_measurement' cluster
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0b04]: Failed to configure reporting for '['active_power_max']' on 'electrical_measurement' cluster: [ConfigureReportingResponseRecord(status=140, direction=0, attrid=1293)]
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: AF.DataRequestExt.Req(DstAddrModeAddress=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0xE837), DstEndpoint=1, DstPanId=0x0000, SrcEndpoint=1, ClusterId=2820, TSN=3, Options=<TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST: 48>, Radius=30, Data=b'\x00\x03\x06\x00\x0A\x05\x21\x1E\x00\x84\x03\x01\x00\x00\x05\x05\x21\x05\x00\x84\x03\x01\x00\x00\x07\x05\x21\x1E\x00\x84\x03\x01\x00')
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.DataConfirm.Callback(Status=<Status.SUCCESS: 0>, Endpoint=1, TSN=2)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.DataRequestExt.Rsp(Status=<Status.SUCCESS: 0>)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.DataConfirm.Callback(Status=<Status.SUCCESS: 0>, Endpoint=1, TSN=3)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.IncomingMsg.Callback(GroupId=0x0000, ClusterId=1794, SrcAddr=0xE837, SrcEndpoint=1, DstEndpoint=1, WasBroadcast=<Bool.false: 0>, LQI=66, SecurityUse=<Bool.false: 0>, TimeStamp=7434195, TSN=0, Data=b'\x18\x02\x07\x86\x00\x00\x04\x86\x00\x84\x03\x8C\x00\x00\x00', MacSrcAddr=0x0BA5, MsgResultRadius=28)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.zcl] [0xe837:1:0x0702] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=2 command_id=Command.Configure_Reporting_rsp>
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0702]: Successfully configured reporting for '{'status'}' on 'smartenergy_metering' cluster
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0702]: Failed to configure reporting for '['instantaneous_demand', 900, 'current_summ_delivered']' on 'smartenergy_metering' cluster: [ConfigureReportingResponseRecord(status=134, direction=0, attrid=1024), ConfigureReportingResponseRecord(status=134, direction=0, attrid=900), ConfigureReportingResponseRecord(status=140, direction=0, attrid=0)]
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0702]: finished channel configuration
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.IncomingMsg.Callback(GroupId=0x0000, ClusterId=2820, SrcAddr=0xE837, SrcEndpoint=1, DstEndpoint=1, WasBroadcast=<Bool.false: 0>, LQI=69, SecurityUse=<Bool.false: 0>, TimeStamp=7440070, TSN=0, Data=b'\x18\x03\x07\x8C\x00\x0A\x05\x86\x00\x07\x05', MacSrcAddr=0x0BA5, MsgResultRadius=28)
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [zigpy.zcl] [0xe837:1:0x0b04] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=3 command_id=Command.Configure_Reporting_rsp>
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0b04]: Successfully configured reporting for '{'rms_voltage'}' on 'electrical_measurement' cluster
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0b04]: Failed to configure reporting for '['rms_current_max', 'rms_voltage_max']' on 'electrical_measurement' cluster: [ConfigureReportingResponseRecord(status=140, direction=0, attrid=1290), ConfigureReportingResponseRecord(status=134, direction=0, attrid=1287)]
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0b04]: finished channel configuration
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0b04]: 'async_configure' stage succeeded
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0702]: 'async_configure' stage succeeded
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0000]: 'async_configure' stage succeeded
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0xE837:1:0x0019]: 'async_configure' stage succeeded
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.device] [0xE837](ZLinky_TIC): completed configuration
Nov 06 16:09:00 myhost hass[1643]: 2021-11-06 16:09:00 DEBUG (MainThread) [homeassistant.components.zha.core.device] [0xE837](ZLinky_TIC): stored in registry: ZhaDeviceEntry(name='LiXee ZLinky_TIC', ieee='00:15:8d:00:04:ff:ff:ff', last_seen=1636211340.9443586)
```

**Additional context**

Device is distributed directly by its independent French manufacturer at https://lixee.fr/produits/37-zigate-usb-ttl-3770014375148.html


Discussion:

Resolving patch:
diff --git a/zhaquirks/lixee/__init__.py b/zhaquirks/lixee/__init__.py
--- a/zhaquirks/lixee/__init__.py
+++ b/zhaquirks/lixee/__init__.py
@@ -1,3 +1,5 @@
 """Module for LiXee devices quirks."""
 
 LIXEE = "LiXee"
+
+ZLINKY_MANUFACTURER_CLUSTER_ID = 0xFF66
diff --git a/zhaquirks/lixee/zlinky.py b/zhaquirks/lixee/zlinky.py
--- a/zhaquirks/lixee/zlinky.py
+++ b/zhaquirks/lixee/zlinky.py
@@ -1,8 +1,10 @@
 """Quirk for ZLinky_TIC."""
 from zigpy.profiles import zha
 from zigpy.quirks import CustomCluster, CustomDevice
+import zigpy.types as t
 from zigpy.zcl.clusters.general import Basic, GreenPowerProxy, Identify, Ota
 from zigpy.zcl.clusters.homeautomation import ElectricalMeasurement, MeterIdentification
+from zigpy.zcl.clusters.manufacturer_specific import ManufacturerSpecificCluster
 from zigpy.zcl.clusters.smartenergy import Metering
 
 from zhaquirks.const import (
@@ -13,7 +15,115 @@
     OUTPUT_CLUSTERS,
     PROFILE_ID,
 )
-from zhaquirks.lixee import LIXEE
+from zhaquirks.lixee import LIXEE, ZLINKY_MANUFACTURER_CLUSTER_ID
+
+
+class ZLinkyTICManufacturerCluster(CustomCluster, ManufacturerSpecificCluster):
+    """ZLinkyTICManufacturerCluster manufacturer cluster."""
+
+    cluster_id = ZLINKY_MANUFACTURER_CLUSTER_ID
+    name = "ZLinky_TIC Manufacturer specific"
+    ep_attribute = "zlinky_manufacturer_specific"
+
+    # The attribute comments below are in French to match the reference documentation,
+    # see https://github.com/fairecasoimeme/Zlinky_TIC/tree/v9.0#synth%C3%A8se-d%C3%A9veloppeur
+    # and https://github.com/fairecasoimeme/Zlinky_TIC/blob/v9.0/ZLinky/Source/LixeeCluster.h
+    attributes = {
+        # Historical mode: OPTARIF "Option tarifaire" / String 4 car
+        # Standard mode: NGTF "Nom du calendrier tarifaire fournisseur" / String 16 car
+        0x0000: (
+            "hist_tariff_option_or_std_supplier_price_schedule_name",
+            t.LimitedCharString(16),
+            True,
+        ),
+        # Historical mode: DEMAIN "Couleur du lendemain" / String 4 car
+        0x0001: ("hist_tomorrow_color", t.LimitedCharString(4), True),
+        # Historical mode: HHPHC "Horaire Heure Pleines Heures Creuses" / Uint8 1 car
+        0x0002: ("hist_schedule_peak_hours_off_peak_hours", t.uint8_t, True),
+        # Historical mode: PPOT "Présence des potentiels" (Triphasé) / Uint8 2 car
+        0x0003: ("hist_potentials_presence", t.uint8_t, True),
+        # Historical mode: PEJP "Préavis début EJP(30min)" / Uint8 2 car
+        0x0004: ("hist_ejp_start_notice", t.uint8_t, True),
+        # Historical mode: ADPS "Avertissement de Dépassement De Puissance Souscrite" / Uint16 3 car
+        0x0005: ("hist_subscribed_power_exceeding_warning", t.uint16_t, True),
+        # Historical mode: ADIR1 "Avertissement de Dépassement D'intensité phase 1" / Uint16 3 car
+        0x0006: ("hist_current_exceeding_warning_phase_1", t.uint16_t, True),
+        # Historical mode: ADIR2 "Avertissement de Dépassement D'intensité phase 2" / Uint16 3 car
+        0x0007: ("hist_current_exceeding_warning_phase_2", t.uint16_t, True),
+        # Historical mode: ADIR3 "Avertissement de Dépassement D'intensité phase 3" / Uint16 3 car
+        0x0008: ("hist_current_exceeding_warning_phase_3", t.uint16_t, True),
+        # Historical and Standard mode: "Linky acquisition time (From V7)"" / Uint8 1 car
+        0x0100: ("linky_acquisition_time", t.uint8_t, True),
+        # Standard mode: LTARF "Libellé tarif fournisseur en cours" / String 16 car
+        0x0200: (
+            "std_current_supplier_price_description",
+            t.LimitedCharString(16),
+            True,
+        ),
+        # Standard mode: NTARF "Numéro de l’index tarifaire en cours" / Uint8 2 car
+        0x0201: ("std_current_tariff_index_number", t.uint8_t, True),
+        # Standard mode: DATE "Date et heure courant" / String 10 car
+        0x0202: ("std_current_date_and_time", t.LimitedCharString(10), True),
+        # Standard mode: EASD01 "Energie active soutirée Distributeur, index 01" / Uint32 9 car
+        0x0203: ("std_active_energy_withdrawn_distributor_index_01", t.uint32_t, True),
+        # Standard mode: EASD02 "Energie active soutirée Distributeur, index 02" / Uint32 9 car
+        0x0204: ("std_active_energy_withdrawn_distributor_index_02", t.uint32_t, True),
+        # Standard mode: EASD03 "Energie active soutirée Distributeur, index 03" / Uint32 9 car
+        0x0205: ("std_active_energy_withdrawn_distributor_index_03", t.uint32_t, True),
+        # Standard mode: EASD04 "Energie active soutirée Distributeur, index 04" / Uint32 9 car
+        0x0206: ("std_active_energy_withdrawn_distributor_index_04", t.uint32_t, True),
+        # Standard mode: SINSTI "Puissance app. Instantanée injectée" (Production) / Uint16 5 car
+        0x0207: ("std_apparent_power_injected_instantaneous", t.uint16_t, True),
+        # Standard mode: SMAXIN "Puissance app max. injectée n" (Production) / Uint16 5 car
+        0x0208: ("std_apparent_power_injected_max", t.uint16_t, True),
+        # Standard mode: SMAXIN-1 "Puissance app max. injectée n-1" (Production) / Uint16 5 car
+        0x0209: ("std_apparent_power_injected_max_1", t.uint16_t, True),
+        # Standard mode: CCAIN "Point n de la courbe de charge active injectée" (Production) / Uint16 5 car
+        0x0210: ("std_injected_active_load_curve_point_n", t.uint16_t, True),
+        # Standard mode: CCAIN-1 "Point n-1 de la courbe de charge active injectée" (Production) / Uint16 5 car
+        0x0211: ("std_injected_active_load_curve_point_n_1", t.uint16_t, True),
+        # Standard mode: SMAXN-1 "Puissance app. max. soutirée n-1" (Monophasé) / Uint16 5 car
+        # Standard mode: SMAXN1-1 "Puissance app. max. soutirée n-1 ph.1" (Triphasé) / Uint16 5 car
+        0x0212: ("std_apparent_power_withdrawn_max_phase_1_n_1", t.uint16_t, True),
+        # Standard mode: SMAXN2-1 "Puissance app. max. soutirée n-1 ph. 2" (Triphasé) / Uint16 5 car
+        0x0213: ("std_apparent_power_withdrawn_max_phase_2_n_1", t.uint16_t, True),
+        # Standard mode: SMAXN3-1 "Puissance app. max. soutirée n-1 ph. 3" (Triphasé) / Uint16 5 car
+        0x0214: ("std_apparent_power_withdrawn_max_phase_3_n_1", t.uint16_t, True),
+        # Standard mode: MSG1 "Message court" / String 32 car
+        0x0215: ("std_message_short", t.LimitedCharString(32), True),
+        # Standard mode: MSG2 "Message ultra court" / String 16 car
+        0x0216: ("std_message_ultra_short", t.LimitedCharString(16), True),
+        # Standard mode: STGE "Registre de Statuts" / String 8 car
+        0x0217: ("std_status_register", t.LimitedCharString(8), True),
+        # Standard mode: DPM1 "Début Pointe Mobile 1" / Uint8 2 car
+        0x0218: ("std_mobile_peak_start_1", t.uint8_t, True),
+        # Standard mode: FPM1 "Fin Pointe Mobile 1" / Uint8 2 car
+        0x0219: ("std_mobile_peak_end_1", t.uint8_t, True),
+        # Standard mode: DPM2 "Début Pointe Mobile 2" / Uint8 2 car
+        0x0220: ("std_mobile_peak_start_2", t.uint8_t, True),
+        # Standard mode: FPM2 "Fin Pointe Mobile 2" / Uint8 2 car
+        0x0221: ("std_mobile_peak_end_2", t.uint8_t, True),
+        # Standard mode: DPM3 "Début Pointe Mobile 3" / Uint8 2 car
+        0x0222: ("std_mobile_peak_start_3", t.uint8_t, True),
+        # Standard mode: FPM3 "Fin Pointe Mobile 3" / Uint8 2 car
+        0x0223: ("std_mobile_peak_end_3", t.uint8_t, True),
+        # Standard mode: RELAIS "RELAIS" / Uint16 3 car
+        0x0224: ("std_relay", t.uint8_t, True),
+        # Standard mode: NJOURF "Numéro du jour en cours calendrier fournisseur" / Uint8 2 car
+        0x0225: ("std_supplier_calendar_current_day_number", t.uint8_t, True),
+        # Standard mode: NJOURF+1 "Numéro du prochain jour calendrier fournisseur" / Uint8 2 car
+        0x0226: ("std_supplier_calendar_next_day_number", t.uint8_t, True),
+        # Standard mode: PJOURF+1 "Profil du prochain jour calendrier fournisseur" / String 98 car
+        0x0227: (
+            "std_supplier_calendar_next_day_profile",
+            t.LimitedCharString(98),
+            True,
+        ),
+        # Standard mode: PPOINTE1 "Profil du prochain jour de pointe" / String 98 car
+        0x0228: ("std_next_peak_day_profile", t.LimitedCharString(98), True),
+        # Historical and Standard mode: - "Linky Mode (From V4)" / Uint8 1 car
+        0x0300: ("linky_mode", t.uint8_t, True),
+    }
 
 
 class ZLinkyTICMetering(CustomCluster, Metering):
@@ -41,7 +151,7 @@ class ZLinkyTIC(CustomDevice):
                     Metering.cluster_id,
                     MeterIdentification.cluster_id,
                     ElectricalMeasurement.cluster_id,
-                    0xFF66,  # Manufacturer Specific
+                    ZLinkyTICManufacturerCluster.cluster_id,
                 ],
                 OUTPUT_CLUSTERS: [Ota.cluster_id],
             },
@@ -64,7 +174,7 @@ class ZLinkyTIC(CustomDevice):
                     ZLinkyTICMetering,
                     MeterIdentification.cluster_id,
                     ElectricalMeasurement.cluster_id,
-                    0xFF66,  # Manufacturer Specific
+                    ZLinkyTICManufacturerCluster,
                 ],
                 OUTPUT_CLUSTERS: [Ota.cluster_id],
             },


Test patch: