Share Z-wave dongle over IP (USB over IP using ser2net / socat ) guide

Just install a more recent snapshot.
However, the switch to the recent Z-Wave version requires to delete and rediscover all Z-Wave things (leave them included, but delete just the things in OH). More Details in this thread:

Hm… id best confirm that i am absolutely on the old version before I start breaking things haha!

The link doesnt actually say where you download the binding? The link that says latest version of the dev binding (here) is the one Im using it.

Actually it is not as dangerous as it might sound. Of course it depends on the number of Z-Wave devices you have but I managed to do it with > 100 devices 1,5 years ago. After rediscovery with the new binding your items und rules should work again as before (at least if you have them maintained in item files what I do)

Yes, they are in Items files. Ive only about 15 devices.

Cant work out where to download this binding…

So did you already use the dev binding all the time?

Ive always been on the binding I posted above, never changed it. And if you say this works since 2017, then my binding should work just fine given this is Sept 2018.

I just plugged in the USB controller again.

I went to update the name and again, errors:


09:18:43.434 [ERROR] [est.core.internal.thing.ThingResource] - Exception during HTTP PUT request for update config at 'things/zwave:serial_zstick:512/config'
java.lang.IllegalStateException: The service has been unregistered
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:206) [?:?]
        at org.openhab.binding.zwave.handler.ZWaveControllerHandler.dispose(ZWaveControllerHandler.java:247) [251:org.openhab.binding.zwave:2.4.0.201809081506]
        at org.openhab.binding.zwave.handler.ZWaveSerialHandler.dispose(ZWaveSerialHandler.java:133) [251:org.openhab.binding.zwave:2.4.0.201809081506]
        at org.openhab.binding.zwave.handler.ZWaveControllerHandler.handleConfigurationUpdate(ZWaveControllerHandler.java:346) [251:org.openhab.binding.zwave:2.4.0.201809081506]
        at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.updateConfiguration(ThingRegistryImpl.java:92) [101:org.eclipse.smarthome.core.thing:0.10.0.201808242044]
        at org.eclipse.smarthome.io.rest.core.internal.thing.ThingResource.updateConfiguration(ThingResource.java:436) [111:org.eclipse.smarthome.io.rest.core:0.10.0.201808242044]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
        at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) [163:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) [163:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) [163:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160) [163:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) [163:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) [163:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) [163:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) [163:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326) [163:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) [162:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) [162:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:315) [162:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:297) [162:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:267) [162:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) [162:org.glassfish.jersey.core.jersey-common:2.22.2]
        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) [163:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) [163:org.glassfish.jersey.core.jersey-server:2.22.2]
        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473) [160:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) [160:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) [160:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) [160:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) [160:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
        at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76) [15:com.eclipsesource.jaxrs.publisher:5.3.1.201602281253]
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848) [78:org.eclipse.jetty.servlet:9.3.21.v20170918]
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:584) [78:org.eclipse.jetty.servlet:9.3.21.v20170918]
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) [175:org.ops4j.pax.web.pax-web-jetty:6.0.9]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [77:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [75:org.eclipse.jetty.security:9.3.21.v20170918]
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [77:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) [77:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:284) [175:org.ops4j.pax.web.pax-web-jetty:6.0.9]
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) [78:org.eclipse.jetty.servlet:9.3.21.v20170918]
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [77:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) [77:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [77:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) [175:org.ops4j.pax.web.pax-web-jetty:6.0.9]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) [77:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.server.Server.handle(Server.java:534) [77:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333) [77:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) [77:org.eclipse.jetty.server:9.3.21.v20170918]
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283) [69:org.eclipse.jetty.io:9.3.21.v20170918]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108) [69:org.eclipse.jetty.io:9.3.21.v20170918]
        at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) [69:org.eclipse.jetty.io:9.3.21.v20170918]
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) [80:org.eclipse.jetty.util:9.3.21.v20170918]
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) [80:org.eclipse.jetty.util:9.3.21.v20170918]
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) [80:org.eclipse.jetty.util:9.3.21.v20170918]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) [80:org.eclipse.jetty.util:9.3.21.v20170918]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [80:org.eclipse.jetty.util:9.3.21.v20170918]
        at java.lang.Thread.run(Thread.java:748) [?:?]
09:18:43.438 [ERROR] [rnal.common.AbstractInvocationHandler] - An error occurred while calling method 'ThingHandler.thingUpdated()' on 'org.openhab.binding.zwave.handler.ZWaveSerialHandler@6418057c': null
java.lang.IllegalMonitorStateException: null
        at java.lang.Object.notify(Native Method) ~[?:?]
        at org.openhab.binding.zwave.internal.protocol.ZWaveTransactionManager.shutdown(ZWaveTransactionManager.java:207) [251:org.openhab.binding.zwave:2.4.0.201809081506]
        at org.openhab.binding.zwave.internal.protocol.ZWaveController.shutdown(ZWaveController.java:118) [251:org.openhab.binding.zwave:2.4.0.201809081506]
        at org.openhab.binding.zwave.handler.ZWaveControllerHandler.dispose(ZWaveControllerHandler.java:253) [251:org.openhab.binding.zwave:2.4.0.201809081506]
        at org.openhab.binding.zwave.handler.ZWaveSerialHandler.dispose(ZWaveSerialHandler.java:133) [251:org.openhab.binding.zwave:2.4.0.201809081506]
        at org.eclipse.smarthome.core.thing.binding.BaseThingHandler.thingUpdated(BaseThingHandler.java:206) [101:org.eclipse.smarthome.core.thing:0.10.0.201808242044]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
        at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [94:org.eclipse.smarthome.core:0.10.0.201808242044]
        at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:53) [94:org.eclipse.smarthome.core:0.10.0.201808242044]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
        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) [?:?]

Unfortunately there were several Z-Wave bindings at that time (the “official” one at that time which was included in the master and the Snapshots and the dev version, which needed to be installed separately by jar file). As the version number shows only the date I cannot say if you are using the “old” or the dev version.
But if you installed it manually by jar file and downloaded this jar file from the link in the post, then you already used the dev binding.

However, we should perhaps rathter focus back to your problem: What exactly is not working if you try to use 2 Z-Wave sticks?

Roger @vossivossi.

The 2nd controller is visible, but I cant pair devices or update settings on it, even unplugging it my OpenHAB console fills with errors like the one above.

Are you able to send me a link to the latest dev version for me to try?

What do you exactly intend to do? Use 2 Z-Wave networks with OH (so using 2 primary controllers with different Z-Wave Home Ids) or do you try to use the device as a secondary controller within 1 Z-Wave network?
I have 3 separate Z-Wave networks where each of my Z-Sticks is the primary controller.

I have a garage and a house. I’m using 1 zstick via socat inside the house, and I want to use the 2nd controller which is some distance away plugged locally into the OH2 server to control devices up there.

I have range/distance issues

I intended to pair individual zwave devices with their respective controller to address the range issues. Range extenders dont provide enough coverage for me.

My two buildings are connected via Fibre.

Excellent, this is also exactly my use case. So we are talking about 2 separated Z-Wave networks with 1 primary controller in each network. The only connection between the 2 networks is OH.
Now for inclusion of devices: If you are using network wide inclusion triggered by OH (e.g. in Habmin) then unfortunately ALL controllers will go into inclusion mode. If you want to make sure that the new device is paired with the correct controller, it should be very close to the controller and far away from the other controller (that is what I mostly do). As an alternative you could also include the devices without OH just by pressing the button of the controller (will not work for secure inclusion but for most other devices) and then let them discover by OH later.
Please note: If you unplug the stick while OH is running it will not recover by itself just by plugging it in again. You either have to restart OH or at least the Z-Wave binding (by typing bundle:restart org.openhab.binding.zwave in Karaf console).

I pair devices by pressing the button on the device and the controller. This fails, the item does not present it self via OH2 once pair successfully (indicated by the LED). I always use this method.

In any case, I cant even get the second controller working properly (see the errors I posted above)

So before I even get to that stage, I need working controllers. Ive restarted OH2 many times but the errors dont disappear.

Are you sure the device is successfully included with the new controller? Did you check with other software like Zensys tools? After a manual inclusion with the button on the stick I always check with Zensys tools first if the device is included and which node number it has. Then I (re)start OH.

And are all controllers displayed as online? Here my screenshot from Thing configuration in PaperUI:

For the names I choose them myself (ZWOG, ZWUG, ZWAB) and do not use the cryptic proposals from OH. This makes item files easier to maintain.

Yes . default names and yes both online. One via acm0 and the other vis usb0

So if you are sure that both sticks are online and that there are nodes included within the network of stick 2 then please start a search for new things with the Z-Wave binding and the nodes should appear in your inbox.

Did that too. Nothing after 8hrs. The second stick isnt workings correctly as indicated by the errors above.

Waiting for 8 hours was just a waste of time, if it is working the nodes should pop up very quickly (within minutes) except if you only have battery powerded devices (then you need to wait for next wakeup).

Sorry but without some more specific input from your side it will behard to help you. I would still guess that there are no nodes at all included with stick number 2. How can you be sure? Can you post a screenshot from Zensys Tools with stick 2 connected and display the node list?

Or: Just connect ONLY the stick 2 to OH. Is it working then? Will the nodes show up?