ZHA - IKEA Symfonisk sound controller for media (the spinny one)

Had a lot of issues with ZHA and Ikea devices. Ended up having to re-pair them every few days, and the batteries drained within a week or so (I have 2x Symfonisk knobs and 1x on/off switch). I switched over to ZigBee2MQTT and everything is working much more reliably now with all the same hardware, and the Ikea device batteries are still at 100% after a week despite frequent use. Not sure what the issue was in ZHA, but perhaps this helps someone else with the same problem.

1 Like

Hi, thanks for the code it works well for the quicker volume control. I am having an issue though where the battery has drained over a 2 day period. I am seeing hourly a zha_event trigger that produces a No Action taken. I suspect this is likely the cause of the battery drain. Thoughts?

Hey guys,

I was thinking of picking one of these up. Does anyone have it controlling Spotify volume though Alexa?

Does it work ok?

Thanks

Hi.
Thanks for this blueprint, all funktions are fine and working, but i get this error message in the log.

Can anyone help me finding the error?

Logger: homeassistant.components.automation
Source: components/automation/init.py:640
Integration: Automatisering (documentation, issues)
First occurred: 08.11.05 (1 occurrences)
Last logged: 08.11.05

Blueprint Controller - IKEA E1744 SYMFONISK Rotary Remote generated invalid automation with inputs OrderedDict([(‘integration’, ‘ZHA’), (‘controller_device’, ‘490c4d4ed891a9597fdec15ddf243897’), (‘helper_last_controller_event’, ‘input_text.ikea_sound_controle’), (‘action_rotate_left’, [OrderedDict([(‘device_id’, ‘334729b3c4920d8a4fdb3bfc095976c0’), (‘domain’, ‘number’), (‘entity_id’, ‘number.kokken_treble’), (‘type’, ‘set_value’)])])]): required key not provided @ data[‘value’]. Got None

Continuously spinning the wheel only results in on incremental change in volume. Is there any way to change this, so that continuously spinning the wheel will result in a continuous increase of the volume?

Thanks @sparkydave ! Somewhat more complicated to set up, but it works well for me.

I would still be interested if the Symfonisk Sound Controller for media blueprint can be improved so that one can continuously increase/decrease the volume.

Hi, If I have deCONZ, can I use this one? do I need a different version/code. I tried the import, but that doesnt find my remote

You would need to modify the blueprint to the deconz integration and check the rest of the code based on what you see in your deconz_events

Hi Thomas

I have used your blueprint with a lot of pleasure over the last year, but sadly core-2022.4.x partly broke this blueprint. i.e. button presses are not recognized anymore. Something changed in ZHA adding some arguments to the events. The args variable now evaluates to something like:
args: '[<StepMode.Up: 0>, 1, 0, <bitmap8.0: 0>, <bitmap8.0: 0>]'.
in stead of:
args: '[0, 1, 0]'
This issue is related: ZHA ikea tradfri button up/down buttons service calls are not recognized anymore · Issue #69375 · home-assistant/core · GitHub

It would be great to have an official fix for that. I temporary replaced the four args checks by a param attribute check (step_mode or move_mode) in the conditions part. That fixed it for me:

  - conditions:
    - '{{ command == ''step'' }}'
    - '{{ cluster_id == 8 }}'
    - '{{ endpoint_id == 1 }}'
    - '{{ trigger.event.data.params.step_mode == 0 }}'
#    - '{{ args == [0, 1, 0] }}'
    sequence: !input 'double_press'
  - conditions:
    - '{{ command == ''step'' }}'
    - '{{ cluster_id == 8 }}'
    - '{{ endpoint_id == 1 }}'
    - '{{ trigger.event.data.params.step_mode == 1 }}'
#    - '{{ args == [1, 1, 0] }}'
    sequence: !input 'triple_press'
  - conditions:
    - '{{ command == ''move'' }}'
    - '{{ cluster_id == 8 }}'
    - '{{ endpoint_id == 1 }}'
    - '{{ trigger.event.data.params.move_mode == 0}}'
