Release Candidate and Support: Amazon Echo Control Binding

Tags: #<Tag:0x00007f2fc044f588> #<Tag:0x00007f2fc044f448> #<Tag:0x00007f2fc044f2b8>

Hi @jjk, hope the following illustrates my setup:

WAN           OUTSIDE NET           INSIDE NET
               IP x.x.x.x           IP x.x.y.y           
----> ROUTER  ----------->  SERVER ------------->
     (FRITZBOX)             (Linux)
      FIREWALL   GARDEN     FIREWALL  "SECURED"
        NAT      DEVICES      NAT       LAN
                            KVM HOST        

It does, thanks :slight_smile:

Let me know if I can help implement it.

I’ve been struggling with trying to get this to work since 2 days now.
Still no luck.
I am on 2.3 Stable.

What I tried so far (result at the end as it’s always the same):

  • Used version shipped with Openhab 2.3 and installed via PaperUI
  • Uninstalled Paper UI installed version and tried RC3
  • used amazon.de as account
  • used amazon.com
  • cleared /tmp and /cache multiple times
  • changed OpenHab port back to 8080 default as it’s running on 8090 over here

Thing remains in status “No session ID received”.

When accessing http://openhabhost:8090/amazonechocontrol/<thing_ID>/ I always get:

HTTP ERROR 500
Problem accessing /amazonechocontrol/account/. Reason:

    Server Error
Caused by:
org.openhab.binding.amazonechocontrol.internal.ConnectionException: No session id received
	at org.openhab.binding.amazonechocontrol.internal.Connection.getLoginPage(Connection.java:435)
	at org.openhab.binding.amazonechocontrol.internal.AccountServlet.doGet(AccountServlet.java:219)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:584)
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:284)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
	at org.eclipse.jetty.server.Server.handle(Server.java:534)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108)
	at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
	at java.lang.Thread.run(Thread.java:748)

Did you happen to change port from 8080 to 8090?
Are you sure that you can access internet from Openhab installed Machine?

8080 won’t work as Openhab doesnt listen on that port but on 8090. Yes, the machine has full Internet access.

Blockquote

First Steps
Create an ‘Amazon Account’ thing
Configure your credentials in the account thing (2 factor authentication is not supported!)
After confirmation:
a) the ‘Account Thing’ goes Online -> continue with 4)
b) the ‘Account Thing’ stays offline:
open the url YOUR_OPENHAB/amazonechocontrol in your browser (e.g. http://openhab:8080/amazonechocontrol/), click the link for your account thing and try to login.
The echo device things get automatically discovered and can be accepted

Blockquote
This is working for me… I tested it on 2.3 Stable.

That’s what I did - multiple times. Issue with Error 500 remains.

Error message from logfile:

09:55:43.639 [WARN ] [.eclipse.jetty.servlet.ServletHandler] - /amazonechocontrol/8570a19a/
org.openhab.binding.amazonechocontrol.internal.ConnectionException: No session id received
        at org.openhab.binding.amazonechocontrol.internal.Connection.getLoginPage(Connection.java:435) [190:org.openhab.binding.amazonechocontrol:2.3.0.201805231855]
        at org.openhab.binding.amazonechocontrol.internal.AccountServlet.doGet(AccountServlet.java:219) [190:org.openhab.binding.amazonechocontrol:2.3.0.201805231855]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) [31:javax.servlet-api:3.1.0]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [31:javax.servlet-api:3.1.0]
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848) [85:org.eclipse.jetty.servlet:9.3.21.v20170918]
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:584) [85:org.eclipse.jetty.servlet:9.3.21.v20170918]
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) [183:org.ops4j.pax.web.pax-web-jetty:6.0.9]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [84:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [82:org.eclipse.jetty.security:9.3.21.v20170918]
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [84:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) [84:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:284) [183:org.ops4j.pax.web.pax-web-jetty:6.0.9]
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) [85:org.eclipse.jetty.servlet:9.3.21.v20170918]
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [84:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) [84:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [84:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) [183:org.ops4j.pax.web.pax-web-jetty:6.0.9]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) [84:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.server.Server.handle(Server.java:534) [84:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333) [84:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) [84:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283) [76:org.eclipse.jetty.io:9.3.21.v20170918]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108) [76:org.eclipse.jetty.io:9.3.21.v20170918]
        at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) [76:org.eclipse.jetty.io:9.3.21.v20170918]
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) [87:org.eclipse.jetty.util:9.3.21.v20170918]
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) [87:org.eclipse.jetty.util:9.3.21.v20170918]
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) [87:org.eclipse.jetty.util:9.3.21.v20170918]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) [87:org.eclipse.jetty.util:9.3.21.v20170918]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [87:org.eclipse.jetty.util:9.3.21.v20170918]
        at java.lang.Thread.run(Thread.java:748) [?:?]

I was getting this…

… and had been uninstalling the binding when I was done fiddling with it. But I accidentally left the binding installed over night and magically everything started working in the morning! The log shows that it took about 5 hours. If you’re having the same issue, you might want to just leave it be for a while.

Hi.
Have to re-login every 5-7days? Is this normal? Use openhab 2.3 and download the RC3 Version from market place. The logs shows an error by connecting but the account always go offline only after a restart of openhab.
Greetings,
Markus

Why? The proper version for 2.3 stable is the version installed through PaperUI Addon, not the market place.

Uninstalled everything, cleaned tmp and cache and installed again via Paper UI. Added thing, getting no Session ID received. Will let it sit but I must admit I am not expecting it to solve magically, but I’ll give it a try mate :slight_smile:

Hi Sihui.
Yes, this version i had before. And after two times of re-login i saw in the post’s:
Wenn Sie die Seite http (s) öffnen: // youropenhab: port / amazonechocontrol (z. B. http: // localhost: 8080 / amazonechocontrol 3 ) können Sie überprüfen, ob die RC3 korrekt installiert ist. es sollte so aussehen:
RC3.
So i used this version. Because i can’t see RC3. But both gives the same result.
Already deleted the cache and temp folder. All things deleted, restart and new Installation.
Greetings,
Markus

Hey guys, this is a great Binding, I’m really enjoying getting a LOT more out of my Echo Dots than I ever thought possible, thanks to this!! TextToSpeech is freaking awesome, I’m enjoying plugging that in to some of my alert rules, fun!

I’m struggling with the “Routine” part. the guide indicates Type in what you normally say to Alexa without the preceding "Alexa," which I am interpreting to mean I can pass a string to Alexa in the same manner I would speak that phrase, and Alexa should respond “as if” I had verbally said that string. Just as an example, this is what I’ve tried (with no success):

.items file:
String DotRoutine {channel="amazonechocontrol:echo:myaccount:itemguidhere:startRoutine"}

.rules file:
then
  DotRoutine.sendCommand('what time is it?')

But, to no avail. I figured when the rule triggered, Alexa would blurt out “The time is 2:3ppm”. but no joy.
Am I missing something in my item or rule, or is this function simply not intended to do what I’m attempting?

thanks all!

Hey,
Routine is an Alexa feature so you do this in the Alexa app. There you can define a command Alexa should listen to and manually specify how alexa reacts on this command.
my use-case:
I have a routing calles “which windows are open” that triggers a proxy item (switch) within openhab. This switch triggers a rule, which then calculates windows, and uses TTS to have Alexa spit the reply.

The startRoutine channel is a bit different: Say you have manually created a routing called “start my day” and added Alexa items like reading the news, turning on lights, etc.
This routine can then be started like:

DotRoutine.sendCommand('start my day')

Hope this helps. Additions & corrections welcome.
Best Seb

So I let everything sit since yesterday as suggested - no luck. Still no session ID received and srever error.

A while ago I had success using another browser … clearing the browsers cache should do the same.

Already tried that, even from multiple devices. As the error message states a 500 this clearly points towards Jetty itself but I have no clue how to further debug :frowning:

After a reboot yesterday, I’m back to getting the error too.