node-zwave-js: ConfigurationCCBulkGet causes error when reading non-existant parameter

Discussed in https://github.com/zwave-js/node-zwave-js/discussions/6560

<div type='discussions-op-text'>

Originally posted by @ackjewtn December 18, 2023

Checklist

  • I have read and followed the above instructions

  • I have checked the troubleshooting section and my problem is not described there.

  • I have read the changelog and my problem was not mentioned there or the fix did not work.

Describe the issue

What is happening? After doing a firmware upgrade of a Z-Temp2 device, it’s stuck on “NodeInfo” when re-interviewing.

Upgrading from FW: v1.2.0 SDK: v7.11.1

To: FW: v1.2.1 SDK: v7.17.2

What did you expect to happen instead? The device would get fully interviewed and work as usual.

Steps to reproduce the behavior:

  1. Upgrade the thermostat
  2. Re-interview starts and gets stuck on NodeInfo
  3. Take a look at the logs and see the error.

Anything else we should know? After enabling debug logs, i see that Z-wave JS tries to get a parameter (#256), which according to Thermo-floor support, isn’t supported by the device.

2023-12-18T09:54:07.245Z CNTRLR   [Node 091] [+] [Configuration] 15: 0                              [Endpoint 0]
2023-12-18T09:54:07.252Z DRIVER « [Node 091] [REQ] [BridgeApplicationCommand]
                                  │ RSSI: -89 dBm
                                  └─[ConfigurationCCReport]
                                      parameter #: 15
                                      value size:  2
                                      value:       0
2023-12-18T09:54:07.253Z CNTRLR » [Node 091] querying parameter #256 value...
2023-12-18T09:54:07.266Z SERIAL » 0x011300a90001005b0570080100012500000000b4f3                        (21 bytes)
2023-12-18T09:54:07.267Z DRIVER » [Node 091] [REQ] [SendDataBridge]
                                  │ source node id:   1
                                  │ transmit options: 0x25
                                  │ callback id:      180
                                  └─[ConfigurationCCBulkGet]
                                      parameters: 256
2023-12-18T09:54:07.281Z SERIAL « [ACK]                                                                   (0x06)
2023-12-18T09:54:07.284Z SERIAL « 0x010401a90152                                                       (6 bytes)
2023-12-18T09:54:07.284Z SERIAL » [ACK]                                                                   (0x06)
2023-12-18T09:54:07.299Z DRIVER « [RES] [SendDataBridge]
                                    was sent: true
2023-12-18T09:54:07.312Z SERIAL « 0x011d00a9b400000100a67f7f7f7f01010300000000020100007f7f7f7f7f27    (31 bytes)
2023-12-18T09:54:07.313Z SERIAL » [ACK]                                                                   (0x06)
2023-12-18T09:54:07.315Z DRIVER « [REQ] [SendDataBridge]
                                    callback id:            180
                                    transmit status:        OK, took 10 ms
                                    routing attempts:       1
                                    protocol & route speed: Z-Wave, 40 kbit/s
                                    routing scheme:         LWR
                                    ACK RSSI:               -90 dBm
                                    ACK channel no.:        1
                                    TX channel no.:         1
2023-12-18T09:54:07.324Z SERIAL « 0x011100a8000001005b0322020000a6007f7f99                            (19 bytes)
2023-12-18T09:54:07.327Z DRIVER   Dropping message because it could not be deserialized: The command class Appli
                                  cation Status is not implemented (ZW0303)
2023-12-18T09:54:07.328Z SERIAL » [ACK]                                                                   (0x06)
2023-12-18T09:54:08.378Z CNTRLR   [Node 091] Timed out while waiting for a response from the node (ZW0201)
2023-12-15T12:34:13.312Z CNTRLR » [Node 091] querying parameter #256 value...
2023-12-15T12:34:13.371Z DRIVER Dropping message because it could not be deserialized: The command class Application Status is not implemented (ZW0303)
2023-12-15T12:34:14.413Z CNTRLR [Node 091] Timed out while waiting for a response from the node (ZW0201)
2023-12-15 13:34:14.427 ERROR APP: Unhandled Rejection, reason: TypeError: Cannot read properties of undefined (reading 'get')
TypeError: Cannot read properties of undefined (reading 'get')
at /opt/node_modules/@zwave-js/cc/src/cc/ConfigurationCC.ts:639:23
at Array.map (<anonymous>)
at Proxy.getBulk (/opt/node_modules/@zwave-js/cc/src/cc/ConfigurationCC.ts:638:18)
at Proxy.get (/opt/node_modules/@zwave-js/cc/src/cc/ConfigurationCC.ts:513:19)
at ConfigurationCC.refreshValues (/opt/node_modules/@zwave-js/cc/src/cc/ConfigurationCC.ts:1276:6)
at ConfigurationCC.interview (/opt/node_modules/@zwave-js/cc/src/cc/ConfigurationCC.ts:1191:3)
at interviewEndpoint (/opt/node_modules/zwave-js/src/lib/node/Node.ts:2159:5)
at ZWaveNode.interviewCCs (/opt/node_modules/zwave-js/src/lib/node/Node.ts:2688:19)
at ZWaveNode.interviewInternal (/opt/node_modules/zwave-js/src/lib/node/Node.ts:1818:9)
at Driver.interviewNodeInternal (/opt/node_modules/zwave-js/src/lib/driver/Driver.ts:1664:10)

Software versions

Driver (node-zwave-js): v12.3.0

Z-Wave JS UI: v9.3.2

Home Assistant Z-Wave Integration: WS Server

Home Assistant Z-Wave JS Addon: v3.0.2

ioBroker.zwave2 Adapter: Aeotec 700 Series v7.19.2

If you are using something non-standard, tell us here: …

Device information

Manufacturer: Heatit Model name: Z-Temp2 Node ID: 091 and 051

Checklist

  • I made sure to provide a driver log on level debug.

  • The log includes a re-interview of the problematic device (if applicable).

  • The log includes the problematic interaction with the device (if applicable).

  • I provided the node ID of the problematic device (if applicable).

Upload Logfile

zwavejs_current.log

</div>

About this issue

  • Original URL
  • State: closed
  • Created 6 months ago
  • Comments: 19 (7 by maintainers)

Most upvoted comments

Like, that’s not going to push me to buy from them.

Plus, winter is over, the thermostat won’t be as useful to me.

That’s correct. Like I stated here, the device responds with parameter 256 (0x0100) when asked for parameter 1 (0x0001).