From 609263e1bbc7b695c023c16604c4a8a7f648b284 Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Tue, 17 Mar 2020 21:03:16 -0600 Subject: [PATCH] Add cleanup to OpenUV (#32886) * Add cleanup to OpenUV * Linting --- homeassistant/components/openuv/__init__.py | 33 +++++++++++++++++-- .../components/openuv/binary_sensor.py | 22 ++----------- homeassistant/components/openuv/sensor.py | 22 ++----------- 3 files changed, 35 insertions(+), 42 deletions(-) diff --git a/homeassistant/components/openuv/__init__.py b/homeassistant/components/openuv/__init__.py index f130872da5f..008b46d96f2 100644 --- a/homeassistant/components/openuv/__init__.py +++ b/homeassistant/components/openuv/__init__.py @@ -16,9 +16,13 @@ from homeassistant.const import ( CONF_LONGITUDE, CONF_SENSORS, ) +from homeassistant.core import callback from homeassistant.exceptions import ConfigEntryNotReady from homeassistant.helpers import aiohttp_client, config_validation as cv -from homeassistant.helpers.dispatcher import async_dispatcher_send +from homeassistant.helpers.dispatcher import ( + async_dispatcher_connect, + async_dispatcher_send, +) from homeassistant.helpers.entity import Entity from homeassistant.helpers.service import verify_domain_control @@ -104,7 +108,6 @@ async def async_setup(hass, config): async def async_setup_entry(hass, config_entry): """Set up OpenUV as config entry.""" - _verify_domain_control = verify_domain_control(hass, DOMAIN) try: @@ -230,6 +233,7 @@ class OpenUvEntity(Entity): def __init__(self, openuv): """Initialize.""" + self._async_unsub_dispatcher_connect = None self._attrs = {ATTR_ATTRIBUTION: DEFAULT_ATTRIBUTION} self._available = True self._name = None @@ -249,3 +253,28 @@ class OpenUvEntity(Entity): def name(self): """Return the name of the entity.""" return self._name + + async def async_added_to_hass(self): + """Register callbacks.""" + + @callback + def update(): + """Update the state.""" + self.update_from_latest_data() + self.async_write_ha_state() + + self._async_unsub_dispatcher_connect = async_dispatcher_connect( + self.hass, TOPIC_UPDATE, update + ) + + self.update_from_latest_data() + + async def async_will_remove_from_hass(self): + """Disconnect dispatcher listener when removed.""" + if self._async_unsub_dispatcher_connect: + self._async_unsub_dispatcher_connect() + self._async_unsub_dispatcher_connect = None + + def update_from_latest_data(self): + """Update the sensor using the latest data.""" + raise NotImplementedError diff --git a/homeassistant/components/openuv/binary_sensor.py b/homeassistant/components/openuv/binary_sensor.py index 6bd3dda13fd..6e403a59b43 100644 --- a/homeassistant/components/openuv/binary_sensor.py +++ b/homeassistant/components/openuv/binary_sensor.py @@ -3,14 +3,12 @@ import logging from homeassistant.components.binary_sensor import BinarySensorDevice from homeassistant.core import callback -from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.util.dt import as_local, parse_datetime, utcnow from . import ( DATA_OPENUV_CLIENT, DATA_PROTECTION_WINDOW, DOMAIN, - TOPIC_UPDATE, TYPE_PROTECTION_WINDOW, OpenUvEntity, ) @@ -75,24 +73,8 @@ class OpenUvBinarySensor(OpenUvEntity, BinarySensorDevice): """Return a unique, Home Assistant friendly identifier for this entity.""" return f"{self._latitude}_{self._longitude}_{self._sensor_type}" - async def async_added_to_hass(self): - """Register callbacks.""" - - @callback - def update(): - """Update the state.""" - self.async_schedule_update_ha_state(True) - - self._async_unsub_dispatcher_connect = async_dispatcher_connect( - self.hass, TOPIC_UPDATE, update - ) - - async def async_will_remove_from_hass(self): - """Disconnect dispatcher listener when removed.""" - if self._async_unsub_dispatcher_connect: - self._async_unsub_dispatcher_connect() - - async def async_update(self): + @callback + def update_from_latest_data(self): """Update the state.""" data = self.openuv.data[DATA_PROTECTION_WINDOW] diff --git a/homeassistant/components/openuv/sensor.py b/homeassistant/components/openuv/sensor.py index a375cfa10d7..0d4a8b73a08 100644 --- a/homeassistant/components/openuv/sensor.py +++ b/homeassistant/components/openuv/sensor.py @@ -3,14 +3,12 @@ import logging from homeassistant.const import TIME_MINUTES from homeassistant.core import callback -from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.util.dt import as_local, parse_datetime from . import ( DATA_OPENUV_CLIENT, DATA_UV, DOMAIN, - TOPIC_UPDATE, TYPE_CURRENT_OZONE_LEVEL, TYPE_CURRENT_UV_INDEX, TYPE_CURRENT_UV_LEVEL, @@ -135,24 +133,8 @@ class OpenUvSensor(OpenUvEntity): """Return the unit the value is expressed in.""" return self._unit - async def async_added_to_hass(self): - """Register callbacks.""" - - @callback - def update(): - """Update the state.""" - self.async_schedule_update_ha_state(True) - - self._async_unsub_dispatcher_connect = async_dispatcher_connect( - self.hass, TOPIC_UPDATE, update - ) - - async def async_will_remove_from_hass(self): - """Disconnect dispatcher listener when removed.""" - if self._async_unsub_dispatcher_connect: - self._async_unsub_dispatcher_connect() - - async def async_update(self): + @callback + def update_from_latest_data(self): """Update the state.""" data = self.openuv.data[DATA_UV].get("result")