Aller au contenu principal

Intégration domotique Subsonic, gratuite et open source

Intégration Subsonic pour Gladys Assistant

Reliez Gladys à un serveur musical compatible Subsonic : Navidrome, Airsonic, Gonic...

Cette intégration relie Gladys Assistant à un serveur musical compatible avec l'API Subsonic : Navidrome, Airsonic-Advanced, Gonic, LMS, Subsonic… Elle a été pensée et testée d'abord pour Navidrome.

Ce que vous obtenez​

  • Un appareil Serveur Subsonic avec cinq capteurs rafraîchis périodiquement, utilisables dans vos scènes et sur votre tableau de bord :
    • En écoute : le morceau joué en ce moment, au format Artiste — Titre (auditeur). Gladys déclenche ses scènes sur le changement de cette valeur : vous pouvez donc réagir à chaque nouveau morceau ;
    • Lectures en cours : nombre de morceaux en train d'être écoutés (pratique pour une scène « ne pas couper le son si quelqu'un écoute de la musique ») ;
    • Pochette de l'album : l'image de l'album en cours d'écoute. Elle passe par le canal image de Gladys, donc elle s'affiche avec le widget Caméra du tableau de bord (choisissez l'appareil « Subsonic server »). Quand la lecture s'arrête, la dernière pochette reste affichée ; tant que rien n'a jamais été écouté, une image d'attente neutre prend sa place ;
    • Morceaux, Artistes et Albums de la bibliothèque.
  • Un appareil Jukebox Subsonic (optionnel) pour piloter la lecture côté serveur : lecture/pause, précédent/suivant, volume et état de lecture.
  • Des boutons dans l'écran de configuration : tester la connexion, lancer un scan de la bibliothèque, lancer une lecture aléatoire ou une playlist sur le jukebox.
  • Trois widgets de tableau de bord (Gladys 5.1 ou plus récent) : En écoute, Jukebox et Bibliothèque — voir plus bas.

Configuration​

  1. Ouvrez l'onglet Configuration de l'intégration.
  2. Renseignez :
    • URL du serveur : la racine de votre serveur, sans /rest — par exemple https://musique.mondomaine.fr ou http://192.168.1.10:4533 (port par défaut de Navidrome) ;
    • Utilisateur et Mot de passe : un compte de votre serveur. Créez de préférence un compte dédié à Gladys ;
    • Méthode d'authentification : laissez Jeton (le mot de passe ne transite jamais, seul un hachage md5 salé est envoyé). Ne passez en Legacy que pour un serveur très ancien (API < 1.13) ou un compte LDAP qui refuse le jeton (erreur 41) ;
    • Intervalle de rafraîchissement : fréquence d'interrogation des capteurs (60 s par défaut).
  3. Enregistrez, puis cliquez sur Tester la connexion : le serveur répond avec son nom et sa version (par exemple navidrome 0.52).
  4. Les appareils apparaissent dans l'onglet Découverte, prêts à être ajoutés.

Le jukebox (lecture côté serveur)​

Le mode jukebox fait jouer la musique sur la machine qui héberge le serveur (celle reliée à vos enceintes), via la commande jukeboxControl de l'API. Il faut l'activer des deux côtés :

  1. Côté serveur. Pour Navidrome, dans navidrome.toml :

    [Jukebox]
    Enabled = true

    ou via la variable d'environnement ND_JUKEBOX_ENABLED=true. La machine doit avoir une sortie audio fonctionnelle (voir la documentation du mode jukebox de Navidrome).

  2. Côté Gladys. Activez Activer l'appareil jukebox dans la configuration de l'intégration : l'appareil « Jukebox Subsonic » apparaît alors dans la découverte.

Vous pouvez ensuite, depuis vos scènes ou le tableau de bord : mettre en lecture/pause, passer au morceau suivant ou précédent, régler le volume, et déclencher les boutons Lecture aléatoire (N morceaux au hasard) ou Jouer une playlist (par son nom exact, la casse est ignorée).

Widgets du tableau de bord​

Avec Gladys 5.1 ou plus récent, l'intégration propose trois widgets (Modifier le tableau de bord → Ajouter un widget). Ils n'ont aucun réglage : chacun suit le serveur configuré. Les tuiles chiffrées sont liées aux capteurs de l'appareil « Serveur Subsonic » : ajoutez-le à Gladys pour qu'elles affichent une valeur.

  • En écoute — le nombre de lectures en cours (la tuile suit le capteur en direct) et une ligne par session que le serveur liste : titre, artiste · album, la pochette, et en badge le nom de l'auditeur (à défaut, celui du lecteur), vert quand la session joue réellement, gris quand elle est en pause ou arrêtée (le serveur garde une session un moment après l'arrêt). Huit lignes au plus, les lectures actives en premier. Sans lecture : « Rien en écoute. » Rafraîchi toutes les 30 secondes ; la liste lue par le relevé périodique est réutilisée quand elle a moins de 30 secondes.
  • Jukebox — la lecture côté serveur en télécommande : la pochette et le titre du morceau en cours, artiste · album, puis l'état (Lecture / Arrêt), le volume et la position dans la file (« 2 / 20 »), et quatre boutons : Pause ou Lecture selon l'état, Précédent, Suivant et Aléatoire (20 morceaux au hasard, comme le bouton de la configuration). Une file vide ne propose qu'Aléatoire. Tant que l'appareil jukebox n'est pas activé dans la configuration, le widget le dit. Rafraîchi toutes les 30 secondes, et dès qu'un bouton a agi. Les boutons fonctionnent même si l'appareil « Jukebox Subsonic » n'a pas été ajouté à Gladys ; l'état de lecture publié à Gladys suit chaque commande.
  • Bibliothèque — trois tuiles en direct (Morceaux, Artistes, Albums), l'identité du serveur (type et version renvoyés par le ping, par exemple navidrome 0.53.3), l'état du scan (« En cours · n » ou « Terminé · n morceaux » ; « Indisponible » quand le serveur refuse getScanStatus à ce compte) et un bouton Scanner. Rafraîchi toutes les 15 minutes, toutes les 10 secondes pendant un scan. Le bouton est soumis aux mêmes droits que celui de la configuration : Navidrome réserve le scan aux administrateurs.

Les pochettes des widgets sont servies par l'intégration (elles sont demandées au serveur en 300 px) et mises en cache une heure par Gladys. Un morceau sans pochette s'affiche sans image.

Dépannage​

  • « Wrong username or password » (erreur 40) : vérifiez l'identifiant et le mot de passe en vous connectant à l'interface web du serveur.
  • Erreur 41 : votre compte (souvent LDAP) n'accepte pas l'authentification par jeton — passez la méthode sur Legacy.
  • « Cannot reach the Subsonic server » : vérifiez que l'URL est joignable depuis Gladys (même machine/réseau que le conteneur de l'intégration), pas seulement depuis votre navigateur.
  • Le jukebox ne produit aucun son : le son sort sur l'hôte du serveur, pas sur l'appareil où tourne Gladys. Vérifiez Jukebox.Enabled et la sortie audio de l'hôte (accès au périphérique audio du conteneur Docker le cas échéant).
  • Les capteurs affichent « Pas de valeur récente » : l'intégration interroge elle-même le serveur dès l'ajout de l'appareil, puis à l'intervalle choisi (60 s par défaut), quoi que fasse le relevé de Gladys. Si les valeurs restent vides, le serveur ne répond pas : Tester la connexion dit pourquoi, et les journaux de l'intégration le disent une fois (et une fois encore quand il répond de nouveau). Une valeur qui ne change pas n'est renvoyée qu'une fois toutes les 12 h.
  • « Le serveur refuse le scan pour ce compte » : lancer un scan est réservé aux administrateurs (c'est le cas dans Navidrome). Ce n'est pas gênant : le bouton n'est qu'un raccourci, le serveur scanne selon sa propre planification et les capteurs suivent. Passez le compte administrateur si vous tenez à ce bouton — rien d'autre dans l'intégration ne demande ces droits.
  • Un morceau reste affiché alors que la lecture est arrêtée : le serveur garde la session dans sa liste « en cours de lecture » un moment après l'arrêt. L'intégration ne compte que les sessions dont l'état est réellement « en lecture », mais un lecteur qui se contente de se taire, sans prévenir le serveur (le protocole Subsonic classique n'a pas de notion d'arrêt), reste listé jusqu'à la fin théorique du morceau.
  • Les capteurs ne bougent pas : le nombre d'artistes/albums ne change qu'après un scan de la bibliothèque — utilisez le bouton Scanner la bibliothèque musicale.

Paramètres de configuration​

Voici les paramètres demandés par Subsonic dans son écran de configuration dans Gladys.

ParamètreTypeObligatoireDescription
Connexion au serveursectionNonFonctionne avec tout serveur implémentant l'API Subsonic (Navidrome, Airsonic-Advanced, Gonic...). Utilisez si possible un compte utilisateur dédié. L'URL est la racine du serveur, ex. https://music.example.com ou http://192.168.1.10:4533.
URL du serveurstringOuiURL racine du serveur Subsonic, sans /rest.
UtilisateurstringOui
Mot de passesecretOui
Méthode d'authentificationselectNonLe jeton (md5 + sel) est géré par tous les serveurs modernes. N'utilisez legacy que pour les serveurs pré-1.13 ou les comptes LDAP.
Intervalle de rafraîchissement (s)numberNonFréquence d'interrogation des capteurs du serveur, en secondes. Gladys ne gère que 10, 15, 30 ou 60 s : la valeur est alignée sur la plus proche.
Jukebox (lecture côté serveur)sectionNonLe jukebox joue la musique sur la machine qui héberge le serveur. Il doit aussi être activé côté serveur : dans Navidrome, réglez Jukebox.Enabled = true (ND_JUKEBOX_ENABLED=true) et vérifiez que l'hôte a une sortie audio.
Activer l'appareil jukeboxbooleanNon

Comment installer Subsonic dans Gladys​

  1. Dans Gladys, ouvrez Intégrations : Subsonic apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
  2. Cliquez sur Installer. Gladys télécharge l'image Docker (ghcr.io/guim31/gladys-subsonic:1.2.1), la démarre dans un bac à sable isolé du cœur, et génère l'interface de l'intégration (appareils, découverte et configuration).
  3. Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
  4. Vous pouvez aussi l'installer directement depuis l'URL de son dépôt : https://github.com/guim31/gladys-subsonic.

Subsonic nécessite Gladys >=5.1.0. Le catalogue dans Gladys se rafraîchit toutes les heures : une nouvelle version est donc disponible au plus tard une heure après sa sortie.

Vous n'utilisez pas encore Gladys ? C'est gratuit et open source : suivez le guide d'installation pour démarrer.

À propos des intégrations externes​

Subsonic est une intégration externe : une intégration communautaire empaquetée dans un conteneur Docker et publiée sur GitHub, que Gladys installe en un clic et exécute dans un bac à sable isolé de son cœur. Elle est publiée et maintenue par guim31, et non par l'équipe cœur de Gladys.

Inscrivez-vous à la newsletter Gladys Assistant

Quelques emails par mois sur les nouveautés et l'actualité du projet. Envoyés par Pierre-Gilles Leymarie, le fondateur du projet. Désinscription possible à tout moment 🙂