-
-
Notifications
You must be signed in to change notification settings - Fork 31.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix locking/unlocking transition state in Matter lock platform #121099
Conversation
Hey there @home-assistant/matter, mind taking a look at this pull request as it has been labeled with an integration ( Code owner commandsCode owners of
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @marcelveldt 👍
@@ -114,6 +120,9 @@ async def async_unlock(self, **kwargs: Any) -> None: | |||
|
|||
async def async_open(self, **kwargs: Any) -> None: | |||
"""Open the door latch.""" | |||
# optimistically signal unlocking to state machine | |||
self._attr_is_unlocking = True |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we use _attr_is_opening
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we have that?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
core/homeassistant/components/lock/__init__.py
Lines 213 to 216 in c3830a5
@cached_property | |
def is_opening(self) -> bool | None: | |
"""Return true if the lock is opening.""" | |
return self._attr_is_opening |
core/homeassistant/components/lock/__init__.py
Lines 272 to 279 in c3830a5
@final | |
@property | |
def state(self) -> str | None: | |
"""Return the state.""" | |
if self.is_jammed: | |
return STATE_JAMMED | |
if self.is_opening: | |
return STATE_OPENING |
https://developers.home-assistant.io/docs/core/entity/lock#properties
Proposed change
There was an incorrect assumption in the implementation of the Matter lock platform that the state 'NotFullyLocked' was to indicate the lock is transitioning to the next state but that is not true.
The specification says:
The Not Fully Locked value is used by a lock to indicate that the state of the lock is somewhere between Locked and Unlocked so it is only partially secured. For example, a deadbolt could be partially extended and not in a dead latched state.
In fact a lock may use this state (value 0) to indicate the lock is unlocked, as reported for at least SwitchBot in #120694 so the whole code was wrong. Fixed the code to treat NotFullyLocked as unlocked and use optimistic state for locking/unlocking instead (reset as soon as a state change comes in).
Type of change
Additional information
Checklist
ruff format homeassistant tests
)If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest
.requirements_all.txt
.Updated by running
python3 -m script.gen_requirements_all
..coveragerc
.To help with the load of incoming pull requests: