mirror of
https://github.com/home-assistant/core.git
synced 2025-07-24 13:47:35 +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 (
|
from homeassistant.components.media_player import (
|
||||||
SUPPORT_PAUSE, SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK,
|
SUPPORT_PAUSE, SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK,
|
||||||
SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP,
|
SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP,
|
||||||
SUPPORT_SELECT_SOURCE, SUPPORT_PLAY_MEDIA, MEDIA_TYPE_CHANNEL,
|
SUPPORT_SELECT_SOURCE, SUPPORT_SELECT_SOUND_MODE,
|
||||||
MediaPlayerDevice, PLATFORM_SCHEMA, SUPPORT_TURN_ON,
|
SUPPORT_PLAY_MEDIA, MEDIA_TYPE_CHANNEL, MediaPlayerDevice,
|
||||||
MEDIA_TYPE_MUSIC, SUPPORT_VOLUME_SET, SUPPORT_PLAY)
|
PLATFORM_SCHEMA, SUPPORT_TURN_ON, MEDIA_TYPE_MUSIC,
|
||||||
|
SUPPORT_VOLUME_SET, SUPPORT_PLAY)
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_HOST, STATE_OFF, STATE_PLAYING, STATE_PAUSED,
|
CONF_HOST, STATE_OFF, STATE_PLAYING, STATE_PAUSED,
|
||||||
CONF_NAME, STATE_ON, CONF_ZONE, CONF_TIMEOUT)
|
CONF_NAME, STATE_ON, CONF_ZONE, CONF_TIMEOUT)
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
REQUIREMENTS = ['denonavr==0.7.3']
|
REQUIREMENTS = ['denonavr==0.7.4']
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
DEFAULT_NAME = None
|
|
||||||
DEFAULT_SHOW_SOURCES = False
|
DEFAULT_SHOW_SOURCES = False
|
||||||
DEFAULT_TIMEOUT = 2
|
DEFAULT_TIMEOUT = 2
|
||||||
CONF_SHOW_ALL_SOURCES = 'show_all_sources'
|
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)'
|
CONF_INVALID_ZONES_ERR = 'Invalid Zone (expected Zone2 or Zone3)'
|
||||||
KEY_DENON_CACHE = 'denonavr_hosts'
|
KEY_DENON_CACHE = 'denonavr_hosts'
|
||||||
|
|
||||||
|
ATTR_SOUND_MODE_RAW = 'sound_mode_raw'
|
||||||
|
|
||||||
SUPPORT_DENON = SUPPORT_VOLUME_STEP | SUPPORT_VOLUME_MUTE | \
|
SUPPORT_DENON = SUPPORT_VOLUME_STEP | SUPPORT_VOLUME_MUTE | \
|
||||||
SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \
|
SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \
|
||||||
SUPPORT_SELECT_SOURCE | SUPPORT_VOLUME_SET
|
SUPPORT_SELECT_SOURCE | SUPPORT_VOLUME_SET
|
||||||
@ -146,6 +148,20 @@ class DenonDevice(MediaPlayerDevice):
|
|||||||
self._frequency = self._receiver.frequency
|
self._frequency = self._receiver.frequency
|
||||||
self._station = self._receiver.station
|
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):
|
def update(self):
|
||||||
"""Get the latest status information from device."""
|
"""Get the latest status information from device."""
|
||||||
self._receiver.update()
|
self._receiver.update()
|
||||||
@ -163,6 +179,9 @@ class DenonDevice(MediaPlayerDevice):
|
|||||||
self._band = self._receiver.band
|
self._band = self._receiver.band
|
||||||
self._frequency = self._receiver.frequency
|
self._frequency = self._receiver.frequency
|
||||||
self._station = self._receiver.station
|
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
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
@ -196,12 +215,22 @@ class DenonDevice(MediaPlayerDevice):
|
|||||||
"""Return a list of available input sources."""
|
"""Return a list of available input sources."""
|
||||||
return self._source_list
|
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
|
@property
|
||||||
def supported_features(self):
|
def supported_features(self):
|
||||||
"""Flag media player features that are supported."""
|
"""Flag media player features that are supported."""
|
||||||
if self._current_source in self._receiver.netaudio_func_list:
|
if self._current_source in self._receiver.netaudio_func_list:
|
||||||
return SUPPORT_DENON | SUPPORT_MEDIA_MODES
|
return self._supported_features_base | SUPPORT_MEDIA_MODES
|
||||||
return SUPPORT_DENON
|
return self._supported_features_base
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def media_content_id(self):
|
def media_content_id(self):
|
||||||
@ -275,6 +304,15 @@ class DenonDevice(MediaPlayerDevice):
|
|||||||
"""Episode of current playing media, TV show only."""
|
"""Episode of current playing media, TV show only."""
|
||||||
return None
|
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):
|
def media_play_pause(self):
|
||||||
"""Simulate play pause media player."""
|
"""Simulate play pause media player."""
|
||||||
return self._receiver.toggle_play_pause()
|
return self._receiver.toggle_play_pause()
|
||||||
@ -291,6 +329,10 @@ class DenonDevice(MediaPlayerDevice):
|
|||||||
"""Select input source."""
|
"""Select input source."""
|
||||||
return self._receiver.set_input_func(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):
|
def turn_on(self):
|
||||||
"""Turn on media player."""
|
"""Turn on media player."""
|
||||||
if self._receiver.power_on():
|
if self._receiver.power_on():
|
||||||
|
@ -260,7 +260,7 @@ defusedxml==0.5.0
|
|||||||
deluge-client==1.4.0
|
deluge-client==1.4.0
|
||||||
|
|
||||||
# homeassistant.components.media_player.denonavr
|
# homeassistant.components.media_player.denonavr
|
||||||
denonavr==0.7.3
|
denonavr==0.7.4
|
||||||
|
|
||||||
# homeassistant.components.media_player.directv
|
# homeassistant.components.media_player.directv
|
||||||
directpy==0.5
|
directpy==0.5
|
||||||
|
Loading…
x
Reference in New Issue
Block a user