Z-Wave Configuration Properties Report throws error when reporting on non-existent parameter

The log line below is a z-wave Configuration Properties Report regarding a non-existing parameter:

2022-09-26T02:05:41.909555828+00:00 INFO Z-Wave Configure  <ZwaveDevice: 412480d6-b051-4b40-a67f-3d021f84b0f7 [AD] (Den Switch)> received Z-Wave command: {cmd_class="CONFIGURATION", cmd_id="PROPERTIES_REPORT", dst_channels={}, encap="S2_AUTH", err="\x5B\x73\x74\x72\x69\x6E\x67\x20\x22\x73\x74\x2F\x7A\x77\x61\x76\x65\x2F\x43\x6F\x6D\x6D\x61\x6E\x64\x43\x6C\x61\x73\x73\x2F\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2F\x69\x6E\x69\x74\x2E\x6C\x75\x61\x22\x5D\x3A\x31\x30\x34\x3A\x20\x69\x6C\x6C\x65\x67\x61\x6C\x20\x5A\x2D\x57\x61\x76\x65\x20\x69\x6E\x74\x65\x67\x65\x72\x20\x73\x69\x7A\x65\x20\x30\x0A\x73\x74\x61\x63\x6B\x20\x74\x72\x61\x63\x65\x62\x61\x63\x6B\x3A\x0A\x09\x5B\x73\x74\x72\x69\x6E\x67\x20\x22\x73\x74\x2F\x7A\x77\x61\x76\x65\x2F\x69\x6E\x69\x74\x2E\x6C\x75\x61\x22\x5D\x3A\x32\x34\x37\x3A\x20\x69\x6E\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x3C\x5B\x73\x74\x72\x69\x6E\x67\x20\x22\x73\x74\x2F\x7A\x77\x61\x76\x65\x2F\x69\x6E\x69\x74\x2E\x6C\x75\x61\x22\x5D\x3A\x32\x34\x35\x3E\x0A\x09\x5B\x43\x5D\x3A\x20\x69\x6E\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x27\x65\x72\x72\x6F\x72\x27\x0A\x09\x5B\x73\x74\x72\x69\x6E\x67\x20\x22\x73\x74\x2F\x7A\x77\x61\x76\x65\x2F\x43\x6F\x6D\x6D\x61\x6E\x64\x43\x6C\x61\x73\x73\x2F\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2F\x69\x6E\x69\x74\x2E\x6C\x75\x61\x22\x5D\x3A\x31\x30\x34\x3A\x20\x69\x6E\x20\x6D\x65\x74\x68\x6F\x64\x20\x27\x72\x65\x61\x64\x5F\x74\x79\x70\x65\x64\x27\x0A\x09\x5B\x73\x74\x72\x69\x6E\x67\x20\x22\x73\x74\x2F\x7A\x77\x61\x76\x65\x2F\x67\x65\x6E\x65\x72\x61\x74\x65\x64\x2F\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2F\x69\x6E\x69\x74\x2E\x6C\x75\x61\x22\x5D\x3A\x31\x33\x36\x30\x3A\x20\x69\x6E\x20\x6D\x65\x74\x68\x6F\x64\x20\x27\x64\x65\x73\x65\x72\x69\x61\x6C\x69\x7A\x65\x27\x0A\x09\x5B\x73\x74\x72\x69\x6E\x67\x20\x22\x73\x74\x2F\x7A\x77\x61\x76\x65\x2F\x69\x6E\x69\x74\x2E\x6C\x75\x61\x22\x5D\x3A\x34\x37\x36\x3A\x20\x69\x6E\x20\x66\x69\x65\x6C\x64\x20\x27\x5F\x70\x61\x72\x73\x65\x27\x0A\x09\x5B\x73\x74\x72\x69\x6E\x67\x20\x22\x73\x74\x2F\x7A\x77\x61\x76\x65\x2F\x67\x65\x6E\x65\x72\x61\x74\x65\x64\x2F\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2F\x69\x6E\x69\x74\x2E\x6C\x75\x61\x22\x5D\x3A\x31\x33\x33\x31\x3A\x20\x69\x6E\x20\x6D\x65\x74\x68\x6F\x64\x20\x27\x69\x6E\x69\x74\x27\x0A\x09\x5B\x73\x74\x72\x69\x6E\x67\x20\x22\x73\x74\x2F\x7A\x77\x61\x76\x65\x2F\x67\x65\x6E\x65\x72\x61\x74\x65\x64\x2F\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2F\x69\x6E\x69\x74\x2E\x6C\x75\x61\x22\x5D\x3A\x31\x33\x32\x31\x3A\x20\x69\x6E\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x3C\x5B\x73\x74\x72\x69\x6E\x67\x20\x22\x73\x74\x2F\x7A\x77\x61\x76\x65\x2F\x67\x65\x6E\x65\x72\x61\x74\x65\x64\x2F\x43\x6F\x6E\x66\x69\x67\x75\x72\x61\x74\x69\x6F\x6E\x2F\x69\x6E\x69\x74\x2E\x6C\x75\x61\x22\x5D\x3A\x31\x33\x30\x38\x3E\x0A\x09\x5B\x43\x5D\x3A\x20\x69\x6E\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x27\x63\x6F\x78\x70\x63\x61\x6C\x6C\x27\x0A\x09\x5B\x73\x74\x72\x69\x6E\x67\x20\x22\x73\x74\x2F\x7A\x77\x61\x76\x65\x2F\x69\x6E\x69\x74\x2E\x6C\x75\x61\x22\x5D\x3A\x32\x37\x31\x3A\x20\x69\x6E\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x3C\x5B\x73\x74\x72\x69\x6E\x67\x20\x22\x73\x74\x2F\x7A\x77\x61\x76\x65\x2F\x69\x6E\x69\x74\x2E\x6C\x75\x61\x22\x5D\x3A\x32\x36\x37\x3E\x0A\x09\x28\x2E\x2E\x2E\x74\x61\x69\x6C\x20\x63\x61\x6C\x6C\x73\x2E\x2E\x2E\x29\x0A\x09\x5B\x73\x74\x72\x69\x6E\x67\x20\x22\x73\x74\x2F\x7A\x77\x61\x76\x65\x2F\x64\x72\x69\x76\x65\x72\x2E\x6C\x75\x61\x22\x5D\x3A\x34\x39\x3A\x20\x69\x6E\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x3C\x5B\x73\x74\x72\x69\x6E\x67\x20\x22\x73\x74\x2F\x7A\x77\x61\x76\x65\x2F\x64\x72\x69\x76\x65\x72\x2E\x6C\x75\x61\x22\x5D\x3A\x34\x35\x3E\x0A\x09\x5B\x43\x5D\x3A\x20\x69\x6E\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x27\x63\x6F\x70\x63\x61\x6C\x6C\x27\x0A\x09\x5B\x73\x74\x72\x69\x6E\x67\x20\x22\x73\x74\x2F\x64\x72\x69\x76\x65\x72\x2E\x6C\x75\x61\x22\x5D\x3A\x37\x31\x32\x3A\x20\x69\x6E\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x20\x3C\x5B\x73\x74\x72\x69\x6E\x67\x20\x22\x73\x74\x2F\x64\x72\x69\x76\x65\x72\x2E\x6C\x75\x61\x22\x5D\x3A\x36\x39\x31\x3E", payload="\x00\x05\x00\x00\x06\x02", src_channel=0}

