Release Candidate and Support: Amazon Echo Control Binding

Perfect!

Thanks again, Jay

I donā€™t believe I am the only one having the error below. Looking through this thread and the others sited, I didnt see a fix, or did I miss something? If there is no current fix, I will monitor thread for now, it is not a big problem for me.

HTTP ERROR 500
Problem accessing /amazonechocontrol/account1/. 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)
Powered by Jetty:// 9.3.21.v20170918

I wouldnā€™t be surprised if itā€™s related to all the site crashing issues Amazon has been having with prime day, I would just wait and it should clear up on itā€™s own

1 Like

Same issue hereā€¦ Amazon is probably throwing all their resources on selling echo devices todayā€¦

1 Like

My email alert warned me today that the Echo Control binding was down. Itā€™s Amazon Prime Day, which has been crashing servers all day.

I was one of the problem makers since I did some shopping myself (and many shopping pages crashed, making it miserable). I think this mess will take a couple days to go away.

  • Thomas
1 Like

@ThomasOH @michi

Question - Would it be possible to take the code for the TTS portion of this and package it as a OH TTS service/binding?

This would allow it to become another option of available processors like POLLY TTS and the new GOOGLE TTS.

Thanks,

Squid

3 Likes

My logs were drowning in Amazon errors yesterday too. I didnā€™t make the prime day connection and thought something was wrong on my end. I deleted the things and bindings, and commented out all the items and groups. Iā€™ll try to reinstall it all later this week.

I was just getting mine setup and apparently chose the wrong time to do so. Iā€™ll give it until Friday or Saturday before I attempt to start over.

1 Like

Hi all,
I am using this binding since a while and I am very happy with it.
However I have noticed my REST calls to Openhab (also in the PaperUI) are significantly slower when I have items enabled for the echo control binding. Response times drop from 130ms to 2.5 seconds!

I could narrow it down to the following channels:

  • echo:musicProviderId
  • echo:amazonMusicPlayListId
  • echo:playAlarmSound
  • wha:amazonMusicTrackId
  • wha:amazonMusicPlayListId

each one is adding about 100ms to the request (with 4 echos and one multiroom setup this amounts to about 2500ms additional request time)

Has anyone else experienced something similar?
/schaze

I noticed it too but it got buried in the conversation (a few times) above. It seems that the binding makes a call to amazon even if openhab is just getting the value/current status of items attached to those channels. I donā€™t know why itā€™s doing it but for now Iā€™ve just unlinked my items attached to those channels since I have 5 devices and it was making my habpanel unusable

Are you still getting this? I get this initially, then if I refresh after about 30 seconds Iā€™m able to get to the Amazon login screen. I login and then Iā€™m prompted to login a 2nd time and type in a captcha. After I complete that step Iā€™m then getting:

java.lang.IllegalArgumentException: Empty cookie header string

Iā€™m curious if anyone else got this and I just did something stupid on setup.

@natodd if you were asking me, I have not tried to reinstall yet. I am traveling so I decided to wait until I was going to be home to try again.

1 Like

ok, thanks Danny.

Edit2: I got this resolved. Deleted the binding and things.
Reinstalled and resetup. Working correctly now.

Edit:
Seems Iā€™m still getting this.

java.lang.IllegalArgumentException: Empty cookie header string
at java.net.HttpCookie.parseInternal(HttpCookie.java:826)
at java.net.HttpCookie.parse(HttpCookie.java:202)
at java.net.HttpCookie.parse(HttpCookie.java:178)
at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequest(Connection.java:366)
at org.openhab.binding.amazonechocontrol.internal.AccountServlet.HandleProxyRequest(AccountServlet.java:453)
at org.openhab.binding.amazonechocontrol.internal.AccountServlet.doPost(AccountServlet.java:160)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
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)

May this help to solve the UNDEF volume issue:
I just noticed today that only Echo devices have the volume set to UNDEF: Echo Dot devices show the right volume level from the beginning.

I experience incorrect character encoding with Amazon Echo binding. See how the list of devices is shown (should be DeuxiĆØme Ć©tage and Rez-de-chaussĆ©e).

Any text coming from Amazon has this incorrect character set (name of songs, radiosā€¦). Any idea what is causing this issue? I read about UTF8 / ISO8859-1 charset issueā€¦

@michi
Does the TTS feature fully support the SSML? This would help customizing a bit the speech of Alexa which terrible :alien: by default (at least in French)
See Amazon Alexa SSML reference
How should text be formatted to include the tags?

Hi everybody,

iā€™ve created a new thread since iā€™m having issues with the playMusicVoiceCommand.
But since my original thread went quite down on the list, iā€™ve decided to ask here:

Does anybody have an idea why the playMusicVoice command results in a bad request?
TTS is working.

Hello,

I was trying to install this binding to my openhab installation and Iā€™ve got several errors. In the beginning it was one of the errors received by other users (No session id received), and then I decided to use nightly build (still the same No session id received).

Then I decided to change the java version from the Zulu8 (embedded in openhabian) to the oracle one.

After I did that I now get the login page time to time, but when I get it and I try to login (with captcha which always happens) I get the following error (got from the debug on openhab2)

My version is:
ii openhab2 2.4.0~20180802110936-1 all openhab2

[12:32:59] openhabian@openHABianPi:~$ java -version
java version ā€œ1.8.0_181ā€
Javaā„¢ SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpotā„¢ Client VM (build 25.181-b13, mixed mode)

