Squeezebox : le multiroom connecté dans Constellation


#1

Original publié sur: https://developer.myconstellation.io/package-library/squeezebox/

Sommaire1 Installation du package Squeezebox2 Détails du package2.1 Les Settings2.2 Les StateObjects2.3 Les MessageCallbacks3 Le plugin Logitech Media Server (version 2.0)3.1 Installation3.2 Les StateObjects 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
#2

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

#3

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).


#4

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 :




#5

Encore du super bon boulot !


#6

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


#7

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


#8

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.


#9

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:


#10

Merci l’ami


#11

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:


#12

Nouvelles versions​ pour le package Squeezebox et le plugin Constellation.

Package Squeezebox version 1.1 :

    Ajout de commandes :
  • Add_Album_Id : Ajoute un album par son id à la fin de la playlist (id de l'album requis)
  • Add_Artist_Id : Ajoute un artiste par son id à la fin de la playlist (id de l'artiste requis)
  • Add_Title_Id : Ajoute un titre par son id à la fin de la playlist (id du titre requis)
  • Delete_Album_Id : Supprime les titres de l'album de la playlist (id de l'album requis)
  • Delete_Artist_Id : Supprime les titres de l'artiste de la playlist (id de l'artiste requis)
  • Delete_Title_Id : Supprime le titre de la playlist (id du titre requis)
  • Connect : Connecte la squeezebox d'un autre serveur à ce serveur (nom de la squeezebox sur l'autre serveur requis dans le champ squeezebox , adresse IP de l'autre serveur requis dans le champ value)
  • Connect_To : Connecte une squeezebox de ce serveur à un autre serveur (adresse IP de l'autre serveur requis dans le champ value)
  • Play_Index : Lance une musique par sa position dans la playlist (index du titre dans la playlist requis)
  • Play_Title_Id_Next : Ajoute un titre à la prochaine position dans la playlist (id du titre requis)
    Suppression de la commande Play_Next_Id (remplacée par Play_Title_Id_Next)
    Modification divers du code pour éviter les exceptions dans les commandes

Plugin Constellation version 2.0 :

    Refonte de la page paramètres (vous devrez peut-être vous réenregistrer)
  • Ajout du nom de package et de sentinelle personnalisé
  • Vous ne pouvez plus valider si un des champs est vide
  • Quand vous validez les paramètres, un message est envoyé à constellation dans les logs. Si ce message apparait bien, la configuration est OK, sinon il faudra vérifier les champs de configuration. Le résultat s'affichera après une actualisation de la page (cela peut prendre jusqu'à 5 secondes)

#13

Super boulot merci


#14

Plugin Constellation version 2.1.0 :

<li>Utilisation de CheckAccess pour gérer la connexion à Constellation. Vous aurez toujours un message dans les logs si la connexion est OK mais en info. </li>

<li>Ajout d'un lifetime correspondant au temps restant si le lecteur est en lecture. Les autres cas de figure retourne un lifetime illimité. </li>

<li>Correction de bugs empêchant le bon envoi des informations concernant la synchronisation</li>
  • Ajout d'un type PlayersList pour le SO Players et d'un type PlayerInformation pour les SO des lecteurs.

  • #15

    Fonctionne super sur mon installation
    Merci pour le boulot


    #16

    Petite mise à jour estivale pour la sécurité histoire de pas laisser son LMS ouvert sans mot de passe.

    Package Squeezebox version 1.2 :

    <li>Ajout de deux settings (ServerUser et ServerPassword) si vous avez protégé le Logitech Media Server avec un mot de passe</li>
    

    #17

    Bonsoir,

    Je souhaiterais installer le plugin sur LMS, et il me dit que ma version de LMS n’est pas compatible avec le plugin.

    Version installée de Logitech Média Serveur sur la machine: 7.7.6

    Quel version dois je avoir et ou la trouver?

    Merci