I recently had an internet outage from my ISP. During this outage the Sonos app was unable to play music from the Plex server, even though they are both on the same local network, which was working correctly.
The Plex app on the Sonos speakers should be able to connect to the local IP address of the Plexpass server. It is acceptable that you can’t teach one about the other while the internet is offline, but the internet should not be required to use it, that’s sort of the point of having local content after all.
If there is some sort of configuration option or network setup that I might have wrong that prevents this from working I’d love to know about it!
The Plex service for Sonos actually runs in the cloud, not on the speakers, so unfortunately in the case of an internet outage you wouldn’t be able to play via Sonos.
The media plays directly from PMS to the speaker, but the service that drives it lives in the cloud. This is a necessity in order for Sonos to have a single URL to talk to for all Plex users and have Plex in the Sonos music service catalog.
Is it correct to say then that it is impossible to have the Plex-for-Sonos app speak directly to a local Plex server due to Sonos policies? (It would be possible to implement a local sonos API endpoint and set up a custom service-description on the sonos player, but Sonos does not support such local connections for apps available through their built-in services list?)
Also, is it true to say that when browsing the Plex catalog via the Sonos app, all requests are being round-tripped through the cloud? (i.e. when you browse the list of all your artists the Sonos device connects to the Plex cloud API, which connects to my local server, which returns a result to the Plex cloud, which returns the result to my Sonos speaker?)
It’s not Sonos’ policies, that’s just how Sonos music services work. To be listed as a service in the Sonos app you have to define a URL for the web service that is a) static, and b) works for every user on the service.
Now imagine that it’s somehow bundled with PMS and users have to define a custom service descriptor in their speakers, functionality that’s technically used for service development. Not only is this going to be accessible to a fraction of Sonos + Plex users, but it also increases the friction of shipping updates when Sonos changes services on their end.
When you are browsing Plex in the Sonos app, yes, it is round-tripping through the cloud, even if your speaker is literally sitting on top of the computer running PMS. This certainly can come with a performance hit, and doesn’t work at all if the internet is down. Like I mentioned above, when it comes to actually playing the file, we make every effort to give the speaker the direct URL to the target PMS so that the music files don’t have to detour through the cloud.
It’s not Sonos’ policies, that’s just how Sonos music services work. To be listed as a service in the Sonos app you have to define a URL for the web service that is a) static, and b) works for every user on the service.
That sounds like a policy to me, even if it’s a policy they’re enforcing through their API.
My point in asking is that now we know we can direct our uncharitable thoughts towards Sonos, knowing Plex is doing everything it is able to to be able to play our music for us. (Not a huge stretch. Sonos has great audio, but I have nothing good to say about their software team… )
While I, personally, would benefit from having the API endpoint bundled into PMS, I totally understand why that’s not viable due to Sonos’ requirements. I shall direct my ire in their direction regarding the issue.
If Plex could write some kind of interface that would provide the output/data that Sonos is looking for as part of the PMS, it’s not impossible that a user could add their local Plex server as a custom Sonos music service. There are a couple of other third-party media servers that take advantage of this functionality. But it’s not something Sonos advertises or has documented, so there’s no guarantee that it could remain forever.
One such media server is Subsonic, which details the capability of Sonos to support custom services under the “Using a remote Subsonic server” section of this page on their site: http://subsonic.org/pages/sonos.jsp