There are some ‘funky’ work arounds, mostly with Raspberry Pis and undocumented API calls. However, for standard types of alerts (i.e. a door is open) I use my Alexa Virtual Device Creator app along with a routine to trigger voice output. It is ‘clunky’, but it works. Dynamic output is still the holy grail.
Did you figure this out? I added the motion sensors and made routines but they never trigger
Just talked with Amazon…They said the API is not opened up yet and is still being worked on.
Well i got it working with motion sensors through smartthings… Speakers now speak when there is motion and turn on lights…After adding motion sensor to Alexa via smartthings then creating my routine. I had to the tell alexa to start discovery. After that it now works. Tried a few more and everything is working after you discovery (After routine is created)
I noticed there’s no way to pick multiple echo’s for it to announce on in a single routine. I.e. if you want it to announce in 3 different rooms when a door is open you have to make 3 separate routines in the alexa app, kind of clunky. Also noticed like our iphones as presence sensors in ST do not show up in alexa app as a device.
I’ve been constantly annoyed with my music not resuming on my sonos systems every time there is a notification, so trying to move the notifications over to the echo’s, but nothing seems like an ideal solution.
Go back and edit your routine for the door open, make sure you choose “Messaging” instead of “Alexa says”, then choose Send Announcement and enter in your custom message announcement. After clicking Next button, you can select “All devices” or whatever combination of echo’s you want to announce to.
Ahh, thanks. Yea that is better, just adds a little tone before the message is all. I still miss some of the functionality of doing within smart things like only announcing in certain modes (i.e. not when no one is home, or not in the bedroom when my wife is sleeping etc) but that is an improvement. Another option without goofing up my sonos all the time is lannouncer to my 3 wall mounted fire tablets, but i don’t have those as many places and the volume seems a little low.
On the off-chance someone finds this thread and wonders if this has a solution …
I am using this and it is doing what I expect.
** I recommend reading the full instructions. There is a lot but it is good to get a full understanding.
I think the easiest way to install it is following these parts of the installation instructions, as of today.
1_ Use this installer
“This is the simplest way to get Echo Speak Installed as well as other community apps
Please visit here for instructions: SmartThings Community Installer”
2_ Finish setup with this section and below
“3. Scroll to the bottom of the screen again and tap on ‘My Apps’”
Echo speaks is fine if you need all of its functionality, but as of the fall of 2018 Amazon has added more functionality to their app which now makes this much easier to do and you often don’t need any custom code at all depending on exactly what you are trying to accomplish. It has to do with Amazon routines ( which are different than SmartThings routines.)
There is a community FAQ that explains how to do this. It’s become a very popular feature, and again is much easier to set up and use than the echo speaks smartapp.
As far as being able to restrict the times when it happens or fold in other more complex logic, you could also do that with this method. You set up a virtual device which is the one that will trigger the Amazon routine. Then use all of your smartthings logic to decide when to activate that virtual device.
Choice is good.
( This is a clickable link)
So am I correct that we still do not have a method (either in ST or Webcore) to determine which echo device was spoken to?
Can you give an example of what you’re wanting to do?
Example : I have an Alexa routine/webcore piston that turns up the volume of my ceiling speakers when I say “Alexa, speaker volume up”. Unfortunately, it does so for every active ceiling speaker in the house. I do not have smart speakers. I would like to be able to query which Alexa was spoken to and act on items in that location only. And I don’t want to use Echo Speaks.
hmmm, ok. That is able to be done.
Why do you not want to use Echo Speaks?
What kind of speakers are you using? are they connected to your wifi?
This is able to be done, I’m doing it with my speakers (not Alexa devices) in my system. My speakers are connected to my wifi and I’m able to see them in SmartThings via a 3rd party app (Not Echo Speaks).
I have a Russound system and use @redloro’s method to get my AV system integrated into ST. So I have ceiling speakers throughout my house that appear in ST…Kitchen, Workshop, Great Room, Shower…etc. I can turn them on/off and adjust volume easily with webcore. If I am listening to a playlist in my Workshop and my wife is listening to the radio in the Kitchen, I would like to be able to say “Alexa, speaker volume up” and only the Workshop speaker volume would change. Yes, I could change the Alexa routine and use “Alexa, speaker volume up in the Workshop.” But then I would need a routine for each set of speakers and then expect my wife to learn the names of those groups. If I could query which Echo was spoken to, then I could easily write webcore code to only address speakers in that location. But I am certainly open to other solutions. Echo Speaks just seems to be overkill for what I would like to accomplish.
Ok, I see what you’re wanting to do.
Using EchoSistant you would have to create a Room Profile… so you would say, “Alexa, Decrease the volume in the Workshop”. Usually pretty easy as you can create a profile for whatever you call each room… more than one profile per room is allowed.
Using Echo Speaks would open a lot of doors for programming.
But, the way you are wanting to do it exactly, probably can be done but it would take a bit of work with virtual devices and things like that.
I currently use lots of virtual devices so I am comfortable with that. I will take a look at EchoSistant. And, maybe I will just have to dive into Echo Speaks and use that. It just SEEMS like it would be so easy to do an API call to get the info I need. Thanks for the help.
As far as i know, There are only two methods available from Amazon to find the device that was spoken to:
- If you are invoking an Alexa skill, the skill gets the device id as part of the invocation. EchoSistant uses this method.
- There is an undocumented rest interface used to get the account history, which includes in the data payload the id of the device among details. It is possible to parse this too find recent interactions if you have an authorized account token. Echo speaks users this method.
(Additionally, Alexa routines that area triggered by a certain phrase can Target the device spoken to for certain actions)
Have you experimented with creating a Group in Alexa that includes the devices you want to control as well as the Echo device? I use this method so I can tell Alexa to “turn off the lights” and she knows to turn off only the light devices in the group shared by the echo device that received the command. I’m not sure which types of devices this functionality is limited to, but it’s not limited to lights. I can ask Alexa, “what temperature is it in here?” and she will give me the temperature of specifically the thermostat in the group that includes the echo recieving the command. This may work for volume commands as well. If not, it may eventually.
Update: It also looks like Alexa groups support Scenes as well. I haven’t tested any to see if they have any special behavior from being part of a group that includes an echo device.
You said you’re using WebCore. If you are getting the api calls into WebCore you can create a piston for “Increase” and another for “Decrease” which would find the current level and then change the level by a present amount that you put into the programming.
You can then using EchoSistant to verbally trigger a WebCore piston.