Giter VIP home page Giter VIP logo

homebridge-musiccast-tv's Introduction

homebridge-musiccast-tv

npm Language grade: JavaScript

Features

This plugin publishes MusicCast devices as HomeKit compatible TVs. It supports any number of inputs and volume control via the Apple TV Remote widget in the iOS Control Center. You can enable an additional fan service for volume control by adding volumeFan = 1 and volumeName to your config.json.

Configuration

    "accessories": [{
        "accessory": "MusicCastTV",
        "name": "Living Room Radio",
        "ip": "192.168.178.2",
        "inputs": {
            "airplay": "AirPlay", 
            "am": "AM", 
            "fm": "FM", 
            "line_cd": "CD", 
            "hdmi1": "DVD Player", 
            "server": "Homeserver", 
            "net_radio": "Online radio"
            }
    }]

Installation

Install Homebridge

sudo npm install -g homebridge
sudo npm install -g homebridge-musiccast-tv

Configure Homebridge

You can get information about your MusicCast device by visiting "http://<ip>/YamahaExtendedControl/v1/system/getFeatures".

config arguments:

name example description required
accessory MusicCastTV this value is used to identify this plugin yes
name "TV stereo" the name of your device yes
ip 192.168.178.29 ip address for your MusicCast device yes
zone "zone2" MusicCast zone from getFeatures.json, default: "main" no
inputs {"fm": "radio", "line_cd": "CD", "airplay": "AirPlay"} one key:value pair for each input you want to use. You can hide inputs by removing the checkbox in your HomeKit app or by removing it here. yes
model "Yamaha R-N602" device model shown in homebridge no
serialNo "123-456-789" serial number shown in homebridge no
volumeFan 1 show additional fan service for volume control no
volumeName "TV speaker" the name of the additional fan service no
buttonNumber 11 show additional switch for setting the radio to favourite station no ... no
buttonName "radio station 11" the name of the additional switch no
buttonBand "fm" the tuner band for the additional switch no
powerOnInput "line_cd" input automatically switched to at powerOn no
powerOnVolume 60 Volume your device is set to at powerOn no
updateInterval 1000 time between updates im ms no
volume 100 initial Volume; automatically detected no
maxVol 161 maxVol from getFeatures.json; automatically detected no

Currently supported inputs:

Input Name Implemented
phono yes
line_cd yes
line1 yes
line2 yes
line3 yes
usb yes
usb_dac yes
airplay yes
bluetooth yes
net_radio yes
server yes
optical yes
optical1 yes
optical2 yes
coaxial yes
coaxial1 yes
coaxial2 yes
hdmi yes
hdmi[1-8] yes
aux yes
aux1 yes
aux2 yes
v_aux yes
av[1-7] yes
cd yes
tv yes
analog yes
multi_ch yes
audio yes
audio[1-4] yes
audio_cd yes
digital yes
digital1 yes
digital2 yes
bd_dvd yes
mc_link yes
main_sync no
**tuner types: **
fm yes
am yes
dab yes
**streaming services: **
spotify yes
amazon_music yes
deezer yes
napster yes
qobuz yes
juke yes
tidal yes
pandora yes
siriusxm yes
radiko yes
alexa yes

If your MusicCast device supports additional inputs, please file an issue.

hdmi[1-8] summarizes hdmi1, hdmi2, ..., hdmi8

Debugging

  • check you are using the right ip-adress
  • check your log file for error messages
  • run in debug mode using "homebridge -D" and file an issue

Common issues

Input appears as additional tile

  • remove and repair Homebridge
  • restart Homebridge

Issues with more than one TV per bridge

If you have more than one TV per Homebridge instance you might experience some of the following issues:

  • only one TV appears in the TV widget
  • one or multiple TVs have problems syncing to Homebridge
  • one or more TVs are flashing in the Home app

To fix these Issues make sure there is just one TV per Homebridge instance. You can run multiple Homebridge instances per device.

TODO

  • add fan service for volume control
  • fix symbol
  • create plattform accesory

homebridge-musiccast-tv's People

Contributors

aangert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

homebridge-musiccast-tv's Issues

Input shown as additional Tile

Auf dem iPad werden Spotify/Airplay und Webradio als getrenntes Feld angezeigt. Dabei ist das Feld Webradio ohne Funktion. Das Webradio kann nicht eingeschaltet werden:

2020-02-24 08_25_53-Window

Support Zones?

I would love to be able to allow for zoning with my receivers so I can control input and volume for my seperate Zones via Homekit

Input shown in Home app and actual input don’t match

If I start the button in Home and have set the input to "spotify" there is no signal. If I set the start to for example "Net_radio" there is a signal.
Each time when hearing spotify, I must first switch to another input and back, then spotify works.

Why?

My configuration:

{
"accessory": "MusicCastTV",
"name": "MusicCast 20 Esszimmer",
"ip": "xxx.xxx.xxx.xxx",
"maxVol": 80,
"volume": 30,
"modell": "Yamaha WX-021",
"inputs": {
"net_radio": "Webradio",
"spotify": "Spotify",
"airplay": "Airplay"
}
}

Thank you for your support

Make Serial Number editable in config.json

Is your feature request related to a problem? Please describe.
My Yamaha musiccast accessory is detedcted in the Apple Home app, but not in 3rd party apps like Elegato Eve. I fear it might have to do with the fix serial number of "123-456-789".

Describe the solution you'd like
Could you provide the possibility to set the serial number through the config file? It could be optional, default value can still be "123-456-7892

Thanks!

Error when starting with plugin enabled

Hi,
I've tried for a while to get this plugin to work; it took me a while to get my json formatted correctly in a way in which it would be accepted but I get this error in my logs on startup which sends homebridge in a loop.

[6/7/2021, 8:21:54 PM] [Yamaha Stereo] Initializing MusicCastTV accessory...
[6/7/2021, 8:21:56 PM] TypeError: Cannot set property 'ConfiguredName' of undefined
    at new MusicCastTV (/homebridge/node_modules/homebridge-musiccast-tv/index.js:135:41)
    at /usr/local/lib/node_modules/homebridge/src/server.ts:350:50
    at Array.forEach (<anonymous>)
    at Server.loadAccessories (/usr/local/lib/node_modules/homebridge/src/server.ts:270:29)
    at Server.start (/usr/local/lib/node_modules/homebridge/src/server.ts:162:12)
[6/7/2021, 8:21:56 PM] Got SIGTERM, shutting down Homebridge...
[6/7/2021, 8:21:56 PM] [Yamaha Stereo] volume: 36 maxVol: 161
[6/7/2021, 8:21:56 PM] [Yamaha Stereo] Input: tuner
[6/7/2021, 8:21:56 PM] TypeError: Cannot read property 'getCharacteristic' of undefined
    at Request._callback (/homebridge/node_modules/homebridge-musiccast-tv/index.js:389:29)
    at Request.self.callback (/homebridge/node_modules/homebridge-musiccast-tv/node_modules/request/request.js:185:22)
    at Request.emit (events.js:376:20)
    at Request.<anonymous> (/homebridge/node_modules/homebridge-musiccast-tv/node_modules/request/request.js:1154:10)
    at Request.emit (events.js:376:20)
    at IncomingMessage.<anonymous> (/homebridge/node_modules/homebridge-musiccast-tv/node_modules/request/request.js:1076:12)
    at Object.onceWrapper (events.js:482:28)
    at IncomingMessage.emit (events.js:388:22)
    at endReadableNT (internal/streams/readable.js:1336:12)
    at processTicksAndRejections (internal/process/task_queues.js:82:21)

Here is my config
{
"accessory": "MusicCastTV",
"name": "Yamaha Stereo",
"ip": "192.168.1.187",
"model": "RN-803D",
"inputs": {
"tuner": "Tuner",
"server": "Server",
"phono": "Phono",
"line_cd": "CD",
"optical2": "TV",
"line1": "PC",
"line2": "Tape",
"spotify": "Spotify",
"net_radio": "Net Radio",
"tidal": "Tidal",
"airplay": "Airplay",
"bluetooth": "Bluetooth"
}
}

Have you got any ideas?
Output from my receiver's api below also

