En su día hablamos en el blog sobre cómo integrar AWTRIX en Home Assistant para poder enviarle notificaciones personalizadas, sensores y más desde nuestras automatizaciones. Si aún no lo has hecho, te recomiendo que sigas primero ese tutorial, ya que en este artículo vamos a dar por hecho que tienes AWTRIX funcionando e integrado con MQTT en tu instancia de Home Assistant.

Hoy vamos un paso más allá y conectamos Navidrome, el servidor de música compatible con la API Subsonic, con Home Assistant y AWTRIX para mostrar en tiempo real la canción que estás escuchando directamente en tu AWTRIX. Una integración sencilla pero muy vistosa, ideal para los que disfrutamos de tener todo sincronizado y visible en casa.
Pasos previos
Para poder seguir con este tutorial es necesario tener:
- Un servidor de Navidrome en local.
- Awtrix configurado en Home Assistant usando MQTT.
- Una instancia de Home Assistant (obviamente).
Creación del sensor
Para crear el sensor, primero tenemos que confirmar que funciona correctamente la API de Subsonic. Para comprobarlo usaremos curl haciendo esta petición:
curl 'http://[IP_Servidor]/rest/getNowPlaying.view?u=[USUARIO]&p=[CONTRASEÑA]&v=1.16.1&c=HomeAssistant'Esto si no estás escuchando nada debería de responder lo siguiente:
<subsonic-response xmlns="http://subsonic.org/restapi" status="ok" version="1.16.1" type="navidrome" serverVersion="0.57.0 (4909232e)" openSubsonic="true"><nowPlaying></nowPlaying></subsonic-response>Y si estás escuchando algo en este momento, debería de salirte toda la información de la canción que estás escuchando en ese momento.
Vamos a explicar por partes que es cada cosa:
u: tu usuario de Navidrome.p: tu contraseña.v: versión de API Subsonicc: identificador del cliente (ej.HomeAssistant)
Una vez esto responde correctamente, vamos a Home Assistant para crear el sensor. Como que tenemos que crear un sensor API REST, tendremos que editar directamente el fichero de configuración configuration.yml usando un editor.
Si no tienes editor en Home Assistant, te dejo este otro artículo que te detalla como instalar un editor:

En nuestro fichero de configuración de Home Assistant añadimos lo siguiente al final:
sensor:
- platform: rest
name: Navidrome Now Playing
resource: curl 'http://[IP_Servidor]/rest/getNowPlaying.view?u=[USUARIO]&p=[CONTRASEÑA]&v=1.16.1&c=HomeAssistant'
value_template: >
{% set data = state_attr('sensor.navidrome_now_playing', 'subsonic-response') %}
{% set entry = data.get('nowPlaying', {}).get('entry', {}) %}
{% if entry.get('@title') %}
{{ entry.get('@artist', 'Desconocido') }} - {{ entry.get('@title', 'Sin título') }}
{% else %}
Nada sonando
{% endif %}
json_attributes:
- subsonic-response
scan_interval: 15Guardamos la configuración y reiniciamos Home Assistant.
Una vez inicia de nuevo Home Assistant, podemos ir a Herramientas para desarrolladores - Estados y allí buscamos por sensor.navidrome_now_playing:

También podemos añadir el sensor en una tarjeta dentro de una dashboard:

Una vez tengamos esto funcionando, el siguiente paso será crear una automatización para que funcione con Awtrix.
Configuración de la automatización
Ahora tendremos que crear una automatización, como siempre vamos a Configuración - Automatizaciones y Escenas y hacemos clic en Crear Automatización.
La automatización constará de un cambio de un sensor y que ejecutará el envío de datos con una condición. Veamos paso por paso:
Cuando...
triggers:
- trigger: state
entity_id:
- sensor.navidrome_now_playing
to: nullCuando el sensor.navidrome_now_playing cambie a cualquier estado. Usamos to: null para que indique "cualquier estado".
Y si...
Para la condición, usaremos una plantilla:
conditions:
- condition: template
value_template: >
{{ trigger.from_state.state != trigger.to_state.state and not
trigger.to_state.state.startswith('Nada') }}Para evitar notificaciones repetidas en AWTRIX, añadimos dos condiciones a la automatización:
- El estado actual debe ser diferente al anterior → así nos aseguramos de que solo se ejecuta cuando cambia realmente la canción, y no cada vez que el sensor se actualiza.
- El nuevo estado no debe contener la palabra "nada" → esto evita mostrar notificaciones cuando no hay música reproduciéndose, ya que el sensor muestra
"Nada sonando"en ese caso.
Gracias a estas condiciones, el aviso en AWTRIX se enviará una sola vez por canción y solo si hay algo sonando de verdad.
Entonces hacer...
Si se cumple la condición, entonces lo que haremos será publicar la información a MQTT que es como tenemos configurado Awtrix:
actions:
- action: mqtt.publish
data:
topic: awtrix/notify
payload: |-
{
"icon": 32256,
"repeat": 2,
"duration": 10,
"text": "{{ state_attr('sensor.navidrome_now_playing', 'subsonic-response').nowPlaying.entry['@artist'] }} - {{ state_attr('sensor.navidrome_now_playing', 'subsonic-response').nowPlaying.entry['@title'] }}"
}Para aquí lo mostraremos de la siguiente forma Artista - Canción, por ejemplo Rammstein - Sonne.
Integración completa
Y como siempre, te dejo la integración completa para que puedas hacer un copy&paste en condiciones:
alias: Now Playing Navidrome
description: ""
triggers:
- trigger: state
entity_id:
- sensor.navidrome_now_playing
to: null
conditions:
- condition: template
value_template: >
{{ trigger.from_state.state != trigger.to_state.state and not
trigger.to_state.state.startswith('Nada') }}
actions:
- action: mqtt.publish
data:
topic: awtrix/notify
payload: |-
{
"icon": 32256,
"repeat": 2,
"duration": 10,
"text": "{{ state_attr('sensor.navidrome_now_playing', 'subsonic-response').nowPlaying.entry['@artist'] }} - {{ state_attr('sensor.navidrome_now_playing', 'subsonic-response').nowPlaying.entry['@title'] }}"
}
mode: single

Más sobre ./voidNull
- 📖 Aprende todos sobre los comandos de GNU/Linux en nuestro Diccionario "De la A a la Z: Los comandos de GNU/Linux"
- 💪 ¡Forma parte de la Comunidad de ./voidNull!
- 🤖 Disfruta de todos nuestros Cursos sobre Ansible, Proxmox, Home Assistant entre otros.
- 📩 Mantente actualizado con lo último en GNU/Linux y Software Libre. Recibe nuestra Newsletter mensual.


Comentarios