Remove YAML support from sense (#49935)

This commit is contained in:
J. Nick Koston 2021-05-01 11:17:52 -10:00 committed by GitHub
parent ef2b8bbca8
commit 002b068c0a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 10 additions and 66 deletions

View File

@ -1,4 +1,5 @@
"""Support for monitoring a Sense energy sensor.""" """Support for monitoring a Sense energy sensor."""
import asyncio
from datetime import timedelta from datetime import timedelta
import logging import logging
@ -7,9 +8,8 @@ from sense_energy import (
SenseAPITimeoutException, SenseAPITimeoutException,
SenseAuthenticationException, SenseAuthenticationException,
) )
import voluptuous as vol
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ( from homeassistant.const import (
CONF_EMAIL, CONF_EMAIL,
CONF_PASSWORD, CONF_PASSWORD,
@ -19,42 +19,25 @@ from homeassistant.const import (
from homeassistant.core import HomeAssistant, callback 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
from homeassistant.helpers.dispatcher import async_dispatcher_send from homeassistant.helpers.dispatcher import async_dispatcher_send
from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.event import async_track_time_interval
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
from .const import ( from .const import (
ACTIVE_UPDATE_RATE, ACTIVE_UPDATE_RATE,
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__)
PLATFORMS = ["binary_sensor", "sensor"] PLATFORMS = ["binary_sensor", "sensor"]
CONFIG_SCHEMA = vol.Schema(
{
DOMAIN: vol.Schema(
{
vol.Required(CONF_EMAIL): cv.string,
vol.Required(CONF_PASSWORD): cv.string,
vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): cv.positive_int,
}
)
},
extra=vol.ALLOW_EXTRA,
)
class SenseDevicesData: class SenseDevicesData:
"""Data for each sense device.""" """Data for each sense device."""
@ -65,36 +48,13 @@ class SenseDevicesData:
def set_devices_data(self, devices): def set_devices_data(self, devices):
"""Store a device update.""" """Store a device update."""
self._data_by_device = {} self._data_by_device = {device["id"]: device for device in devices}
for device in devices:
self._data_by_device[device["id"]] = device
def get_device_by_id(self, sense_device_id): def get_device_by_id(self, sense_device_id):
"""Get the latest device data.""" """Get the latest device data."""
return self._data_by_device.get(sense_device_id) return self._data_by_device.get(sense_device_id)
async def async_setup(hass: HomeAssistant, config: dict):
"""Set up the Sense component."""
hass.data.setdefault(DOMAIN, {})
conf = config.get(DOMAIN)
if not conf:
return True
hass.async_create_task(
hass.config_entries.flow.async_init(
DOMAIN,
context={"source": SOURCE_IMPORT},
data={
CONF_EMAIL: conf[CONF_EMAIL],
CONF_PASSWORD: conf[CONF_PASSWORD],
CONF_TIMEOUT: conf[CONF_TIMEOUT],
},
)
)
return True
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry): async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
"""Set up Sense from a config entry.""" """Set up Sense from a config entry."""
@ -136,9 +96,9 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
# This can take longer than 60s and we already know # This can take longer than 60s and we already know
# sense is online since get_discovered_device_data was # sense is online since get_discovered_device_data was
# successful so we do it later. # successful so we do it later.
hass.loop.create_task(trends_coordinator.async_request_refresh()) asyncio.create_task(trends_coordinator.async_request_refresh())
data = hass.data[DOMAIN][entry.entry_id] = { hass.data.setdefault(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,
@ -167,9 +127,11 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
def _remove_update_callback_at_stop(event): def _remove_update_callback_at_stop(event):
remove_update_callback() remove_update_callback()
data[TRACK_TIME_REMOVE] = remove_update_callback entry.async_on_unload(remove_update_callback)
data[EVENT_STOP_REMOVE] = hass.bus.async_listen_once( entry.async_on_unload(
EVENT_HOMEASSISTANT_STOP, _remove_update_callback_at_stop hass.bus.async_listen_once(
EVENT_HOMEASSISTANT_STOP, _remove_update_callback_at_stop
)
) )
return True return True
@ -178,11 +140,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry): async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry):
"""Unload a config entry.""" """Unload a config entry."""
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS) unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
data = hass.data[DOMAIN][entry.entry_id]
data[EVENT_STOP_REMOVE]()
data[TRACK_TIME_REMOVE]()
if unload_ok: if unload_ok:
hass.data[DOMAIN].pop(entry.entry_id) hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok return unload_ok

View File

@ -63,10 +63,3 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
return self.async_show_form( return self.async_show_form(
step_id="user", data_schema=DATA_SCHEMA, errors=errors step_id="user", data_schema=DATA_SCHEMA, errors=errors
) )
async def async_step_import(self, user_input):
"""Handle import."""
await self.async_set_unique_id(user_input[CONF_EMAIL])
self._abort_if_unique_id_configured()
return await self.async_step_user(user_input)

View File

@ -14,9 +14,6 @@ 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"

View File

@ -17,8 +17,6 @@ async def test_form(hass):
assert result["errors"] == {} assert result["errors"] == {}
with patch("sense_energy.ASyncSenseable.authenticate", return_value=True,), patch( with patch("sense_energy.ASyncSenseable.authenticate", return_value=True,), patch(
"homeassistant.components.sense.async_setup", return_value=True
) as mock_setup, patch(
"homeassistant.components.sense.async_setup_entry", "homeassistant.components.sense.async_setup_entry",
return_value=True, return_value=True,
) as mock_setup_entry: ) as mock_setup_entry:
@ -35,7 +33,6 @@ async def test_form(hass):
"email": "test-email", "email": "test-email",
"password": "test-password", "password": "test-password",
} }
assert len(mock_setup.mock_calls) == 1
assert len(mock_setup_entry.mock_calls) == 1 assert len(mock_setup_entry.mock_calls) == 1