mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 09:17:53 +00:00
Add sound mode support (#14910)
* Add sound mode support * continuation line indent * indentation * indentation * Remove option to configure sound_mode_dict * Sound mode support - removed the sound_mode_raw propertie because it was not used, (still available through self._sound_mode_raw (as device attribute for automations and diagnostics) * Detect sound mode support from device Removed the config option to indicate if sound mode is supported. Added detection if sound mode is supported from the receiver itself. Pushed denonavr library to V.0.7.4 * Pushed denonavr to v.0.7.4
This commit is contained in:
parent
287b1bce15
commit
b9eb0081cd
@ -12,19 +12,19 @@ import voluptuous as vol
|
||||
from homeassistant.components.media_player import (
|
||||
SUPPORT_PAUSE, SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK,
|
||||
SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP,
|
||||
SUPPORT_SELECT_SOURCE, SUPPORT_PLAY_MEDIA, MEDIA_TYPE_CHANNEL,
|
||||
MediaPlayerDevice, PLATFORM_SCHEMA, SUPPORT_TURN_ON,
|
||||
MEDIA_TYPE_MUSIC, SUPPORT_VOLUME_SET, SUPPORT_PLAY)
|
||||
SUPPORT_SELECT_SOURCE, SUPPORT_SELECT_SOUND_MODE,
|
||||
SUPPORT_PLAY_MEDIA, MEDIA_TYPE_CHANNEL, MediaPlayerDevice,
|
||||
PLATFORM_SCHEMA, SUPPORT_TURN_ON, MEDIA_TYPE_MUSIC,
|
||||
SUPPORT_VOLUME_SET, SUPPORT_PLAY)
|
||||
from homeassistant.const import (
|
||||
CONF_HOST, STATE_OFF, STATE_PLAYING, STATE_PAUSED,
|
||||
CONF_NAME, STATE_ON, CONF_ZONE, CONF_TIMEOUT)
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
|
||||
REQUIREMENTS = ['denonavr==0.7.3']
|
||||
REQUIREMENTS = ['denonavr==0.7.4']
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
DEFAULT_NAME = None
|
||||
DEFAULT_SHOW_SOURCES = False
|
||||
DEFAULT_TIMEOUT = 2
|
||||
CONF_SHOW_ALL_SOURCES = 'show_all_sources'
|
||||
@ -33,6 +33,8 @@ CONF_VALID_ZONES = ['Zone2', 'Zone3']
|
||||
CONF_INVALID_ZONES_ERR = 'Invalid Zone (expected Zone2 or Zone3)'
|
||||
KEY_DENON_CACHE = 'denonavr_hosts'
|
||||
|
||||
ATTR_SOUND_MODE_RAW = 'sound_mode_raw'
|
||||
|
||||
SUPPORT_DENON = SUPPORT_VOLUME_STEP | SUPPORT_VOLUME_MUTE | \
|
||||
SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \
|
||||
SUPPORT_SELECT_SOURCE | SUPPORT_VOLUME_SET
|
||||
@ -146,6 +148,20 @@ class DenonDevice(MediaPlayerDevice):
|
||||
self._frequency = self._receiver.frequency
|
||||
self._station = self._receiver.station
|
||||
|
||||
self._sound_mode_support = self._receiver.support_sound_mode
|
||||
if self._sound_mode_support:
|
||||
self._sound_mode = self._receiver.sound_mode
|
||||
self._sound_mode_raw = self._receiver.sound_mode_raw
|
||||
self._sound_mode_list = self._receiver.sound_mode_list
|
||||
else:
|
||||
self._sound_mode = None
|
||||
self._sound_mode_raw = None
|
||||
self._sound_mode_list = None
|
||||
|
||||
self._supported_features_base = SUPPORT_DENON
|
||||
self._supported_features_base |= (self._sound_mode_support and
|
||||
SUPPORT_SELECT_SOUND_MODE)
|
||||
|
||||
def update(self):
|
||||
"""Get the latest status information from device."""
|
||||
self._receiver.update()
|
||||
@ -163,6 +179,9 @@ class DenonDevice(MediaPlayerDevice):
|
||||
self._band = self._receiver.band
|
||||
self._frequency = self._receiver.frequency
|
||||
self._station = self._receiver.station
|
||||
if self._sound_mode_support:
|
||||
self._sound_mode = self._receiver.sound_mode
|
||||
self._sound_mode_raw = self._receiver.sound_mode_raw
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
@ -196,12 +215,22 @@ class DenonDevice(MediaPlayerDevice):
|
||||
"""Return a list of available input sources."""
|
||||
return self._source_list
|
||||
|
||||
@property
|
||||
def sound_mode(self):
|
||||
"""Return the current matched sound mode."""
|
||||
return self._sound_mode
|
||||
|
||||
@property
|
||||
def sound_mode_list(self):
|
||||
"""Return a list of available sound modes."""
|
||||
return self._sound_mode_list
|
||||
|
||||
@property
|
||||
def supported_features(self):
|
||||
"""Flag media player features that are supported."""
|
||||
if self._current_source in self._receiver.netaudio_func_list:
|
||||
return SUPPORT_DENON | SUPPORT_MEDIA_MODES
|
||||
return SUPPORT_DENON
|
||||
return self._supported_features_base | SUPPORT_MEDIA_MODES
|
||||
return self._supported_features_base
|
||||
|
||||
@property
|
||||
def media_content_id(self):
|
||||
@ -275,6 +304,15 @@ class DenonDevice(MediaPlayerDevice):
|
||||
"""Episode of current playing media, TV show only."""
|
||||
return None
|
||||
|
||||
@property
|
||||
def device_state_attributes(self):
|
||||
"""Return device specific state attributes."""
|
||||
attributes = {}
|
||||
if (self._sound_mode_raw is not None and self._sound_mode_support and
|
||||
self._power == 'ON'):
|
||||
attributes[ATTR_SOUND_MODE_RAW] = self._sound_mode_raw
|
||||
return attributes
|
||||
|
||||
def media_play_pause(self):
|
||||
"""Simulate play pause media player."""
|
||||
return self._receiver.toggle_play_pause()
|
||||
@ -291,6 +329,10 @@ class DenonDevice(MediaPlayerDevice):
|
||||
"""Select input source."""
|
||||
return self._receiver.set_input_func(source)
|
||||
|
||||
def select_sound_mode(self, sound_mode):
|
||||
"""Select sound mode."""
|
||||
return self._receiver.set_sound_mode(sound_mode)
|
||||
|
||||
def turn_on(self):
|
||||
"""Turn on media player."""
|
||||
if self._receiver.power_on():
|
||||
|
@ -260,7 +260,7 @@ defusedxml==0.5.0
|
||||
deluge-client==1.4.0
|
||||
|
||||
# homeassistant.components.media_player.denonavr
|
||||
denonavr==0.7.3
|
||||
denonavr==0.7.4
|
||||
|
||||
# homeassistant.components.media_player.directv
|
||||
directpy==0.5
|
||||
|
Loading…
x
Reference in New Issue
Block a user