mirror of
https://github.com/home-assistant/core.git
synced 2025-07-24 05:37:44 +00:00
This commit is contained in:
parent
bb0068908d
commit
e3fba79126
@ -32,6 +32,9 @@ SUPPORT_ONKYO = SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \
|
|||||||
SUPPORT_VOLUME_STEP | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \
|
SUPPORT_VOLUME_STEP | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \
|
||||||
SUPPORT_SELECT_SOURCE | SUPPORT_PLAY
|
SUPPORT_SELECT_SOURCE | SUPPORT_PLAY
|
||||||
|
|
||||||
|
SUPPORT_ONKYO_WO_VOLUME = SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \
|
||||||
|
SUPPORT_SELECT_SOURCE | SUPPORT_PLAY
|
||||||
|
|
||||||
KNOWN_HOSTS = [] # type: List[str]
|
KNOWN_HOSTS = [] # type: List[str]
|
||||||
DEFAULT_SOURCES = {'tv': 'TV', 'bd': 'Bluray', 'game': 'Game', 'aux1': 'Aux1',
|
DEFAULT_SOURCES = {'tv': 'TV', 'bd': 'Bluray', 'game': 'Game', 'aux1': 'Aux1',
|
||||||
'video1': 'Video 1', 'video2': 'Video 2',
|
'video1': 'Video 1', 'video2': 'Video 2',
|
||||||
@ -270,7 +273,8 @@ class OnkyoDeviceZone(OnkyoDevice):
|
|||||||
def __init__(self, zone, receiver, sources, name=None):
|
def __init__(self, zone, receiver, sources, name=None):
|
||||||
"""Initialize the Zone with the zone identifier."""
|
"""Initialize the Zone with the zone identifier."""
|
||||||
self._zone = zone
|
self._zone = zone
|
||||||
super().__init__(receiver, sources, name)
|
self._supports_volume = True
|
||||||
|
super(OnkyoDeviceZone, self).__init__(receiver, sources, name)
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Get the latest state from the device."""
|
"""Get the latest state from the device."""
|
||||||
@ -289,9 +293,18 @@ class OnkyoDeviceZone(OnkyoDevice):
|
|||||||
current_source_raw = self.command(
|
current_source_raw = self.command(
|
||||||
'zone{}.selector=query'.format(self._zone))
|
'zone{}.selector=query'.format(self._zone))
|
||||||
|
|
||||||
|
# If we received a source value, but not a volume value
|
||||||
|
# it's likely this zone permanently does not support volume.
|
||||||
|
if current_source_raw and not volume_raw:
|
||||||
|
self._supports_volume = False
|
||||||
|
|
||||||
if not (volume_raw and mute_raw and current_source_raw):
|
if not (volume_raw and mute_raw and current_source_raw):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# It's possible for some players to have zones set to HDMI with
|
||||||
|
# no sound control. In this case, the string `N/A` is returned.
|
||||||
|
self._supports_volume = isinstance(volume_raw[1], (float, int))
|
||||||
|
|
||||||
# eiscp can return string or tuple. Make everything tuples.
|
# eiscp can return string or tuple. Make everything tuples.
|
||||||
if isinstance(current_source_raw[1], str):
|
if isinstance(current_source_raw[1], str):
|
||||||
current_source_tuples = \
|
current_source_tuples = \
|
||||||
@ -307,7 +320,16 @@ class OnkyoDeviceZone(OnkyoDevice):
|
|||||||
self._current_source = '_'.join(
|
self._current_source = '_'.join(
|
||||||
[i for i in current_source_tuples[1]])
|
[i for i in current_source_tuples[1]])
|
||||||
self._muted = bool(mute_raw[1] == 'on')
|
self._muted = bool(mute_raw[1] == 'on')
|
||||||
self._volume = volume_raw[1] / 80.0
|
|
||||||
|
if self._supports_volume:
|
||||||
|
self._volume = volume_raw[1] / 80.0
|
||||||
|
|
||||||
|
@property
|
||||||
|
def supported_features(self):
|
||||||
|
"""Return media player features that are supported."""
|
||||||
|
if self._supports_volume:
|
||||||
|
return SUPPORT_ONKYO
|
||||||
|
return SUPPORT_ONKYO_WO_VOLUME
|
||||||
|
|
||||||
def turn_off(self):
|
def turn_off(self):
|
||||||
"""Turn the media player off."""
|
"""Turn the media player off."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user