KM200 Binding with Buderus

Hello,
anyone use KM200 Bindingi to read values from Buderus central heating ?
I do not know how to configure in file km200.cfg, i have GatewayPassword loginName and PrivatePassword but i do not know what is MD5Salt and PrivKey can anyone tell me where i find this, please ?
In GitHub a found only this:

With the finished private key, here is this one required: 
 km200:PrivKey=0000FFFFEEEEDDDDCCCCBBBBAAAA999988887777666655554444333322221111 

--OR-- the binding is creating the key from the md5salt, the device and the private password. Here are all three required: 
 km200:MD5Salt=111122223333444455556666777788889999aaaabbbbccccddddeeeeffff0000 
 km200:GatewayPassword=AAAABBBBCCCCDDDD 
 km200:PrivatePassword=MYPASSWORD 

but i can understand this.
GatewayPassword = (password from stikers on central heating without “-”)
MD5Salt= i do not know what is format and from where i get this.

Somebady can help ?

Sure,
I can help (struggled with the same problem):
Please check my post here:

Because I assume you use OH1, Just ignore the PaperUI and put the salt5d key into the .cfg

Hope it helps.

Thx, for answere but i have error :frowning:

‎2017-02-03 21:52:52.051 [ERROR] [ng.km200.handler.KM200GatewayHandler] - Decoding of the KM200 message is not possible!
‎2017-02-03 21:53:51.993 [INFO ] [ng.km200.handler.KM200GatewayHandler] - Update KM50/100/200 gateway configuration, it takes a minute....
‎2017-02-03 21:53:52.095 [INFO ] [ng.km200.handler.KM200GatewayHandler] - Received data..
‎2017-02-03 21:53:52.101 [ERROR] [hab.binding.km200.internal.KM200Comm] - Exception on encoding: {}
java.security.InvalidKeyException: Illegal key size or default parameters
        at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1026)[:1.8.0_60]
        at javax.crypto.Cipher.implInit(Cipher.java:801)[:1.8.0_60]
        at javax.crypto.Cipher.chooseProvider(Cipher.java:864)[:1.8.0_60]
        at javax.crypto.Cipher.init(Cipher.java:1249)[:1.8.0_60]
        at javax.crypto.Cipher.init(Cipher.java:1186)[:1.8.0_60]
        at org.openhab.binding.km200.internal.KM200Comm.decodeMessage(KM200Comm.java:257)
        at org.openhab.binding.km200.handler.KM200GatewayHandler.initialize(KM200GatewayHandler.java:160)
        at org.eclipse.smarthome.core.thing.binding.BaseThingHandler.handleConfigurationUpdate(BaseThingHandler.java:157)
        at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.updateConfiguration(ThingRegistryImpl.java:99)
        at org.eclipse.smarthome.io.rest.core.thing.ThingResource.updateConfiguration(ThingResource.java:476)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_65]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_65]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_65]
        at java.lang.reflect.Method.invoke(Method.java:497)[:1.8.0_65]
        at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:315)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:297)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:267)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)[157:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)[158:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)[155:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)[155:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)[155:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)[155:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)[155:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76)[10:com.eclipsesource.jaxrs.publisher:5.3.1.‎201602281253]
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)[81:org.eclipse.jetty.servlet:9.2.19.v20160908]
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)[81:org.eclipse.jetty.servlet:9.2.19.v20160908]
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71)[172:org.ops4j.pax.web.pax-web-jetty:4.3.0]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)[80:org.eclipse.jetty.server:9.2.19.v20160908]
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)[79:org.eclipse.jetty.security:9.2.19.v20160908]
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)[80:org.eclipse.jetty.server:9.2.19.v20160908]
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)[80:org.eclipse.jetty.server:9.2.19.v20160908]
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:287)[172:org.ops4j.pax.web.pax-web-jetty:4.3.0]
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)[81:org.eclipse.jetty.servlet:9.2.19.v20160908]
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)[80:org.eclipse.jetty.server:9.2.19.v20160908]
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)[80:org.eclipse.jetty.server:9.2.19.v20160908]at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)[80:org.eclipse.jetty.server:9.2.19.v20160908]
        at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80)[172:org.ops4j.pax.web.pax-web-jetty:4.3.0]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)[80:org.eclipse.jetty.server:9.2.19.v20160908]
        at org.eclipse.jetty.server.Server.handle(Server.java:499)[80:org.eclipse.jetty.server:9.2.19.v20160908]
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)[80:org.eclipse.jetty.server:9.2.19.v20160908]
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)[80:org.eclipse.jetty.server:9.2.19.v20160908]
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[72:org.eclipse.jetty.io:9.2.19.v20160908]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[83:org.eclipse.jetty.util:9.2.19.v20160908]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[83:org.eclipse.jetty.util:9.2.19.v20160908]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_65]

This has something to do with the JCE, you need to install.
Please check this post (which shows the same erros message):

What I did to solve it, was to install JCE by apt-get:
sudo apt-get install oracle-java8-unlimited-jce-policy
(check your java version first - I have Java8, running on openhabian)

By the way:
You will find a lot of answers in the topic mentioned in my response above:

I get the following error after setting the configuration straight:

2017-07-05 12:27:31.635 [ERROR] [org.apache.felix.configadmin        ] - [org.osgi.service.cm.ManagedService, org.osgi.service.event.EventHandler, id=361, bundle=191/mvn:org.openhab.binding/org.openhab.binding.km200/1.9.0]: Unexpected problem updating configuration org.openhab.km200
java.lang.RuntimeException: Decoding of the KM200 message is not possible!
        at org.openhab.binding.km200.internal.KM200Binding.updated(KM200Binding.java:163)[191:org.openhab.binding.km200:1.9.0]
        at org.apache.felix.cm.impl.helper.ManagedServiceTracker.updated(ManagedServiceTracker.java:189)[3:org.apache.felix.configadmin:1.8.12]
        at org.apache.felix.cm.impl.helper.ManagedServiceTracker.updateService(ManagedServiceTracker.java:152)[3:org.apache.felix.configadmin:1.8.12]
        at org.apache.felix.cm.impl.helper.ManagedServiceTracker.provideConfiguration(ManagedServiceTracker.java:85)[3:org.apache.felix.configadmin:1.8.12]
        at org.apache.felix.cm.impl.ConfigurationManager$UpdateConfiguration.run(ConfigurationManager.java:1772)[3:org.apache.felix.configadmin:1.8.12]
        at org.apache.felix.cm.impl.UpdateThread.run0(UpdateThread.java:141)[3:org.apache.felix.configadmin:1.8.12]
        at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:109)[3:org.apache.felix.configadmin:1.8.12]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_112]

My module is a MM200 from Junkers though, however it should be the same module as the KM200 since it looks exactly the same and both Junkers and Buderus are from Bosch.

Edit: oops, I just saw the exception is preceded by the “Illegal key size or default parameters” error, that should be solvable.

With latest releases from this thread I get this error message when I restart openhab 2.2:

2017-12-29 16:13:13.632 [ERROR] [org.openhab.binding.km200           ] - FrameworkEvent ERROR - org.openhab.binding.km200
org.osgi.framework.BundleException: Could not resolve module: org.openhab.binding.km200 [207]
  Unresolved requirement: Import-Package: org.apache.commons.codec.binary
	at org.eclipse.osgi.container.Module.start(Module.java:444) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1620) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1600) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1571) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1514) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) [?:?]

I am running a ubuntu server 16.04. Could you please tell me which package I have to install? Thx!

I found a solution. Just install “JDBC Persistence Apache Derby” from persistence!

Can someone please help me with the KM200 binding. I get the following Error after configuration of the services/km200.cfg : :frowning:
I searched for a while but I can’t find a solution for my problem.

2018-01-19 00:28:07.517 [INFO ] [.binding.km200.internal.KM200Binding] - Update KM200 Binding configuration, it takes a minute....

2018-01-19 00:28:07.523 [INFO ] [.binding.km200.internal.KM200Binding] - Starting communication test..

2018-01-19 00:28:07.581 [INFO ] [.binding.km200.internal.KM200Binding] - Received data..

2018-01-19 00:28:07.588 [ERROR] [org.apache.felix.configadmin        ] - [org.osgi.service.cm.ManagedService, org.osgi.service.event.EventHandler, id=341, bundle=214/mvn:org.openhab.binding/org.openhab.binding.km200/1.11.0]: Unexpected problem updating configuration org.openhab.km200

java.lang.NullPointerException: charsetName

	at java.lang.String.<init>(String.java:424) [?:?]

	at java.lang.String.<init>(String.java:491) [?:?]

	at org.openhab.binding.km200.internal.KM200Comm.decodeMessage(KM200Comm.java:263) [214:org.openhab.binding.km200:1.11.0]

	at org.openhab.binding.km200.internal.KM200Binding.updated(KM200Binding.java:161) [214:org.openhab.binding.km200:1.11.0]

	at org.apache.felix.cm.impl.helper.ManagedServiceTracker.updated(ManagedServiceTracker.java:189) [7:org.apache.felix.configadmin:1.8.16]

	at org.apache.felix.cm.impl.helper.ManagedServiceTracker.updateService(ManagedServiceTracker.java:152) [7:org.apache.felix.configadmin:1.8.16]

	at org.apache.felix.cm.impl.helper.ManagedServiceTracker.provideConfiguration(ManagedServiceTracker.java:85) [7:org.apache.felix.configadmin:1.8.16]

	at org.apache.felix.cm.impl.ConfigurationManager$UpdateConfiguration.run(ConfigurationManager.java:1792) [7:org.apache.felix.configadmin:1.8.16]

	at org.apache.felix.cm.impl.UpdateThread.run0(UpdateThread.java:141) [7:org.apache.felix.configadmin:1.8.16]

	at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:109) [7:org.apache.felix.configadmin:1.8.16]

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

    indent preformatted text by 4 spaces

Thanks !!

Hi. I also have some issues. Everything was working till friday. Then I had to re-install Openhabian cause my SD Card failed. I used the same settings like before. But seems I miss something

2018-01-25 18:19:06.117 [hingStatusInfoChangedEvent] - ‘km200:kmdevice:05086201’ changed from UNINITIALIZED (HANDLER_INITIALIZING_ERROR) to INITIALIZING

2018-01-25 18:19:06.123 [INFO ] [ng.km200.handler.KM200GatewayHandler] - Update KM50/100/200 gateway configuration, it takes a minute…

2018-01-25 18:19:06.142 [hingStatusInfoChangedEvent] - ‘km200:kmdevice:05086201’ changed from UNINITIALIZED (HANDLER_INITIALIZING_ERROR) to OFFLINE

2018-01-25 18:19:06.256 [INFO ] [ng.km200.handler.KM200GatewayHandler] - Received data…

2018-01-25 18:19:06.259 [INFO ] [ng.km200.handler.KM200GatewayHandler] - Test of the communication to the gateway was successful…

2018-01-25 18:19:11.132 [WARN ] [ome.core.thing.internal.ThingManager] - Initializing handler for thing ‘km200:kmdevice:05086201’ takes more than 5000ms.

2018-01-25 18:19:11.137 [me.event.ThingUpdatedEvent] - Thing ‘km200:kmdevice:05086201’ has been updated.

2018-01-25 18:19:52.488 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method ‘ThingHandler.initialize()’ on ‘org.openhab.binding.km200.handler.KM200GatewayHandler@1fdb698’: null

at org.openhab.binding.km200.internal.KM200SwitchProgramService.determineSwitchNames(KM200SwitchProgramService.java:324) [229:org.openhab.binding.km200:2.3.0.201801141914]

at org.openhab.binding.km200.internal.KM200Comm.initVirtualObjects(KM200Comm.java:461) [229:org.openhab.binding.km200:2.3.0.201801141914]

at org.openhab.binding.km200.handler.KM200GatewayHandler.initialize(KM200GatewayHandler.java:206) [229:org.openhab.binding.km200:2.3.0.201801141914]

2018-01-25 18:19:52.504 [ERROR] [ome.core.thing.internal.ThingManager] - Exception occurred while initializing handler of thing ‘km200:kmdevice:05086201’: null

at org.openhab.binding.km200.internal.KM200SwitchProgramService.determineSwitchNames(KM200SwitchProgramService.java:324) [229:org.openhab.binding.km200:2.3.0.201801141914]

at org.openhab.binding.km200.internal.KM200Comm.initVirtualObjects(KM200Comm.java:461) [229:org.openhab.binding.km200:2.3.0.201801141914]

at org.openhab.binding.km200.handler.KM200GatewayHandler.initialize(KM200GatewayHandler.java:206) [229:org.openhab.binding.km200:2.3.0.201801141914]

2018-01-25 18:19:52.521 [hingStatusInfoChangedEvent] - ‘km200:kmdevice:05086201’ changed from OFFLINE to UNINITIALIZED (HANDLER_INITIALIZING_ERROR)

I’m trying to switch the active program for my heating via openhab.
Therefore I declared the following item:

String Warmwasser_Schaltprogramm “Schaltprogramm Warmwasser [MAP(KM200.map):%s]” { channel=“km200:dhwCircuit:760200173:dhw1:activeSwitchProgram”}

Switching the program works in general, but the heating always reverts to the old program after a short period of time. When switching the program via the “offical” vendor app. This does not happen.
Any ideas?

1 Like

Hi Simon,
I have currently a similar challenge. How did you solve the issue?

My circulating pump for the dwelling hot water (dhw) is attached to the Junkers/Buderus heat source and can be controlled via the controlling device. I can adjust the timing there (when and how often).

How can I controll the dhw circulation pump via openhab while it is still connected to the heat source?
It would be sufficient for me to start and stop circulation pump via open hab.

Hey guys,

instead of creating a new thread I hope its ok to use this one as Im facing a smiliar problem.

I installed the binding and used the link from @NCO (post #3) to create the private key.
But when creating the thing it says:

HANDLER_INITIALIZING_ERROR

hexString contains illegal character for hexToBytes: 32

I added the IP and made this as a fixed one in my router.
I’m using OH3. Thats the whole thing config:

Any ideas?

Is this maybe related to my post #5 above (JCE)?
Ot whatever java you use!?

Sorry didn’t mentioned that I already tried that:

Install doesnt work. To be honest I have no idea what java is running on my installation :frowning:

I also now noticed the post of @Unimatrix with suggestion to install “JDBC Persistence Apache Derby” but doesnt changed after installing it.

try:
java -version

I guess you need to find the appropriate JCE for yours then

HANDLER_INITIALIZING_ERROR
hexString contains illegal character for hexToBytes: 32

ASCII value 32 is the space character. Maybe your key contains a space, could be easily missed if it is at the beginning or end.

@juelicher
Oh boy… yes there was a space at the beginning of the key
Its online now

@NCO
Even if its working now. Thats the Java version which seems to be the current version running on OH3
java

Even if the Thing is online now it doesnt really help. The only thing I can add via PaperUI is the Gateway. The binding docu says there are 11 things. And the channels of the things will be found automatically.

So now I have the gateway online but no access to other things. And the thing I have doesnt has any channels :frowning: This binding starts getting annoying…