#ZWave delay when going from Physical Device -> HA

1 messages · Page 1 of 1 (latest)

raw folio
#

Good Afternoon!

Recently migrated to HA from SmartThings. On SmartThings ZWave switch state change (on/off) is seen almost instantly, but since migrating over to HA with ZWave JS UI w/ZWA-2 device always lags by a second or more.

The switches are GE Enbrighten ZWave switches.

Interestingly, this is only when the action is initiated from the device. When I trigger the device from HA it Instantly responds.

In an effort to be thorough I have tested the following:

  • Ensured nodes were healthy and joined at highest bitrates and directly to controller
  • Rebuilt Routes & Reinterviewed nodes
  • Upgraded & Downgraded firmware on Switch
  • Unplugged SmartThings Hub to eliminate any possible ZWave frequency interference
  • Added device with and without S2 Security to see if that was introducing the delays
  • Reviewed the debug log for noisy devices or errors, none found. Mostly just normal health check notices every so often
  • Cleared my ZWave config and started from scratch with one single device included to test and see if there was some device causing an issue
  • Moved device back to SmartThings and it responds nearly instantly.

When reviewing the debug logs I see the device "Node Info (NIF) Received" almost instantly but then it takes over 1 second and most often over 2 seconds to get the 'Value Update". It's very strange and just confusing how there could be such a major difference between SmartThings and HA. Most of the blogs etc.. that I have read all talk about how much faster HA should be.

SHRUG ok well, that's a good start I think. Would appreciate anyone who could help me work through this conundrum. 😄

heady whale
#

Care to share that log? 😇

raw folio
raw folio
#
2026-03-12 14:09:26.578 CNTRLR « [Node 002] Received updated node info
2026-03-12 14:09:26.581 INFO Z-WAVE: [Node 002] Node info (NIF) received
2026-03-12 14:09:28.567 INFO Z-WAVE: [Node 002] Value updated: 37-0-currentValue false => true
2026-03-12 14:09:28.626 INFO Z-WAVE: [Node 002] Value notification: 91-0-scene-001 0
2026-03-12 14:09:28.628 CNTRLR « [Node 002] received CentralScene notification {
"nodeId": 2,
"ccId": "Central Scene",
"ccCommand": "0x03"
}
2026-03-12 14:09:33.536 CNTRLR « [Node 002] Received updated node info
2026-03-12 14:09:33.539 INFO Z-WAVE: [Node 002] Node info (NIF) received
2026-03-12 14:09:35.525 INFO Z-WAVE: [Node 002] Value updated: 37-0-currentValue true => false
2026-03-12 14:09:35.587 INFO Z-WAVE: [Node 002] Value notification: 91-0-scene-002 0
2026-03-12 14:09:35.590 CNTRLR « [Node 002] received CentralScene notification {
"nodeId": 2,
"ccId": "Central Scene",
"ccCommand": "0x03"
}
2026-03-12 14:09:39.271 CNTRLR « [Node 002] Received updated node info
2026-03-12 14:09:39.274 INFO Z-WAVE: [Node 002] Node info (NIF) received
2026-03-12 14:09:41.259 INFO Z-WAVE: [Node 002] Value updated: 37-0-currentValue false => true
2026-03-12 14:09:41.319 INFO Z-WAVE: [Node 002] Value notification: 91-0-scene-001 0
2026-03-12 14:09:41.322 CNTRLR « [Node 002] received CentralScene notification {
"nodeId": 2,
"ccId": "Central Scene",
"ccCommand": "0x03"
}
2026-03-12 14:09:45.216 CNTRLR « [Node 002] Received updated node info
2026-03-12 14:09:45.219 INFO Z-WAVE: [Node 002] Node info (NIF) received
2026-03-12 14:09:46.092 INFO APP: ::ffff:127.0.0.1 GET /health/zwave 301 162 - 1.105 ms
2026-03-12 14:09:47.204 INFO Z-WAVE: [Node 002] Value updated: 37-0-currentValue true => false
2026-03-12 14:09:47.265 INFO Z-WAVE: [Node 002] Value notification: 91-0-scene-002 0
2026-03-12 14:09:47.267 CNTRLR « [Node 002] received CentralScene notification {
"nodeId": 2,
"ccId": "Central Scene",
"ccCommand": "0x03"
}
#

^ Here is an example from just a bit ago of me flipping the switch 4 times. You can see that there is a ~2 second delay between the NIF and the Value Update info.

#

This is currently the only device on the ZWave network while i troubleshoot the issue

heady whale
#

Can you use this to capture the logs?

#

Not sure which addon/app you're using. If it's the official Z-Wave JS app, you can get there using the web UI, either from the sidebar or that button:

raw folio
raw folio
#

@heady whale Here is the debug log that I took while toggling the switch. Just to quicky recap experience. If I am watching the switch in the UI there is a ~2+ second delay from when I toggle the switch to when it is reflected in HA. This is validated by the UI Logs that you will see.

However, when I add the same device back to SmartThings the response is nearly instantaneous. This causes my lights that I have grouped in the room to be quite delayed from the point I flip the switch to the others turning on. I have narrowed down the behavior to the communication between the switches (this singular switch is just a sample, all of the others act the same) and HA. When I trigger an action from HA it occurs nearly instantly on the switch. 🤷‍♂️ SO weird! lol.

I really hope you look at the logs and see that I have made some stupid mistake so that it's easy to fix 😂

Thanks in advance!

raw folio
#

Sadly, there are effectively no audio controls when screen recording so apologies for all the background noise. In each video you can hear the click of the switch milliseconds before the relay toggling then the response in both HA and ST.

As you can see there is a noticeable difference that in turn causes very noticeable delays in Automations etc...

heady whale
#

Ok this looks to be an older device, which behaves a bit odd.
It first sends a node information frame (NIF), which was used wayyyy back in the day to get a round a patent for instant reporting. This NIF essentially tells the hub "hey, something changed, but I won't tell you what. figure it out".

Then it waits 2 whole seconds and sends the actual state update anyways. Z-Wave JS knows that the device is capable of sending these updates and thus does not poll the device's status when it receives the NIF. SmartThings probably does.

#

You should be able to replicate what SmartThings does using the following trigger in an automation (use the actual entity ID of your switch):

# Fires whenever the `node info received` event is fired
triggers:
  - trigger: zwave_js.event
    entity_id:
      - switch.kitchen_light
    event_source: node
    event: "node info received"

and using the zwave_js.refresh_value action to refresh that entity's value immediately:
https://www.home-assistant.io/integrations/zwave_js#action-refresh-value

raw folio