Ethernet Z-wave controler

The zwave controller need not be in the same place as the openHAB host box. It can be in a different building on a campus. Or in a different country, over VPN.

If you’re thinking about resilience, a remote zwave controller can be used in a primary/failover hosts situation.

But this is achievable also with multiple controllers, over vpn, with mutual checks between them, without exposing all the network heals etc that happen via z-wave (that you would otherwise need a Zniffer to catch) over either lan or vpn - instead transmitting just the relevant info… isn’t it?

This concept of using an off the shelf USB device server is great! For $80 (same price of an RPi + power + chassis + SD card) you’re operational quicker with better reliability. Love it.

How does one complete the link the Silex DSxxx on the Openhab side? With socat?

Actually there is a specific Silex Software (called SX Virtual Link, downloadable on their website) . However I am nut sure if they also provide support for linux ( I am running on Windows).

And perhabps one more comment from my side: I meanwhile changed my setup an do not use the Silex solution anymore but I indeed switched to Raspi and ser2net. The problem with the Silex software was that when the LAN/WLAN connection was lost for a short time the virtual COM Port on my OH machine disappeared and reappeared after a short time. But OH was not able to recover the connection and my Z-Wave network stopped unless I restarted the binding manually.
With ser2net on a Raspi as serial device server and com0com and hub4com as serial device client software on Windows it works more stable. The COM port is alwasy present even if the connection is lost for a short time. So as soon as it reconnects OH will continue to work. For these reasons I would recommend the ser2net solution with the Raspi.

I’ve been trying to accomplish this myself. I m going to try out ser2net, any advice before I begin?

I think it depends on which platform you are running OH. As I am running OH on Windows I can only give advice for that combination with com0com and hub4com as Software on the client side. If you are running on Linux I think the client software is called Socat but I never used it myself.

HI good afternoon! I’ve been fighting with OpenHAB 2 (2.5) and trying to put two z-wave controllers -and I am thrilled to hear you have a configuration with 3! Amazing! Are those individual z-wave networks? (masters of their own networks) - Can you use Habmin to add the controllers and the devices or do you need to add them manually? Sorry I have some many questions and your post gave me some hope after fighting with this issue for a very long time…
Thanks!

Yes, those are 3 individual Z-Wave networks with own master only integrated via OH. So it is not possible to have Z-Wave associations directly between the devices of the different networks, but you can integrate them via OH, e.g. by rules.

Yes, you can use Habmin or PaperUI to integrate the controllers and also new devices. For controllers you have to add them manually and specify the COM Port of course.
However, there is one point to consider: When you start a network search for new Z-Wave devices then Habmin (or PaperUI) will trigger the inclusion mode for all 3 networks simulaneously. So you have to make sure yourself to include the new device in the correct network (e.g. by positionning it very close to the intended master controller). Otherwise it can happen that one of the other controllers picks it up first.

The architecture of the OH Z-Wave binding explicitely supports multiple controllers and it works very smoothly in daily operation.

However, if I had to start my smart home project again (my installation is from 2015/2016) , I am not sure if I would still consider Z-Wave as the technology to go. For most wired devices (e.g. swiches, dimmers, raffstores) the Shelly devices are meanwhiloe the much better choice from my perspective. They just work over WIFI which is much more easy to extend (no need for different master networks and all the stuff) , are just as small as the Z-Wave devices, support open standards (like MQTT), support easy configuration and over-the-air firmware updates via WebUI (which is not true for Z-Wave devices). And the best: They cost about only 40% compared to similar Z-Wave devices.
So I slowly started to replace my Z-Wave devices with Shellys, everytime I have to replace a device I do not buy a new Z-Wave device but install a Shelly device for it.

Another alternative is go to silicon labs and download Z/IP. The latest version works reasonably well but however you approach this it is more hardware and more integration.

Z/IP gives you S2 security also known as some security as opposed S0 or better known as not a lot of security so if security is important another reasons you would like this. Also a few other things.

The Web API is simple enough and well documented.

I did start wrapping the web portal API to make a binding but @Bruce_Osborne pointed out just wrapping in MQTT would be more generic. That is an alternative as the openHAB end is a fiddle in comparison and the solution would be more portable.

Interesting. But how would an architecture with Z/IP look like? What is exactly the intention behind it?

Z/IP is (or was?) a middleware layer. Sigma started pushing this as the solution to problems surrounding documentation, and the release of information to the public. It provides an interface between IP and the serial API that dongles use.

