-
-
Notifications
You must be signed in to change notification settings - Fork 29k
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 state for Matter Locks (including optional door sensor) #121665
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 👍
test is broken - I'll do a follow up |
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.
Why did we merge with failing tests?
self.async_write_ha_state() | ||
# the lock should acknowledge the command with an attribute update | ||
# but bad things may happen, so guard against it with a timer. | ||
self._optimistic_timer = self.hass.loop.call_later( |
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.
We have the event helper async_call_later
.
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.
what's the benefit of 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.
It's an abstraction over the low level event loop API. Generally we want to use our helpers when we can.
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.
I have a follow-up PR open, I can use the helper right away
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.
Tried implementing it with the async_call_later helper but didn't like it. I needed more (and ugly) code to use it with a regular callback instead of coroutine. I think there's something wrong with the typing of that helper as it does seem to accept a callback but the type hint simply doesn't allow it.
Anyways, me and @edenhaus decided to leave it as-is for now and look at async_call_later another day. Something flaky there
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.
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.
The callback should accept a single datetime parameter.
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.
I just want to mimic the behavior of loop.call_later --> call a callback method after X period of time.
It does work with that helper but mypy chokes
Apparently it showed as green for @edenhaus |
Proposed change
After some back-and-forth with Nuki (the smart lock manufacturer) we came to the conclusion that a few assumption of translating the door lock state were wrong. This PR corrects that:
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
.To help with the load of incoming pull requests: