ESPHome 2026.2.2
Loading...
Searching...
No Matches
media_player.cpp
Go to the documentation of this file.
1#include "media_player.h"
4#include "esphome/core/log.h"
6
7namespace esphome {
8namespace media_player {
9
10static const char *const TAG = "media_player";
11
13 switch (state) {
15 return "ON";
17 return "OFF";
19 return "IDLE";
21 return "PLAYING";
23 return "PAUSED";
25 return "ANNOUNCING";
27 return "NONE";
28 default:
29 return "UNKNOWN";
30 }
31}
32
34 switch (command) {
36 return "PLAY";
38 return "PAUSE";
40 return "STOP";
42 return "MUTE";
44 return "UNMUTE";
46 return "TOGGLE";
48 return "VOLUME_UP";
50 return "VOLUME_DOWN";
52 return "ENQUEUE";
54 return "REPEAT_ONE";
56 return "REPEAT_OFF";
58 return "CLEAR_PLAYLIST";
60 return "TURN_ON";
62 return "TURN_OFF";
63 default:
64 return "UNKNOWN";
65 }
66}
67
69 if (this->media_url_.has_value()) {
70 if (this->command_.has_value() && this->command_.value() != MEDIA_PLAYER_COMMAND_ENQUEUE) {
71 // Don't remove an enqueue command
72 ESP_LOGW(TAG, "MediaPlayerCall: Setting both command and media_url is not needed.");
73 this->command_.reset();
74 }
75 }
76 if (this->volume_.has_value()) {
77 if (this->volume_.value() < 0.0f || this->volume_.value() > 1.0f) {
78 ESP_LOGW(TAG, "MediaPlayerCall: Volume must be between 0.0 and 1.0.");
79 this->volume_.reset();
80 }
81 }
82}
83
85 ESP_LOGD(TAG, "'%s' - Setting", this->parent_->get_name().c_str());
86 this->validate_();
87 if (this->command_.has_value()) {
88 const char *command_s = media_player_command_to_string(this->command_.value());
89 ESP_LOGD(TAG, " Command: %s", command_s);
90 }
91 if (this->media_url_.has_value()) {
92 ESP_LOGD(TAG, " Media URL: %s", this->media_url_.value().c_str());
93 }
94 if (this->volume_.has_value()) {
95 ESP_LOGD(TAG, " Volume: %.2f", this->volume_.value());
96 }
97 if (this->announcement_.has_value()) {
98 ESP_LOGD(TAG, " Announcement: %s", this->announcement_.value() ? "yes" : "no");
99 }
100 this->parent_->control(*this);
101}
102
104 this->command_ = command;
105 return *this;
106}
108 this->command_ = command;
109 return *this;
110}
112 if (ESPHOME_strcasecmp_P(command, ESPHOME_PSTR("PLAY")) == 0) {
114 } else if (ESPHOME_strcasecmp_P(command, ESPHOME_PSTR("PAUSE")) == 0) {
116 } else if (ESPHOME_strcasecmp_P(command, ESPHOME_PSTR("STOP")) == 0) {
118 } else if (ESPHOME_strcasecmp_P(command, ESPHOME_PSTR("MUTE")) == 0) {
120 } else if (ESPHOME_strcasecmp_P(command, ESPHOME_PSTR("UNMUTE")) == 0) {
122 } else if (ESPHOME_strcasecmp_P(command, ESPHOME_PSTR("TOGGLE")) == 0) {
124 } else if (ESPHOME_strcasecmp_P(command, ESPHOME_PSTR("TURN_ON")) == 0) {
126 } else if (ESPHOME_strcasecmp_P(command, ESPHOME_PSTR("TURN_OFF")) == 0) {
128 } else {
129 ESP_LOGW(TAG, "'%s' - Unrecognized command %s", this->parent_->get_name().c_str(), command);
130 }
131 return *this;
132}
133
134MediaPlayerCall &MediaPlayerCall::set_media_url(const std::string &media_url) {
135 this->media_url_ = media_url;
136 return *this;
137}
138
140 this->volume_ = volume;
141 return *this;
142}
143
145 this->announcement_ = announce;
146 return *this;
147}
148
149void MediaPlayer::add_on_state_callback(std::function<void()> &&callback) {
150 this->state_callback_.add(std::move(callback));
151}
152
154 this->state_callback_.call();
155#if defined(USE_MEDIA_PLAYER) && defined(USE_CONTROLLER_REGISTRY)
157#endif
158}
159
160} // namespace media_player
161} // namespace esphome
static void notify_media_player_update(media_player::MediaPlayer *obj)
const StringRef & get_name() const
constexpr const char * c_str() const
Definition string_ref.h:73
MediaPlayerCall & set_media_url(const std::string &url)
MediaPlayerCall & set_volume(float volume)
MediaPlayerCall & set_command(const char *command)
MediaPlayerCall & set_announcement(bool announce)
MediaPlayerCall & set_command(MediaPlayerCommand command)
optional< MediaPlayerCommand > command_
virtual void control(const MediaPlayerCall &call)=0
LazyCallbackManager< void()> state_callback_
void add_on_state_callback(std::function< void()> &&callback)
bool has_value() const
Definition optional.h:92
value_type const & value() const
Definition optional.h:94
bool state
Definition fan.h:2
const char * media_player_command_to_string(MediaPlayerCommand command)
const char * media_player_state_to_string(MediaPlayerState state)
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7