I have a Zigbee TS004F (called ‘Smart Knob Dimmer’ on the box), simple unit from Aliexpress.
I paired it with ZigbeeHA and it was recognised, only shows Configuration: Firmware unknown. Battery and Identity are available.
If I press the button I get:
Zigbee_Button Toggle event was fired
17:01:57 - In 1 second
If I rotate it, I get:
Zigbee_Button Step event was fired with parameters: {‘step_mode’: 1, ‘step_size’: 37, ‘transition_time’: 2, ‘options_mask’: None, ‘options_override’: None}
16:45:31 - 16 minutes ago
If I try and setup an automation, the options do not appear to match what the activity shows. So nothing ever works.
This is very new to me, so could do with some guidance on getting it working. It feels like its almost there and I have just missed something.
You only missed 2 things and they were genuine rookie mistakes which are easily fixed:
Battery powered devices send events, so you need to listen to zha_events in Developer tools in order to build automations for your button.
You can skip the whole "listening to events and building automations from scratch and use a ready made blueprint. This one seems to be your same mode with a different manufacturer. You just need to import it and then select Take Control. All you need to change is one line, from manufacturer: _TZ3000_4fjiwweb to manufacturer: _TZ3000_402vrq2i
Can you have multiple buttons, each with a different Moes Smart setting?
Are there other actions, double click etc?
I tried using toggle option for a light, but that didn’t work. Changed to press for off and that worked. Turn button brinks light on and makes it brighter, press to turn off.
Could not see a way to activate a scene either.
Are you aware if there is a way to use it for other things, such as pressing button performs an action - such as making a TTS announcement on an Alexa? I already have the TTS bit setup.
Looking to use a button as a emergency alert for our Daughter who has Epilepsy, keep it next to her bed and she can alert us if a seizure is imminent.
All the above should be possible to achieve using that blueprint. All you have to do is configure the correct action based on what you want it to do.
I don’t own that knob so can’t help you with specific behaviours, however that thread is quite long & some of your questions (like double click) have already been asked there. I suggest you give it a read & play around, now that you can control it.
Id also appreciate if you could tag my previous post with the solution tag, given that it answers the original issue. That way, people with your same issue will be able to find the answer immediately.
I recently picked up a similar smart knob from AliExpress and while the linked posts did help get basic functions working, they didn’t utilize all “features” of the device/knob. Using ZHA debug, and the linked blueprints I created this blueprint that so far has allowed all inputs from the smart knob to be used.
blueprint:
name: ZHA - Tuya Smart Knob for lights - v1.1
description: 'Control lights with a Tuya Smart Knob from "_TZ3000_402vrq2i".
Tapping activates toggle event and will toggle the selected light.
Rotating left/right will change the brightness smoothly of the selected light.
Adjusted for generic Tuya Smart Knob, with functionality added for remote mode.
Device is switched to remote mode by rapidly tapping 3 times.
Once in remote mode the following functions are available
- Short Press
- Double Press
- Long Press
- Rotate Right
- Rotate Left
Based on
- Original blueprint by seamus65 (https://gist.github.com/seamus65/939a147634942dd885c8704334627f93).
- Improved by GonzaloAlbito (https://gist.github.com/gonzaloalbito/3dc06702e941e08298ea9bfade731731).
Version 2026-01-30.'
domain: automation
input:
remote:
name: Remote
description: Tuya Knob to use
selector:
device:
integration: zha
manufacturer: _TZ3000_402vrq2i
model: TS004F
multiple: false
light:
name: Light(s)
description: The light(s) to control
selector:
target:
entity:
domain: light
step_percent:
name: Light step
description: Light percent change for each knob step
selector:
number:
mode: slider
min: 0
max: 100
unit_of_measurement: "%"
default: 20
short_press:
name: Remote Mode - Short Press
description: Action to run on single press
default: []
selector:
action: {}
double_press:
name: Remote Mode - Double Press
description: Action to run on double press
default: []
selector:
action: {}
long_press:
name: Remote Mode - Long Press
description: Action to run on long press
default: []
selector:
action: {}
remote_right:
name: Remote mode - Spin Right
description: Action to run on "right spin" in remote mode
default: []
selector:
action: {}
remote_left:
name: Remote mode - Spin Left
description: Action to run on "left spin" in remote mode
default: []
selector:
action: {}
mode: restart
max_exceeded: silent
trigger:
- platform: event
event_type: zha_event
event_data:
device_id: !input remote
action:
- variables:
command: '{{ trigger.event.data.command }}'
mode: '{% if command == ''step'' %} {{ trigger.event.data.args[0] }} {% endif %}'
steps: '{% if command == ''step'' %} {{ (trigger.event.data.args[1] / 12.5 ) | int }} {% endif %}'
step_percent: !input step_percent
- choose:
- conditions:
- '{{ command == ''toggle'' }}'
sequence:
- service_template: light.toggle
target: !input light
- conditions:
- '{{ command == ''step'' }}'
- '{{ mode == ''StepMode.Up'' }}'
sequence:
- service_template: light.turn_on
target: !input light
data_template:
brightness_step_pct: '{{ step_percent * steps }}'
transition: 0.5
- conditions:
- '{{ command == ''step'' }}'
- '{{ mode == ''StepMode.Down'' }}'
sequence:
- service_template: light.turn_on
target: !input light
data_template:
brightness_step_pct: '-{{ step_percent * steps }}'
transition: 0.5
- conditions:
- '{{ command == ''remote_button_short_press'' }}'
sequence: !input short_press
- conditions:
- '{{ command == ''remote_button_double_press'' }}'
sequence: !input double_press
- conditions:
- '{{ command == ''remote_button_long_press'' }}'
sequence: !input long_press
- conditions:
- '{{ command == ''right'' }}'
sequence: !input remote_right
- conditions:
- '{{ command == ''left'' }}'
sequence: !input remote_left