{"response_code":0,"system":{"func_list":["wired_lan","wireless_lan","wireless_direct","network_standby","network_standby_auto","bluetooth_standby","auto_power_standby","bluetooth_tx_setting","speaker_a","speaker_b","headphone","airplay","speaker_settings","disklavier_settings","remote_info","network_reboot","ypao_setting","ypao_speaker_unit","ypao_volume"],"zone_num":1,"input_list":[{"id":"napster","distribution_enable":true,"rename_enable":false,"account_enable":true,"play_info_type":"netusb"},{"id":"spotify","distribution_enable":true,"rename_enable":false,"account_enable":false,"play_info_type":"netusb"},{"id":"juke","distribution_enable":true,"rename_enable":false,"account_enable":true,"play_info_type":"netusb"},{"id":"qobuz","distribution_enable":true,"rename_enable":false,"account_enable":true,"play_info_type":"netusb"},{"id":"tidal","distribution_enable":true,"rename_enable":false,"account_enable":true,"play_info_type":"netusb"},{"id":"deezer","distribution_enable":true,"rename_enable":false,"account_enable":true,"play_info_type":"netusb"},{"id":"airplay","distribution_enable":false,"rename_enable":false,"account_enable":false,"play_info_type":"netusb"},{"id":"mc_link","distribution_enable":false,"rename_enable":true,"account_enable":false,"play_info_type":"netusb"},{"id":"server","distribution_enable":true,"rename_enable":true,"account_enable":false,"play_info_type":"netusb"},{"id":"net_radio","distribution_enable":true,"rename_enable":true,"account_enable":false,"play_info_type":"netusb"},{"id":"bluetooth","distribution_enable":true,"rename_enable":false,"account_enable":false,"play_info_type":"netusb"},{"id":"usb","distribution_enable":true,"rename_enable":true,"account_enable":false,"play_info_type":"netusb"},{"id":"tuner","distribution_enable":true,"rename_enable":true,"account_enable":false,"play_info_type":"tuner"},{"id":"optical1","distribution_enable":true,"rename_enable":true,"account_enable":false,"play_info_type":"none"},{"id":"optical2","distribution_enable":true,"rename_enable":true,"account_enable":false,"play_info_type":"none"},{"id":"coaxial1","distribution_enable":true,"rename_enable":true,"account_enable":false,"play_info_type":"none"},{"id":"coaxial2","distribution_enable":true,"rename_enable":true,"account_enable":false,"play_info_type":"none"},{"id":"line1","distribution_enable":true,"rename_enable":true,"account_enable":false,"play_info_type":"none"},{"id":"line2","distribution_enable":true,"rename_enable":true,"account_enable":false,"play_info_type":"none"},{"id":"line3","distribution_enable":true,"rename_enable":true,"account_enable":false,"play_info_type":"none"},{"id":"line_cd","distribution_enable":true,"rename_enable":true,"account_enable":false,"play_info_type":"none"},{"id":"phono","distribution_enable":true,"rename_enable":true,"account_enable":false,"play_info_type":"none"}],"speaker_settings":{"type":"beam","common":{"attribute":60,"swfr_crossover_list":[40,60,80,90,100,110,120,160,200],"speaker_size":[{"id":"front","size_list":["full_band","low_cut"]}]},"front_l":{"attribute":17,"range_step":[{"id":"level","min":-100,"max":100,"step":5},{"id":"distance","min":30,"max":2400,"step":5}]},"front_r":{"attribute":17,"range_step":[{"id":"level","min":-100,"max":100,"step":5},{"id":"distance","min":30,"max":2400,"step":5}]},"swfr":{"attribute":17,"range_step":[{"id":"level","min":-100,"max":100,"step":5},{"id":"distance","min":30,"max":2400,"step":5}]}},"ypao_speaker_unit_list":["a","b","a+b"]},"zone":[{"id":"main","func_list":["power","sleep","volume","mute","signal_info","prepare_input_change","link_control","link_audio_delay","link_audio_quality"],"input_list":["napster","spotify","juke","qobuz","tidal","deezer","airplay","mc_link","server","net_radio","bluetooth","usb","tuner","optical1","optical2","coaxial1","coaxial2","line1","line2","line3","line_cd","phono"],"link_control_list":["speed","standard","stability"],"link_audio_delay_list":["audio_sync_on","audio_sync_off"],"link_audio_quality_list":["compressed","uncompressed"],"range_step":[{"id":"volume","min":0,"max":161,"step":1}]}],"tuner":{"func_list":["fm","rds","dab"],"range_step":[{"id":"fm","min":87500,"max":108000,"step":50}],"preset":{"type":"separate","num":40}},"netusb":{"func_list":["recent_info","play_queue","mc_playlist","streaming_service_use"],"preset":{"num":40},"recent_info":{"num":40},"play_queue":{"size":200},"mc_playlist":{"size":200,"num":5},"net_radio_type":"airable","pandora":{"sort_option_list":["recent","alphabet"]},"siriusxm":{"api_type":"everest"}},"distribution":{"version":2.00,"compatible_client":[2],"client_max":9,"server_zone_list":["main"]},"ccs":{"supported":true}}

default input spotify

i am able to successfully use Homekit to trigger the receiver to start playing music on FM Radio. but inputs like Spotify requires additional action for any songs to start. any solution to this? thank you.

This plugin slows down Homebridge

Describe the bug
A few HomBridge restarts ago I got the message "This plugin slows down Homebridge" for the musiccast-tv app

Expected behavior
Sometimes this and other device become unbehavior into the HomBridge till the next reboot

Log files

  • [homebridge-musiccast-tv] This plugin slows down Homebridge. The read handler for the characteristic 'Active' didn't respond at all!. Please check that you properly call the callback! See https://git.io/JtMGR for more info.

Additional context
Ubuntu 20.04
Node.js Version | v14.17.0
Npm Version | v6.13.4

more than one Favorites

Hi
Is it possible to add more than one of favorites radio stations ? Maybe as an extra button, or scroll same as inputs.

Thanks for your great work ! :-)

Alexa Input not found

I just want to inform you, that I have an additional input which isn't listed yet. It would be great if could implement the input.
Bildschirmfoto 2021-08-24 um 18 51 51

Speaker action crashes Homebridge

I have Homebridge running inside homebridge-docker. Homebridge is usually stable, but I have set up the homebridge-musiccast-tv plugin (v1.6.0) to use with my Yamaha NX-N500 speakers, and I find when I ask Siri to turn the speakers on, it causes Homebridge to crash.

I am running Homebridge in insecure mode to also control it via google home, but in this case I am controlling it via Siri on an Apple TV / Homekit hub via the local network.

Below is a log excerpt showing me turning the speakers off (successfully), and then on again (causes the crash). This happens every time, it is not intermittent. The action does however succeed before the crash occurs:

[5/14/2020, 7:10:45 PM] [Speakers] Active to 0
[5/14/2020, 7:10:53 PM] [Speakers] Active to 1
[5/14/2020, 7:10:53 PM] [Speakers] powerOnInput: optical
[5/14/2020, 7:10:53 PM] [Speakers] Switch to 15: optical
[5/14/2020, 7:10:53 PM] [Speakers] powerOnVolume: 50
[5/14/2020, 7:10:53 PM] [Speakers] Volume to 50
[5/14/2020, 7:10:53 PM] Error: This callback function has already been called by someone else; it can only be called one time.
at /usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/dist/lib/util/once.js:11:19
at MusicCastTV.setVolume (/homebridge/node_modules/homebridge-musiccast-tv/index.js:625:3)
at MusicCastTV.setActive (/homebridge/node_modules/homebridge-musiccast-tv/index.js:490:10)
at Active.emit (events.js:310:20)
at Active.EventEmitter.emit (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/dist/lib/EventEmitter.js:59:38)
at Active.Characteristic._this.setValue (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/dist/lib/Characteristic.js:349:23)
at /usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/dist/lib/Accessory.js:940:36
at Array.forEach (:null:null)
at Bridge.Accessory._this._handleSetCharacteristics (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/dist/lib/Accessory.js:808:18)
at HAPServer.emit (events.js:310:20)
at HAPServer.EventEmitter.emit (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/dist/lib/EventEmitter.js:59:38)
at HAPServer._this._handleCharacteristics (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/dist/lib/HAPServer.js:851:23)
at IncomingMessage. (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/dist/lib/HAPServer.js:240:39)
at IncomingMessage.emit (events.js:310:20)
at endReadableNT (_stream_readable.js:1187:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21)

