Xantech / Dayton Audio / Sonance multi-zone amps

Yes they are. These are created as follows (using mushroom and auto-entities):

  - 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 %}

Why like this? … Why is because I like and use mushroom however the mushroom media_player card has no dropdown to select source.

What this does … it loops through the entire collection of media_players that have “xantech” (exceot the one for the entire unit) in the entity_id and creates a layout-card for each. Inside the layout card is a mushroom media_player and a mushroom select_card. Now these could be populated in many ways but I choose to create an input_select for each zone in a helper. The values are populated at homeassistant start:

- id: '1674499571539'
  alias: Generate Dax Sources
  description: ''
  trigger:
  - platform: homeassistant
    event: start
  condition: []
  action:
  - service: input_select.set_options
    data_template:
      entity_id:
      - input_select.dax_source_deck
      - input_select.dax_source_hot_tub
      - input_select.dax_source_kitchen
      - input_select.dax_source_patio
      - input_select.dax_source_living_room
      - input_select.dax_source_foyer
      - input_select.dax_source_master
      - input_select.dax_source_unused
      options: '{{ state_attr(''media_player.xantech8_deck'',''source_list'') }}'
  mode: single

Then changing any source in the popdown to another changes the source on the unit:

- id: '1686098641290'
  alias: Change Dax Source
  description: Change an individual DAX source zone
  trigger:
  - platform: state
    entity_id:
    - input_select.dax_source_deck
    - input_select.dax_source_foyer
    - input_select.dax_source_hot_tub
    - input_select.dax_source_kitchen
    - input_select.dax_source_living_room
    - input_select.dax_source_master
    - input_select.dax_source_patio
  condition: []
  action:
  - service: media_player.select_source
    data:
      source: '{{ states(trigger.entity_id) }}'
    target:
      entity_id: '{{''media_player.xantech8_'' + trigger.entity_id.split(''source_'')[1]}}'
  mode: single

I have other ones too like changing all the sources to the same value should you wish to like play Spotify on WiFi everywhere.

The other half of the screen allows you to pick what is coming in to a given source as some things could have multiple inputs. Like for instance, I have an Alexa plugged into one of the inputs. I can tell Alexa or send the command via Home Assistant to “Play Prince from Spotify on Stereo Alexa” … or I could also through the same Alexa play Pandora or Amazon Music or other things. I have a Volumio plugged into another input that can also have many different sources including 10,000 local mp3s.

If anyone wants to try the Bass/Treble/Balance out let me know. I would like to get some feedback.
My integration seems to be OK but I have noticed a few issues. I want to make sure it is working for people.

UPDATE: I fixed the issue I had and it works perfect.

I use this:

  - type: vertical-stack
    title: Bass/Treble/Balance Control
    cards:
      - type: custom:mushroom-select-card
        entity: input_select.dax_zones
        name: Zone
        layout: horizontal
        primary_info: none
        secondary_info: none
        fill_container: true
        card_mod:
          style: |
            ha-card {
                box-shadow: none;
            }
      - type: custom:decluttering-card
        template: xantech_settings
        variables:
          - type: bass
          - label: Bass Level
      - type: custom:decluttering-card
        template: xantech_settings
        variables:
          - type: treble
          - label: Treble Level
      - type: custom:decluttering-card
        template: xantech_settings
        variables:
          - type: balance
          - label: Balance

With this in decluttering:

decluttering_templates:
  xantech_settings:
    default:
      - type: balance
      - media_player: media_player.xantech8_deck
      - level: 10
    card:
      type: custom:mushroom-number-card
      entity: input_number.dax_[[type]]_level
      name: '[[label]]'
      layout: horizontal
      fill_container: true
      card_mod:
        style: |
          ha-card {
              box-shadow: none;
          }

And a few helpers to yield this which when you select a zone it displays the current bass/treble/balance and allows you to set them which is written back to the DAX88.

1 Like

I’m completely brand new to HA so my base experience is probably non-existent. I hope my process will help future newbies as well.
I think I got the configuration.yaml file correct and I did install mini-media-player. Other than that Im completely blind to what to do. I also verified that the hardware is working correctly because I installed the monoprice integration and it worked. That being said, I want to learn and customize my HA experience, so I want to get hass-xantech to work. I think my next step is to set up the GUI. Would anyone be able to give me a general direction?

