mirror of
https://github.com/home-assistant/core.git
synced 2025-11-14 21:40:16 +00:00
Make homekit_controller a local push integration (#32213)
This commit is contained in:
@@ -108,6 +108,10 @@ class HKDevice:
|
||||
self._polling_lock = asyncio.Lock()
|
||||
self._polling_lock_warned = False
|
||||
|
||||
self.watchable_characteristics = []
|
||||
|
||||
self.pairing.dispatcher_connect(self.process_new_events)
|
||||
|
||||
def add_pollable_characteristics(self, characteristics):
|
||||
"""Add (aid, iid) pairs that we need to poll."""
|
||||
self.pollable_characteristics.extend(characteristics)
|
||||
@@ -118,6 +122,17 @@ class HKDevice:
|
||||
char for char in self.pollable_characteristics if char[0] != accessory_id
|
||||
]
|
||||
|
||||
def add_watchable_characteristics(self, characteristics):
|
||||
"""Add (aid, iid) pairs that we need to poll."""
|
||||
self.watchable_characteristics.extend(characteristics)
|
||||
self.hass.add_job(self.pairing.subscribe(characteristics))
|
||||
|
||||
def remove_watchable_characteristics(self, accessory_id):
|
||||
"""Remove all pollable characteristics by accessory id."""
|
||||
self.watchable_characteristics = [
|
||||
char for char in self.watchable_characteristics if char[0] != accessory_id
|
||||
]
|
||||
|
||||
@callback
|
||||
def async_set_unavailable(self):
|
||||
"""Mark state of all entities on this connection as unavailable."""
|
||||
@@ -163,6 +178,9 @@ class HKDevice:
|
||||
|
||||
self.add_entities()
|
||||
|
||||
if self.watchable_characteristics:
|
||||
await self.pairing.subscribe(self.watchable_characteristics)
|
||||
|
||||
await self.async_update()
|
||||
|
||||
return True
|
||||
@@ -172,6 +190,8 @@ class HKDevice:
|
||||
if self._polling_interval_remover:
|
||||
self._polling_interval_remover()
|
||||
|
||||
await self.pairing.unsubscribe(self.watchable_characteristics)
|
||||
|
||||
unloads = []
|
||||
for platform in self.platforms:
|
||||
unloads.append(
|
||||
|
||||
Reference in New Issue
Block a user