Sommaire

Le package Squeezebox vous permet de contrôler vos Squeezebox via le Logitech Media Server (lecture, pause, suivant, contrôle du volume …).

Cette documentation a été réalisé avec la version 1.2.1 du package Squeezebox ainsi que la version 2.0 du plugin Constellation pour Logitech Media Server.

Le code source est disponible sur https://github.com/myconstellation/constellation-packages/tree/master/Squeezebox

Installation du package Squeezebox

Depuis le “Online Package Repository” de votre Console Constellation, déployez le package Squeezebox :

clip_image002[4]

Une fois le package télécharger votre repository local, sélectionnez la sentinelle sur laquelle déployer le package.

Pour finir, sur la page de Settings vous devez obligatoirement spécifier l’adresse URL ainsi que le port du Logitech Media Server sans le « http:// » :

clip_image004[4]

Vous pouvez également déployer ce package manuellement dans la configuration de votre Constellation :

Détails du package

Les Settings

Nom Type Détail Description
ServerUrl String Obligatoire Adresse IP du LMS avec le port
ServerUser String Facultatif Pseudo pour se connecter au LMS si défini
ServerPassword String Facultatif Mot de passe pour se connecter au LMS si défini

Les StateObjects

Ce package ne comporte aucuns StateObjects.

Les MessageCallbacks

Le package expose 2 types de MessageCallbacks :

  • SendToServer :

Ces Message Callbacks ne produisent aucunes réponses (saga).

Nom Description
Scan_Cancel Annule le scan de la librairie
Scan_Fast Lance un scan rapide de la librairie
Scan_Full Lance un scan complet de la librairie
  • SendToSqueezebox :

Le champs Squeezebox correspond au nom ou à l’adresse MAC de la squeezebox cible.

Si ce champ est laissé vide, la commande sera lancée sur toutes les squeezebox.

Vous pouvez également indiquer plusieurs squeezebox en les séparant par une virgule, exemple : « SdB,Salon » ou « e4:f4:c6:47:5e:2a,00:15:5d:01:6a:04 »

Ces Message Callbacks ne produisent aucunes réponses (saga).

Nom Champ value Champ squeezebox Description
Add_Album_Id Id de l’album Nom ou adresse MAC de la squeezebox cible Ajoute un album par son id à la fin de la playlist
Add_Artist_Id Id de l’artiste Nom ou adresse MAC de la squeezebox cible Ajoute un artiste par son id à la fin de la playlist
Add_Title_Id Id du titre Nom ou adresse MAC de la squeezebox cible Ajoute un titre par son id à la fin de la playlist
Delete_Album_Id Id de l’album Nom ou adresse MAC de la squeezebox cible Supprime les titres de l’album de la playlist
Delete_Artist_Id Id de l’artiste Nom ou adresse MAC de la squeezebox cible Supprime les titres de l’artiste de la playlist
Delete_Title_Id Id du titre Nom ou adresse MAC de la squeezebox cible Supprime le titre de la playlist
Connect Adresse IP de l’autre serveur LMS Nom ou adresse MAC de la squeezebox sur l’autre serveur LMS Connecte la squeezebox d’un autre serveur à ce serveur
Connect_To Adresse IP de l’autre serveur LMS Nom ou adresse MAC de la squeezebox cible Connecte une squeezebox de ce serveur à un autre serveur
Mute_Off Aucun Nom ou adresse MAC de la squeezebox cible Désactive l’option muet
Mute_On Aucun Nom ou adresse MAC de la squeezebox cible Active l’option muet
Mute_Toggle Aucun Nom ou adresse MAC de la squeezebox cible Active/désactive l’option muet
Next Aucun Nom ou adresse MAC de la squeezebox cible Lance la prochaine musique dans la playlist
Pause Aucun Nom ou adresse MAC de la squeezebox cible Met sur pause la musique
Play Aucun Nom ou adresse MAC de la squeezebox cible Met en lecture la musique
Play_Album Nom de l’album Nom ou adresse MAC de la squeezebox cible Lance un album basé sur son nom

