Run homekit service calls in async since the server is now async (#45859)

* Simplify homekit runs and service calls

Now that the homekit server is async, call_service
and run are running in the Home Assistant event loop

* remove comment

* remove another comment
This commit is contained in:
J. Nick Koston 2021-02-19 21:34:52 -10:00 committed by GitHub
parent 41332493b5
commit b775a0d796
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
23 changed files with 157 additions and 167 deletions

View file

@ -300,17 +300,7 @@ class HomeAccessory(Accessory):
return state is not None and state.state != STATE_UNAVAILABLE
async def run(self):
"""Handle accessory driver started event.
Run inside the HAP-python event loop.
"""
self.hass.add_job(self.run_handler)
async def run_handler(self):
"""Handle accessory driver started event.
Run inside the Home Assistant event loop.
"""
"""Handle accessory driver started event."""
state = self.hass.states.get(self.entity_id)
self.async_update_state_callback(state)
self._subscriptions.append(
@ -441,15 +431,9 @@ class HomeAccessory(Accessory):
"""
raise NotImplementedError()
def call_service(self, domain, service, service_data, value=None):
@ha_callback
def async_call_service(self, domain, service, service_data, value=None):
"""Fire event and call service for changes from HomeKit."""
self.hass.add_job(self.async_call_service, domain, service, service_data, value)
async def async_call_service(self, domain, service, service_data, value=None):
"""Fire event and call service for changes from HomeKit.
This method must be run in the event loop.
"""
event_data = {
ATTR_ENTITY_ID: self.entity_id,
ATTR_DISPLAY_NAME: self.display_name,
@ -459,8 +443,10 @@ class HomeAccessory(Accessory):
context = Context()
self.hass.bus.async_fire(EVENT_HOMEKIT_CHANGED, event_data, context=context)
await self.hass.services.async_call(
domain, service, service_data, context=context
self.hass.async_create_task(
self.hass.services.async_call(
domain, service, service_data, context=context
)
)
@ha_callback