No zwave_js_notification events even though everything is working

Is there a trick to getting zwave_js_notification events?

I’m trying to get lock/unlock data from zwave locks. I can see the events in the zwave js add-on log, but not a single zwave* event is ever fired in HA. Everything in my zwave network is functioning perfectly, including setting codes, unlocking, locking, and all other sensors.

I can watch * in developer tools for an hour while confirming the events in the add-on debug log, but ctrl-f for “zwave” comes up with 0 hits.

Does zwave_js + zwave_js server add-on provide this event type or is it only available in the other zwave integrations? I have multiple HA installations in different locations with the same software combo and they all exhibit this lack of notification events for anything zwave.

Is there somewhere that these events need to be enabled?

What do you see in the add-on log specifically? Not everything would be treated as a notification. Is it showing actual Notification events like “RF lock operation”?

Only for Z-Wave JS, hence the zwave_js event prefix. zwave and ozw integrations are deprecated anyways.

Is there somewhere that these events need to be enabled?

Nope. The one requirement is that the lock use the Notification CC to report notifications. These are naturally handled in HA as zwave_js_notification. Some locks use the old Alarm V1 notifications. Treating those as Notifications requires a special configuration setting to map alarm to notification. Many (most) locks are already configured this way, but if your lock is not, it would require a device config file update. If it’s not setup this way, you would have disabled alarm sensor entities instead. Knowing what events are being reported in the logs would clear this up as well.

Here’s an example of what I see in the integration log:

2021-11-30T09:51:48.584Z SERIAL » [ACK]                                                                   (0x06)
2021-11-30T09:51:48.588Z CNTRLR   [Node 019] [~] [Notification] alarmType: 16 => 16                 [Endpoint 0]
2021-11-30T09:51:48.591Z CNTRLR   [Node 019] [~] [Notification] alarmLevel: 3 => 2                  [Endpoint 0]
2021-11-30T09:51:48.594Z DRIVER « [Node 019] [REQ] [ApplicationCommand]
                                    │ sequenced: false
                                        V1 alarm type:  16
                                        V1 alarm level: 2
2021-11-30T09:51:52.118Z SERIAL « 0x0112000400080a7105000000ff06170000c700b6                          (20 bytes)
2021-11-30T09:51:52.123Z CNTRLR   [Node 008] [~] [Notification] notificationMode: "push" [Endpoint 0] [internal]
                                   => "push"

These locks (Schlage FE599) report the code slot used as the alarm level.
I captured this while listening to * events and nothing zwave shows up.
The alarm level entity of the device was initially disabled when it was added, but it is currently enabled and the alarm level reports correctly as a state change.

It seems like this would be one of the zwave_js_notification events, but perhaps I’m mistaken to what they should be. I have yet to see a zwave_* event despite all kinds of zwave devices.

Now that I’m a little more awake it appears you’ve nailed exactly whats happening in terms of the
notification. I’m assuming I’d need a different integration than the standard zwavejs->zwavejs server add-on to add a device config file.
For now my workaround will be to trigger off the state change of the alarm level entity of the lock.

If you want to use a custom device file, you’d need to use zwavejs2mqtt instead (not sure about addon), but you’d still use the Z-Wave JS integration.

You’ll need to submit an issue to node-zwave-js so the V1 alarm values are mapped to a new Notification event. If it’s fixed, a future update of Z-Wave JS will include the file.