media_player:
  - platform: xantech
    type: monoprice6
    port: /dev/ttyUSB0
    zones:
      11:
        name: "Great Room"
      12:
        name: "Master Bedroom"
      13:
        name: "SunRoom"
    sources:
      1:
        name: "Wimm Pro"

I have the monoprice addon working, but trying to convert to eventually be able to save bass/treble settings. It does read the status, but I can’t control anything.

'm currently getting these errors:

Missing key 'zone_status_skip' in dictionary 'monoprice6'; returning None
10:47:29 AM – (WARNING) Xantech/Dayton Audio/Sonance Multi-Zone Amps (custom integration) - message first occurred at 10:43:15 AM and shows up 104 times
Failed updating Xantech House Audio zone 11 (Basement Speakers): 'NoneType' object has no attribute 'groupdict'
10:47:29 AM – (WARNING) Xantech/Dayton Audio/Sonance Multi-Zone Amps (custom integration) - message first occurred at 10:43:16 AM and shows up 103 times

and my YAML is:

media_player:
  - platform: xantech
    type: monoprice6
    port: /dev/serial/by-id/usb-FTDI_USB_Serial_Converter_FTCAFV2Y-if00-port0
    zones: 
      11:
        name: Basement Speakers
      12:
        name: Kitchen Speakers
      13:
        name: Main Bathroom Speaers
      14:
        name: Deck Speakers
    sources:
      2:
        name: Pianobar

I might have the same problem, have you figured out a solution for it? Thanks

Hi automaters,

I am trying to find best solution to set up whole house audio in my new home. I have ca 8- 10 zones with speaker cables going to my rack in the cellar. I would like to have spotify connect available and control everything from within home assistant. I was considering dax88 after reading posts here but i also have found xantech mraudio8x8 available 2nd hand for ca 450 usd.
Is dax88 better than xantech? Does xantech have spotify streaming options? Can i upgrade any of those to more than 8 zones? How should i power additional zones? Can anyone help me with the design and deciding on a purchase? I would like to have controls available from wall mounted android tablets. Anyone that could help? Internet websites are not a good source of knowledge in this case

Well the mraudio8x8 is 35W/ch … the DAX88 is 75w/ch … more than twice the power. The DAX88 has one streaming zone built in, not sure of the Xantech but you can get Spotify through many ways, even direct connect speaker out from Home Assistant if you HA device supports sound and has a jack. I have a separate Volumio device that supports Spotify, Kodi on the HA unit itself, and even an Alexa hockey puck with audio out with Spotify … all of which can plug into zones on the amp.

If I am using a PAD or HA interface I can just use the streaming input but if I am say in the kitchen, I can tell Alexa “play The Doors” and it will start on the kitchen’s alexa and then I say “change music to stereo Alexa” and it will play on another alexa directly connected to the DAX88.

Either option supports daisy chaining DAXs or if you read though this thread you would find people that have multiple DAXs independent also.

In my opinion, there is nothing better than the DAX. I have five wall mounted tablets in my house with a nice GUI and can control all aspects of the DAX (including my customization that allows control of bass, treble and balance for every zone).

@usaf_pride This is cryptic error message, but it basically means in the pyxantech library the for the monoprice6 protocol the zone_status_skip command is not defined. Someone needs to edit the monoprice6.yaml to add support for that (if Monoprice has that command).

I am looking to integrate a Crestron audio system with HA. My Crestron audio system consists of two 8x8 audio pre-amps and a pair of 16 channel amps. Crestron does not have a protocol but I can implement my own. Since the Xantech is an 8x8, I could just implement the Xantech protocol and use this custom component to control my Crestron audio system. I would be doing it over IP so I would follow those instructions using the socket://ipaddress:port. Does anyone familiar with this component see any potential problem with this or have any tips before I get started? Thanks.

Dean

I updated my interface for an Alexa hockey puck plugged into one of the DAX88 zones. I added an input_select with 1500+ top artists which allow you to select Pandora/Spotify/Likely whatever else you have to stream music that Amazon supports.

You change the input_select, it populates a hidden input_text with the Artist name and sends the command to that Alexa to play that artist from that source.

FInal product:

Showing the select widget:

If anyone wants the code behind, let me know and I can send it along. The artist list is just a giant JSON file likely too large for here so I can add it to GIT.

The magic is mostly here:

alias: Change Stereo Alexa Artist
description: ""
trigger:
  - platform: state
    entity_id:
      - input_text.stereo_alexa_artist
condition: []
action:
  - service: media_player.play_media
    data:
      media_content_type: custom
      media_content_id: >-
        Play {{ states('input_text.stereo_alexa_artist') }} from  {% if
        states('input_boolean.spotalexon') == 'on' %}
          Spotify 
        {% else %}
          Pandora 
        {% endif %} on Stereo Alexa
    target:
      entity_id: media_player.stereo_alexa
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0
  - service: homeassistant.update_entity
    data: {}
    target:
      entity_id: media_player.stereo_alexa
mode: single

I would note that using the same method, you can create quick “genre” lists … like

  • Pop
  • Christmas Music
  • Jazz
  • Latin

And so on.

In other words, it sends the command:

“play Christmas Music from Spotify on Stereo Alexa”

Hi, not directly related to Home Assistant.

I have started to write a small python app to control a MRC88 outside of home assistant (in fact it’s from a cousin that has an MRC88, but isn’t into home assistant).

I am using the pyxantech code from GitHub, and I wondered how I would implement the toggle mute, increment / decrement volume commands. The python class has set_vol() or set_mute() but a callable toggle_mute() for example.

Any help would be appreciated.

James

James, I may have an updated Python library for controlling the MRC88 that will allow you to do that in a bit easier way. It may be a week or two out though before I finish the final things to make it work.

Hi,

Thanks. I’ll keep an eye out for it.

I haven’t had a chance to get to my cousins to test the code I’ve written to make sure my python skills are up to scratch anyway. But I look forward to trying it out.

FYI, this will also include an emulator that you can start up that simulates the Xantech MRC88 so you don’t need to physically be at your cousin’s.

By chance did you ever look at the code i did to add balance, bass, treble? If so, do you think the better ( not just Dax 88) version can get into a release?

This sounds great, will definitely try it when it’s available.

I got a usb- rs232 cables but even using minicom I can’t seem to get commands like !1PR+ to work for the MRC88

Using 9600 baud rate

Any tips to get this working ?

Does anyone know if this code can be adapted to work for Anthem MDX 8 and MDX16?

Hi all,
Does anyone know the pinouts for that DB15/HD15 port on the back off the Xantech MX-88 line, for RS232 control. They supply a DB9 to DB15 cable with the unit. I have two units and one cable. The cable is discontinued (PN 05913665).

The pinout in the manual (for the DB15 connector) is (a) for the expansion (outbound, secondary) DB15 port, not the primary control port (b) it doesn’t work (I bought a cable and DB15/HD15 connector). Called “Nice” the new parent of Xantech. they couldn’t help because its all discontinued.

My attempt was pin 2 (Tx DB9) to pin 11 (Tx DB15), pin 3 (Rx DB9) to pin 13 (Rx DB9) and pin 5 (ground DB9) to pin 12 (common DB15).

I also tried reversing the Rx Tx – but to avail.

Can anyone come to my rescue? Pic from manual with notes attached for someone smarter than me to decode!

Thanks.

1 Like

Well – I’ll answer my own question so the next poor soul doesn’t have to go through the pain. Took a multimeter and decoded the pinouts which have zero resemblance to the published pins.

MX88 DB15 / HD15 Adapter cable pinouts.

Pin 5 Ground (DB9) —> Pin 11 and Pin 9 (DB15/HD15) — only pin 9 is required.
Pin 3 TX (DB9) —> Pin 12 (DB15/HD15)
Pin 2 RX (DB9) —> Pin 13 (DB15/HD15)

It’s now working!

1 Like

THANK YOU @skavan!

I have a MX88ai sitting here with no cable. I was able to connect to the MRIP interface on port 22 via TCP, but it doesn’t seem to accept the standard Xantech RS232 protocol. I asked Xantech support and they could not help find the MRIP document (even though I found it referenced by name in one of the old manuals). Oh well, maybe one day the MRIP protocol will also be decoded.

I’ll try to build a cable this week as I’d really like to get my MX88ai working (plus it will help test a complete revamp of the pyxantech library that I’m working on).

@skavan, I updated the pyxantech README.md with your findings:
GitHub - rsnodgrass/pyxantech: Python RS232 API for multi-zone amps (Monoprice/Soundavo/Xantech/Dayton Audio)