ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
dfplayer.h
Go to the documentation of this file.
1#pragma once
2
6
7const size_t DFPLAYER_READ_BUFFER_LENGTH = 25; // two messages + some extra
8
9namespace esphome::dfplayer {
10
12 NORMAL = 0,
13 POP = 1,
14 ROCK = 2,
15 JAZZ = 3,
17 BASS = 5,
18};
19
20enum Device {
21 USB = 1,
23};
24
25// See the datasheet here:
26// https://github.com/DFRobot/DFRobotDFPlayerMini/blob/master/doc/FN-M16P%2BEmbedded%2BMP3%2BAudio%2BModule%2BDatasheet.pdf
27class DFPlayer final : public uart::UARTDevice, public Component {
28 public:
29 void loop() override;
30
31 void next();
32 void previous();
33 void play_mp3(uint16_t file);
34 void play_file(uint16_t file);
35 void play_file_loop(uint16_t file);
36 void play_file(uint16_t file, bool loop) { loop ? this->play_file_loop(file) : this->play_file(file); }
37 void play_folder(uint16_t folder, uint16_t file);
38 void play_folder_loop(uint16_t folder);
39 // The loop command plays the whole folder, so file is ignored when loop is set.
40 void play_folder(uint16_t folder, uint16_t file, bool loop) {
41 loop ? this->play_folder_loop(folder) : this->play_folder(folder, file);
42 }
43 void volume_up();
44 void volume_down();
45 void set_device(Device device);
46 void set_volume(uint8_t volume);
48 void sleep();
49 void reset();
50 void start();
51 void pause();
52 void stop();
53 void random();
54 void set_current_track_repeat(bool enable);
55
56 bool is_playing() { return is_playing_; }
57 void dump_config() override;
58
59 template<typename F> void add_on_finished_playback_callback(F &&callback) {
60 this->on_finished_playback_callback_.add(std::forward<F>(callback));
61 }
62
63 protected:
64 void send_cmd_(uint8_t cmd, uint16_t argument = 0);
65 void send_cmd_(uint8_t cmd, uint16_t high, uint16_t low) {
66 this->send_cmd_(cmd, ((high & 0xFF) << 8) | (low & 0xFF));
67 }
68 uint8_t sent_cmd_{0};
69
71 size_t read_pos_{0};
72
73 bool is_playing_{false};
76
78};
79
80} // namespace esphome::dfplayer
void dump_config() override
Definition dfplayer.cpp:286
CallbackManager< void()> on_finished_playback_callback_
Definition dfplayer.h:77
void send_cmd_(uint8_t cmd, uint16_t argument=0)
Definition dfplayer.cpp:125
void add_on_finished_playback_callback(F &&callback)
Definition dfplayer.h:59
void send_cmd_(uint8_t cmd, uint16_t high, uint16_t low)
Definition dfplayer.h:65
void set_volume(uint8_t volume)
Definition dfplayer.cpp:59
void play_folder(uint16_t folder, uint16_t file)
Definition dfplayer.cpp:112
void play_file_loop(uint16_t file)
Definition dfplayer.cpp:32
void set_device(Device device)
Definition dfplayer.cpp:54
void play_file(uint16_t file)
Definition dfplayer.cpp:26
void set_current_track_repeat(bool enable)
Definition dfplayer.cpp:105
void play_file(uint16_t file, bool loop)
Definition dfplayer.h:36
void set_eq(EqPreset preset)
Definition dfplayer.cpp:64
char read_buffer_[DFPLAYER_READ_BUFFER_LENGTH]
Definition dfplayer.h:70
void play_folder_loop(uint16_t folder)
Definition dfplayer.cpp:38
void play_folder(uint16_t folder, uint16_t file, bool loop)
Definition dfplayer.h:40
void play_mp3(uint16_t file)
Definition dfplayer.cpp:20
ClimatePreset preset
Definition climate.h:8
const size_t DFPLAYER_READ_BUFFER_LENGTH
Definition dfplayer.h:7