openhab-addons/bundles/org.openhab.binding.yamahamusiccast/README.md
Jerome Luckenbach ce3f673380
[Documentation] Markdown improvements t to z (#14371)
* Apply markdown fixes for bindings with letter _t_
* Apply markdown fixes for bindings with letter _u_
* Apply markdown fixes for bindings with letter _v_
* Apply markdown fixes for bindings with letter _w_
* Apply markdown fixes for bindings with letter _x_
* Apply markdown fixes for bindings with letter _y_
* Apply markdown fixes for bindings with letter _z_

Signed-off-by: Jerome Luckenbach <github@luckenba.ch>
2023-04-11 12:54:54 +02:00

175 lines
9.5 KiB
Markdown

# 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
If your Yamaha model doesn't support the MusicCast protocol, please try the [Yamaha Receiver Binding](https://www.openhab.org/addons/bindings/yamahareceiver/#yamaha-receiver-binding) instead.
## 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)
```java
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
```java
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
```java
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.
```java
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_.
```java
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