Unsubscribe ozw listeners (#38787)

This commit is contained in:
Martin Hjelmare 2020-08-12 15:17:21 +02:00 committed by GitHub
parent e9b50706a9
commit 7949357180
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 19 deletions

View File

@ -193,13 +193,16 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
]
# Listen to events for node and value changes
options.listen(EVENT_NODE_ADDED, async_node_added)
options.listen(EVENT_NODE_CHANGED, async_node_changed)
options.listen(EVENT_NODE_REMOVED, async_node_removed)
options.listen(EVENT_VALUE_ADDED, async_value_added)
options.listen(EVENT_VALUE_CHANGED, async_value_changed)
options.listen(EVENT_VALUE_REMOVED, async_value_removed)
options.listen(EVENT_INSTANCE_EVENT, async_instance_event)
for event, event_callback in (
(EVENT_NODE_ADDED, async_node_added),
(EVENT_NODE_CHANGED, async_node_changed),
(EVENT_NODE_REMOVED, async_node_removed),
(EVENT_VALUE_ADDED, async_value_added),
(EVENT_VALUE_CHANGED, async_value_changed),
(EVENT_VALUE_REMOVED, async_value_removed),
(EVENT_INSTANCE_EVENT, async_instance_event),
):
ozw_data[DATA_UNSUBSCRIBE].append(options.listen(event, event_callback))
# Register Services
services = ZWaveServices(hass, manager)

View File

@ -162,10 +162,14 @@ class ZWaveDeviceEntity(Entity):
async def async_added_to_hass(self):
"""Call when entity is added."""
# add dispatcher and OZW listeners callbacks,
self.options.listen(EVENT_VALUE_CHANGED, self._value_changed)
self.options.listen(EVENT_INSTANCE_STATUS_CHANGED, self._instance_updated)
# add to on_remove so they will be cleaned up on entity removal
# Add dispatcher and OZW listeners callbacks.
# Add to on_remove so they will be cleaned up on entity removal.
self.async_on_remove(
self.options.listen(EVENT_VALUE_CHANGED, self._value_changed)
)
self.async_on_remove(
self.options.listen(EVENT_INSTANCE_STATUS_CHANGED, self._instance_updated)
)
self.async_on_remove(
async_dispatcher_connect(
self.hass, const.SIGNAL_DELETE_ENTITY, self._delete_callback
@ -266,14 +270,6 @@ class ZWaveDeviceEntity(Entity):
if values_id == self.values.values_id:
await self.async_remove()
async def async_will_remove_from_hass(self) -> None:
"""Call when entity will be removed from hass."""
# cleanup OZW listeners
self.options.listeners[EVENT_VALUE_CHANGED].remove(self._value_changed)
self.options.listeners[EVENT_INSTANCE_STATUS_CHANGED].remove(
self._instance_updated
)
def create_device_name(node: OZWNode):
"""Generate sensible (short) default device name from a OZWNode."""