mirror of
https://github.com/home-assistant/core.git
synced 2025-12-25 05:26:47 +00:00
Map Alexa StepVolume responses to volume_up/down (#12467)
It turns out I misunderstood which media_player services are available when a media player supports StepVolume. This PR maps the Alexa StepSpeaker messages to the volume_up and volume_down services. Currently Alexa allows you to specify the number of steps but the media player volume_up and volume_down services don't support this. For now I just look to see if the steps are +/- and call up/down accordingly.
This commit is contained in:
committed by
Phil Frost
parent
3fd61d8f45
commit
fab991bbf6
@@ -1178,20 +1178,24 @@ def async_api_adjust_volume(hass, config, request, entity):
|
||||
@asyncio.coroutine
|
||||
def async_api_adjust_volume_step(hass, config, request, entity):
|
||||
"""Process an adjust volume step request."""
|
||||
volume_step = round(float(request[API_PAYLOAD]['volumeSteps'] / 100), 2)
|
||||
|
||||
current_level = entity.attributes.get(media_player.ATTR_MEDIA_VOLUME_LEVEL)
|
||||
|
||||
volume = current_level + volume_step
|
||||
# media_player volume up/down service does not support specifying steps
|
||||
# each component handles it differently e.g. via config.
|
||||
# For now we use the volumeSteps returned to figure out if we
|
||||
# should step up/down
|
||||
volume_step = request[API_PAYLOAD]['volumeSteps']
|
||||
|
||||
data = {
|
||||
ATTR_ENTITY_ID: entity.entity_id,
|
||||
media_player.ATTR_MEDIA_VOLUME_LEVEL: volume,
|
||||
}
|
||||
|
||||
yield from hass.services.async_call(
|
||||
entity.domain, media_player.SERVICE_VOLUME_SET,
|
||||
data, blocking=False)
|
||||
if volume_step > 0:
|
||||
yield from hass.services.async_call(
|
||||
entity.domain, media_player.SERVICE_VOLUME_UP,
|
||||
data, blocking=False)
|
||||
elif volume_step < 0:
|
||||
yield from hass.services.async_call(
|
||||
entity.domain, media_player.SERVICE_VOLUME_DOWN,
|
||||
data, blocking=False)
|
||||
|
||||
return api_message(request)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user