SmartKnob Dimmer Automation

Hello,
I have a Zigbee Smart Knob which I want to use to dimm my zigbee lamp.
Im pretty new in this thematic so I don’t have an idea how to set up such an automation.
The Smart Knob send this zha_event:

{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "54:0f:57:ff:fe:2e:3c:5f",
        "unique_id": "54:0f:57:ff:fe:2e:3c:5f:1:0x0008",
        "device_id": "3cc97f6cd8c336b5e52a6070f17fd3e8",
        "endpoint_id": 1,
        "cluster_id": 8,
        "command": "step",
        "args": [
            0,
            13,
            1
        ]
    },
    "origin": "LOCAL",
    "time_fired": "2022-02-14T17:11:32.413904+00:00",
    "context": {
        "id": "850b166a1c67666a040825c0366133f6",
        "parent_id": null,
        "user_id": null
    }
}

Now I already know the meaning of the args:
But I can’t get the brightness controll running, but I found out the meaning of the three parameters:
ARGS: [x1, x2, x3]
x1 = Direction, 0 = clockwise, 1 = anticlockwise
x2 = Dimmvalue:

  • 13 = 1 step
  • 24 = 2 steps
  • 37 = 3 steps
  • 49 = 4 steps
  • 61 = 5 steps
  • 73 = 6 steps
  • 85 = 7 steps

x3 = rotation speed, 1 = slow, 2 = middle, 3 = fast

For this automation only x1 and x2 is interesting.
Now I want that for every step the brigntess increases/decreases by 1%, but I have no idea how to “convert” it.

if you just want one percent at the time then x2 is not needed either?
As long as the direction is one way keep dimming.
?

No when the device sends x2 with value:

  • x2 = 13 = 1 step = 1%
  • x2 = 24 = 2 steps = 2%
  • x2 = 37 = 3 steps = 3%
  • x2 = 49 = 4 steps = 4%

When you click on the device in the HA ui, click the (+) button next to automations, it should bring up a list of events the device will respond to.

By the way is this it? Eardatek Smart Knob (ERS-10TZBVK-AA) Zigbee compatibility

Looks quite nice!

@nickrout Yes its this device, it’s pretty nice if it works…
It is not possible to implement this functionality with the automations in the GUI, thats why I asked…
it has to be configure in yaml.

I’m confused about the X2.

Let’s say you spin it three steps in one direction, does it give you 37 or 13 13 13 or 13 24 37?

I’ll investigate further when mine arrive.

The quirk is already created but currently works only in remote mode: https://github.com/zigpy/zha-device-handlers/issues/1322
Sadly the automation triggers for dimming are very limited in what they can do, maybe they will improve.
I succeeded in making a yaml automation for dimming, every step is 1%:

- alias: Fabian_SmartKnob_Deckenlicht_Dimming
  description: ''
  mode: parallel
  trigger:
    - platform: event
      event_type: zha_event
      event_data:
        device_ieee: "54:0f:57:ff:fe:2e:3c:5f"
        endpoint_id: 1
        cluster_id: 8
        command: "step"
  condition: []
  action:
    service: light.turn_on
    entity_id: light.fabian_deckenlicht_on_off
    data:
      brightness_step_pct: "{{ ((trigger.event.data.args[1] - 1) / 12) if trigger.event.data.args[0] == 0 else (-((trigger.event.data.args[1] - 1) / 12)) }}"

Hi guys! can you help me to accomplish the same goal?
I need your quirk maybe, because my HA with ZHA seems not properly recognized it. I’m using a Xiaomi Gateway 3 with ZHA integrations, it works well apart of this Tuya Knob…

can you share your quirk pls?

thanks
MG

If you read the post immediately prior to yours…

Thank you, yes I did, but only the button pushing action works (single, double and long press); the rotation is not detected, no events in the debug log…

so are you saying that the quirk does not work for you?

Yes it seems not cover all functions, at least the dimmer with rotation actions does not works. I tried the all quirks in the thread with same results.

Then I suggest you continue the conversation on githb.

@marcog1 Thats the quirk I’m currently using:

"""Tuya 4 Button Remote TS004F."""

from zigpy.profiles import zha
from zigpy.quirks import CustomDevice
from zigpy.zcl.clusters.general import (
    Basic,
    Groups,
    Identify,
    LevelControl,
    OnOff,
    Ota,
    PowerConfiguration,
    Scenes,
    Time,
)
from zigpy.zcl.clusters.lighting import Color
from zigpy.zcl.clusters.lightlink import LightLink

from zhaquirks.const import (
    ARGS,
    BUTTON,
    CLUSTER_ID,
    COMMAND,
    COMMAND_MOVE,
    COMMAND_OFF,
    COMMAND_ON,
    COMMAND_STEP,
    COMMAND_STOP,
    COMMAND_TOGGLE,
    DEVICE_TYPE,
    DIM_DOWN,
    DIM_UP,
    ENDPOINT_ID,
    ENDPOINTS,
    INPUT_CLUSTERS,
    LONG_PRESS,
    LONG_RELEASE,
    MODEL,
    MODELS_INFO,
    OUTPUT_CLUSTERS,
    PROFILE_ID,
    SHORT_PRESS,
    TURN_OFF,
    TURN_ON,
)
from zhaquirks.tuya import TuyaZBOnOffAttributeCluster, TuyaSmartRemoteOnOffCluster

class TuyaSmartRemote004F2A(CustomDevice):
    """Tuya Smart (rotating) Knob device."""
    signature = {
        # "node_descriptor": "NodeDescriptor(byte1=2, byte2=64, mac_capability_flags=128, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=0, *allocate_address=True, *complex_descriptor_available=False, *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, *is_valid=True, *logical_type=<LogicalType.EndDevice: 2>, *user_descriptor_available=False)",
        # SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=260, device_version=1, input_clusters=[0, 1, 3, 4, 6, 4096], output_clusters=[25, 10, 3, 4, 5, 6, 8, 4096])
        MODELS_INFO: [("_TZ3000_4fjiwweb", "TS004F")],
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.DIMMER_SWITCH,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    PowerConfiguration.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    OnOff.cluster_id,
                    LightLink.cluster_id,
                ],
                OUTPUT_CLUSTERS: [
                    Ota.cluster_id,
                    Time.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    OnOff.cluster_id,
                    LevelControl.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,
                    PowerConfiguration.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,  # Is needed for adding group then binding is not working.
                    LightLink.cluster_id,
                ],
                OUTPUT_CLUSTERS: [
                    Ota.cluster_id,
                    Time.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    TuyaZBOnOffAttributeCluster,  # for light commands.
#                    TuyaSmartRemoteOnOffCluster,  # for scen commands.
                    LevelControl.cluster_id,
                    Color.cluster_id,
                    LightLink.cluster_id,
                ],
            },
        },
    }

    device_automation_triggers = {
        (SHORT_PRESS, BUTTON): {COMMAND: COMMAND_TOGGLE, CLUSTER_ID: 6, ENDPOINT_ID: 1},
        (LONG_PRESS, BUTTON): {COMMAND: "stop_move_step", CLUSTER_ID: 768, ENDPOINT_ID: 1},
    }

class TuyaSmartRemote004F1A(CustomDevice):
    """Tuya 4-button MW  test version remote device."""

    signature = {
        # "node_descriptor": "NodeDescriptor(byte1=2, byte2=64, mac_capability_flags=128, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=0, *allocate_address=True, *complex_descriptor_available=False, *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, *is_valid=True, *logical_type=<LogicalType.EndDevice: 2>, *user_descriptor_available=False)",
        # SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=260, device_version=1, input_clusters=[0, 1, 3, 4, 6, 4096], output_clusters=[25, 10, 3, 4, 5, 6, 8, 4096])
        MODELS_INFO: [("_TZ3000_xabckq1v", "TS004F")],
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.DIMMER_SWITCH,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    PowerConfiguration.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    OnOff.cluster_id,
                    LightLink.cluster_id,
                ],
                OUTPUT_CLUSTERS: [
                    Ota.cluster_id,
                    Time.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    OnOff.cluster_id,
                    LevelControl.cluster_id,
                    LightLink.cluster_id,
                ],
            },
#            2: {
#                PROFILE_ID: zha.PROFILE_ID,
#                DEVICE_TYPE: zha.DeviceType.DIMMER_SWITCH,
#                INPUT_CLUSTERS: [
#                    OnOff.cluster_id,
#                ],
#                OUTPUT_CLUSTERS: [
#                     OnOff.cluster_id,
#               ],
#            },
#            3: {
#                PROFILE_ID: zha.PROFILE_ID,
#                DEVICE_TYPE: zha.DeviceType.DIMMER_SWITCH,
#                INPUT_CLUSTERS: [
#                    OnOff.cluster_id,
#                ],
#                OUTPUT_CLUSTERS: [
#                     OnOff.cluster_id,
#               ],
#            },
#            4: {
#                PROFILE_ID: zha.PROFILE_ID,
#                DEVICE_TYPE: zha.DeviceType.DIMMER_SWITCH,
#                INPUT_CLUSTERS: [
#                    OnOff.cluster_id,
#                ],
#                OUTPUT_CLUSTERS: [
#                     OnOff.cluster_id,
#               ],
#            },
        },
    }

    replacement = {
        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,
                    Groups.cluster_id,  # Is needed for adding group then binding is not working.
                    LightLink.cluster_id,
                ],
                OUTPUT_CLUSTERS: [
                    Ota.cluster_id,
                    Time.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    TuyaSmartRemoteOnOffCluster,
#                    TuyaZBOnOffAttributeCluster,
                    LevelControl.cluster_id,
                    Color.cluster_id,
                    LightLink.cluster_id,
                ],
            },
#            2: {
#                PROFILE_ID: zha.PROFILE_ID,
#                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,
#                INPUT_CLUSTERS: [
#                    TuyaSmartRemoteOnOffCluster,
#                ],
#                OUTPUT_CLUSTERS: [
#                    TuyaSmartRemoteOnOffCluster,
#                ],
#            },
#            3: {
#                PROFILE_ID: zha.PROFILE_ID,
#                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,
#                INPUT_CLUSTERS: [
#                    TuyaSmartRemoteOnOffCluster,
#                ],
#                OUTPUT_CLUSTERS: [
#                    TuyaSmartRemoteOnOffCluster,
#                ],
#            },
#            4: {
#                PROFILE_ID: zha.PROFILE_ID,
#                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,
#                INPUT_CLUSTERS: [
#                    TuyaSmartRemoteOnOffCluster,
#                ],
#                OUTPUT_CLUSTERS: [
#                    TuyaSmartRemoteOnOffCluster,
#                ],
#            },
        },
    }

    device_automation_triggers = {
        (SHORT_PRESS, TURN_ON): {COMMAND: COMMAND_ON, CLUSTER_ID: 6, ENDPOINT_ID: 1},
        (SHORT_PRESS, TURN_OFF): {COMMAND: COMMAND_OFF, CLUSTER_ID: 6, ENDPOINT_ID: 1},
        (SHORT_PRESS, DIM_UP): {
            COMMAND: COMMAND_STEP,
            CLUSTER_ID: 8,
            ENDPOINT_ID: 1,
            ARGS: [0, 51, 10],
        },
        (LONG_PRESS, DIM_UP): {
            COMMAND: COMMAND_MOVE,
            CLUSTER_ID: 8,
            ENDPOINT_ID: 1,
            ARGS: [0, 51],
        },
        (SHORT_PRESS, DIM_DOWN): {
            COMMAND: COMMAND_STEP,
            CLUSTER_ID: 8,
            ENDPOINT_ID: 1,
            ARGS: [1, 51, 10],
        },
        (LONG_PRESS, DIM_DOWN): {
            COMMAND: COMMAND_MOVE,
            CLUSTER_ID: 8,
            ENDPOINT_ID: 1,
            ARGS: [1, 51],
        },
        (LONG_RELEASE, DIM_DOWN): {
            COMMAND: COMMAND_STOP,
            CLUSTER_ID: 8,
            ENDPOINT_ID: 1,
        },
    }

