[Nearing Release] Sonos Advanced Controller

Got your message. We identified a platform issue that will be fixed in the next release.

11 Likes

Thanks @bobbyD !

You guys are awesome!

2 Likes

Interesting to see a platform issue fix on 2.3.8.128 that very likely was impacting this application. Sonos Advanced does a LOT of events in a really short time when there's many speakers in a group. Easily 100+ within a few milliseconds of each other as it updates the coordinator with all the new events then updates all the followers right after. If you have a dozen speakers in a group this can very easily hit well over 100 events spanning a dozen devices in a very short timeframe. The absurd amount of optimization I've put in on the code to make it fast would maybe have even made this worse, since it would compress the events down into a smaller timeframe since it's running faster.

So... has anyone here seen the lockups still happening on 2.3.8.128? I really hope the HE patch fixes this, since there's really nothing I can see in the Sonos Advanced app on my end of things that I could change, short of just removing a bunch of features.

3 Likes

Yes, my hub locked up again Tuesday afternoon. So not sure they completely got this figured out on their end.

Question for you though. Is there any issue with Sonos speakers that might leave the environment? I have Roam that I take when I travel for work. That was not the case with my most recent lockup on 128, but wondering if when I take it, and the system can't find it, what happens?

It should be mostly fine. Every hour or two it'll fail to connect and redo the subscriptions. There'll be an error or two in the logs, but it won't cause any real issues.

When you return with it, it'll take up to 2 hours for it to resubscribe all on its own. initialize() will reconnect it right away, if it matters for that.

1 Like

I'm still having the issue described in this post. The workaround I have in place for now is to send an initialize() command via webCoRE to each speaker every hour, with a gap of around 10 minutes between the speakers.

Any thoughts?

EDIT 5/28/24: Resolved in this post.

I'm experiencing the same issue, @daniel.winks. Just like @bthrock, I use webCoRE for regular initialization.

1 Like

@daniel.winks had a odd one today i have heard it before but not for a while. It was if multiple events where queued up and about 5 MP3 files played one after the other mostly the same file. Any idea why that would happen?

I upgraded from a very old version and now my favorites will not show up? Should I have deleted the devices and the app and the done a fresh install?

It should work without needing to delete things. I changed how favorites worked a lot since I found a way to access them and get notified of any changes made too. So now it works with a child device on on of the speakers. You only need to enable it on a single device. I put it on my Arc, since it's hard-wired and has a stronger CPU than some of my other speakers, but the extra load is really minimal so it doesn't particularly matter. So just pick a speaker and enable the favorites child device on it.

That child device is where it lists the favorites so you know which number to use, and it stores them as permanent states, so you won't need to click on "get favorites" each time you want to see them. And if you add/delete a favorite, it updates automatically now.

1 Like

Pandora favorite stations will play when using Load Favorite Full but none of my Amazon Music favorite stations will play. They will load and you can see album art and other track info. They just will not automatically play. You can select play and they will play. Not sure what is going on.

Question about this In concept. It’s always seemed to me when people talk about this, the use-case is that there is music or some long-running audio playing and then a TTS announcement collides with it. Which makes sense.

I have a similar but different use-case. What happens if TTS1 is still uttering when TTS2 is invoked. Does TTS2 get put in queue? Does TTS2 interrupt TTS1? What happens if TTS1 is a lot longer than TTS2? You get the idea.

I’ve never found a good way to resolve this. Thankfully it’s an edge case — doesn’t happen that often so I’ve mostly. Ignored it. Curious if others have a solution?

Sonos Advanced actually already handles this. It will queue up the second TTS until the first finishes.

1 Like

From a standpoint of the code in Sonos Advanced, those are all just "Sonos Favorites". My code doesn't really have any idea what service they're coming from. There's some options for "Load Favorite" regarding whether it clears/replaces the queue or appends, whether it auto-plays or not, and if you're telling it "replace queue, auto-play" and it's not... then that's either an issue on Amazon's side or Sonos'.

First time SAC user here. My use-case for now is limited to issuing and queuing TTS. I created the device and have tried a few different speak commands (playText, playHighPriorityTTS, etc.) from the device details screen and keep getting the same basic error in the logs, per below (and no TTS coming out of the speakers). Any idea what this could mean or how I can troubleshoot?

2024-04-07 12:37:26.962 PMerrorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (com.hubitat.app.DeviceWrapper, java.math.BigDecimal) values: [Sonos Advanced - Christina Whole House, 40] Possible solutions: wait(), chars(), any(), trim(), size(), split() on line 3129 (method playHighPriorityTTS)

For context, I only have one Sonos device which is connected to a whole house audio matrix device (Monoprice 6) which distributes to speakers around the house. I therefore have not created a group device, which I'm assuming is optional.

@daniel.winks, pinging you again on the above message. Any ideas on how I can troubleshoot?

@daniel.winks I removed this app a few weeks ago since it wasn't playing well with my setup, Unifi & S1's. Made the Network changes to Unifi and installed it a couple of day ago and it seems to working, not getting the album covers from local music or Pandora but that not a huge deal. Thanks for putting this together. Much appreciated!

1 Like

I tried searching this thread, but I might have missed something.

How do you get rule 5.1 to group and ungroup my Sonos speakers?

I can’t seem yo find it anywhere within the rule 5.1 app???

There are a few ways to do it, none super pre-packaged or elegant (that I'm aware of).

I just use RM5. I create a virtual speaker device as the group device. And then I wrote rules that uses a change in that device as the trigger. The actions apply the event (e.g., increase in volume, change in input source, mute/unmute, etc.) to each of the individual devices. Below is one such rule -- this one manages volume for the group.

Also - if memory serves, @Cobra has written a device driver that did some of this. But he'd have to comment as I'm not sure I've got that right.

So if you created the sonos grouping with this integration, you can do something like this and pick the command you want:


e.g. I pick the joinPlayersToCoordinator for my scenario since it's usually me adding my outdoos speaker.

Here's what my full rule would look like with this integration. Very easy and straightforward;

1 Like