# Yamaha MusicCast Binding
Binding to control Yamaha models via their MusicCast protocol (aka Yamaha Extended Control). Supports up to four zones: main, zone2, zone3, and zone4. Main is always present; additional zones are detected from the model.
UDP events are captured to reflect changes for:
- Power
- Mute
- Volume
- Input
- Presets
- Sleep
- Artist
- Track
- Album
- Album Art
- Repeat
- Shuffle
- Play Time
- Total Time
- MusicCast Link
If your Yamaha model doesn't support the MusicCast protocol, try the Yamaha Receiver Binding (opens new window) instead.
The Yamaha Receiver will send update messages to UDP port 41100.
# Supported Things
Each model (AV receiver, etc.) is a Thing (Thing Type ID: yamahamusiccast:device).
Things are linked to a bridge (Thing Type ID: yamahamusiccast:bridge) for receiving UDP events.
# Discovery
Auto-discovery via UPnP is supported for Yamaha devices that advertise as MediaRenderer. You can also add Things manually.
# Thing Configuration
| Parameter | Type | Description | Advanced | Required |
|---|---|---|---|---|
| host | String | IP address of the Yamaha model (AVR, etc.) | false | true |
| syncVolume | Boolean | Sync volume across linked models (default: false) | false | false |
| defaultAfterMCLink | String | Default input value for the client when MC Link is broken | false | false |
| volumeDbMin | Number | Lowest volume in dB | true | false |
| volumeDbMax | Number | Highest volume in dB | true | false |
Default value for defaultAfterMCLink is NET RADIO (as net_radio) since most models have this on board. You can also use RADIO / TUNER (as tuner).
# Channels
| channel | type | description |
|---|---|---|
| power | Switch | Power ON/OFF |
| mute | Switch | Mute ON/OFF |
| volume | Dimmer | Volume in % (scaled to the model's maximum volume) |
| volumeAbs | Number | Volume as an absolute value |
| volumeDB | Number:Dimensionless | Volume in decibels (dB); availability depends on device |
| input | String | See the list below |
| soundProgram | String | See the list below |
| selectPreset | String | Select Net Radio/USB preset (fetched from the model) |
| selectPresetDAB | String | Select DAB tuner preset (fetched from Model) |
| selectPresetFM | String | Select FM tuner preset (fetched from Model) |
| sleep | Number | Fixed values for sleep: 0/30/60/90/120 minutes |
| recallScene | Number | Select a scene (8 default scenes are provided) |
| player | Player | PLAY/PAUSE/NEXT/PREVIOUS/REWIND/FASTFORWARD |
| artist | String | Artist |
| track | String | Track |
| album | String | Album |
| albumArt | Image | Album art |
| repeat | String | Toggle repeat: Off, One, All |
| shuffle | String | Toggle shuffle: Off, On, Songs, Albums |
| playTime | Number:Time | Play time of the current selection: radio, song, track, ... |
| totalTime | String | Total time of the current selection: radio, song, track, ... |
| mclinkStatus | String | Choose your MusicCast server or set to Standalone, Server, or Client |
| Zones | description |
|---|---|
| zone1-4 | Zones 1 to 4 to control Power, Volume, etc. |
| playerControls | Separate zone for Play, Pause, etc. |
# Input List
Firmware v1
cd / tuner / multi_ch / phono / hdmi1 / hdmi2 / hdmi3 / hdmi4 / hdmi5 / hdmi6 / hdmi7 / hdmi8 / hdmi / av1 / av2 / av3 / av4 / av5 / av6 / av7 / v_aux / aux1 / aux2 / aux / audio1 / audio2 / audio3 / audio4 / audio_cd / audio / optical1 / optical2 / optical / coaxial1 / coaxial2 / coaxial / digital1 / digital2 / digital / line1 / line2 / line3 / line_cd / analog / tv / bd_dvd / usb_dac / usb / bluetooth / server / net_radio / rhapsody / napster / pandora / siriusxm / spotify / juke / airplay / radiko / qobuz / mc_link / main_sync / none
Firmware v2
cd / tuner / multi_ch / phono / hdmi1 / hdmi2 / hdmi3 / hdmi4 / hdmi5 / hdmi6 / hdmi7 /
hdmi8 / hdmi / av1 / av2 / av3 / av4 / av5 / av6 / av7 / v_aux / aux1 / aux2 / aux / audio1 /
audio2 / audio3 / audio4 / audio5 / audio_cd / audio / optical1 / optical2 / optical / coaxial1 / coaxial2 /
coaxial / digital1 / digital2 / digital / line1 / line2 / line3 / line_cd / analog / tv / bd_dvd /
usb_dac / usb / bluetooth / server / net_radio / rhapsody /napster / pandora / siriusxm /
spotify / juke / airplay / radiko / qobuz / tidal / deezer / mc_link / main_sync / none
# Sound Program
munich_a / munich_b / munich / frankfurt / stuttgart / vienna / amsterdam / usa_a / usa_b / tokyo / freiburg / royaumont / chamber / concert / village_gate / village_vanguard / warehouse_loft / cellar_club / jazz_club / roxy_theatre / bottom_line / arena / sports / action_game / roleplaying_game / game / music_video / music / recital_opera / pavilion / disco / standard / spectacle / sci-fi / adventure / drama / talk_show / tv_program / mono_movie / movie / enhanced / 2ch_stereo / 5ch_stereo / 7ch_stereo / 9ch_stereo / 11ch_stereo / stereo / surr_decoder / my_surround / target / straight / off
# Full Example
# Bridge & Thing(s)
Bridge yamahamusiccast:bridge:virtual "YXC Bridge" {
Thing device Living "YXC Living" [host="1.2.3.4", defaultAfterMCLink="none", syncVolume=false, volumeDbMin=-80, volumeDbMax=-10]
}
# Basic setup
Switch YamahaPower "" {channel="yamahamusiccast:device:virtual:Living:main#power"}
Switch YamahaMute "" {channel="yamahamusiccast:device:virtual:Living:main#mute"}
Dimmer YamahaVolume "" {channel="yamahamusiccast:device:virtual:Living:main#volume"}
Number YamahaVolumeAbs "" {channel="yamahamusiccast:device:virtual:Living:main#volumeAbs"}
Number:Dimensionless YamahaVolumeDb "" {channel="yamahamusiccast:device:virtual:Living:main#volumeDB"}
String YamahaInput "" {channel="yamahamusiccast:device:virtual:Living:main#input"}
String YamahaSelectPreset "" {channel="yamahamusiccast:device:virtual:Living:main#selectPreset"}
String YamahaSelectPresetDAB "" {channel="yamahamusiccast:device:virtual:Living:main#selectPresetDAB"}
String YamahaSelectPresetFM "" {channel="yamahamusiccast:device:virtual:Living:main#selectPresetFM"}
String YamahaSoundProgram "" {channel="yamahamusiccast:device:virtual:Living:main#soundProgram"}
# Player controls
Player YamahaPlayer "" {channel="yamahamusiccast:device:virtual:Living:playerControls#player"}
Image YamahaArt "" {channel="yamahamusiccast:device:virtual:Living:playerControls#albumArt"}
String YamahaArtist "" {channel="yamahamusiccast:device:virtual:Living:playerControls#artist"}
String YamahaTrack "" {channel="yamahamusiccast:device:virtual:Living:playerControls#track"}
String YamahaAlbum "" {channel="yamahamusiccast:device:virtual:Living:playerControls#album"}
# MusicCast setup
The idea here is to select which device/model will be the master. This needs to be done for each device/model that will be a slave. If you want the Living to be the master for the Kitchen, select Living - zone (IP) from the Thing Kitchen. The binding will check if there is already a group active for which Living is the master. If yes, this group will be used and Kitchen will be added. If not, a new group will be created.
Device A: Living with IP 192.168.1.1 Device B: Kitchen with IP 192.168.1.2
Set mclinkStatus to Standalone to remove the device/model from the current active group. The group will continue to exist with other devices/models. If the device/model is the server, the group will be disbanded.
String YamahaMCLinkStatus "" {channel="yamahamusiccast:device:Living:main#mclinkStatus"}
During testing with the Yamaha MusicCast app, when removing a slave from the group, the status of the client remained client and input stayed on mclink. Only when changing input was the slave set to standalone. Therefore you can set the parameter defaultAfterMCLink to an input value supported by your device to break the whole MusicCast Link in openHAB.
# How to use this in a rule?
The label uses the format Thinglabel - zone (IP). The value which is sent to OH uses the format IP***zone.
sendCommand(Kitchen_YamahaMCServer, "192.168.1.1***main")
sendCommand(Kitchen_YamahaMCServer, "")
sendCommand(Kitchen_YamahaMCServer, "server")
sendCommand(Kitchen_YamahaMCServer, "client")
# Tested Models
RX-D485 / WX-010 / WX-030 / ISX-80 / YSP-1600 / RX-A860 / R-N303D / RX-A1080 / WXA-050 / HTR-4068 (RX-V479) MusicCast 20 / WCX-50 / RX-V4A / RX-V6A / YAS-306 / ISX-18D / WX-021 / YAS-408