Media Player Components
The media_player
domain includes all platforms that implement media player
functionality.
Note
ESPHome media players require Home Assistant 2022.6 or newer.Base Media Player Configuration

media_player:
- platform: ...
name: "Media Player Name"
Configuration variables:
- id (Optional, string): Manually specify the ID for code generation. At least one of id and name must be specified.
- name (Optional, string): The name of the media player. At least one of id and name must be specified.
Note
If you have a friendly_name set for your device and you want the media player to use that name, you can setname: None
.- icon (Optional, icon): Manually set the icon to use for the media player in the frontend.
- internal (Optional, boolean): Mark this component as internal. Internal components will
not be exposed to the frontend (like Home Assistant). Only specifying an
id
without aname
will implicitly set this to true. - disabled_by_default (Optional, boolean): If true, then this entity should not be added to any client’s frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Defaults to
false
. - entity_category (Optional, string): The category of the entity.
See https://developers.home-assistant.io/docs/core/entity/#generic-properties
for a list of available options. Set to
""
to remove the default entity category.
Media Player Actions

All media_player
actions can be used without specifying an id
if you have only one media_player
in
your configuration YAML.
Configuration variables:
id (Optional, ID): The media player to control. Defaults to the only one in YAML.
media_player.play
Action

This action will resume playing the media player.
media_player.play_media
Action

This action will start playing the specified media.
on_...:
# Simple
- media_player.play_media: 'http://media-url/media.mp3'
# Full
- media_player.play_media:
id: media_player_id
media_url: 'http://media-url/media.mp3'
# Simple with lambda
- media_player.play_media: !lambda 'return "http://media-url/media.mp3";'
Configuration variables:
media_url (Required, string): The media url to play.
media_player.pause
Action

This action pauses the current playback.
media_player.stop
Action

This action stops the current playback.
Configuration variables:
announcement (Optional, boolean): Whether to target announcements or regular media files, if supported by the media player. Defaults to false
.
media_player.toggle
Action

This action will pause or resume the current playback.
media_player.volume_up
Action

This action will increase the volume of the media player.
media_player.volume_down
Action

This action will decrease the volume of the media player.
media_player.volume_set
Action

This action will set the volume of the media player.
on_...:
# Simple
- media_player.volume_set: 50%
# Full
- media_player.volume_set:
id: media_player_id
volume: 50%
# Simple with lambda
- media_player.volume_set: !lambda "return 0.5;"
Configuration variables:
volume (Required, percentage): The volume to set the media player to.
media_player.on_state
Trigger

This trigger is activated each time the state of the media player is updated (for example, if the player is stop playing audio or received some command).
media_player:
- platform: i2s_audio # or any other platform
# ...
on_state:
- logger.log: "State updated!"
media_player.on_play
Trigger

This trigger is activated each time then the media player is started playing.
media_player:
- platform: i2s_audio # or any other platform
# ...
on_play:
- logger.log: "Playback started!"
media_player.on_pause
Trigger

This trigger is activated every time the media player pauses playback.
media_player:
- platform: i2s_audio # or any other platform
# ...
on_pause:
- logger.log: "Playback paused!"
media_player.on_idle
Trigger

This trigger is activated every time the media player finishes playing.
media_player:
- platform: i2s_audio # or any other platform
# ...
on_idle:
- logger.log: "Playback finished!"
media_player.on_announcement
Trigger

This trigger is activated every time the media player plays an announcement.
media_player:
- platform: i2s_audio # or any other platform
# ...
on_announcement:
- logger.log: "Announcing!"
media_player.is_idle
Condition

This condition checks if the media player is idle.
# In some trigger:
on_...:
if:
condition:
media_player.is_idle:
media_player.is_playing
Condition

This condition checks if the media player is playing media.
# In some trigger:
on_...:
if:
condition:
media_player.is_playing:
media_player.is_paused
Condition

This condition checks if the media player is paused.
# In some trigger:
on_...:
if:
condition:
media_player.is_paused:
media_player.is_announcing
Condition

This condition checks if the media player is playing an announcement.
# In some trigger:
on_...:
if:
condition:
media_player.is_announcing:
Play media in order

You can use wait automation to play files one after the other:
# In some trigger:
on_...:
then:
- media_player.play_media: 'http://media-url/one.mp3'
- wait_until:
media_player.is_idle:
- media_player.play_media: 'http://media-url/two.mp3'