ZW500D Dimmers no longer showing state when locally toggled

Not sure which update this started with, but it seems that recently all of my ZW500D dimmers have stopped updating their state in HA when they are turned on or off locally. They show the state if turned on or off via HA. I know this used to work. Hadn’t really been paying too much attention, so this may have been going on for a month or more (the 2023.6 update seems like a possible suspect, as it is implied the state reporting was tweaked at that time).

I’m using Z-Wave JS UI and the only clue is I get a message like this when the light changes state locally:

2023-08-02T21:14:28.116Z CNTRLR « [Node 032] Received updated node info

Doesn’t seem to be happening with any other (i.e., newer) devices. Recognize that one solution is to replace these 11 devices with something manufactured in the last decade, but rather not spend the time and cash (not to mention landfill!).

Any suggestions on who to contact (i.e., Z-Wave JS UI vs. HA vs.)? Not even sure where to start diagnosing it. Thanks for any insight!

Post the full log context, not just the single line.

The Device diagnostic file would also be helpful to look at.

Not sure how to post such large files here…investigating.

Interestingly, if I try to grab Zwave-JS-UI logs via files, even with level set to “Silly”, it does not show the “Received updated node info” line… that only seems to show up in the UI, and it shows up every time I click the switch on or off. I’m concentrating on node 32, which is one of the ZW500D’s, and if I grep on only “Node 032”, this is the sort of thing I get in the logs:

2023-08-02 16:03:32.373 DEBUG Z-WAVE: [Node 032] Binding to node events
2023-08-02 16:03:32.373 DEBUG Z-WAVE: [Node 032] Has been added to nodes array
2023-08-02 16:03:37.705 INFO Z-WAVE: [Node 032] Is alive
2023-08-02 16:03:37.713 INFO Z-WAVE: [Node 032] Value added 32-38-0-currentValue => 0
2023-08-02 16:03:37.714 INFO Z-WAVE: [Node 032] Value added 32-38-0-targetValue => 0
2023-08-02 16:03:37.714 INFO Z-WAVE: [Node 032] Value added 32-38-0-Up => undefined
2023-08-02 16:03:37.715 INFO Z-WAVE: [Node 032] Value added 32-38-0-Down => undefined
2023-08-02 16:03:37.715 INFO Z-WAVE: [Node 032] Value added 32-38-0-duration => NaNs
2023-08-02 16:03:37.716 INFO Z-WAVE: [Node 032] Value added 32-38-0-restorePrevious => undefined
2023-08-02 16:03:37.716 INFO Z-WAVE: [Node 032] Value added 32-112-0-1 => 0
2023-08-02 16:03:37.717 INFO Z-WAVE: [Node 032] Value added 32-112-0-2 => 0
2023-08-02 16:03:37.717 INFO Z-WAVE: [Node 032] Value added 32-114-0-manufacturerId => 282
2023-08-02 16:03:37.718 INFO Z-WAVE: [Node 032] Value added 32-114-0-productType => 258
2023-08-02 16:03:37.718 INFO Z-WAVE: [Node 032] Value added 32-114-0-productId => 513
2023-08-02 16:03:37.719 INFO Z-WAVE: [Node 032] Value added 32-134-0-libraryType => 6
2023-08-02 16:03:37.719 INFO Z-WAVE: [Node 032] Value added 32-134-0-protocolVersion => 3.42
2023-08-02 16:03:37.720 INFO Z-WAVE: [Node 032] Value added 32-134-0-firmwareVersions => 1.4
2023-08-02 16:03:37.721 INFO Z-WAVE: [Node 032] Ready: Wenzhou MTLC Electric Appliances Co., Ltd. - ZW500D (Dimmer)

…and that’s it. Nothing about the Received updated node info line when I press the button.

Silly has too much noise, use Debug, and in most cases, including this, you want the driver debug logs. https://zwave-js.github.io/zwave-js-ui/#/troubleshooting/generating-logs?id=driver-logs. The last set you posted are ZUI application logs which are less useful.

Not sure if there’s a line limit here in Discourse, but you can always upload the diagnostic file to one of the various pastebins.

You might also try a re-interview and see if that corrects any of the behavior.

OK, I put the log at https://test.thekrib.com/zwavejs_current.log – relevant lines for node 32 are:

2023-08-02T23:40:46.222Z CNTRLR [Node 032] Embedded device config loaded
2023-08-02T23:40:46.934Z CNTRLR » [Node 032] pinging the node…
2023-08-02T23:40:52.006Z DRIVER » [Node 032] [REQ] [SendDataBridge]
2023-08-02T23:40:52.248Z CNTRLR [Node 032] The node is alive.
2023-08-02T23:40:52.265Z CNTRLR [Node 032] The node is ready to be used
2023-08-02T23:40:52.270Z CNTRLR « [Node 032] ping successful
2023-08-02T23:41:25.105Z DRIVER « [Node 032] [REQ] [ApplicationUpdateRequest]
2023-08-02T23:41:25.105Z CNTRLR « [Node 032] Received updated node info

That last two lines are likely getting logged when I turn the switch on locally.

As for re-interview, no real change, though I do notice it picked up the actual state of the lamp (on) at the conclusion of the re-interview. From my newbie perspective, it’s like ZWJS needs to poll the state of the device when it gets one of those “Received updated node info” and it’s not doing it.

The driver will only refresh the actuator values of a device in response to ApplicationUpdateRequest reports if it meets certain criteria, which are:

  1. The node interview is complete (node ready)
  2. The Z-Wave Plus Info command class is not supported (i.e. Z-Wave classic)
  3. There is no node associated for the lifeline group

Here’s an example of this kind of device:

15:19:19.444 DRIVER « [Node 021] [REQ] [ApplicationUpdateRequest]
                        payload: 0x0015080411012627708672
15:19:19.445 CNTRLR « [Node 021] Received updated node info
15:19:19.445 CNTRLR   [Node 021] Node does not send unsolicited updates; refreshing actuator and sen
                      sor values...
15:19:19.448 CNTRLR » [Node 021] requesting current switch state...

A log of the re-interview might explain any of these. However, looking at the device config of this device, Group 1 is defined as the lifeline group. So it should be defined, which means the device is expected to report status updates and no refresh is needed (fails criteria 3). I’d perform the re-interview and confirm that the group associations look as expected (controller assigned to group 1).

If that fails to change anything, and you used to see status updates, you can submit an issue at node-zwave-js. If the device is not reporting any state updates, and Z-Wave JS doesn’t request them, there’s nothing HA can do about it. As a last resort, you can poll it, but that sounds like it shouldn’t be needed.

Controller is assigned to group 1. Looks appropriate. Heading off to node-zwave-js github next. Thanks for the pointers!