[5/14/2020, 7:10:53 PM] Got SIGTERM, shutting down Homebridge...
[5/14/2020, 7:10:58 PM] [HB Supervisor] Homebridge Process Ended. Code: 143, Signal: null
[5/14/2020, 7:11:03 PM] [HB Supervisor] Restarting Homebridge...
[5/14/2020, 7:11:03 PM] [HB Supervisor] Starting Homebridge with extra flags: -I -P /homebridge/node_modules
[5/14/2020, 7:11:03 PM] [HB Supervisor] Started Homebridge v1.0.4 with PID: 1831
[5/14/2020, 7:11:04 PM] Loaded config.json with 1 accessories and 2 platforms.
[5/14/2020, 7:11:04 PM] ---
[5/14/2020, 7:11:06 PM] Loaded plugin: homebridge-dummy
[5/14/2020, 7:11:06 PM] Registering accessory 'homebridge-dummy.DummySwitch'
[5/14/2020, 7:11:06 PM] ---
[..]
[5/14/2020, 7:11:07 PM] Loaded plugin: homebridge-musiccast-tv
[5/14/2020, 7:11:07 PM] Registering accessory 'homebridge-musiccast-tv.MusicCastTV'
[5/14/2020, 7:11:07 PM] ---
[..]
[5/14/2020, 7:11:07 PM] Loading 2 platforms...
[..]
[5/14/2020, 7:11:07 PM] Loading 1 accessories...
[5/14/2020, 7:11:07 PM] [Speakers] Initializing MusicCastTV accessory...
[5/14/2020, 7:11:07 PM] [Speakers] Initialized 'Speakers'
[..]
[5/14/2020, 7:11:07 PM] Homebridge is running on port 51631.
[5/14/2020, 7:11:07 PM] [Speakers] volume: 68 maxVol: 100
[5/14/2020, 7:11:07 PM] [Speakers] Input: optical


Thanks!

Volume control

Hi,

It is possible to add an slidebar for volume control?
In plugin: https://www.npmjs.com/package/homebridge-yamaha_mc3
this working in implementation like a"fan".
All of my functions in soundbar are controlled from Home app - turn on/of, change input but when i need change volume level I must to looking for IR remote :/

Adjusting the volume is missing on Apple Home

Is it possible to change the volume in Apple Home. I have installed it but it is only possible to select the input and turn the speaker on/off. But it is not possible to adjust the volume

The speaker tile (change volume) doesn't appear

Thanks for your musiccast plugin :)

I'm using it for a yamaha WXC-50, pre-amplifier. Hoping to use it to change input and volume.

Describe the bug
In the home app on ios:
The TV tile appears (switch input)
The speaker tile (change volume) doesn't appear

Both appear in the homebridge accessories page.

Expected behavior
Both tiles appear in the home app in ios

Additional context
Ios 13.5.1

Options for have incremental volume (fan speed)?

The plugin is working perfectly on my Yamaha WXA-50 with the ability to adjust input and volume (as fan speed).
I am not sure if this is the right place to ask but would there be any settings/shortcuts other than Nested Ifs to control the volume?
I have paired a Philips Hue remote that comes with On/Off/Brightness Up/Down and I'd like to use the brightness buttons as the volume control button.
Would you be able to shed some lights on it? thanks and appreciate your effort!

Device icon

Hi, thank you for your work, really great, I managed to add some Yamaha MultiCast devices, also WXAD-10 in Link with a HTR-4096, I only have one request, would it be possible to change the icon of the accessory? I have an iPhone XS Max with iOS 15.2.1 and it displays a house instead of a sound device, thanks.
IMG_E1A830E46AF4-1

Active to 0

Everything is working fine with the plugin in general - I even have two TV's, and both appear in the Remote with no issues.

But every now and then, either when opening up the Home App and as it updates the status of everything, or at random times, my Yamaha WXC-50 turns off. The logs show a message:

[6/6/2020, 17:51:11] [Living Room Yamaha] Active to 0

...but the button was never actually pressed.

Sometimes there two subsequent messages within 1-2 sec apart, without touching anything:

[6/6/2020, 18:01:42] [Living Room Yamaha] Active to 0
[6/6/2020, 18:01:44] [Living Room Yamaha] Active to 1

These doesn't seem to be turning off the device.

How to prevent this from happening? This happens so rarely, that I haven't used the debug mode yet - do let me know if you need me to.

TypeError: Cannot read property 'debug' of undefined after installing plugin

Hi. After installing the plugin, homebridge does not fully boot up. This is what is in the log:

TypeError: Cannot read property 'debug' of undefined
    at Request._callback (/homebridge/node_modules/homebridge-musiccast-tv/index.js:34:12)
    at Request.self.callback (/homebridge/node_modules/homebridge-musiccast-tv/node_modules/request/request.js:185:22)
    at Request.emit (events.js:314:20)
    at Request.<anonymous> (/homebridge/node_modules/homebridge-musiccast-tv/node_modules/request/request.js:1154:10)
    at Request.emit (events.js:314:20)
    at IncomingMessage.<anonymous> (/homebridge/node_modules/homebridge-musiccast-tv/node_modules/request/request.js:1076:12)
    at Object.onceWrapper (events.js:420:28)
    at IncomingMessage.emit (events.js:326:22)
    at endReadableNT (_stream_readable.js:1223:12)
    at processTicksAndRejections (internal/process/task_queues.js:84:21)

I've tried a few things but nothing works. This has happened for some time now. I recall months ago trying the plugin and the same thing happened. I end up uninstalling the plugin to get hombrdige working again.

I'd love to be able to use this plugin as I have a few of the original musiccast devices.

Thanks in advance.

Volume is set to half of requested level (0–100 scale)

Thank you for the great plugin!

My fan control runs on a 0–100% "speed" scale, but sets the volume on my TSR-700 to half the chosen level; e.g., if I choose 75% using the fan controller, my AVR will be set to a volume value of 37.5 on its displayed 0–100 scale.

There appears to be no way to set the AVR's volume above 50/100 using the fan controller.

I am not sure if this is related, but I also regularly get this notice in my homebridge logs:

[12/04/2021, 16:27:57] [homebridge-musiccast-tv] This plugin generated a warning from the characteristic 'Volume': characteristic was supplied illegal value: number 161 exceeded maximum of 100. See https://git.io/JtMGR for more info.

I have tried to set the maxVol to various values (e.g., 80, 100, 161) with no apparent effect on either the illegal value notice, or my ability to set volumes above 50.

In case useful, here's the (prettified json) I get at /YamahaExtendedControl/v1/system/getFeatures:

{
  "response_code": 0,
  "system": {
    "func_list": [
      "wired_lan",
      "wireless_lan",
      "network_standby",
      "network_standby_auto",
      "bluetooth_standby",
      "bluetooth_tx_setting",
      "bluetooth_tx_connectivity_type",
      "dfs_option",
      "headphone",
      "hdmi_out_1",
      "airplay",
      "disklavier_settings",
      "background_download",
      "remote_info",
      "network_reboot",
      "system_reboot",
      "ypao_volume",
      "party_mode",
      "party_volume",
      "party_mute",
      "name_text_avr",
      "hdmi_standby_through",
      "analytics"
    ],
    "zone_num": 2,
    "input_list": [
      {
        "id": "napster",
        "distribution_enable": true,
        "rename_enable": false,
        "account_enable": true,
        "play_info_type": "netusb"
      },
      {
        "id": "siriusxm",
        "distribution_enable": true,
        "rename_enable": false,
        "account_enable": true,
        "play_info_type": "netusb"
      },
      {
        "id": "pandora",
        "distribution_enable": true,
        "rename_enable": false,
        "account_enable": true,
        "play_info_type": "netusb"
      },
      {
        "id": "spotify",
        "distribution_enable": true,
        "rename_enable": false,
        "account_enable": false,
        "play_info_type": "netusb"
      },
      {
        "id": "qobuz",
        "distribution_enable": true,
        "rename_enable": false,
        "account_enable": true,
        "play_info_type": "netusb"
      },
      {
        "id": "tidal",
        "distribution_enable": true,
        "rename_enable": false,
        "account_enable": true,
        "play_info_type": "netusb"
      },
      {
        "id": "deezer",
        "distribution_enable": true,
        "rename_enable": false,
        "account_enable": true,
        "play_info_type": "netusb"
      },
      {
        "id": "amazon_music",
        "distribution_enable": true,
        "rename_enable": false,
        "account_enable": true,
        "play_info_type": "netusb"
      },
      {
        "id": "alexa",
        "distribution_enable": true,
        "rename_enable": false,
        "account_enable": false,
        "play_info_type": "netusb"
      },
      {
        "id": "airplay",
        "distribution_enable": false,
        "rename_enable": false,
        "account_enable": false,
        "play_info_type": "netusb"
      },
      {
        "id": "mc_link",
        "distribution_enable": false,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "netusb"
      },
      {
        "id": "server",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "netusb"
      },
      {
        "id": "net_radio",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "netusb"
      },
      {
        "id": "bluetooth",
        "distribution_enable": true,
        "rename_enable": false,
        "account_enable": false,
        "play_info_type": "netusb"
      },
      {
        "id": "usb",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "netusb"
      },
      {
        "id": "tuner",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "tuner"
      },
      {
        "id": "hdmi1",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "none"
      },
      {
        "id": "hdmi2",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "none"
      },
      {
        "id": "hdmi3",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "none"
      },
      {
        "id": "hdmi4",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "none"
      },
      {
        "id": "hdmi5",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "none"
      },
      {
        "id": "hdmi6",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "none"
      },
      {
        "id": "hdmi7",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "none"
      },
      {
        "id": "tv",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "none"
      },
      {
        "id": "audio1",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "none"
      },
      {
        "id": "audio2",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "none"
      },
      {
        "id": "audio3",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "none"
      },
      {
        "id": "audio4",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "none"
      },
      {
        "id": "audio5",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "none"
      },
      {
        "id": "phono",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "none"
      },
      {
        "id": "main_sync",
        "distribution_enable": true,
        "rename_enable": true,
        "account_enable": false,
        "play_info_type": "none"
      }
    ],
    "bluetooth": {
      "update_cancelable": true
    },
    "web_control_url": "/AdvancedSettings.html?mc=true",
    "party_volume_list": [
      "up",
      "down"
    ],
    "hdmi_standby_through_list": [
      "off",
      "on",
      "auto"
    ]
  },
  "zone": [
    {
      "id": "main",
      "func_list": [
        "power",
        "sleep",
        "volume",
        "mute",
        "sound_program",
        "pure_direct",
        "enhancer",
        "tone_control",
        "dialogue_level",
        "dialogue_lift",
        "subwoofer_volume",
        "signal_info",
        "prepare_input_change",
        "link_control",
        "link_audio_delay",
        "scene",
        "contents_display",
        "cursor",
        "menu",
        "actual_volume",
        "surr_decoder_type",
        "extra_bass",
        "adaptive_drc",
        "dts_dialogue_control",
        "adaptive_dsp_level"
      ],
      "input_list": [
        "napster",
        "siriusxm",
        "pandora",
        "spotify",
        "qobuz",
        "tidal",
        "deezer",
        "amazon_music",
        "alexa",
        "airplay",
        "mc_link",
        "server",
        "net_radio",
        "bluetooth",
        "usb",
        "tuner",
        "hdmi1",
        "hdmi2",
        "hdmi3",
        "hdmi4",
        "hdmi5",
        "hdmi6",
        "hdmi7",
        "tv",
        "audio1",
        "audio2",
        "audio3",
        "audio4",
        "audio5",
        "phono"
      ],
      "sound_program_list": [
        "munich",
        "vienna",
        "chamber",
        "cellar_club",
        "roxy_theatre",
        "bottom_line",
        "sports",
        "action_game",
        "roleplaying_game",
        "music_video",
        "standard",
        "spectacle",
        "sci-fi",
        "adventure",
        "drama",
        "mono_movie",
        "2ch_stereo",
        "all_ch_stereo",
        "surr_decoder",
        "straight"
      ],
      "surr_decoder_type_list": [
        "toggle",
        "auto",
        "dolby_surround",
        "dts_neural_x",
        "dts_neo6_cinema",
        "dts_neo6_music"
      ],
      "tone_control_mode_list": [
        "manual"
      ],
      "link_control_list": [
        "speed",
        "standard",
        "stability"
      ],
      "link_audio_delay_list": [
        "audio_sync",
        "balanced",
        "lip_sync"
      ],
      "range_step": [
        {
          "id": "volume",
          "min": 0,
          "max": 161,
          "step": 1
        },
        {
          "id": "tone_control",
          "min": -12,
          "max": 12,
          "step": 1
        },
        {
          "id": "dialogue_level",
          "min": 0,
          "max": 3,
          "step": 1
        },
        {
          "id": "dialogue_lift",
          "min": 0,
          "max": 5,
          "step": 1
        },
        {
          "id": "subwoofer_volume",
          "min": -12,
          "max": 12,
          "step": 1
        },
        {
          "id": "actual_volume_db",
          "min": -80.5,
          "max": 16.5,
          "step": 0.5
        },
        {
          "id": "actual_volume_numeric",
          "min": 0.0,
          "max": 97.0,
          "step": 0.5
        },
        {
          "id": "dts_dialogue_control",
          "min": 0,
          "max": 6,
          "step": 1
        }
      ],
      "scene_num": 8,
      "cursor_list": [
        "up",
        "down",
        "left",
        "right",
        "select",
        "return"
      ],
      "menu_list": [
        "on_screen",
        "top_menu",
        "menu",
        "option",
        "display",
        "help",
        "home",
        "mode",
        "red",
        "green",
        "yellow",
        "blue"
      ],
      "actual_volume_mode_list": [
        "db",
        "numeric"
      ],
      "ccs_supported": [
        "connected_speaker"
      ]
    },
    {
      "id": "zone2",
      "zone_b": false,
      "func_list": [
        "power",
        "sleep",
        "volume",
        "mute",
        "enhancer",
        "tone_control",
        "balance",
        "prepare_input_change",
        "link_control",
        "scene",
        "actual_volume",
        "extra_bass",
        "mono"
      ],
      "input_list": [
        "napster",
        "siriusxm",
        "pandora",
        "spotify",
        "qobuz",
        "tidal",
        "deezer",
        "amazon_music",
        "alexa",
        "airplay",
        "mc_link",
        "server",
        "net_radio",
        "bluetooth",
        "usb",
        "tuner",
        "audio1",
        "audio2",
        "audio3",
        "audio4",
        "audio5",
        "phono",
        "main_sync"
      ],
      "tone_control_mode_list": [
        "manual",
        "auto",
        "bypass"
      ],
      "link_control_list": [
        "speed",
        "standard",
        "stability"
      ],
      "range_step": [
        {
          "id": "volume",
          "min": 0,
          "max": 161,
          "step": 1
        },
        {
          "id": "tone_control",
          "min": -12,
          "max": 12,
          "step": 1
        },
        {
          "id": "balance",
          "min": -20,
          "max": 20,
          "step": 1
        },
        {
          "id": "actual_volume_db",
          "min": -80.5,
          "max": 10.0,
          "step": 0.5
        },
        {
          "id": "actual_volume_numeric",
          "min": 0.0,
          "max": 90.5,
          "step": 0.5
        }
      ],
      "scene_num": 8,
      "actual_volume_mode_list": [
        "db",
        "numeric"
      ]
    }
  ],
  "tuner": {
    "func_list": [
      "am",
      "fm"
    ],
    "range_step": [
      {
        "id": "am",
        "min": 530,
        "max": 1710,
        "step": 10
      },
      {
        "id": "fm",
        "min": 87500,
        "max": 107900,
        "step": 200
      }
    ],
    "preset": {
      "type": "common",
      "num": 40
    }
  },
  "netusb": {
    "func_list": [
      "recent_info",
      "play_queue",
      "mc_playlist",
      "streaming_service_use"
    ],
    "preset": {
      "num": 40
    },
    "recent_info": {
      "num": 40
    },
    "play_queue": {
      "size": 200
    },
    "mc_playlist": {
      "size": 200,
      "num": 5
    },
    "net_radio_type": "airable",
    "pandora": {
      "sort_option_list": [
        "recent",
        "alphabet"
      ]
    },
    "siriusxm": {
      "api_type": "everest"
    }
  },
  "distribution": {
    "version": 2.0,
    "compatible_client": [
      2
    ],
    "client_max": 19,
    "server_zone_list": [
      "main",
      "zone2"
    ],
    "mc_surround": {
      "version": 1.0,
      "func_list": [
        "mcss_error_info"
      ],
      "master_role": {
        "surround_pair": true,
        "stereo_pair": false,
        "subwoofer_pair": true
      },
      "slave_role": {
        "surround_pair_l_or_r": false,
        "surround_pair_lr": false,
        "subwoofer_pair": false
      }
    }
  },
  "ccs": {
    "supported": true
  }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.