Binding Request : Buderus web gateway

Thanks! Seems that I have missed that. Will set DEBUG level and reboot to have the complete startup process in the log!

Cheers and a HAPPY NEW YEAR!!!

Hello Justus, yes, can be that all parameters are aligned to the devices in the system. I will answer to that in the other post.
How I got the list: I enabled the debug mode (Openhab console) for the binding, disable and enable it in the WEB Frontend and all the entries where logged to the openhab logfile. Afterwards I delete a few info lines. I copied all lines with the services in the text file.

Hi Markus,
thanks, I’ll do that. In addition a few more insights to the rest of the colleagues here. Configuration/Devices of my heating system.
Heating system itself with 2 heating possibilities 1 Line goes normal to the rooms and 2nd line to the so called Hotwaterstation (Frischwasserstation). In addition there is a solar system, the KM200 Gateway and the Logamatic RC310.
We build the system in a special: Both pipes (Hotwater and Heating) are connected to buffer tanks and not the hole house or to the hotwaterstation. With that configuration I’m able to use my own programs to bring the consumption of the energy down to the lowest point. Because I"m able to steer now against the weather forecast and the difference between the target room temperature and the temperature in the pipes.
The only thing I need to do, is to steer these two values in the Buderus System from external.

Hallo Helmut,

I took a look to your logfile. Your device is reporting one heating circuit (hc1), one supply (hs1), one hot water circuit (dhw1) and one solar circuit (sc1). The set values are inside this things. Now some details:

  • DHW1:
    There is a parameter for the current operation mode (operationMode) inside of the water circuit dhw1. The values are Off|low|high|HCprogram|ownprogram. The current value is “high”, it means that the heating system is always using the “high” value (in the night, too). In this dhw1 thing is that the “high” channel, that is set to 50 °C. The sensor value hotWater_t2 is 51.8 °C, but the actualTemp in dhw1 is 21.2 °C, this is strange… in my system they are same.

  • HC1:
    There is a parameter for the current operation mode (operationMode) inside of the heating circuit hc1. The values are auto|manual. The current value is “manual”. The heating system is maybe using in this case the manualRoomSetpoint value as target for the room temperature, 21 °C.
    The heating system calculates a supply temperatur (depening on the outside temperature or room temperature sensor and the choosen room temperature). In your case it’s calculated (supplyTemperatureSetpoint) to 41 °C, the current temperature is (actualSupplyTemperature) 32.5 °C. This regular curve is set inside the controller, you can change this in the service menu, but maybe it’s not used because you’re in manual mode. (No Idea what is happen in this case exactly).

I think that your heating system is designed to calculate the needed supply temperature by its own. That’s maybe the reason why it’s read only. I would configure the regular curve for the supply temperature in the service menu of the heating system (depending on outside temperature or room temperature sensor) and let it go in automatic mode. For me it works nice. Take a look to it.
You could set some manual calculated offsets with the roomTempOffset parameter, this could be enough.

Greetings

Hello Markus,

all around the DHW1 works as described - thanks for your time and explanation. Unfortuanetly all around the HC1 doesn’t work very well in my case.

Fist of all the parameter list: In case I switch the operation mode from manual to automatic - the parameter list changed an the manual room setpoint is gone. That means the list is dynamic.
In case I leave it on the status manual, I’m able to change the manualRoomSetpoint, this is fine. Also this writen back to the RC310 and I’m able to see it there. I think this value is used to steer the mixer of “Vorlauf/Rücklauf” to bring to the right temperature. Unfortunaetly the heating cuircit itself heats up always until the temp max volume of the central unit is reached. For sure the mixer brings it down to the right level. This is OK, the rooms are directly connected.
In my case there is a buffer between, so I have to influence max volume of the heat appliance itself. Unfortunaetly it looks like there is no way to steer it.

Thx.
Helmut

Hello KM200 community. Since the 2.5.1 update (Docker), my KM200 binding installation is not working anymore. I don’t know if it had something to do because I removed snapshot from /addons…
I tried clearing the cache, uninstall the binding etc.
I saw that in 2017 there was a similar issue: “hexString needs to have an even length” - Binding Request : Buderus web gateway
I tried to install the custom addon again and configure it, but same result.

14:34:17.413 [ERROR] [est.core.internal.thing.ThingResource] - Exception during HTTP PUT request for update config at 'things/km200:kmdevice:f326bbc6/config'
java.lang.IllegalArgumentException: hexString needs to have an even length:
        at org.eclipse.smarthome.core.util.HexUtils.hexToBytes(HexUtils.java:105) ~[?:?]
        at org.eclipse.smarthome.core.util.HexUtils.hexToBytes(HexUtils.java:119) ~[?:?]
        at org.openhab.binding.km200.internal.KM200Device.setCryptKeyPriv(KM200Device.java:151) ~[?:?]
        at org.openhab.binding.km200.internal.handler.KM200GatewayHandler.dispose(KM200GatewayHandler.java:145) ~[?:?]
        at org.eclipse.smarthome.core.thing.binding.BaseThingHandler.handleConfigurationUpdate(BaseThingHandler.java:104) ~[?:?]
        at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.updateConfiguration(ThingRegistryImpl.java:93) ~[?:?]
        at org.eclipse.smarthome.io.rest.core.internal.thing.ThingResource.updateConfiguration(ThingResource.java:438) [bundleFile:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_232]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_232]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_232]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_232]
        at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) [bundleFile:?]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) [bundleFile:?]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) [bundleFile:?]
        at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160) [bundleFile:?]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) [bundleFile:?]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) [bundleFile:?]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) [bundleFile:?]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) [bundleFile:?]
        at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326) [bundleFile:?]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) [bundleFile:?]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) [bundleFile:?]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:315) [bundleFile:?]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:297) [bundleFile:?]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:267) [bundleFile:?]
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) [bundleFile:?]
        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) [bundleFile:?]
        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) [bundleFile:?]
        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473) [bundleFile:?]
        at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) [bundleFile:?]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) [bundleFile:?]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) [bundleFile:?]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) [bundleFile:?]
        at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76) [bundleFile:?]
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:852) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:544) [bundleFile:9.4.20.v20190813]
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) [bundleFile:?]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:536) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1581) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1307) [bundleFile:9.4.20.v20190813]
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:293) [bundleFile:?]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:482) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1549) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1204) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [bundleFile:9.4.20.v20190813]
        at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) [bundleFile:?]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.server.Server.handle(Server.java:494) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:374) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:268) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:367) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:782) [bundleFile:9.4.20.v20190813]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:918) [bundleFile:9.4.20.v20190813]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]

Please update your post to “my binding” or “my KM200 installation”. As my KM200 binding is working perfectly every day with the latest testing release “the KM200 binding is not working anymore” seems to be wrong. :wink:

1 Like

Updated.

Hi,

I am on openhab 2.5.2 and I cannot seem to get the km200 binding to work.
The private key should be correct. I generated it myself and compared it to the one generated via the link you find on the net, they are the same.

Yet I get this error when starting up:

An error occurred while calling method 'ThingHandler.dispose()' on 'org.openhab.binding.km200.internal.handler.KM200GatewayHandler@59b3cc': hexString needs to have an even length:
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  java.lang.IllegalArgumentException: hexString needs to have an even length:
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at org.eclipse.smarthome.core.util.HexUtils.hexToBytes(HexUtils.java:105) ~[bundleFile:?]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at org.eclipse.smarthome.core.util.HexUtils.hexToBytes(HexUtils.java:119) ~[bundleFile:?]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at org.openhab.binding.km200.internal.KM200Device.setCryptKeyPriv(KM200Device.java:151) ~[?:?]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at org.openhab.binding.km200.internal.handler.KM200GatewayHandler.dispose(KM200GatewayHandler.java:145) ~[?:?]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_152]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_152]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_152]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_152]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:152) [bundleFile:?]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:52) [bundleFile:?]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_152]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_152]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_152]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at java.lang.Thread.run(Thread.java:748) [?:1.8.0_152]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  14:15:30.368 [ERROR] [core.thing.internal.ThingManagerImpl] - Exception occurred while disposing handler of thing 'km200:kmdevice:home': hexString needs to have an even length:
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  java.lang.IllegalArgumentException: hexString needs to have an even length:
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at org.eclipse.smarthome.core.util.HexUtils.hexToBytes(HexUtils.java:105) ~[bundleFile:?]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at org.eclipse.smarthome.core.util.HexUtils.hexToBytes(HexUtils.java:119) ~[bundleFile:?]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at org.openhab.binding.km200.internal.KM200Device.setCryptKeyPriv(KM200Device.java:151) ~[?:?]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at org.openhab.binding.km200.internal.handler.KM200GatewayHandler.dispose(KM200GatewayHandler.java:145) ~[?:?]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_152]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_152]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_152]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_152]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:152) [bundleFile:?]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:52) [bundleFile:?]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_152]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_152]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_152]
2020-03-22T14:15:30+01:00 homectrl karaf[11122]:  #011at java.lang.Thread.run(Thread.java:748) [?:1.8.0_152]

The key is 64 char long.

Any Idea how I can further debug this or what the problem might be?

Looking at the function this error was raised it seems it expects a “-” delimited key, though that doesn’t work either.

An error occurred while calling method 'ThingHandler.dispose()' on 'org.openhab.binding.km200.internal.handler.KM200GatewayHandler@59b3cc': hexString needs to have an even length:

It looks like the key is not 64 characters long - otherwise it had an even length. Yours must be 63, 65 or another uneven number. Use BBEdit or anything else to count the characters. Hope my interpretation is correct.

Unfortuantely as I noted the key is 64 chars long.

I fixed my problem… I was acutally missing the JCE part of zulu jre … unbelievable one still has to install that manually -_-

This is a guide on how to install JCE for Zulu JRE: openHABian hassle-free openHAB Setup

Thanks I did that and it works fine now :slight_smile:

Hi,
I have a problem with the km200 binding that has been working really well for the last 8 months but after I updated to 2.5.3 release build it stopped working. I use it with the Junkers version of the box but as it has worked before it should work now as well :wink:

I have my openhab running on a Qnap system within a docker container. Within PaperUI I get the error “UNINITIALIZED - HANDLER_INITIALIZING_ERROR” for the Gateway thing.

Within the logs I get this error and I really do not know what else I can do to make it work again: 16:54:43.191 [ERROR] [rnal.common.AbstractInvocationHandler] - An error occurred while calling method ‘ThingHandler.initialize()’ on ‘org.openhab.binding.km200.internal.handler.KM200GatewayHandler@185638f0’: null

java.lang.NullPointerException: null

at org.openhab.binding.km200.internal.handler.KM200GatewayHandler.checkConfiguration(KM200GatewayHandler.java:240) ~[?:?]

at org.openhab.binding.km200.internal.handler.KM200GatewayHandler.initialize(KM200GatewayHandler.java:114) ~[?:?]

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_232]

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_232]

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_232]

at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_232]

at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:152) [bundleFile:?]

at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:52) [bundleFile:?]

at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_232]

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232]

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232]

at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]

16:54:43.196 [ERROR] [.core.thing.internal.ThingManagerImpl] - Exception occurred while initializing handler of thing ‘km200:kmdevice:617200032’: null

java.lang.NullPointerException: null

at org.openhab.binding.km200.internal.handler.KM200GatewayHandler.checkConfiguration(KM200GatewayHandler.java:240) ~[?:?]

at org.openhab.binding.km200.internal.handler.KM200GatewayHandler.initialize(KM200GatewayHandler.java:114) ~[?:?]

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_232]

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_232]

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_232]

at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_232]

at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:152) [bundleFile:?]

at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:52) [bundleFile:?]

at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_232]

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232]

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232]

at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]

Does anybody have a suggestion ?

Hello @Markinus,

small suggestion from my side: It would be beneficial if we had a sticky post at the beginning of the thread showing

  • Latest Version of the Binding (Date + Download link)
  • Version contained in the current OH-Release (e.g. 2.5.3: All fixes until …)

Currently I´m not certain if 2.5.3 contains the fixes from November or if it is even more advanced.
From what I see in the log the fix for the decimal digits has not been included in 2.5.3 yet.

This would make live much easier when deciding to e.g. remove the “Bugfix-Version” from the AddOns folder and go for “standard” again.

Kind Regards and stay healthy
Oggerschummer

Hi,

for those struggling with the invalid hex string length let me provide the steps I took to resolve it.

Inititial situation:
I had a snapshot version of the binding installed in the add-ons folder of OH 2.5.x. (The last one mentioned in the thread above)

After upgrading to 2.5.2 and 2.5.3 many channels did not appear anymore.
So I decided to drop the snapshot version and go for the one included in 2.5.3.

Deleting the snapshot file did not help, as after activating the 2.5.3 version in the PaperUI the infamous “even-lenght-error” occured.

In the end I came up with this solution:

  • Delete the km200 things (ensure to delete the bridge as the last one, otherwise the depending things are a bit harder to uninstall
  • Delete any KM200-related items in the PaperUI (Boooooring…)
  • Deactive the Binding in PaperUI
  • Stop the openHAB service
  • Delete the snapshot version in the addons-folder if present.
  • Run sudo openhab-cli clean-cache from console to clear the cache.
  • Restart openHAB
  • Active the Binding in PaperUI
  • Let it discover the Gateway thing
  • Configure the gateway by pasting the key string from an Editor (e.g. BBEdit) into the file and save it.
  • Get yourself a tea, it takes some time for the binding to connect and to discover the available services
  • Check your inbox and happily accept the things you want to use (I started with a single “temperatures” thing to keep it simple)
  • Activate the things channel that are of use for you.

Most important I guess is to drop any remaining entries / files from previous version and to clear the cache.

Hope this helps, it reproducibly did the trick for me.

Stay healthy
Oggerschummer

Hi,
I haven’t changed anything on this binding. The last precision fix is not merged yet.
For me the binding works perfectly after the update to 2.5.3. One thing what I am always doing after a upgrade is to stop openhab and clean the cache ( sudo openhab-cli clean-cache) and reboot the device. This is fixing many problems automaticaly on upgrade.
Greetings
Markus

@Markinus, @Oggerschummer, @Truercki,

I had the same problem but I found the issue … In my case I was not using the right cryptography level. I am running the docker container version of OpenHAB and you can set a runtime variable for the security which can be “limited” or “unlimited” to support higher encryption. And in the previous container I had the variable set but forgot to set it in the new container again. Once I corrected that it works now like expected :slight_smile:

Hello,
think I have found a way to reproduce a situation where the key-length error shows up:
When you have a running installation (mine now worked for one day without trouble),
go to Paper UI, edit the gateway and set the auto refresh intervall from 30 seconds to 60 seconds.
As soon as you save it a HTTP 500 Internal server error shows up. In the log it complains about the invalid key lenght (even if is was working flawlessly just seconds before.)

2020-04-07 16:47:42.997 [ERROR] [st.core.internal.thing.ThingResource] - Exception during HTTP PUT request for update config at ‘things/km200:kmdevice:817210159/config’
java.lang.IllegalArgumentException: hexString needs to have an even length:
at org.eclipse.smarthome.core.util.HexUtils.hexToBytes(HexUtils.java:105) ~[?:?]

at org.eclipse.smarthome.core.util.HexUtils.hexToBytes(HexUtils.java:119) ~[?:?]

at org.openhab.binding.km200.internal.KM200Device.setCryptKeyPriv(KM200Device.java:151) ~[?:?]

at org.openhab.binding.km200.internal.handler.KM200GatewayHandler.dispose(KM200GatewayHandler.java:145) ~[?:?]

at org.eclipse.smarthome.core.thing.binding.BaseThingHandler.handleConfigurationUpdate(BaseThingHandler.java:104) ~[?:?]

at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.updateConfiguration(ThingRegistryImpl.java:93) ~[?:?]

at org.eclipse.smarthome.io.rest.core.internal.thing.ThingResource.updateConfiguration(ThingResource.java:438) [bundleFile:?]

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_232]

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_232]

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_232]

at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_232]

The binding did not recover from this without a restart.
After I restart OH the binding is running again, but did not save the auto refresh rate (stayed at 30).
Trying it again results in the same crash.
Maybe this gives a hint where there might be a bug - maybe the handling of the parameter data (read/write) of the gateway thing has an issue.

Greetings
Oggerschummer