Media Player Components¶
media_player domain includes all platforms that implement media player
ESPHome media players require Home Assistant 2022.6 or newer.
Base Media Player Configuration¶
media_player: - platform: ... name: "Media Player Name"
name (Required, string): The name of the media player.
If you have a friendly_name set for your device and you want the media player to use that name, you can set
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
namewill 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
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¶
media_player actions can be used without specifying an
id if you have only one
your configuration YAML.
id (Optional, ID): The media player to control. Defaults to the only one in YAML.
This action will resume playing the media player.
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";'
media_url (Required, string): The media url to play.
This action pauses the current playback.
This action stops the current playback.
This action will pause or resume the current playback.
This action will increase the volume of the media player.
This action will decrease the volume of the media player.
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;"
volume (Required, percentage): The volume to set the media player to.
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!"
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!"
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!"
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!"
This condition checks if the media player is idle.
# In some trigger: on_...: if: condition: media_player.is_idle:
This condition checks if the media player is playing media.
# In some trigger: on_...: if: condition: media_player.is_playing:
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'