mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 19:27:45 +00:00
Add zone_ignore option for yamaha. (#4091)
* Add zone_ignore option for yamaha. We attempt to discover all zones for yamaha receivers. There are times when users may want to suppress some zones from showing up. When a Zone isn't actually connected to speakers, or on some newer receivers where Zone_4 is an HDMI only zone, that doesn't support even basic media_player UI. This provide a mechanism for users to do that. Fixes #4088 * Update yamaha.py
This commit is contained in:
parent
bf92aedd38
commit
9d836a115a
@ -26,6 +26,7 @@ SUPPORT_YAMAHA = SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \
|
|||||||
|
|
||||||
CONF_SOURCE_NAMES = 'source_names'
|
CONF_SOURCE_NAMES = 'source_names'
|
||||||
CONF_SOURCE_IGNORE = 'source_ignore'
|
CONF_SOURCE_IGNORE = 'source_ignore'
|
||||||
|
CONF_ZONE_IGNORE = 'zone_ignore'
|
||||||
|
|
||||||
DEFAULT_NAME = 'Yamaha Receiver'
|
DEFAULT_NAME = 'Yamaha Receiver'
|
||||||
|
|
||||||
@ -34,10 +35,13 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
|||||||
vol.Optional(CONF_HOST): cv.string,
|
vol.Optional(CONF_HOST): cv.string,
|
||||||
vol.Optional(CONF_SOURCE_IGNORE, default=[]):
|
vol.Optional(CONF_SOURCE_IGNORE, default=[]):
|
||||||
vol.All(cv.ensure_list, [cv.string]),
|
vol.All(cv.ensure_list, [cv.string]),
|
||||||
|
vol.Optional(CONF_ZONE_IGNORE, default=[]):
|
||||||
|
vol.All(cv.ensure_list, [cv.string]),
|
||||||
vol.Optional(CONF_SOURCE_NAMES, default={}): {cv.string: cv.string},
|
vol.Optional(CONF_SOURCE_NAMES, default={}): {cv.string: cv.string},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
# pylint: disable=too-many-locals
|
||||||
def setup_platform(hass, config, add_devices, discovery_info=None):
|
def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
"""Setup the Yamaha platform."""
|
"""Setup the Yamaha platform."""
|
||||||
import rxv
|
import rxv
|
||||||
@ -46,6 +50,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
host = config.get(CONF_HOST)
|
host = config.get(CONF_HOST)
|
||||||
source_ignore = config.get(CONF_SOURCE_IGNORE)
|
source_ignore = config.get(CONF_SOURCE_IGNORE)
|
||||||
source_names = config.get(CONF_SOURCE_NAMES)
|
source_names = config.get(CONF_SOURCE_NAMES)
|
||||||
|
zone_ignore = config.get(CONF_ZONE_IGNORE)
|
||||||
|
|
||||||
if discovery_info is not None:
|
if discovery_info is not None:
|
||||||
name = discovery_info[0]
|
name = discovery_info[0]
|
||||||
@ -66,9 +71,10 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
ctrl_url = "http://{}:80/YamahaRemoteControl/ctrl".format(host)
|
ctrl_url = "http://{}:80/YamahaRemoteControl/ctrl".format(host)
|
||||||
receivers = rxv.RXV(ctrl_url, name).zone_controllers()
|
receivers = rxv.RXV(ctrl_url, name).zone_controllers()
|
||||||
|
|
||||||
add_devices(
|
for receiver in receivers:
|
||||||
YamahaDevice(name, receiver, source_ignore, source_names)
|
if receiver.zone not in zone_ignore:
|
||||||
for receiver in receivers)
|
add_devices([
|
||||||
|
YamahaDevice(name, receiver, source_ignore, source_names)])
|
||||||
|
|
||||||
|
|
||||||
class YamahaDevice(MediaPlayerDevice):
|
class YamahaDevice(MediaPlayerDevice):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user