12:25:06.738 [DEBUG] [amazonechocontrol.internal.Connection] - Login query String: appActionToken=cDh1qaJTenNVWr5oSK3JjZrDiu8j3D&appAction=SIGNIN&showRmrMe=ape%3AMQ%3D%3D&openid.return_to=ape%3AaHR0cHM6Ly9hbGV4YS5hbWF6b24uY29tLw%3D%3D&prevRID=ape%3AUEtWQlZCRUcyV1gzQUNSUU1RU1Y%3D&openid.identity=ape%3AaHR0cDovL3NwZWNzLm9wZW5pZC5uZXQvYXV0aC8yLjAvaWRlbnRpZmllcl9zZWxlY3Q%3D&openid.assoc_handle=ape%3AYW16bl9kcF9wcm9qZWN0X2RlZQ%3D%3D&openid.mode=ape%3AY2hlY2tpZF9zZXR1cA%3D%3D&failedSignInCount=ape%3AMA%3D%3D&openid.claimed_id=ape%3AaHR0cDovL3NwZWNzLm9wZW5pZC5uZXQvYXV0aC8yLjAvaWRlbnRpZmllcl9zZWxlY3Q%3D&pageId=ape%3AYW16bl9kcF9wcm9qZWN0X2RlZQ%3D%3D&openid.ns=ape%3AaHR0cDovL3NwZWNzLm9wZW5pZC5uZXQvYXV0aC8yLjA%3D&showPasswordChecked=false&session-id=131-5145053-5932232
12:25:06.799 [DEBUG] [amazonechocontrol.internal.Connection] - Make request to https://www.amazon.com/ap/signin
12:25:06.911 [WARN ] [.eclipse.jetty.servlet.ServletHandler] - /amazonechocontrol/echo/ap/signin
java.lang.IllegalArgumentException: Empty cookie header string
at java.net.HttpCookie.parseInternal(HttpCookie.java:826) [?:?]
at java.net.HttpCookie.parse(HttpCookie.java:202) [?:?]
at java.net.HttpCookie.parse(HttpCookie.java:178) [?:?]
at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequest(Connection.java:366) [208:org.openhab.binding.amazonechocontrol:2.4.0.201808020834]
at org.openhab.binding.amazonechocontrol.internal.AccountServlet.HandleProxyRequest(AccountServlet.java:453) [208:org.openhab.binding.amazonechocontrol:2.4.0.201808020834]
at org.openhab.binding.amazonechocontrol.internal.AccountServlet.doPost(AccountServlet.java:160) [208:org.openhab.binding.amazonechocontrol:2.4.0.201808020834]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [24:javax.servlet-api:3.1.0]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [24:javax.servlet-api:3.1.0]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848) [78:org.eclipse.jetty.servlet:9.3.21.v20170918]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:584) [78:org.eclipse.jetty.servlet:9.3.21.v20170918]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) [175:org.ops4j.pax.web.pax-web-jetty:6.0.9]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [77:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [75:org.eclipse.jetty.security:9.3.21.v20170918]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [77:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) [77:org.eclipse.jetty.server:9.3.21.v20170918]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:284) [175:org.ops4j.pax.web.pax-web-jetty:6.0.9]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) [78:org.eclipse.jetty.servlet:9.3.21.v20170918]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [77:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) [77:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [77:org.eclipse.jetty.server:9.3.21.v20170918]
at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) [175:org.ops4j.pax.web.pax-web-jetty:6.0.9]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) [77:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.server.Server.handle(Server.java:534) [77:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333) [77:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) [77:org.eclipse.jetty.server:9.3.21.v20170918]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283) [69:org.eclipse.jetty.io:9.3.21.v20170918]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108) [69:org.eclipse.jetty.io:9.3.21.v20170918]
at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) [69:org.eclipse.jetty.io:9.3.21.v20170918]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) [80:org.eclipse.jetty.util:9.3.21.v20170918]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) [80:org.eclipse.jetty.util:9.3.21.v20170918]
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) [80:org.eclipse.jetty.util:9.3.21.v20170918]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) [80:org.eclipse.jetty.util:9.3.21.v20170918]
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [80:org.eclipse.jetty.util:9.3.21.v20170918]
at java.lang.Thread.run(Thread.java:748) [?:?]
12:25:07.913 [DEBUG] [amazonechocontrol.internal.Connection] - Call to https://www.amazon.com/ap/signin succeeded
12:25:08.108 [DEBUG] [amazonechocontrol.internal.Connection] - Received content after login

Hi schaze,
I assume this is because there is an dynamic state description provider for these channels. But I donā€™t know any solution for this problem.
Regards,
Michael

Beta 2.4 (1) Version

Hi everybody,

I found a little bit time to prepare a new beta version. I have refactored the connection handling, so that Iā€™am sure that no old connection can left in the memory. I do not know, if this fix any of the problems, because I do not have any problems in my installation.

I also tried to fix the ā€œjava.lang.IllegalArgumentException: Empty cookie header stringā€ error.
I also do not know if this fix anything else, because I have never seen this problem in my installation.

And last but not least I tried to fix the problem with UNDEF volumn.

The download link can be find in the top most posting in this thread.

I also have added a feature for people with technical background know how:

Itā€™s now possible to call all alexa api calls thought a http proxy which adds the session cookies.

Just use the url http(s)://[youropenhab]/amazonechocontrol/PROXY/[accountid]/ as prefix.

E.g. to get the latest commands spoken to alexa: http://localhost:8080/amazonechocontrol/account1/PROXY/api/activities?size=5&offset=0

E.g. to get all timers:
http://localhost:8080/amazonechocontrol/account1/PROXY/api/notifications

Maybe anybody else can provide a sample, how this can be used in a rule

The proxy server supports also PUT and POST verbs.

Regards,
Michael

1 Like