zwave-js / node-zwave-js

Z-Wave driver written entirely in JavaScript/TypeScript
https://zwave-js.github.io/node-zwave-js/
MIT License
750 stars 600 forks source link

CT100 ZWave thermostats report extra values after reboot #6650

Closed ken-wolfe closed 5 months ago

ken-wolfe commented 9 months ago

Checklist

Deploy method

Home Assistant Add-on

Z-Wave JS UI version

9.8.1

ZwaveJS version

12.4.2

Describe the bug

Occasionally my thermostats (I have 2 of them, both CT100), report extra values (2 additional full thermostats, 1 additional air temp sensor). This seems to happen after rebooting my Home Assistant computer, restarting HA by itself does not seem to trigger the issue. Re-interviewing the node for each thermostat, causes these additional values to get removed.

The log files below are a copy and paste of the Node-JS UI "Debug" screen for node 30, 1 from before I reinterviewed the node and one from after. The after does not contain the extra values.

node30-after-interview.txt node30-before-interview.txt

Here is a full Driver log from Node-JS UI for node 5 and node 30 (my thermostats) which should show before I re-interviewed, the re-interview, a restart of HA, a reboot of the HA machine (which then causes the problem to repro), and a re-interview of the devices (which removes the problem until the next reboot of the machine).

zwavejs_2024-01-27(1).log

Let me know if there is anything more that you need from me. Now that I know how to reproduce the problem, I should be able to get additional logs very easily.

To Reproduce

Have Home Assistant Have ZWave-JS UI installed Re-interview one of the thermostat nodes, notice that extra values go away Reboot Home Assistant computer Notice that extra values have returned.

Expected behavior

No extra values for the thermostat nodes appear. There should be only 1 thermostat control per node.

Additional context

Sometimes the extra air temp sensor does not show up. Not sure why that is.

ken-wolfe commented 9 months ago

I think the problem actually happens when ZWave JS restarts. I just changed some of the logging options (to remove the node filtering that I had put in place) and the problem above reproduced again.

robertsLando commented 9 months ago

@AlCalzone Seems like the device occasionally reports something it should not, this reminds me to possibile connectivity issues?

@ken-wolfe Did you tried to use an usb extension cord? Check this: https://zwave-js.github.io/node-zwave-js/#/troubleshooting/nonsensical-values

ken-wolfe commented 9 months ago

@robertsLando I have not tried a USB extension. I don’t think I’m getting random results. It’s the same thing each time ZWave JS restarts which is then fixed when I re-interview the device. And it happens exactly the same on both of my CT100 thermostats. One of them is about 5 feet from the zwave stick, the other is probably 50 feet away. I started to look through the Zwave JS code over the weekend, but I’m not familiar with it. My first thought was to try to understand how the initial boot / device bring up works as compared to what happens during the re-interview. Like maybe there is some junk stored in the db that isn’t getting refreshed during the re-interview. However, I have no idea how this code actually works, so it might take a while to figure anything out.

ken-wolfe commented 9 months ago

I just reproed the problem by restarting the zwave js ui add on in home assistant. Nothing else is required. Refreshing the zwave js device in home assistant did not reproduce the problem.

robertsLando commented 9 months ago

OK let's see what @AlCalzone can tell us when checking logs

AlCalzone commented 9 months ago

We have quite an extensive set of compat flags to get rid of these additional endpoints, since the device does report them, although they are useless:

        // Remove all Thermostat CCs from endpoints 1 and 2, as well as the sensor on endpoint 1
        "commandClasses": {
            "remove": {
                "Basic": {
                    "endpoints": [1, 2]
                },
                "Thermostat Mode": {
                    "endpoints": [1, 2]
                },
                "Thermostat Setpoint": {
                    "endpoints": [1, 2]
                },
                "Multilevel Sensor": {
                    "endpoints": [1]
                }
            }
        }

The log does not contain such an instance, but I guess the device does report on those endpoints from time to time, and Z-Wave JS doesn't ignore those reports correctly.

ken-wolfe commented 9 months ago

