Monoprice & Xantech Whole House Audio Binding (beta)

logo

This binding is a BETA version of the monopriceaudio binding that has added support for additional Monoprice and Xantech amplifier models.
Models supported are: Monoprice MPR-SG6Z (10761), Monoprice Passive Matrix (39261) & Dayton Audio DAX66, Monoprice 31028, or Xantech 4x4 & 8x8 whole house amplifiers.
Users of 10761, 39261 and DAX66 amplifiers should use the official openhab-addons version of the binding.
The code for the Monoprice 31028 and Xantech models has not yet been tested because I do not own any of these models.
Please report any successes or failures so that the issues can be addressed.

Supported Things

Monoprice 10761 & 39261 or Dayton Audio DAX66 Amplifiers use the amplifier id. Up to 18 zones with 3 linked amps, 6 source inputs.
Monoprice 31028 70V Amplifiers use the monoprice70v id. Supports 6 zones per amp with 2 source inputs, not linkable.
Xantech 4x4 Amplifiers use the xantech44 id. Supports 4 zones per amp with 4 source inputs, not linkable.
Xantech 8x8 Amplifiers use the xantech88 id. Up to 24 zones with 3 linked amps, 8 source inputs.

Discovery

Discovery is not supported.
You have to add all things manually.

Binding Configuration

There are no overall binding configuration settings that need to be set.
All settings are through thing configuration parameters.

If you receive an error about openhab-transport-serial, issue the following command in the openhab console:

feature:install openhab-transport-serial

Thing Configuration

The thing has the following configuration parameters (number of sources and zones is amplifier dependent):

Parameter Label Parameter ID Description Accepted values
Serial Port serialPort Serial port to use for connecting to the whole house amplifier device Serial port name
Address host Host name or IP address of the amplifier or serial over IP device Host name or IP
Port port Communication port (default 8080 for newer amps with built-in serial over IP) TCP port number
Number of Zones numZones (Optional) Number of amplifier zones to utilize in the binding (See Supported Things for max number of zones per Thing type) 1-24; default 6
Polling Interval pollingInterval (Optional) Configures how often (in seconds) to poll the amplifier to check for zone updates 5-60; default 15
Ignore Zones ignoreZones (Optional) A comma seperated list of Zone numbers that will ignore the ‘All Zone’ (except All Off) commands ie: “1,6,10”
Initial All Volume initialAllVolume (Optional) When ‘All’ zones are activated, the volume will reset to this value to prevent excessive blaring of sound :wink: 1-30; default 10
Source 1 Input Label inputLabel1 (Optional) Friendly name for the input source to be displayed in the UI (ie: Chromecast, Radio, CD, etc.) (default “Source 1”) A free text name
Source 2 Input Label inputLabel2 (Optional) Friendly name for the input source to be displayed in the UI (ie: Chromecast, Radio, CD, etc.) (default “Source 2”) A free text name
Source 3 Input Label inputLabel3 (Optional) Friendly name for the input source to be displayed in the UI (ie: Chromecast, Radio, CD, etc.) (default “Source 3”) A free text name
Source 4 Input Label inputLabel4 (Optional) Friendly name for the input source to be displayed in the UI (ie: Chromecast, Radio, CD, etc.) (default “Source 4”) A free text name
Source 5 Input Label inputLabel5 (Optional) Friendly name for the input source to be displayed in the UI (ie: Chromecast, Radio, CD, etc.) (default “Source 5”) A free text name
Source 6 Input Label inputLabel6 (Optional) Friendly name for the input source to be displayed in the UI (ie: Chromecast, Radio, CD, etc.) (default “Source 6”) A free text name
Source 7 Input Label inputLabel7 (Optional) Friendly name for the input source to be displayed in the UI (ie: Chromecast, Radio, CD, etc.) (default “Source 7”) A free text name
Source 8 Input Label inputLabel8 (Optional) Friendly name for the input source to be displayed in the UI (ie: Chromecast, Radio, CD, etc.) (default “Source 8”) A free text name

Some notes:

  • On the 10761/DAX66 amp, activating the ‘Page All Zones’ feature can only be done through the +12v trigger input on the back of the amplifier.

  • On Linux, you may get an error stating the serial port cannot be opened when the MonopriceAudio binding tries to load.

  • You can get around this by adding the openhab user to the dialout group like this: usermod -a -G dialout openhab.

  • Also on Linux you may have issues with the USB if using two serial USB devices e.g. MonopriceAudio and RFXcom.

  • See the general documentation about serial port configuration for more on symlinking the USB ports.

  • Here is an example of ser2net.conf you can use to share your serial port /dev/ttyUSB0 on IP port 8080 using ser2net Linux tool:

8080:raw:0:/dev/ttyUSB0:9600 8DATABITS NONE 1STOPBIT LOCAL

Channels

The following channels are available (dnd, page and keypad not available on all amps):

Channel ID Item Type Description
all#allpower Switch Turn all zones on or off simultaneously (those specified by the ignoreZones config option will not turn on)
all#allsource Number Select the input source for all zones simultaneously (1-8) [number of sources is amplifier dependent] (except ignoreZones)
all#allvolume Dimmer Control the volume for all zones simultaneously (0-100%) [translates to the paticular amplifier’s volume range] (except ignoreZones)
all#allmute Switch Mute or unmute all zones simultaneously (except ignoreZones)
zoneN#power (where N= 1-24) Switch Turn the power for a zone on or off
zoneN#source (where N= 1-24) Number Select the input source for a zone (1-8) [number of sources is amplifier dependent]
zoneN#volume (where N= 1-24) Dimmer Control the volume for a zone (0-100%) [translates to the paticular amplifier’s volume range]
zoneN#mute (where N= 1-24) Switch Mute or unmute a zone
zoneN#treble (where N= 1-24) Number Adjust the treble control for a zone [range is amplifier dependent]
zoneN#bass (where N= 1-24) Number Adjust the bass control for a zone [range is amplifier dependent]
zoneN#balance (where N= 1-24) Number Adjust the balance control for a zone [0=center, range is amplifier dependent]
zoneN#dnd (where N= 1-24) Switch Turn on or off the Do Not Disturb for the zone (for when the amplifier’s external page trigger is activated)
zoneN#page (where N= 1-24) Contact Indicates if the page input is activated for the zone
zoneN#keypad (where N= 1-24) Contact Indicates if the physical keypad is attached to a zone

Full Example

monoprice.things:

// Monoprice 10761, 39261 / DAX66 (serial port connection)
monopriceaudio:amplifier:myamp "Monoprice WHA" [ serialPort="COM5", pollingInterval=15, numZones=6, inputLabel1="Chromecast", inputLabel2="Radio", inputLabel3="CD Player", inputLabel4="Bluetooth Audio", inputLabel5="HTPC", inputLabel6="Phono" ]

// Monoprice 10761, 39261 / DAX66 (serial over IP connection)
monopriceaudio:amplifier:myamp "Monoprice WHA" [ host="192.168.0.10", port=8080, pollingInterval=15, numZones=6, inputLabel1="Chromecast", inputLabel2="Radio", inputLabel3="CD Player", inputLabel4="Bluetooth Audio", inputLabel5="HTPC", inputLabel6="Phono" ]

// Monoprice 31028
monopriceaudio:monoprice70v:myamp "Monoprice 70V" [ serialPort="COM5", pollingInterval=30, numZones=6, inputLabel1="Source 0 - Bus", inputLabel2="Source 1 - Line" ]

// Xantech 4x4
monopriceaudio:xantech44:myamp "Xantech WHA" [ serialPort="COM5", pollingInterval=15, numZones=4, inputLabel1="Chromecast", inputLabel2="Radio", inputLabel3="CD Player", inputLabel4="Bluetooth Audio" ]

