Send MEDIA_ANNOUNCE flag to ESPHome media_player (#116993)

This commit is contained in:
Mischa Siekmann 2024-05-22 23:47:34 +02:00 committed by GitHub
parent eb76386c68
commit ad69a23fda
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 8 additions and 4 deletions

View file

@ -14,6 +14,7 @@ from aioesphomeapi import (
from homeassistant.components import media_source from homeassistant.components import media_source
from homeassistant.components.media_player import ( from homeassistant.components.media_player import (
ATTR_MEDIA_ANNOUNCE,
BrowseMedia, BrowseMedia,
MediaPlayerDeviceClass, MediaPlayerDeviceClass,
MediaPlayerEntity, MediaPlayerEntity,
@ -77,6 +78,7 @@ class EsphomeMediaPlayer(
| MediaPlayerEntityFeature.STOP | MediaPlayerEntityFeature.STOP
| MediaPlayerEntityFeature.VOLUME_SET | MediaPlayerEntityFeature.VOLUME_SET
| MediaPlayerEntityFeature.VOLUME_MUTE | MediaPlayerEntityFeature.VOLUME_MUTE
| MediaPlayerEntityFeature.MEDIA_ANNOUNCE
) )
if self._static_info.supports_pause: if self._static_info.supports_pause:
flags |= MediaPlayerEntityFeature.PAUSE | MediaPlayerEntityFeature.PLAY flags |= MediaPlayerEntityFeature.PAUSE | MediaPlayerEntityFeature.PLAY
@ -112,10 +114,10 @@ class EsphomeMediaPlayer(
media_id = sourced_media.url media_id = sourced_media.url
media_id = async_process_play_media_url(self.hass, media_id) media_id = async_process_play_media_url(self.hass, media_id)
announcement = kwargs.get(ATTR_MEDIA_ANNOUNCE)
self._client.media_player_command( self._client.media_player_command(
self._key, self._key, media_url=media_id, announcement=announcement
media_url=media_id,
) )
async def async_browse_media( async def async_browse_media(

View file

@ -13,6 +13,7 @@ import pytest
from homeassistant.components import media_source from homeassistant.components import media_source
from homeassistant.components.media_player import ( from homeassistant.components.media_player import (
ATTR_MEDIA_ANNOUNCE,
ATTR_MEDIA_CONTENT_ID, ATTR_MEDIA_CONTENT_ID,
ATTR_MEDIA_CONTENT_TYPE, ATTR_MEDIA_CONTENT_TYPE,
ATTR_MEDIA_VOLUME_LEVEL, ATTR_MEDIA_VOLUME_LEVEL,
@ -247,7 +248,7 @@ async def test_media_player_entity_with_source(
) )
mock_client.media_player_command.assert_has_calls( mock_client.media_player_command.assert_has_calls(
[call(1, media_url="http://www.example.com/xy.mp3")] [call(1, media_url="http://www.example.com/xy.mp3", announcement=None)]
) )
client = await hass_ws_client() client = await hass_ws_client()
@ -268,10 +269,11 @@ async def test_media_player_entity_with_source(
ATTR_ENTITY_ID: "media_player.test_mymedia_player", ATTR_ENTITY_ID: "media_player.test_mymedia_player",
ATTR_MEDIA_CONTENT_TYPE: MediaType.URL, ATTR_MEDIA_CONTENT_TYPE: MediaType.URL,
ATTR_MEDIA_CONTENT_ID: "media-source://tts?message=hello", ATTR_MEDIA_CONTENT_ID: "media-source://tts?message=hello",
ATTR_MEDIA_ANNOUNCE: True,
}, },
blocking=True, blocking=True,
) )
mock_client.media_player_command.assert_has_calls( mock_client.media_player_command.assert_has_calls(
[call(1, media_url="media-source://tts?message=hello")] [call(1, media_url="media-source://tts?message=hello", announcement=True)]
) )