Contrôler Sonos depuis un script


#1

Bonjour,

Je souhaiterais réaliser différentes actions sur mon lecteur Sonos en fonction d’évènements se produisant à mon domicile :

  • lire un morceau particulier (genre alarme) quand on porte s’ouvre alors que je suis détecté comme absent ;
  • lire une playlist donnée quand je rentre chez moi le soir ;
  • écouter une station de radio (via TuneIn) quand j’arrive dans la cuisine le matin.

Pour cela, je pense donc écrire des scripts, qui seront invoqués via des scénarios.

J’ai suivi le tuto dispo ici, ce qui m’a permis de facilement installer le module Sonos et faire quelques essais simples style “play/pause”.

Le souci que je rencontre maintenant est de trouver les commandes à invoquer dans les scripts pour lire ce que je souhaite sur le lecteur Sonos.
J’ai réussi à trouver la commande suivante pour lire un morceau se trouvant dans ma bibliothèque, sur un disque réseau :
gladys.modules.sonos.music.play({uri: "x-file-cifs://serveur/HDD/Music/abba/Waterloo/01%20Waterloo.mp3", deviceType : {device : 50}});

(oui, ABBA, ça peut faire fuir les voleurs, sait-on jamais :smiley: )

En revanche, je n’ai pas trouvé comment lancer une playlist, et encore plus important dans mon cas, comment lancer la lecture d’une station de radio que j’écoute sur le Sonos via TuneIn.

Ça serait super si quelqu’un pouvait partager son expérience “Gladys + Sonos”.

Longue vie à ce projet génial!


#2

Hello !

Alors Tu peux consulter toute l’API REST de Music ici => https://documentation.gladysproject.com/#api-Music

Connecte toi sur Gladys et accède dans ton navigateur à “IP_DE_TON_RASP/music/playlist”, ça te donnera la liste des playlists en json ( j’en conviens, pas super lisible )

Chaque playlist à une sorte d’URI, récupére là et ensuite tu peux faire :

gladys.music.playPlaylist({ identifier: URI, room: ID_ROOM });

Je n’ai pas accès à mon instance Gladys qui gère la Sonos là tout de suite donc je t’écris ça de tête :stuck_out_tongue: Dis moi si tu as des questions :wink:


[Résolu] Sonos - Jouer une musique aléatoirement
#3

Bonjour Pierre-Gilles,

J’avais en effet vu qu’on pouvait récupérer la liste des playlists avec l’API Rest, mais ensuite je ne filais pas le bon argument à la fonction playPlaylist.

Pour mémoire, voilà donc l’output de la requête http://gladys.local/music/playlist :
[{"title":"Batterie Facile","artist":null,"albumArtURL":"http://192.168.1.43:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a2zYzyRzz6pRmhPzyfMEC8s%3fsid%3d9%26flags%3d8224%26sn%3d2","album":null,"uri":"file:///jffs/settings/savedqueues.rsq#0"},{"title":"liste test 1","artist":null,"albumArtURL":"http://192.168.1.43:1400/getaa?u=x-file-cifs%3a%2f%2fbbox%2fBBOX_HD%2fMusic%2fArctic%2520Monkeys%2fam%2f01%2520Do%2520I%2520Wanna%2520Know_.mp3&v=28","album":null,"uri":"file:///jffs/settings/savedqueues.rsq#1"}]

Ensuite, pour jouer la playlist intitulée “liste test 1”, la commande qui fonctionne dans le script est :
gladys.music.playPlaylist({ identifier: "file:///jffs/settings/savedqueues.rsq#1", room : 0 });

C’est super, merci beaucoup !
Maintenant que ça marche pour les playlists, je continue sur la radio :slight_smile: Tu sais comment faire jouer une station de radio TuneIn sur le Sonos depuis un script ?
Je ne suis pas parvenu à récupérer d’uri, car si je joue une radio via TuneIn sur le Sonos, la file d’attente est vide, et le currenttrack est par exemple :
{"title":"franceinfo-midfi.mp3?ID=76zqey582k","artist":null,"album":null,"albumArtURI":null,"position":23,"duration":0,"albumArtURL":null}

J’ai tenté au bluff la commande suivante, sans succès :
gladys.modules.sonos.music.play({uri: "franceinfo-midfi.mp3?ID=76zqey582k", room : 0);

Merci encore,
Sébastien.


#4

Alors pour la station de radio TuneIn, ce n’est pas possible en l’état le module Gladys ne le gère pas, en revanche la dépendance Node.js que j’utilise dans le module le gère !

Cf =>

Il faudrait donc limite implémenter la feature dans le module Gladys ( ajouter la commande en gros )


#5

Salut @pierre-gilles :smiley: !
Ce mode radio Tunein m’interesse aussi. Si j’ai bien fais attention dans ton package.json tu embarques la version 0.12.1 de la library.
Or dans cette library la function tunein radio à été implémenter en version 0.20.0.

Y avait il une raison particulière pour que tu ne récupère que la release 0.12.1 ?


#6

@spenceur
https://github.com/GladysProject/gladys-sonos/pull/1/commits/4ea4af9892e8624dba19bf6dbb798099bbd53a29

:wink:


#7

Arf, j’ai fais une pull request en mettant la version 0.20.0 à la dépendance sonos ^^’
https://github.com/GladysProject/gladys-sonos/pull/2


#8

Merci pour la PR ! Je regarde ça ce week-end :wink: