Closed ken-wolfe closed 5 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.
@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
@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.
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.
OK let's see what @AlCalzone can tell us when checking logs
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.
@AlCalzone Is there something I should try? Sorry it’s not clear to me what to do next.
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.
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.
It's fine. I check in here when I do have time to kill.
This should be fixed since v12.5.4 - might need a re-interview though. If not, please let me know.
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.
Which version of Z-Wave JS UI are you using?
zwave-js-ui: 9.10.2 zwave-js: 12.5.2
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.
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).
Ok then I need logs please.
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.
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.
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.
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)}`);
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
BTW, running the script in the driver reproduced the issue.
@AlCalzone do you need any additional information from me?
Haven't been able to check yet, since I was on a trip last week.
Just wondering if there are any updates here or if I can help in any way. Thanks!
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.
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.
Hmm according to your logs you should have had the fixed version already. But feel free to reopen this when it happens again.
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.