From d9f059fcaa0f30d3e32671318e9f5166853b6fa2 Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Fri, 2 Jun 2023 06:12:32 -0400 Subject: [PATCH] Improve logic for zwave_js.lock.is_locked attr (#93947) --- homeassistant/components/zwave_js/lock.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/zwave_js/lock.py b/homeassistant/components/zwave_js/lock.py index ff4cb84b47c..5457916a1e1 100644 --- a/homeassistant/components/zwave_js/lock.py +++ b/homeassistant/components/zwave_js/lock.py @@ -99,14 +99,17 @@ class ZWaveLock(ZWaveBaseEntity, LockEntity): @property def is_locked(self) -> bool | None: """Return true if the lock is locked.""" - if self.info.primary_value.value is None: + value = self.info.primary_value + if value.value is None or ( + value.command_class == CommandClass.DOOR_LOCK + and value.value == DoorLockMode.UNKNOWN + ): # guard missing value return None - return int( - LOCK_CMD_CLASS_TO_LOCKED_STATE_MAP[ - CommandClass(self.info.primary_value.command_class) - ] - ) == int(self.info.primary_value.value) + return ( + LOCK_CMD_CLASS_TO_LOCKED_STATE_MAP[CommandClass(value.command_class)] + == self.info.primary_value.value + ) async def _set_lock_state(self, target_state: str, **kwargs: Any) -> None: """Set the lock state."""