Now that everything is being opened up in ZWave (possibly late this year or into next year) this requirement will disappear and I suspect that Z/IP may be obsoleted (although I’m not 100% sure about that at the moment as Silabs are still discussing their strategy.

Note that Z/IP will not work with the binding - it would require pretty much a new binding. When Z/IP was the only way forward for certification, I did look at this, but it’s not an insignificant amount of work as it conceptually works differently to the current binding.

The other downside about Z/IP from a Java / OH perspective is that it requires a separate server to be run which can’t be included in the binding, and is obviously host dependant, so it causes issues with OH portability.

1 Like

Thank you very much for clarification!

Hi good morning! Thank you for this extra info.
The problem that I have is with the discovery of those devices. Since they come from different z-wave networks, I have two nodes that are node 2 (with different masters) and discovery seems to be overriding with the other node 2 (one is Gocontrol HVAC one, and the other is a light switch)
I’m in openhab 2.5.2-1 and Debian (real server)
What version of OpenHAB are you using? Do you use auto discovery or you have .things file for the zwave devices?
Thank you for your help, I appreciate it very very much
Adrian

I am using the functionality since 2017 (I think it was OH 2.1?), so there is no problem with the version.
There is also definetly no “override” with same node numbers as the binding stores for each node the network id and the node number. I have for example a node 48 in all of my 3 Z-Wave networks. Here you can see the 3 xml files generated by the binding:
grafik

The id behind network_ is the Home ID of each Z-Wave controller stick. So the binding clearly can distinguish identical node numbers within the networks.

I use auto-discovery for most of my zwave devices. Exception: I have some battery operated door sensors which wake up very seldom (only all couple of months) and as I do not like to wait for this moment or to trigger the button manually I have them in a .things file. Like this they work immediately after a fresh OH install.

For my items I am using .items files. In these file you can specify the channel for the Z-Wave devices including the thing id of the controller and node number:

Number  EN_HWRA_WA  "EN_HWRA_WA"  <energy>  (sumkwh_hhdev)	{channel="zwave:device:ZWUG:node15:meter_kwh"}
Number  EN_KOCH_BL  "Bora links(kWh)"  <incline>  (sumkwh_hhdev)	{channel="zwave:device:ZWOG:node83:meter_kwh"}

So in the above example you see the controller UID info between device: and the node number (in my examples ZWOG and ZWUG).
You can specify that UID when you manually include the stick for the first time:
grafik

As I like to have my items file simple I choose manually a shorter UID instead of the long hex value proposed by OH.

Hope that helps!

2 Likes

Thank you! Do you mind sharing with me the .things for your battery operated devices? I think I’m facing a similar issue with my Gocontrol gctbz48 devices… that might be fixed with manual initialization (instead of discovery)
Thank you # 2
Adrian

Here is the example for my Fibaro door/window sensors FGK101:

Thing zwave:fibaro_fgk101_00_000:ZWAB:node35 "Z-Wave Node 035: FGK101 manual" (zwave:serial_zstick:ZWAB) @ "ATOI" [ node_id=35]

Please note that the correct syntax is different for different devices and versions of the device.

There is a good post here.

That is good but do you have also in the .things file for your bridge?
This is what I have on my zwave2.thing file

  Bridge zwave:serial_zstick:SZwave "Z-Wave Serial Controller-South" [ port="/dev/ttyACM0", controller_softreset="false", controller_master="true", heal_enable="true", heal_type=2, security_networkkey="..." ]
    {
            Thing zwave:linear_gctbz48_00_000:SZwave:node2 "Grade 8 HVAC - node 2" (zwave:serial_zstick:SZwave) [ node_id = 2 ]

    }

But I get a lot of errors and when I try to modify the temperature target for example, I get an error on the openhab.log file:

2020-03-02 11:21:04.433 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method ‘ThingHandler.handleCommand()’ on ‘org.openhab.binding.zw
ave.handler.ZWaveThingHandler@2f917aa0’: null
java.lang.NullPointerException: null
at org.openhab.binding.zwave.internal.converter.ZWaveThermostatSetpointConverter.receiveCommand(ZWaveThermostatSetpointConverter.java:148) ~[?:?]
at org.openhab.binding.zwave.handler.ZWaveThingHandler.handleCommand(ZWaveThingHandler.java:1181) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:152) [bundleFile:?]
at org.eclipse.smarthome.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [bundleFile:?]
at com.sun.proxy.$Proxy188.handleCommand(Unknown Source) [?:?]
at org.eclipse.smarthome.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:74) [bundleFile:?]
at org.eclipse.smarthome.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:48) [bundleFile:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
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:264) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]

Could you avoid this situation by simply disabling not used controller during inclusion?

Yes, you can. But after that you may have to restart the Z-Wave binding manually to get the temporary disconnected controllers back to life depending on how your controllers are connected to OH.
If you use my actual combination with hub4com as Windows serial client on OH server and ser2net on Raspi as serial server then this is no problem. The network will immediately recover as soon as the connection is reestablished.
If you use however different Serial-to-IP solutions (e.g. Silex USB-IP server which I used before), then a short interruption will kill the connectivity of the controller to OH and it will only come back if you restart the Z-Wave binding or OH. The same is also true if you have your stick directly physically connected to a COM Port on the OH server.

I want to bring up the original question of OP: is there a off-the-shelf z-wave controller with ethernet (or maybe wlan) connect that is supported by OH3?

I know there are solutions with usb2eth or sharing the usb of pi, but i want a stable, ready-made solution. Similar to the hue-bridge, i just want to plug it in and be happy.
Reasons for me are that the diy-solutions fail from time to time (tried sharing usb over eth) and the host “looses” the usb port, resulting in needing reboots. Also i want to place the controller in the middle of the building, not in the rack in the cellar where it needs two extenders to even reach the devices.

edit: e.g. do the fg322 gateway, the devolo or the delock work well?