ESPHome
2026.3.0-dev
Loading...
Searching...
No Matches
esphome
components
media_player
media_player.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
esphome/core/entity_base.h
"
4
#include "
esphome/core/helpers.h
"
5
6
namespace
esphome
{
7
namespace
media_player {
8
9
enum
MediaPlayerEntityFeature
: uint32_t {
10
PAUSE
= 1 << 0,
11
SEEK
= 1 << 1,
12
VOLUME_SET
= 1 << 2,
13
VOLUME_MUTE
= 1 << 3,
14
PREVIOUS_TRACK
= 1 << 4,
15
NEXT_TRACK
= 1 << 5,
16
17
TURN_ON
= 1 << 7,
18
TURN_OFF
= 1 << 8,
19
PLAY_MEDIA
= 1 << 9,
20
VOLUME_STEP
= 1 << 10,
21
SELECT_SOURCE
= 1 << 11,
22
STOP
= 1 << 12,
23
CLEAR_PLAYLIST
= 1 << 13,
24
PLAY
= 1 << 14,
25
SHUFFLE_SET
= 1 << 15,
26
SELECT_SOUND_MODE
= 1 << 16,
27
BROWSE_MEDIA
= 1 << 17,
28
REPEAT_SET
= 1 << 18,
29
GROUPING
= 1 << 19,
30
MEDIA_ANNOUNCE
= 1 << 20,
31
MEDIA_ENQUEUE
= 1 << 21,
32
SEARCH_MEDIA
= 1 << 22,
33
};
34
35
enum
MediaPlayerState
: uint8_t {
36
MEDIA_PLAYER_STATE_NONE
= 0,
37
MEDIA_PLAYER_STATE_IDLE
= 1,
38
MEDIA_PLAYER_STATE_PLAYING
= 2,
39
MEDIA_PLAYER_STATE_PAUSED
= 3,
40
MEDIA_PLAYER_STATE_ANNOUNCING
= 4,
41
MEDIA_PLAYER_STATE_OFF
= 5,
42
MEDIA_PLAYER_STATE_ON
= 6,
43
};
44
const
char
*
media_player_state_to_string
(
MediaPlayerState
state
);
45
46
enum
MediaPlayerCommand
: uint8_t {
47
MEDIA_PLAYER_COMMAND_PLAY
= 0,
48
MEDIA_PLAYER_COMMAND_PAUSE
= 1,
49
MEDIA_PLAYER_COMMAND_STOP
= 2,
50
MEDIA_PLAYER_COMMAND_MUTE
= 3,
51
MEDIA_PLAYER_COMMAND_UNMUTE
= 4,
52
MEDIA_PLAYER_COMMAND_TOGGLE
= 5,
53
MEDIA_PLAYER_COMMAND_VOLUME_UP
= 6,
54
MEDIA_PLAYER_COMMAND_VOLUME_DOWN
= 7,
55
MEDIA_PLAYER_COMMAND_ENQUEUE
= 8,
56
MEDIA_PLAYER_COMMAND_REPEAT_ONE
= 9,
57
MEDIA_PLAYER_COMMAND_REPEAT_OFF
= 10,
58
MEDIA_PLAYER_COMMAND_CLEAR_PLAYLIST
= 11,
59
MEDIA_PLAYER_COMMAND_TURN_ON
= 12,
60
MEDIA_PLAYER_COMMAND_TURN_OFF
= 13,
61
MEDIA_PLAYER_COMMAND_NEXT
= 14,
62
MEDIA_PLAYER_COMMAND_PREVIOUS
= 15,
63
MEDIA_PLAYER_COMMAND_REPEAT_ALL
= 16,
64
MEDIA_PLAYER_COMMAND_SHUFFLE
= 17,
65
MEDIA_PLAYER_COMMAND_UNSHUFFLE
= 18,
66
MEDIA_PLAYER_COMMAND_GROUP_JOIN
= 19,
67
};
68
const
char
*
media_player_command_to_string
(
MediaPlayerCommand
command);
69
70
enum class
MediaPlayerFormatPurpose
: uint8_t {
71
PURPOSE_DEFAULT
= 0,
72
PURPOSE_ANNOUNCEMENT
= 1,
73
};
74
75
struct
MediaPlayerSupportedFormat
{
76
std::string
format
;
77
uint32_t
sample_rate
;
78
uint32_t
num_channels
;
79
MediaPlayerFormatPurpose
purpose
;
80
uint32_t
sample_bytes
;
81
};
82
83
// Base features always reported for all media players
84
static
constexpr
uint32_t BASE_MEDIA_PLAYER_FEATURES =
85
MediaPlayerEntityFeature::PLAY_MEDIA
|
MediaPlayerEntityFeature::BROWSE_MEDIA
|
MediaPlayerEntityFeature::STOP
|
86
MediaPlayerEntityFeature::VOLUME_SET
|
MediaPlayerEntityFeature::VOLUME_MUTE
|
87
MediaPlayerEntityFeature::MEDIA_ANNOUNCE
;
88
89
class
MediaPlayer
;
90
91
class
MediaPlayerTraits
{
92
public
:
93
MediaPlayerTraits
() =
default
;
94
95
uint32_t
get_feature_flags
()
const
{
return
this->
feature_flags_
; }
96
void
add_feature_flags
(uint32_t feature_flags) { this->
feature_flags_
|= feature_flags; }
97
void
clear_feature_flags
(uint32_t feature_flags) { this->
feature_flags_
&= ~feature_flags; }
98
// Returns true only if all specified flags are set
99
bool
has_feature_flags
(uint32_t feature_flags)
const
{
100
return
(this->
feature_flags_
& feature_flags) == feature_flags;
101
}
102
103
std::vector<MediaPlayerSupportedFormat> &
get_supported_formats
() {
return
this->
supported_formats_
; }
104
105
// Legacy setters/getters are kept for backward compatibility
106
void
set_supports_pause
(
bool
supports_pause);
107
bool
get_supports_pause
()
const
{
return
this->
has_feature_flags
(
MediaPlayerEntityFeature::PAUSE
); }
108
109
void
set_supports_turn_off_on
(
bool
supports_turn_off_on);
110
bool
get_supports_turn_off_on
()
const
{
111
return
this->
has_feature_flags
(
MediaPlayerEntityFeature::TURN_ON
|
MediaPlayerEntityFeature::TURN_OFF
);
112
}
113
114
protected
:
115
std::vector<MediaPlayerSupportedFormat>
supported_formats_
{};
116
uint32_t
feature_flags_
{BASE_MEDIA_PLAYER_FEATURES};
117
};
118
119
class
MediaPlayerCall
{
120
public
:
121
MediaPlayerCall
(
MediaPlayer
*parent) :
parent_
(parent) {}
122
123
MediaPlayerCall
&
set_command
(
MediaPlayerCommand
command);
124
MediaPlayerCall
&
set_command
(
optional<MediaPlayerCommand>
command);
125
MediaPlayerCall
&
set_command
(
const
char
*command);
126
MediaPlayerCall
&
set_command
(
const
std::string &command) {
return
this->
set_command
(command.c_str()); }
127
128
MediaPlayerCall
&
set_media_url
(
const
std::string &url);
129
130
MediaPlayerCall
&
set_volume
(
float
volume);
131
MediaPlayerCall
&
set_announcement
(
bool
announce);
132
133
void
perform
();
134
135
const
optional<MediaPlayerCommand>
&
get_command
()
const
{
return
this->
command_
; }
136
const
optional<std::string>
&
get_media_url
()
const
{
return
this->
media_url_
; }
137
const
optional<float>
&
get_volume
()
const
{
return
this->
volume_
; }
138
const
optional<bool>
&
get_announcement
()
const
{
return
this->
announcement_
; }
139
140
protected
:
141
void
validate_
();
142
MediaPlayer
*
const
parent_
;
143
optional<MediaPlayerCommand>
command_
;
144
optional<std::string>
media_url_
;
145
optional<float>
volume_
;
146
optional<bool>
announcement_
;
147
};
148
149
class
MediaPlayer
:
public
EntityBase
{
150
public
:
151
MediaPlayerState
state
{
MEDIA_PLAYER_STATE_NONE
};
152
float
volume
{1.0f};
153
154
MediaPlayerCall
make_call
() {
return
MediaPlayerCall
(
this
); }
155
156
void
publish_state
();
157
158
void
add_on_state_callback
(std::function<
void
()> &&callback);
159
160
virtual
bool
is_muted
()
const
{
return
false
; }
161
162
virtual
MediaPlayerTraits
get_traits
() = 0;
163
164
protected
:
165
friend
MediaPlayerCall
;
166
167
virtual
void
control
(
const
MediaPlayerCall
&call) = 0;
168
169
LazyCallbackManager
<void()>
state_callback_
{};
170
};
171
172
}
// namespace media_player
173
}
// namespace esphome
esphome::EntityBase
Definition
entity_base.h:40
esphome::LazyCallbackManager
Definition
helpers.h:1531
esphome::media_player::MediaPlayerCall
Definition
media_player.h:119
esphome::media_player::MediaPlayerCall::get_announcement
const optional< bool > & get_announcement() const
Definition
media_player.h:138
esphome::media_player::MediaPlayerCall::set_media_url
MediaPlayerCall & set_media_url(const std::string &url)
Definition
media_player.cpp:186
esphome::media_player::MediaPlayerCall::validate_
void validate_()
Definition
media_player.cpp:96
esphome::media_player::MediaPlayerCall::set_volume
MediaPlayerCall & set_volume(float volume)
Definition
media_player.cpp:191
esphome::media_player::MediaPlayerCall::get_media_url
const optional< std::string > & get_media_url() const
Definition
media_player.h:136
esphome::media_player::MediaPlayerCall::get_command
const optional< MediaPlayerCommand > & get_command() const
Definition
media_player.h:135
esphome::media_player::MediaPlayerCall::set_command
MediaPlayerCall & set_command(const std::string &command)
Definition
media_player.h:126
esphome::media_player::MediaPlayerCall::announcement_
optional< bool > announcement_
Definition
media_player.h:146
esphome::media_player::MediaPlayerCall::perform
void perform()
Definition
media_player.cpp:112
esphome::media_player::MediaPlayerCall::volume_
optional< float > volume_
Definition
media_player.h:145
esphome::media_player::MediaPlayerCall::get_volume
const optional< float > & get_volume() const
Definition
media_player.h:137
esphome::media_player::MediaPlayerCall::MediaPlayerCall
MediaPlayerCall(MediaPlayer *parent)
Definition
media_player.h:121
esphome::media_player::MediaPlayerCall::media_url_
optional< std::string > media_url_
Definition
media_player.h:144
esphome::media_player::MediaPlayerCall::parent_
MediaPlayer *const parent_
Definition
media_player.h:142
esphome::media_player::MediaPlayerCall::set_announcement
MediaPlayerCall & set_announcement(bool announce)
Definition
media_player.cpp:196
esphome::media_player::MediaPlayerCall::set_command
MediaPlayerCall & set_command(MediaPlayerCommand command)
Definition
media_player.cpp:131
esphome::media_player::MediaPlayerCall::command_
optional< MediaPlayerCommand > command_
Definition
media_player.h:143
esphome::media_player::MediaPlayer
Definition
media_player.h:149
esphome::media_player::MediaPlayer::control
virtual void control(const MediaPlayerCall &call)=0
esphome::media_player::MediaPlayer::state
MediaPlayerState state
Definition
media_player.h:151
esphome::media_player::MediaPlayer::MediaPlayerCall
friend MediaPlayerCall
Definition
media_player.h:165
esphome::media_player::MediaPlayer::state_callback_
LazyCallbackManager< void()> state_callback_
Definition
media_player.h:169
esphome::media_player::MediaPlayer::publish_state
void publish_state()
Definition
media_player.cpp:205
esphome::media_player::MediaPlayer::get_traits
virtual MediaPlayerTraits get_traits()=0
esphome::media_player::MediaPlayer::add_on_state_callback
void add_on_state_callback(std::function< void()> &&callback)
Definition
media_player.cpp:201
esphome::media_player::MediaPlayer::volume
float volume
Definition
media_player.h:152
esphome::media_player::MediaPlayer::make_call
MediaPlayerCall make_call()
Definition
media_player.h:154
esphome::media_player::MediaPlayer::is_muted
virtual bool is_muted() const
Definition
media_player.h:160
esphome::media_player::MediaPlayerTraits
Definition
media_player.h:91
esphome::media_player::MediaPlayerTraits::MediaPlayerTraits
MediaPlayerTraits()=default
esphome::media_player::MediaPlayerTraits::get_supports_pause
bool get_supports_pause() const
Definition
media_player.h:107
esphome::media_player::MediaPlayerTraits::supported_formats_
std::vector< MediaPlayerSupportedFormat > supported_formats_
Definition
media_player.h:115
esphome::media_player::MediaPlayerTraits::get_supports_turn_off_on
bool get_supports_turn_off_on() const
Definition
media_player.h:110
esphome::media_player::MediaPlayerTraits::set_supports_turn_off_on
void set_supports_turn_off_on(bool supports_turn_off_on)
Definition
media_player.cpp:88
esphome::media_player::MediaPlayerTraits::clear_feature_flags
void clear_feature_flags(uint32_t feature_flags)
Definition
media_player.h:97
esphome::media_player::MediaPlayerTraits::has_feature_flags
bool has_feature_flags(uint32_t feature_flags) const
Definition
media_player.h:99
esphome::media_player::MediaPlayerTraits::feature_flags_
uint32_t feature_flags_
Definition
media_player.h:116
esphome::media_player::MediaPlayerTraits::get_feature_flags
uint32_t get_feature_flags() const
Definition
media_player.h:95
esphome::media_player::MediaPlayerTraits::get_supported_formats
std::vector< MediaPlayerSupportedFormat > & get_supported_formats()
Definition
media_player.h:103
esphome::media_player::MediaPlayerTraits::set_supports_pause
void set_supports_pause(bool supports_pause)
Definition
media_player.cpp:80
esphome::media_player::MediaPlayerTraits::add_feature_flags
void add_feature_flags(uint32_t feature_flags)
Definition
media_player.h:96
esphome::optional
Definition
optional.h:36
entity_base.h
state
bool state
Definition
fan.h:2
helpers.h
esphome::media_player::MediaPlayerFormatPurpose
MediaPlayerFormatPurpose
Definition
media_player.h:70
esphome::media_player::MediaPlayerFormatPurpose::PURPOSE_ANNOUNCEMENT
@ PURPOSE_ANNOUNCEMENT
esphome::media_player::MediaPlayerFormatPurpose::PURPOSE_DEFAULT
@ PURPOSE_DEFAULT
esphome::media_player::MediaPlayerEntityFeature
MediaPlayerEntityFeature
Definition
media_player.h:9
esphome::media_player::VOLUME_STEP
@ VOLUME_STEP
Definition
media_player.h:20
esphome::media_player::PAUSE
@ PAUSE
Definition
media_player.h:10
esphome::media_player::MEDIA_ANNOUNCE
@ MEDIA_ANNOUNCE
Definition
media_player.h:30
esphome::media_player::BROWSE_MEDIA
@ BROWSE_MEDIA
Definition
media_player.h:27
esphome::media_player::MEDIA_ENQUEUE
@ MEDIA_ENQUEUE
Definition
media_player.h:31
esphome::media_player::GROUPING
@ GROUPING
Definition
media_player.h:29
esphome::media_player::VOLUME_SET
@ VOLUME_SET
Definition
media_player.h:12
esphome::media_player::STOP
@ STOP
Definition
media_player.h:22
esphome::media_player::PREVIOUS_TRACK
@ PREVIOUS_TRACK
Definition
media_player.h:14
esphome::media_player::SEARCH_MEDIA
@ SEARCH_MEDIA
Definition
media_player.h:32
esphome::media_player::TURN_ON
@ TURN_ON
Definition
media_player.h:17
esphome::media_player::SHUFFLE_SET
@ SHUFFLE_SET
Definition
media_player.h:25
esphome::media_player::NEXT_TRACK
@ NEXT_TRACK
Definition
media_player.h:15
esphome::media_player::SELECT_SOUND_MODE
@ SELECT_SOUND_MODE
Definition
media_player.h:26
esphome::media_player::CLEAR_PLAYLIST
@ CLEAR_PLAYLIST
Definition
media_player.h:23
esphome::media_player::TURN_OFF
@ TURN_OFF
Definition
media_player.h:18
esphome::media_player::SELECT_SOURCE
@ SELECT_SOURCE
Definition
media_player.h:21
esphome::media_player::PLAY
@ PLAY
Definition
media_player.h:24
esphome::media_player::PLAY_MEDIA
@ PLAY_MEDIA
Definition
media_player.h:19
esphome::media_player::VOLUME_MUTE
@ VOLUME_MUTE
Definition
media_player.h:13
esphome::media_player::REPEAT_SET
@ REPEAT_SET
Definition
media_player.h:28
esphome::media_player::SEEK
@ SEEK
Definition
media_player.h:11
esphome::media_player::media_player_command_to_string
const char * media_player_command_to_string(MediaPlayerCommand command)
Definition
media_player.cpp:33
esphome::media_player::media_player_state_to_string
const char * media_player_state_to_string(MediaPlayerState state)
Definition
media_player.cpp:12
esphome::media_player::MediaPlayerState
MediaPlayerState
Definition
media_player.h:35
esphome::media_player::MEDIA_PLAYER_STATE_ON
@ MEDIA_PLAYER_STATE_ON
Definition
media_player.h:42
esphome::media_player::MEDIA_PLAYER_STATE_IDLE
@ MEDIA_PLAYER_STATE_IDLE
Definition
media_player.h:37
esphome::media_player::MEDIA_PLAYER_STATE_PLAYING
@ MEDIA_PLAYER_STATE_PLAYING
Definition
media_player.h:38
esphome::media_player::MEDIA_PLAYER_STATE_OFF
@ MEDIA_PLAYER_STATE_OFF
Definition
media_player.h:41
esphome::media_player::MEDIA_PLAYER_STATE_PAUSED
@ MEDIA_PLAYER_STATE_PAUSED
Definition
media_player.h:39
esphome::media_player::MEDIA_PLAYER_STATE_NONE
@ MEDIA_PLAYER_STATE_NONE
Definition
media_player.h:36
esphome::media_player::MEDIA_PLAYER_STATE_ANNOUNCING
@ MEDIA_PLAYER_STATE_ANNOUNCING
Definition
media_player.h:40
esphome::media_player::MediaPlayerCommand
MediaPlayerCommand
Definition
media_player.h:46
esphome::media_player::MEDIA_PLAYER_COMMAND_PAUSE
@ MEDIA_PLAYER_COMMAND_PAUSE
Definition
media_player.h:48
esphome::media_player::MEDIA_PLAYER_COMMAND_SHUFFLE
@ MEDIA_PLAYER_COMMAND_SHUFFLE
Definition
media_player.h:64
esphome::media_player::MEDIA_PLAYER_COMMAND_PREVIOUS
@ MEDIA_PLAYER_COMMAND_PREVIOUS
Definition
media_player.h:62
esphome::media_player::MEDIA_PLAYER_COMMAND_ENQUEUE
@ MEDIA_PLAYER_COMMAND_ENQUEUE
Definition
media_player.h:55
esphome::media_player::MEDIA_PLAYER_COMMAND_CLEAR_PLAYLIST
@ MEDIA_PLAYER_COMMAND_CLEAR_PLAYLIST
Definition
media_player.h:58
esphome::media_player::MEDIA_PLAYER_COMMAND_PLAY
@ MEDIA_PLAYER_COMMAND_PLAY
Definition
media_player.h:47
esphome::media_player::MEDIA_PLAYER_COMMAND_STOP
@ MEDIA_PLAYER_COMMAND_STOP
Definition
media_player.h:49
esphome::media_player::MEDIA_PLAYER_COMMAND_TOGGLE
@ MEDIA_PLAYER_COMMAND_TOGGLE
Definition
media_player.h:52
esphome::media_player::MEDIA_PLAYER_COMMAND_GROUP_JOIN
@ MEDIA_PLAYER_COMMAND_GROUP_JOIN
Definition
media_player.h:66
esphome::media_player::MEDIA_PLAYER_COMMAND_REPEAT_ALL
@ MEDIA_PLAYER_COMMAND_REPEAT_ALL
Definition
media_player.h:63
esphome::media_player::MEDIA_PLAYER_COMMAND_VOLUME_UP
@ MEDIA_PLAYER_COMMAND_VOLUME_UP
Definition
media_player.h:53
esphome::media_player::MEDIA_PLAYER_COMMAND_VOLUME_DOWN
@ MEDIA_PLAYER_COMMAND_VOLUME_DOWN
Definition
media_player.h:54
esphome::media_player::MEDIA_PLAYER_COMMAND_TURN_OFF
@ MEDIA_PLAYER_COMMAND_TURN_OFF
Definition
media_player.h:60
esphome::media_player::MEDIA_PLAYER_COMMAND_REPEAT_OFF
@ MEDIA_PLAYER_COMMAND_REPEAT_OFF
Definition
media_player.h:57
esphome::media_player::MEDIA_PLAYER_COMMAND_UNSHUFFLE
@ MEDIA_PLAYER_COMMAND_UNSHUFFLE
Definition
media_player.h:65
esphome::media_player::MEDIA_PLAYER_COMMAND_MUTE
@ MEDIA_PLAYER_COMMAND_MUTE
Definition
media_player.h:50
esphome::media_player::MEDIA_PLAYER_COMMAND_UNMUTE
@ MEDIA_PLAYER_COMMAND_UNMUTE
Definition
media_player.h:51
esphome::media_player::MEDIA_PLAYER_COMMAND_REPEAT_ONE
@ MEDIA_PLAYER_COMMAND_REPEAT_ONE
Definition
media_player.h:56
esphome::media_player::MEDIA_PLAYER_COMMAND_TURN_ON
@ MEDIA_PLAYER_COMMAND_TURN_ON
Definition
media_player.h:59
esphome::media_player::MEDIA_PLAYER_COMMAND_NEXT
@ MEDIA_PLAYER_COMMAND_NEXT
Definition
media_player.h:61
esphome
Providing packet encoding functions for exchanging data with a remote host.
Definition
a01nyub.cpp:7
esphome::media_player::MediaPlayerSupportedFormat
Definition
media_player.h:75
esphome::media_player::MediaPlayerSupportedFormat::num_channels
uint32_t num_channels
Definition
media_player.h:78
esphome::media_player::MediaPlayerSupportedFormat::sample_rate
uint32_t sample_rate
Definition
media_player.h:77
esphome::media_player::MediaPlayerSupportedFormat::format
std::string format
Definition
media_player.h:76
esphome::media_player::MediaPlayerSupportedFormat::purpose
MediaPlayerFormatPurpose purpose
Definition
media_player.h:79
esphome::media_player::MediaPlayerSupportedFormat::sample_bytes
uint32_t sample_bytes
Definition
media_player.h:80
Generated by
1.12.0