(remplace la playlist en cours)

Play_Album_Id Id de l’album Nom ou adresse MAC de la squeezebox cible Lance un album basé sur son id

(remplace la playlist en cours)

Play_Artist Nom de l’artiste Nom ou adresse MAC de la squeezebox cible Lance un artiste basé sur son nom

(remplace la playlist en cours)

Play_Artist_Id Id de l’artiste Nom ou adresse MAC de la squeezebox cible Lance un artiste basé sur son id

(remplace la playlist en cours)

Play_Index Index du titre dans la playlist Nom ou adresse MAC de la squeezebox cible Lance une musique par sa position dans la playlist
Play_Playlist Nom de la playlist Nom ou adresse MAC de la squeezebox cible Lance une playlist basée sur son nom

(nom de la playlist requis – remplace la playlist en cours)

Play_Playlist_Id Id de la playlist Nom ou adresse MAC de la squeezebox cible Lance une playlist basée sur son id

(remplace la playlist en cours)

Play_Title Nom du titre Nom ou adresse MAC de la squeezebox cible Lance un titre basé sur son nom

(remplace la playlist en cours)

Play_Title_Id Id du titre Nom ou adresse MAC de la squeezebox cible Lance un titre basé sur son id

(remplace la playlist en cours)

Play_Title_Id_Next Id du titre Nom ou adresse MAC de la squeezebox cible Ajoute un titre à la prochaine position de la playlist basé sur son id
Play_Toggle Aucun Nom ou adresse MAC de la squeezebox cible Alterne pause et lecture de la musique
Playlist_Clear Aucun Nom ou adresse MAC de la squeezebox cible Vide la playlist en cours
Power_Off Aucun Nom ou adresse MAC de la squeezebox cible Éteint virtuellement la squeezebox
Power_On Aucun Nom ou adresse MAC de la squeezebox cible Allume virtuellement la squeezebox
Power_Toggle Aucun Nom ou adresse MAC de la squeezebox cible Alterne éteindre/allumer virtuellement la squeezebox
Previous Aucun Nom ou adresse MAC de la squeezebox cible Lance la musique précédente dans la playlist
Random_Album Aucun Nom ou adresse MAC de la squeezebox cible Lance un mix aléatoire par album
Random_Artist Aucun Nom ou adresse MAC de la squeezebox cible Lance un mix aléatoire par artiste
Random_Title Aucun Nom ou adresse MAC de la squeezebox cible Lance un mix aléatoire
Random_Year Aucun Nom ou adresse MAC de la squeezebox cible Lance un mix aléatoire par année
Repeat_Off Aucun Nom ou adresse MAC de la squeezebox cible Désactive la répétition
Repeat_Playlist Aucun Nom ou adresse MAC de la squeezebox cible Active la répétition de la playlist
Repeat_Title Aucun Nom ou adresse MAC de la squeezebox cible Active la répétition du titre en cours
Repeat_Toggle Aucun Nom ou adresse MAC de la squeezebox cible Alterne les modes de répétition
Shuffle_Album Aucun Nom ou adresse MAC de la squeezebox cible Active le mélange par album
Shuffle_Off Aucun Nom ou adresse MAC de la squeezebox cible Désactive le mélange
Shuffle_Title Aucun Nom ou adresse MAC de la squeezebox cible Active le mélange par titre
Shuffle_Toggle Aucun Nom ou adresse MAC de la squeezebox cible Alterne les modes de mélange
Stop Aucun Nom ou adresse MAC de la squeezebox cible Stop la musique en cours de lecture
Sync Nom ou adresse MAC de la squeezebox qui sera synchronisée Nom ou adresse MAC de la squeezebox cible Synchronise une autre squeezebox avec celle-ci
Sync_Off Aucun Nom ou adresse MAC de la squeezebox cible Désynchronise la squeezebox
Sync_To Nom ou adresse MAC de la squeezebox « maître » Nom ou adresse MAC de la squeezebox cible Synchronise cette squeezebox à une autre
Volume Niveau du volume Nom ou adresse MAC de la squeezebox cible Définie le niveau du volume
Volume_Down Aucun Nom ou adresse MAC de la squeezebox cible Baisse le volume de 2%
Volume_Up Aucun Nom ou adresse MAC de la squeezebox cible Augmente le volume de 2%

Le plugin Logitech Media Server (version 2.0)

Installation

Afin d’éviter de questionner le Logitech Media Server toutes les x secondes et pour obtenir les informations le plus rapidement possible, un plugin pour le Logitech Media Server a été développé.

Pour l’installer, il faut rajouter le répertoire http://erwann.laville.free.fr/repo.xml en bas de la page plugins de votre Logitech Media Server.

clip_image006[4]

Une fois validé, un nouveau plugin sera disponible à l’installation. Il faudra le coche, valider et redémarrer pour l’installer.

clip_image008[4]

Une fois installé, vous pourrez indiquer les informations de Constellation dans les paramètres du plugin :

  • L’adresse IP de Constellation sans http:// et sans le port
  • Le port de Constellation (par défaut 8088)
  • La clé API correspondant au package virtuel
  • Le nom de la sentinel dans laquelle sera publiée les informations (par défaut Squeezebox)
  • Le nom du package dans lequel sera publié les informations (par défaut Info)

clip_image010

Une fois tout indiqué, celui-ci va envoyer un message dans les logs de Constellation afin de tester la connexion.

clip_image012

clip_image013[4]

Vous pouvez alors rafraichir cette page de paramètre pour voir le résultat de cette communication (cela peut prendre jusqu’à 5 secondes).

Si le résultat est Ok, vous aurez « Communication Ok » dans la partie résultat.

clip_image015[4]

S’il y a eu un problème de transmission, cette erreur s’affichera.

clip_image017[4]

Vous aurez également en dernier l’url qu’utilisera LMS pour envoyer des informations à Constellation.

À noter qu’à la connexion avec Constellation, LMS réalise une purge de la Sentinel / du Package indiqués dans la configuration.

Voilà la configuration du plugin est terminé. Tous les StateObjects seront envoyés vers la sentinelle et le package indiqués.

Il faut donc les rajouter dans Constellation, par exemple ici :

Les StateObjects

Vous retrouverez autant de StateObject que de lecteurs connectés au LMS ainsi qu’un StateObject indiquant la liste des Squeezebox connectées :

Nom Type Description
Players N/A Liste des lecteurs avec pour chacun le nom et l’adresse MAC.
<< Nom du lecteur >> N/A Informations sur le lecteur (nom, adresse MAC, adresse IP…) ainsi que sur la lecture en cours (titre, album, artiste, volume, pochette…)

clip_image019

clip_image021

Squeezebox : le multiroom connecté dans Constellation
Étiqueté avec :            

Sur le forum :

  1. Avatar for hydro hydro says:

    Bonjour,

    Un sujet officiel pour le package Squeezebox.
    Ce package Squeezebox permet de contrôler les lecteurs connectés au Logitech Media Server ainsi que des lancer des scan de sa bibliothèque.
    Voici la liste des commandes disponibles :

      SendToSqueezebox
    • Add_Album_Id* : Ajoute un album par son id à la fin de la playlist
    • Add_Artist_Id* : Ajoute un artiste par son id à la fin de la playlist
    • Add_Title_Id* : Ajoute un titre par son id à la fin de la playlist
    • Delete_Album_Id* : Supprime les titres de l’album de la playlist
    • Delete_Artist_Id* : Supprime les titres de l’artiste de la playlist
    • Delete_Title_Id* : Supprime le titre de la playlist
    • Connect* : Connecte la squeezebox d’un autre serveur à ce serveur
    • Connect_To* : Connecte une squeezebox de ce serveur à un autre serveur
    • Mute_Off : Désactive l’option muet
    • Mute_On : Active l’option muet
    • Mute_Toggle : Active/désactive l’option muet
    • Next : Lance la prochaine musique dans la playlist
    • Pause : Met sur pause la musique
    • Play : Met en lecture la musique
    • Play_Album* : Lance un album basé sur son nom (remplace la playlist en cours)
    • Play_Album_Id* : Lance un album basé sur son id (remplace la playlist en cours)
    • Play_Artist* : Lance un artiste basé sur son nom (remplace la playlist en cours)
    • Play_Artist_Id* : Lance un artiste basé sur son id (remplace la playlist en cours)
    • Play_Index* : Lance une musique par sa position dans la playlist
    • Play_Playlist* : Lance une playlist basée sur son nom (remplace la playlist en cours)
    • Play_Playlist_Id* : Lance une playlist basée sur son id (remplace la playlist en cours)
    • Play_Title* : Lance un titre basé sur son nom (remplace la playlist en cours)
    • Play_Title_Id* : Lance un titre basé sur son id (remplace la playlist en cours)
    • Play_Title_Id_Next* : Ajoute un titre à la prochaine position de la playlist basé sur son id
    • Play_Toggle : Alterne pause et lecture de la musique
    • Playlist_Clear : Vide la playlist en cours
    • Power_Off : Éteint virtuellement la squeezebox
    • Power_On : Allume virtuellement la squeezebox
    • Power_Toggle : Alterne éteindre/allumer virtuellement la squeezebox
    • Previous : Lance la musique précédente dans la playlist
    • Random_Album : Lance un mix aléatoire par album
    • Random_Artist : Lance un mix aléatoire par artiste
    • Random_Title : Lance un mix aléatoire
    • Random_Year : Lance un mix aléatoire par année
    • Repeat_Off : Désactive la répétition
    • Repeat_Playlist : Active la répétition de la playlist
    • Repeat_Title : Active la répétition du titre en cours
    • Repeat_Toggle : Alterne les modes de répétition
    • Shuffle_Album : Active le mélange par album
    • Shuffle_Off : Désactive le mélange
    • Shuffle_Title : Active le mélange par titre
    • Shuffle_Toggle : Alterne les modes de mélange
    • Stop : Stop la musique en cours de lecture
    • Sync* : Synchronise une autre squeezebox avec celle-ci
    • Sync_Off : Désynchronise la squeezebox
    • Sync_To* : Synchronise cette squeezebox à une autre
    • Volume* : Définie le niveau du volume
    • Volume_Down : Baisse le volume de 2%
    • Volume_Up : Augmente le volume de 2%

    * : les commandes nécessitent une valeur

      SendToSqueezebox
    • Scan_Cancel : Annule le scan de la librairie
    • Scan_Fast : Lance un scan rapide de la librairie
    • Scan_Full : Lance un scan complet de la librairie
    À ce package Squeezebox s'accompagne un plugin Constellation pour Logitech Media Server disponible à http://erwann.laville.free.fr/repo.xml Ce plugin vous permet d'avoir un SO de la liste des squeezebox connectées à votre LMS : Players Ainsi que pour chacune, un SO avec son statut : Player
  2. Avatar for hydro hydro says:

    Alors première question, les commandes constellation sont affecté à la Sentinel, par exemple chez moi : ALPHA_UI / Squeezebox

    Par contre j’ai un peu du mal à concevoir l’architecture pour le retour d’état. Pour le moment cela ressemble à :

    ALPHA_UI / Squeezebox / Salon_Statut / Allumé
    ALPHA_UI / Squeezebox / Chambre_Statut / Eteint
    

    Cela me gène un peu comme architecture, j’ai pensé à dissocier la Sentinel des commandes et du retour d’info :m

    Salon / Squeezebox / Statut
    Chambre / Squeezebox / Statut
    

    Cela est un peu plus lisible mais comment traiter le cas de plusieurs Squeezebox dans la même pièce ?

    Le mieux serait peut-être d’utiliser du json comme par exemple :

    ALPHA_UI / Squeezebox / Salon / {"Statut":"Allumer","Volume:100"...}
    ALPHA_UI / Squeezebox / Chambre / {"Statut":"Eteint","Volume:80"...}
    

    Mon seul problème c’est que l’envoi d’info du LMS vers Constellation se fait par l’api REST, or il faut que j’envoi toutes les données à chaque changement. Donc si je modifie le volume je dois lui envoyer l’artiste, le titre, l’album, le volume, l’état, la pochette, l’état de répéter… au lieu d’envoyer simplement le nouveau volume. Cela permet de moins charger le LMS.

    Donc à part s’il y a un moyen de “compléter” un json via l’api REST, je ne vois pas trop comment organiser mon plugin et mon architecture Constellation en général (comme par exemple pour le Zwave).

  3. Avatar for hydro hydro says:

    Bonjour,

    Alors j’ai bien avancé sur les plugins :

    <ul>
    <li>
    

    Le package Squeezebox permet de contrôler les Squeezebox (play, pause, stop, suivant…), il me manque juste à faire les commandes nécessitant x paramètres (volume par exemple).

    <li>Le package Squeezebox permettra aussi de contrôler le Serveur LMS : rescan de la librairie et action sur l’ensemble des Squeezebox (play all, mute all...)</li>
    
    
    <li>Le plugin Constellation pour LMS est opérationnel. Il envoi en temps réel la liste des lecteurs connectés et pour chaque lecteur il envoi les info complètes. Petit plus, il y a possibilité d'avoir la librairie complète à jour dans un SO à chaque rescan.</li></ul>
    

    Voici quelques screen des info obtenues sur les players :



  4. Avatar for hydro hydro says:

    Le package est en ligne il faut juste que je corrige le plugin pour LMS :slight_smile:

  5. Je confirme sa fonctionne super bien.
    Encore merci :slight_smile:

  6. Avatar for hydro hydro says:

    Voici le repo à mettre en bas de la page plugin du LMS :

    http://erwann.laville.free.fr/repo.xml

    Vous verrez après validation un nouveau plugin Constellation à installer.

    Vous avez une page paramètre pour indiquer l’url et la clé api de constellation.

    Une fois fini, dans constellation il faut ajouter la sentinelle Squeezebox avec le package info :

          <sentinel name="Squeezebox" credential="Standard">
            <packages>
              <package name="Info" enable="true" credential="Standard" />
            </packages>
          </sentinel>
    

    Vous aurez enfin la liste des lecteurs et pour chaque lecteur, son statut et la musique en cours de lecture.


    ATTENTION : les commandes serveur du package qui s’appliquent sur plusieurs lecteurs nécessitent ce plugin pour fonctionner pour le moment.

  7. Avatar for hydro hydro says:

    Bonjour,

    J’ai envoyé la version 1.0 du package les principaux changements :

    • ajout d’un titre / artiste / album par son nom ou son id

    • ajout d’un titre à la prochaine position par son id

    • les commandes squeezebox sont envoyées vers toutes les squeezebox si le paramètre squeezebox n’est pas rempli, vers un ou plusieurs squeezebox si indiqué (séparé par une virgule).

    • supression de la plupart des commandes serveur qui agissaient sur l’ensemble des squeezebox.

    Voilà plus qu’à attendre la validation :slight_smile:

  8. Avatar for hydro hydro says:

    Comme une mise à jour ne vient jamais seule, j’ai également mis à jour le plugin Constellation pour LMS :

    Changelog version 1.1.0 :

    • Supression du SO d’un player si celui-ci n’est plus connecté au LMS

    Changelog version 1.1.1 :

    • Supression du menu “Constellation GUI” inutile dans les menus de LMS.
    • Passage des logs en info au lieu de debug par défaut.

    J’en profite également pour vous dire que depuis la version 1.0 du paxkage squeezebox, le plugin Constellation pour LMS n’est plus requis pour envoyer des commandes à plusieurs ou toutes les squeezebox :slight_smile:

Continuez la discussion sur le forum Constellation

6 plus

Participants

Avatar for cllio Avatar for speedermenn Avatar for hydro Avatar for marmoul-70 Avatar for sebastien_warin