I created a Sonos web app

  • 11 April 2023
  • 6 replies
  • 435 views

Hi all,

I was bored that I cannot stop the music when the alarm rings and I'm not at home or when I want to skip to the next track when my laptop is connected to my companies VPN. That's why I created a little web app where you can control your Sonos speaker groups.

I just hacked this one together, so don't expect too much. But at least it works from everywhere you have internet.

https://sonos-web.web.app

Features:

  • No account needed, except your Sonos account

  • Pause/Play audio

  • Skip to next track

  • Change volume

  • Play your Sonos favourites

I just tested it with Spotify, Soundcloud, Audible, and Apple Music. My System is fairly simple (1x Sonos One, 1x Sonos AMP, but not connected to a TV) so I'm not sure how it scales with more complex systems. If you run into issues, you can open an issue at the Github Repository (https://github.com/ariksidney/sonos-web).

Technical stuff:

It runs on Google Firebase and there's no backend. Every request to Sonos is a call to a Cloud Function, so the web app does not refresh itself (to save some function calls). 

I hope that some of you find it useful too 🙂

 


This topic has been closed for further comments. You can use the search bar to find a similar topic, or create a new one by clicking Create Topic at the top of the page.

6 replies

Userlevel 7
Badge +17

Seems like a nice idea. Just a question: your app is we based, but people need to put in their Sonos account details? Not that I do not trust you, but would this be safe?

Seems like a nice idea. Just a question: your app is we based, but people need to put in their Sonos account details? Not that I do not trust you, but would this be safe?

Thanks! That’s a totally valid question (and I think it’s good to not just trust me). Let me explain why you can trust it:

  • You’re not entering your credentials in any way in the web app. If you want to login, it redirects you to the official Sonos Login page. The only thing the web app gets then is a token (which is allowed to do certain actions, these are listed when you log in and you have to explicitly accept that).
    So even if I would want to get your credentials, there’s no way I could do that.
  • The tokens are refreshed regularely and also not logged anywhere.
  • The whole code (for the webapp and the functions in the background) is open source

And some points about privacy:

  • I haven’t included any analytics (like Google Analytics) in the web app. I built the app mostly for me and I’m not interested in these analytics data.
  • The only metrics I have is the number of calls to the Cloud functions (and how many errors occure). I cannot turn off this metrics (as this is provided by Google) and also quite important as these are not free (well, at the moment they still are as there are not too many people using it) 🙂

I hope that clarifies some questions!

Userlevel 7
Badge +23

Note that Sonos have yet to provide a way to “disconnect” your Sonos account from any cloud integrations like this, years after adding the feature. As with my now-retired Alexa skill, once you give access to a Sonos-cloud-connected service they have it effectively forever.

Nothing destructive can be done with the cloud access, but they can play/stop things of course. Exactly what can be found here:

https://developer.sonos.com/build/direct-control/authorize

Yes exactly. I was not sure if I just couldn’t find the option to revoke access for a 3rd party app or if it’s really not there. Thanks for the confirmation. I think Sonos should definitely provide a way to revoke access for an application.

Hi all,

I was bored that I cannot stop the music when the alarm rings and I'm not at home or when I want to skip to the next track when my laptop is connected to my companies VPN. That's why I created a little web app where you can control your Sonos speaker groups.

I just hacked this one together, so don't expect too much. But at least it works from everywhere you have internet.

https://sonos-web.web.app

Features:

  • No account needed, except your Sonos account

  • Pause/Play audio

  • Skip to next track

  • Change volume

  • Play your Sonos favourites

I just tested it with Spotify, Soundcloud, Audible, and Apple Music. My System is fairly simple (1x Sonos One, 1x Sonos AMP, but not connected to a TV) so I'm not sure how it scales with more complex systems. If you run into issues, you can open an issue at the Github Repository (https://github.com/ariksidney/sonos-website).

Technical stuff:

It runs on Google Firebase and there's no backend. Every request to Sonos is a call to a Cloud Function, so the web app does not refresh itself (to save some function calls). 

I hope that some of you find it useful too 🙂

 

Hey

It's such a brilliant solution to a common problem! I can surely relate to the frustration of no longer being in a position to control my tune when I'm away from domestic or linked to a VPN.

The features of this app are pretty impressive. You don't even need an account, just your Sonos account. It allows you to pause/play audio, skip tracks, change volume, and even play your Sonos favorites. That's a lot of functionality packed into a simple web app!

I've tested it with various tune streaming platforms like Spotify, Soundcloud, Audible, and Apple Music, and it works like a charm. However, the creator mentions that they haven't tried it with complex Sonos systems, so there might be some scalability concerns.

From a technical standpoint, it's running on Google Firebase without a backend, utilizing Cloud Functions to communicate with Sonos. That's a clever approach to minimize unnecessary refreshes.

Sorry, but I too really prefer to wait until Sonos provides a way to revoke account access to 3rd party applications and to have some control on what’s actually being shared - this really ought to be available through a users online Sonos account profile.

I understand users can phone/email Sonos support to request these things, but how do we truly know that a request has been carried out. It needs more reassurance before I will ever commit to sharing access to my system.

It’s a shame, as I quite like the idea of some remote access/control, but I’ll pass for now.