class TuyaSmartRemote004F(CustomDevice):
    """Tuya 4-button New version remote device."""

    signature = {
        # "node_descriptor": "NodeDescriptor(byte1=2, byte2=64, mac_capability_flags=128, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=0, *allocate_address=True, *complex_descriptor_available=False, *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, *is_valid=True, *logical_type=<LogicalType.EndDevice: 2>, *user_descriptor_available=False)",
        # SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=260, device_version=1, input_clusters=[0, 1, 3, 4, 6, 4096], output_clusters=[25, 10, 3, 4, 5, 6, 8, 4096])
        MODEL: "TS004F",
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.DIMMER_SWITCH,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    PowerConfiguration.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    OnOff.cluster_id,
                    LightLink.cluster_id,
                ],
                OUTPUT_CLUSTERS: [
                    Ota.cluster_id,
                    Time.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    OnOff.cluster_id,
                    LevelControl.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,
                    PowerConfiguration.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,  # Is needed for adding group then binding is not working.
                    LightLink.cluster_id,
                ],
                OUTPUT_CLUSTERS: [
                    Ota.cluster_id,
                    Time.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    TuyaZBOnOffAttributeCluster,
                    LevelControl.cluster_id,
                    LightLink.cluster_id,
                ],
            },
        },
    }


    device_automation_triggers = {
        (SHORT_PRESS, TURN_ON): {COMMAND: COMMAND_ON, CLUSTER_ID: 6, ENDPOINT_ID: 1},
        (SHORT_PRESS, TURN_OFF): {COMMAND: COMMAND_OFF, CLUSTER_ID: 6, ENDPOINT_ID: 1},
        (SHORT_PRESS, DIM_UP): {
            COMMAND: COMMAND_STEP,
            CLUSTER_ID: 8,
            ENDPOINT_ID: 1,
            ARGS: [0, 51, 10],
        },
        (LONG_PRESS, DIM_UP): {
            COMMAND: COMMAND_MOVE,
            CLUSTER_ID: 8,
            ENDPOINT_ID: 1,
            ARGS: [0, 51],
        },
        (SHORT_PRESS, DIM_DOWN): {
            COMMAND: COMMAND_STEP,
            CLUSTER_ID: 8,
            ENDPOINT_ID: 1,
            ARGS: [1, 51, 10],
        },
        (LONG_PRESS, DIM_DOWN): {
            COMMAND: COMMAND_MOVE,
            CLUSTER_ID: 8,
            ENDPOINT_ID: 1,
            ARGS: [1, 51],
        },
        (LONG_RELEASE, DIM_DOWN): {
            COMMAND: COMMAND_STOP,
            CLUSTER_ID: 8,
            ENDPOINT_ID: 1,
        },
    }

Did you check in developer tools → zha_event, if the events appear?

1 Like

ok, with your posted quirk I have no one events in the developer tool (neither the basic single/double/long press); while with this quirk only the basic actions above work:

"""Tuya 4 Button Remote TS004F."""

from zigpy.profiles import zha
from zigpy.quirks import CustomDevice
from zigpy.zcl.clusters.general import (
    Basic,
    Groups,
    Identify,
    LevelControl,
    OnOff,
    Ota,
    PowerConfiguration,
    Scenes,
    Time,
)
from zigpy.zcl.clusters.lighting import Color
from zigpy.zcl.clusters.lightlink import LightLink

from zhaquirks.const import (
    ARGS,
    CLUSTER_ID,
    COMMAND,
    COMMAND_MOVE,
    COMMAND_OFF,
    COMMAND_ON,
    COMMAND_STEP,
    COMMAND_STOP,
    DEVICE_TYPE,
    DIM_DOWN,
    DIM_UP,
    ENDPOINT_ID,
    ENDPOINTS,
    INPUT_CLUSTERS,
    LONG_PRESS,
    LONG_RELEASE,
    MODEL,
    OUTPUT_CLUSTERS,
    PROFILE_ID,
    SHORT_PRESS,
    TURN_OFF,
    TURN_ON,
)
from zhaquirks.tuya import TuyaZBOnOffAttributeCluster, TuyaSmartRemoteOnOffCluster


class Tuya4NewButtonTriggers:
    """Tuya 4-button New version remote device triggers."""

    device_automation_triggers = {
        (SHORT_PRESS, TURN_ON): {COMMAND: COMMAND_ON, CLUSTER_ID: 6, ENDPOINT_ID: 1},
        (SHORT_PRESS, TURN_OFF): {COMMAND: COMMAND_OFF, CLUSTER_ID: 6, ENDPOINT_ID: 1},
        (SHORT_PRESS, DIM_UP): {
            COMMAND: COMMAND_STEP,
            CLUSTER_ID: 8,
            ENDPOINT_ID: 1,
            ARGS: [0, 51, 10],
        },
        (LONG_PRESS, DIM_UP): {
            COMMAND: COMMAND_MOVE,
            CLUSTER_ID: 8,
            ENDPOINT_ID: 1,
            ARGS: [0, 51],
        },
        (SHORT_PRESS, DIM_DOWN): {
            COMMAND: COMMAND_STEP,
            CLUSTER_ID: 8,
            ENDPOINT_ID: 1,
            ARGS: [1, 51, 10],
        },
        (LONG_PRESS, DIM_DOWN): {
            COMMAND: COMMAND_MOVE,
            CLUSTER_ID: 8,
            ENDPOINT_ID: 1,
            ARGS: [1, 51],
        },
        (LONG_RELEASE, DIM_DOWN): {
            COMMAND: COMMAND_STOP,
            CLUSTER_ID: 8,
            ENDPOINT_ID: 1,
        },
    }


class TuyaSmartRemote004F(CustomDevice, Tuya4NewButtonTriggers):
    """Tuya 4-button New version remote device."""

    signature = {
        # "node_descriptor": "NodeDescriptor(byte1=2, byte2=64, mac_capability_flags=128, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=0, *allocate_address=True, *complex_descriptor_available=False, *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, *is_valid=True, *logical_type=<LogicalType.EndDevice: 2>, *user_descriptor_available=False)",
        # SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=260, device_version=1, input_clusters=[0, 1, 3, 4, 6, 4096], output_clusters=[25, 10, 3, 4, 5, 6, 8, 4096])
        MODEL: "TS004F",
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.DIMMER_SWITCH,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    PowerConfiguration.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    OnOff.cluster_id,
                    LightLink.cluster_id,
                ],
                OUTPUT_CLUSTERS: [
                    Ota.cluster_id,
                    Time.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    OnOff.cluster_id,
                    LevelControl.cluster_id,
                    LightLink.cluster_id,
                ],
            },
#            2: {
#                PROFILE_ID: zha.PROFILE_ID,
#                DEVICE_TYPE: zha.DeviceType.DIMMER_SWITCH,
#                INPUT_CLUSTERS: [
#                    OnOff.cluster_id,
#                ],
#                OUTPUT_CLUSTERS: [
#                     OnOff.cluster_id,
#               ],
#            },
#            3: {
#                PROFILE_ID: zha.PROFILE_ID,
#                DEVICE_TYPE: zha.DeviceType.DIMMER_SWITCH,
#                INPUT_CLUSTERS: [
#                    OnOff.cluster_id,
#                ],
#                OUTPUT_CLUSTERS: [
#                     OnOff.cluster_id,
#               ],
#            },
#            4: {
#                PROFILE_ID: zha.PROFILE_ID,
#                DEVICE_TYPE: zha.DeviceType.DIMMER_SWITCH,
#                INPUT_CLUSTERS: [
#                    OnOff.cluster_id,
#                ],
#                OUTPUT_CLUSTERS: [
#                     OnOff.cluster_id,
#               ],
#            },
        },
    }

    replacement = {
        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,
                    Groups.cluster_id,  # Is needed for adding group then binding is not working.
                    LightLink.cluster_id,
                ],
                OUTPUT_CLUSTERS: [
                    Ota.cluster_id,
                    Time.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    TuyaSmartRemoteOnOffCluster,
                    LevelControl.cluster_id,
                    LevelControl.cluster_id,
                    LightLink.cluster_id,
                ],
            },
#            2: {
#                PROFILE_ID: zha.PROFILE_ID,
#                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,
#                INPUT_CLUSTERS: [
#                    TuyaSmartRemoteOnOffCluster,
#                ],
#                OUTPUT_CLUSTERS: [
#                    TuyaSmartRemoteOnOffCluster,
#                ],
#            },
#            3: {
#                PROFILE_ID: zha.PROFILE_ID,
#                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,
#                INPUT_CLUSTERS: [
#                    TuyaSmartRemoteOnOffCluster,
#                ],
#                OUTPUT_CLUSTERS: [
#                    TuyaSmartRemoteOnOffCluster,
#                ],
#            },
#            4: {
#                PROFILE_ID: zha.PROFILE_ID,
#                DEVICE_TYPE: zha.DeviceType.NON_COLOR_CONTROLLER,
#                INPUT_CLUSTERS: [
#                    TuyaSmartRemoteOnOffCluster,
#                ],
#                OUTPUT_CLUSTERS: [
#                    TuyaSmartRemoteOnOffCluster,
#                ],
#            },
        },
    }

