I am using a D1 Mini with a DFPlayer Mini for audio announcements. This is my ESP Home setup:
esphome:
name: d1-mini-speaker
esp8266:
board: d1_mini
# Enable logging
logger:
ota:
password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
wifi:
networks:
- ssid: !secret wifi
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "D1-Mini-Speaker Fallback Hotspot"
password: "xxxxxxxxxxxx"
captive_portal:
uart:
tx_pin: GPIO1
rx_pin: GPIO3
baud_rate: 9600
dfplayer:
on_finished_playback:
then:
logger.log: 'Playback finished event'
api:
services:
- service: dfplayer_next
then:
- dfplayer.play_next:
- service: dfplayer_previous
then:
- dfplayer.play_previous:
- service: dfplayer_play
variables:
file: int
then:
- dfplayer.play: !lambda 'return file;'
- service: dfplayer_play_loop
variables:
file: int
loop_: bool
then:
- dfplayer.play:
file: !lambda 'return file;'
loop: !lambda 'return loop_;'
- service: dfplayer_play_folder
variables:
folder: int
file: int
then:
- dfplayer.play_folder:
folder: !lambda 'return folder;'
file: !lambda 'return file;'
- service: dfplayer_play_loop_folder
variables:
folder: int
then:
- dfplayer.play_folder:
folder: !lambda 'return folder;'
loop: true
- service: dfplayer_set_device_tf
then:
- dfplayer.set_device: TF_CARD
- service: dfplayer_set_device_usb
then:
- dfplayer.set_device: USB
- service: dfplayer_set_volume
variables:
volume: int
then:
- dfplayer.set_volume: !lambda 'return volume;'
- service: dfplayer_set_eq
variables:
preset: int
then:
- dfplayer.set_eq: !lambda 'return static_cast<dfplayer::EqPreset>(preset);'
- service: dfplayer_sleep
then:
- dfplayer.sleep
- service: dfplayer_reset
then:
- dfplayer.reset
- service: dfplayer_start
then:
- dfplayer.start
- service: dfplayer_pause
then:
- dfplayer.pause
- service: dfplayer_stop
then:
- dfplayer.stop
- service: dfplayer_random
then:
- dfplayer.random
- service: dfplayer_volume_up
then:
- dfplayer.volume_up
- service: dfplayer_volume_down
then:
- dfplayer.volume_down
I used this text to speach site to create the announcements which are saved in mp3 format and placed on a micro SD card in the DF-Player module.
The sounds are then played in automations using:
service: esphome.d1_mini_speaker_dfplayer_play
data:
file: 1
I’ve seated the DFPlayer above the D1 Mini as shown in the pictures below:
This makes a very compact and cheap audio announcer.

