Ajout intégration sonos - notamment enceintes

Prise en charge de appareil sonos

J’ai vue qu’il existait une application sur Github qui fait le lien entre les enceintes sonos et mqtt.
Sonos2mqtt
Est ce que ça pourrait fonctionner?

Je pense que c’est pas plus simple que d’intégrer sonos directement ou l’API node.js est bien faite, donc autant coder en direct avec le package npm sonos :slight_smile:

Il faut coder dans tous les cas !

Hello quelqu’un est il sur cette intégration ? Savoir où en était le sujet ?

Personne ne travaille sur cette intégration à ma connaissance!

J’ai vue qu’il y avait une PR qui a été commencé et fermé.
Est ce que cette PR est le début du développement ?

J’étais allé chez un utilisateur Gladys en été 2019 quand j’avais fais un tour des utilisateurs, et j’avais fais un premier poc chez lui car il avait du Sonos :slight_smile:

Après, c’était vraiment un court passage et donc je n’ai pas développé le service entier, de toute façon ce n’était pas le but.

Ce que je veux vraiment pour chaque service c’est qu’il y ait un référent qui soit le « responsable » de l’intégration, référent de préférence utilisateur du matériel pour pouvoir faire la maintenance et le support de l’intégration sur le long terme. Malheureusement pour le Sonos il n’y avait personne à l’époque pour porter ce développement suite au POC.

J’ai fermé la PR depuis pour ne pas bloquer quelqu’un qui pourrait penser qu’un développement est en cours, et surtout le code date d’il y a 3 ans maintenant, ce n’est pas forcément à jour.

Pour cette intégration, il y a plusieurs possibilité:

  • gestion des enceintes Sonos
    Juste la gestion des enceintes Sonos

ou

  • gestion des enceintes et de la musique
    L’application Sonos gère les enceintes mais aussi la diffusion de musique via plusieurs canaux de diffusions comme:
    – plateforme de streaming musical Spotify, Deezer, Amazon music, …
    – live radio
    – playlist …

Par exemple Home Assistant a développé une intégration complète avec la diffusion de la musique ce qui rend l’intégration très complète et en mon sens je pense que c’est le plus judicieux.

Il y a un point négatif, si vous n’avez pas d’enceinte Sonos, vous ne pourrais pas utilisé cette intégration donc il faudra quand même une intégration de musique pour diffuser par exemple sur des enceintes en Bluetooth.

Je peux lancer un sondage pour savoir qui a des enceintes Sonos et qui souhaite les utiliser pour diffuser de la musique.
Et connaitre les personnes qui n’en n’ont pas mais qui pourraient en avoir à la suite de cette intégration.

@pierre-gilles un autre sujet si vous avez le temps d’en discuter lors de l’appel aux développeurs.

Pour donner envie d’avoir cette intégration, je suis prêt à investir une partie ou l’intégralité sur une enceinte Sonos que j’enverrais au développeur afin qu’il puisse faire l’intégration. Et si vous voulez contribuer aussi, on peut faire une cagnotte.
Les spécificités seront bien entendu à discuter et a décider avec l’approbation de Pierre Gilles.

L’un ne peut pas être développé sans l’autre, les enceintes Sonos c’est pour jouer de la musique :smiley:

Le développement doit être organisé de la façon suivante à mon avis :

  1. Quelques recherches pour comprendre comment fonctionne les API de différents systèmes de sons: autant Sonos, Chromecast, etc… Il ne faut pas qu’on conçoive une API core qui soit Sonos-only, il faut que ce soit évolutif et générique.
  2. Spécification fonctionnelle / maquette de la musique dans Gladys 4 (dashboard et scènes)
  3. Spécification techniques: modèle de donnée / routes d’API / fonctionnement du core.
  4. Développement de l’interface (dashboard et scène)
  5. Développement de l’API music du core
  6. Développement de l’intégration Sonos s’appuyant sur l’API du core

Dans son ensemble c’est donc un assez gros développement, après en soit le développement de l’intégration Sonos n’est que le dernier bout, et c’est vraiment pas le plus dur !

