Skip to content

Instantly share code, notes, and snippets.

@jaywick
Forked from seamus65/zha_moes_smart_knob_lights.yaml
Last active February 25, 2026 11:21
Show Gist options
  • Select an option

  • Save jaywick/229cc116f744d3257c40a5cf2c3f6e50 to your computer and use it in GitHub Desktop.

Select an option

Save jaywick/229cc116f744d3257c40a5cf2c3f6e50 to your computer and use it in GitHub Desktop.
blueprint:
name: ZHA Tuya Smart Knob for Lights
description: 'Control lights with a Moes Smart Knob.
You can set functions for a single press. This allows you to assign,
e.g., a scene or anything else.
Rotating left/right will change the brightness smoothly of the selected light.
Not all functionality of the device is available at time of writing, e.g. double press, long press and press and rotate.'
domain: automation
input:
remote:
name: Remote
description: Tuya Knob to use
selector:
device:
integration: zha
manufacturer: _TZ3000_abrsvsou
model: TS004F
light:
name: Light(s)
description: The light(s) to control
selector:
target:
entity:
domain: light
single_press:
name: Single press
description: Action to run on single press
default: []
selector:
action: {}
source_url: https://gist.github.com/jaywick/229cc116f744d3257c40a5cf2c3f6e50
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 }}'
cluster_id: '{{ trigger.event.data.cluster_id }}'
args: '{% if trigger.event.data.args[0] == 0 %} 0 {% elif trigger.event.data.args[0] == 1 %} 1 {% elif trigger.event.data.args[0] == 3 %} 3 {% endif %}'
- choose:
- conditions:
- '{{ command == ''toggle'' }}'
- '{{ cluster_id == 6 }}'
sequence: !input 'single_press'
- conditions:
- '{{ command == ''step'' }}'
- '{{ cluster_id == 8 }}'
- '{{ args == 0 }}'
sequence:
- repeat:
while:
- condition: template
value_template: "{{ repeat.index < 2 }}"
sequence:
- service_template: light.turn_on
target: !input 'light'
data_template:
brightness_step_pct: 5
transition: 0.5
- conditions:
- '{{ command == ''step'' }}'
- '{{ cluster_id == 8 }}'
- '{{ args == 1 }}'
sequence:
- repeat:
while:
- condition: template
value_template: "{{ repeat.index < 2 }}"
sequence:
- service_template: light.turn_on
target: !input 'light'
data_template:
brightness_step_pct: -5
transition: 0.5
- conditions:
- '{{ command == ''step_color_temp'' }}'
- '{{ cluster_id == 768 }}'
- '{{ args == 1 }}'
sequence:
- repeat:
while:
- condition: template
value_template: "{{ repeat.index < 2 }}"
sequence:
- service_template: light.turn_on
target: !input 'light'
data_template:
brightness_step_pct: 20
transition: 0.5
- conditions:
- '{{ command == ''step_color_temp'' }}'
- '{{ cluster_id == 768 }}'
- '{{ args == 3 }}'
sequence:
- repeat:
while:
- condition: template
value_template: "{{ repeat.index < 2 }}"
sequence:
- service_template: light.turn_on
target: !input 'light'
data_template:
brightness_step_pct: -20
transition: 0.5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment