[RELEASE] Echo Speaks V4

I can get mine to authenticate all the way through. Although, after the login I get an error and does not capture the cookie. Flip back to heroku and it works fine. Right now I'm in a little place in the South Pacific. I have to mess with this when I get back.
If there's a way to incorporate this as part of the home bridge server as a plug-in that would be awesome. That might extreme line some of these configuration issues. However, I'm limited on that knowledge.

Docker for Windows:

I just tested to see if I could get the new docker container going on Windows, the --network host option does not work on windows. I started it with this command below instead which runs it in bridged mode with port 8091 being forwarded. It will work the same this way, just networked in a little different. Just run this from the command line to build and start, then after that it will be in the Docker Desktop app.

docker run --name echo-speaks-server -p 8091:8091 -d tonesto7/echo-speaks-server

@tonesto7 , excellent work, I installed the container on my unraid server and everything is working perfect on the newest version.

The error I'm getting is <UnknownOperationException/>

I am on 2.80 server.

Ok, got mine working (so far):

I did the "sudo pm2 restart index.js" as suggested by someone above.

In the Echo Speaks App, did the authenticate again. Because the app shows the server address as "0.0.0.0:8091", the dialog box that opens showed "This site can't be reached" again. I left that dialog box open, went into a new tab and did a direct url to my echo-speaks-server. Authenticated there, the cookie was obtained, hit Save Settings. Then closed the dialog box that says "This site can't be reached". This caused the App to move to the next step. Clicked NEXT, and then DONE. Went back into the app, and all is good.

So far, this has been up and running for 2 1/2 hours now.

Let's hope it stays. I'm afraid to go into the app now, thinking I might cause it to say "You are no longer logged into Amazon".

Hi @lados first you need to load docker on your NAS from the packages section. You then need to go into docker, click on registry, then search for "tonesto7/echo-speaks-server". Click on this and it will start to download. Once it is done, it will show under Image. select it and then select launch. Follow through the wizard, I did not change much other than selecting auto start and for the network setting I made it host (this gives it the same IP address as the NAS, but it runs on the 8091 port. Wait a minute or so for it to launch and get done. In your browser go to NAS IP:8091 you should see
image

I did the Amazon login, had to do this twice, Go back to the Echo-speaks app in the Hubitat and clear your server setup. Then initiate the setup being sure to turn off the “Deploy to Heroku” switch. You will need to copy the callback URL into the app.

I hope this helps.

3 Likes

Hey @tonesto7 first of all, you rule. Echo Speaks, Homebridge, excellent stuff!

For some reason Echo Speaks throws tons of exceptions on me. Here's just a sample of how my logs looks like:

The app itself reports no problems, so I am puzzled.

This one seems to be related to cookies stored on your browser. Clear cookies associated with your hub, heroku, amazon etc. or all cookies. After that I got by this error.

Jay W

Thank you!!!!

I just deployed the container on my nas, updated the app in hubitat, reset and relogged in and it's working!

The only issue I had was getting it to keep the amazon cookie. I had to log in a few times, restart the container and login again. I'm not sure which worked, but one of them did. :slight_smile:

I have the exact same errors in my logs.
I'm using a Synology NAS and the container network is is HOST mode.
I can manually hit the container page (and configure Amazon login in) with the IP and port of the Synology... But the Echo Speaks APP in Hubitat shows a totally invalid address and I believe this is why the error messages exist.
I'm a docker Newbie and I have no idea how to assign a static IP to a docker container in Bridge mode.
Maybe the issue is in the Hubitat EchoSpeaks App and not the container.
Looking at this Logically, if the Hubitat app would retain the correct local IP address (cause it works in Chrome no problem)... it should be able to reach it and the errors should go away.

I am paying Heroku, that's the most "by the book" setup, and still, the log is full of errors.

Thanks for taking the time to provide guidance. This is all new to me, and probably to many others out there. I'm still not clear with the install options that I've been following on these threads.

From what I've been reading, the main 2 software install options are thru Docker or thru Node.js.
In my case for the hardware options, I have three options: two always on PCs and a Synology: 64bit Windows 10-Home (ryzen 5/2600); 64bit Windows 10-Home (intel I5/2600); Synology DS220+.

For you more experienced users out there- For overall efficiency, stability and ease of install, what software and hardware options above do you think would work best.

For synology users, pay attention to this post by @greglsh , instead of choosing the default bridge network, choose the second one as he describes in his steps and you will get your IP address shown on the hubitat app as opposed to 0.0.0.0:8091.

There lies the issue for me... I'm not getting those results. Its pulling the wrong IP.
On Synology NAS, for networking you have the option of Bridge or Host. Host is what he is talking about in his post.

I have several active Network adapters on my NAS. A Production LAN which uses 2 Bonded NICS in Aggregated mode (10.200.0.x) and a LAN that does not route (10.0.0.x). I use this to direct connect 2 NAS's together for replication traffic. This keeps the replicated data off my prod network and switches.

Somewhere in the setup, The app in Hubitat is calling the container using the wrong network. Its trying to access the 10.0.0.10 IP rather than the 10.200.0.10 IP. I have another container configured in Host mode that is using the 10.200.x.x network in bridge mode with no issue (piHole). I have no idea how to fix this. But I can access the container just fine using 10.200.0.10:8091



I'm having problems getting the @tonesto7 container to work under Windows. My environment is Windows 11 Pro running on a mini-PC that I have running 24/7. Docker Desktop is installed and configured with WSL 2 and Ubuntu. I am a Docker newbie, but have a lot of experience configuring and using VMs.

Here is where I am:

  1. The echo-speaker-server container is installed and running. I can hit the web page as you can see:

  2. I can configure the local server in the Hubitat app, It got the Amazon cookie, but now I am seeing these exceptions in the log every 15 minutes, when the app tries to ping the local server:

  1. As some other users have seen, my app configuration has the local server configured at http://0.0.0.0:8091. That doesn't seem right to me;

  2. The docker run command I used to set up the container is:
    docker run -dp 8091:8091 --ip=192.168.1.17 --restart=unless-stopped tonesto7/echo-speaks-server:latest

That maps the ports and specifies the host IP. Networking is set to bridge (the default from the docs).

I don't think this is going to be able to update the cookie when that time comes, as the error shows that it can't find the local server. I'm stuck at this point and I'm no Docker expert so I don't know if there is some configuration issue. Any ideas, anyone?

Update: I got it working by using the workaround suggested by @jl0 (below). I pulled down the server sources and I added a line to the DockerFile below the other ENV statements in the file:
ENV ipAddress=192.168.1.17
(substitute the IP address of your container above)
I built the image from the sources and ran a new container and it works! No nasty exceptions in the log and the correct server IP shows up in the app. Note that you can't use the prebuild container because of this workaround, but it is easy enough to build an image and run it.

I was also seeing the 0.0.0.0 issue with Synology - the Echo Speaks server is displaying the correct IP address when you visit it, but when it does the call back through the Hubitat URL to configure the Echo Speaks app it is passing 0.0.0.0 as the IP address for the app to use (though the port is correct). I took a quick look at the Echo Speaks server source and found a quick workaround...in the Docker environment settings (same place useHeroku=false) add ipAddress=10.0.0.1 (using the correct value for your setup). Then go through the config process again and it should work. I think this might help you as well.

2 Likes

I've got two nics as well and it is selecting the second one. I do not know what is causing that, but both of mine are at least on the same subnet.

Problem solved. Thanks!

That worked!
The Habitat echo speaks IP address is now correct.

I'll watch the logs over the next couple days and see if I still have any errors.

Docker Logs...

Applied the update last night. My Echo is still Speaking to me. :grinning: Thanks!