# 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 # # # This automation is built for a device in EVENT mode rather than COMMAND mode. As there is some cross-over between the two modes, it is NOT recommended to use automations for both modes at the same time. blueprint: name: Aqara H1 Rotary Dial - Media Controls source_url: https://raw.githubusercontent.com/nwithan8/configs/main/home_assistant/blueprints/automations/aqara_h1_rotary_dial_remote_media.yaml 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: []