ZWave Manual Thing Configuration

I am trying to follow this, but I am getting:

[ERROR] [ding.zwave.handler.ZWaveThingHandler] - NodeID is not set in zwave:intermatic_ha01c_00_000:controller:node4

My *.things file looks like this:

Bridge zwave:serial_zstick:controller "ZWave Controller" [ port="/dev/ttyACM0", controller_softreset="false", controller_master="true", heal_enable="true", security_networkkey="" ]
{
    Thing zwave:intermatic_ha01c_00_000:controller:node4 "Switch" (zwave:serial_zsk:controller) [ node_id=4 ]
}

What version of the binding are running? Currently this is only supported in the development version of the binding.

I was running snapshot version, will try dev branch build

@sintei @ikir: I think your syntax was wrong. When you put things inside a bridge block, the syntax is Thing <thingTypeId> <thingId> [..]. See also: https://www.eclipse.org/smarthome/documentation/features/dsl.html#defining-bridges

So I think corrected example from @ikir would be:

Bridge zwave:serial_zstick:controller "ZWave Controller" [ port="/dev/ttyACM0", controller_softreset="false", controller_master="true", heal_enable="true", security_networkkey="" ]
{
    Thing intermatic_ha01c_00_000 node4 "Switch" [ node_id=4 ]
}

Is it possible to set the zwave thing (dimmer) configuration parameters trough a .things or other text file as well? Or can this only be done in the paper UI or habmin?

No - if you use text files you can’t set the parameters through openHAB (at the moment - hopefully in future this will be resolved as there are some changes being worked on in ESH).

Ah I did define the things trough the .things file, but I -could- set the parameters in openhab paperUI (I am using the development binding and fibaro dimmer 2). Just wondered if it was also possible to set the params in text because it would be a bit faster to set up. But I think then only trough the UI?

Unfortunately at the moment this isn’t possible. As I said, in future this will be supported - hopefully soonish.

No - this isn’t possible either (sorry).

@chris : I would like to know if it is now possible to define Z-Wave things in a config file ?
I tried without success but I am new to the Z-wave binding.

I have done several tries with 3 different parameters:

Thing zwave:nodon_msp31x1_00_000:controller:node2 "Lampe Salon" (zwave:serial_zstick:controller) [ node_id=2 ]
Thing zwave:nodon_msp31x1_00_000:controller:node2 "Lampe Salon" (zwave:serial_zstick:controller) [ zwave_nodeid="2", zwave_manufacturer="357", zwave_deviceid="3", zwave_devicetype="1", zwave_version="1.55" ]
Thing zwave:nodon_msp31x1_00_000:controller:node2 "Lampe Salon" (zwave:serial_zstick:controller) [ node_id=2, zwave_nodeid="2", zwave_manufacturer="357", zwave_deviceid="3", zwave_devicetype="1", zwave_version="1.55" ]

Unfortunately, the thing systematically remains in INITIALIZING state and I got a warning about NODEID being not set.

I am running OH snapshot build 1262 with Z-Wave binding version 2.3.0.201804230754.

PS: using the thing discovered by Paper UI, it is working well, but I would rather keep everything in config files so that I can easily edit and backup.

Yes - as described above. There are limitations with being able to configure devices, but it works if that’s what you want to do. As above though, it’s only available in the development branch - I’ll look to merge this into master in a few weeks (after 2.3 release).

This doesn’t look like a development binding version?

Ok thank you.
Can I download somewhere the development version as a jar file or should I build it from git?

Yes - read the first 6 or so messages in this thread -:

Note that you will need to delete and add back all things to transfer to this version.

Thanks a lot, I installed the development version and thing configuration from a things file seems to work.

I already included 3 devices and I have a difficulty only with the device on battery (Everspring ST814). I will come back with a question after I see what happens after few hours.

1 Like

Can you please tell me what is the syntax to set a configuration parameter in a configuration file ?
For example, for a FGD211, I would like to set config_14_1 to 1 (default is 0). When I use config_14_1=1 it is not taking into account. Maybe the problem is that this parameter is inside a parameter group named configuration. I don’t know what is the syntax to use in such a case. I tried configuration:config_14_1=1 but it is not a valid syntax.

This is not possible. It is currently not possible to configure devices at all if you are using thing configuration files. This is something that is in the list of additions in ESH, but currently it’s blocked.

If you want to configure devices, then you need to use PaperUI/HABmin to define your things.

Oh ! Thatr’s very annoying.

But thank you for the quick answer.

I agree - I tried to get this changed a while back, but it was rejected… There is a move to fix this now, but it’s taking time (sorry).

I see what discussions you are mentionning.

But I don’t understand why it is not possible to take into account a parameter from my configuration file. I don’t want to update it. Isn’t it possible for your binding to consider these configurtation parameters and update the device configuration in case the current value is different ?

There is no way for the binding to know what parameters are defined in a config file - it just gets a list of ALL configuration. So, the only possibility is to send ALL parameters to the device - even if you only specify a single parameter. Many devices in ZWave have 30 to 50 configuration parameters, and many people have well over 100 devices in their network - that’s a LOT of configuration parameters.

So, means when the binding starts, it would need to somehow send a few thousand configuration commands, plus the same number of read-backs to confirm the settings, and this would add a huge load to the binding startup that would take a long time to clear (and for battery devices, a very long time!). It would also be difficult to manage as I’d either need a queue that can handle this number of frames (normally we only queue up to 100 messages - not the many thousands we are talking about here!) or I’d need to somehow manage this configuration update through some other sequencer.

As was discussed last time we looked at this, something could of course be implemented - it would take some time, may not work well, and would likely cause a lot of performance issues that would need to be explained…

Even this requires the reading of the commands - so that halves the number of messages we’d need to send - again assuming the 100 devices with 40 commands, that’s still 4000 messages we’d need to send on startup to get the state. We could alternatively assume that we know the value already and nothing has changed since last time, which might cover many cases, but it’s not going to be reliable in all cases.

I hope that helps explain it a little at least? It’s not a simple problem :frowning: .

1 Like

Ok, I understand.
Does it mean that the device parameters are currently never checked against the ones in the thing configuration ? They are only pushed to the device when the user changes a parameter using Paper UI ?