We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[BUG] IKEA E1812 shortcut button does not use quirks
**Describe the bug**
I have two IKEA E1812 Tradfri shortcut buttons that started to behave differently. ZHA claims that they have the same firmware (I also bought them together), but they now have different clusters: The one that is not picked up correctly has an extra `in_cluster` with ID 0xfc7c in its device signature. This causes `zhaquirks.ikea.shortcutbtn.IkeaTradfriShortcutBtn` to not pick this button up, producing a *Fail because input cluster mismatch on at least one endpoint* message in the log.

The `zha_event` still fires as it should, so by using the raw event one can work around this, but maybe there's a way to get the quirks to work.

**To Reproduce**
- pair a shortcut button that has the 0xfc7c input cluster
- go to the device page and see that no quirks are applied
- try to add an automation, see that triggers for button press are missing

(Unfortunately I have no clue what caused the two buttons to present different signatures)

**Expected behavior**
The quirks should still apply

**Additional context**
signature of the button with the extra cluster (this is the only difference between my buttons)
**EDIT:** The WindowCovering output cluster is also missing on the weird button
```
{
  "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=4476, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, 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": "0x0820",
      "in_clusters": [
        "0x0000",
        "0x0001",
        "0x0003",
        "0x0009",
        "0x0020",
        "0x1000",
        "0xfc7c"
      ],
      "out_clusters": [
        "0x0003",
        "0x0004",
        "0x0006",
        "0x0008",
        "0x0019",
        "0x1000"
      ]
    }
  },
  "manufacturer": "IKEA of Sweden",
  "model": "TRADFRI SHORTCUT Button",
  "class": "zigpy.device.Device"
}
```


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `zhaquirks/ikea/shortcutbtn.py`
Content:
```
1 """Device handler for IKEA of Sweden TRADFRI shortcut button."""
2 from zigpy.profiles import zha
3 from zigpy.quirks import CustomDevice
4 from zigpy.zcl.clusters.closures import WindowCovering
5 from zigpy.zcl.clusters.general import (
6     Alarms,
7     Basic,
8     Groups,
9     Identify,
10     LevelControl,
11     OnOff,
12     Ota,
13     PollControl,
14     PowerConfiguration,
15 )
16 from zigpy.zcl.clusters.lightlink import LightLink
17 
18 from zhaquirks.const import (
19     ARGS,
20     CLUSTER_ID,
21     COMMAND,
22     COMMAND_MOVE_ON_OFF,
23     COMMAND_OFF,
24     COMMAND_ON,
25     COMMAND_STOP,
26     DEVICE_TYPE,
27     DIM_UP,
28     DOUBLE_PRESS,
29     ENDPOINT_ID,
30     ENDPOINTS,
31     INPUT_CLUSTERS,
32     LONG_PRESS,
33     LONG_RELEASE,
34     MODELS_INFO,
35     OUTPUT_CLUSTERS,
36     PROFILE_ID,
37     SHORT_PRESS,
38     TURN_ON,
39 )
40 from zhaquirks.ikea import IKEA, LightLinkCluster, PowerConfiguration1CRCluster
41 
42 
43 class IkeaTradfriShortcutBtn(CustomDevice):
44     """Custom device representing IKEA of Sweden TRADFRI shortcut button."""
45 
46     signature = {
47         # <SimpleDescriptor endpoint=1 profile=260 device_type=2080
48         # device_version=1
49         # input_clusters=[0, 1, 3, 9, 32, 4096]
50         # output_clusters=[3, 4, 6, 8, 25, 258, 4096]>
51         MODELS_INFO: [(IKEA, "TRADFRI SHORTCUT Button")],
52         ENDPOINTS: {
53             1: {
54                 PROFILE_ID: zha.PROFILE_ID,
55                 DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,
56                 INPUT_CLUSTERS: [
57                     Basic.cluster_id,
58                     PowerConfiguration.cluster_id,
59                     Identify.cluster_id,
60                     Alarms.cluster_id,
61                     PollControl.cluster_id,
62                     LightLink.cluster_id,
63                 ],
64                 OUTPUT_CLUSTERS: [
65                     Identify.cluster_id,
66                     Groups.cluster_id,
67                     OnOff.cluster_id,
68                     LevelControl.cluster_id,
69                     Ota.cluster_id,
70                     WindowCovering.cluster_id,
71                     LightLink.cluster_id,
72                 ],
73             }
74         },
75     }
76 
77     replacement = {
78         ENDPOINTS: {
79             1: {
80                 PROFILE_ID: zha.PROFILE_ID,
81                 DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,
82                 INPUT_CLUSTERS: [
83                     Basic.cluster_id,
84                     PowerConfiguration1CRCluster,
85                     Identify.cluster_id,
86                     Alarms.cluster_id,
87                     PollControl.cluster_id,
88                     LightLinkCluster,
89                 ],
90                 OUTPUT_CLUSTERS: [
91                     Identify.cluster_id,
92                     Groups.cluster_id,
93                     OnOff.cluster_id,
94                     LevelControl.cluster_id,
95                     Ota.cluster_id,
96                     WindowCovering.cluster_id,
97                     LightLink.cluster_id,
98                 ],
99             }
100         }
101     }
102 
103     device_automation_triggers = {
104         (SHORT_PRESS, TURN_ON): {COMMAND: COMMAND_ON, CLUSTER_ID: 6, ENDPOINT_ID: 1},
105         (DOUBLE_PRESS, TURN_ON): {COMMAND: COMMAND_OFF, CLUSTER_ID: 6, ENDPOINT_ID: 1},
106         (LONG_PRESS, DIM_UP): {
107             COMMAND: COMMAND_MOVE_ON_OFF,
108             CLUSTER_ID: 8,
109             ENDPOINT_ID: 1,
110             ARGS: [0, 83],
111         },
112         (LONG_RELEASE, DIM_UP): {
113             COMMAND: COMMAND_STOP,
114             CLUSTER_ID: 8,
115             ENDPOINT_ID: 1,
116         },
117     }
118
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/zhaquirks/ikea/shortcutbtn.py b/zhaquirks/ikea/shortcutbtn.py
--- a/zhaquirks/ikea/shortcutbtn.py
+++ b/zhaquirks/ikea/shortcutbtn.py
@@ -115,3 +115,79 @@
             ENDPOINT_ID: 1,
         },
     }
+
+
+class IkeaTradfriShortcutBtn2(CustomDevice):
+    """Custom device representing IKEA of Sweden TRADFRI shortcut button with IKEA cluster."""
+
+    signature = {
+        # <SimpleDescriptor endpoint=1 profile=260 device_type=2080
+        # device_version=1
+        # input_clusters=[0, 1, 3, 9, 32, 4096, 64636]
+        # output_clusters=[3, 4, 6, 8, 25, 4096]>
+        MODELS_INFO: [(IKEA, "TRADFRI SHORTCUT Button")],
+        ENDPOINTS: {
+            1: {
+                PROFILE_ID: zha.PROFILE_ID,
+                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,
+                INPUT_CLUSTERS: [
+                    Basic.cluster_id,
+                    PowerConfiguration.cluster_id,
+                    Identify.cluster_id,
+                    Alarms.cluster_id,
+                    PollControl.cluster_id,
+                    LightLink.cluster_id,
+                    0xFC7C,  # IKEA Cluster
+                ],
+                OUTPUT_CLUSTERS: [
+                    Identify.cluster_id,
+                    Groups.cluster_id,
+                    OnOff.cluster_id,
+                    LevelControl.cluster_id,
+                    Ota.cluster_id,
+                    LightLink.cluster_id,
+                ],
+            }
+        },
+    }
+
+    replacement = {
+        ENDPOINTS: {
+            1: {
+                PROFILE_ID: zha.PROFILE_ID,
+                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,
+                INPUT_CLUSTERS: [
+                    Basic.cluster_id,
+                    PowerConfiguration1CRCluster,
+                    Identify.cluster_id,
+                    Alarms.cluster_id,
+                    PollControl.cluster_id,
+                    LightLinkCluster,
+                ],
+                OUTPUT_CLUSTERS: [
+                    Identify.cluster_id,
+                    Groups.cluster_id,
+                    OnOff.cluster_id,
+                    LevelControl.cluster_id,
+                    Ota.cluster_id,
+                    LightLink.cluster_id,
+                ],
+            }
+        }
+    }
+
+    device_automation_triggers = {
+        (SHORT_PRESS, TURN_ON): {COMMAND: COMMAND_ON, CLUSTER_ID: 6, ENDPOINT_ID: 1},
+        (DOUBLE_PRESS, TURN_ON): {COMMAND: COMMAND_OFF, CLUSTER_ID: 6, ENDPOINT_ID: 1},
+        (LONG_PRESS, DIM_UP): {
+            COMMAND: COMMAND_MOVE_ON_OFF,
+            CLUSTER_ID: 8,
+            ENDPOINT_ID: 1,
+            ARGS: [0, 83],
+        },
+        (LONG_RELEASE, DIM_UP): {
+            COMMAND: COMMAND_STOP,
+            CLUSTER_ID: 8,
+            ENDPOINT_ID: 1,
+        },
+    }

{"golden_diff": "diff --git a/zhaquirks/ikea/shortcutbtn.py b/zhaquirks/ikea/shortcutbtn.py\n--- a/zhaquirks/ikea/shortcutbtn.py\n+++ b/zhaquirks/ikea/shortcutbtn.py\n@@ -115,3 +115,79 @@\n             ENDPOINT_ID: 1,\n         },\n     }\n+\n+\n+class IkeaTradfriShortcutBtn2(CustomDevice):\n+    \"\"\"Custom device representing IKEA of Sweden TRADFRI shortcut button with IKEA cluster.\"\"\"\n+\n+    signature = {\n+        # <SimpleDescriptor endpoint=1 profile=260 device_type=2080\n+        # device_version=1\n+        # input_clusters=[0, 1, 3, 9, 32, 4096, 64636]\n+        # output_clusters=[3, 4, 6, 8, 25, 4096]>\n+        MODELS_INFO: [(IKEA, \"TRADFRI SHORTCUT Button\")],\n+        ENDPOINTS: {\n+            1: {\n+                PROFILE_ID: zha.PROFILE_ID,\n+                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,\n+                INPUT_CLUSTERS: [\n+                    Basic.cluster_id,\n+                    PowerConfiguration.cluster_id,\n+                    Identify.cluster_id,\n+                    Alarms.cluster_id,\n+                    PollControl.cluster_id,\n+                    LightLink.cluster_id,\n+                    0xFC7C,  # IKEA Cluster\n+                ],\n+                OUTPUT_CLUSTERS: [\n+                    Identify.cluster_id,\n+                    Groups.cluster_id,\n+                    OnOff.cluster_id,\n+                    LevelControl.cluster_id,\n+                    Ota.cluster_id,\n+                    LightLink.cluster_id,\n+                ],\n+            }\n+        },\n+    }\n+\n+    replacement = {\n+        ENDPOINTS: {\n+            1: {\n+                PROFILE_ID: zha.PROFILE_ID,\n+                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,\n+                INPUT_CLUSTERS: [\n+                    Basic.cluster_id,\n+                    PowerConfiguration1CRCluster,\n+                    Identify.cluster_id,\n+                    Alarms.cluster_id,\n+                    PollControl.cluster_id,\n+                    LightLinkCluster,\n+                ],\n+                OUTPUT_CLUSTERS: [\n+                    Identify.cluster_id,\n+                    Groups.cluster_id,\n+                    OnOff.cluster_id,\n+                    LevelControl.cluster_id,\n+                    Ota.cluster_id,\n+                    LightLink.cluster_id,\n+                ],\n+            }\n+        }\n+    }\n+\n+    device_automation_triggers = {\n+        (SHORT_PRESS, TURN_ON): {COMMAND: COMMAND_ON, CLUSTER_ID: 6, ENDPOINT_ID: 1},\n+        (DOUBLE_PRESS, TURN_ON): {COMMAND: COMMAND_OFF, CLUSTER_ID: 6, ENDPOINT_ID: 1},\n+        (LONG_PRESS, DIM_UP): {\n+            COMMAND: COMMAND_MOVE_ON_OFF,\n+            CLUSTER_ID: 8,\n+            ENDPOINT_ID: 1,\n+            ARGS: [0, 83],\n+        },\n+        (LONG_RELEASE, DIM_UP): {\n+            COMMAND: COMMAND_STOP,\n+            CLUSTER_ID: 8,\n+            ENDPOINT_ID: 1,\n+        },\n+    }\n", "issue": "[BUG] IKEA E1812 shortcut button does not use quirks\n**Describe the bug**\r\nI have two IKEA E1812 Tradfri shortcut buttons that started to behave differently. ZHA claims that they have the same firmware (I also bought them together), but they now have different clusters: The one that is not picked up correctly has an extra `in_cluster` with ID 0xfc7c in its device signature. This causes `zhaquirks.ikea.shortcutbtn.IkeaTradfriShortcutBtn` to not pick this button up, producing a *Fail because input cluster mismatch on at least one endpoint* message in the log.\r\n\r\nThe `zha_event` still fires as it should, so by using the raw event one can work around this, but maybe there's a way to get the quirks to work.\r\n\r\n**To Reproduce**\r\n- pair a shortcut button that has the 0xfc7c input cluster\r\n- go to the device page and see that no quirks are applied\r\n- try to add an automation, see that triggers for button press are missing\r\n\r\n(Unfortunately I have no clue what caused the two buttons to present different signatures)\r\n\r\n**Expected behavior**\r\nThe quirks should still apply\r\n\r\n**Additional context**\r\nsignature of the button with the extra cluster (this is the only difference between my buttons)\r\n**EDIT:** The WindowCovering output cluster is also missing on the weird button\r\n```\r\n{\r\n  \"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=4476, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, 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)\",\r\n  \"endpoints\": {\r\n    \"1\": {\r\n      \"profile_id\": 260,\r\n      \"device_type\": \"0x0820\",\r\n      \"in_clusters\": [\r\n        \"0x0000\",\r\n        \"0x0001\",\r\n        \"0x0003\",\r\n        \"0x0009\",\r\n        \"0x0020\",\r\n        \"0x1000\",\r\n        \"0xfc7c\"\r\n      ],\r\n      \"out_clusters\": [\r\n        \"0x0003\",\r\n        \"0x0004\",\r\n        \"0x0006\",\r\n        \"0x0008\",\r\n        \"0x0019\",\r\n        \"0x1000\"\r\n      ]\r\n    }\r\n  },\r\n  \"manufacturer\": \"IKEA of Sweden\",\r\n  \"model\": \"TRADFRI SHORTCUT Button\",\r\n  \"class\": \"zigpy.device.Device\"\r\n}\r\n```\r\n\n", "before_files": [{"content": "\"\"\"Device handler for IKEA of Sweden TRADFRI shortcut button.\"\"\"\nfrom zigpy.profiles import zha\nfrom zigpy.quirks import CustomDevice\nfrom zigpy.zcl.clusters.closures import WindowCovering\nfrom zigpy.zcl.clusters.general import (\n    Alarms,\n    Basic,\n    Groups,\n    Identify,\n    LevelControl,\n    OnOff,\n    Ota,\n    PollControl,\n    PowerConfiguration,\n)\nfrom zigpy.zcl.clusters.lightlink import LightLink\n\nfrom zhaquirks.const import (\n    ARGS,\n    CLUSTER_ID,\n    COMMAND,\n    COMMAND_MOVE_ON_OFF,\n    COMMAND_OFF,\n    COMMAND_ON,\n    COMMAND_STOP,\n    DEVICE_TYPE,\n    DIM_UP,\n    DOUBLE_PRESS,\n    ENDPOINT_ID,\n    ENDPOINTS,\n    INPUT_CLUSTERS,\n    LONG_PRESS,\n    LONG_RELEASE,\n    MODELS_INFO,\n    OUTPUT_CLUSTERS,\n    PROFILE_ID,\n    SHORT_PRESS,\n    TURN_ON,\n)\nfrom zhaquirks.ikea import IKEA, LightLinkCluster, PowerConfiguration1CRCluster\n\n\nclass IkeaTradfriShortcutBtn(CustomDevice):\n    \"\"\"Custom device representing IKEA of Sweden TRADFRI shortcut button.\"\"\"\n\n    signature = {\n        # <SimpleDescriptor endpoint=1 profile=260 device_type=2080\n        # device_version=1\n        # input_clusters=[0, 1, 3, 9, 32, 4096]\n        # output_clusters=[3, 4, 6, 8, 25, 258, 4096]>\n        MODELS_INFO: [(IKEA, \"TRADFRI SHORTCUT Button\")],\n        ENDPOINTS: {\n            1: {\n                PROFILE_ID: zha.PROFILE_ID,\n                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,\n                INPUT_CLUSTERS: [\n                    Basic.cluster_id,\n                    PowerConfiguration.cluster_id,\n                    Identify.cluster_id,\n                    Alarms.cluster_id,\n                    PollControl.cluster_id,\n                    LightLink.cluster_id,\n                ],\n                OUTPUT_CLUSTERS: [\n                    Identify.cluster_id,\n                    Groups.cluster_id,\n                    OnOff.cluster_id,\n                    LevelControl.cluster_id,\n                    Ota.cluster_id,\n                    WindowCovering.cluster_id,\n                    LightLink.cluster_id,\n                ],\n            }\n        },\n    }\n\n    replacement = {\n        ENDPOINTS: {\n            1: {\n                PROFILE_ID: zha.PROFILE_ID,\n                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,\n                INPUT_CLUSTERS: [\n                    Basic.cluster_id,\n                    PowerConfiguration1CRCluster,\n                    Identify.cluster_id,\n                    Alarms.cluster_id,\n                    PollControl.cluster_id,\n                    LightLinkCluster,\n                ],\n                OUTPUT_CLUSTERS: [\n                    Identify.cluster_id,\n                    Groups.cluster_id,\n                    OnOff.cluster_id,\n                    LevelControl.cluster_id,\n                    Ota.cluster_id,\n                    WindowCovering.cluster_id,\n                    LightLink.cluster_id,\n                ],\n            }\n        }\n    }\n\n    device_automation_triggers = {\n        (SHORT_PRESS, TURN_ON): {COMMAND: COMMAND_ON, CLUSTER_ID: 6, ENDPOINT_ID: 1},\n        (DOUBLE_PRESS, TURN_ON): {COMMAND: COMMAND_OFF, CLUSTER_ID: 6, ENDPOINT_ID: 1},\n        (LONG_PRESS, DIM_UP): {\n            COMMAND: COMMAND_MOVE_ON_OFF,\n            CLUSTER_ID: 8,\n            ENDPOINT_ID: 1,\n            ARGS: [0, 83],\n        },\n        (LONG_RELEASE, DIM_UP): {\n            COMMAND: COMMAND_STOP,\n            CLUSTER_ID: 8,\n            ENDPOINT_ID: 1,\n        },\n    }\n", "path": "zhaquirks/ikea/shortcutbtn.py"}], "after_files": [{"content": "\"\"\"Device handler for IKEA of Sweden TRADFRI shortcut button.\"\"\"\nfrom zigpy.profiles import zha\nfrom zigpy.quirks import CustomDevice\nfrom zigpy.zcl.clusters.closures import WindowCovering\nfrom zigpy.zcl.clusters.general import (\n    Alarms,\n    Basic,\n    Groups,\n    Identify,\n    LevelControl,\n    OnOff,\n    Ota,\n    PollControl,\n    PowerConfiguration,\n)\nfrom zigpy.zcl.clusters.lightlink import LightLink\n\nfrom zhaquirks.const import (\n    ARGS,\n    CLUSTER_ID,\n    COMMAND,\n    COMMAND_MOVE_ON_OFF,\n    COMMAND_OFF,\n    COMMAND_ON,\n    COMMAND_STOP,\n    DEVICE_TYPE,\n    DIM_UP,\n    DOUBLE_PRESS,\n    ENDPOINT_ID,\n    ENDPOINTS,\n    INPUT_CLUSTERS,\n    LONG_PRESS,\n    LONG_RELEASE,\n    MODELS_INFO,\n    OUTPUT_CLUSTERS,\n    PROFILE_ID,\n    SHORT_PRESS,\n    TURN_ON,\n)\nfrom zhaquirks.ikea import IKEA, LightLinkCluster, PowerConfiguration1CRCluster\n\n\nclass IkeaTradfriShortcutBtn(CustomDevice):\n    \"\"\"Custom device representing IKEA of Sweden TRADFRI shortcut button.\"\"\"\n\n    signature = {\n        # <SimpleDescriptor endpoint=1 profile=260 device_type=2080\n        # device_version=1\n        # input_clusters=[0, 1, 3, 9, 32, 4096]\n        # output_clusters=[3, 4, 6, 8, 25, 258, 4096]>\n        MODELS_INFO: [(IKEA, \"TRADFRI SHORTCUT Button\")],\n        ENDPOINTS: {\n            1: {\n                PROFILE_ID: zha.PROFILE_ID,\n                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,\n                INPUT_CLUSTERS: [\n                    Basic.cluster_id,\n                    PowerConfiguration.cluster_id,\n                    Identify.cluster_id,\n                    Alarms.cluster_id,\n                    PollControl.cluster_id,\n                    LightLink.cluster_id,\n                ],\n                OUTPUT_CLUSTERS: [\n                    Identify.cluster_id,\n                    Groups.cluster_id,\n                    OnOff.cluster_id,\n                    LevelControl.cluster_id,\n                    Ota.cluster_id,\n                    WindowCovering.cluster_id,\n                    LightLink.cluster_id,\n                ],\n            }\n        },\n    }\n\n    replacement = {\n        ENDPOINTS: {\n            1: {\n                PROFILE_ID: zha.PROFILE_ID,\n                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,\n                INPUT_CLUSTERS: [\n                    Basic.cluster_id,\n                    PowerConfiguration1CRCluster,\n                    Identify.cluster_id,\n                    Alarms.cluster_id,\n                    PollControl.cluster_id,\n                    LightLinkCluster,\n                ],\n                OUTPUT_CLUSTERS: [\n                    Identify.cluster_id,\n                    Groups.cluster_id,\n                    OnOff.cluster_id,\n                    LevelControl.cluster_id,\n                    Ota.cluster_id,\n                    WindowCovering.cluster_id,\n                    LightLink.cluster_id,\n                ],\n            }\n        }\n    }\n\n    device_automation_triggers = {\n        (SHORT_PRESS, TURN_ON): {COMMAND: COMMAND_ON, CLUSTER_ID: 6, ENDPOINT_ID: 1},\n        (DOUBLE_PRESS, TURN_ON): {COMMAND: COMMAND_OFF, CLUSTER_ID: 6, ENDPOINT_ID: 1},\n        (LONG_PRESS, DIM_UP): {\n            COMMAND: COMMAND_MOVE_ON_OFF,\n            CLUSTER_ID: 8,\n            ENDPOINT_ID: 1,\n            ARGS: [0, 83],\n        },\n        (LONG_RELEASE, DIM_UP): {\n            COMMAND: COMMAND_STOP,\n            CLUSTER_ID: 8,\n            ENDPOINT_ID: 1,\n        },\n    }\n\n\nclass IkeaTradfriShortcutBtn2(CustomDevice):\n    \"\"\"Custom device representing IKEA of Sweden TRADFRI shortcut button with IKEA cluster.\"\"\"\n\n    signature = {\n        # <SimpleDescriptor endpoint=1 profile=260 device_type=2080\n        # device_version=1\n        # input_clusters=[0, 1, 3, 9, 32, 4096, 64636]\n        # output_clusters=[3, 4, 6, 8, 25, 4096]>\n        MODELS_INFO: [(IKEA, \"TRADFRI SHORTCUT Button\")],\n        ENDPOINTS: {\n            1: {\n                PROFILE_ID: zha.PROFILE_ID,\n                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,\n                INPUT_CLUSTERS: [\n                    Basic.cluster_id,\n                    PowerConfiguration.cluster_id,\n                    Identify.cluster_id,\n                    Alarms.cluster_id,\n                    PollControl.cluster_id,\n                    LightLink.cluster_id,\n                    0xFC7C,  # IKEA Cluster\n                ],\n                OUTPUT_CLUSTERS: [\n                    Identify.cluster_id,\n                    Groups.cluster_id,\n                    OnOff.cluster_id,\n                    LevelControl.cluster_id,\n                    Ota.cluster_id,\n                    LightLink.cluster_id,\n                ],\n            }\n        },\n    }\n\n    replacement = {\n        ENDPOINTS: {\n            1: {\n                PROFILE_ID: zha.PROFILE_ID,\n                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,\n                INPUT_CLUSTERS: [\n                    Basic.cluster_id,\n                    PowerConfiguration1CRCluster,\n                    Identify.cluster_id,\n                    Alarms.cluster_id,\n                    PollControl.cluster_id,\n                    LightLinkCluster,\n                ],\n                OUTPUT_CLUSTERS: [\n                    Identify.cluster_id,\n                    Groups.cluster_id,\n                    OnOff.cluster_id,\n                    LevelControl.cluster_id,\n                    Ota.cluster_id,\n                    LightLink.cluster_id,\n                ],\n            }\n        }\n    }\n\n    device_automation_triggers = {\n        (SHORT_PRESS, TURN_ON): {COMMAND: COMMAND_ON, CLUSTER_ID: 6, ENDPOINT_ID: 1},\n        (DOUBLE_PRESS, TURN_ON): {COMMAND: COMMAND_OFF, CLUSTER_ID: 6, ENDPOINT_ID: 1},\n        (LONG_PRESS, DIM_UP): {\n            COMMAND: COMMAND_MOVE_ON_OFF,\n            CLUSTER_ID: 8,\n            ENDPOINT_ID: 1,\n            ARGS: [0, 83],\n        },\n        (LONG_RELEASE, DIM_UP): {\n            COMMAND: COMMAND_STOP,\n            CLUSTER_ID: 8,\n            ENDPOINT_ID: 1,\n        },\n    }\n", "path": "zhaquirks/ikea/shortcutbtn.py"}]}