My cases also : I have almost a small echo in all my rooms, and in each i can say “echo, light” or '“echo, shuter” or “echo VMC” or “echo vent” etc. and it activates the corresponding device or scene. Even with other command like “echo, TV” or “echo, computer”, “echo receiver”, “echo heater status” etc and it give only information or action in the right room. Without lastVoiceCommand, I dont know how to reproduce this simple but essential functionality.
Hello @Larsen : Yes, I can confirm, that the (textToSpeech) channel is still working. Just tryed with an extra build testrule for this case.
I have two scenarios running, one for “water leakage”, via a shelly “flood sensor” in the baseband. And the other for weatherforecast warning via DWD weather binding. Here in a rule I also use “play a sound” (sirene) from a MP3-file from the cloud in a command.
The DWD binding has different channels. like, Warning: on/off , Severity (4 levels), discription, instruction.
So I build four different rules (based on the four different Severity’s, which send me the discription, and the instruction as a Mail, a Whatsapp, and also a Alexa “TextToSpeech” command to my echo.
This is still working since a long time (without alexa), and since a couple of weeks again with
alexa.
I hope this helps.
@funcat Ok. But all thoose “echo, TV” or “echo, computer”, “echo receiver”, “echo heater” commands
need to be known from Alexa?
So she need to know, that those things exists in Alexa itself. This mean, that I need to create them in Alexa a thing, as a device, right?
If this is a requirement, that the devices need to be known, so created in Alexa it is not a option,
because I want ot have my device only known in my local OH setup, and not in the Amazon world.
You can use a routine in Alexa that simply answers with OK and then, in theory, pick up the lastVoiceCommand in OH and use the item state changing to trigger a rule.
From Alexa there is just one device of type ‘mode’ with associated routines. Example: “mode_heater” > toggle heater, “mode_TV” > toggle TV device, “mode_heater_plus” > increase temperature, “mode_light_off” > poweroff light, etc. That used to work very well for years (without and with ‘refreshActivity’), before lastVoiceCommand / “429 too many request” / get activites falied bug occurs every few minutes.I understand amazon changed something on it side but dont understand exactly what and how to fix/bypass/workaround it.
I was now able to create a test routine in Alexa called „restroom switch on”. As confirmation I let her say „Okay“.
The echo channel lastvoicecommand in OH gets now, a “restroom switch on”.
So I created a rule, which switches a switch on, then the trigger “restroom switch on”.
The same for off, in Alexa a routine, and in OH a rule…
Short summary: After deleting and recreating the Echo-things lastVoiceCommand partly works again.
But as others reported those errors occur very often:
log in debug mode
2025-08-13 21:44:46.140 [DEBUG] [pRequestBuilder$HttpResponseListener] - < GET to https://www.amazon.de/alexa-privacy/apd/rvh/customer-history-records?startTime=1755114149357&endTime=1755114299357&maxRecordSize=1: 429
2025-08-13 21:44:46.140 [INFO ] [ntrol.internal.connection.Connection] - getting activities failed
org.openhab.binding.amazonechocontrol.internal.ConnectionException: https://www.amazon.de/alexa-privacy/apd/rvh/customer-history-records?startTime=1755114149357&endTime=1755114299357&maxRecordSize=1 failed with code 429: Too Many Requests
at org.openhab.binding.amazonechocontrol.internal.util.HttpRequestBuilder$HttpResponseListener.onComplete(HttpRequestBuilder.java:385) ~[?:?]
at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:218) ~[?:?]
at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:210) ~[?:?]
at org.eclipse.jetty.client.HttpReceiver.terminateResponse(HttpReceiver.java:481) ~[?:?]
at org.eclipse.jetty.client.HttpReceiver.terminateResponse(HttpReceiver.java:461) ~[?:?]
at org.eclipse.jetty.client.HttpReceiver.responseSuccess(HttpReceiver.java:424) ~[?:?]
at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.messageComplete(HttpReceiverOverHTTP.java:374) ~[?:?]
at org.eclipse.jetty.http.HttpParser.parseFields(HttpParser.java:1188) ~[?:?]
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1560) ~[?:?]
at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.parse(HttpReceiverOverHTTP.java:208) ~[?:?]
at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:148) ~[?:?]
at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:80) ~[?:?]
at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:131) ~[?:?]
at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:172) ~[?:?]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[?:?]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555) ~[?:?]
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410) ~[?:?]
at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164) ~[?:?]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[?:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[?:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[?:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[?:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) ~[?:?]
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) ~[?:?]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) ~[?:?]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) ~[?:?]
at java.lang.Thread.run(Unknown Source) [?:?]
If theres something I should test to make it more clear please tell me.
almost the same here, and for 2 days i have also (new)
2025-08-13 23:29:43.412 \[WARN \] \[rol.internal.util.HttpRequestBuilder\] - \[OH-httpClient-openhab-aec-791716\] - Parsing json failed: false
com.google.gson.JsonParseException: Empty result
at org.openhab.binding.amazonechocontrol.internal.util.HttpRequestBuilder$Builder.lambda$0(HttpRequestBuilder.java:268) \~\[?:?\]
at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646) \~\[?:?\]
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) \~\[?:?\]
at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179) \~\[?:?\]
at org.openhab.binding.amazonechocontrol.internal.util.HttpRequestBuilder$HttpResponseListener.onComplete(HttpRequestBuilder.java:364) \~\[?:?\]
at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:218) \~\[?:?\]
at org.eclipse.jetty.client.ResponseNotifier.notifyComplete(ResponseNotifier.java:210) \~\[?:?\]
at org.eclipse.jetty.client.HttpReceiver.terminateResponse(HttpReceiver.java:481) \~\[?:?\]
at org.eclipse.jetty.client.HttpReceiver.terminateResponse(HttpReceiver.java:461) \~\[?:?\]
at org.eclipse.jetty.client.HttpReceiver.responseSuccess(HttpReceiver.java:424) \~\[?:?\]
at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.messageComplete(HttpReceiverOverHTTP.java:374) \~\[?:?\]
at org.eclipse.jetty.http.HttpParser.handleContentMessage(HttpParser.java:596) \~\[?:?\]
at org.eclipse.jetty.http.HttpParser.parseContent(HttpParser.java:1669) \~\[?:?\]
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1552) \~\[?:?\]
at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.parse(HttpReceiverOverHTTP.java:208) \~\[?:?\]
at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:148) \~\[?:?\]
at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:80) \~\[?:?\]
at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:131) \~\[?:?\]
at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:172) \~\[?:?\]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) \~\[?:?\]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) \~\[?:?\]
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555) \~\[?:?\]
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410) \~\[?:?\]
at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164) \~\[?:?\]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) \~\[?:?\]
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) \~\[?:?\]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) \~\[bundleFile:9.4.57.v20241219\]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) \~\[bundleFile:9.4.57.v20241219\]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) \~\[bundleFile:9.4.57.v20241219\]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) \~\[bundleFile:9.4.57.v20241219\]
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) \~\[bundleFile:9.4.57.v20241219\]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) \~\[bundleFile:9.4.57.v20241219\]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) \~\[bundleFile:9.4.57.v20241219\]
at java.lang.Thread.run(Thread.java:1583) \[?:?\]
every 5 minutes I would say, no clue for the origin (didnt change anything related I think)
I changed the request rate in the Amazon account Thing from→to: 30→120, 120→480 and 10→30.
The 429 error disappeared for around 4 hours, but now are back about every 20 min. ![]()
some more findings from the trace log:
-
the bridge is communicating to Amazon every 10 seconds, independent of the settings of the bridge. Is that supposed to be like that?
2025-08-16 09:42:29.108 [TRACE] [trol.internal.handler.AccountHandler] - updateSmartHomeState started with deviceFilterId=null 2025-08-16 09:42:39.108 [TRACE] [trol.internal.handler.AccountHandler] - updateSmartHomeState started with deviceFilterId=null 2025-08-16 09:42:49.109 [TRACE] [trol.internal.handler.AccountHandler] - updateSmartHomeState started with deviceFilterId=null -
an error with “404 wrong page” shows up before the java error:
trace-log
<center> <a href="/ref=cs_404_logo"> <img src="https://images-eu.ssl-images-amazon.com/images/G/03/ShoppingPortal/logo._TTD_.png" alt="Amazon" border="0"/> </a> <table border="0" align="center" style="margin-top: 20px;"> <tr> <td> <img src="https://images-eu.ssl-images-amazon.com/images/G/03/x-locale/common/kailey-kitty._TTD_.gif" width="40" height="35" border="0"> </td> <td> <b style="color:#E47911">Looking for something?</b> <br/> Sorry. The web address entered is not a functional page on our website. <br/><br/> <img src="https://images-eu.ssl-images-amazon.com/images/G/03/x-locale/common/orange-arrow._TTD_.gif" width="10" height="9" border="0"> <b><a href="/ref=cs_404_link">Click here to return to the Amazon homepage.</a></b> </td> </tr> </table> </center> </body> </html> <!-- 764fd722 --> 2025-08-16 09:18:17.398 [INFO ] [ntrol.internal.connection.Connection] - getting activities failed org.openhab.binding.amazonechocontrol.internal.ConnectionException: https://www.amazon.de/alexa-privacy/apd/rvh/customer-history-records?startTime=1755328520887&endTime=1755328670887&maxRecordSize=1 failed with code 429: Too Many Requests at org.openhab.binding.amazonechocontrol.internal.util.HttpRequestBuilder$HttpResponseListener.onComplete(HttpRequestBuilder.java:385) ~[?:?]
@lsiepel : Is that helpful? A short comment would be nice. (“Sorry no time atm” is fine too)
https://github.com/openhab/openhab-addons/issues/19084#issuecomment-3192910214
So i started to work on this binding
Thnx, there are many reports with different symptoms and logs. I have to dig trough this step by step.
I have identified some potential issues that I can reproduce and working on them to fix. My time is limited, but I expect to make good progress the next few days. I’ll provide a openHAB 5 jar for testing purposes after each step.
Edit: The binding polls with 10 seconds or faster depending on the pollingIntervalSmartHomeAlexa setting. pollingIntervalSmartHomeAlexa to 50, it will remain 10. If you set it to 5, it will be 5.
And 60 seconds or faster depending on pollingIntervalSmartSkills.
Just updated my systems to 5.0.1-1 and it seems that Alexa is still working ![]()
Running 5.0.1 for few days, here are some feedbacks.
lastVoiceCommand is responding almost 100% but with a variable delay (from 1 to 10 sec I d say)
no more ‘too many request’ warnings, but still INFO “getting activities failed“ every 1-40 min ? (I cannot see logical timings for this warning.
Do you have also the same results ?
NB : I still use ‘refreshActivity‘ to trigger request, is it now usefull to do this ?
I shut mine off and its working fine. I’m running the back port to 4.3.8.
It doesn’t seem to be working for me on 5.0.1 ![]()
Works for me with 5.0.1 as it should…
That’s odd. The text-to-speech works fine, but not the lastvoicecommand. That one doesn’t get updated at all…
Update: thanks for he hint and the confirmation that it works for you well. My 5.0.1 config was imported from a backup of 4.3.8 - that way it didn’t work for some reason. Performing the good old - delete all things, remove binding, reinstall binding, log on again, add things helped - now everything works. Thank you again!
My binding was logged out today and i can´t login again.
It always fails with the 2FA and only shows that a redirection to an Amazon URL didn´t work.
Is this something new or an old bug?
Edit: Running oH 5.0.1 with the 5.0.1 Amazon Echo Control binding.
2FA is enabled as per the bindings instructions.
If you encounter redirect/page refresh issues, enable two-factor authentication (2FA) on your Amazon account.
It’s a change on Amazones api.
Workaround: