Z2M - IKEA Symfonisk Gen2 [E2123] Media Control v1.55

The only time I can remember someone having difficulty selecting their device is because they were using groups supported in Z2M and/or strange naming conventions.

What are you devices called? Have you modified the base topic name for your Z2M setup?

Thanks, much appreciated but that does not work either.

Selected
Settings/Automations & Scenes
Selected + Create Automation
Selected zigbee2MQTT - Ikea Symfonisk sound controller GEN2 for media

Then completed the automation using the Blueprint resulting in

alias: CORE Kitchen Sonos Symfonisk
description: ""
use_blueprint:
  path: Shawsky/z2m-ikea-symfonisk-gen2-e2123-media-control-v1-55.yaml
  input:
    remote: 1588ecf396c55c59ce2f652d0c4a31ff
    media_player: media_player.kitchen_sonos
    single_dot:
      - action: media_player.unjoin
        metadata: {}
        data: {}
        target:
          device_id: be4ea2991dbc72feb4eb86c91e9b652d
      - action: media_player.play_media
        target:
          entity_id: media_player.kitchen_sonos
        data:
          media_content_id: FV:2/74
          media_content_type: favorite_item_id
        metadata:
          title: Greatest Hits Radio (South Wales)
          thumbnail: >-
            https://dtu8ldmaopof3.cloudfront.net/i/b64aHR0cHM6Ly9tZWRpYS5iYXVlcnJhZGlvLmNvbS9pbWFnZS91cGxvYWQvY19jcm9wLGdfY3VzdG9tL3YxNzAwODQxNDExL2JyYW5kX21hbmFnZXIvc3RhdGlvbnMvejB6cWc0aGw0a3k5OWZmZG9xZmQuanBn_640.jpg
          media_class: genre
          children_media_class: null
          navigateIds:
            - {}
            - media_content_type: favorites
              media_content_id: ""
            - media_content_type: favorites_folder
              media_content_id: object.item.audioItem.audioBroadcast
      - action: media_player.volume_set
        metadata: {}
        data:
          volume_level: 0.15
    double_dot:
      - action: media_player.join
        metadata: {}
        data:
          group_members:
            - media_player.kitchen_sonos
        target:
          device_id: be4ea2991dbc72feb4eb86c91e9b652d

Device is registering button presses in Home Assistant and zigbee2MQTT

But not in the Automation.

NOTE the Automation is NOT showing in the Device page.

I’ll figure out how to uninstall the bluprint and try re-installing as I know this works on my other Home Assistant

Uninstall blueprint
Reboot
Reinstall blueprint
Reboot

Same issue
The Blueprint show Automations shows the text automation

The Device page shows button presses correctly

The blueprint is just not responding.

I try something else.

What firmware is your device?

The automation won’t show in the device page, that’s normal.

There’s an oddity in your yaml though - you have a specific play item in the play media action - this shouldn’t be the case. It looks like you’ve maybe modified the generated yaml? If so it’s probably overriding the blueprint behaviour or clashing with it?

I note you have “became unknown” in the action list too - are you sure the device is properly registered with Z2M? They’re a right pain to pain properly with all services working ok. Get it in pairing mode and joining Z2M and keep pressing one of the buttons until it’s all finished to keep it awake.

Failing that, there’s a few people who’ve had issues if you look back in the thread, all of them were individual setup issues/choices or firmware/pairing issues.

I deleted the last remote, and readed it. Still not show up as a remote. I would guess it’s the 0x28dba7fffee4e70 name that should be showing? Adding that manually, I get missing input remote. No idea what I’m doing wrong sadly :confused:

image

Yes the Id is ultimately captured in the Automation that uses the Blueprint but I think the issue is that you haven’t renamed the device or renamed without updating the entity id. When you use the Blueprint, how do you see the devices listed?

Here’s mine, you can see I’ve renamed them Sound Control and Sound Control 2 and that’s their internal name, once added to the Blueprint the deviceid is captured.

Try renaming in Z2M using the option in the device list to set a friendly name, ensure you set Update Home Assistant entity id to on:

image

The fw is 1.0.35, the same as when it was working on the other install of Home Assistant.

There’s an oddity in your yaml though - you have a specific play item in the play media action - this shouldn’t be the case. It looks like you’ve maybe modified the generated yaml? If so it’s probably overriding the blueprint behaviour or clashing with it?

The yaml is as produced in the automation untouched so not sure where or how the oddity occurred.

The Symfonisk is re-paired and responding well.

I have a screen capture of both the automation and the device page (under MQTT) where the Device page is showing activities on the device and not in the automation.

This is a brand new, vanilla install of Home Assistant on a wiped Home Assistant green, with vanilla everything.

So unsure where other issues may be occurring :slight_smile:

But thanks for your help, I’ll do it in Node Red - pity though it worked great in the old Home Assistant :frowning:

Just did another test.

Created a native Automation on trigger Device ‘symfonisk’ on volume down.

The automations traps and uses the button press.

However the blueprint does not ‘see’ any action.

So if zigbee2MQTT, Device Page, Native Automation can all ‘see’ the button presses on the symfonisk what is the obstacle that is stopping the Blueprint form ‘seeing’ it too.

I have no experience with Blueprints so don’t quite understand the mechanics behind them - but there is something weird here.

I the Motion Blueprint OK.

I have just DL’s two more switch Blueprints, Tuya 4 way and Ikea Somrig see if the issue is consistent.

Yup the Somrig blueprint works fine.

Happy to take a look but I’m going to need much more info than you’ve provided. You’ve not answered my questions as to base topic/device name or anything related to your setup - without that I have nothing to go on other than loads of other people where it works fine. If it worked on your old setup then clearly something must be different but only you can help here :man_shrugging:

Happy to take a look

Many thanks.

Sorry I thought I had answered your questions.

I think I have everything here

  • Core2024.10.2
  • Supervisor2024.10.2
  • Operating System13.1
  • Frontend20241002.3

Mosquitto broker
Current version: 6.4.1

Zigbee2MQTT
Current version: 1.40.2-1

  1. Total 57

  2. By device type

Router: 42

End devices: 15
Coordinator type
zStack3x0

Coordinator revision
20240315

Coordinator IEEE Address
0x00124b0030e4edf5

Frontend version
0.7.4

zigbee-herdsman-converters version
20.21.0

zigbee-herdsman version
2.1.3

  1. By power source

Mains (single phase): 42

Battery: 15

  1. By vendor

Aurora: 18

IKEA of Sweden: 11

innr: 10

LUMI: 10

_TZ3000_1h2x4akh: 3

_TZ3000_v8jvcwsx: 2

_TZ3210_3ipj1g0o: 2

LEDVANCE: 1

  1. By model

DoubleSocket50AU: 11

SP 222: 10

lumi.curtain.acn002: 9

SingleSocket50AU: 7

TRADFRI Signal Repeater: 5

TS011F: 3

TRADFRI signal repeater: 2

TS0042: 2

TS0505B: 2

Plug Z3: 1

lumi.motion.ac01: 1

VINDSTYRKA: 1

SYMFONISK sound remote gen2: 1

VALLHORN Wireless Motion Sensor: 1

SOMRIG shortcut button: 1

zigbee2MQTT Configuration.yaml extract

homeassistant_legacy_entity_attributes: false
legacy_api: false
legacy_availability_payload: false
channel: 15
log_level: error
last_seen: ISO_8601
mqtt:
server: mqtt://192.168.1.168:1883
user: z2mmqttuser
password: D165628k
version: 5
serial:
port: tcp://192.168.1.41:6638
frontend:
port: 8099
device_options:
legacy: false
retain: true

friendly_name: Kitchen/Symfonisk

‘0x287681fffe49e1a3’:

{
“action”: “”,
“battery”: 95,
“last_seen”: “2024-10-15T11:09:15.603Z”,
“linkquality”: 123,
“update”: {
“installed_version”: -1,
“latest_version”: -1,
“state”: null
},
“update_available”: null,
“voltage”: null
}


Renamed Symfonisk

Name change picked up in the blueprinted automation

alias: TEST Symfonisk
description: ""
use_blueprint:
  path: Shawsky/z2m-ikea-symfonisk-gen2-e2123-media-control-v1-55.yaml
  input:
    remote: 1588ecf396c55c59ce2f652d0c4a31ff
    media_player: media_player.office_sonos_1
    single_dot:
      - action: media_player.play_media
        target:
          entity_id: media_player.office_sonos_1
        data:
          media_content_id: FV:2/74
          media_content_type: favorite_item_id
        metadata:
          title: Greatest Hits Radio (South Wales)
          thumbnail: >-
            https://dtu8ldmaopof3.cloudfront.net/i/b64aHR0cHM6Ly9tZWRpYS5iYXVlcnJhZGlvLmNvbS9pbWFnZS91cGxvYWQvY19jcm9wLGdfY3VzdG9tL3YxNzAwODQxNDExL2JyYW5kX21hbmFnZXIvc3RhdGlvbnMvejB6cWc0aGw0a3k5OWZmZG9xZmQuanBn_640.jpg
          media_class: genre
          children_media_class: null
          navigateIds:
            - {}
            - media_content_type: favorites
              media_content_id: ""
            - media_content_type: favorites_folder
              media_content_id: object.item.audioItem.audioBroadcast

I have only been using Home Assistant for 10 months so probably missed something stupid but cannot find it.

Appreciate you checking.

I have a total of 4 remotes, and have 3 of them set up using my own automation. I bought a new one last week, and have now tried to use it with default name, and renamed with HA ID updates, to MR4. Sadly tho, the blueprint is not showing any devices.

No worries, I really want to help you get it working :slight_smile:

I think the issue is around naming of the devices due to the way the messages are listened to. An MQTT path is built that includes the name of the device. I suspect the 0x012345678 etc id causes a problem and I think now you’ve renamed them with a “/” in the name is a problem as that’s part of the MQTT path specification. Part of this issue comes about due to how I list the available devices for the Blueprint - it makes it much easier to pick your device when you have loads of Z2M “things” but then it’s susceptible to these sorts of problems.

Try renaming it to just “kitchen remote” and see if that works?

1 Like

What’s your Z2M config for the devices? Are they grouped in Z2M? How are they named?

If you could share some of your ikea remote/Z2M config info it would help - all 4 of your devices should be listed there so it has to be config

Thanks for taking the time to help, sorry for lacking basic skills around this. I think, hopefully, this is the information your requesting? I have renamed most of them to MRX, for Media Remote.

EDIT: Doing alot of testing, after a reboot of HA, some times the first 3 remotes will show up. Fare from always, maybe 25% of the times, a reboot will let me choose the first 3 remotes. The new one, MR4, has never been in the list. Very odd, no idea why it’s behaving like this. I notice my devices has both 1.0.32 and 1.0.35 firmware, with no option of upgrading on any of them.

Ok it looks ok from that perspective. I’ve just confirmed your naming conventions are ok using my setup (so the “-” isn’t causing a problem). When re-naming them do you update the HA entity id too?

Could you let me know what the controllers look like in the device page please? Here’s mine:

You will need to get them all on the latest firmware for Z2M to work correctly with them (IIRC), but that doesn’t account for the 3 on 1.0.35. To do the update, wake the device by pressing a button and then click check for updates. Whilst the check is in progress, keep pressing one of the buttons over and over to keep it from sleeping. You should find the update will happen then - it takes aaaages though.

Once done, it’s worth deleting all of the devices fully and re-adding them to Z2M - do the same as for updating as I’ve often found not everything registers correctly otherwise or the dot buttons don’t function etc. finally, give them back their friendly name and see how you get on.

I do rename the HA intity as well when I do a rename.

EDIT: Most sorry, turns out I was using a version of this, with all the buttons, and this blueprint was missing the filer name for the name with the comma. I edited the blueprint using your version, and it’s working now. So sorry for the confusion.

That was it!!!

I use the zigbee2MQTT naming feature to group devices by room in MQTT - easier for Node Red which access zigbee2MQTT through mqtt :slight_smile:

Got it working so thank you very very much!!!

I owe you beer!

Ah yes Z2M changed recently and re-named the device. Glad you’re sorted!

Great, glad you got it working!!

Hello again! Regarding my question here, I took matters into my own hands and modified your blueprint a little. Hope that’s okay :slight_smile:
It now has a boolean selector which selects, if the given remote should control the whole group or just the one speaker associated with it. I’m sure it can be extended to have an input_boolean helper, so that you can easily switch between the two control types - but I haven’t gotten around to implementing that yet.
If you wanna try it out, here’s the modified blueprint:

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

blueprint:
# Media control via IKEA Symfonisk Gen2 - Shawsky April 2023 v1.55-1
# Forked October 2024 by Ruarc - Add option for group volume control or single speaker volume control
# Updated April 2024 - Add additional filtering to prevent triggering from other devices/false positives. Thanks kenno.
# Updated April 2024 - Add support for device rename in upcoming Z2M release & allow legacy action for Play/Pause
# Updated September 2023 - Further updates for group/non grouped behaviour / fix issue for volume hold for grouped/non grouped. Allow 100 volume steps.
# Updated August 2023 - Resolve a volume issue for media players with no group_memeber attribute
# Updated June 2023 - Resolve filtering issue where multiple devices are in use
# Updated May 2023 - Add group volume control

# Volume changes partially based on https://gist.github.com/erkr/a437ebcb98a2b5ba2deebabd02f5ffae Eric Kreuwels
# and https://gist.github.com/alexwmaustin/2c25cfa1a0ade1ab9fc1ef0940289672 Alex Austin

  name: Z2M - IKEA Symfonisk sound controller GEN2 for media
  description: 
    'Control the selected media player (and any joined to it) with an IKEA Symfonisk sound controller GEN2 via Zigbee2MQTT (Z2M)

    Supports single press on media buttons and single, double and long press for the "dot" buttons.'
  domain: automation
  input:
    remote:
      name: Remote
      description: The IKEA Symfonisk controller GEN2 to use
      selector:
          device:
            filter:
            - integration: mqtt
              manufacturer: IKEA
              model: SYMFONISK sound remote gen2 (E2123)
            - integration: mqtt
              manufacturer: IKEA
              model: SYMFONISK sound remote, gen 2 (E2123)
    base_topic:
      name: Zigbee2MQTT Base mqtt topic
      description: The base topic configured in Zigbee2MQTT. If you haven't changed this, leave the default here ("zigbee2mqtt")
      default: zigbee2mqtt
    media_player:
      name: Media Player
      description: The media player to control with this automation
      selector:
        entity:
          domain: media_player
          multiple: false
    volume_control:
      name: Control Group Volume
      description: Turn on if the remote should control the volume of the all currently grouped speakers
      default: false
      selector:
        boolean:
    volume_steps:
      name: Volume number of steps
      description: Controls the volume scale. The default of 25 is the same scale as the Sonos app.
      default: 25
      selector:
        number:
          min: 5
          max: 100
          step: 5
          unit_of_measurement: "Num"
          mode: slider
    single_dot:
      name: Single Dot (Single)
      description: Action to run on single dot press
      default: []
      selector:
        action: {}
    single_dot_double_press:
      name: Single Dot (Double)
      description: Action to run on single dot double press
      default: []
      selector:
        action: {}
    single_dot_long_press:
      name: Single Dot (Long)
      description: Action to run on single dot long press
      default: []
      selector: 
        action: {}
    double_dot:
      name: Double Dot (Single)
      description: Action to run on double dot press
      default: []
      selector:
        action: {}
    double_dot_double_press:
      name: Double Dot (Double)
      description: Action to run on double dot double press
      default: []
      selector:
        action: {}
    double_dot_long_press:
      name: Double Dot (Long)
      description: Action to run on double dot long press
      default: []
      selector:
        action: {}
      
mode: restart
max_exceeded: silent

trigger_variables:
  base_topic: !input base_topic
  controller: !input remote

trigger:
  - platform: mqtt
    topic: "{{ base_topic }}/+/action"
condition:
  - condition: template
    value_template: "{{ trigger.topic == base_topic+'/'+device_attr(controller, 'name')+'/action' }} "  
action:
  - variables:
      controllertopic: "{{ base_topic }}/{{ device_attr(controller, 'name') }}/action"
      player: !input 'media_player'
      steps: !input volume_steps
      stepsize: '{{ 1.0 / steps }}'
      volume_control: !input volume_control
  - choose:
    - conditions:
      - "{{ trigger.payload != ''}}"
      - "{{ trigger.topic == controllertopic }}"
      sequence:
        - choose:
          ## Commands

          # Play / Pause
          - conditions: "{{ trigger.payload == 'toggle' or trigger.payload == 'play_pause' }}"
            sequence:
            - service: media_player.media_play_pause
              entity_id: !input 'media_player'
          # Next Track
          - conditions: "{{ trigger.payload == 'track_next' }}"
            sequence:
            - service: media_player.media_next_track
              entity_id: !input 'media_player'
          # Previous Track
          - conditions: "{{ trigger.payload == 'track_previous' }}"
            sequence:
            - service: media_player.media_previous_track
              entity_id: !input 'media_player'

          ## Volume for media players supporting groups

          # Volume Up Press
          - conditions: "{{ trigger.payload == 'volume_up' and state_attr(player, 'group_members') != none and state_attr(player, 'group_members') != [] and volume_control }}"
            sequence:
              - repeat:
                  for_each: "{{ state_attr(player, 'group_members') }}"
                  sequence:
                  - service: media_player.volume_set
                    target:
                      entity_id: "{{ repeat.item }}"
                    data:
                      volume_level: >-
                        {% set volume = state_attr(repeat.item, "volume_level") + stepsize %}
                        {{ 1.0 if volume > 1.0 else volume }}

          # Volume Down Press
          - conditions: "{{ trigger.payload == 'volume_down' and state_attr(player, 'group_members') != none and state_attr(player, 'group_members') != [] and volume_control }}"
            sequence:
              - repeat:
                  for_each: "{{ state_attr(player, 'group_members') }}"
                  sequence:
                  - service: media_player.volume_set
                    target:
                      entity_id: "{{ repeat.item }}"
                    data:
                      volume_level: >-
                        {% set volume = state_attr(repeat.item, "volume_level") - stepsize %}
                        {{ 0.0 if volume < 0.0 else volume }}

          # Volume Up Hold
          - conditions: "{{ trigger.payload == 'volume_up_hold' and state_attr(player, 'group_members') != none and state_attr(player, 'group_members') != [] and volume_control }}"
            sequence:
              - repeat:
                  for_each: "{{ state_attr(player, 'group_members') }}"
                  sequence:
                  - service: media_player.volume_up
                    target:
                      entity_id: "{{ repeat.item }}"

          # Volume Down Hold
          - conditions: "{{ trigger.payload == 'volume_down_hold' and state_attr(player, 'group_members') != none and state_attr(player, 'group_members') != [] and volume_control }}"
            sequence:
              - repeat:
                  for_each: "{{ state_attr(player, 'group_members') }}"
                  sequence:
                  - service: media_player.volume_down
                    target:
                      entity_id: "{{ repeat.item }}"

          ## Volume for media players not supporting groups

          # Volume Up Press
          - conditions: "{{ trigger.payload == 'volume_up' and (state_attr(player, 'group_members') == none or state_attr(player, 'group_members') == [] or not volume_control) }}"
            sequence:
              - service: media_player.volume_set
                target:
                  entity_id: "{{ player }}"
                data:
                  volume_level: >-
                    {% set volume = state_attr(player, "volume_level") + stepsize %}
                    {{ 1.0 if volume > 1.0 else volume }}
           
          # Volume Down Press
          - conditions: "{{ trigger.payload == 'volume_down' and (state_attr(player, 'group_members') == none or state_attr(player, 'group_members') == [] or not volume_control) }}"
            sequence:
              - service: media_player.volume_set
                target:
                  entity_id: "{{ player }}"
                data:
                    volume_level: >-
                      {% set volume = state_attr(player, "volume_level") - stepsize %}
                      {{ 0.0 if volume < 0.0 else volume }}
          
          # Volume Up Hold
          - conditions: "{{ trigger.payload == 'volume_up_hold' and (state_attr(player, 'group_members') == none or state_attr(player, 'group_members') == [] or not volume_control) }}"
            sequence:
              - service: media_player.volume_up
                target:
                  entity_id: "{{ player }}"
          
          # Volume Down Hold
          - conditions: "{{ trigger.payload == 'volume_down_hold' and (state_attr(player, 'group_members') == none or state_attr(player, 'group_members') == [] or not volume_control) }}"
            sequence:
              - service: media_player.volume_down
                target:
                  entity_id: "{{ player }}"

          ## Actions

          # Single Dot Press
          - conditions: "{{ trigger.payload == 'dots_1_short_release' }}"
            sequence: !input single_dot
          # Single Dot Double Press
          - conditions: "{{ trigger.payload == 'dots_1_double_press' }}"
            sequence: !input single_dot_double_press
          # Single Dot Long Press
          - conditions: "{{ trigger.payload == 'dots_1_long_press' }}"
            sequence: !input single_dot_long_press
          # Double Dot Press
          - conditions: "{{ trigger.payload == 'dots_2_short_release' }}"
            sequence: !input double_dot
          # Double Dot Double Press
          - conditions: "{{ trigger.payload == 'dots_2_double_press' }}"
            sequence: !input double_dot_double_press
          # Double Dot Long Press
          - conditions: "{{ trigger.payload == 'dots_2_long_press' }}"
            sequence: !input double_dot_long_press