[Intégration] Subsonic — reliez Gladys à votre serveur musical (Navidrome, Airsonic…)
Bonjour à tous ![]()
Je viens de publier Subsonic, une intégration externe qui relie Gladys à n’importe quel serveur musical implémentant l’API Subsonic : Navidrome, Airsonic-Advanced, Gonic, LMS, Subsonic…
Mon besoin de départ était simple : que Gladys sache ce qui se passe sur mon instance Navidrome, et puisse déclencher de la musique depuis mes scènes. Elle est développée et testée d’abord contre Navidrome, mais rien n’y est spécifique à ce serveur.
Dépôt : GitHub - guim31/gladys-subsonic · GitHub
Ce que ça apporte
Appareil « Subsonic server » — 6 capteurs
| Capteur | Ce qu’il donne |
|---|---|
| Now playing | Le morceau en cours, au format Artiste — Titre (auditeur) |
| Album cover | La pochette de l’album écouté, rafraîchie à chaque changement de morceau |
| Active streams | Combien de morceaux sont écoutés en ce moment |
| Songs / Artists / Albums in library | La taille de votre bibliothèque |
Afficher la pochette sur le tableau de bord
La pochette emprunte le canal image de Gladys : ajoutez un widget Caméra et choisissez l’appareil « Subsonic server ». Le nom du widget surprend au premier abord, mais c’est le seul de Gladys qui affiche l’image d’un appareil et se met à jour en direct. Le widget Photo, lui, n’accepte qu’une liste d’URL figées saisies à la main : il ne peut pas suivre ce qui joue.
Appareil « Subsonic jukebox » (optionnel)
Pilotage de la lecture côté serveur (fonction jukebox de l’API) : lecture/pause, précédent/suivant, volume et état de lecture. À activer explicitement, côté Gladys et côté serveur. Le widget Musique du tableau de bord pilote directement ces commandes.
Boutons dans l’écran de configuration
- Tester la connexion — affiche l’identité du serveur (ex.
navidrome 0.63.2, API 1.16.1) - Scanner la bibliothèque musicale
- Jukebox : lecture aléatoire (N morceaux au hasard)
- Jukebox : jouer une playlist (par son nom)
Quelques idées de scènes
- Ne pas déranger : si
Active streams > 0, ne pas lancer l’aspirateur ou couper les enceintes. - Réveil en musique : à 7 h, l’action « jouer une playlist » lance votre playlist du matin sur le jukebox.
- Réagir au morceau : le capteur « Now playing » est une feature texte, et Gladys déclenche ses scènes sur le changement de sa valeur — vous pouvez donc faire réagir votre installation à chaque nouveau morceau (afficher le titre, ajuster les lumières…).
- Tableau de bord : la pochette en grand (widget Caméra), le titre en cours et les commandes du jukebox côte à côte.
Installation
Prérequis : Gladys 4.86.0 ou plus.
Depuis Intégrations → Installer une intégration, cherchez « Subsonic » dans le catalogue.
Ensuite, dans l’onglet Configuration :
- URL du serveur : la racine, sans
/rest— ex.http://192.168.1.10:4533(port par défaut de Navidrome). - Utilisateur / Mot de passe : un compte de votre serveur (créez-en un dédié si possible).
- Méthode d’authentification : laissez Jeton. Le mot de passe ne transite jamais, seul un hachage md5 salé est envoyé. Basculez sur Legacy uniquement pour un serveur très ancien (API < 1.13) ou un compte LDAP qui refuse le jeton.
- Cliquez sur Tester la connexion, puis récupérez l’appareil dans l’onglet Découverte.
Pour le jukebox
Il joue la musique sur la machine qui héberge le serveur (celle reliée à vos enceintes). Il faut l’activer des deux côtés — dans Navidrome :
[Jukebox]
Enabled = true
(ou ND_JUKEBOX_ENABLED=true), puis cocher Activer l’appareil jukebox dans la configuration de l’intégration.
Ce que ça ne fait pas (pour éviter les malentendus)
Autant être clair sur les limites, qui viennent de l’API Subsonic elle-même :
- Le jukebox joue sur l’hôte du serveur, pas sur la machine de Gladys : ce n’est pas une solution multiroom.
- Impossible de piloter un autre client (votre téléphone, le lecteur web) : l’API ne permet pas de commander la lecture d’un client tiers.
- Pas d’annonce vocale via cette intégration : l’action « Jouer une notification » de Gladys envoie une URL audio TTS, or le jukebox Subsonic ne sait jouer que des morceaux de la bibliothèque. Ça reste le terrain de Sonos / Chromecast.
Côté technique
Construite à partir du template officiel JavaScript et du SDK @gladysassistant/integration-sdk. Node 24 Alpine, image multi-arch (amd64 + arm64), rootfs en lecture seule, tests unitaires et CI (Prettier / ESLint / tests) sur chaque commit. Licence Apache-2.0.
Petit soin particulier sur les requêtes envoyées au serveur : la liste complète des artistes n’est relue que lorsque la bibliothèque a changé (signature de scan) ou une fois par heure, au lieu d’être retéléchargée à chaque relevé — les valeurs restent pourtant publiées à chaque cycle. La pochette suit la même logique : elle n’est téléchargée que lorsque le morceau change, et dans la plus grande taille qui tienne sous la limite du canal image.
Les retours, remontées de bugs et idées de fonctionnalités sont les bienvenus, ici ou dans les issues du dépôt. Si vous l’essayez avec autre chose que Navidrome, ça m’intéresse beaucoup de savoir si tout se comporte bien ![]()


