A blueprint for the IKEA SYMFONISK Sound remote, gen 2 (E2123) - with volume hold

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

I recently added a Symfonisk speaker and Gen2 remote to my setup but having 13 separate automations to cover each possible button action had me wanting to dip my toes into blueprints.

I came across the excellent work below, but each one only covered about 90% of what I wanted…

I was unable to submit my blueprint due to an error, I’ll link to the original posts in a separate comment.

… I wanted to:

  1. be able to specify the device or media player for each command (as I like to start radio and music via Music Assistant, but command the Symfonisk directly for the controls, for example);

  2. be able to hold the volume buttons to increment the volume without having to mash the buttons, or work out a custom volume scale value.

After many hours getting my head around the blueprint formatting (enough to get the cogs moving anyway), I managed to figure out the above and I’m quite chuffed with myself, so I thought it best to share. For the record, I don’t want to steal any credit for the above work, I’ve completely ripped-off the above blueprints to chop and slice into mine. I just figured out the bits I needed.

After selecting the Symfonisk remote, my blueprint allows you to set a separate action for each command/button. Not only the expected single, double and long-press for the shortcuts, but also for holding down the volume buttons!

Holding down the volume buttons repeats the action, instead of sending separate press/release commands.

I have no idea how to submit a blueprint to the Exchange. Maybe someone could point me in the right direction? I’ll paste the code for it below in the mean time.

blueprint:
  name: ZHA - IKEA SYMFONISK Sound remote, gen 2 (E2123) - with volume hold.
  description: Set individual, custom commands for each button on the SYMFONISK Sound remote, gen 2. Including single, double and long press for the shortcut buttons and long press for the volume buttons (firmware version 0x01000035).

#  source_url: https://community.home-assistant.io/t/something-something-something/123456


  domain: automation
  
  input:
    remote:
      name: Remote
      description: IKEA SYMFONISK Sound remote, gen 2 to use.
      selector:
        device:
          integration: zha
          manufacturer: IKEA of Sweden
          model: SYMFONISK sound remote gen2
          multiple: false


# BUTTON ACTIONS...

    action_play:
      name: Play button press
      description: Action to run on play button press.
      default: []
      selector:
        action: {}

    action_vol_up:
      name: Volume Up button press
      description: Action to run on volume up button press.
      default: []
      selector:
        action: {}
    action_vol_down:
      name: Volume Down button press
      description: Action to run on volume down button press.
      default: []
      selector:
        action: {}

    action_vol_up_hold:
      name: Volume Up button hold
      description: Action to run on volume up button hold (repeats the action until released).
      default: []
      selector:
        action: {}
    action_vol_down_hold:
      name: Volume Down button hold
      description: Action to run on volume down button hold (repeats the action until released).
      default: []
      selector:
        action: {}

    action_next:
      name: Next button press
      description: Action to run on next button press.
      default: []
      selector:
        action: {}
    action_previous:
      name: Previous button press
      description: Action to run on previous button press.
      default: []
      selector:
        action: {}

    single_dot_single_press:
      name: Shortcut 1 single button press
      description: Action to run on shortcut 1 button single press.
      default: []
      selector:
        action: {}
    single_dot_double_press:
      name: Shortcut 1 button double press
      description: Action to run on shortcut 1 button double press.
      default: []
      selector:
        action: {}
    single_dot_long_press:
      name: Shortcut 1 button hold
      description: Action to run on shortcut 1 button hold.
      default: []
      selector:
        action: {}

    double_dot_single_press:
      name: Shortcut 2 single button press
      description: Action to run on shortcut 2 button single press.
      default: []
      selector:
        action: {}
    double_dot_double_press:
      name: Shortcut 2 button double press
      description: Action to run on shortcut 2 button double press.
      default: []
      selector:
        action: {}
    double_dot_long_press:
      name: Shortcut 2 button hold
      description: Action to run on shortcut 2 button hold.
      default: []
      selector:
        action: {}


mode: single
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 }}'
    endpoint_id: '{{ trigger.event.data.endpoint_id }}'
#    args: '{{ trigger.event.data.args }}'


# BUTTON TRIGGERS...

- choose:

  - conditions:
    - '{{ command == ''toggle'' }}'
    - '{{ cluster_id == 6 }}'
    - '{{ endpoint_id == 1 }}'
    sequence: !input action_play
    
  - conditions:
    - '{{ command == ''move_with_on_off'' }}'
    - '{{ cluster_id == 8 }}'
    - '{{ endpoint_id == 1 }}'
    - '{{ trigger.event.data.params.move_mode == 0}}'
    sequence: !input action_vol_up
  - conditions:
    - '{{ command == ''move_with_on_off'' }}'
    - '{{ cluster_id == 8 }}'
    - '{{ endpoint_id == 1 }}'
    - '{{ trigger.event.data.params.move_mode == 1 }}'
    sequence: !input action_vol_down

  - conditions:
    - '{{ command == ''move'' }}'
    - '{{ cluster_id == 8 }}'
    - '{{ endpoint_id == 1 }}'
    - '{{ trigger.event.data.params.move_mode == 0}}'
    - '{{ trigger.event.data.params.options_mask == 0}}'
    sequence: !input action_vol_up_hold
  - conditions:
    - '{{ command == ''move'' }}'
    - '{{ cluster_id == 8 }}'
    - '{{ endpoint_id == 1 }}'
    - '{{ trigger.event.data.params.move_mode == 1 }}'
    - '{{ trigger.event.data.params.options_mask == 0}}'
    sequence: !input action_vol_down_hold

  - conditions:
    - '{{ command == ''step'' }}'
    - '{{ cluster_id == 8 }}'
    - '{{ endpoint_id == 1 }}'
    - '{{ trigger.event.data.params.step_mode == 0 }}'
    sequence: !input action_next
  - conditions:
    - '{{ command == ''step'' }}'
    - '{{ cluster_id == 8 }}'
    - '{{ endpoint_id == 1 }}'
    - '{{ trigger.event.data.params.step_mode == 1 }}'
    sequence: !input action_previous

  - conditions:
    - '{{ command == ''short_release'' }}'
    - '{{ endpoint_id == 2 }}'
    sequence: !input single_dot_single_press
  - conditions:
    - '{{ command == ''multi_press_complete'' }}'
    - '{{ endpoint_id == 2 }}'
    sequence: !input single_dot_double_press
  - conditions:
    - '{{ command == ''long_press'' }}'
    - '{{ endpoint_id == 2 }}'
    sequence: !input single_dot_long_press


  - conditions:
    - '{{ command == ''short_release'' }}'
    - '{{ endpoint_id == 3 }}'
    sequence: !input double_dot_single_press
  - conditions:
    - '{{ command == ''multi_press_complete'' }}'
    - '{{ endpoint_id == 3 }}'
    sequence: !input double_dot_double_press
  - conditions:
    - '{{ command == ''long_press'' }}'
    - '{{ endpoint_id == 3 }}'
    sequence: !input double_dot_long_press

I’d like to clean up the text, descriptions and general wording. Any feedback or pointers are more than welcome.

It would be great to be able to set a different volume % step for the volume-hold commands. I like the default Sonos 2% increments, but a 6% increment when holding the buttons would be ace.

Welcome skinny-cookie,
A suggestion you may want to use this to make links so new people will be able to access your stuff easier.
Create a link – My Home Assistant

Thanks @Sir_Goodenough , that’s what I’m hoping to do. But how do I get my blueprint uploaded with a link? All the examples I see in the Exchange link back to the post they’re from - it’s a little bit like Inception.

I know I’m missing an obvious step, but I can’t see when it is.

Your best bet is to create a GitHub gist and put them there to share out of. There can only be 1 that lives in a top post and you can use the link to share that, but you have multiple. sharing them from a gist is safe and done by many. I started that way, then went thru the bother of starting a GitHub repo because I am sharing over 20 of them.

What do you mean by that?

Thanks for the pointers. I may just create a repo then to store all my various “notes”.

Hmm, I get a “422 error” when trying to edit the post with my link - I’ll try again tomorrow. Thanks again.

To ensure credit is given where credit is due, these are the three posts that I fed from to complete my blueprint…