#    - '{{ args == [0, 195] }}'
    sequence:
    - service: media_player.volume_up
      target: !input 'media_player'
    - delay: 1
  - conditions:
    - '{{ command == ''move'' }}'
    - '{{ cluster_id == 8 }}'
    - '{{ endpoint_id == 1 }}'
    - '{{ trigger.event.data.params.move_mode == 1 }}'
#    - '{{ args == [1, 195] }}'

regards
Eric

4 Likes

I can’t find my controller to test it at the minute, but it sounds like you have it working for now.

Yep, works perfect again

Will @erkr 's edit be included as an update to the ‘official’ Blueprint?

You do realise that blueprints are created by community members, so not official?

Anyone is free to create and modify blueprints as they need, and they are shared to benefit the rest of the community.

Thats EXACTLY why i put ‘official’ in quotes…

But other users can’t edit the post on here to include the changes so anyone that tries to add the blueprint via the URL will get a Blueprint that doesn’t work until YOU edit the original post.

Hi Thomas
@seamus65: As you are the original author, deserving the credits, and with a lot referenced links towards your blueprint; I thought it makes sense you would publish an update with this small fix, instead of me published just another copy. The more copies, the harder to find a working one :wink:
Regards
Eric

Eric,

I am just back from being away for a wedding, but I will get a look at updating this as soon as I can.

Thank you

And sorry Dave for being short with you. A lot going on at the minute.

Great, thx!

Updated as per your modifications as that is a good way of doing it.

Sorry for the delay.

3 Likes

ZHA was messing up these attributes, and now It’s broken again :disappointed_relieved:

I made a more radical rewrite of this nice blueprint using the symfonisk device events instead of the raw ZHA events. This version is compatible with the configuration of the original blueprint:

blueprint:
  name: ZHA - IKEA Symfonisk sound controller for media
  description: 'Control media with an IKEA Symfonisk sound controller (the spinny
    ones).

    Single press will toggle Play/Pause on your selected media player.

    You can set functions for double press and triple press.

    Rotating left/right will change the volume smoothly of the selected media player,
    if that function is possible.'
  domain: automation
  input:
    remote:
      name: Remote
      description: IKEA Symfonisk controller to use
      selector:
        device:
          integration: zha
          manufacturer: IKEA of Sweden
          model: SYMFONISK Sound Controller
    media_player:
      name: Media Player
      description: The media player to control
      selector:
        target:
          entity:
            domain: media_player
    double_press:
      name: Double press
      description: Action to run on double press
      default: []
      selector:
        action: {}
    triple_press:
      name: Triple press
      description: Action to run on triple press
      default: []
      selector:
        action: {}
  source_url: https://community.home-assistant.io/t/zha-ikea-symfonisk-sound-controller-for-media-the-spinny-one/266130
mode: single
max_exceeded: silent
trigger:
- device_id: !input 'remote'
  id: press_single
  domain: zha
  platform: device
  type: remote_button_short_press
  subtype: turn_on
- device_id: !input 'remote'
  id: press_double
  domain: zha
  platform: device
  type: remote_button_double_press
  subtype: turn_on
- device_id: !input 'remote'
  id: press_triple
  domain: zha
  platform: device
  type: remote_button_triple_press
  subtype: turn_on
- device_id: !input 'remote'
  id: rotate_right
  domain: zha
  platform: device
  type: device_rotated
  subtype: right
- device_id: !input 'remote'
  id: rotate_left
  domain: zha
  platform: device
  type: device_rotated
  subtype: left
action:
- choose:
  - conditions:
    - condition: trigger
      id: press_single
    sequence:
    - service: media_player.media_play_pause
      target: !input 'media_player'
  - conditions:
    - condition: trigger
      id: press_double
    sequence: !input 'double_press'
  - conditions:
    - condition: trigger
      id: press_triple
    sequence: !input 'triple_press'
  - conditions:
    - condition: trigger
      id: rotate_right
    sequence:
    - service: media_player.volume_up
      target: !input 'media_player'
    - delay: 1
  - conditions:
    - condition: trigger
      id: rotate_left
    sequence:
    - service: media_player.volume_down
      target: !input 'media_player'
    - delay: 1

Note1: For me it only works when selecting a media player entity not as a device
Note2: Change the delay (is in seconds) if you want to adapt sensitivity for volume control (I’m using delay: 0.2)

2 Likes