Help needed for manual ZWave thing configuration

I am trying to configure ZWave binding manually through a .things file, because I would like to backup, restore and replicate the configuration.

Quite some work actually, because I have a lot of ZWave devices… but ok, it should be a lot of work the first time and then just simple adds and updates.

However, I can’t seem the figure out the correct way to specify the things inside the zstick controller bridge.

According to https://www.openhab.org/addons/bindings/zwave/#binding-configuration I need:

  • zwave_nodeid
  • zwave_manufacturer (decimal)
  • zwave_deviceid (decimal)
  • zwave_devicetype (decimal)
  • zwave_version (unspecified… string??)

It links to https://www.openhab.org/addons/bindings/zwave/doc/things.html but those values cannot be found there. All the way at the bottom (great place to put that link… :wink: ) it links to a database page. That link is broken/malformed, but probably should be http://www.cd-jackson.com/index.php/zwave/zwave-device-database/zwave-device-database-guide but the values arent’t found within that database either.

The node_id is simple, this clearly shows up in HABmin or any other UI.

The manufacturer is Fibaro for most of my devices. This has ID 010F. but that’s not decimal, so it probably is 271 ??

Then the device_id, if I navigate to the details page of the device, lets say https://www.cd-jackson.com/index.php/zwave/zwave-device-database/zwave-device-list/devicesummary/133 the URL ends in 133, also when exporting the device to JSON, it shows 133 as the device_id… so I guess thats it then.

And then the devicetype, again nowhere to be found. I know it’s a Dimmer / Wall Switch but can’t seem to find a numeric (decimal) value of this devicetype.

So I’m up to:

 Thing zwave:device:controller:node26 "Wall dimmer" (zwave:serial_zstick:controller) [ zwave_nodeid=26, zwave_manufacturer=271, zwave_deviceid=133, zwave_version="4.5" ]

I am missing the devicetype and am uncertain of the correct values of all the other settings… well all but the nodeid… that one I am pretty sure is correct.

The bridge shows online, but unfortunately the zwave devices keep showing up as Unknown Device and status Initializing.

Any help in manually configuring these zwave devices is greatly appreciated!

Hi sihui,

Thank you for your reply. I have followed the instructions in the link, but the zwave devices are still in status Initializing.

My config is as follows:

Bridge zwave:serial_zstick:controller "Z-Wave Controller" [ port="/dev/ttyAMA0", controller_softreset="false", controller_master="true", heal_enable="true", heal_time=2, security_networkkey="XXXXX" ]
{   
    Thing zwave:fibaro_fgd212_00_000:controller:node22 "Dimmer" (zwave:serial_zstick:controller) [ node_id=22 ]
}

Log shows the following error:

2018-10-31 18:00:02.303 [WARN ] [ore.common.registry.AbstractRegistry] - Could not remove element: null
java.lang.NullPointerException: null
        at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.preserveDynamicState(ThingRegistryImpl.java:177) ~[?:?]
        at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.onRemoveElement(ThingRegistryImpl.java:158) ~[?:?]
        at org.eclipse.smarthome.core.thing.internal.ThingRegistryImpl.onRemoveElement(ThingRegistryImpl.java:1) ~[?:?]
        at org.eclipse.smarthome.core.common.registry.AbstractRegistry.removed(AbstractRegistry.java:174) ~[?:?]
        at org.eclipse.smarthome.core.common.registry.AbstractRegistry.removed(AbstractRegistry.java:1) ~[?:?]
        at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:59) ~[?:?]
        at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:74) ~[?:?]
        at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListenersAboutRemovedElement(AbstractProvider.java:82) ~[?:?]
        at org.eclipse.smarthome.model.thing.internal.GenericThingProvider.lambda$20(GenericThingProvider.java:773) ~[?:?]
        at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]
        at org.eclipse.smarthome.model.thing.internal.GenericThingProvider.modelChanged(GenericThingProvider.java:775) ~[?:?]
        at org.eclipse.smarthome.model.core.internal.ModelRepositoryImpl.notifyListeners(ModelRepositoryImpl.java:301) ~[?:?]
        at org.eclipse.smarthome.model.core.internal.ModelRepositoryImpl.addOrRefreshModel(ModelRepositoryImpl.java:139) ~[?:?]
        at org.eclipse.smarthome.model.core.internal.folder.FolderObserver.checkFile(FolderObserver.java:227) ~[?:?]
        at org.eclipse.smarthome.model.core.internal.folder.FolderObserver.processWatchEvent(FolderObserver.java:291) ~[?:?]
        at org.eclipse.smarthome.core.service.WatchQueueReader.lambda$3(WatchQueueReader.java:323) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:?]
        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) [?:?]
