# This blueprint allows you to map actions to the different controls on an Aqara H1 Rotary Dial (https://homekitnews.com/2020/11/02/aqara-reveal-smart-rotary-dimmer-switch/)
#
# 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 COMMAND mode rather than EVENT 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 - Remote (Command Mode)

  source_url: https://raw.githubusercontent.com/nwithan8/configs/main/home_assistant/blueprints/automations/aqara_h1_rotary_dial_remote_command_mode.yaml

  description: >-
    This automation allows using an Aqara H1 Rotary Dial (ZigBee) to trigger actions.
    Requires a custom quirk if using with ZHA.

  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
    double:
      name: Double Press
      description: The action to perform on a double press of the dial button
      selector:
        action:
      default: []
    long:
      name: Long Press
      description: The action to perform on a long press of the dial button
      selector:
        action:
      default: []
    left:
      name: Left Turn
      description: The action to perform on rotating the dial to the left
      selector:
        action:
      default: []
    right:
      name: Right Turn
      description: The action to perform on rotating the dial to the right
      selector:
        action:
      default: []

mode: restart
max_exceeded: silent

trigger:
  - platform: event
    event_type: zha_event
    event_data:
      device_id: !input dial

action:
  - choose:
      # Double press on the button
      - conditions:
          - condition: template
            value_template: '{{ trigger.event.data.command == "toggle" }}'
        sequence: !input double

      # Long press on the button
      - conditions:
          - condition: template
            value_template: '{{ trigger.event.data.command == "off" }}'
        sequence: !input long

      # Rotate dial to the left
      - conditions:
          - condition: template
            value_template: '{{ trigger.event.data.command == "stop_rotation" and trigger.event.data.args.rotation_direction == -1 }}'
        sequence: !input left

      # Rotate dial to the right
      - conditions:
          - condition: template
            value_template: '{{ trigger.event.data.command == "stop_rotation" and trigger.event.data.args.rotation_direction == 1 }}'
        sequence: !input right

    # Any other event will cancel the repeat loops.
    default: []
