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:
-
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);
-
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.