Kwikset lock -- only *some* sensor values are updating some of the time

I have a Kwikset 914 Z-Wave keypad, and I’m running Z-Wave JS. I setup an automation to check one of the sensors created by this device (binary_sensor.mudroom_door_lock_power_management_replace_battery_soon) and send me a push alert if it is activated. This worked fine, and it alerted me when the battery level dropped low enough that I needed to replace them. (So, this sensor changed from “off” to “on” as expected.)

So I replaced the batteries…4 weeks ago. And this sensor is still set to “on”. The battery level sensor (sensor.mudroom_door_lock_battery_level) reports 100, so it changed after the battery swap. But after weeks, including at least one Home Assistant restart for an update, the alarm sensor is stuck in “on”.

Digging around a bit at the many other sensors this device created, and some of them are also in states that don’t make sense. For example, the first sensor in this screenshot (jammed) has been “on” forever, apparently. Or at least for a month, which is a far back as my state history goes.

I’ve noticed similar behavior with the actual locked/unlock state of the deadbolt – it’s supposed to notify me when it is unlocked and I’m gone (usually because my in-laws come by the house), but I know for a fact it only works some of the time.

So all in all, the thing seems to be very erratic in what it updates and what it doesn’t. Some values have been stuck in the wrong state for a month or more, others update…sometimes.

Any ideas? The house footprint isn’t huge, so in terms of range it’s one floor away and probably 35 feet from the Z-Wave stick on my HA server. Many, many z-wave light switches in between for meshing (if locks are even allowed to mesh? Or do they have to be direct to controller? I don’t know).

Additionally, I’ve noticed the locked status of the primary entity is no longer updating – it’s showed as unlocked for days, even though that’s not the case. I can actuate the lock from Home Assistant – as in, I just locked the door using HA on my phone – but the entity status still shows “Unlocked”!

However, in Z-Wave JS control panel, I see different values. I’m starting to think the problem isn’t the door lock not reporting updates, but rather an issue in Z-Wave JS or Home Assistant.

HA:

Z-Wave JS:
image

I have the same issues with not being able to reset various sensors for my Schlage locks. The only way I’ve found to reset them sensors is to do a factory reset on the lock (Schlage tech support has verified this). It makes the sensors basically pointless because they only work once (without resetting the lock and readding it to the zwave network).

As for your status updates, I think it might have something to do with the zwave update for S2 security. My locks status also stopped updating after that zwave js update. I ended up removing the nodes from the zwave config and readding them (with S2 security). Everything is working fine now.

I would try removing the locks from your zwave network, factory resetting them, then adding them back in to zwave. Hopefully that will resolve your problem.

The sensors will only change if the device sends an “idle” notification. It would either be an issue with the device never sending the idle notification, or the idle notification was missed (e.g. the z-wave software was offline). In some specific cases these sensors would be auto-idled after 5 mins, but that depends on the device. It is a known issue that some devices behave this way. https://github.com/zwave-js/node-zwave-js/issues/1543

The boltStatus property is not used by HA. The state of the lock would be derived from the 26-98-0-currentMode value ID ("Current lock mode"). A value of Secured (or 255) is the locked state, any other value is the unlocked state.

These locks do not (last I checked) support S2, only the 6xx series Kwikset locks support S2.

I would still try removing them from your zwave network and re-adding them to eliminate any issues there as being the problem before you pull your hair out trying to figure it out. Reboot the server in between removing them and adding them too.