Repository: zigpy/zha-device-handlers

Issue:
[BUG] Lonsonho Tuya Zigbee Wireless Smart Scene Switch wrongly identified
I have just got a [Lonsonho Tuya Zigbee Wireless Smart Scene Switch 4 Gang](https://www.aliexpress.com/item/4001095272467.html) which when added to ZHA shows up as 4 switches and a battery sensor. Nowhere is the button state exposed. I have added this using Zigbee2MQTT and it is exposed as expected and is useable in automations. My coordinator is a [Sonoff CC2531](https://itead.cc/product/cc2531-usb-dongle/) stick flashed with [Z-stack firmware](https://github.com/Koenkk/Z-Stack-firmware/blob/master/coordinator/Z-Stack_Home_1.2/bin/default/CC2531_DEFAULT_20211115.zip). Please see the attached screenshots for details. 

What ZHA shows:
<img width="1073" alt="Screenshot 2022-01-23 at 2 46 02 pm" src="https://user-images.githubusercontent.com/38540799/150684604-f1941e5b-9d62-4d9e-a0e5-5f9400e304f3.png">

What Zigbee2MQTT shows:
<img width="813" alt="Screenshot 2022-01-23 at 2 41 23 pm" src="https://user-images.githubusercontent.com/38540799/150684607-76f54319-4858-4dfe-ad5f-2491ef223af6.png">

Device signature:

`{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, manufacturer_code=4417, maximum_buffer_size=66, maximum_incoming_transfer_size=66, server_mask=10752, maximum_outgoing_transfer_size=66, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0x0000",
      "in_clusters": [
        "0x0000",
        "0x0001",
        "0x0006",
        "0xe000"
      ],
      "out_clusters": [
        "0x000a",
        "0x0019"
      ]
    },
    "2": {
      "profile_id": 260,
      "device_type": "0x0000",
      "in_clusters": [
        "0x0001",
        "0x0006"
      ],
      "out_clusters": []
    },
    "3": {
      "profile_id": 260,
      "device_type": "0x0000",
      "in_clusters": [
        "0x0001",
        "0x0006"
      ],
      "out_clusters": []
    },
    "4": {
      "profile_id": 260,
      "device_type": "0x0000",
      "in_clusters": [
        "0x0001",
        "0x0006"
      ],
      "out_clusters": []
    }
  },
  "manufacturer": "_TZ3000_uaa99arv",
  "model": "TS0044",
  "class": "zigpy.device.Device"
}`

Logs:

Device 0x21f3 (a4:c1:38:fb:52:7a:17:20) left the network
[0x21F3:1:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_TRANSACTION_EXPIRED: 240>
[0x21F3:1:0x0006]: async_initialize: retryable request #3 failed: Request failed after 5 attempts: <Status.MAC_TRANSACTION_EXPIRED: 240>. Retrying in 3.0s
[0x21F3:1:0x0001]: failed to get attributes '['battery_voltage', 'battery_percentage_remaining']' on 'power' cluster: Request failed after 5 attempts: <Status.NWK_INVALID_REQUEST: 194>
[0x21F3:1:0x0001]: async_initialize: retryable request #3 failed: Request failed after 5 attempts: <Status.NWK_INVALID_REQUEST: 194>. Retrying in 2.3s
[0x21F3:1:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x4f request
[0x21F3:1:0x0001]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x50 request
[0x21F3:2:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.NWK_INVALID_REQUEST: 194>
[0x21F3:2:0x0006]: async_initialize: retryable request #3 failed: Request failed after 5 attempts: <Status.NWK_INVALID_REQUEST: 194>. Retrying in 3.2s
Device 0x6f1a (a4:c1:38:fb:52:7a:17:20) joined the network
Device a4:c1:38:fb:52:7a:17:20 changed id (0x6f1a => 0x6f1a)
[0x6f1a] Skipping initialization, device is fully initialized
Device is initialized <Device model='TS0044' manuf='_TZ3000_uaa99arv' nwk=0x6F1A ieee=a4:c1:38:fb:52:7a:17:20 is_initialized=True>
Checking quirks for _TZ3000_uaa99arv TS0044 (a4:c1:38:fb:52:7a:17:20)
Considering <class 'zhaquirks.tuya.ts0044.TuyaSmartRemote0044TO'>
Fail because input cluster mismatch on at least one endpoint
Considering <class 'zhaquirks.tuya.ts0044.TuyaSmartRemote0044TI'>
Fail because input cluster mismatch on at least one endpoint
Considering <class 'zhaquirks.xbee.xbee_io.XBeeSensor'>
Fail because endpoint list mismatch: {232, 230} {1, 2, 3, 4}
Considering <class 'zhaquirks.xbee.xbee3_io.XBee3Sensor'>
Fail because endpoint list mismatch: {232, 230} {1, 2, 3, 4}
Considering <class 'zhaquirks.smartthings.tag_v4.SmartThingsTagV4'>
Fail because endpoint list mismatch: {1} {1, 2, 3, 4}
Considering <class 'zhaquirks.smartthings.multi.SmartthingsMultiPurposeSensor'>
Fail because endpoint list mismatch: {1} {1, 2, 3, 4}
Considering <class 'zhaquirks.netvox.z308e3ed.Z308E3ED'>
Fail because endpoint list mismatch: {1} {1, 2, 3, 4}
Considering <class 'zhaquirks.gledopto.soposhgu10.SoposhGU10'>
Fail because endpoint list mismatch: {11, 13} {1, 2, 3, 4}
Considering <class 'bellows.zigbee.application.EZSPCoordinator'>
Fail because endpoint list mismatch: {1} {1, 2, 3, 4}
device - 0x6F1A:a4:c1:38:fb:52:7a:17:20 entering async_device_initialized - is_new_join: True
device - 0x6F1A:a4:c1:38:fb:52:7a:17:20 has joined the ZHA zigbee network
[0x21F3](TS0044): started configuration
[0x21F3:ZDO](TS0044): 'async_configure' stage succeeded
Device a4:c1:38:fb:52:7a:17:20 already exists. Updating it.
Device 0x6f1a (a4:c1:38:fb:52:7a:17:20) joined the network
[0x6f1a:zdo] ZDO request ZDOCmd.Device_annce: [0x6F1A, a4:c1:38:fb:52:7a:17:20, 128]
[0x6f1a:1:0x0006] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=79 command_id=Command.Read_Attributes_rsp>
[0x6f1a:1:0x0006] ZCL request 0x0001: [[ReadAttributeRecord(attrid=0, status=<Status.SUCCESS: 0>, value=<TypeValue type=Bool, value=Bool.false>)]]
[0x21F3:2:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x51 request
[0x6f1a:1:0x0001] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=80 command_id=Command.Read_Attributes_rsp>
[0x6f1a:1:0x0001] ZCL request 0x0001: [[ReadAttributeRecord(attrid=32, status=<Status.SUCCESS: 0>, value=<TypeValue type=uint8_t, value=28>), ReadAttributeRecord(attrid=33, status=<Status.SUCCESS: 0>, value=<TypeValue type=uint8_t, value=138>)]]
[0x21F3:2:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:2:0x0006]: async_initialize: all attempts have failed: [DeliveryError('Request failed after 5 attempts: <Status.MAC_TRANSACTION_EXPIRED: 240>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_TRANSACTION_EXPIRED: 240>'), DeliveryError('Request failed after 5 attempts: <Status.NWK_INVALID_REQUEST: 194>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>')]
[0x21F3:3:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x52 request
[0x21F3:2:0x0006]: 'async_initialize' stage succeeded
[0x21F3:3:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:3:0x0006]: async_initialize: retryable request #1 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 1.1s
[0x6f1a:1:0x000a] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=False disable_default_response=False> manufacturer=None tsn=82 command_id=Command.Read_Attributes>
[0x6f1a:1:0x000a] ZCL request 0x0000: [[7]]
[0x21F3:3:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x53 request
[0x21F3:3:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:3:0x0006]: async_initialize: retryable request #2 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 0.8s
[0x21F3:3:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x54 request
[0x21F3:3:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:3:0x0006]: async_initialize: retryable request #3 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 2.3s
[0x21F3:3:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x55 request
[0x21F3:3:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:3:0x0006]: async_initialize: all attempts have failed: [DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>')]
[0x21F3:4:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x56 request
[0x21F3:3:0x0006]: 'async_initialize' stage succeeded
[0x21F3:4:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:4:0x0006]: async_initialize: retryable request #1 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 1.0s
[0x21F3:1:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: 
[0x21F3:1:0x0006]: async_initialize: all attempts have failed: [DeliveryError('Request failed after 5 attempts: <Status.MAC_TRANSACTION_EXPIRED: 240>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_TRANSACTION_EXPIRED: 240>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_TRANSACTION_EXPIRED: 240>'), TimeoutError()]
[0x21F3:1:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x57 request
[0x21F3:4:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x58 request
[0x21F3:1:0x0001]: failed to get attributes '['battery_voltage', 'battery_percentage_remaining']' on 'power' cluster: 
[0x21F3:1:0x0001]: async_initialize: all attempts have failed: [DeliveryError('Request failed after 5 attempts: <Status.MAC_TRANSACTION_EXPIRED: 240>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_TRANSACTION_EXPIRED: 240>'), DeliveryError('Request failed after 5 attempts: <Status.NWK_INVALID_REQUEST: 194>'), TimeoutError()]
[0x21F3:1:0x0001]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x59 request
[0x21F3:1:0x0006]: 'async_initialize' stage succeeded
[0x21F3:1:0x0001]: 'async_initialize' stage succeeded
[0x21F3:1:0x0000]: 'async_initialize' stage succeeded
[0x21F3:1:0x0019]: 'async_initialize' stage succeeded
[0x21F3:1:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:1:0x0006]: async_initialize: retryable request #1 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 1.1s
[0x21F3:4:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:4:0x0006]: async_initialize: retryable request #2 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 1.0s
[0x21F3:1:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x5a request
[0x21F3:4:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x5b request
[0x21F3:1:0x0001]: failed to get attributes '['battery_voltage', 'battery_percentage_remaining']' on 'power' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:1:0x0001]: async_initialize: retryable request #1 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 0.8s
[0x21F3:1:0x0001]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x5c request
[0x21F3:1:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:1:0x0006]: async_initialize: retryable request #2 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 1.2s
[0x21F3:1:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x5d request
[0x21F3:4:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:4:0x0006]: async_initialize: retryable request #3 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 2.4s
[0x21F3:1:0x0001]: failed to get attributes '['battery_voltage', 'battery_percentage_remaining']' on 'power' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:1:0x0001]: async_initialize: retryable request #2 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 1.0s
[0x21F3:1:0x0001]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x5e request
[0x21F3:4:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x5f request
[0x21F3:1:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:1:0x0006]: async_initialize: retryable request #3 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 2.6s
[0x21F3:1:0x0001]: failed to get attributes '['battery_voltage', 'battery_percentage_remaining']' on 'power' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:1:0x0001]: async_initialize: retryable request #3 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 3.5s
[0x21F3:1:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x60 request
[0x21F3:4:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:4:0x0006]: async_initialize: all attempts have failed: [DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>')]
[0x21F3:1:0x0000]: initializing channel: from_cache: False
[0x21F3:1:0x0000]: finished channel initialization
[0x21F3:1:0x0019]: initializing channel: from_cache: False
[0x21F3:1:0x0019]: finished channel initialization
[0x21F3:4:0x0006]: 'async_initialize' stage succeeded
[0x21F3:2:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x61 request
[0x21F3](TS0044): power source: Battery or Unknown
[0x21F3](TS0044): completed initialization
[0x21F3:1:0x0001]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x62 request
[0x21F3:1:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:1:0x0006]: async_initialize: all attempts have failed: [DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>')]
[0x21F3:3:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x63 request
[0x21F3:2:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:2:0x0006]: async_initialize: retryable request #1 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 1.1s
[0x21F3:2:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x64 request
[0x21F3:1:0x0001]: failed to get attributes '['battery_voltage', 'battery_percentage_remaining']' on 'power' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:1:0x0001]: async_initialize: all attempts have failed: [DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>')]
[0x21F3:4:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x65 request
[0x21F3:1:0x0006]: 'async_initialize' stage succeeded
[0x21F3:1:0x0001]: 'async_initialize' stage succeeded
[0x21F3:1:0x0000]: 'async_initialize' stage succeeded
[0x21F3:1:0x0019]: 'async_initialize' stage succeeded
[0x21F3:3:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:3:0x0006]: async_initialize: retryable request #1 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 1.0s
[0x21F3:3:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x66 request
[0x21F3:2:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:2:0x0006]: async_initialize: retryable request #2 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 1.2s
[0x21F3:2:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x67 request
[0x21F3:4:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:4:0x0006]: async_initialize: retryable request #1 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 0.8s
[0x21F3:4:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x68 request
[0x21F3:3:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:3:0x0006]: async_initialize: retryable request #2 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 0.8s
[0x21F3:3:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x69 request
[0x21F3:2:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:2:0x0006]: async_initialize: retryable request #3 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 2.6s
[0x21F3:4:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:4:0x0006]: async_initialize: retryable request #2 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 0.9s
[0x21F3:2:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x6a request
[0x21F3:4:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x6b request
[0x21F3:3:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:3:0x0006]: async_initialize: retryable request #3 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 2.3s
[0x21F3:3:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x6c request
[0x21F3:2:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:2:0x0006]: async_initialize: all attempts have failed: [DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>')]
[0x21f3] Extending timeout for 0x6d request
[0x21F3:2:0x0006]: 'async_initialize' stage succeeded
[0x21F3:4:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:4:0x0006]: async_initialize: retryable request #3 failed: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>. Retrying in 2.6s
[0x21F3:4:0x0006]: initializing channel: from_cache: False
[0x21f3] Extending timeout for 0x6e request
[0x21F3:3:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:3:0x0006]: async_initialize: all attempts have failed: [DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>')]
[0x21f3] Extending timeout for 0x6f request
[0x21F3:3:0x0006]: 'async_initialize' stage succeeded
[0x21F3:4:0x0006]: failed to get attributes '['on_off']' on 'on_off' cluster: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:4:0x0006]: async_initialize: all attempts have failed: [DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>'), DeliveryError('Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>')]
[0x21F3:1:0x0000]: finished channel configuration
[0x21F3:1:0x0019]: finished channel configuration
[0x21F3:4:0x0006]: 'async_initialize' stage succeeded
[0x21f3] Extending timeout for 0x70 request
[0x21F3](TS0044): power source: Battery or Unknown
[0x21F3](TS0044): completed initialization
[0x21F3:1:0x0006]: Failed to bind 'on_off' cluster: 
[0x21f3] Extending timeout for 0x71 request
[0x21F3:1:0x0006]: failed to set reporting on 'on_off' cluster for: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:1:0x0006]: finished channel configuration
[0x21f3] Extending timeout for 0x72 request
[0x21F3:1:0x0001]: Failed to bind 'power' cluster: 
[0x21f3] Extending timeout for 0x73 request
[0x21F3:1:0x0001]: failed to set reporting on 'power' cluster for: Request failed after 5 attempts: <Status.MAC_NO_ACK: 233>
[0x21F3:1:0x0001]: finished channel configuration
[0x21f3] Extending timeout for 0x74 request
[0x21F3:1:0x0006]: 'async_configure' stage succeeded
[0x21F3:1:0x0001]: 'async_configure' stage succeeded
[0x21F3:1:0x0000]: 'async_configure' stage succeeded
[0x21F3:1:0x0019]: 'async_configure' stage succeeded


Discussion:
Your device is having one extra unknown cluster that we is not knowing what is doing.
Very likely is it being used for confiscating the relays then baying the switch version of the remote but we dont knowing.

I have adding one new device class in the original quirk and its looks OK but is 110% untested.
Configuring local quirk in ZHA https://github.com/zigpy/zha-device-handlers/discussions/693#discussioncomment-857274 and putting the quirk in the folder after taking the   `.txt` extension away (ts0044.py) and restarting HA [ts0044.py.txt](https://github.com/zigpy/zha-device-handlers/files/8060855/ts0044.py.txt).
If its loading OK you shall getting the new device class in the loaded quirk name.
The quirk is adding device automatons and also you shall getting `zha_event` in Developer Tools > Events > listening to events and putting in `zha_event` and clicking start listening.
You can also using those events in your automatons.

Then all ts004X remotes also can having relays and working and switches you is getting the light switches that is not working but we dont like taking them away and braking some devices for our users.

Pleas test if its working and reporting back. 
Link for the (likely) same remote but working as one light switch https://de.aliexpress.com/item/4000298926256.html?gatewayAdapt=glo2deu&spm=a2g0o.detail.1000023.7.77d95bcdDpxTOx.
I have just tested your quirk and it works perfectly! Thanks! This should be merged into the main repo.
Great !!
If you dont have any bad things i can making one PR so its in the next HA release and dont need local quirks.

Resolving patch:
diff --git a/zhaquirks/tuya/ts0044.py b/zhaquirks/tuya/ts0044.py
--- a/zhaquirks/tuya/ts0044.py
+++ b/zhaquirks/tuya/ts0044.py
@@ -21,7 +21,7 @@
     PROFILE_ID,
     SHORT_PRESS,
 )
-from zhaquirks.tuya import TuyaSmartRemoteOnOffCluster
+from zhaquirks.tuya import TuyaSmartRemoteOnOffCluster, TuyaZBE000Cluster
 
 
 class Tuya4ButtonTriggers:
@@ -227,3 +227,97 @@ class TuyaSmartRemote0044TO(CustomDevice, Tuya4ButtonTriggers):
             },
         },
     }
+
+
+class TuyaSmartRemote0044TOPlus(CustomDevice, Tuya4ButtonTriggers):
+    """Tuya 4-button remote device with time on out cluster."""
+
+    signature = {
+        # SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=0, device_version=1, input_clusters=[0, 1, 6, 57344], output_clusters=[10, 25]))
+        # SizePrefixedSimpleDescriptor(endpoint=2, profile=260, device_type=0, device_version=1, input_clusters=[1, 6], output_clusters=[])
+        # SizePrefixedSimpleDescriptor(endpoint=3, profile=260, device_type=0, device_version=1, input_clusters=[1, 6], output_clusters=[])
+        # SizePrefixedSimpleDescriptor(endpoint=4, profile=260, device_type=0, device_version=1, input_clusters=[1, 6], output_clusters=[])
+        MODEL: "TS0044",
+        ENDPOINTS: {
+            1: {
+                PROFILE_ID: zha.PROFILE_ID,
+                DEVICE_TYPE: zha.DeviceType.ON_OFF_SWITCH,
+                INPUT_CLUSTERS: [
+                    Basic.cluster_id,
+                    PowerConfiguration.cluster_id,
+                    OnOff.cluster_id,
+                    TuyaZBE000Cluster.cluster_id,
+                ],
+                OUTPUT_CLUSTERS: [Time.cluster_id, Ota.cluster_id],
+            },
+            2: {
+                PROFILE_ID: zha.PROFILE_ID,
+                DEVICE_TYPE: zha.DeviceType.ON_OFF_SWITCH,
+                INPUT_CLUSTERS: [
+                    PowerConfiguration.cluster_id,
+                    OnOff.cluster_id,
+                ],
+                OUTPUT_CLUSTERS: [],
+            },
+            3: {
+                PROFILE_ID: zha.PROFILE_ID,
+                DEVICE_TYPE: zha.DeviceType.ON_OFF_SWITCH,
+                INPUT_CLUSTERS: [
+                    PowerConfiguration.cluster_id,
+                    OnOff.cluster_id,
+                ],
+                OUTPUT_CLUSTERS: [],
+            },
+            4: {
+                PROFILE_ID: zha.PROFILE_ID,
+                DEVICE_TYPE: zha.DeviceType.ON_OFF_SWITCH,
+                INPUT_CLUSTERS: [
+                    PowerConfiguration.cluster_id,
+                    OnOff.cluster_id,
+                ],
+                OUTPUT_CLUSTERS: [],
+            },
+        },
+    }
+    replacement = {
+        ENDPOINTS: {
+            1: {
+                PROFILE_ID: zha.PROFILE_ID,
+                DEVICE_TYPE: zha.DeviceType.REMOTE_CONTROL,
+                INPUT_CLUSTERS: [
+                    Basic.cluster_id,
+                    PowerConfiguration.cluster_id,
+                    TuyaSmartRemoteOnOffCluster,
+                    TuyaZBE000Cluster,
+                ],
+                OUTPUT_CLUSTERS: [Time.cluster_id, Ota.cluster_id],
+            },
+            2: {
+                PROFILE_ID: zha.PROFILE_ID,
+                DEVICE_TYPE: zha.DeviceType.REMOTE_CONTROL,
+                INPUT_CLUSTERS: [
+                    PowerConfiguration.cluster_id,
+                    TuyaSmartRemoteOnOffCluster,
+                ],
+                OUTPUT_CLUSTERS: [],
+            },
+            3: {
+                PROFILE_ID: zha.PROFILE_ID,
+                DEVICE_TYPE: zha.DeviceType.REMOTE_CONTROL,
+                INPUT_CLUSTERS: [
+                    PowerConfiguration.cluster_id,
+                    TuyaSmartRemoteOnOffCluster,
+                ],
+                OUTPUT_CLUSTERS: [],
+            },
+            4: {
+                PROFILE_ID: zha.PROFILE_ID,
+                DEVICE_TYPE: zha.DeviceType.REMOTE_CONTROL,
+                INPUT_CLUSTERS: [
+                    PowerConfiguration.cluster_id,
+                    TuyaSmartRemoteOnOffCluster,
+                ],
+                OUTPUT_CLUSTERS: [],
+            },
+        },
+    }


Test patch: