[RELEASE] Echo Speaks v3 + Actions

Another solution would be to change how you have your logitech hubs configured with Alexa.

I have 4 hubs under 1 Alexa account.

All you need to do is create groups with preferred speakers. I created a living room group with my living room echo's, harmony hubs, and living room lights. Because I'm using groups, if I say "Turn off the tv" to the living room echo, it turns off the living room tv. If I say "Turn off the tv" to the bedroom echo, it turns off the bedroom tv. Works the same way with lights, you don't need to remember specific names you can just say "turn on the lights"

2 Likes

That's a really good solution!

The issue is that for my wife's instance of Echo Speaks, there are no devices listed under "Manage Devices". I expect this is because the initialization never gets completed because of the errors that occur with the duplicate DNI. It's interesting that it still creates the declined though.

The other thing I tried was selecting "Don't Use the Devices" for every device under my Echo Speaks and then removing (and ensuring they all removed) all these devices. I then ran the initialization of my wife's Echo Speaks hoping that since none of the devices was present, the duplicate DNI error won't occur and the initialization would get completed. Unfortunately, I still got the error so the initialization didn't get completed.

I would use the solution above it will greatly simplify your alexa setup.

Thanks. I've previously considered that but my usage of Alexa and Harmony hubs is more complex than just controlling the TV unfortunately. I have favorite channels so I can say "Alexa, turn on ESPN" or "Alexa, turn on Hulu" and it'd change my cable channel to ESPN or change to my Roku and open Hulu. As such, I need Alexa talking directly to Harmony (vs going through Hubitat like in your solution).

When I'm talking groups I'm talking in the Alexa app. My solution has nothing to do with Hubitat.

https://www.amazon.com/gp/help/customer/display.html?nodeId=201749250

How did you add multiple hubs to 1 account? The Logitech skill only allows 1 hub. Thanks

So this question is making me rethink how I did my setup. I said above it has nothing to do with Hubitat but it actually does. I don't have the Harmony skill setup in the Alexa app. I have the harmony driver setup in HE, my devices shared to Alexa and then grouped from there.

I'm not sure if this would work with favorite channels through Alexa because I don't believe those are exposed to Hubitat. I can't test because I don't have cable, therefore no favorite channels setup.

Yeah, that's what I thought. Won't work for my scenario. I also use the Harmony - Hubitat integration so I'm very aware with how it works. Thanks though.

@tonesto7 Please any ideas of what I can try to get the second instance of Echo Speaks to create devices with the same DNI so I can then disable them in the app?

Thanks

Figured out the issue. It's actually with echo speaks-websocket device which has the same DIN if used with multiple Amazon accounts. The actual echo devices have app-id prefixed to their din while this device doesn't. This isn't specific to my situation with a family Amazon account.
@tonesto7 please can you edit the code to prefix the app-id to the din for the websocket device. I did it in my setup so I'm good now. Thanks!!

How about this?

https://www.amazon.com/Logitech-Harmony-Secondary-Hub/dp/B01N4DMQ5P

@tonesto7 Just an update for you Anthony...

The update to the 3.6 "series" + server has fixed pretty much all my issues, including the most annoying one:

receiveEventData Error: groovy.lang.MissingPropertyException: No such property: AFF5OAL5E3DIU for class: java.lang.String

The only remaining issue I have, which I believe you have already stated still has not been fixed in this release, is the "Too many requests made to Amazon" one.

Much thanks!!

Iā€™m glad to hear that it fixed most of your issues. The two many requests one Iā€™m not sure we can do with that .out of curiosity do you have this running on more than one hub?

So I did the update today and now none of my echo devices show up in the app. I did both ST and Hubitat. When I went to update the server I had three instances of echo speaks apps. Two were the Hubitat and ST version, I assumed. The third I am not sure where that came from. I had some issues when I first installed Echo Speaks on ST and I think that may have been the extra. Everything was working, however.

Anyway, I deleted all three versions. I then redeployed the server for both hubitat and ST. ST seems to be working fine. Hubitat, however, still list all my echo devices on the Hubitat devices page but none show up in the echo speaks app.

Should I delete again and redeploy for Hubitat, or is there something else I can try.

[nevermind] I got it. I updated the server but not the code. Was still running 3.5. I update ST with Github but for some reason it never occurred to me I needed to update the Hubitat code as well.

Nope. One HE hub only.

Release v3.6.1.0 (March 6th, 2020)

Main App (v3.6.1.0)

  • ADDED: Notification options on whether to alert when cookie is invalid.
  • FIXED: Added rate-limit to invalid cookie notifications.
  • FIXED: Logging Storage State Size Fix.
  • ADDED: WebSocket device id changed to add the the parent app id so you can have multiple instances (Hubitat Only) @yototogblo .

Action App (v3.6.1.0)

  • FIXED: Logging Storage State Size Fix.

Zone App (v3.6.1.0)

  • FIXED: Logging Storage State Size Fix.

Echo Device (v3.6.1.0)

  • FIXED: Logging Storage State Size Fix.
2 Likes

I've been fighting with this on and off for a bit. I think amazon applied a lower rate-limit to the undocumented web api that they have for the official skills API.
The official API is 50 requests per account per second.

I have absolutely no idea how this is being measured, and even if your implementation methodology may have something to do with it,but here is what I do...; I'm very, very far from this limit!

I make a simple call to 5 devices:
setVolumeSpeakAndRestore(80, "Help", 40) Device1
setVolumeSpeakAndRestore(80, "Help", 40) Device2
Delay 3s
setVolumeSpeakAndRestore(80, "Help", 40) Device3
setVolumeSpeakAndRestore(80, "Help", 40) Device4
Delay 5s
setVolumeSpeakAndRestore(80, "Help", 40) Device5

I sometimes get the "rate exceeded" issue by the time it tries to speak on Device3, sometimes Device4. rarely on Device5.

Assuming (just guessing) each parameter in the call is 1 request, and the call itself is 1, then there are only 4 requests being made per speak command! I guess you can see where I am heading with this... Realistically speaking there is no way I should be hitting a limit.

These type of scenarios are why I created Zones.
Zones work really well in ES Actions because it would send those to the 5 devices to the "Zone" as a single command to amazon and amazon would process the sequence in the cloud.

I need to think of a way to maybe create devices for the zones themselves so that can be used in WebCore or Rule Machine

I did briefly play with Zones.
In my example I used the same volume settings (cut& paste) I do realistically use different volume settings for each device I talk to; some are hooked up to powered speakers, some are dots vs shows, and some are just in a quiet location. A single zone will not allow me to do that. I guess I could create 5 different zones...

As a heads-up I also dot not really use ES Actions; again I played around with it. But, and this is in now way a criticism, the power of WC and RM far surpasses the Actions ability. Call it personal preference if you want.

What I would absolutely love is some form of a speech queue.
Not a queue for speaking the same thing to 1-x devices, but a queue where you can speak 20 different things one after the other, and the app will queue them up and speak 1 at a time without killing the previous speech output. Correct sequencing will be up to the end user.