Sonos & Smartthings Labs


(ilker Aktuna) #1

Hi,

I have a Sonos play:1 and Sonos connect.
I want to add them to my Smartthings hub but when I try to add Sonos, it says I need an “upgrade” to my hub.
However, I don’t see any “upgrade” button on “mylocations” page when I click my hub.

What is the correct way ?

Thanks.


(Ryan) #2

This has been a problem for weeks now. Smartthings says they are trying to fix it . So their isn’t anything that I know of that you can do to fix it.

It’s a bug in the Smartthings cloud nothing we can do


(ilker Aktuna) #3

it is too bad.
So what about people who had already added Sonos speakers ?
Can they use it ? Or do they have also problem ?


(Stuart Buchanan) #4

I can use mine, but TBH the Sonos ST integration is too buggy IMHO its adds more instability to the ST platform.

I am working on an alternative at the moment


(Kurt Sanders) #5

As soon as you will be able to add your Sonos (as I have), you will be disappointed in what you can {barely} do with them via ST. The basic “Play/Stop” integration is less than poor and if you try to use them for Text to Speech, you will crush your current playlist and any settings, like volume, grouping, etc!

Apparently, we lambs are waiting for new Sonos API’s in order for ST engineering to have better integration with Sonos.

I will believe this when I see/hear it. :rage:


(Stuart Buchanan) #6

@kurtsanders look at the Sonos integration with VoxCommando, far superior to ST’s and can accept Spotify playlist URL’s and the like. I’ve been testing a lot and have started writing a device type to work this into ST


(Justin) #7

There is no update on this disastrous issue effecting ST and the requirement to “update” the HUB. This also effects netatmo.


(Kurt Sanders) #8

Thanks @Fuzzyligic… VoxCommando appears to only support Windows platform and Android mobile. Our house is all Apple and Raspberry Pi O/S’s… It was interesting looking at this VoxCommando HA demo on Youtube.

I noticed that the demonstration is using Neospeech’s TTS voice (Bridget UK) which is a somewhat expensive monthly cloud service. I am using Googles’ free TTS cloud service for my Raspberry Pi to Sonos TTS. I have yet to select a verbal command interface, still trying to make up my mind how to get audio input from various places in my large house… (Amazon Echo is not the answer in their current standalone version).

For now, I use ST iOS’s mobile client along with SmartApp REST routines to accomplish some basic commands that result in TTS over the Sonos…

ST’s Sonos integration is very basic and extremely disruptive to the current Sonos environment after playing a TTS, as ST API calls do not perform any type of an “Attribute Snapshot” of the current SONOS environment (Playmode, Playlist, Grouping, Volume, Timer, etc) and restore it afterwards. I could not stand it and do not use any ST TTS functionality and have all TTS coming from the Raspberry PI which does snapshot and restore the Sonos systems I have.


(Stuart Buchanan) #9

@kurtsanders

Voxcommando is indeed Windows platform only, but you wouldn’t need to use it as a replacement to ST.
all i am looking at doing is creating a device type to send the commands to Voxcommando via the rest api for the Sonos integration and letting voxcommando do its thing with the sonos which works so much better than ST.

the TTS engine that can be used is any installed windows TTS engine. so you can use the standard american and british TTS voices. or indeed any voices from Ivona etc…

there is no monthly cost for the TTS features.

but yes its windows. i cant help you otherwise :slight_smile: unless you run Voxcommando under bootcamp on a mac… but for my use case its perfect.


(Kurt Sanders) #10

Did you also see that the free Voxcommando TTS Cloud service plays random advertisements and has a word limitation monthly ? :flushed:

It would be great to see you get ST-Vox working.

I am reviewing the “Ivona TTS Cloud” services website right now. This service could be a better free TTS cloud service with more speech choices for my TTS conversions that Google TTS handles perfectly.


((Possibly not the Matt you're looking for)) #11

Depending on the precise application, another idea here may be (on an Android device):

(1) the Android automation app Tasker, plus
(2) Josh Lyon’s SharpTools (for ST integration), plus
(3) AutoVoice voice engine, and
(4) Macronos (for Sonos integration).

Messy, but I’ve made it work. Although I don’t presently have it running at the moment, because I’ve been doing everything through an Amazon Echo right now. It is more reliable than ST’s voice notify by Sonos because all the automation and your voice rendering happens locally on the Android device. Also, unlike the Echo, you can write in exactly the responses you want. There is a learning curve to Tasker, but you don’t need to know code.

(Updated since I forgot to mention AutoVoice. Tasker, for anyone who doesn’t know, is basically a giant IF > THEN app for everything on the Android. So SharpTools supplies the IFs, the THENs are processed in Tasker using AutoVoice to create the speech output, which is sent to the Sonos via the Macronos app. This requires an Android device on KitKat or later, and may need to be rooted. A cheap tablet will do.)


(Joshua Lyon (SharpTools.io Dashboard)) #12

@matt great idea using Tasker + TTS! I don’t think you would need AutoVoice in this setup as it is typically used for going the other direction (Speech to Text / OK Google commands).

You could use the built in Tasker: Alert → Say command to do TTS. If you check the box for the “Network” option, the built-in Google TTS is actually pretty good but it adds a slight delay as it processes the TTS in the cloud. And for the people that like IVONA, there is a local version of IVONA available for Android with a few different languages.


(Stuart Buchanan) #13

I looked at the various applications like tasker for android, but they didn’t suit me 100%. @kurtsanders you dont need to use a cloud service for TTS it’s an expensive option IMHO, Ivona have local TTS engines that work great on the right platform.

but i have spent quite a bot of time looking around for alternatives so i can remove my Sonos players, but the voxcommando route will still allow me to leverage them without the instability of them being directly attached to the hub


((Possibly not the Matt you're looking for)) #14

Thanks! I’m a fan of Sharp Tools!

On further reflection, I don’t actually recall if I was using Autovoice for this feature. I guess I was just using the built-in Google TTS. I bought a voice package from Acapela TTS because they were cheaper in the Google Play store, but I think IVONA may sound better.

Part of my project was included voice input to roll my own pseudo-Amazon Echo, before there was such a thing as the Echo, which does require Autovoice. (You totally can homebrew your own Echo on an Androis, by the way, but the funny thing is that it is impossible to replicate the most amazing part of the Echo: the far field recognition mic array.)


(ilker Aktuna) #15

@matt

I would like to go your path and try that setup sith Sharp Tools and TTS.
However, I am not sure if I got the components correctly.

Can you please help me on this ?
(I am a little newbie on this so I’d appreciate if you can bear my questions)

Tasker: is for automating the process between Sonos and phone (correct ?)
Sharp Tools: is for integration with ST hub , so that tasker commands are triggered on ST events ?
Macronos: is for integration with Sonos ?

So I just need these 3 if I will play text from the Sonos speakers , is that correct ?
Do I need to install any text to speech engines ?

You mention Google TTS, Acapela TTS and IVONA
Which one should I use ? (do I need to install it also on Android phone ?)

You also mention AutoVoice. But that’s for speech to text, correct ?
So, I will just need it if I want to send voice commands to ST ?

Thanks.


(ilker Aktuna) #16

@matt

I just installed macronos and tasker. But I don’t see how to add TTS output to Macronos.
Is there direct TTS option from Macronos , or should I install something else for that ?
Also, from Tasker ?


((Possibly not the Matt you're looking for)) #17

The TTS is done in Tasker. You’ll create Tasks that will use the Macronos plugin (“Android Audio” setting).

By way of background, Tasker is a general purpose automation app on Android. It can automate tons of things, including connecting Sonos to SmartThings, via plugins. Tasker basically all “IF X happens, then do Y,” but it uses odd language to describe that. (The “if” contexts are called “Profiles” and the “then” events are called “Tasks.”)

BTW, @joshua_lyon has some helpful explainers here on using SharpTools with Tasker here: http://sharptools.boshdirect.com/examples-list

Tasker can use any Text-to-Speech engine installed on the Android device to generate speech from text. The Google TTS is pre-installed, or you pay for better voice rendering from folks like Acapela or IVONA.

So, ultimately, your flowchart looks sort of like this:

SmartThings --> Sharp Tools —> Tasker --> Macronos --> (via “Android Audio” setting) --> Sonos

One bug with Android Audio on the Macronos is that I can’t get it to reliably go to multiple speakers at once. This is a problem with SmartThings, too, by the way. ST won’t even offer that option.


((Possibly not the Matt you're looking for)) #18

FYI, the Sharp Tools “Tasker refresher” page links to this Tasker guide. But to get audio out of Tasker to Sonos, you need to set up an Android Audio “macro” in Macronos first. (I think this requires a rooted device, btw.)

After you’ve done that… Go into Tasker and…

  1. Choose “Task”
  2. Press " + " at bottom-right of screen (you’ll be prompted to name your task)
  3. Press " + " at bottom-center of screen
  4. Choose Plugin > Macronos > Macro >
  5. you’ll be in the ‘Action Edit’ screen. Click on the Configuration pencil in the upper right
  6. Choose Android Audio Macro that you previously created.
  7. when you’re done, you press the “back” < arrow in the upper left to return to your main Task.

Now you have 1 Action (or sub-task) in your Task that tells your Android device to send its audio to the Sonos.

Next, you create a second Action (or sub-task) that generates the audio.

  1. Press " + " at bottom-center of screen again
  2. Choose Alert > Say >
  3. In this Action edit screen, you type the text you want it to say.
  4. you can use variables here via the tag in the upper right
  5. you specify which TTS engine to use under the Engine:Voice menu. I think it defaults to “default:default”, which is just the basic Google TTS.
  6. when you’re done, you press the “back” < arrow in the upper left to return to your main Task.

If you want to create multiple tasks, you just duplicate the first one you create in Tasker, and change the text.

Once you have your tasks set up, you need to create Profiles in which the run. (That’s the “IF” half of the statement. See the SharpTools page for that.)

PS. If you’re going to do this work, be sure to back up your tasker profile under Preferences. Wouldn’t want to lose any work.


(ilker Aktuna) #19

thanks.
I know tasker , so I can understand the context you describe.
and you suggest using direct android audio output macronos feature which requires root. (I have root fortunately)

But, wouldn’t it be better if I first create a file to play with “say to file” action in tasker, and then play that file with macronos action ?
This way, root wouldn’t be mandatory and I would not have to redirect my Android phone sounds to Sonos.

  • Tasker “say to file” action creates wav file. Would macronos/sonos play that ?

(ilker Aktuna) #20

Btw, I am not at home now and I can’t connect to my Sonos network.
That’s why I can’t see options in Macronos.

I just wonder, if I enable Sonos cloud feature on Sonos app, would macronos reach Sonos speakers ?