This is my Lovace code which defines a 3-high vertical stack (1 for each of my Sonos players) using the HACS Mini Media Player card. Download the plugin from HACS then just paste the following into a new Manual card and edit it to reference your Sonos entities. Remember to also make sure that the buttons reference valid playlists which must exist in ‘My Sonos’ within the Sonos App:
cards:
- artwork: cover
entity: media_player.lounge
hide: null
speaker_group:
entities:
- entity_id: media_player.lounge
name: Lounge - Sonos Connect Amp
- entity_id: media_player.bedroom
name: Bed 1 - Sonos Play 5
- entity_id: media_player.Study
name: Study - Sonos Play 3
platform: sonos
show_group_count: true
tts:
language: en-uk
platform: sonos
volume: 0.4
type: 'custom:mini-media-player'
- artwork: cover
entity: media_player.bedroom
shortcuts:
buttons:
- id: Absolute 80s
name: Abs 80s
type: source
- id: .977 80's Hits
name: 80s Hits
type: source
- id: KISS FM UK 100.0 (Top 40/Pop)
name: Kiss
type: source
- id: Nation Radio
name: Nation
type: source
- id: talkRADIO
name: Talk
type: source
- id: Rock
name: Rock
type: source
- id: Christmas
name: Xmas
type: source
- id: Lynettes Favourites
name: Lynette
type: source
- id: Steve's Favourites
name: Steve
type: source
- id: Sleep Sounds
name: Sleep
type: source
columns: 5
tts:
language: en-uk
platform: sonos
volume: 0.3
type: 'custom:mini-media-player'
- artwork: cover
entity: media_player.study
shortcuts:
buttons:
- id: Absolute 80s
name: Abs 80s
type: source
- id: .977 80's Hits
name: 80s Hits
type: source
- id: KISS FM UK 100.0 (Top 40/Pop)
name: Kiss
type: source
- id: Nation Radio
name: Nation
type: source
- id: talkRADIO
name: Talk
type: source
- id: Rock
name: Rock
type: source
- id: Christmas
name: Xmas
type: source
- id: Lynettes Favourites
name: Lynette
type: source
- id: Steve's Favourites
name: Steve
type: source
- id: Sleep Sounds
name: Sleep
type: source
columns: 5
tts:
language: en-uk
platform: sonos
volume: 0.3
type: 'custom:mini-media-player'
type: vertical-stack
This is my automation for an RF remote that also controls the Bedroom Sonos player:
- id: '1595688076706'
alias: Bed1 Remote
description: Control Bedroom Sonos and Lights via Remote5
trigger:
- entity_id: sensor.remote5
platform: state
condition:
- condition: template
value_template: '{{ states(''sensor.remote5'') != ''unavailable'' }}'
action:
- choose:
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''Button 1'' }}'
sequence:
- entity_id: media_player.bedroom
service: media_player.media_play_pause
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''Button 2'' }}'
sequence:
- data:
entity_id: media_player.bedroom
source: Sleep Sounds
service: media_player.select_source
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''Button 3'' }}'
sequence:
- entity_id: media_player.bedroom
service: media_player.volume_down
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''Button 4'' }}'
sequence:
- entity_id: media_player.bedroom
service: media_player.volume_up
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''Button 5'' }}'
sequence:
- data: {}
entity_id: media_player.bedroom
service: media_player.media_previous_track
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''Button 6'' }}'
sequence:
- data: {}
entity_id: media_player.bedroom
service: media_player.media_next_track
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''Button 7'' }}'
sequence:
- entity_id: switch.sonoff06
service: switch.toggle
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''Button 8'' }}'
sequence:
- entity_id: switch.bed1_fan
service: switch.toggle
initial_state: 'on'
mode: queued
max: 3
Note that I use the rfbridge_demux python script to efficiently capture all my RF codes and you and read up on that here Sonoff RF Bridge. Strategies for receiving data. Essentially sensor.remote 5 is either “Button 1” thru “Button 8” if a button has just been pressed otherwise it is “unavailable”.
The cheap remote that I used is this one https://www.aliexpress.com/i/33035885811.html.
Cheers and hope that Helps!