I mean two rooms indeed.
Will investigate tonight and let you know.
I think I need some more info
I just tried turning one speaker off, then turning it back on again and grouping it with already playing speakers. For me it reflects that status correctly in Homey. It also updates the group members on both speakers.
Found the issue. It happens when joining it using the Sonos app. When joining using Homey it works fine, that was what I was testing.
Working on it
Can you test with v1.9.2? Sonos (LocalAPI) | Homey
Yes it works now! Thanks for the fix and sorry for not responding earlier (I did not note your updated post).
By the way: my joining action was also performed via Homey and your appās flowcard for that.
Hi all,
I regularly get requests for support for other Text-to-Speech services, but also for making the current TTS setup easier.
At the moment the app supports Azure Text-to-Speech, but you need to create your own Azure account, create a Speech resource, copy API keys, configure the region, choose a voice, etc. It works, but I understand that this is not very user-friendly for everyone.
Iām considering adding an optional managed TTS option.
The idea would be:
- You can still use your own Azure API key, just like today.
- Or you can choose a simple managed option where I handle the Azure setup for you.
- This would probably be something like ā¬12 per year.
- The goal is not to make money from the app, but to make TTS easier to use and cover the Azure/payment costs.
This would be meant for users who just want TTS to work without having to deal with Azure accounts and API keys.
Before I spend time building this, Iād like to know if there is any interest.
Would anyone be interested in such an option? And what would you consider a fair yearly price or usage limit?
I still need to check with Homey/Athom whether this kind of optional external subscription is allowed for a community app. So for now this is only to see if there is any interest before I spend time investigating and building it.
Just to be clear: this would be completely optional. The current option to use your own Azure API key would remain available and free to use.
I use google translateās API to translate to whatever language i want the TTS in and use the Play URL card. But if i use my own language, then i just use Homeyās TTS card from the Sonos Cloud app. To create your own type of card thing, just use When flow starts with text, then ⦠and you just start the flow with text from another flow.
Thanks for your great app.
Is there any chance that you can add the Sound Input Flag (for the Sonos Arc Ultra)
It has TV & Bluetooth available, too
Here is the use case I would like to implement as flow
- If there is any input on Bluetooth, increase the volume. It Bluetooth is disconnect decrease it
- If my TV is powered on change Sonos Input to TV, ungroup all and change Surround mode to full.
Would be great if you can add this.
Thanks a lot
PS: I added the Sonos Arc Ultra but I don“t have any Input triggers in the Device or flows
āā¦Not every Sonos model supports every feature. Flow cards and settings that depend on specific hardware, such as TV input, subwoofer or surround options, are only useful when the speaker supports them.ā
Doesnāt Sonos Arc Ultra have this option in the Sonos App?
This does exactly what you want: ungrouping and switching to TV mode. @owuerker
Yes I have this in the app but this only half of the story.
TV Input and bluetooth inputs are not available as trigger or condition to build a flow on top of it in homey (or I did“t find it ;-))
In condition: use a logic card "when ⦠is exactly HDMI/Optical thenā¦
In TV mode the Track variable changes to HDMI/Optical. You can make a flow checking if the track is HDMI/Optical. Or use the logic card includes HDMI.
This is how it could look like using the logic INCLUDES card:
You could make an advanced flow or normal flow checking every second what the track of your Arc Ultra is and use the condition card INCLUDES HDMI and set your own variable to say if the Arc Ultra is connected to TV or not. (If you choose that you basically made your own WHEN card. As in WHEN variable changed AND the variable is YES THEN⦠@owuerker
Great. Yes that would work for TV.
Any ideas how I can do this with bluetooth streaming (input) vs. network streaming
I have a solution if you have iPhone. But you would have to do this on every single device you use to connect to the Arc Ultra as this uses Appleās SHORTCUTS app.
Make a variable for Bluetooth connection, make a flow setting the variable to yes. On iPhone make a automation in the shortcuts app and make a new one with bluetooth.
Now make the shortcut start the flow to set the variable to yes.
If this solution wonāt work out for you. Then weāll hope @xiutit can do something.
That makes absolute sense. If the official Sonos app already covers your TTS use case, then using that is probably the best and simplest option.
That is also why Iām not sure yet whether this is worth spending time on. It may be a bad idea if most users are already happy using the official Sonos app for TTS.
The only reason Iām considering it is that some users may prefer to keep everything in one app and avoid having to use resources for two separate Sonos apps. For those users, a simple built-in/managed TTS option could still be useful.
Will look into this. Should be possible to make this available.
Yes. Sadly the official Sonos app only allows to speak in your Homeyās language. Which is why i have a HomeyScript using an argument for example en;hello or nb;hei for choosing languages then it returns the translate url and i use it in a Play URL card.
Why can the āofficialā Sonos app by Athom provide TTS without any configuration or the need for an additional account with any third-party providers?
What technical requirements would need to be in place for this to be possible with your Sonos (LocalAPI) as well?
The official Sonos app can offer TTS without configuration because Athom provides and pays for the cloud services needed to generate the speech.
Technically, I could also make TTS work without any user configuration. There are roughly two options:
-
Use a local/offline TTS provider
That would avoid external API keys, but the voice quality is usually much lower and language/voice support is limited. -
Use a cloud TTS provider
My preference would be Azure Text-to-Speech, similar to what Home Assistant also provides with the subscription. The quality is good, there are many voices/languages, and it is reliable.
The downside is that cloud TTS is not free. If I make it work without configuration, then I would need to handle the Azure setup and pay the API costs myself. That is why Iām exploring whether an optional managed TTS subscription would make sense.
So yes, it is technically possible to make it just work, but the question is mainly who pays for the TTS generation behind the scenes.
Thank you very much for the detailed explanation; I understand now.
But not as good as the āofficialā Sonos app. But I can live with that.
Thank you very much for the great app!
The first 500,000 characters with Microsoft TTS are free monthly with very natural sounding voices.
Using a Homey script, I control the TTS hourly during the day, reading out headlines from various news media plus various special announcements. I have been using this for a year at no cost.
I would let the users of your app take out a subscription themselves.
Simply provide the steps to follow in a clear step-by-step plan to configure everything.
I just use a Google Translate API (always free no matter how many characters. A HomeyScript handles the google translate API and returns the link, then a PLAY URL card plays the TTS.
That is already possible. Users can add their own API key in the app settings, and use TTS that way.
I probably just need to find some time to write a clear step-by-step guide for it. Documentation is not exactly my strongest talent, so that might be the hardest part of the whole feature. ![]()