// Xantech 8x8
monopriceaudio:xantech88:myamp "Xantech WHA" [ serialPort="COM5", pollingInterval=15, numZones=8, inputLabel1="Chromecast", inputLabel2="Radio", inputLabel3="CD Player", inputLabel4="Bluetooth Audio", inputLabel5="HTPC", inputLabel6="Phono", inputLabel7="Ipod", inputLabel8="Sirius" ]

monoprice.items:

// substitute 'amplifier' for the appropriate thing id if using 31028 or Xantech amplifier

Switch all_allpower "All Zones Power" { channel="monopriceaudio:amplifier:myamp:all#allpower" }
Number all_source "Source Input [%s]" { channel="monopriceaudio:amplifier:myamp:all#allsource" }
Dimmer all_volume "Volume [%d %%]" { channel="monopriceaudio:amplifier:myamp:all#allvolume" }
Switch all_mute "Mute" { channel="monopriceaudio:amplifier:myamp:all#allmute" }

Switch z1_power "Power" { channel="monopriceaudio:amplifier:myamp:zone1#power" }
Number z1_source "Source Input [%s]" { channel="monopriceaudio:amplifier:myamp:zone1#source" }
Dimmer z1_volume "Volume [%d %%]" { channel="monopriceaudio:amplifier:myamp:zone1#volume" }
Switch z1_mute "Mute" { channel="monopriceaudio:amplifier:myamp:zone1#mute" }
Number z1_treble "Treble Adjustment [%s]" { channel="monopriceaudio:amplifier:myamp:zone1#treble" }
Number z1_bass "Bass Adjustment [%s]" { channel="monopriceaudio:amplifier:myamp:zone1#bass" }
Number z1_balance "Balance Adjustment [%s]" { channel="monopriceaudio:amplifier:myamp:zone1#balance" }
Switch z1_dnd "Do Not Disturb" { channel="monopriceaudio:amplifier:myamp:zone1#dnd" }
Switch z1_page "Page Active: [%s]" { channel="monopriceaudio:amplifier:myamp:zone1#page" }
Switch z1_keypad "Keypad Connected: [%s]" { channel="monopriceaudio:amplifier:myamp:zone1#keypad" }

// repeat for total number of zones used (substitute z1 and zone1)

monoprice.sitemap:

sitemap monoprice label="Audio Control" {
    Frame label="All Zones" {
        Switch item=all_allpower label="All Zones On" mappings=[ON=" "]
        Switch item=all_allpower label="All Zones Off" mappings=[OFF=" "]
        Selection item=all_source
        Setpoint item=all_volume minValue=0 maxValue=100 step=1
        Switch item=all_mute
    }
    
    Frame label="Zone 1" {
        Switch item=z1_power
        Selection item=z1_source visibility=[z1_power==ON]
        // Volume can be a Slider also
        Setpoint item=z1_volume minValue=0 maxValue=100 step=1 visibility=[z1_power==ON]
        Switch item=z1_mute visibility=[z1_power==ON]
        // Min and Max values are for the 10761 amp, adjust if using a different model
        Setpoint item=z1_treble label="Treble Adjustment [%d]" minValue=-7 maxValue=7 step=1 visibility=[z1_power==ON]
        Setpoint item=z1_bass label="Bass Adjustment [%d]" minValue=-7 maxValue=7 step=1 visibility=[z1_power==ON]
        Setpoint item=z1_balance label="Balance Adjustment [%d]" minValue=-10 maxValue=10 step=1 visibility=[z1_power==ON]
        Switch item=z1_dnd visibility=[z1_power==ON]
        Text item=z1_page label="Page Active: [%s]" visibility=[z1_power==ON]
        Text item=z1_keypad label="Keypad Connected: [%s]" visibility=[z1_power==ON]
    }
    
    // repeat for total number of zones used (substitute z1)
}

Changelog

Version 2.0 Beta

Initial Add-on Marketplace release

Resources

https://github.com/mlobstein/openhab-addons/releases/download/v2.0beta/org.openhab.binding.monopriceaudio-3.2.0-SNAPSHOT.jar