Release Candidate and Support: Amazon Echo Control Binding

You can simple add a echo thing with the serial of the fire tv stick. Some das of the channels are working, but I have no list which one, thats the reason why ont thing type exist for this in the binding. But anyway, I don‘t believe that you can start a app. There is no possibility to start skills in the amazon API.

It would be possible to make a http call throught the reverse proxy feature of the binding. Just find out the necessary call from the io broker source.

1 Like

Hello,

I’m currently experiencing issues with the binding such that it’s not working and there seem to be timeouts. When going to the login control in browser, I receive:

HTTP ERROR 500

Problem accessing /amazonechocontrol/f121fa24. Reason:

    Server Error
Caused by:

javax.servlet.ServletException: java.net.ConnectException: Connection timed out (Connection timed out)
	at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:88)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
	at org.eclipse.jetty.server.Server.handle(Server.java:505)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:804)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.ConnectException: Connection timed out (Connection timed out)
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:666)
	at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)
	at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
	at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
	at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
	at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:347)
	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequest(Connection.java:527)
	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequestAndReturnString(Connection.java:446)
	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequestAndReturnString(Connection.java:441)
	at org.openhab.binding.amazonechocontrol.internal.Connection.verifyLogin(Connection.java:773)
	at org.openhab.binding.amazonechocontrol.internal.AccountServlet.doGet(AccountServlet.java:274)
	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:873)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:542)
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1700)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:293)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1667)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
	at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)
	... 15 more

Is that Amazon has changed something or is the binding an issue?

HI Michi

it looks like the binding is still not stable, at least in my configuration. I loaded the newest beta it and still behaved as I already mentioned. When I operate the echo via voice control, song ID, album art etc. usually do not change. As soon as I do the control with Openhab, everything is updated. The same is true for restarting Openhab. I don’t have an error message in the logs concerning the Echo control binding.
I appreciate every suggestion
BR
Daniel

This is how Jeedom ( alexa-api plugin) Delete all the alarm of a particular echo.

This is a little over my skill ( I created two alarms, and the plugin delete query amazon site to know what alarm to delete and then delete them one by one, each alarm seems to have their endpoint :

[2019-7-13 21:40:58] Alexa-API: DeleteAllAlarms
[2019-7-13 21:40:58] Alexa-Remote: No authentication check needed (time elapsed 42973)
[2019-7-13 21:40:58] Alexa-Remote: Sending Request with {“host”:“alexa.amazon.com”,“path”:"/api/notifications?cached=true&_=1563068458379",“method”:“GET”,“timeout”:10000,“headers”:{}}
[2019-7-13 21:40:58] Alexa-Remote: Response: {“notifications”:[{“alarmTime”:0,“createdDate”:1563068454819,“deferredAtTime”:null,“deviceSerialNumber”:“Serialxxxxxxxx”,“deviceType”:“A32DOYMUN6DTXA”,“extensibleAttribute”:null,“geoLocationTriggerData”:null,“id”:“A32DOYMUN6DTXA-Serialxxxxxxxx-5a590bfe-3739-35c0-afc6-5b51bcd8affd”,“lastUpdatedDate”:1563068454933,“musicAlarmId”:null,“musicEntity”:null,“notificationIndex”:“5a590bfe-3739-35c0-afc6-5b51bcd8affd”,“originalDate”:“2019-07-14”,“originalTime”:“21:00:00.000”,“personProfile”:null,“provider”:null,“rRuleData”:null,“recurringPattern”:null,“remainingTime”:0,“reminderLabel”:null,“skillInfo”:null,“snoozedToTime”:null,“sound”:{“displayName”:“Simple Alarm”,“folder”:null,“id”:“system_alerts_melodic_01”,“providerId”:“ECHO”,“sampleUrl”:“https://s3.amazonaws.com/deeappservice.prod.notificationtones/system_alerts_melodic_01.mp3"},“status”:“ON”,“targetPersonProfiles”:null,“timeZoneId”:null,“timerLabel”:null,“triggerTime”:0,“type”:“Alarm”,“version”:“2”},{“alarmTime”:0,“createdDate”:1563068449031,“deferredAtTime”:null,“deviceSerialNumber”:“Serialxxxxxxxx”,“deviceType”:“A32DOYMUN6DTXA”,“extensibleAttribute”:null,“geoLocationTriggerData”:null,“id”:“A32DOYMUN6DTXA-Serialxxxxxxxx-8015e7a6-5c02-36e6-a4d0-fbb9cfd9d778”,“lastUpdatedDate”:1563068449140,“musicAlarmId”:null,“musicEntity”:null,“notificationIndex”:“8015e7a6-5c02-36e6-a4d0-fbb9cfd9d778”,“originalDate”:“2019-07-14”,“originalTime”:“17:00:00.000”,“personProfile”:null,“provider”:null,“rRuleData”:null,“recurringPattern”:null,“remainingTime”:0,“reminderLabel”:null,“skillInfo”:null,“snoozedToTime”:null,“sound”:{“displayName”:"Simple Alarm”,“folder”:null,“id”:“system_alerts_melodic_01”,“providerId”:“ECHO”,“sampleUrl”:“https://s3.amazonaws.com/deeappservice.prod.notificationtones/system_alerts_melodic_01.mp3"},“status”:“ON”,“targetPersonProfiles”:null,“timeZoneId”:null,“timerLabel”:null,“triggerTime”:0,“type”:“Alarm”,“version”:“2”},{“alarmTime”:0,“createdDate”:1562915925166,“deferredAtTime”:null,“deviceSerialNumber”:“Serialxxxxxxxx”,“deviceType”:“A32DOYMUN6DTXA”,“extensibleAttribute”:null,“geoLocationTriggerData”:null,“id”:“A32DOYMUN6DTXA-Serialxxxxxxxx-a30b0d61-52a8-39e5-8a2d-2d4dc56715f3”,“lastUpdatedDate”:1562947204678,“musicAlarmId”:null,“musicEntity”:null,“notificationIndex”:“a30b0d61-52a8-39e5-8a2d-2d4dc56715f3”,“originalDate”:“2019-07-12”,“originalTime”:“12:00:00.000”,“personProfile”:null,“provider”:null,“rRuleData”:null,“recurringPattern”:null,“remainingTime”:0,“reminderLabel”:null,“skillInfo”:null,“snoozedToTime”:null,“sound”:{“displayName”:"Simple Alarm”,“folder”:null,“id”:“system_alerts_melodic_01”,“providerId”:“ECHO”,“sampleUrl”:“https://s3.amazonaws.com/deeappservice.prod.notificationtones/system_alerts_melodic_01.mp3"},“status”:“OFF”,“targetPersonProfiles”:null,“timeZoneId”:null,“timerLabel”:null,“triggerTime”:0,“type”:“Alarm”,“version”:“4”},{“alarmTime”:0,“createdDate”:1562642668724,“deferredAtTime”:null,“deviceSerialNumber”:“Serialxxxxxxxx”,“deviceType”:“A32DOYMUN6DTXA”,“extensibleAttribute”:null,“geoLocationTriggerData”:null,“id”:“A32DOYMUN6DTXA-Serialxxxxxxxx-f4ed9ee9-9b0a-34ad-9e9a-d9f04616cf72”,“lastUpdatedDate”:1562754904598,“musicAlarmId”:null,“musicEntity”:null,“notificationIndex”:“f4ed9ee9-9b0a-34ad-9e9a-d9f04616cf72”,“originalDate”:“2019-07-10”,“originalTime”:“06:35:00.000”,“personProfile”:null,“provider”:null,“rRuleData”:null,“recurringPattern”:null,“remainingTime”:0,“reminderLabel”:null,“skillInfo”:null,“snoozedToTime”:null,“sound”:{“displayName”:"Simple Alarm”,“folder”:null,“id”:“system_alerts_melodic_01”,“providerId”:“ECHO”,“sampleUrl”:“https://s3.amazonaws.com/deeappservice.prod.notificationtones/system_alerts_melodic_01.mp3"},“status”:“OFF”,“targetPersonProfiles”:null,“timeZoneId”:null,“timerLabel”:null,“triggerTime”:0,“type”:“Alarm”,“version”:"8”}]}
[2019-7-13 21:40:58] Alexa-API - deleteallalarms req.query.type: alarm
[2019-7-13 21:40:58] Alexa-API - DeleteAllAlarms delete id: A32DOYMUN6DTXA-Serialxxxxxxxx-5a590bfe-3739-35c0-afc6-5b51bcd8affd
[2019-7-13 21:40:58] Alexa-Remote: No authentication check needed (time elapsed 43267)
[2019-7-13 21:40:58] Alexa-Remote: Sending Request with {“host”:“alexa.amazon.com”,“path”:"/api/notifications/A32DOYMUN6DTXA-Serialxxxxxxxx-5a590bfe-3739-35c0-afc6-5b51bcd8affd",“method”:“DELETE”,“timeout”:10000,“headers”:{}}
[2019-7-13 21:40:58] Alexa-API - DeleteAllAlarms delete id: A32DOYMUN6DTXA-Serialxxxxxxxx-8015e7a6-5c02-36e6-a4d0-fbb9cfd9d778
[2019-7-13 21:40:58] Alexa-Remote: No authentication check needed (time elapsed 43270)
[2019-7-13 21:40:58] Alexa-Remote: Sending Request with {“host”:“alexa.amazon.com”,“path”:"/api/notifications/A32DOYMUN6DTXA-Serialxxxxxxxx-8015e7a6-5c02-36e6-a4d0-fbb9cfd9d778",“method”:“DELETE”,“timeout”:10000,“headers”:{}}
[2019-7-13 21:40:59] Alexa-Remote: Response: OK
[2019-7-13 21:40:59] Alexa-Remote: Response: OK

If someone understand the code please tell https://github.com/Apollon77/alexa-remote/blob/master/alexa-remote.js

I am looking to send a stop command. I tried a post command to the proxy with postman but this is somewhat complicated.

createSequenceNode(command, value, callback) {
    const seqNode = {
        '@type': 'com.amazon.alexa.behaviors.model.OpaquePayloadOperationNode',
        'operationPayload': {
            'deviceType': 'ALEXA_CURRENT_DEVICE_TYPE',
            'deviceSerialNumber': 'ALEXA_CURRENT_DSN',
            'locale': 'ALEXA_CURRENT_LOCALE',
            'customerId':'ALEXA_CUSTOMER_ID'
        }
    };
       case 'deviceStop':
            seqNode.type = 'Alexa.DeviceControls.Stop';
            seqNode.operationPayload.devices = [
                {
                    "deviceSerialNumber": "ALEXA_CURRENT_DSN",
                    "deviceType": "ALEXA_CURRENT_DEVICE_TYPE"
                }
            ];
            seqNode.operationPayload.isAssociatedDevice = false;
            delete seqNode.operationPayload.deviceType;
            delete seqNode.operationPayload.deviceSerialNumber;
            delete seqNode.operationPayload.locale;
            break;

It seems that this was an amazon issue. Is it working again in the meantime?

This make a routine call with “Stop Audio” (or similar, translated from “Audio anhalten” under “Device Settings” (translated from “Geräteeinstellungen”). But I don’t think, that this will stop an alarm. Just try it first with an alexa routine which uses this option. If this would work, you can use the startRoutine channel.

Yes, that is true, this makes the handling of alarms a little bit complicated. You have to read out all all existings alarms first to find the id, then can you delete them. So it seem’s there is no easy solution for this.

Could you check on the http://<youropenhab>/amazonechocontrol page if the beta is loaded. The beta number should be shown in the header.

thanks @michi


awww I didn’t test to stop an alarm or timer yet with this . Your right.

i’ll use a routine, from this plugin, for now! Thanks

Hi Michi
at the moment it works without changing anything. I am running on Beta 8.
I´m realyy curius, what makes the difference, why it works sometimes, and sometimes it doesn´t, especially beacause I don´t see eny messages in the log.

BR
Daniel

I am new here, but in Home Assistant somebody has developed a media-player that also does text-to-speech to control Alexa routines.
Perhaps some of their code will spark some ideas.

Hi,
thanks for the hint, but it seem, all off them can be done already with the binding. The code seems to be a copy of my and Ingo (ioBroker) and Michael (Java Script Library). We are working together and exchange all our informations.
Best,
Michael

2 Likes

I can agree…lol. I have cheked some of the code related to alexa… and they all point to the same source.

ex . jeedom who is in php…
A plugin install npm and node js to be able to communicated with the alexaremote code.

Hi,
I have been recently getting an error multiple times a day, I am on latest jar (2.5.0 beta 8) and running OH 2.4 stable.

LOG:

org.openhab.binding.amazonechocontrol.internal.HttpException: GET url 'https://alexa.amazon.com.au/api/np/player?deviceSerialNumber=G090LF1180520ALQ&deviceType=A3S5BH2HU6VAYF&screenWidth=1440' failed: Internal Server Error

I went to the URL in a browser and put in my account credentials and there is a response with a value of null I was expecting to see a 500 internal server HTTP error response from the error message in the log but thats not what I got.

Regards
Paul

Hi Paul,
This seems to me not a critical bug in the binding. I have recognized already, that the amazon does not return the player info in all states. Depending on this it returns the 500 (This will be shown in the browser development tools in the alexa web site, too). But this should not make a problem in the binding, because it is catched.
If you get the correct information in the title channel every one works works fine, only the logging is a little bit bad. Maybe you have more infos about the time when it happens, I could prevent calls in this state. So the information which music provider is used at this time and if the player is active or paused, this would be helpful.
Best,
Michael

2.5 Release Candidate 1
I have released now a new version name Release Candidate 1 ( Download from the top most posting). As you can see in the name, I do not plan new features until the official release of openHAB 2.5 and this version is the same, which is already included in the daily snapshot build of OH 2.5.
But this is not a hint that the official release of openHAB 2.5 will be in the short future. I have no information about the release date. I only use this naming, because the next beta version with new features (smarthome device support developed from Lukas Knöller) will not be part of the 2.5.

Best,
Michael

2 Likes

Works great . Installed from snapshot.

I tried and failed to correlate error log times with play requests.
The full log example below was at 1 AM when we are all soundly in bed and no messages are sent to TTS for playback either.
I have had a 107 of these errors so far today.

2019-07-19 01:00:55.968 [INFO ] [control.internal.handler.EchoHandler] - getPlayer fails: {}
org.openhab.binding.amazonechocontrol.internal.HttpException: GET url 'https://alexa.amazon.com.au/api/np/player?deviceSerialNumber=G090LF1180520ALQ&deviceType=A3S5BH2HU6VAYF&screenWidth=1440' failed: Internal Server Error
	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequest(Connection.java:634) ~[282:org.openhab.binding.amazonechocontrol:2.4.0.Beta_8]
	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequestAndReturnString(Connection.java:485) ~[282:org.openhab.binding.amazonechocontrol:2.4.0.Beta_8]
	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequestAndReturnString(Connection.java:480) ~[282:org.openhab.binding.amazonechocontrol:2.4.0.Beta_8]
	at org.openhab.binding.amazonechocontrol.internal.Connection.getPlayer(Connection.java:912) ~[282:org.openhab.binding.amazonechocontrol:2.4.0.Beta_8]
	at org.openhab.binding.amazonechocontrol.internal.handler.EchoHandler.updateState(EchoHandler.java:853) [282:org.openhab.binding.amazonechocontrol:2.4.0.Beta_8]
	at org.openhab.binding.amazonechocontrol.internal.handler.EchoHandler.handlePushCommand(EchoHandler.java:1283) [282:org.openhab.binding.amazonechocontrol:2.4.0.Beta_8]
	at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.handlePushDeviceCommand(AccountHandler.java:734) [282:org.openhab.binding.amazonechocontrol:2.4.0.Beta_8]
	at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.handleWebsocketCommand(AccountHandler.java:722) [282:org.openhab.binding.amazonechocontrol:2.4.0.Beta_8]
	at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.webSocketCommandReceived(AccountHandler.java:683) [282:org.openhab.binding.amazonechocontrol:2.4.0.Beta_8]
	at org.openhab.binding.amazonechocontrol.internal.WebSocketConnection$Listener.onWebSocketBinary(WebSocketConnection.java:406) [282:org.openhab.binding.amazonechocontrol:2.4.0.Beta_8]
	at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onBinaryMessage(JettyListenerEventDriver.java:82) [93:org.eclipse.jetty.websocket.common:9.4.11.v20180605]
	at org.eclipse.jetty.websocket.common.message.SimpleBinaryMessage.messageComplete(SimpleBinaryMessage.java:68) [93:org.eclipse.jetty.websocket.common:9.4.11.v20180605]
	at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(AbstractEventDriver.java:66) [93:org.eclipse.jetty.websocket.common:9.4.11.v20180605]
	at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onBinaryFrame(JettyListenerEventDriver.java:68) [93:org.eclipse.jetty.websocket.common:9.4.11.v20180605]
	at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:157) [93:org.eclipse.jetty.websocket.common:9.4.11.v20180605]
	at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:476) [93:org.eclipse.jetty.websocket.common:9.4.11.v20180605]
	at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:220) [93:org.eclipse.jetty.websocket.common:9.4.11.v20180605]
	at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:220) [93:org.eclipse.jetty.websocket.common:9.4.11.v20180605]
	at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:245) [93:org.eclipse.jetty.websocket.common:9.4.11.v20180605]
	at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:560) [93:org.eclipse.jetty.websocket.common:9.4.11.v20180605]
	at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:391) [93:org.eclipse.jetty.websocket.common:9.4.11.v20180605]
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) [76:org.eclipse.jetty.io:9.4.11.v20180605]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) [76:org.eclipse.jetty.io:9.4.11.v20180605]
	at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:291) [76:org.eclipse.jetty.io:9.4.11.v20180605]
	at org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(SslConnection.java:151) [76:org.eclipse.jetty.io:9.4.11.v20180605]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) [76:org.eclipse.jetty.io:9.4.11.v20180605]
	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) [76:org.eclipse.jetty.io:9.4.11.v20180605]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) [88:org.eclipse.jetty.util:9.4.11.v20180605]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) [88:org.eclipse.jetty.util:9.4.11.v20180605]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) [88:org.eclipse.jetty.util:9.4.11.v20180605]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) [88:org.eclipse.jetty.util:9.4.11.v20180605]
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) [88:org.eclipse.jetty.util:9.4.11.v20180605]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762) [88:org.eclipse.jetty.util:9.4.11.v20180605]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680) [88:org.eclipse.jetty.util:9.4.11.v20180605]
	at java.lang.Thread.run(Thread.java:748) [?:?]
2019-07-19 01:01:07.200 [INFO ] [control.internal.handler.EchoHandler] - getPlayer fails: {}
org.openhab.binding.amazonechocontrol.internal.HttpException: GET url 'https://alexa.amazon.com.au/api/np/player?deviceSerialNumber=G090LF0971160DL3&deviceType=A3S5BH2HU6VAYF&screenWidth=1440' failed: Internal Server Error
	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequest(Connection.java:634) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequestAndReturnString(Connection.java:485) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequestAndReturnString(Connection.java:480) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.Connection.getPlayer(Connection.java:912) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.handler.EchoHandler.updateState(EchoHandler.java:853) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.refreshData(AccountHandler.java:507) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.refreshAfterCommand(AccountHandler.java:778) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]
2019-07-19 01:01:19.552 [INFO ] [control.internal.handler.EchoHandler] - getPlayer fails: {}
org.openhab.binding.amazonechocontrol.internal.HttpException: GET url 'https://alexa.amazon.com.au/api/np/player?deviceSerialNumber=G090LF1180520ALQ&deviceType=A3S5BH2HU6VAYF&screenWidth=1440' failed: Internal Server Error
	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequest(Connection.java:634) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequestAndReturnString(Connection.java:485) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequestAndReturnString(Connection.java:480) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.Connection.getPlayer(Connection.java:912) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.handler.EchoHandler.updateState(EchoHandler.java:853) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.refreshData(AccountHandler.java:507) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.refreshAfterCommand(AccountHandler.java:778) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]

The reason I notice it, is that I have a cron job runing every 6 hours that tells me about all errors and emails it to me.

Regards

Paul