Fonctionnement intégration Sonos

Bonjour. Après le flot de nouveautés, je ré teste Gladys, sur laquelle je garde un œil depuis pas mal de temps. J’ai commencé par essayer d’intégrer mes enceintes Sonos et il semblerait que ça ne marche pas car les enceintes sont sur un VLAN dédié, distinct de celui où tourne Gladys ? Est-ce que quelqu’un a réussi à faire fonctionner avec cette configuration ? Le scan ne donne aucun résultat et sauf erreur de ma part, il n’y a aucun moyen de spécifier les IPs des enceintes ?

Merci !

Hello,

J’ai le même problème de mon côté :innocent:

Salut,

Je pense qu’il faut que tu autorises le protocole mdns entre tes VLANs (Sonos et Gladys) sur ton routeur.

Je croyais comprendre que l’intégration Sonos n’utilise pas le mdns ?

Salut, peut être alors, mais il doit bien y avoir un protocole de decouverte automatique ?

Salut,

Oui, ça semble cohérent avec ta configuration réseau.

L’intégration Sonos actuelle de Gladys utilise la découverte automatique SSDP/UPnP. Elle envoie donc une requête multicast sur 239.255.255.250:1900.

https://sonos.svrooij.io/sonos-communication

Avec Gladys et les Sonos placés sur deux VLAN différents, ce multicast ne traverse généralement pas le routeur par défaut. Le scan peut donc ne rien trouver même si Gladys est autorisé à communiquer directement avec les IP des enceintes.

Et effectivement, en regardant l’intégration actuelle, le scan passe uniquement par InitializeWithDiscovery() : il ne semble pas y avoir de possibilité dans Gladys de renseigner manuellement l’IP d’une enceinte.

La bibliothèque Sonos utilisée derrière par Gladys permet cependant de partir d’un appareil connu plutôt que de faire uniquement de la découverte réseau. Ça pourrait donc être une évolution intéressante de l’intégration : permettre de renseigner manuellement l’IP d’un Sonos pour les installations avec VLAN.

À court terme, l’autre solution serait de configurer le réseau pour relayer correctement le SSDP entre les deux VLAN.

@David Je vais travailler sur sonos en externe pour ajouter la gestion d’ip connu, plus la lecture par uri. (le reste sera identique à la native :slight_smile:
J’aurais besoin de toi pour tester @prohand tu es le bienvenue aussi :slight_smile:

Avec plaisir :winking_face_with_tongue:

@prohand @David

Dite moi si avec ça vous trouvez vos sonos :slight_smile:

https://ghcr.io/vincentbesseau/gladys-sonos:0.1.1

{
  "manifest_version": 1,
  "type": "device",
  "name": "Sonos",
  "description": {
    "en": "Control Sonos speakers locally, including VLAN setups, and play any content URI.",
    "fr": "Contrôlez vos enceintes Sonos en local, y compris en VLAN, et lancez n'importe quelle URI."
  },
  "version": "0.1.1",
  "docker_image": "ghcr.io/vincentbesseau/gladys-sonos:0.1.1",
  "gladys_version": ">=4.86.0",
  "cover_image": "https://raw.githubusercontent.com/vincentBesseau/gladys-sonos/main/cover.jpg",
  "categories": [
    "multimedia"
  ],
  "transports": [
    "local"
  ],
  "network_discovery": [
    {
      "type": "ssdp",
      "st": "urn:schemas-upnp-org:device:ZonePlayer:1"
    }
  ],
  "config_schema": [
    {
      "key": "intro",
      "type": "section",
      "label": {
        "en": "Sonos, controlled locally",
        "fr": "Sonos, piloté en local"
      },
      "description": {
        "en": "This integration controls your Sonos speakers directly over your local network - no cloud account, no Sonos app login. It discovers them automatically (SSDP). If your Sonos speakers are on a different VLAN/subnet than Gladys, automatic discovery will not find them: fill in one known IP below instead, it is enough to recover the whole household.",
        "fr": "Cette intégration pilote vos enceintes Sonos directement sur votre réseau local - aucun compte cloud, aucune connexion à l'app Sonos. Elle les découvre automatiquement (SSDP). Si vos enceintes Sonos sont sur un VLAN/sous-réseau différent de Gladys, la découverte automatique ne les trouvera pas : renseignez plutôt une IP connue ci-dessous, cela suffit à retrouver toute l'installation."
      }
    },
    {
      "key": "known_ips",
      "type": "string",
      "label": {
        "en": "Known IPs (VLAN fix)",
        "fr": "IPs connues (contournement VLAN)"
      },
      "description": {
        "en": "One Sonos speaker IP is enough: this integration then asks it for your whole household's layout. Separate multiple entries with a comma or a new line.",
        "fr": "L'IP d'une seule enceinte Sonos suffit : l'intégration lui demande ensuite l'organisation de toute votre installation. Séparez plusieurs entrées par une virgule ou un retour à la ligne."
      },
      "placeholder": {
        "en": "192.168.10.21",
        "fr": "192.168.10.21"
      }
    }
  ],
  "actions": [
    {
      "key": "scan_now",
      "label": {
        "en": "Scan for Sonos speakers",
        "fr": "Rechercher les enceintes Sonos"
      },
      "timeout_seconds": 30
    }
  ]
}

Après avoir du ouvrir le port 1400 en TCP j’ai bien mes 2 enceintes Sonos :

J’ai pas pu tester pour le moment car les enfants dorment :innocent:

Elles ont le même nom par contre ici mais j’ai vérifié dans l’application Sonos et c’est pareil, faudrait que je regarde pourquoi plus tard :sweat_smile:

Merci pour le dev :wink:

Super, j’attend le retour de @David :slight_smile:

@pierre-gilles Tu penses qu’il vaut mieux que je fasse une PR vers gladys ? ou qu’on place sonos en deprecated en natif ?
pour info, j’ai ajouté sur sonos deux champs supplémentaire (musique actuelle) et play uri. L’autre changement c’est l’ajout des ip connues pour les VLAN

Bonjour,

De mon côté la découverte ne marche pas avec un simple scan mais ca marche en spécifiant les IPs des enceintes, y compris depuis un autre VLAN. Par contre ca me donne deux fois la fonction texte ? et ca ne donne pas autant de réglages que l’intégration HA (bass loudness etc).

Le now playing marche aussi mais il indique deux fois le nom de l’enceinte. Et du reste j’ai bien le bon nom pour toutes les enceintes. Par contre je ne comprend pas à quoi sert la fonction play URI.

Ce ne son pas des soucis il a deux fonction text cest normal play uri et current song

Et ce que tu vois en double cest le fonctionnement de gladys device (function)

@pierre-gilles cest pas si simple pour quelqu’un venant de ha

Les autres feature peuvent arrivé par la suite je regarderais. Allons y calmement ^^

Via une scene tu peux lui passer une uri type Spotify par exemple.

Jai fais une pr sur Spotify pour avoir accès a certaine donné soyons patient ^^

Comme ca via une scene on pourra jouer une playlist unr musique etc

C’est pas mal ca permettrait d’envoyer une playlist réveil en douceur le matin…

En tout cas hier j’avais un soucis et aujourd’hui il est réglé. On ne peut pas dire que ma patience est testée ! Un grand merci ! Je reste à disposition si je peux aider, avec plaisir.

Sonos interne doit être déprécié au profit d’une intégration externe