C’est très généreux de ta part! Après à mon avis on en est pas encore là, il y a déjà les premiers 90% du boulot à abattre qui ne nécessitent pas de matériel. Mais bon comme je te disais en privée si ça peut motiver quelqu’un :wink:

Sur la partie core, je pourrais donner un coup de main, après pour l’instant la partie musique n’était pas dans mes priorités personnelles, car il y a à mon sens d’autres manquements peut-être plus critique (gestion des volets roulants/ Aide et review sur la PR ZWaveJS pour pouvoir virer Open-Zwave ce qui débloque beaucoup de choses ensuite/ et autre)

Pour l’organisation je te fais confiance.
Le site de developer.sonos est je pense assez complet.

Voici quelques box que je viens de faire:

Celle de Jacky n°1:
Box de Jacky

Box n°2:
Box 2

Box n°3: image de la musique
Box 3

Box n°4: Façon application Sonos
Box 4

Box n°5: parcourir les radios
Box 5

1 Like

Bonjour,

est ce que au niveau des fonctionnalités un truc comme ça ferai l’affaire?

Speaker (Core): cette partie (dans le core) gère l’envoi du flux audio vers 1 enceinte configuré dans gladys

  • Connait tous les devices avec features « speaker » (sortie standart, enceinte bluetooth, enceinte sonos, chromecast, …)
  • Permet de lancer un flux audio sur 1 enceinte, gère le format du flux en fonction du type d’enceinte (AudioBuffer, url stream, …)
  • S’appui sur le service music pour la transformation du flux par provider
  • Listener d’un event pour recevoir la demande d’action (play, pause, next, volume, …) vers une enceinte
  • Sender d’un event dans le cas de la MUSIQUE pour renvoyer à l’IHM les info de la musique en cours
  • (?) Dans le cas ou gladys voudrait s’exprimer en parlant, baisser(ou mettre en pause) le son en cours sur l’enceinte de sortie pour parler puis remettre le son au bon volume

Music (Service):

  • Initialise la liste des providers configurés:
    ** Un provider est une source de musique (fichier locaux, spotify, deezer, radio, …)
    ** Les configurations des provider sont stockées dans les variables gladys (répertoire de lecture pour les fichier, credential spotify, …)
    ** Sauvegarde du provider par defaut dans les variables gladys
  • Initialise (pour chaque providers) la liste des playlists disponible au démarrage
  • Met à jour (pour chaque providers) la liste des playlists disponible toutes les 6h
  • Sender d’un event pour les ordre au speaker
  • API spécialisé pour la partie intégration / sauvegarde des paramètres par provider
  • API unique pour tous les providers avec en paramètre de requête le provider + playlist + speaker voulu, la liste d’action: play / pause / stop / previous / next / volume / navigation dans la musique / recherche morceau (ou playlist) / choix mode repeat ou aléatoire

IHM:

  • Intégrations:
    ** 1 intégration par provider pour les paramètres nécessaires (avec choix du provider par défaut)
    ** 1 intégration pour la configuration des devices speaker: page discover pour scanner les enceintes (sortie standard, bluetooth, sonos, chromecast, …) et création dans gladys avec une feature « speaker » (avec choix du speaker par defaut)
  • Dashboard:
    ** Box dash: cf capture plus haut (? si on lance des musiques sur plusieurs speaker en // comment on le distingue ou coupe tout d’un coup ?)
    ** Edit box dash: box qui sélectionne le provider / la playlist / le speaker (? ou la pièce?) par defaut de la box
  • Scene: permettre de lancer / couper une musique avec les paramètres provider / playlist / speaker (? ou la pièce?)
  • Chat: permettre de mapper chaque action de l’api (commune à tous providers) par le chat, si pas de provider / playlist / speaker précisé dans la phrase utiliser les valeurs par défaut
1 Like

Merci @euguuu pour tous les détails des fonctionnalités. Tu as du bien y réfléchir avant.

Je rajoutetai dans le cas où Gladys voudrais parlait

– Scène: permettre d’envoyer sur les enceintes l’etat d’un device (par exemple lecture du message écrit que l’on envoie dans le chat)

1 Like