Aller au contenu principal

Intégration domotique Music Player Daemon, gratuite et open source

Intégration Music Player Daemon pour Gladys Assistant

Pilotez vos lecteurs MPD (moOde, Volumio, piCorePlayer…) : musique, volume, playlists, annonces.

Pilotez vos lecteurs MPD depuis Gladys : un Raspberry Pi branché à un ampli sous moOde, Volumio, piCorePlayer, ou MPD lui-même. Lecture, pause, morceau suivant, volume, lancement d'une playlist, son de sonnette ou webradio puis retour à la musique, et ce qui joue affiché sur le tableau de bord. Tout reste sur votre réseau local : pas de cloud, pas de compte.

Développée sans le matériel : vos retours sont les bienvenus. L'intégration a été construite et testée contre un vrai MPD 0.24 lancé dans Docker (sans carte son) et un serveur simulé, pas sur un lecteur moOde, Volumio ou piCorePlayer. Dites ce qui marche et ce qui ne marche pas dans les issues.

Cette intégration n'est affiliée ni au projet MPD, ni à moOde, Volumio ou piCorePlayer.

Ce qu'il vous faut​

  • Gladys Assistant 5.3.0 ou plus récent.
  • Pour les panneaux recherche, navigation et file d'attente de la boîte Musique : MPD 0.21 ou plus récent (pochettes intégrées aux fichiers : 0.22). moOde, Volumio 3 et les distributions récentes ont la 0.23 ou la 0.24.
  • Un lecteur qui fait tourner MPD, joignable depuis Gladys sur le réseau, sur son port MPD (6600 par défaut). moOde et piCorePlayer (avec son extension MPD) l'exposent d'origine ; MPD lui-même écoute le réseau quand bind_to_address vaut any ou l'IP de la machine dans mpd.conf.
  • Le mot de passe de MPD si mpd.conf a une ligne password. Il lui faut les droits read, add et control (password "secret@read,add,control"). La plupart des lecteurs n'en ont pas.

Mise en route​

  1. Dans Gladys, ouvrez Intégrations, puis Installer depuis GitHub, et saisissez https://github.com/guim31/gladys-mpd (ou installez Music Player Daemon depuis le catalogue quand elle y figure).
  2. Dans Configuration, saisissez l'adresse de votre lecteur (192.168.1.20, moode.home, ou 192.168.1.20:6601 pour un autre port), son mot de passe s'il en a un, et un nom (Salon). Jusqu'à trois autres lecteurs en dessous.
  3. Choisissez la Langue des appareils (noms des fonctionnalités, messages) et, si vous le souhaitez, le Volume des notifications. Enregistrez.
  4. Cliquez sur Tester la connexion : une ligne par lecteur, avec la version de MPD, ce qu'il fait, son volume et ses playlists.
  5. Ouvrez l'onglet Découverte et ajoutez les appareils.

Utilisez des adresses IP fixes (une réservation DHCP dans votre box) ou des noms que votre DNS résout : les noms en .local ne se résolvent pas dans le conteneur de l'intégration.

L'appareil de chaque lecteur​

Chaque lecteur est un appareil. Gladys le voit comme un lecteur de musique : la boîte Musique du tableau de bord (lecture, pause, précédent, suivant, volume) et l'action de scène Parler sur une enceinte fonctionnent avec.

Fonctionnalité (noms en français)Ce qu'elle fait
LectureJoue la file d'attente (un morceau en pause reprend où il en était).
PauseMet en pause.
Morceau précédentPasse au morceau précédent.
Morceau suivantPasse au morceau suivant.
Volume0 à 100 %, tel que MPD le voit. Pas de valeur quand MPD n'a pas de mixer (volume fixe).
État de lecture0 en pause, 1 en lecture, 2 à l'arrêt. L'écrire met en pause, lance ou arrête.
TitreLe titre du morceau (celui qu'annonce une webradio).
ArtisteSon artiste.
AlbumSon album (la station d'une webradio).
PochetteLa pochette, affichée par la boîte Musique (voir plus bas).
DuréeEn secondes ; 0 pour une webradio.
PositionEn secondes ; l'écrire déplace la lecture dans le morceau.
Lecture aléatoireLa lecture aléatoire de MPD, activée ou non.
RépétitionDésactivée, toute la file, ou le morceau en cours (repeat et single de MPD).
PlaylistLa liste des playlists enregistrées dans MPD : en choisir une remplace la file d'attente par elle et la joue.
NotificationReçoit une adresse à jouer, puis remet ce qui jouait (voir plus bas).

La liste des playlists suit MPD : une playlist enregistrée ou supprimée sur le lecteur apparaît ou disparaît de la liste.

Lecteur Musique de Gladys 5.3​

Depuis Gladys 5.3, la boîte Musique du tableau de bord est un vrai lecteur, et MPD la remplit entièrement :

  • la pochette, le titre, l'artiste et l'album, une barre de progression qu'on fait glisser pour se déplacer, lecture et pause, précédent, suivant, lecture aléatoire, répétition et le volume ;
  • la file d'attente (bouton liste) : les morceaux de la file de MPD, celui en cours en surbrillance ; un appui en lance un autre ;
  • recherche et navigation (bouton loupe) : la recherche interroge MPD pour les morceaux (tous les tags) et cherche dans les noms des artistes, des albums et des playlists ; la navigation commence par Dossiers (le répertoire musical de MPD), Artistes, Albums et Playlists. Un appui joue l'élément à la place de la file ; le geste secondaire l'ajoute après le morceau en cours ou en fin de file. Un dossier, un artiste ou un album se joue en entier (500 morceaux au plus).

L'action de scène Lancer une musique sur une enceinte de Gladys choisit une playlist, un album, un artiste, un dossier ou un morceau dans ce même panneau, et le joue quand la scène s'exécute.

Un appareil ajouté avant la version 1.1.0 continue de marcher comme avant, sans les nouvelles fonctionnalités : ouvrez l'onglet Découvrir de l'intégration et cliquez sur Mettre à jour sur le lecteur (Gladys le propose parce que les fonctionnalités ont changé). Les nouvelles fonctionnalités s'ajoutent ; les anciennes gardent leurs scènes et tableaux de bord. État de lecture change : il vaut 2 au lieu de 0 quand MPD est arrêté, et il n'est plus gardé dans l'historique (Gladys ne garde pas d'historique des fonctionnalités musique).

Les pochettes viennent de MPD : l'image intégrée au fichier d'abord, sinon le fichier de pochette de son dossier (cover.jpg, folder.png…). MPD l'envoie telle qu'elle est dans le fichier, souvent un scan de quelques mégaoctets, et Gladys affiche une pochette de 300 Ko au plus : l'intégration réduit une pochette plus grosse (un JPEG de 400 pixels au plus), jusqu'à 10 Mo (voir Limites).

MPD n'a pas de sourdine : pas de bouton Muet pour un lecteur MPD (mettre le volume à 0 perdrait le volume à retrouver).

Tableau de bord​

Ajoutez le widget Lecteur MPD à un tableau de bord. Dans ses réglages, choisissez un lecteur (vide : le premier de la configuration). Il affiche :

  • le titre du morceau et, en dessous, l'artiste et l'album (ou le nom de la webradio) ;
  • le volume en jauge ;
  • l'état (lecture, pause, arrêt), la position dans la file d'attente, la lecture aléatoire et la répétition ;
  • quatre boutons : Précédent, Lecture ou Pause, Suivant et Options…. Options… ouvre un formulaire rempli avec les valeurs actuelles : le volume, une playlist à jouer, la lecture aléatoire et la répétition. Seul ce que vous changez est envoyé.

Le widget suit le lecteur : il se met à jour en moins de dix secondes quand un morceau commence, que le volume bouge ou qu'une playlist est enregistrée. La boîte Musique de Gladys 5.3 (plus haut) est le lecteur complet ; ce widget y ajoute le formulaire Options… et n'a pas de pochette.

Scènes​

Actions​

Le lecteur se choisit parmi les appareils de l'intégration.

  • Jouer une playlist MPD : remplace la file d'attente par une playlist enregistrée dans MPD, d'après son nom (majuscules et accents indifférents), et la joue. Le nombre de morceaux mis en file peut servir dans les actions suivantes de la scène. Un nom inconnu fait échouer l'action avec la liste des playlists. Vous pouvez aussi choisir une playlist dans une liste avec l'action Contrôler un appareil du cœur, sur la fonctionnalité Playlist.
  • Jouer une adresse sur MPD : joue une adresse — une webradio (http://…, https://…), un son sur un serveur web, ou un fichier de la bibliothèque musicale de MPD (sons/sonnette.mp3) — au volume indiqué (vide : inchangé). Ensuite : Reprendre la musique d'avant (l'adresse joue une fois, puis ce qui jouait revient, voir plus bas) ou Continuer (remplace la file d'attente). L'action échoue quand MPD ne peut pas lire l'adresse.
  • Vider la file d'attente MPD : retire tous les morceaux de la file ; le lecteur s'arrête.
  • Lecture aléatoire MPD : activer, désactiver ou inverser. Le résultat (active ou non) peut servir dans les actions suivantes.
  • Répétition MPD : désactivée, toute la file, ou le morceau en cours.

Notifications et « Parler sur une enceinte »​

La fonctionnalité Notification d'un lecteur, l'action Jouer une adresse sur MPD avec Reprendre la musique d'avant, et l'action Parler sur une enceinte de Gladys (la voix vient de Gladys Plus) fonctionnent de la même façon :

  1. l'adresse est ajoutée à la fin de la file d'attente (votre file n'est jamais remplacée) et jouée aussitôt, au Volume des notifications de la configuration (ou au volume de l'action) ;
  2. MPD s'arrête après elle ; elle est alors retirée de la file, et le volume et les options (aléatoire, répétition, single, consume) reviennent ;
  3. le morceau qui jouait reprend à la seconde où il a été interrompu ; un morceau en pause reste en pause, un lecteur arrêté reste arrêté.

Une deuxième notification pendant la première la remplace. Si quelqu'un prend la main sur le lecteur entre-temps (un autre morceau, le suivant), la notification se termine sans toucher à la musique. Une notification qui joue encore au bout de cinq minutes est arrêtée et la musique revient. Une webradio envoyée en notification n'est pas une notification : elle continue de jouer (son adresse reste dans la file).

L'action Parler sur une enceinte a un curseur de volume, mais Gladys ne le transmet pas aux intégrations externes : utilisez le Volume des notifications de la configuration.

Idées de scènes​

  • Sonnette : quand le bouton de sonnette est appuyé, Jouer une adresse sur MPD sons/sonnette.mp3 sur le lecteur du salon, volume 70, puis reprendre la musique d'avant.
  • Radio-réveil : à 7 h en semaine, Jouer une adresse sur MPD avec l'adresse de votre radio préférée, Continuer, volume 25 ; à 7 h 45, la fonctionnalité Pause.
  • Personne à la maison : quand la maison devient vide, la fonctionnalité Pause de chaque lecteur.
  • La lumière suit la musique : quand l'État de lecture du lecteur du salon passe à 1 après le coucher du soleil, allumer les lampes du salon.
  • Soirée : au coucher du soleil, Jouer une playlist MPD « Apéro », puis Lecture aléatoire MPD activée.

Rafraîchissement​

L'intégration garde une connexion ouverte vers chaque lecteur et attend ses changements (la commande idle de MPD) : ce qui se passe sur le lecteur, depuis Gladys ou depuis une autre application, arrive dans Gladys en moins d'une seconde. En plus, chaque lecteur est lu toutes les 30 secondes (ce qui vérifie aussi qu'il répond encore). Seuls les changements sont envoyés à Gladys ; la position dans le morceau seulement quand elle saute (Gladys fait avancer la barre de progression elle-même).

Un lecteur qui ne répond plus est affiché injoignable (badge de transport de l'appareil, état de connexion de l'intégration), et l'intégration réessaie : après 2, 5, 15, 30 secondes, puis chaque minute. Rien à faire quand il revient.

MPD n'a pas de quota : l'intégration envoie quelques commandes par changement et deux toutes les 30 secondes, sur une connexion par lecteur.

Dépannage​

  • « MPD a répondu avec trop de données d'un coup » dans le panneau musique : un dossier ou une liste plus gros que ce que l'intégration lit (4 Mo de texte) : ouvrez un dossier plus petit, ou cherchez.
  • « ne répond pas » : vérifiez l'adresse et le port (6600, ou celui de port dans mpd.conf), que MPD écoute le réseau (bind_to_address) et qu'aucun pare-feu ne bloque le port entre Gladys et le lecteur.
  • « mot de passe refusé » ou « un mot de passe est nécessaire » : saisissez le mot de passe de la ligne password de mpd.conf ; il lui faut les droits read, add et control.
  • « aucun serveur MPD à cette adresse et ce port » : autre chose répond sur ce port (une interface web, par exemple) : MPD écoute le 6600 par défaut.
  • Le volume reste vide : MPD n'a pas de mixer (mixer_type "none" dans moOde pour un DAC à volume fixe, par exemple) : changez le volume sur l'ampli.
  • Une notification ne joue pas : l'adresse doit être joignable depuis le lecteur lui-même (pas depuis Gladys), dans un format que MPD sait décoder ; un fichier de la bibliothèque se donne par son chemin dans la bibliothèque. Tester la connexion et les logs de l'intégration disent pourquoi MPD l'a refusée.
  • La liste Playlist est vide : MPD n'a pas de playlist_directory, ou aucune playlist n'est encore enregistrée.
  • Plus de détails : les logs de l'intégration (Intégrations → Music Player Daemon → Journaux) montrent les connexions, les pertes et les retours, et une ligne par commande. Relancez le conteneur avec LOG_LEVEL=debug pour voir chaque changement reçu et chaque lecture. Les mots de passe ne sont jamais écrits.

Limites​

  • Jusqu'à quatre lecteurs. Un lecteur est connu par son emplacement dans la configuration : changer son adresse garde l'appareil et son historique.
  • Les pochettes de plus de 10 Mo ou 25 mégapixels ne s'affichent pas, ni celles dans un autre format que JPEG, PNG et WebP (GIF…), ni les WebP de plus de 300 Ko : l'intégration ne réduit que le JPEG et le PNG.
  • La recherche de MPD ignore les majuscules ; les accents seulement si MPD est compilé avec ICU (sinon cafe peut ne pas trouver Café).
  • Pas de sourdine (MPD n'en a pas).
  • Pas de regroupement de lecteurs (Snapcast) ni de choix des sorties.
  • MPD ne se découvre pas tout seul sur le réseau : saisissez les adresses.
  • Le volume de l'action Parler sur une enceinte n'est pas transmis par Gladys (le Volume des notifications s'applique).
  • Gladys 5.3.0 ou plus récent (le lecteur Musique et ses panneaux).

Paramètres de configuration​

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

ParamètreTypeObligatoireDescription
Vos lecteurs MPDsectionNonTout Music Player Daemon : un Raspberry Pi sous moOde, Volumio, piCorePlayer, ou MPD lui-même. Saisissez son adresse IP (port 6600 par défaut, sinon ajoutez :port) et le mot de passe de mpd.conf s'il y en a un. Jusqu'à quatre lecteurs.
Adresse du lecteurstringNonAdresse IP ou nom du lecteur, avec :port si MPD n'écoute pas sur le 6600.
Mot de passesecretNonLa ligne password de mpd.conf. Vide si MPD n'en a pas (le cas courant).
NomstringNonNom de l'appareil dans Gladys. Vide : « MPD » suivi de l'adresse.
Deuxième lecteursectionNonMêmes champs, pour un autre lecteur MPD de votre réseau.
Adresse du lecteurstringNon
Mot de passesecretNon
NomstringNon
Troisième lecteursectionNonMêmes champs, pour un autre lecteur MPD de votre réseau.
Adresse du lecteurstringNon
Mot de passesecretNon
NomstringNon
Quatrième lecteursectionNonMêmes champs, pour un autre lecteur MPD de votre réseau.
Adresse du lecteurstringNon
Mot de passesecretNon
NomstringNon
OptionssectionNonLa notification d'un lecteur joue une adresse (un son de sonnette, une annonce), puis remet ce qui jouait.
Volume des notificationsselectNonVolume pendant une notification, l'ancien revient après. Gladys ne transmet pas le volume de son action « Parler sur une enceinte ».
Langue des appareilsselectNonNoms donnés aux fonctionnalités quand un appareil est ajouté (Volume, Playlist…), et langue des messages.

Comment installer Music Player Daemon dans Gladys​

  1. Dans Gladys, ouvrez Intégrations : Music Player Daemon 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-mpd:1.1.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-mpd.

Music Player Daemon 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​

Music Player Daemon 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 🙂