Reutiliza tus viejos altavoces para convertilos en entidades multimedia en segundos, al integrar el Awesome Player en HA.
Índice
¿Qué es el ‘Awesome Player’?
El Awesome Player es el nombre que le he dado a un dispositivo que te permite integrar en segundos cualquier altavoz en Home Assistant, además de controlar la reproducción y visualizarla desde su pantalla integrada. Anteriormente ya te expliqué cómo usar un DAC para integrar cualquier altavoz, pero la ventaja de este dispositivo es que viene con todos los componentes presoldados, por lo que es perfecto si no tienes experiencia con el soldador o quieres un acabado profesional.
El nombre se debe a que me he inspirado en la saga de películas de «Guardianes de la Galaxia» (si no las has visto, te las recomiendo😅), donde el componente musical tiene un peso importante.

Componentes del Awesome Player
Para integrar el Awesome Player en HA necesitas:
- MaESP ESP32 OLED WROVER. Esta es una placa ESP32 fabricada por Makerfabs, que viene una una pequeña pantalla OLED 1,3″ presoldada. Es importante que elijas la versión WROVER, que cuenta con 8MB PSRAM que son necesarios para que gestione el audio de forma fluida (yo pedí la versión WROOM y se escucha con cortes).
- MakePython Audio Expansion. Este es un módulo, también de Makerfabs, que se conecta a la placa anterior. Tiene un DAC UDA1334ATS que nos va a permitir conectar cualquier altavoz a través de un cable Jack 3.5. Además tiene un par de controles físicos tipo «palanca» que podemos usar para manejar la reproducción.
- Un cable USB de datos para instalar el firmware en la placa (no sirve un cable de carga). Si no tienes ninguno a mano, puedes comprarlo muy barato en Aliexpress.
- Unos altavoces y un cable Jack 3.5 para conectarlos al DAC. Seguro que por casa tienes alguno que puedes aprovechar, en mi caso voy a usar mis Creative Pebble V3.
Montaje e instalación
El primer paso para integrar el Awesome Player en HA es conectar los componentes. Lo único que tenemos que hacer es soldar en la placa MaESP ESP32 OLED las patillas que vienen en la cajita, desde la parte inferior y por el extremo corto de las patillas (como en la imagen). Hecho esto encaja la placa en el módulo MakePython Audio Expansion. Puedes hacer una pequeña prueba de funcionamiento alimentando la placa por su puerto USB-C y verás un mensaje como este en la pantalla.


Ahora ya sólo te queda ponerle la carcasa que he diseñado especialmente para este proyecto. Como puedes observar, tiene forma de «cassette» para que puedas ponerle una pegatina y personalizarlo como quieras 😊
Configuración de ESPHome
Ya tenemos listos los componentes que necesitamos para integrar el Awesome Player en HA. Ahora tenemos que ‘flashear’ la placa con ESPHome y la configuración correspondiente. Para ello sigue estos pasos:
- Conecta la placa a tu ordenador a través del puerto USB-C.
- En Home Assistant, accede al complemento de ESPHome desde el menú lateral y pulsa en «New device». Pulsa en «Continue» y dale un nombre (por ejemplo, «Awesome Player»).
- Pulsa en «Next» y a continuación selecciona la opción «ESP32» como tipo de dispositivo. Verás que en el fondo se ha creado un nuevo dispositivo.
- Pulsa en «Skip» y haz clic en el enlace «Edit» del bloque correspondiente al dispositivo que acabas de crear. Copia el código y consérvalo, ya que vas a necesitar alguno de estos datos.
- Ahora reemplaza el código por este que he preparado y observa lo siguiente:
- Puedes cambiar el nombre del dispositivo (por defecto, «Awesome Player») en las primeras líneas del código, cambiando el valor de los atributos ‘name’ (siempre en minúsculas y sin espacios) y ‘friendly_name’.
- También puedes cambiar el texto que aparece en pantalla (por defecto, «Awesome Player»), cambiando el valor del atributo ‘media_player_friendly_name’.
- Personaliza el icono que aparece en pantalla (por defecto un Groot escuchando música), indicando la URL de la imagen. También puedes guardar tu imagen en la ruta ‘config/esphome’ y entonces simplemente tendrías que incluir el nombre del fichero (por ejemplo, ‘groot.png’).
- Añade la información que te había generado ESPHome en el paso anterior en el apartado ‘api’ (‘encryption key’). Haz lo mismo para el campo ‘password’ bajo el apartado ‘ota’, y para los campos ‘ssid’ y ‘password’ bajo el apartado ‘wifi’ y ‘ap’.
- Respecto a la personalización de las playlist, observa que puedes añadir tantas como quieras. El atributo ‘playlist_x_name’ corresponde al nombre que aparece en pantalla, y el atributo ‘playlist_x_script’ al script que va a ejecutar. No obstante, en el próximo apartado te voy a explicar en detalle cómo funciona.
substitutions:
# Device customization
# Personalización del dispositivo
name: awesome-player
friendly_name: Awesome Player
media_player_friendly_name: Awesome Player
main_icon_file: https://aguacatec.es/wp-content/uploads/2025/01/groot3.png
# Playlist customization
# Personalización de las Playlist
playlist_1_name: Los 40
playlist_1_script: script.awesome_player_40
playlist_2_name: La Indie
playlist_2_script: script.awesome_player_laindie
playlist_3_name: Europa FM
playlist_3_script: script.awesome_player_europafm
########################################################
esphome:
name: ${name}
friendly_name: ${friendly_name}
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "Qasd234xP2hXmcEjzciHc+dNtasd3CSDN324A="
ota:
- platform: esphome
password: "2asd353f329a06dee07e5dsfg432310e"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Awesome-Player Fallback Hotspot"
password: "E7vIasdd6sO"
captive_portal:
font:
- file: "gfonts://Rubik"
id: title
size: 10
- file: "gfonts://Poppins"
id: info
size: 8
- file: "gfonts://Poppins"
id: playlist
size: 7
image:
- file: ${main_icon_file}
id: logo
resize: 60x60
type: BINARY
color:
- id: white
hex: 'ffffff'
i2s_audio:
i2s_lrclk_pin: GPIO25
i2s_bclk_pin: GPIO26
media_player:
- platform: i2s_audio
name: ${media_player_friendly_name}
id: awesome_player
dac_type: external
i2s_dout_pin: GPIO27
mode: stereo
i2c:
sda: GPIO4
scl: GPIO5
binary_sensor:
- platform: gpio
name: Play / Pause
icon: "mdi:play-pause"
pin:
number: GPIO33
inverted: true
on_press:
if:
condition:
media_player.is_playing:
then:
- media_player.pause:
id: awesome_player
else:
- if:
condition:
display.is_displaying_page: page1
then:
- homeassistant.action:
service: ${playlist_1_script}
- if:
condition:
display.is_displaying_page: page2
then:
- homeassistant.action:
service: ${playlist_2_script}
- if:
condition:
display.is_displaying_page: page3
then:
- homeassistant.action:
service: ${playlist_3_script}
- platform: gpio
name: Prev
icon: "mdi:skip-previous"
pin:
number: GPIO15
inverted: true
on_press:
- display.page.show_previous: awesome_display
- platform: gpio
name: Next
icon: "mdi:skip-next"
pin:
number: GPIO2
inverted: true
on_press:
- display.page.show_next: awesome_display
- platform: gpio
name: Mute
icon: "mdi:volume-off"
pin:
number: GPIO35
inverted: true
on_press:
if:
condition:
lambda: 'return id(awesome_player).volume > 0;'
then:
- media_player.volume_set:
id: awesome_player
volume: 0%
else:
- media_player.volume_set:
id: awesome_player
volume: 100%
- platform: gpio
name: Vol Down
icon: "mdi:volume-minus"
pin:
number: GPIO36
inverted: true
on_press:
- media_player.volume_down:
id: awesome_player
- platform: gpio
name: Vol Up
icon: "mdi:volume-plus"
pin:
number: GPIO39
inverted: true
on_press:
- media_player.volume_up:
id: awesome_player
display:
- platform: ssd1306_i2c
model: "SSD1306 128x64"
id: awesome_display
address: 0x3C
pages:
- id: page1
lambda: |-
it.image(-10, 3, id(logo), id(white));
it.printf(45, 0, id(title), "${media_player_friendly_name}");
it.printf(55, 10, id(info), "Volumen %.0f %%", (id(awesome_player).volume * 100));
it.print(52, 35, id(playlist), "${playlist_1_name}");
- id: page2
lambda: |-
it.image(-10, 3, id(logo), id(white));
it.printf(45, 0, id(title), "${media_player_friendly_name}");
it.printf(55, 10, id(info), "Volumen %.0f %%", (id(awesome_player).volume * 100));
it.print(52, 35, id(playlist), "${playlist_2_name}");
- id: page3
lambda: |-
it.image(-10, 3, id(logo), id(white));
it.printf(45, 0, id(title), "${media_player_friendly_name}");
it.printf(55, 10, id(info), "Volumen %.0f %%", (id(awesome_player).volume * 100));
it.print(52, 35, id(playlist), "${playlist_3_name}");
- Pulsa en “Save” e “Install”. Selecciona “Manual download” y espera a que se compile el código.
- Cuando termine, selecciona la opción “Modern format” para descargar el fichero ‘.bin’ correspondiente.
- Ahora ve a la página de ESPHome y pulsa en “Connect”. En la ventana emergente selecciona tu placa y pulsa en “Conectar”.
- Ahora pulsa en “Install” y selecciona el fichero ‘.bin’ obtenido en el paso 7. De nuevo, pulsa en “Install”.
- Vuelve a Home Assistant y ve a Configuración > Dispositivos y servicios. Lo normal es que tu dispositivo haya sido descubierto y aparezca en la parte superior, esperando únicamente a que pulses el botón de “Añadir”. De lo contrario pulsa en el botón de “Añadir integración”, busca “ESPHome” e introduce la IP de tu placa en el campo ‘Host’.
- Como siempre, te recomiendo fijar la IP en tu router para evitar problemas en el futuro si esta IP cambia.
- Para terminar ve a Configuración > Dispositivos y servicios > ESPHome. Pulsa sobre el enlace «Configurar» correspondiente al dispositivo de tu Awesome Player. En la ventana emergente marca la casilla «Permitir que el dispositivo realice acciones de Home Assistant» y pulsa en «Enviar». Esto va a permitir que lance nuestros scripts.
Reproducción de playlist
Aunque podría haber configurado ESPHome de otra forma más «eficiente», creo que esto iba a complicar la vida de aquellos que se sienten menos cómodos con el código. Puesto que el objetivo de integrar el Awesome Player en HA es que en segundos tengas integrado cualquier altavoz, y puedas usarlo para reproducir cualquier tipo de audio, lo he creado de la siguiente manera:
- Cada ‘playlist’ lanza un script creado en Home Assistant. De esta forma puedes utilizar los scripts a los que estás acostumbrado, tanto para iniciar la reproducción de la radio, como para lanzar una lista de Spotify o YouTube Music, utilizar Music Assistant o incluso notificaciones de audio. Eso sí, asegúrate de que en tu ‘script’ seleccionas como entidad media la del Awesome Player.
- Si quieres añadir más ‘playlist’ (o quitar) asegúrate de hacerlo en todas las partes del código. Por defecto he dejado 3 opciones, pero es ilimitado (es fácil, simplemente tienes que «copiar y pegar»). En concreto debes asegurarte de que coincide el número de opciones en los siguientes apartados:
# Playlist customization
# Personalización de las Playlist
playlist_1_name: Los 40
playlist_1_script: script.awesome_player_40
[...]
on_press:
if:
condition:
media_player.is_playing:
then:
- media_player.pause:
id: awesome_player
else:
- if:
condition:
display.is_displaying_page: page1
then:
- homeassistant.action:
service: ${playlist_1_script}
[...]
display:
- platform: ssd1306_i2c
model: "SSD1306 128x64"
id: awesome_display
address: 0x3C
pages:
- id: page1
lambda: |-
it.image(-10, 3, id(logo), id(white));
it.printf(45, 0, id(title), "${media_player_friendly_name}");
it.printf(55, 10, id(info), "Volumen %.0f %%", (id(awesome_player).volume * 100));
it.print(52, 35, id(playlist), "${playlist_1_name}");
- La palanca de la parte inferior te permite navegar por las distintas playlist, moviéndola hacia los lados. Si la presionas, iniciará la reproducción de la ‘playlist’ en pantalla (o pausará la reproducción si hay alguna sonando).
- La palanca del lateral izquierdo ter permite controlar el volumen, subiéndola o bajándola. Si la presionas, activarás/desactivarás el ‘mute’.
- Ten en cuenta que también puedes controlarlo desde Home Assistant, tu dispositivo móvil o automatizaciones.

