Amazon Echo API Broken Again (U.S.)

As of this morning, after two restarts of OH, Amazon Echo Control API is broken again.

Log returning same thing the last time the API changed.

2025-08-13 10:12:39.280 [WARN ] [amazonechocontrol.internal.util.HttpRequestBuilder] - Parsing json failed: false
com.google.gson.JsonParseException: Empty result

It was working so well the last 2 weeks.

Best, Jay

I do have the same issue after migrating to openHAB 5.0.0 stable on Windows yesterday. The openhab.log file is growing and growing - every 5 minutes

Upgrade to 5.0.1.
It contains a fix for some of the Amazon api changes.

After upgrading to 5.0.1 the warnings in the log no longer appear. Thanks a lot sihui!

For others who are unable to upgrade at this moment: a 4.3.x test jar and its dependency´s: org.openhab.binding.amazonechocontrol-4.3.8-SNAPSHOT.zip

@jwiseman was it you that had a large setup with 38k rule lines and unable to upgrade? Not sure, sorry if i’m mistaken.

Please provide feedback, also for success.

Thank you, thank you! You just saved me a ton of work and money by not buying a Pi5 and upgrading everything!

I just dropped it in and the Lat/Long for the Tile integration worked instantly since I’m out of state right now till Sunday.

I will provide feedback and will do a clean restart before then to insure everything is working.

Best, Jay

Cool!

Just want to note: the money for a rpi5, nuc or other is well spend. It really improves the experience.

I’d rather pay you some than be backed into a corner, if you have PayPal, LMK your address and I’ll send you some for your efforts.

Best, Jay

Here’s what I’m finding with the new version

  • Attached log seems like a syntax error in the binding, have no items with this (‘amazonechocontrol:humidity’) value in it, see attached log

AMAZON.log (14.2 KB)

  • See the screen shot below, only 1 smarthomedevice is going online and the rest are offline. I did clear the cache to see if that helped but didn’t.

  • The Tile integration worked when I dropped it in, now all Tiles are offline. I believe there may be an array issue loading the smarthomedevices (hence only 1 is online above). I did re-start OH multiple times, same one goes online every time and the item values are correct.

All my echos are online.

Best, Jay

I guess one of the things need to be recreated as one of the types is not registered. It is not a typo.
Pretty sure you can remove all things and let them get rediscovered.

As it is a direct port upgrade notifications etc got lost.

Edit: Yes confirmed. Somehow the upgrade instructions did not get triggered. Not sure why not. Can;t do anything about it. There is some smarthomedevice that should get this instruction. Identity the thing and re-create it, or just re-create all.

        <remove-channel id="humidity"/>
        <update-channel id="relativeHumidity">

This will probably fix all others to go online too.

I deleted the two air quality things that had humidity on them, deleted them.

Tried to scan and re-discovery, got this error below.

Manually create one of them and it’s still offline.

2025-08-21 06:27:52.991 [ERROR] [ig.discovery.internal.DiscoveryServiceRegistryImpl] - Cannot trigger scan for thing types ‘[amazonechocontrol:smartHomeDevice, amazonechocontrol:smartHomeDeviceGroup]’ on ‘SmartHomeDevicesDiscovery’!java.lang.IllegalArgumentException: Channel type ‘amazonechocontrol:humidity’ is not knownat org.openhab.core.thing.internal.ThingHandlerCallbackImpl.createChannelBuilder(ThingHandlerCallbackImpl.java:222) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.SmartHomeDeviceHandler.addChannelToDevice(SmartHomeDeviceHandler.java:203) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.SmartHomeDeviceHandler.setDeviceAndUpdateThingState(SmartHomeDeviceHandler.java:136) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.lambda$26(AccountHandler.java:739) ~[?:?]at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:807) ~[?:?]at java.util.concurrent.CopyOnWriteArraySet.forEach(CopyOnWriteArraySet.java:425) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.updateSmartHomeDeviceList(AccountHandler.java:739) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.discovery.SmartHomeDevicesDiscovery.startScan(SmartHomeDevicesDiscovery.java:61) ~[?:?]at org.openhab.core.config.discovery.AbstractDiscoveryService.startScanInternal(AbstractDiscoveryService.java:253) ~[?:?]at org.openhab.core.config.discovery.AbstractDiscoveryService.startScan(AbstractDiscoveryService.java:216) ~[?:?]at org.openhab.core.config.discovery.internal.DiscoveryServiceRegistryImpl.startScan(DiscoveryServiceRegistryImpl.java:368) ~[?:?]at org.openhab.core.config.discovery.internal.DiscoveryServiceRegistryImpl.startScans(DiscoveryServiceRegistryImpl.java:341) ~[?:?]at org.openhab.core.config.discovery.internal.DiscoveryServiceRegistryImpl.startScan(DiscoveryServiceRegistryImpl.java:215) ~[?:?]at org.openhab.core.io.rest.core.internal.discovery.DiscoveryResource.scan(DiscoveryResource.java:171) ~[?:?]at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:179) ~[bundleFile:3.6.2]at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96) ~[bundleFile:3.6.2]at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:201) ~[bundleFile:3.6.2]at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:104) ~[bundleFile:3.6.2]at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59) ~[bundleFile:3.6.2]at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96) ~[bundleFile:3.6.2]at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) ~[bundleFile:3.6.2]at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) ~[bundleFile:3.6.2]at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:265) ~[bundleFile:3.6.2]at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234) ~[bundleFile:3.6.2]at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208) ~[bundleFile:3.6.2]at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160) ~[bundleFile:3.6.2]at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:225) ~[bundleFile:3.6.2]at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:304) ~[bundleFile:3.6.2]at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:217) ~[bundleFile:3.6.2]at javax.servlet.http.HttpServlet.service(HttpServlet.java:517) ~[bundleFile:4.0.4]at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:279) ~[bundleFile:3.6.2]at org.ops4j.pax.web.service.spi.servlet.OsgiInitializedServlet.service(OsgiInitializedServlet.java:102) ~[bundleFile:?]at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656) ~[bundleFile:9.4.54.v20240208]at org.ops4j.pax.web.service.spi.servlet.OsgiFilterChain.doFilter(OsgiFilterChain.java:113) ~[bundleFile:?]at org.ops4j.pax.web.service.jetty.internal.PaxWebServletHandler.doHandle(PaxWebServletHandler.java:334) ~[bundleFile:?]at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:234) ~[bundleFile:9.4.54.v20240208]at org.ops4j.pax.web.service.jetty.internal.PrioritizedHandlerCollection.handle(PrioritizedHandlerCollection.java:96) ~[bundleFile:?]at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:722) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) [bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) [bundleFile:9.4.54.v20240208]at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) [bundleFile:9.4.54.v20240208]at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [bundleFile:9.4.54.v20240208]at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [bundleFile:9.4.54.v20240208]at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [bundleFile:9.4.54.v20240208]at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) [bundleFile:9.4.54.v20240208]at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) [bundleFile:9.4.54.v20240208]at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) [bundleFile:9.4.54.v20240208]at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) [bundleFile:9.4.54.v20240208]at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) [bundleFile:9.4.54.v20240208]at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) [bundleFile:9.4.54.v20240208]at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) [bundleFile:9.4.54.v20240208]at java.lang.Thread.run(Thread.java:840) [?:?]

Best, Jay

You need to delete all of them. (same error, other device)

I deleted the actual one that was working (Air Quality) and did a scan, same error.

There are only 3 THINGS that had humidity on them, all of them are gone (2 that were offline and 1 that was online).

Doing a clean restart on OH now to see if that works.

Best, Jay

If not, please remove all smarthomedevices . They all share the same thing type and that thing type does have the humidity. So it might be stored somewhere in the jsondb.

So far this is working, all smarthomedevices are online now while it’s coming up. Just need to add the Amazon Air Monitors back in once it’s up. It did find them this time during the scan.

FYI, not one log entry in the Amazon.log during the startup which is great news!

Best, Jay

ok, cool.

To conclude, this version works as expected with one exception and that the ugprade instruction did not get fired.

Did you use other amazonechocontrol jars like a 5.x.x jar on your installation? Or any other then the smarthomej version or the bundled verison with 4.3.x ?

Would be nice to figure out why the upgrade did not succeed. As the code is fine, it must be the something else.

I used this version for over a year –> org.smarthomej.binding.amazonechocontrol-4.3.2.jar prior to the upgrade on this thread.

Best, Jay

Ok, good to know.
Now we know this it is easy to fix for others. Thanks for the quick follow-ups!

Problem is not gone yet, just added them and only 1 of them goes online like the original issue above.

This time, the channels are missing on the one online.

EDIT: I do know that HUMIDITY is a field on this device, maybe exclude the upgrade on this type of device as a possible solution?

Same error appears in the logs.

2025-08-21 07:34:43.280 [ERROR] [.amazonechocontrol.internal.handler.AccountHandler] - refresh data fails with unexpected errorjava.lang.IllegalArgumentException: Channel type ‘amazonechocontrol:humidity’ is not knownat org.openhab.core.thing.internal.ThingHandlerCallbackImpl.createChannelBuilder(ThingHandlerCallbackImpl.java:222) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.SmartHomeDeviceHandler.addChannelToDevice(SmartHomeDeviceHandler.java:203) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.SmartHomeDeviceHandler.setDeviceAndUpdateThingState(SmartHomeDeviceHandler.java:136) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.lambda$26(AccountHandler.java:739) ~[?:?]at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:807) ~[?:?]at java.util.concurrent.CopyOnWriteArraySet.forEach(CopyOnWriteArraySet.java:425) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.updateSmartHomeDeviceList(AccountHandler.java:739) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.refreshData(AccountHandler.java:445) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.checkLoginAndData(AccountHandler.java:403) ~[?:?]at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?]at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?]at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]at java.lang.Thread.run(Thread.java:840) [?:?]2025-08-21 07:34:47.361 [ERROR] [.amazonechocontrol.internal.handler.AccountHandler] - refresh data fails with unexpected errorjava.lang.IllegalArgumentException: Channel type ‘amazonechocontrol:humidity’ is not knownat org.openhab.core.thing.internal.ThingHandlerCallbackImpl.createChannelBuilder(ThingHandlerCallbackImpl.java:222) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.SmartHomeDeviceHandler.addChannelToDevice(SmartHomeDeviceHandler.java:203) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.SmartHomeDeviceHandler.setDeviceAndUpdateThingState(SmartHomeDeviceHandler.java:136) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.lambda$26(AccountHandler.java:739) ~[?:?]at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:807) ~[?:?]at java.util.concurrent.CopyOnWriteArraySet.forEach(CopyOnWriteArraySet.java:425) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.updateSmartHomeDeviceList(AccountHandler.java:739) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.refreshData(AccountHandler.java:445) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.checkLoginAndData(AccountHandler.java:403) ~[?:?]at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?]at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?]at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]at java.lang.Thread.run(Thread.java:840) [?:?]2025-08-21 07:34:51.592 [ERROR] [.amazonechocontrol.internal.handler.AccountHandler] - refresh data fails with unexpected errorjava.lang.IllegalArgumentException: Channel type ‘amazonechocontrol:humidity’ is not knownat org.openhab.core.thing.internal.ThingHandlerCallbackImpl.createChannelBuilder(ThingHandlerCallbackImpl.java:222) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.SmartHomeDeviceHandler.addChannelToDevice(SmartHomeDeviceHandler.java:203) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.SmartHomeDeviceHandler.setDeviceAndUpdateThingState(SmartHomeDeviceHandler.java:136) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.lambda$26(AccountHandler.java:739) ~[?:?]at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:807) ~[?:?]at java.util.concurrent.CopyOnWriteArraySet.forEach(CopyOnWriteArraySet.java:425) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.updateSmartHomeDeviceList(AccountHandler.java:739) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.refreshData(AccountHandler.java:445) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.checkLoginAndData(AccountHandler.java:403) ~[?:?]at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?]at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?]at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]at java.lang.Thread.run(Thread.java:840) [?:?]2025-08-21 07:34:57.316 [ERROR] [.amazonechocontrol.internal.handler.AccountHandler] - refresh data fails with unexpected errorjava.lang.IllegalArgumentException: Channel type ‘amazonechocontrol:humidity’ is not knownat org.openhab.core.thing.internal.ThingHandlerCallbackImpl.createChannelBuilder(ThingHandlerCallbackImpl.java:222) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.SmartHomeDeviceHandler.addChannelToDevice(SmartHomeDeviceHandler.java:203) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.SmartHomeDeviceHandler.setDeviceAndUpdateThingState(SmartHomeDeviceHandler.java:136) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.lambda$26(AccountHandler.java:739) ~[?:?]at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:807) ~[?:?]at java.util.concurrent.CopyOnWriteArraySet.forEach(CopyOnWriteArraySet.java:425) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.updateSmartHomeDeviceList(AccountHandler.java:739) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.refreshData(AccountHandler.java:445) ~[?:?]at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.checkLoginAndData(AccountHandler.java:403) ~[?:?]at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?]at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?]at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) [?:?]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]at java.lang.Thread.run(Thread.java:840) [?:?]

Best, Jay

The upgrade is done only once. If it fails you get a different error.

Could you please try these steps?

  1. Please remove all smarthomedevice things.
  2. Stop openHAB, clear the cache/tmp
  3. Start openHAB and wait for it to settle. Can take some time.
  4. Start the discovery and add the smarthomedevice thing that was problematic again.