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 (Gladys 5.3 ou plus récent) 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 : avec Gladys 5.3, c'est un vrai lecteur dans le widget Musique (pochette, morceau, progression, file d'attente, recherche dans la bibliothèque) — voir « Lecteur Musique de Gladys 5.3 ».
  • 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).

Lecteur Musique de Gladys 5.3​

Avec Gladys 5.3 ou plus récent, le jukebox devient un lecteur du widget Musique du tableau de bord (choisissez l'appareil « Subsonic jukebox ») :

  • En cours : pochette, titre, artiste, album, barre de progression (un glissé ou un clic déplace la lecture dans le morceau), lecture/pause, précédent/suivant et volume. Gladys relit le jukebox juste après la fin de chaque morceau : le suivant s'affiche en quelques secondes, même avec un relevé toutes les 60 s. Un changement fait ailleurs (une autre application qui pilote le jukebox) apparaît au relevé suivant.
  • Bibliothèque : le bouton de recherche ouvre un panneau avec les dossiers Albums, Artistes et Playlists, et une recherche (artistes, albums, playlists, morceaux). Toucher un élément le joue ; un album, un artiste ou une playlist peut aussi être mis à la suite du morceau en cours ou en fin de file. Un artiste ou une playlist joue 500 morceaux au plus. La langue de ces dossiers et des messages du panneau se règle dans la configuration (Langue du panneau Musique, français par défaut).
  • File d'attente : la liste des morceaux du jukebox, le morceau en cours surligné ; en toucher un le joue.
  • Scènes : l'action Lancer une musique sur une enceinte joue un album, un artiste, une playlist ou un morceau choisi dans la bibliothèque. L'état de lecture se pilote aussi depuis une scène : 0 pause, 1 lecture, 2 arrêt.

L'API Subsonic ne connaît ni mode aléatoire (seulement un mélange ponctuel de la file, qui reste sur le bouton Aléatoire du widget Jukebox), ni répétition, ni sourdine : ces boutons n'apparaissent pas dans le lecteur.

État de lecture. Il vaut 1 en lecture, 0 en pause et 2 à l'arrêt : file vide, fin de la file, ou arrêt demandé par Gladys (le jukebox se met en pause et revient au début du morceau). Avant la version 1.3.0, l'arrêt valait 0 : une scène qui attend « = 0 » ne se déclenche plus à la fin de la file.

Jukebox déjà ajouté. Après la mise à jour de l'intégration, ouvrez l'onglet Découverte de l'intégration et cliquez sur Mettre à jour sur le jukebox : il reçoit les nouvelles fonctionnalités (titre, artiste, album, pochette, durée, position) et son état de lecture devient pilotable. Les identifiants ne changent pas : scènes et tableaux de bord continuent de fonctionner. Tant que ce n'est pas fait, le widget Musique garde l'affichage simple (boutons et volume).

Seul le jukebox joue. Les écoutes sur vos applications (DSub, Symfonium, l'interface web…) restent visibles par le capteur En écoute et le widget En écoute, en lecture seule : l'API Subsonic ne permet pas de piloter ces lecteurs.

Lecture « à la suite ». L'API n'a pas d'insertion : l'intégration retire les morceaux qui suivent, ajoute les nouveaux, puis remet les autres, sans couper le morceau en cours. Quand plus de 50 morceaux suivent, ou que le morceau en cours est aussi plus haut dans la file, elle reconstruit la file et reprend à la même seconde : le son se coupe alors un instant.

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.
  • « Jukebox is admin only » (erreur 50) : Navidrome réserve le jukebox aux administrateurs (Jukebox.AdminOnly, vrai par défaut). Utilisez un compte administrateur, ou réglez ND_JUKEBOX_ADMINONLY=false sur le serveur.
  • 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
Langue du panneau MusiqueselectNonLangue des dossiers et des messages du panneau Musique de Gladys (l'intégration ne peut pas connaître la vôtre).

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.3.0), 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.3.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 🙂