Repository: zigpy/zha-device-handlers

Issue:
[Device Support Request] Tuya Smart Zigbee Curtain Switch Module (_TZ3000_mowcrwsa)
**Is your feature request related to a problem? Please describe.**
Device can be paired in ZHA but not working properly in HA.
Manufacturer ID _TZ3000_mowcrwsa is not added as MODELS_INFO in ts130f.py

**Describe the solution you'd like**
Add manufacturer ID of the below device signature to class TuyaZemismartTS130F(CustomDevice): of zha-device-handlers/zhaquirks/tuya/ts130f.py

**Device signature - this can be acquired by removing the device from ZHA and pairing it again from the add devices screen. Be sure to add the entire content of the log panel after pairing the device to a code block below this line.**
{
  "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=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.0: 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": "0x0202",
      "in_clusters": [
        "0x0000",
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0102"
      ],
      "out_clusters": [
        "0x000a",
        "0x0019"
      ]
    }
  },
  "manufacturer": "_TZ3000_mowcrwsa",
  "model": "TS130F",
  "class": "zigpy.device.Device"
}

**Additional context**
Add any other context or screenshots about the feature request here.



Discussion:

Resolving patch:
diff --git a/zhaquirks/tuya/ts130f.py b/zhaquirks/tuya/ts130f.py
--- a/zhaquirks/tuya/ts130f.py
+++ b/zhaquirks/tuya/ts130f.py
@@ -9,7 +9,7 @@
     DEVICE_TYPE,
     ENDPOINTS,
     INPUT_CLUSTERS,
-    MODELS_INFO,
+    MODEL,
     OUTPUT_CLUSTERS,
     PROFILE_ID,
 )
@@ -63,16 +63,12 @@ async def command(
         )
 
 
-class TuyaTS130F(CustomDevice):
-    """Tuya smart curtain roller shutter."""
+class TuyaTS130FTI(CustomDevice):
+    """Tuya smart curtain roller shutter Time In."""
 
     signature = {
         # SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=0x0202, device_version=1, input_clusters=[0, 4, 5, 6, 10, 0x0102], output_clusters=[25]))
-        MODELS_INFO: [
-            ("_TZ3000_8kzqqzu4", "TS130F"),
-            ("_TZ3000_vd43bbfq", "TS130F"),
-            ("_TZ3000_egq7y6pr", "TS130F"),
-        ],
+        MODEL: "TS130F",
         ENDPOINTS: {
             1: {
                 PROFILE_ID: zha.PROFILE_ID,
@@ -113,7 +109,7 @@ class TuyaZemismartTS130F(CustomDevice):
 
     signature = {
         # SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=0x0202, device_version=1, input_clusters=[0x0000, 0x0004, 0x0005, 0x0006, 0x0102], output_clusters=[0x000a, 0x0019]))
-        MODELS_INFO: [("_TZ3000_ltiqubue", "TS130F")],
+        MODEL: "TS130F",
         ENDPOINTS: {
             1: {
                 PROFILE_ID: zha.PROFILE_ID,
@@ -153,12 +149,13 @@ class TuyaZemismartTS130F(CustomDevice):
     }
 
 
-class TuyaTS130F_Module(CustomDevice):
-    """Tuya smart curtain roller shutter."""
+class TuyaTS130FTO(CustomDevice):
+    """Tuya smart curtain roller shutter Time Out."""
 
     signature = {
         # SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=0x0202, device_version=1, input_clusters=[0, 4, 5, 6, 10, 0x0102], output_clusters=[25]))
-        MODELS_INFO: [("_TZ3000_vd43bbfq", "TS130F")],
+        # This singnature is not correct is one copy of the first one and the cluster is not inline with the device.
+        MODEL: "TS130F",
         ENDPOINTS: {
             1: {
                 PROFILE_ID: zha.PROFILE_ID,


Test patch: