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 :
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:// » :
Vous pouvez également déployer ce package manuellement dans la configuration de votre Constellation :
1 2 3 4 5 |
<package name="Squeezebox"> <settings> <setting key="ServerUrl" value="192.168.1.10:9000" /> </settings> </package> |
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.
Une fois validé, un nouveau plugin sera disponible à l’installation. Il faudra le coche, valider et redémarrer pour l’installer.
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)
Une fois tout indiqué, celui-ci va envoyer un message dans les logs de Constellation afin de tester la connexion.
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.
S’il y a eu un problème de transmission, cette erreur s’affichera.
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 :
1 2 3 4 5 |
<sentinel name="Squeezebox" credential="Standard"> <packages> <package name="Info" /> </packages> </sentinel> |
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…) |
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 :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 à :
Cela me gène un peu comme architecture, j’ai pensé à dissocier la Sentinel des commandes et du retour d’info :m
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 :
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).
Bonjour,
Alors j’ai bien avancé sur les plugins :
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).
Voici quelques screen des info obtenues sur les players :
Encore du super bon boulot !
Le package est en ligne il faut juste que je corrige le plugin pour LMS
Je confirme sa fonctionne super bien.
Encore merci
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 :
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.
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
Merci l’ami
Comme une mise à jour ne vient jamais seule, j’ai également mis à jour le plugin Constellation pour LMS :
Changelog version 1.1.0 :
Changelog version 1.1.1 :
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