# Yamaha MusicCast Binding Binding to control Yamaha models via their MusicCast protocol (aka Yamaha Extended Control). With support for 4 zones : main, zone2, zone3, zone4. Main is always present. Zone2, Zone3, Zone4 are read from the model. UDP events are captured to reflect changes in the binding for - Power - Mute - Volume - Input - Presets - Sleep - Artist - Track - Album - Album Art - Repeat - Shuffle - Play Time - Total Time - Musiccast Link ## Supported Things Each model (AV Receiver, ...) is a Thing (Thing Type ID: yamahamusiccast:device). Things are linked to a Bridge (Thing Type ID: yamahamusiccast:bridge) for receiving UDP events. ## Discovery No auto discovery ## Thing Configuration | Parameter | Type | Description | Advanced | Required | |--------------------|---------|---------------------------------------------------------|----------|---------------| | host | String | IP address of the Yamaha model (AVR, ...) | false | true | | syncVolume | Boolean | Sync volume across linked models (default=false) | false | false | | defaultAfterMCLink | String | Default Input value for 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*) as most of the 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 as % (recalculated based on Max Volume Model) | | volumeAbs | Number | Volume as absolute value | | volumeDB | Number:Dimensionless | Volume in decibel (dB) (availability depends on device) | | input | String | See below for list | | soundProgram | String | See below for list | | selectPreset | String | Select Netradio/USB preset (fetched from Model) | | sleep | Number | Fixed values for Sleep : 0/30/60/90/120 in minutes | | recallScene | Number | Select a scene (8 defaults scenes are foreseen) | | 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. Available values: Off, One, All | | shuffle | String | Toggle Shuffle. Available values: Off, On, Songs, Album | | playTime | String | Play time of current selection: radio, song, track, ... | | totalTime | String | Total time of current selection: radio, song, track, ... | | mclinkStatus | String | Select your Musiccast Server or set to Standalone, Server or Client | | Zones | description | |----------------------|------------------------------------------------------| | zone1-4 | Zone 1 to 4 to control Power, Volume, ... | | playerControls | Separate zone for Play, Pause, ... | ## 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 YamahaSoundProgram "" {channel="yamahamusiccast:device:virtual:Living:main#soundProgram"} ``` ### Player controls ``` Player YamahaPlayer "" {channel="yamahamusiccast:device:virtual:Living:playerControls#player"} String 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 what device/model will be the master. This needs to be done per device/model which will then be the 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 keep on 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, the slave was set to *standalone*. Therefor you can set the parameter **defaultAfterMCLink** to an input value supported by your device to break the whole Musiccast Link in OH. #### 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 / EX-A1080 / WXA-050 / HTR-4068 (RX-V479) MusicCast 20 / WCX-50 / RX-V6A / YAS-306 / ISX-18D / WX-021 / YAS-408