Resolving the hex err from that log line into characters yields:

[string "st/zwave/CommandClass/Configuration/init.lua"]:104: illegal Z-Wave integer size 0
stack traceback:
	[string "st/zwave/init.lua"]:247: in function <[string "st/zwave/init.lua"]:245>
	[C]: in function 'error'
	[string "st/zwave/CommandClass/Configuration/init.lua"]:104: in method 'read_typed'
	[string "st/zwave/generated/Configuration/init.lua"]:1360: in method 'deserialize'
	[string "st/zwave/init.lua"]:476: in field '_parse'
	[string "st/zwave/generated/Configuration/init.lua"]:1331: in method 'init'
	[string "st/zwave/generated/Configuration/init.lua"]:1321: in function <[string "st/zwave/generated/Configuration/init.lua"]:1308>
	[C]: in function 'coxpcall'
	[string "st/zwave/init.lua"]:271: in function <[string "st/zwave/init.lua"]:267>
	(...tail calls...)
	[string "st/zwave/driver.lua"]:49: in function <[string "st/zwave/driver.lua"]:45>
	[C]: in function 'copcall'
	[string "st/driver.lua"]:712: in function <[string "st/driver.lua"]:691>

The payload from this command - \x00\x05\x00\x00\x06\x02 - appears to be correct based on the z-wave spec:

If this field advertises a non-existing parameter, a receiving node MUST advertise zero values in the Format and Size fields. The Next Parameter Number field MUST advertise the next available configuration parameter.

The spec also includes 0 in the table of values allowed for size in this particular report:

@nayelyz Could the handling of this payload be improved to return the data it contains - the parameter number (5), size (0), next valid parameter number (6), and no bulk support - instead of throwing an error?

1 Like

Hi, @philh30, sorry for the delay. I’ll check this with the engineering team and let you know.

1 Like