@AlCalzone Is there something I should try? Sorry it’s not clear to me what to do next.

AlCalzone commented 9 months ago

No, you'll have to wait until I'm back from parental leave. I'll try to reproduce this in a test case, so I can fix it for good.

ken-wolfe commented 9 months ago

Sorry to have bothered you on parental leave. Enjoy the time with your child (or children). If there are any additional logs that would be helpful, I’m happy to gather them. Just let me know.

AlCalzone commented 9 months ago

It's fine. I check in here when I do have time to kill.

AlCalzone commented 6 months ago

This should be fixed since v12.5.4 - might need a re-interview though. If not, please let me know.

txwindsurfer commented 6 months ago

I am on Core Version 2024.4.3, OS 12.2 and continue to have this problem whenever a new version of Z-Wave-JS-UI is installed (perhaps when restarted). After re-interview, the extra entities are unavailable. If I remove the unavailable entities, they reappear with the next Z-Wave-JS-UI update/restart, and I must re-interview all the thermostats again (I have 5 CT101 and CT100). Perhaps I should not remove the unavailable extra entities.

Previously reported in #6184 and the fix in #6185 fixed the problem by a re-interview but extra entities still appear after an update/restart.

Nothing urgent, just a bother.

AlCalzone commented 6 months ago

Which version of Z-Wave JS UI are you using?

txwindsurfer commented 6 months ago

zwave-js-ui: 9.10.2 zwave-js: 12.5.2

AlCalzone commented 6 months ago

Like I said, the fix (https://github.com/zwave-js/node-zwave-js/pull/6760) is in version 12.5.4, so you don't have it yet.

ken-wolfe commented 6 months ago

I just updated to z-wave js 12.5.5 and z-wave js ui 9.11.1. After the upgrade completed, the duplicate items were present again. I also tried restarting Home Assistant, and the duplicate items were present. Would you like me to collect logs again? In between the restarts I re-interviewed and removed the zombie items. Also, the zombie items were not present before the upgrade (as I had done the re-interview dance several weeks ago after a different upgrade/restart).

AlCalzone commented 6 months ago

Ok then I need logs please.

ken-wolfe commented 6 months ago

Here are the logs.

I started with system running, and the extra items are deleted. I turned on "Debug" level logging and logged it to a file. The logs should contain the following actions: I restarted Home Assistant. The zombie items came back, I re-interviewed each device and deleted the zombie items after the re-interview. Let me know if you'd like a new bug or any additional logs or information.

zwavejs_2024-04-22.log

ken-wolfe commented 6 months ago

In case it matters, I delete the zombie items from the Home Assistant UI. If I should be removing them from elsewhere, let me know.

AlCalzone commented 6 months ago

You cannot really delete them, as HA just creates entities for what Z-Wave JS exposes. I need a bit more info I'm afraid.

  1. enable application logs in the settings if you haven't already
  2. go to the log tab, pop out the logs into a new window
  3. go to the control panel tab, click the menu in the bottom right corner -> advanced -> driver function.
  4. Paste the following code there, and replace the 2 in line 2 with the node ID of your node. Do not press RUN yet.

    const { logger } = this;
    const node = driver.controller.nodes.get(   2   ); // <-- REPLACE 2 WITH YOUR NODE ID
    
    for (const ep of node.getAllEndpoints()) {
        logger.info(`Endpoint ${ep.index}, CCs: ${JSON.stringify([...ep.getCCs()], null, 2)}`);
    }
    
    const valueIDs = node.getDefinedValueIDs();
    logger.info(`value IDs: ${JSON.stringify(valueIDs, null, 2)}`);
  5. In the log window, press CLEAR
  6. In the Driver function window, press RUN
  7. In the log window, press STOP, copy the entire log there and share it here.
ken-wolfe commented 6 months ago

I'm going to follow the directions you provided, but also want to make sure I'm doing the right thing.

enable application logs in the settings if you haven't already

I'm assuming this means turn on "Debug" logging in Z-Wave JS. So this is what I have done.

go to the log tab, pop out the logs into a new window

Again, I'm assuming that this is in Z-Wave JS

go to the control panel tab, click the menu in the bottom right corner -> advanced -> driver function.

Same assumption as above, in Z-Wave JS

I did it twice, one for each node in case there is something to be learned there. Please let me know if you need any additional things. I'm happy to help.

Here is the output for node 5:

2024-04-24 22:23:27.888 DEBUG SOCKET: Event ZWAVE_API emitted to gnmplGX5UvE6UmxxAAAR
2024-04-24 22:23:27.893 INFO Z-WAVE: Calling api driverFunction with args: [
  'const { logger } = this;\n' +
    'const node = driver.controller.nodes.get(   5   ); // <-- REPLACE 2 WITH YOUR NODE ID\n' +
    '\n' +
    'for (const ep of node.getAllEndpoints()) {\n' +
    '\tlogger.info(`Endpoint ${ep.index}, CCs: ${JSON.stringify([...ep.getCCs()], null, 2)}`);\n' +
    '}\n' +
    '\n' +
    'const valueIDs = node.getDefinedValueIDs();\n' +
    'logger.info(`value IDs: ${JSON.stringify(valueIDs, null, 2)}`);',
  [length]: 1
]
2024-04-24 22:23:27.896 INFO Z-WAVE: Endpoint 0, CCs: [
  [
    114,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    64,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 2
    }
  ],
  [
    67,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 2
    }
  ],
  [
    134,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    129,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    135,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    49,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 2
    }
  ],
  [
    66,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 2
    }
  ],
  [
    68,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    69,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    112,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    128,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    133,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    96,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 3
    }
  ]
]
2024-04-24 22:23:27.897 INFO Z-WAVE: Endpoint 1, CCs: [
  [
    133,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ],
  [
    64,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ],
  [
    67,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ],
  [
    49,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ]
]
2024-04-24 22:23:27.898 INFO Z-WAVE: Endpoint 2, CCs: [
  [
    49,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ],
  [
    133,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ],
  [
    64,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ],
  [
    67,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ]
]
2024-04-24 22:23:27.927 INFO Z-WAVE: value IDs: [
  {
    "commandClassName": "Multilevel Sensor",
    "commandClass": 49,
    "endpoint": 0,
    "property": "Air temperature",
    "propertyName": "Air temperature"
  },
  {
    "commandClassName": "Thermostat Mode",
    "commandClass": 64,
    "endpoint": 0,
    "property": "mode",
    "propertyName": "mode"
  },
  {
    "commandClassName": "Thermostat Mode",
    "commandClass": 64,
    "endpoint": 0,
    "property": "manufacturerData",
    "propertyName": "manufacturerData"
  },
  {
    "commandClassName": "Thermostat Operating State",
    "commandClass": 66,
    "endpoint": 0,
    "property": "state",
    "propertyName": "state"
  },
  {
    "commandClassName": "Thermostat Setpoint",
    "commandClass": 67,
    "endpoint": 0,
    "property": "setpoint",
    "propertyKey": 1,
    "propertyName": "setpoint",
    "propertyKeyName": "Heating"
  },
  {
    "commandClassName": "Thermostat Setpoint",
    "commandClass": 67,
    "endpoint": 0,
    "property": "setpoint",
    "propertyKey": 2,
    "propertyName": "setpoint",
    "propertyKeyName": "Cooling"
  },
  {
    "commandClassName": "Thermostat Fan Mode",
    "commandClass": 68,
    "endpoint": 0,
    "property": "mode",
    "propertyName": "mode"
  },
  {
    "commandClassName": "Thermostat Fan State",
    "commandClass": 69,
    "endpoint": 0,
    "property": "state",
    "propertyName": "state"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 1,
    "propertyName": "Temperature Reporting Threshold"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 2,
    "propertyKey": 4278190080,
    "propertyName": "HVAC Type"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 2,
    "propertyKey": 983040,
    "propertyName": "Number of Auxiliary or Heat Stages"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 2,
    "propertyKey": 15728640,
    "propertyName": "Auxiliary Heat Type"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 2,
    "propertyKey": 65280,
    "propertyName": "Number of Heat Pump Stages"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 2,
    "propertyKey": 255,
    "propertyName": "Number of Cool Stages"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 4,
    "propertyName": "Thermostat Power Type"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 5,
    "propertyName": "Humidity Reporting Threshold"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 6,
    "propertyName": "Auxiliary/Emergency Heating"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 7,
    "propertyName": "Thermostat Hysteresis"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 8,
    "propertyKey": 65280,
    "propertyName": "Heating Differential Temperature"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 8,
    "propertyKey": 255,
    "propertyName": "Cooling Differential Temperature"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 9,
    "propertyName": "Thermostat Recovery Mode"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 3,
    "propertyName": "Lock Setpoint Changes"
  },
  {
    "commandClassName": "Manufacturer Specific",
    "commandClass": 114,
    "endpoint": 0,
    "property": "manufacturerId",
    "propertyName": "manufacturerId"
  },
  {
    "commandClassName": "Manufacturer Specific",
    "commandClass": 114,
    "endpoint": 0,
    "property": "productType",
    "propertyName": "productType"
  },
  {
    "commandClassName": "Manufacturer Specific",
    "commandClass": 114,
    "endpoint": 0,
    "property": "productId",
    "propertyName": "productId"
  },
  {
    "commandClassName": "Battery",
    "commandClass": 128,
    "endpoint": 0,
    "property": "level",
    "propertyName": "level"
  },
  {
    "commandClassName": "Battery",
    "commandClass": 128,
    "endpoint": 0,
    "property": "isLow",
    "propertyName": "isLow"
  },
  {
    "commandClassName": "Version",
    "commandClass": 134,
    "endpoint": 0,
    "property": "libraryType",
    "propertyName": "libraryType"
  },
  {
    "commandClassName": "Version",
    "commandClass": 134,
    "endpoint": 0,
    "property": "protocolVersion",
    "propertyName": "protocolVersion"
  },
  {
    "commandClassName": "Version",
    "commandClass": 134,
    "endpoint": 0,
    "property": "firmwareVersions",
    "propertyName": "firmwareVersions"
  },
  {
    "commandClassName": "Indicator",
    "commandClass": 135,
    "endpoint": 0,
    "property": "value",
    "propertyName": "value"
  },
  {
    "commandClassName": "Thermostat Mode",
    "commandClass": 64,
    "endpoint": 1,
    "property": "mode",
    "propertyName": "mode"
  },
  {
    "commandClassName": "Thermostat Mode",
    "commandClass": 64,
    "endpoint": 1,
    "property": "manufacturerData",
    "propertyName": "manufacturerData"
  },
  {
    "commandClassName": "Multilevel Sensor",
    "commandClass": 49,
    "endpoint": 2,
    "property": "Humidity",
    "propertyName": "Humidity"
  },
  {
    "commandClassName": "Thermostat Mode",
    "commandClass": 64,
    "endpoint": 2,
    "property": "mode",
    "propertyName": "mode"
  },
  {
    "commandClassName": "Thermostat Mode",
    "commandClass": 64,
    "endpoint": 2,
    "property": "manufacturerData",
    "propertyName": "manufacturerData"
  }
]
2024-04-24 22:23:27.933 INFO Z-WAVE: Success zwave api call driverFunction undefined
2024-04-25T05:23:36.724Z SERIAL « 0x0110000400180a3202217400005e750000b7                              (18 bytes)
2024-04-25T05:23:36.726Z SERIAL » [ACK]

I ran it again for the other node (30) just in case there is something different there:

2024-04-24 22:26:43.367 DEBUG SOCKET: Event ZWAVE_API emitted to gnmplGX5UvE6UmxxAAAR
2024-04-24 22:26:43.369 INFO Z-WAVE: Calling api driverFunction with args: [
  'const { logger } = this;\n' +
    'const node = driver.controller.nodes.get(   30   ); // <-- REPLACE 2 WITH YOUR NODE ID\n' +
    '\n' +
    'for (const ep of node.getAllEndpoints()) {\n' +
    '\tlogger.info(`Endpoint ${ep.index}, CCs: ${JSON.stringify([...ep.getCCs()], null, 2)}`);\n' +
    '}\n' +
    '\n' +
    'const valueIDs = node.getDefinedValueIDs();\n' +
    'logger.info(`value IDs: ${JSON.stringify(valueIDs, null, 2)}`);',
  [length]: 1
]
2024-04-24 22:26:43.370 INFO Z-WAVE: Endpoint 0, CCs: [
  [
    114,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    64,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 2
    }
  ],
  [
    67,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 2
    }
  ],
  [
    134,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    129,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    135,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    49,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 2
    }
  ],
  [
    66,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 2
    }
  ],
  [
    68,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    69,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    112,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    128,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    133,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 1
    }
  ],
  [
    96,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 3
    }
  ]
]
2024-04-24 22:26:43.371 INFO Z-WAVE: Endpoint 1, CCs: [
  [
    133,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ],
  [
    64,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ],
  [
    67,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ],
  [
    49,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ]
]
2024-04-24 22:26:43.371 INFO Z-WAVE: Endpoint 2, CCs: [
  [
    49,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ],
  [
    133,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ],
  [
    64,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ],
  [
    67,
    {
      "isSupported": true,
      "isControlled": false,
      "secure": false,
      "version": 0
    }
  ]
]
2024-04-24 22:26:43.381 INFO Z-WAVE: value IDs: [
  {
    "commandClassName": "Multilevel Sensor",
    "commandClass": 49,
    "endpoint": 0,
    "property": "Air temperature",
    "propertyName": "Air temperature"
  },
  {
    "commandClassName": "Thermostat Mode",
    "commandClass": 64,
    "endpoint": 0,
    "property": "mode",
    "propertyName": "mode"
  },
  {
    "commandClassName": "Thermostat Mode",
    "commandClass": 64,
    "endpoint": 0,
    "property": "manufacturerData",
    "propertyName": "manufacturerData"
  },
  {
    "commandClassName": "Thermostat Operating State",
    "commandClass": 66,
    "endpoint": 0,
    "property": "state",
    "propertyName": "state"
  },
  {
    "commandClassName": "Thermostat Setpoint",
    "commandClass": 67,
    "endpoint": 0,
    "property": "setpoint",
    "propertyKey": 1,
    "propertyName": "setpoint",
    "propertyKeyName": "Heating"
  },
  {
    "commandClassName": "Thermostat Setpoint",
    "commandClass": 67,
    "endpoint": 0,
    "property": "setpoint",
    "propertyKey": 2,
    "propertyName": "setpoint",
    "propertyKeyName": "Cooling"
  },
  {
    "commandClassName": "Thermostat Fan Mode",
    "commandClass": 68,
    "endpoint": 0,
    "property": "mode",
    "propertyName": "mode"
  },
  {
    "commandClassName": "Thermostat Fan State",
    "commandClass": 69,
    "endpoint": 0,
    "property": "state",
    "propertyName": "state"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 1,
    "propertyName": "Temperature Reporting Threshold"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 2,
    "propertyKey": 4278190080,
    "propertyName": "HVAC Type"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 2,
    "propertyKey": 983040,
    "propertyName": "Number of Auxiliary or Heat Stages"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 2,
    "propertyKey": 15728640,
    "propertyName": "Auxiliary Heat Type"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 2,
    "propertyKey": 65280,
    "propertyName": "Number of Heat Pump Stages"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 2,
    "propertyKey": 255,
    "propertyName": "Number of Cool Stages"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 4,
    "propertyName": "Thermostat Power Type"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 5,
    "propertyName": "Humidity Reporting Threshold"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 6,
    "propertyName": "Auxiliary/Emergency Heating"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 7,
    "propertyName": "Thermostat Hysteresis"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 8,
    "propertyKey": 65280,
    "propertyName": "Heating Differential Temperature"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 8,
    "propertyKey": 255,
    "propertyName": "Cooling Differential Temperature"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 9,
    "propertyName": "Thermostat Recovery Mode"
  },
  {
    "commandClassName": "Configuration",
    "commandClass": 112,
    "endpoint": 0,
    "property": 3,
    "propertyName": "Lock Setpoint Changes"
  },
  {
    "commandClassName": "Manufacturer Specific",
    "commandClass": 114,
    "endpoint": 0,
    "property": "manufacturerId",
    "propertyName": "manufacturerId"
  },
  {
    "commandClassName": "Manufacturer Specific",
    "commandClass": 114,
    "endpoint": 0,
    "property": "productType",
    "propertyName": "productType"
  },
  {
    "commandClassName": "Manufacturer Specific",
    "commandClass": 114,
    "endpoint": 0,
    "property": "productId",
    "propertyName": "productId"
  },
  {
    "commandClassName": "Battery",
    "commandClass": 128,
    "endpoint": 0,
    "property": "level",
    "propertyName": "level"
  },
  {
    "commandClassName": "Battery",
    "commandClass": 128,
    "endpoint": 0,
    "property": "isLow",
    "propertyName": "isLow"
  },
  {
    "commandClassName": "Version",
    "commandClass": 134,
    "endpoint": 0,
    "property": "libraryType",
    "propertyName": "libraryType"
  },
  {
    "commandClassName": "Version",
    "commandClass": 134,
    "endpoint": 0,
    "property": "protocolVersion",
    "propertyName": "protocolVersion"
  },
  {
    "commandClassName": "Version",
    "commandClass": 134,
    "endpoint": 0,
    "property": "firmwareVersions",
    "propertyName": "firmwareVersions"
  },
  {
    "commandClassName": "Indicator",
    "commandClass": 135,
    "endpoint": 0,
    "property": "value",
    "propertyName": "value"
  },
  {
    "commandClassName": "Thermostat Mode",
    "commandClass": 64,
    "endpoint": 1,
    "property": "mode",
    "propertyName": "mode"
  },
  {
    "commandClassName": "Thermostat Mode",
    "commandClass": 64,
    "endpoint": 1,
    "property": "manufacturerData",
    "propertyName": "manufacturerData"
  },
  {
    "commandClassName": "Multilevel Sensor",
    "commandClass": 49,
    "endpoint": 2,
    "property": "Humidity",
    "propertyName": "Humidity"
  },
  {
    "commandClassName": "Thermostat Mode",
    "commandClass": 64,
    "endpoint": 2,
    "property": "mode",
    "propertyName": "mode"
  },
  {
    "commandClassName": "Thermostat Mode",
    "commandClass": 64,
    "endpoint": 2,
    "property": "manufacturerData",
    "propertyName": "manufacturerData"
  }
]
2024-04-24 22:26:43.383 INFO Z-WAVE: Success zwave api call driverFunction undefined
2024-04-24 22:26:47.667 INFO APP: GET /health/zwave 301 0.742 ms - 191
ken-wolfe commented 6 months ago

BTW, running the script in the driver reproduced the issue.

ken-wolfe commented 6 months ago

@AlCalzone do you need any additional information from me?

AlCalzone commented 6 months ago

Haven't been able to check yet, since I was on a trip last week.

ken-wolfe commented 5 months ago

Just wondering if there are any updates here or if I can help in any way. Thanks!

AlCalzone commented 5 months ago

Sorry, I have to admit I forgot about this. I still don't fully understand what's happening - I might have to simulate the device and try to figure it out that way.

Could you repeat what you did in https://github.com/zwave-js/node-zwave-js/issues/6650#issuecomment-2076402400, but immediately after re-interviewing the device? One of the two is enough.

ken-wolfe commented 5 months ago

So I've got some good news. I was about to repro the issue (which had repro'd just a few days ago) when I noticed a new update to zwave-js for Home Assistant. I took the update (which would normally cause the issue), but it did not. So, I rebooted the entire system, which would also normally cause the issue to repro, and it did not. So, perhaps the last update for zwave-js did not contain your fix and the one I took today did. I think this can be closed now.

AlCalzone commented 5 months ago

Hmm according to your logs you should have had the fixed version already. But feel free to reopen this when it happens again.