mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 04:07:08 +00:00
Cancel sense updates on the stop event (#49187)
This commit is contained in:
parent
5a9c3fea70
commit
d7ac4bd653
@ -11,8 +11,13 @@ from sense_energy import (
|
|||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
|
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
|
||||||
from homeassistant.const import CONF_EMAIL, CONF_PASSWORD, CONF_TIMEOUT
|
from homeassistant.const import (
|
||||||
from homeassistant.core import HomeAssistant
|
CONF_EMAIL,
|
||||||
|
CONF_PASSWORD,
|
||||||
|
CONF_TIMEOUT,
|
||||||
|
EVENT_HOMEASSISTANT_STOP,
|
||||||
|
)
|
||||||
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.exceptions import ConfigEntryNotReady
|
from homeassistant.exceptions import ConfigEntryNotReady
|
||||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
@ -24,12 +29,14 @@ from .const import (
|
|||||||
ACTIVE_UPDATE_RATE,
|
ACTIVE_UPDATE_RATE,
|
||||||
DEFAULT_TIMEOUT,
|
DEFAULT_TIMEOUT,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
|
EVENT_STOP_REMOVE,
|
||||||
SENSE_DATA,
|
SENSE_DATA,
|
||||||
SENSE_DEVICE_UPDATE,
|
SENSE_DEVICE_UPDATE,
|
||||||
SENSE_DEVICES_DATA,
|
SENSE_DEVICES_DATA,
|
||||||
SENSE_DISCOVERED_DEVICES_DATA,
|
SENSE_DISCOVERED_DEVICES_DATA,
|
||||||
SENSE_TIMEOUT_EXCEPTIONS,
|
SENSE_TIMEOUT_EXCEPTIONS,
|
||||||
SENSE_TRENDS_COORDINATOR,
|
SENSE_TRENDS_COORDINATOR,
|
||||||
|
TRACK_TIME_REMOVE,
|
||||||
)
|
)
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
@ -132,7 +139,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
|
|||||||
# successful so we do it later.
|
# successful so we do it later.
|
||||||
hass.loop.create_task(trends_coordinator.async_request_refresh())
|
hass.loop.create_task(trends_coordinator.async_request_refresh())
|
||||||
|
|
||||||
hass.data[DOMAIN][entry.entry_id] = {
|
data = hass.data[DOMAIN][entry.entry_id] = {
|
||||||
SENSE_DATA: gateway,
|
SENSE_DATA: gateway,
|
||||||
SENSE_DEVICES_DATA: sense_devices_data,
|
SENSE_DEVICES_DATA: sense_devices_data,
|
||||||
SENSE_TRENDS_COORDINATOR: trends_coordinator,
|
SENSE_TRENDS_COORDINATOR: trends_coordinator,
|
||||||
@ -156,11 +163,19 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
|
|||||||
sense_devices_data.set_devices_data(data["devices"])
|
sense_devices_data.set_devices_data(data["devices"])
|
||||||
async_dispatcher_send(hass, f"{SENSE_DEVICE_UPDATE}-{gateway.sense_monitor_id}")
|
async_dispatcher_send(hass, f"{SENSE_DEVICE_UPDATE}-{gateway.sense_monitor_id}")
|
||||||
|
|
||||||
hass.data[DOMAIN][entry.entry_id][
|
remove_update_callback = async_track_time_interval(
|
||||||
"track_time_remove_callback"
|
|
||||||
] = async_track_time_interval(
|
|
||||||
hass, async_sense_update, timedelta(seconds=ACTIVE_UPDATE_RATE)
|
hass, async_sense_update, timedelta(seconds=ACTIVE_UPDATE_RATE)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@callback
|
||||||
|
def _remove_update_callback_at_stop(event):
|
||||||
|
remove_update_callback()
|
||||||
|
|
||||||
|
data[TRACK_TIME_REMOVE] = remove_update_callback
|
||||||
|
data[EVENT_STOP_REMOVE] = hass.bus.async_listen_once(
|
||||||
|
EVENT_HOMEASSISTANT_STOP, _remove_update_callback_at_stop
|
||||||
|
)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
@ -174,10 +189,9 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry):
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
track_time_remove_callback = hass.data[DOMAIN][entry.entry_id][
|
data = hass.data[DOMAIN][entry.entry_id]
|
||||||
"track_time_remove_callback"
|
data[EVENT_STOP_REMOVE]()
|
||||||
]
|
data[TRACK_TIME_REMOVE]()
|
||||||
track_time_remove_callback()
|
|
||||||
|
|
||||||
if unload_ok:
|
if unload_ok:
|
||||||
hass.data[DOMAIN].pop(entry.entry_id)
|
hass.data[DOMAIN].pop(entry.entry_id)
|
||||||
|
@ -14,6 +14,9 @@ SENSE_DEVICES_DATA = "sense_devices_data"
|
|||||||
SENSE_DISCOVERED_DEVICES_DATA = "sense_discovered_devices"
|
SENSE_DISCOVERED_DEVICES_DATA = "sense_discovered_devices"
|
||||||
SENSE_TRENDS_COORDINATOR = "sense_trends_coordinator"
|
SENSE_TRENDS_COORDINATOR = "sense_trends_coordinator"
|
||||||
|
|
||||||
|
TRACK_TIME_REMOVE = "track_time_remove_callback"
|
||||||
|
EVENT_STOP_REMOVE = "event_stop_remove_callback"
|
||||||
|
|
||||||
ACTIVE_NAME = "Energy"
|
ACTIVE_NAME = "Energy"
|
||||||
ACTIVE_TYPE = "active"
|
ACTIVE_TYPE = "active"
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user