[RELEASE] Echo Speaks v3 + Actions

Hi all, I saw an old question posted elsewhere that didn't seem to get responses, but I'm also running into the same question/issue:

I'm using Echo Speaks with some of my rules. For most of those rules, contextually I know which device I will be speaking to when I ask to trigger the rule. However, for more general notifications (eg: asking status for a device like a Thermostat or Alarm), I'd like to be able to ask Alexa from anywhere in the house. Since I don't know where I will be, I have the announcement set to playback on all my devices. Is there any way to localize the response back to the triggering/initiating device?

Tagging @mick.baker who posted the original question a few months ago.

Thanks in advance!

I don't know if Echo Speaks permits this. However, it is definitely possible with this Node-RED Alexa integration.

As an example, I stood between two of my Echos (Cat Room & Ashok's Sonos One 2nd edition). They both heard my question, but only one of them responded. The identity of the responding Echo can be used to direct the response to a specific Echo. It would only cause a delay of a second or two.

Thank you for taking the time to even test that. It's good to know that at least the responding device can be captured. I'm not sure I'm at a point to look into adding Node-Red into the mix, at least not for this particular, minor challenge. I'll keep it in mind if there's not an easier solution and I start to get annoyed by hearing Alexa's voice coming from all directions!

1 Like

Should you decide to go that route, I just want to point out that there is already a pre-built set of Hubitat nodes for Node-RED (thanks to @fblackburn!), and a very active community of Hubitat users who use Node-RED for their automations.

1 Like

There is a way to do this, but there is some delay involved if you are fine with that. You can use the wasLastSpokenToDevice attribute. Here is an example of how I use that for my goodnight routine, so that if it was spoken in the master bedroom, it disables motion sensing.

1 Like

Anyone notice lately that spoken messages that have periods or commas in them now seem to run together?

Started noticing it last week IIRC

Fixed by Amazon within the last day or so, tested it on Alexa and via Echo Speaks

A single period/comma works with the same pause, adding multiples doesn't increase the pause

Enjoy

Just updated to latest version of Hubitat 2.2.0.132 and saw this in the logs about 1 min after it rebooted after the update, any ideas, the app 9 is echo speaks

[dev:9] (http://192.168.0.10/logs#dev9)2020-05-24 21:32:37.344 errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.slice() is applicable for argument types: (java.lang.Integer, java.lang.Integer) values: [64, 94] Possible solutions: size(), size(), split(), split(java.lang.String, int), wait(), trim() on line 320 (parse)

I am very new to HE and just want to say THANK YOU for this code and the great documentation! I had one small problem during the install because I didn't follow the instructions closely. When I followed the documentation it worked great. Again, thank you for all your work.

Does anyone know how I would go about changing the volume of my echo devices per mode so that I can hear them in the middle of a loud day, but they aren't super loud at night? I tried using RM and I kept getting too many requests made to Amazon. Then I tried using the actions app with one action for each mode, and I get this error:
groovy.lang.GroovyRuntimeException: Cannot read write-only property: volume (volume)

Any ideas on what I should do or is there an easier way to do this?

I am a new user and recently installed echo speaks. I am having problems with the search actions. I can search for radio station WBMW under Tunein using the HE defined device itself without issue. However using Echo Speaks it seems that the search info is not getting passed to the command (from the logs): 2020-05-25 11:48:03.005 am errorgroovy.lang.MissingMethodException: No signature of method: user_app_tonesto7_Echo_Speaks___Actions_258.executeTuneInSearch() is applicable for argument types: () values: [] on line 4271 (searchTuneInResultsPage)

In the application I receive:

Unexpected Error

An unexpected error has occurred trying to load the app. Check Logs for more information.

Error: No signature of method: user_app_tonesto7_Echo_Speaks___Actions_258.executeTuneInSearch() is applicable for argument types: () values: []

Seems I may be missing something simple in my search argument? Any assistance would be appreciated.

Thank you for sharing the example rule. I'll try and see how bad the lag is, but this is what I was hoping for. Thanks again!

Thanks - I was reading a bit more about Node-RED in general after you recommended it. Like everything else regarding home automation, there's lots of rabbit holes to fall into! Good thing I enjoy the journey!

1 Like

Playing with Notifications here (Trigger the Amber Light on Alexa) and having some trouble. I can go into an echo device and populate text for Device Notifications but it is immediately spoken instead of queued as a notification and then spoken when retrieved. The “ Send Device Notifications as Announcements?” button is not selected yet seems to be in effect. Anyone else seeing this?
@tonesto7 any idea?

This is how I do it. I also got errors when setting all at once, hence the reason for the delays. Seems to be working well.

Not sure if this is a bug or not - I was trying to use the "wasLastSpokenToDevice" attribute to localize the Alexa speaks response to a specific device that I was speaking to, per @cjkeenan's recommendation. (Thanks again!).

I've got 2 real echo dots (gen 2) and 1 Fire 7 tablet. As I was testing my rule, I realized I couldn't get my Tablet to respond correctly when initiating the rule from that device.

At first I thought I was doing my conditional IF statements incorrectly, but while debugging through the devices screen in HE for the tablet, I could not get that attribute to change. I've tested all sorts of Alexa commands (muting the other devices first) to run on the Tablet, but that attribute keeps returning FALSE, despite whatever Alexa command being executed on the Tablet correctly.

Checking the device pages for the 2 real echo dots, the attribute is changing as expected.

Thank you for the example. I figured it could be done this way, I was just hoping there was an easier way because I was really not looking forward to doing all of those delays with the UI of RM, especially since I want to have different volumes per mode.

Does anyone know an easy way to set a variable per mode without a bunch of IF statements for each mode? Because I may have thought of a way to set the volume nicely per mode that relies on variables, but I wanted to avoid having the variables being set in a IF-THEN statement. Also is it possible to do math inside a parameter being sent to a custom action or does RM not like that, i.e. %echo_volume% - 10?

It's definitely not the easy way of doing it, but here's what I do in webCoRE:

I had to set 2 different volume targets because I have some Gen 2 and Gen 3 Echo Dots, and the Gen 3 are way louder at a given volume level!

Thank you for your example, I ended up doing a combination of RM rules show below:



I just wish that math could be done in the parameters so that if I wanted the bedrooms to be a little quieter than the rest of the house I would just offset them by a little. I know it is possible with the "Set a variable" action, which has variable math, but that kind of defeats the point since I don't really want to store that new value.

1 Like

I'm trying to set this up on a new hub and when I try to create the app on Heroku its asking for information that I dont have. Any advice?