2018-10-31 18:00:02.413 [ERROR] [ding.zwave.handler.ZWaveThingHandler] - NodeID is not set in zwave:fibaro_fgd212_00_000:controller:node22

I tried different variations such as nodeid=22, node_id=22, and zwave_nodeid=22 with and without quoted values. Also tried different device names based on device firmware.

The instructions doesn’t seem to match https://www.openhab.org/addons/bindings/zwave/#binding-configuration which states that I need at least the 5 configuration values (see bullet list).

Rebooting openhab2, checking the logs again I find this message

2018-10-31 18:12:13.334 [INFO ] [el.core.internal.ModelRepositoryImpl] - Validation issues found in configuration model 'zwave.things', using it anyway:
Provide a thing type ID and a thing ID in this format:
 <thingTypeId> <thingId>

So it seems like node_id isn’t enough… I also need to specify thingTypeId and thingId, although the message shows some XML syntax which as far as I know is not what I need in the .things file. And also I am missing the thingtypeid and thingid values (see first post).

What version of openhab are you using? This feature is only available on the latest version (2.4 M4 or later).

Hi Chris,

Thanks for the response… I updated to the latest version of the binding (2.4.0 snapshot) and now things (…) seems to start working!

Its still complaining about validation issues though

Provide a thing type ID and a thing ID in this format:
 <thingTypeId> <thingId>
Provide a thing type ID and a thing ID in this format:
 <thingTypeId> <thingId>
Provide a thing type ID and a thing ID in this format:
 <thingTypeId> <thingId>
Provide a thing type ID and a thing ID in this format:
 <thingTypeId> <thingId>
Provide a thing type ID and a thing ID in this format:
 <thingTypeId> <thingId>
Provide a thing type ID and a thing ID in this format:
 <thingTypeId> <thingId>
Provide a thing type ID and a thing ID in this format:
 <thingTypeId> <thingId>
Provide a thing type ID and a thing ID in this format:
 <thingTypeId> <thingId>
1 Like

Just to be clear, if you use Autodiscovery, the Things are saved to a plain text JSON formatted file in $OH_USERDATA/jsondb.

This file can be backed up, restored, and replicated as needed the same as .things files can. It isn’t quite as human friendly (JSON format) but nothing you mention is impossible to do. Also, when you use openhab-cli backup and restore, the JSON Things and Items get backed up and restored too.

I’m not arguing against what you want to do. I just don’t want future readers to come along and assume that they cannot do these things with PaperUI created Things and Items, because they can.

I wanted to do my zwave in the .things and .items files also. So I read through this post and ended up getting the same message in the log file as Mephix user.

Message: "Porvide a thing type ID and and a thing ID in this format: "

I just want to document what i did to clear this message from the log files.

the User sihui put up a item titled “ZWave Manual Thing Configuration”… This write up is a little misleading

in the .things file you can correctly define the Bridge:

Bridge zwave:serial_zstick:controller "ZWave Controller" [ port="/dev/tty.usbmodem1421", controller_softreset="false", controller_master="true", heal_enable="true", security_networkkey="11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 00" ]

I really would have like to seen a Bridge Definition with included Things within the Bridge definition

Here is my example:

Bridge          zwave:serial_zstick:Zwave_controller                        "Z-Wave Serial Controller"                          [ port="COM4", controller_wakeupperiod="3600", heal_time="2", controller_master="true", controller_sisnode="1", controller_inclusiontimeout=30, inclusion_mode="2", security_inclusionmode="0", security_networkkey="0F BC 53 18 63 C0 C6 47 A6 E2 7E 6F 5B 17 B1 E0", controller_softreset="false", controller_hardreset="false", controller_exclude="false", controller_sync="false" ]       
{
    // Add things here
    Thing       ge_ge14295_00_000           ZwaveControl_node4                      "Foyer Z-Wave: GE 14295 In-Wall Dimmer Switch"                       @ "Foyer"                                                  [ zwave_class_basic="BASIC_TYPE_ROUTING_SLAVE", zwave_class_generic="GENERIC_TYPE_SWITCH_MULTILEVEL", zwave_frequent="false", zwave_version="5.21", zwave_listening="true", zwave_deviceid="12592", zwave_routing="true", zwave_beaming="true", zwave_class_specific="SPECIFIC_TYPE_POWER_SWITCH_MULTILEVEL", node_id=4, zwave_manufacturer="99", zwave_devicetype="18756" ]
    Thing       ge_ge14295_00_000           ZwaveControl_node3                      "Hallway Z-Wave: GE 14295 In-Wall Dimmer Switch"                     @ "Hallway"                                                [ zwave_class_basic="BASIC_TYPE_ROUTING_SLAVE", zwave_class_generic="GENERIC_TYPE_SWITCH_MULTILEVEL", zwave_frequent="false", zwave_version="5.21", zwave_listening="true", zwave_deviceid="12592", zwave_routing="true", zwave_beaming="true", zwave_class_specific="SPECIFIC_TYPE_POWER_SWITCH_MULTILEVEL", node_id=3, zwave_manufacturer="99", zwave_devicetype="18756" ]  
    Thing       ge_ge14295_00_000           ZwaveControl_node2                      "Kitchen Z-Wave: GE 14295 In-Wall Dimmer Switch"                     @ "Kitchen"                                                [ zwave_class_basic="BASIC_TYPE_ROUTING_SLAVE", zwave_class_generic="GENERIC_TYPE_SWITCH_MULTILEVEL", zwave_frequent="false", zwave_version="5.26", zwave_listening="true", zwave_deviceid="12592", zwave_routing="true", zwave_beaming="true", zwave_class_specific="SPECIFIC_TYPE_POWER_SWITCH_MULTILEVEL", node_id=2, zwave_manufacturer="99", zwave_devicetype="18756" ] 
    Thing       elexa_dmof1_00_000          ZwaveControl_node7                      "Laundry Room Z-Wave: Dome Smart Outlet for the Washer"              @ "Laundry Room"                                           [ zwave_class_basic="BASIC_TYPE_ROUTING_SLAVE", zwave_class_generic="GENERIC_TYPE_SWITCH_BINARY", zwave_frequent="false", zwave_version="3.94", zwave_listening="true",  zwave_deviceid="135", zwave_routing="true", zwave_beaming="true", zwave_class_specific="SPECIFIC_TYPE_POWER_SWITCH_BINARY", node_id=7, zwave_manufacturer="543", zwave_devicetype="3" ]
    Thing       elexa_dmms1_00_000          ZwaveControl_node5                      "Hallway Z-Wave: Dome Light/Motion Sensor"                           @ "Hallway"                                                [ zwave_class_basic="BASIC_TYPE_ROUTING_SLAVE", zwave_class_generic="GENERIC_TYPE_SENSOR_NOTIFICATION", zwave_frequent="false", zwave_version="3.94", zwave_listening="false", zwave_deviceid="131", zwave_routing="true", zwave_beaming="true", zwave_class_specific="SPECIFIC_TYPE_NOTIFICATION_SENSOR", node_id=5, zwave_manufacturer="543", zwave_devicetype="3" ]
    Thing       elexa_dmms1_00_000          ZwaveControl_node6                      "Master Bedroom Z-Wave: Dome Light/Motion Sensor"                    @ "Master Bedroom"                                         [ zwave_class_basic="BASIC_TYPE_ROUTING_SLAVE", zwave_class_generic="GENERIC_TYPE_SENSOR_NOTIFICATION", zwave_frequent="false", zwave_version="3.94", zwave_listening="false", zwave_deviceid="131", zwave_routing="true", zwave_beaming="true", zwave_class_specific="SPECIFIC_TYPE_NOTIFICATION_SENSOR", node_id=6, zwave_manufacturer="543", zwave_devicetype="3" ]
}

I just want to clear this up so that maybe if some one else runs into this problem they can solve it also.

thank you

4 Likes