Hey all, I finally got my hands on an Aqara H1 Rotary Dimmer Switch, a ZigBee device that makes for a neat remote.
While it’s designed to be a light dimmer, it looks like a radio knob, which got me wanting to use it to control a media player.
Using an existing blueprint as a reference, I was able to put together a blueprint that allows you to control a media player with the different controls on the device (single press, double press, long press, rotate left, rotate right).
NOTE: This device is not currently supported in ZHA, and requires a custom quirk (available here: Custom ZHA quirk for Aqara H1 Knob Wireless · GitHub) until official support is added.
Blueprint
# This blueprint allows you to control a media player with a Aqara H1 Rotary Dial (https://homekitnews.com/2020/11/02/aqara-reveal-smart-rotary-dimmer-switch/)
# This automation requires a boolean (toggle) helper to maintain state: https://www.home-assistant.io/integrations/input_boolean/
#
# This ZigBee device is not currently supported by ZHA, and requires a custom ZHA quirk: https://gist.github.com/oxc/754d6436ce62d92af660d3671acd9346
# This ZigBee device is already supported by Z2M: https://github.com/zigpy/zha-device-handlers/issues/2266
blueprint:
name: Aqara H1 Rotary Dial - Media Controls
description: >-
This automation allows using an Aqara H1 Rotary Dial to control a media player.
Requires a custom ZHA quirk until official ZHA support is added.
Requires a boolean (toggle) helper to store modes.
domain: automation
input:
dial:
name: Aqara H1 Rotary Dial
description: Select the rotary dial you wish to use
selector:
device:
integration: zha
manufacturer: LUMI
model: lumi.remote.rkba01
media_player:
name: Media Player
description: The media player to control
selector:
target:
entity:
domain: media_player
mode_helper:
name: Mode toggle helper
description: A boolean (toggle) helper to store the current mode in
selector:
entity:
domain: input_boolean
mode: restart
max_exceeded: silent
trigger:
- platform: event
event_type: zha_event
event_data:
device_id: !input dial
action:
- choose:
# Play/pause on single press
- conditions:
- condition: template
value_template: '{{ trigger.event.data.command == "1_single" }}'
sequence:
- service: media_player.media_play_pause
data: {}
target: !input media_player
# Toggle mode on double press
- conditions:
- condition: template
value_template: '{{ trigger.event.data.command == "1_double" }}'
sequence:
- service: input_boolean.toggle
data: {}
target:
entity_id: !input mode_helper
# Stop playback on long press
- conditions:
- condition: template
value_template: '{{ trigger.event.data.command == "1_hold" }}'
sequence:
- service: media_player.media_stop
data: {}
target: !input media_player
# Volume down / previous track on left turn
- conditions:
- condition: template
value_template: '{{ trigger.event.data.command == "stop_rotation" and trigger.event.data.args.rotation_direction == -1 }}'
sequence:
- if:
- condition: state
entity_id: !input mode_helper
state: "on"
then:
- service: media_player.media_previous_track
data: {}
target: !input media_player
else:
- service: media_player.volume_down
data: {}
target: !input media_player
# Volume up / next track on right turn
- conditions:
- condition: template
value_template: '{{ trigger.event.data.command == "stop_rotation" and trigger.event.data.args.rotation_direction == 1 }}'
sequence:
- if:
- condition: state
entity_id: !input mode_helper
state: "on"
then:
- service: media_player.media_next_track
data: {}
target: !input media_player
else:
- service: media_player.volume_up
data: {}
target: !input media_player
# Any other event will cancel the repeat loops.
default: []
Setup
Double-clicking the button toggles between volume and track controls. To store the state, this automation relies on an input boolean helper.
Usage
- Single press: Play/pause the media player
- Double press: Toggle between volume and track controls
- Long press: Stop the media player
- Rotate right: Increase the volume or skip to the next track, depending on mode
- Rotate left: Decrease the volume or skip to the previous track, depending on mode
Credit
- @niro1987 for his IKEA remote blueprint, the basis of this blueprint
- @oxc for his ZHA quirk to get the Aqara H1 working with ZHA
Hopes this helps!
EDIT: 08-10-2023
A few days ago, I noticed that some aspects of this automation were no longer working, and discovered that my devices were now set into COMMAND mode rather than EVENT mode, which changes the triggers available for processing.
Supposedly, you can switch between COMMAND and EVENT mode by clicking the button on the device 5 times quickly, although I have been unable to switch my devices back into EVENT mode. I suspect a firmware update for these devices may have altered this behind-the-scenes.
If you also face the same issue, I have made a variant of this blueprint that works in COMMAND mode, which can be imported below:
The key difference between the two is that, in COMMAND mode, a single press is not registered. As a result, single press is unavailable in this blueprint. I would suggest using the original EVENT mode variant above if possible.