That look s awesome! I was able to get spotify working and looks like this -
I definitely like your look better - how could I switch to that? I would just want spotify and TV tab, and then the speaker zones, groups, and vol levels
That look s awesome! I was able to get spotify working and looks like this -
I definitely like your look better - how could I switch to that? I would just want spotify and TV tab, and then the speaker zones, groups, and vol levels
entities:
- artwork: cover
entity: media_player.spotify
group: false
hide:
power: true
volume: false
shortcuts:
columns: 2
buttons:
- name: Hip-Hop BBQ
type: service
id: spotcast.start
data:
spotify_device_id: caa0268cb0fd94830d20d1afc6390adadfb31719
uri: spotify:playlist:58ffpw3vZbjG15BzRpeqyI
random_song: true
shuffle: true
- name: Jelly Roll
type: service
id: spotcast.start
data:
spotify_device_id: caa0268cb0fd94830d20d1afc6390adadfb31719
uri: spotify:playlist:37i9dQZF1E4ly2oX5sHNm8
random_song: true
shuffle: true
- name: Up Church
type: service
id: spotcast.start
data:
spotify_device_id: caa0268cb0fd94830d20d1afc6390adadfb31719
uri: spotify:playlist:37i9dQZF1E4z4WO1bIfpoP
random_song: true
shuffle: true
- name: Top Hits
type: service
id: spotcast.start
data:
spotify_device_id: caa0268cb0fd94830d20d1afc6390adadfb31719
uri: spotify:playlist:37i9dQZF1DXcBWIGoYBM5M
random_song: true
shuffle: true
- name: Hot Country
type: service
id: spotcast.start
data:
spotify_device_id: caa0268cb0fd94830d20d1afc6390adadfb31719
uri: spotify:playlist:37i9dQZF1DX1lVhptIYRda
random_song: true
shuffle: true
- name: Kane Brown
type: service
id: spotcast.start
data:
spotify_device_id: caa0268cb0fd94830d20d1afc6390adadfb31719
uri: spotify:playlist:37i9dQZF1E4pbdEngylEUK
random_song: true
shuffle: true
- name: New Boots
type: service
id: spotcast.start
data:
spotify_device_id: caa0268cb0fd94830d20d1afc6390adadfb31719
uri: spotify:playlist:37i9dQZF1DX8S0uQvJ4gaa
random_song: true
shuffle: true
- name: Grace of God Country
type: service
id: spotcast.start
data:
spotify_device_id: caa0268cb0fd94830d20d1afc6390adadfb31719
uri: spotify:playlist:37i9dQZF1DWU2LcZVHsTdv
random_song: true
shuffle: true
info: scroll
source: full
type: custom:mini-media-player
sound_mode: full
background: /local/spotify/spotbg2.jpg
name: Marco Music
icon: mdi:music-box-multiple-outline
- entity: media_player.xantech8_master_bedroom
group: true
hide:
controls: true
type: custom:mini-media-player
- entity: media_player.xantech8_master_bath
group: true
hide:
controls: true
type: custom:mini-media-player
- entity: media_player.xantech8_patio
group: true
hide:
controls: true
type: custom:mini-media-player
- entity: media_player.xantech8_josh_s_office
group: true
hide:
controls: true
type: custom:mini-media-player
- entity: media_player.xantech8_cara_s_office
group: true
hide:
controls: true
type: custom:mini-media-player
- entity: media_player.xantech8_garage
group: true
hide:
controls: true
type: custom:mini-media-player
- entity: media_player.xantech8_pool
group: true
hide:
controls: true
type: custom:mini-media-player
- entity: media_player.xantech8_living_room
group: true
hide:
controls: true
type: custom:mini-media-player
type: entities
state_color: true
OK. I am back from vacation and can pull together the components.
One question – you say you want a TV tab. Is the TV co-located with the DAX88?
In my setup, I have a wireless sender which sends the audio signal from my deck back to the closet that has all the equipment. The receiver is then plugged into one of the ports. I use this primarily for Sports broadcasts. YOu will need some way to get the sound into the DAX. If they are co-located, then it could be simply audio out from TV into the DAX, otherwise you would need a bluetooth or wireless kit.
I figured someone might appreciate this.
I have whole home audio - however my living room and basement both have receivers that could be a source OR destination for audio. And spotify could stream to any of them. So I created this card:
type: vertical-stack
cards:
- type: conditional
conditions:
- entity: binary_sensor.multi_zone_audio_wifi_in_use
state: 'on'
card:
type: vertical-stack
cards:
- type: conditional
conditions:
- entity: binary_sensor.spotify_streaming_to_multi_zone_audio
state: 'on'
card:
entity: media_player.spotify_preston_elder
artwork: cover
group: true
hide:
power: true
volume: false
runtime: false
runtime_remaining: false
shortcuts:
columns: 4
info: short
source: icon
type: custom:mini-media-player
- type: conditional
conditions:
- entity: binary_sensor.spotify_streaming_to_multi_zone_audio
state: 'off'
card:
show_name: false
show_icon: true
type: button
tap_action:
action: call-service
service: media_player.select_source
data:
source: Multi-Room Amp
target:
device_id: 050d3f93f3e15c2d62a25352b71df891
entity: media_player.spotify_preston_elder
- type: conditional
conditions:
- entity: binary_sensor.multi_zone_audio_living_room_in_use
state: 'on'
card:
type: vertical-stack
cards:
- entity: media_player.living_room_receiver_3
type: media-control
- type: conditional
conditions:
- entity: binary_sensor.spotify_streaming_to_living_room
state: 'on'
card:
entity: media_player.spotify_preston_elder
artwork: cover
group: true
hide:
power: true
volume: false
runtime: false
runtime_remaining: false
shortcuts:
columns: 4
info: short
source: icon
type: custom:mini-media-player
- type: conditional
conditions:
- entity: binary_sensor.multi_zone_audio_rec_room_in_use
state: 'on'
card:
type: vertical-stack
cards:
- entity: media_player.rec_room_receiver_3
type: media-control
- type: conditional
conditions:
- entity: binary_sensor.spotify_streaming_to_rec_room
state: 'on'
card:
entity: media_player.spotify_preston_elder
artwork: cover
group: true
hide:
power: true
volume: false
runtime: false
runtime_remaining: false
shortcuts:
columns: 4
info: short
source: icon
type: custom:mini-media-player
- entity: media_player.xantech8_sitting_room
group: true
hide:
controls: true
icon: true
type: custom:mini-media-player
- entity: media_player.xantech8_dining_room
group: true
hide:
controls: true
icon: true
type: custom:mini-media-player
- entity: media_player.xantech8_master_bedroom
group: true
hide:
controls: true
icon: true
type: custom:mini-media-player
- entity: media_player.xantech8_deck
group: true
hide:
controls: true
icon: true
type: custom:mini-media-player
- entity: media_player.xantech8_gym
group: true
hide:
controls: true
icon: true
type: custom:mini-media-player
- entity: media_player.xantech8_basement
group: true
hide:
controls: true
icon: true
type: custom:mini-media-player
- type: conditional
conditions:
- entity: media_player.xantech8_living_room_receiver
state: 'on'
card:
entity: media_player.xantech8_living_room_receiver
name: Living Room
group: true
hide:
controls: true
icon: true
type: custom:mini-media-player
- type: conditional
conditions:
- entity: media_player.xantech8_living_room_receiver
state: 'off'
card:
entity: media_player.living_room_receiver_2
name: Living Room
group: true
hide:
controls: true
icon: true
type: custom:mini-media-player
- type: conditional
conditions:
- entity: media_player.xantech8_rec_room_receiver
state: 'on'
card:
entity: media_player.xantech8_rec_room_receiver
name: Rec Room
group: true
hide:
controls: true
icon: true
type: custom:mini-media-player
- type: conditional
conditions:
- entity: media_player.xantech8_rec_room_receiver
state: 'off'
card:
entity: media_player.rec_room_receiver
name: Rec Room
group: true
hide:
controls: true
icon: true
type: custom:mini-media-player
And it relies on this in my templates.yaml
- binary_sensor:
- name: "Spotify Streaming to Multi-Zone Audio"
state: "{{ is_state_attr('media_player.spotify_preston_elder', 'source', 'Multi-Room Amp') }}"
- name: "Spotify Streaming to Living Room"
state: "{{ is_state_attr('media_player.spotify_preston_elder', 'source', 'Living Room') }}"
- name: "Spotify Streaming to Rec Room"
state: "{{ is_state_attr('media_player.spotify_preston_elder', 'source', 'Rec Room') }}"
- name: "Multi-Zone Audio Living Room In Use"
state: >
{%
if (is_state_attr('media_player.xantech8_sitting_room', 'source', 'Living Room Receiver') or
is_state_attr('media_player.xantech8_dining_room', 'source', 'Living Room Receiver') or
is_state_attr('media_player.xantech8_master_bedroom', 'source', 'Living Room Receiver') or
is_state_attr('media_player.xantech8_deck', 'source', 'Living Room Receiver') or
is_state_attr('media_player.xantech8_gym', 'source', 'Living Room Receiver') or
is_state_attr('media_player.xantech8_basement', 'source', 'Living Room Receiver') or
is_state_attr('media_player.xantech8_living_room_receiver', 'source', 'Living Room Receiver') or
is_state_attr('media_player.xantech8_rec_room_receiver', 'source', 'Living Room Receiver'))
%}
on
{% else %}
off
{% endif %}
- name: "Multi-Zone Audio Rec Room In Use"
state: >
{%
if (is_state_attr('media_player.xantech8_sitting_room', 'source', 'Rec Room Receiver') or
is_state_attr('media_player.xantech8_dining_room', 'source', 'Rec Room Receiver') or
is_state_attr('media_player.xantech8_master_bedroom', 'source', 'Rec Room Receiver') or
is_state_attr('media_player.xantech8_deck', 'source', 'Rec Room Receiver') or
is_state_attr('media_player.xantech8_gym', 'source', 'Rec Room Receiver') or
is_state_attr('media_player.xantech8_basement', 'source', 'Rec Room Receiver') or
is_state_attr('media_player.xantech8_living_room_receiver', 'source', 'Rec Room Receiver') or
is_state_attr('media_player.xantech8_rec_room_receiver', 'source', 'Rec Room Receiver'))
%}
on
{% else %}
off
{% endif %}
- name: "Multi-Zone Audio Wifi In Use"
state: >
{%
if (is_state_attr('media_player.xantech8_sitting_room', 'source', 'WiFi') or
is_state_attr('media_player.xantech8_dining_room', 'source', 'WiFi') or
is_state_attr('media_player.xantech8_master_bedroom', 'source', 'WiFi') or
is_state_attr('media_player.xantech8_deck', 'source', 'WiFi') or
is_state_attr('media_player.xantech8_gym', 'source', 'WiFi') or
is_state_attr('media_player.xantech8_basement', 'source', 'WiFi') or
is_state_attr('media_player.xantech8_living_room_receiver', 'source', 'WiFi') or
is_state_attr('media_player.xantech8_rec_room_receiver', 'source', 'WiFi'))
%}
on
{% else %}
off
{% endif %}
Finally I have 2 automations for each zone that has a receiver, that look like:
alias: Multimedia // Living Room // Use Multi-room Audio
description: ""
trigger:
- platform: state
entity_id:
- media_player.living_room_receiver_2
attribute: source
to: Multi-room Audio
- platform: state
entity_id:
- media_player.xantech8_living_room_receiver
from: "off"
condition: []
action:
- service: media_player.turn_on
data: {}
target:
entity_id: media_player.xantech8_living_room_receiver
- service: media_player.select_source
data:
source: Multi-room Audio
target:
entity_id: media_player.living_room_receiver_2
- service: media_player.select_sound_mode
data:
sound_mode: MCH STEREO
target:
entity_id: media_player.living_room_receiver_2
mode: single
and
alias: Multimedia // Living Room // Stop Multi-room Audio
description: ""
trigger:
- platform: state
entity_id:
- media_player.living_room_receiver_2
attribute: source
from: Multi-room Audio
- platform: state
entity_id:
- media_player.xantech8_living_room_receiver
to: "off"
condition: []
action:
- service: media_player.turn_off
data: {}
target:
entity_id: media_player.xantech8_living_room_receiver
- service: media_player.select_source
data:
source: TV Audio
target:
entity_id: media_player.living_room_receiver_2
- service: media_player.select_sound_mode
data:
sound_mode: DOLBY DIGITAL
target:
entity_id: media_player.living_room_receiver_2
mode: single
The net effect is:
It’s kind of complicated, but it all works, and is great to interact with. I could easily add to that buttons to kick of playlists like others do, but this is the base control
FYI, I was able to set up a raspberry pi, connect the DAX88 to the pi via USB>rs232, install and configure ser2net, and point Home Assistant to the pi. Pretty slick and seems to be working well.
Hey all.
I’m so sorry, but I am a complete HA novice and I do not understand how to install this thing. I’ve got a MRA88 connected via a USB to Serial connection that I’ve tested as working properly with a pc.
I have no idea if Node is still needed, but I set up the Monoprice integration using “/dev/ttyUSB2” after installing the Xantech integration via HACS.
I then changed the confguration.yaml, but it still says unavailable. If there is anyone who could help me with this, I’d be more than happy to write some novice friendly documentation.
Happy to talk anytime either on the forum or on a Discord call.
Please help. Thank you all in advance.
EDIT: I’ve managed to get it to pick up that the zones are off, but it keeps giving the error “Failed to call service media_player/turn_on”.
Any ideas on that one?
I’m in the same boat as Bizzell (recently posted on the monoprice thread). I got it to connect to a xantech IP-RS232 for an old Xantech8x8 so now showing entities (also recently got it to read config.yaml zone info finally in lieu of Monoprice integration tool), but doesn’t recognize commands and get same error mentioned above (for both on/off zone or switch media). Not sure if it is still an end2end connection issue or just wrong trigger code being sent to amp? Also, is this program looking for feedback from unit (two way communication for zone status)? I have RS232 converter set up as telnet server, I believe.
I just finished installing PADs in many locations in the house. One of the screens is for the Dayton Audio DAX 88. Here’s what they look like on the wall. Walk up … play … enjoy!
Do you have code for this?
I duplicated, to the best of my ability, the screen you have above, but it doesn’t look great on a tablet so I am curious.
Here is my code for the screen you posted above, but I still need to do the backend scripts/automation to have it complete work.
type: horizontal-stack
cards:
- type: custom:mini-media-player
entity: media_player.spotify_XXXX_XXXXXX
artwork: full-cover
group: false
- type: horizontal-stack
cards:
- type: horizontal-stack
cards:
- type: vertical-stack
cards:
- type: custom:mushroom-title-card
title: Music Sources
- type: horizontal-stack
cards:
- type: custom:mushroom-entity-card
entity: input_boolean.family_room_hopper
layout: vertical
tap_action:
action: call-service
service: input_boolean.toggle
target:
entity_id: input_boolean.family_room_hopper
data: {}
secondary_info: state
- type: custom:mushroom-entity-card
entity: input_boolean.living_room
layout: vertical
- type: custom:mushroom-entity-card
entity: input_boolean.mitch_room_tv
layout: vertical
- type: custom:mushroom-title-card
title: Speaker Zones
- type: custom:mushroom-media-player-card
entity: media_player.kitchen_speakers
layout: horizontal
volume_controls:
- volume_mute
- volume_set
name: Kitchen
secondary_info: state
show_volume_level: true
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-media-player-card
entity: media_player.master_bedroom_speakers
layout: horizontal
volume_controls:
- volume_mute
- volume_set
tap_action:
action: call-service
service: media_player.toggle
target:
entity_id: media_player.master_bedroom_speakers
data: {}
name: Master Bedroom
show_volume_level: true
- type: custom:mushroom-media-player-card
entity: media_player.claras_office_speakers
layout: horizontal
volume_controls:
- volume_mute
- volume_set
tap_action:
action: call-service
service: media_player.toggle
target:
entity_id: media_player.claras_office_speakers
data: {}
name: Clara's Office
show_volume_level: true
- type: custom:mushroom-title-card
title: Speaker Groups
- type: horizontal-stack
cards:
- type: custom:mushroom-entity-card
entity: media_player.upstairs
layout: horizontal
- type: custom:mushroom-entity-card
entity: media_player.party
layout: horizontal
- type: custom:mushroom-title-card
title: Volume Level
- type: horizontal-stack
cards:
- type: custom:mushroom-entity-card
entity: input_button.conversation
layout: horizontal
secondary_info: none
- type: custom:mushroom-entity-card
entity: input_button.medium
layout: horizontal
secondary_info: none
- type: horizontal-stack
cards:
- type: vertical-stack
cards:
- type: custom:mushroom-title-card
title: ' '
- type: horizontal-stack
cards:
- type: custom:mushroom-entity-card
entity: input_boolean.master_bedroom
layout: vertical
icon: mdi:television-box
- type: custom:mushroom-entity-card
entity: input_boolean.family_room_hopper
icon: mdi:television-box
layout: vertical
- type: custom:mushroom-entity-card
entity: input_boolean.living_room
layout: vertical
icon: mdi:television-box
- type: custom:mushroom-title-card
title: ' '
alignment: end
- type: custom:mushroom-media-player-card
entity: media_player.mitchs_room_speakers
layout: horizontal
volume_controls:
- volume_mute
- volume_set
tap_action:
action: call-service
service: media_player.toggle
target:
entity_id: media_player.mitchs_room_speakers
data: {}
name: Mitch's Room
show_volume_level: true
- type: custom:mushroom-media-player-card
entity: media_player.guest_bedroom_speakers_bsm_se_bdr
name: Guest Bedroom
layout: horizontal
volume_controls:
- volume_mute
- volume_set
tap_action:
action: call-service
service: media_player.toggle
target:
entity_id: media_player.guest_bedroom_speakers_bsm_se_bdr
data: {}
show_volume_level: true
- type: custom:mushroom-media-player-card
entity: media_player.workout_room_speakers
layout: horizontal
volume_controls:
- volume_mute
- volume_set
tap_action:
action: call-service
service: media_player.toggle
target:
entity_id: media_player.workout_room_speakers
data: {}
name: Workout Room
show_volume_level: true
- type: custom:mushroom-title-card
title: ' '
- type: horizontal-stack
cards:
- type: custom:mushroom-entity-card
entity: media_player.living_room
layout: horizontal
- type: custom:mushroom-entity-card
entity: media_player.downstairs
layout: horizontal
- type: custom:mushroom-title-card
title: ' '
- type: horizontal-stack
cards:
- type: custom:mushroom-entity-card
entity: input_button.high
layout: horizontal
secondary_info: none
- type: custom:mushroom-entity-card
entity: input_button.blowout
layout: horizontal
secondary_info: none
It looks like this:
I have another version also I am working through, but this is code for that 10" pad:
button_card_templates:
group_players:
group_expand: true
styles:
card:
- height: 80px
tap_action:
action: call-service
service: >-
[[[ if (entity.state == "on") return "homeassistant.turn_off"; else
return "homeassistant.turn_on" ]]]
service_data:
entity_id: entity
sound_mode:
group_expand: true
styles:
card:
- height: 80px
tap_action:
action: call-service
service: media_player.volume_set
service_data:
entity_id: entity
volume_level: '[[[ return variables.level ]]]'
kiosk_mode:
non_admin_settings:
hide_header: true
hide_menubutton: false
hide_account: true
hide_search: true
hide_assistant: true
ignore_entity_settings: true
views:
- title: Home
type: custom:grid-layout
badges: []
cards:
- type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: vertical-stack
cards:
- type: conditional
conditions:
- entity: input_boolean.spoton
state: 'on'
card:
type: custom:mini-media-player
entity: media_player.spotify_kevin_brown
artwork: full-cover
source: full
sound_mode: full
hide:
volume: true
source: true
power_state: true
icon: true
controls: true
power: true
name: true
info: true
progress: true
- type: conditional
conditions:
- entity: input_boolean.sportson
state: 'on'
card:
type: iframe
url: http://192.168.2.245:8123/local/images/detroit.jpg
aspect_ratio: 100%
- type: conditional
conditions:
- entity: input_boolean.volumion
state: 'on'
card:
type: iframe
url: http://192.168.2.243
aspect_ratio: 90%
- type: conditional
conditions:
- entity: input_boolean.lmusicon
state: 'on'
card:
type: iframe
url: http://192.168.2.245:8321
aspect_ratio: 150%
- type: conditional
conditions:
- entity: input_boolean.pandon
state: 'on'
card:
type: iframe
url: http://192.168.2.243/music_service/pandora
aspect_ratio: 90%
- type: conditional
conditions:
- entity: input_boolean.mediaextractoron
state: 'on'
card:
type: entities
entities:
- entity: input_text.media_extractor_url
name: Media URL
type: custom:text-input-row
- type: conditional
conditions:
- entity: input_boolean.mediaextractoron
state: 'on'
card:
type: custom:mini-media-player
hide:
volume: true
power: true
source: full
sound_mode: full
replace_mute: play_pause
info: scroll
entity: media_player.soundcloud
artwork: full-cover
- type: vertical-stack
cards:
- type: conditional
conditions:
- entity: input_boolean.pandon
state: 'off'
- entity: input_boolean.spoton
state: 'off'
- entity: input_boolean.lmusicon
state: 'off'
- entity: input_boolean.volumion
state: 'off'
- entity: input_boolean.airplayon
state: 'off'
- entity: input_boolean.mediaextractoron
state: 'off'
- entity: input_boolean.sportson
state: 'off'
card:
type: markdown
content: >-
No **Music Source** is selected. Please use the
switch to **turn on** a Music Source.
- type: conditional
conditions:
- entity: input_boolean.volumion
state: 'on'
card:
type: custom:mini-media-player
entity: media_player.rcvolumio
group: true
hide:
volume: true
power: true
source: true
sound_mode: full
replace_mute: play_pause
info: scroll
- type: conditional
conditions:
- entity: input_boolean.pandon
state: 'on'
card:
type: custom:mini-media-player
entity: media_player.pandora
group: true
hide:
volume: true
power: true
source: full
sound_mode: full
replace_mute: play_pause
info: scroll
- type: conditional
conditions:
- entity: input_boolean.spoton
state: 'on'
card:
type: custom:mini-media-player
entity: media_player.spotify_kevin_brown
group: true
hide:
volume: true
power: true
source: true
sound_mode: full
replace_mute: play_pause
info: scroll
- type: vertical-stack
cards:
- type: custom:stack-in-card
mode: vertical
cards:
- type: horizontal-stack
title: Music Sources, Groups and Zones
cards:
- type: custom:mushroom-entity-card
entity: input_boolean.spoton
icon: mdi:spotify
icon_color: green
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: input_boolean.sportson
icon: mdi:football
name: TV
icon_color: blue
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: input_boolean.pandon
icon: mdi:pandora
icon_color: purple
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: input_boolean.volumion
icon: mdi:music
icon_color: purple
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: input_boolean.mediaextractoron
icon: mdi:soundcloud
icon_color: orange
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: horizontal-stack
cards:
- type: custom:mushroom-entity-card
entity: group.dax_party_mode
name: Party
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: group.dax_tasting
name: Tasting
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: group.dax_backyard
name: Backyard
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: group.dax_living
name: Living Room
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:auto-entities
card:
type: grid
columns: 1
show_header_toggle: false
state_color: true
square: false
card_param: cards
filter:
template: >
{% for MEDIAPLAYER in states.media_player |
selectattr("entity_id","in",integration_entities("xantech"))
-%}
{% set SELECTZONE = "input_select.dax_source_" + (MEDIAPLAYER.entity_id).split("xantech8_")[1] -%}
{% if MEDIAPLAYER.entity_id != "media_player.xantech8_xantech_house_audio" -%}
{{
{
'type': 'custom:layout-card',
'layout_type': 'custom:grid-layout',
'layout': {
'max_cols': 3,
'grid-template-columns': 'auto 150px'
},
'cards': [
{
'type': 'custom:mushroom-media-player-card',
"tap_action": {
"action": "call-service",
"service": "media_player.toggle",
"target": {"entity_id": MEDIAPLAYER.entity_id}
},
'entity': MEDIAPLAYER.entity_id,
'layout': 'horizontal',
'fill-container': true,
'show_volume_level': true,
'collapsible_controls': false,
'use_media_info': true,
'volume_controls': ['volume_set']
},
{
"type": "custom:mushroom-select-card",
"entity": SELECTZONE,
"name": "Set Zone Sources",
"layout": "horizontal",
"icon_type": "none",
"primary_info": "none",
"secondary_info": "none",
}
]}
}},
{%- endif %}
{%- endfor %}
- type: custom:stack-in-card
mode: vertical
cards:
- type: horizontal-stack
cards:
- type: custom:mushroom-template-card
entity: group.dax_party_mode
tap_action:
action: call-service
service: media_player.volume_set
data:
volume_level: 0.08
target:
entity_id: group.dax_party_mode
hold_action:
action: none
double_tap_action:
action: none
primary: Conversation
icon: mdi:account-circle
icon_color: >
{% set vlvl =
state_attr("media_player.xantech8_deck","volume_level")
%}
{% if vlvl <= 0.08 %}
green
{% else %}
orange
{% endif %}
- type: custom:mushroom-template-card
entity: group.dax_party_mode
tap_action:
action: call-service
service: media_player.volume_set
data:
volume_level: 0.15
target:
entity_id: group.dax_party_mode
hold_action:
action: none
double_tap_action:
action: none
primary: Soft
icon: mdi:volume-low
icon_color: >
{% set vlvl =
state_attr("media_player.xantech8_deck","volume_level")
%}
{% if (vlvl > 0.08) and (vlvl <= 0.15) %}
green
{% else %}
orange
{% endif %}
- type: custom:mushroom-template-card
entity: group.dax_party_mode
tap_action:
action: call-service
service: media_player.volume_set
data:
volume_level: 0.25
target:
entity_id: group.dax_party_mode
hold_action:
action: none
double_tap_action:
action: none
primary: Medium
icon: mdi:volume-medium
icon_color: >
{% set vlvl =
state_attr("media_player.xantech8_deck","volume_level")
%}
{% if (vlvl > 0.15) and (vlvl <= 0.25) %}
green
{% else %}
orange
{% endif %}
- type: custom:mushroom-template-card
entity: group.dax_party_mode
tap_action:
action: call-service
service: media_player.volume_set
data:
volume_level: 0.5
target:
entity_id: group.dax_party_mode
hold_action:
action: none
double_tap_action:
action: none
primary: High
icon: mdi:volume-high
icon_color: >
{% set vlvl =
state_attr("media_player.xantech8_deck","volume_level")
%}
{% if (vlvl > 0.25) and (vlvl <= 0.5) %}
green
{% else %}
orange
{% endif %}
- type: custom:mushroom-template-card
entity: group.dax_party_mode
tap_action:
action: call-service
service: media_player.volume_set
data:
volume_level: 0.65
target:
entity_id: group.dax_party_mode
hold_action:
action: none
double_tap_action:
action: none
primary: Blowout
icon: mdi:fire-circle
icon_color: >
{% set vlvl =
state_attr("media_player.xantech8_deck","volume_level")
%}
{% if (vlvl > 0.65) %}
green
{% else %}
orange
{% endif %}
- type: vertical-stack
cards:
- type: conditional
conditions:
- entity: input_boolean.spoton
state: 'on'
card:
type: custom:spotify-card
spotify_entity: media_player.spotify_kevin_brown
account: default
always_play_random_song: true
grid_show_title: false
grid_covers_per_row: '10'
hide_warning: true
hide_top_header: true
limit: 40
country_code: us
playlist_type: default
display_style: grid
hide_currently_playing: true
Hopefully some inspiration there!
New version … but I don’t like the tabs.
That code is:
button_card_templates:
group_players:
group_expand: true
styles:
card:
- height: 80px
tap_action:
action: call-service
service: >-
[[[ if (entity.state == "on") return "homeassistant.turn_off"; else
return "homeassistant.turn_on" ]]]
service_data:
entity_id: entity
sound_mode:
group_expand: true
styles:
card:
- height: 80px
tap_action:
action: call-service
service: media_player.volume_set
service_data:
entity_id: entity
volume_level: '[[[ return variables.level ]]]'
kiosk_mode:
non_admin_settings:
hide_header: true
hide_menubutton: false
hide_account: true
hide_search: true
hide_assistant: true
ignore_entity_settings: true
views:
- title: Home
type: custom:grid-layout
layout:
grid-template-columns: 50% 50%
grid-template-areas: |
"col1 col2"
badges: []
cards:
- type: custom:mod-card
view_layout:
grid-area: col1
card_mod:
style:
tabbed-card $: |
mwc-tab {
background: var(--ha-card-background, var(--card-background-color, white) );
border-color: var(--ha-card-border-color, var(--divider-color, #e0e0e0) );
border-width: 2px;
border-top-left-radius: 20px;
border-top-right-radius: 20px;
border-style: solid;
overflow: hidden;
width: 20%;
}
mwc-tab[active] {
background: #EBFFD8 !important;
}
card:
type: custom:tabbed-card
styles:
'--mdc-theme-primary': green
'--mdc-tab-text-label-color-default': silver
'--mdc-typography-button-font-size': 12px
tabs:
- attributes:
label: WiFi
icon: mdi:wifi
card:
type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: custom:mushroom-entity-card
entity: input_boolean.spoton
name: Spotify
icon: mdi:spotify
icon_color: green
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: input_boolean.airplayon
icon: mdi:apple
name: Airplay
icon_color: blue
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: vertical-stack
cards:
- type: conditional
conditions:
- entity: input_boolean.spoton
state: 'on'
card:
type: custom:mini-media-player
entity: media_player.spotify_kevin_brown
artwork: full-cover
source: full
sound_mode: full
hide:
volume: true
source: true
power_state: true
icon: true
controls: true
power: true
name: true
info: true
progress: true
- type: conditional
conditions:
- entity: input_boolean.spoton
state: 'on'
card:
type: custom:mini-media-player
entity: media_player.spotify_kevin_brown
group: true
info: scroll
hide:
volume: true
source: true
power_state: true
icon: true
controls: false
power: true
name: true
progress: true
- type: conditional
conditions:
- entity: input_boolean.airplayon
state: 'on'
card:
type: custom:mini-media-player
entity: media_player.dax88_8672
artwork: full-cover
source: full
sound_mode: full
hide:
volume: true
source: true
power_state: true
icon: true
controls: true
power: true
name: true
info: true
progress: true
- type: conditional
conditions:
- entity: input_boolean.airplayon
state: 'on'
card:
type: custom:mini-media-player
entity: media_player.dax88_8672
group: true
info: scroll
hide:
volume: true
source: true
power_state: true
icon: true
controls: false
power: true
name: true
progress: true
- attributes:
label: Alexa
icon: mdi:hockey-puck
card:
type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: custom:mushroom-entity-card
entity: input_boolean.spotalexon
name: Spotify
icon: mdi:spotify
icon_color: green
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: input_boolean.pandalexon
name: Pandora
icon: mdi:pandora
icon_color: purple
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: vertical-stack
cards:
- type: conditional
conditions:
- entity: input_boolean.spotalexon
state: 'on'
card:
type: custom:mini-media-player
entity: media_player.spotify_kevin_brown
artwork: full-cover
source: full
sound_mode: full
hide:
volume: true
source: true
power_state: true
icon: true
controls: true
power: true
name: true
info: true
progress: true
- type: conditional
conditions:
- entity: input_boolean.spotalexon
state: 'on'
card:
type: custom:mini-media-player
entity: media_player.spotify_kevin_brown
group: true
info: scroll
hide:
volume: true
source: true
power_state: true
icon: true
controls: false
power: true
name: true
progress: true
- type: conditional
conditions:
- entity: input_boolean.pandalexon
state: 'on'
card:
type: custom:mini-media-player
entity: media_player.stereo_alexa
artwork: full-cover
source: full
sound_mode: full
hide:
volume: true
source: true
power_state: true
icon: true
controls: true
power: true
name: true
info: true
progress: true
- type: conditional
conditions:
- entity: input_boolean.pandalexon
state: 'on'
card:
type: custom:mini-media-player
entity: media_player.stereo_alexa
group: true
info: scroll
hide:
volume: true
source: true
power_state: true
icon: true
controls: false
power: true
name: true
progress: true
- attributes:
label: MintyFresh
icon: mdi:server-network
card:
type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: custom:mushroom-entity-card
entity: input_boolean.lmusicon
name: Kodi
icon: mdi:music
icon_color: blue
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: input_boolean.pandon
name: Pandora
icon: mdi:pandora
icon_color: purple
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: input_boolean.spotvolon
name: Spotify
icon: mdi:spotify
icon_color: green
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: markdown
content: >-
No **Music Source** is selected. Please use the switch to
**turn on** a Music Source.
- attributes:
label: Volumio
icon: mdi:music-box-multiple
card:
type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: custom:mushroom-entity-card
entity: input_boolean.volumion
name: Local Music
icon: mdi:music
icon_color: blue
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: input_boolean.pandvolon
name: Pandora
icon: mdi:pandora
icon_color: purple
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: input_boolean.mediaextractoron
name: Soundcloud
icon: mdi:soundcloud
icon_color: orange
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: vertical-stack
cards:
- type: conditional
conditions:
- entity: input_boolean.mediaextractoron
state: 'on'
card:
type: custom:mini-media-player
entity: media_player.rcvolumio
artwork: full-cover
source: full
sound_mode: full
hide:
volume: true
source: true
power_state: true
icon: true
controls: true
power: true
name: true
info: true
progress: true
- type: conditional
conditions:
- entity: input_boolean.mediaextractoron
state: 'on'
card:
type: custom:mini-media-player
entity: media_player.rcvolumio
group: true
info: scroll
hide:
volume: true
source: true
power_state: true
icon: true
controls: false
power: true
name: true
progress: true
- attributes:
label: PatioVizio
icon: mdi:television-play
card:
type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: custom:mushroom-entity-card
entity: input_boolean.sportson
icon: mdi:football
name: TV
icon_color: blue
fill_container: false
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: markdown
content: >-
No **Music Source** is selected. Please use the switch to
**turn on** a Music Source.
- type: custom:stack-in-card
view_layout:
grid-area: col2
mode: vertical
cards:
- type: custom:auto-entities
card:
type: grid
columns: 1
show_header_toggle: false
state_color: true
square: false
title: Music Zones
card_param: cards
filter:
template: >
{% for MEDIAPLAYER in states.media_player |
selectattr("entity_id","in",integration_entities("xantech")) -%}
{% set SELECTZONE = "input_select.dax_source_" + (MEDIAPLAYER.entity_id).split("xantech8_")[1]
-%}
{% if MEDIAPLAYER.entity_id != "media_player.xantech8_xantech_house_audio"
-%}
{{
{
'type': 'custom:layout-card',
'layout_type': 'custom:grid-layout',
'layout': {
'max_cols': 3,
'grid-template-columns': 'auto 150px'
},
'cards': [
{
'type': 'custom:mushroom-media-player-card',
"tap_action": {
"action": "call-service",
"service": "media_player.toggle",
"target": {"entity_id": MEDIAPLAYER.entity_id}
},
'entity': MEDIAPLAYER.entity_id,
'layout': 'horizontal',
'fill-container': true,
'show_volume_level': true,
'collapsible_controls': false,
'use_media_info': true,
'volume_controls': ['volume_set']
},
{
"type": "custom:mushroom-select-card",
"entity": SELECTZONE,
"name": "Set Zone Sources",
"layout": "horizontal",
"icon_type": "none",
"primary_info": "none",
"secondary_info": "none",
}
]}
}},
{%- endif %}
{%- endfor %}
- type: horizontal-stack
title: Music Groups
cards:
- type: custom:mushroom-entity-card
entity: group.dax_party_mode
name: Party
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: group.dax_tasting
name: Tasting
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: group.dax_backyard
name: Backyard
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:mushroom-entity-card
entity: group.dax_living
name: Living Room
tap_action:
action: toggle
hold_action:
action: none
double_tap_action:
action: none
- type: custom:stack-in-card
mode: vertical
title: Volume Level
cards:
- type: horizontal-stack
cards:
- type: custom:mushroom-template-card
entity: group.dax_party_mode
tap_action:
action: call-service
service: media_player.volume_set
data:
volume_level: 0.08
target:
entity_id: group.dax_party_mode
hold_action:
action: none
double_tap_action:
action: none
primary: Conversation
icon: mdi:account-circle
icon_color: >
{% set vlvl =
state_attr("media_player.xantech8_deck","volume_level") %}
{% if vlvl <= 0.08 %}
green
{% else %}
orange
{% endif %}
- type: custom:mushroom-template-card
entity: group.dax_party_mode
tap_action:
action: call-service
service: media_player.volume_set
data:
volume_level: 0.15
target:
entity_id: group.dax_party_mode
hold_action:
action: none
double_tap_action:
action: none
primary: Soft
icon: mdi:volume-low
icon_color: >
{% set vlvl =
state_attr("media_player.xantech8_deck","volume_level") %}
{% if (vlvl > 0.08) and (vlvl <= 0.15) %}
green
{% else %}
orange
{% endif %}
- type: custom:mushroom-template-card
entity: group.dax_party_mode
tap_action:
action: call-service
service: media_player.volume_set
data:
volume_level: 0.25
target:
entity_id: group.dax_party_mode
hold_action:
action: none
double_tap_action:
action: none
primary: Medium
icon: mdi:volume-medium
icon_color: >
{% set vlvl =
state_attr("media_player.xantech8_deck","volume_level") %}
{% if (vlvl > 0.15) and (vlvl <= 0.25) %}
green
{% else %}
orange
{% endif %}
- type: custom:mushroom-template-card
entity: group.dax_party_mode
tap_action:
action: call-service
service: media_player.volume_set
data:
volume_level: 0.5
target:
entity_id: group.dax_party_mode
hold_action:
action: none
double_tap_action:
action: none
primary: High
icon: mdi:volume-high
icon_color: >
{% set vlvl =
state_attr("media_player.xantech8_deck","volume_level") %}
{% if (vlvl > 0.25) and (vlvl <= 0.5) %}
green
{% else %}
orange
{% endif %}
- type: custom:mushroom-template-card
entity: group.dax_party_mode
tap_action:
action: call-service
service: media_player.volume_set
data:
volume_level: 0.65
target:
entity_id: group.dax_party_mode
hold_action:
action: none
double_tap_action:
action: none
primary: Blowout
icon: mdi:fire-circle
icon_color: >
{% set vlvl =
state_attr("media_player.xantech8_deck","volume_level") %}
{% if (vlvl > 0.65) %}
green
{% else %}
orange
{% endif %}
Do these devices (monoprice, Dayton, etc) allow cross play of sources from a controller to another? For example, can you play source 1 connected on controller 1 to zone X on controller 2?
On the Monoprice 10761 all 6 sources can be used with all 6 outputs, and their a PA override to do system announcements.
Thanks, across different controllers or the same controller?
UPDATE: I looked through the dax88 manual and it has a page that states you need to split the input device across controllers so it doesn’t play natively across controllers.
On the Monoprice 10761 you can do it across up to 3 controllers for the output side, but as I understand it ONLY Primary 6 sources can be used.
Put another way, the maximum it can be is 6X18 NOT 18X18.
Great thanks for the confirmation!
You can daisy chain the Dax so output of one is input of another and still use the other inputs. So if you had 3 units you can connect zone 7 preamp out to zone 1 on second unit and zone 8 preamp out to zone 1 on third unit.
Unit 2 and 3 could still have other inputs but would only play on its connected speakers. If you wanted something playing on everything, you pick the input on unit 1 and output to all zones and set unit 2 and 3 to input 1.
So it’s like 6x18 + 6x6 + 6x6 … and wifi
@ryans …
NOTE: I am by no means a Python developer.
I did look at a fork of the Monoprice integration and took yours and added Bass, Treble and Balance support. I have gone as far as my skill level goes … attributes for each zone for Bass, Treble and Balance are added. Services that allow for setting those values are also added.
I can’t go any farther than this but it sure would be nice to expose these as NumberEntities so that a slider could be linked to them. I do not have the skills.
Screen showing state of the one of the zones:
A service call:
I would note that the min, max and balance numbers are different so I did also have to change the Dayton Audio in pyinsteon for Bass/Treble to 0 to 24 as those values are used for my unit (DAX88).
Given this GUI that is used to control the Zone Amp, this is the only piece missing that would allow for complete control of all features.
Through helpers and automations I have this working …
I could just use decluttering_templates I would suppose and do this if you think this is the right way. I will look at this over a few days, but it would be nice at least to evaluate/change/merge so that we can have bass/treble/balance attributes and services to modify them.
NOTE: I sent a change on Github to dayton.yaml for pyxantech. It changes the limits for bass and treble and it fixes an issue I noted when implementing this. The set_treble command was broken (extra “}”). I believe the same issue exists at least in monoprice.yaml
UPDATE: In thinking this through, I do not think one wants or needs number entities. I can create a very simple select where you select the zone and then the above bass, treble and balance can be adjusted per zone. One would only need an automation to fire when the zone changes to get the current values and on any one (treble, bass, balance) trigger to update the value through the service. Going to implement this today.
I have it all plugged in working perfect:
So question about this, not super good at reading code yet. But on the right side it looks like there are drop down menu’s, is that for selecting the music source per zone?