I post also the above events fired by the dev tool (the rotation is not working)

Event 36 fired 10:13 AM:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "84:ba:20:ff:fe:8d:5d:56",
        "unique_id": "84:ba:20:ff:fe:8d:5d:56:1:0x0006",
        "device_id": "fbbcb195f2d27d3608f41df5e981e411",
        "endpoint_id": 1,
        "cluster_id": 6,
        "command": "press_type",
        "args": [
            2
        ]
    },
    "origin": "LOCAL",
    "time_fired": "2022-02-23T09:13:12.395759+00:00",
    "context": {
        "id": "b9f58baa6053b3b78f2466cebde2c669",
        "parent_id": null,
        "user_id": null
    }
}
Event 35 fired 10:13 AM:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "84:ba:20:ff:fe:8d:5d:56",
        "unique_id": "84:ba:20:ff:fe:8d:5d:56:1:0x0006",
        "device_id": "fbbcb195f2d27d3608f41df5e981e411",
        "endpoint_id": 1,
        "cluster_id": 6,
        "command": "remote_button_long_press",
        "args": []
    },
    "origin": "LOCAL",
    "time_fired": "2022-02-23T09:13:12.395142+00:00",
    "context": {
        "id": "e049f8bfbaa52416a83898fe8bfb1916",
        "parent_id": null,
        "user_id": null
    }
}
Event 34 fired 10:13 AM:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "84:ba:20:ff:fe:8d:5d:56",
        "unique_id": "84:ba:20:ff:fe:8d:5d:56:1:0x0006",
        "device_id": "fbbcb195f2d27d3608f41df5e981e411",
        "endpoint_id": 1,
        "cluster_id": 6,
        "command": "press_type",
        "args": [
            1
        ]
    },
    "origin": "LOCAL",
    "time_fired": "2022-02-23T09:13:06.628464+00:00",
    "context": {
        "id": "33f3a0702e2cffd1a3d55113538e490a",
        "parent_id": null,
        "user_id": null
    }
}
Event 33 fired 10:13 AM:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "84:ba:20:ff:fe:8d:5d:56",
        "unique_id": "84:ba:20:ff:fe:8d:5d:56:1:0x0006",
        "device_id": "fbbcb195f2d27d3608f41df5e981e411",
        "endpoint_id": 1,
        "cluster_id": 6,
        "command": "remote_button_double_press",
        "args": []
    },
    "origin": "LOCAL",
    "time_fired": "2022-02-23T09:13:06.627854+00:00",
    "context": {
        "id": "11235396fee326f56854a077a5358890",
        "parent_id": null,
        "user_id": null
    }
}
Event 32 fired 10:13 AM:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "84:ba:20:ff:fe:8d:5d:56",
        "unique_id": "84:ba:20:ff:fe:8d:5d:56:1:0x0006",
        "device_id": "fbbcb195f2d27d3608f41df5e981e411",
        "endpoint_id": 1,
        "cluster_id": 6,
        "command": "press_type",
        "args": [
            0
        ]
    },
    "origin": "LOCAL",
    "time_fired": "2022-02-23T09:13:04.407375+00:00",
    "context": {
        "id": "c456be1a29ab58b2386930727bb4eed9",
        "parent_id": null,
        "user_id": null
    }
}
Event 31 fired 10:13 AM:
{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "84:ba:20:ff:fe:8d:5d:56",
        "unique_id": "84:ba:20:ff:fe:8d:5d:56:1:0x0006",
        "device_id": "fbbcb195f2d27d3608f41df5e981e411",
        "endpoint_id": 1,
        "cluster_id": 6,
        "command": "remote_button_short_press",
        "args": []
    },
    "origin": "LOCAL",
    "time_fired": "2022-02-23T09:13:04.406704+00:00",
    "context": {
        "id": "9c52f64085439a1c3e342b20d33663e2",
        "parent_id": null,
        "user_id": null
    }
}
1 Like

hi to all, I can confirm that with the zigbee2mqtt integrator it works well!


That is good news, mine is still on the China rowboat.

The rowboat arrived today and it (the knob, not the rowboat) paired with Z2M.

Into event mode (3 presses) and I made an automation to turn a media_player volume up and down.

1 Like