[RELEASE] Echo Speaks


Well I may have spoke too soon about playAnnouncement working so well. This morning 4 of my echos were supposed to say something. 2 of them worked just fine. 2 of them didn't. When I look at the logs I see this on the 2 that didn't work.

2019-07-12 06:06:16.756 am debughasError: true | status: 400

Here is the log for the ones that did work.

2019-07-12 06:06:15.656 am traceamazonCommandResp | Status: (200) | SequenceCommand (playAnnouncement) was Successfully Sent!!!

Any ideas???

EDIT: Just realized that the 2 that didn't work are gen3. The 2 that did work are gen2.



What are the odds you could add importURL="..." into the device handler so we can just click import to update that in the future? :slight_smile:

Edit: If you'd be willing to just slip this parameter in right after vid: "generic-music-player" ... :wink:

	importUrl: "https://raw.githubusercontent.com/tonesto7/echo-speaks/master/devicetypes/tonesto7/echo-speaks-device.src/echo-speaks-device.groovy")


I a bit ambivalent here. One one hand, I'm sorry you are having problems. On the other, at least it's not just me.


Yeah, I get puzzled about the whole thing. Just when it seems that all is working great it goes south.



I was just wondering if there is something different about my, and others, setups compared with yours. You have mentioned before that you don't seem to have the problems we are having.

Do you use static IP's on your echos? Can't imagine why that would have any affect, but worth asking.

Are all your units the same? I have both Gen2 and Gen3 dots and it seems that one gen will work when the others won't.

Just curious as to what might be different on my system to cause my problems.



You will see it included in the next release. Thanks for suggesting it


I'm in the US using Amazon.com domain and have no static IP's (Might have some on DHCP reservation, but can't remember)

Here is my device list:
1x - Gen1 Echo Dot
5x - Gen2 Echo Dot
1x - Gen3 Echo Dot
1x - Echo Spot
2x - Echo Shows


I'm also US. So don't have any idea what my problem is. I only have 6 dots, 3 gen2 and 3 gen3.

What is the best, or simplest, command to use to just play text? No volume change or music or anything. Thinking it might be that. I have been using playAnnouncement.


Have you tested different options under the specific device page?

You can test all of the commands right there to see whether they are working.

If you can't find the right balance i'm about a week away from wrapping up my Echo Speaks - Actions app that will help with creating all sorts of event based alerts. That way your not dependent on Rule Machine or WebCoRE. It will be a much more robust way to interface with the advanced functions in the devices.


I have been doing what you have. Using playAnnouncement with a custom command. It's been working much better than what I've used in the past. I thought I noticed that one didn't announce, but I wasn't looking that closely. I've got 2 Gen2 Dots and 1 spot.


If I do 1 device at a time from the device page, it works fine. It's when I trigger from RM that all the ones I select don't always respond. And it's hit or miss. Sometimes it's fine. And not always the same one that messes up.

Looking forward to your app.


Me too... I want people to be able to use the massive potential of this integration. The issue is that it's not approachable without third party apps and a lot of frustration. Plus with SSML coming it's about to become even more amazing.


And I read someplace that you are adding Guard control. That is gonna be great.


Been doing some testing. It seems the gen3 dots are the ones that are having problems. If I have multiple units selected the gen3 didn't respond. Seeing status:400 in logs. I went into individual device and triggered a playAnnouncement and it worked. Then went back to my test and they all worked. It's like I have to jump start the gen3's.

Edit: They only work about 2 times then quit again.


I have set up a 15m repeating RM rule to resetQueue() for all echos.

If there was an echo that didn't speak, this seems to fix the issue without having to go into the device itself & run tests.

I have also noted that Echo Speaks periodically issues this command but I have no idea what would trigger it; more than likely an internal ES thing. Regardless, manually running it fixes my issues.

I would even considering running the command more frequently, but I am sure there is an impact somewhere in doing so, notably potentially cancelling any legitimate speak commands being issued if they coincide.

Ideally I should perform a similar checkQueue before issuing the command..., but this DOES NOT appear to be exposed for use.

One other noteworthy thing, at least in my case, was like @tonesto7, I never experienced any issues prior to the Great Alexa Cookie Meltdown, only post.



While i'm glad it's been working for you... You should never have to run that command if things are working well.
Do you use RM to send most of your commands?


Yes, almost exclusively.


@tonesto7, since you're adding things and in case you missed my earlier post, can add the Blast device type?

...I've used the app to connect and play music on my Ultimate Ears (Logitech) Blast (once I overrode the ignored devices). It shows device type A37CFAHI1O0CXT. The device shows ttsSupported : false. I also noticed the permissions shows flashBriefing=false. Is that something you set or that the API returns? I can ask for the Blast to play my Flash Briefing but it isn't processed from the device page.

Thanks, Rich


For what it's worth, I wrote a simple app that I am using for testing. I just flip a switch and it sends a playAnnouncement("Test Message") to all the echos I selected. So that bypasses RM.

I also wrote a simple RM rule to do the same thing. Results are the same in either case.


This seems to be a recurring error on all my echos. Random, but happens quite often.

2019-07-13 08:14:38.576 am errorjava.lang.IllegalArgumentException: No json exists for response on line 1111 (deviceActivityHandler)

dev:8662019-07-13 08:14:38.511 am errordeviceActivityHandler Error: Remote host closed connection during handshake