From cf0e467150752a1ed518ab0f4ac0372f66271e5d Mon Sep 17 00:00:00 2001 From: Alan Tse Date: Wed, 29 Jan 2020 17:15:47 -0800 Subject: [PATCH] Change scan_interval defaults for Tesla (#31194) --- homeassistant/components/tesla/__init__.py | 21 +++++++++++++------ homeassistant/components/tesla/config_flow.py | 10 +++++---- homeassistant/components/tesla/const.py | 2 ++ tests/components/tesla/test_config_flow.py | 8 +++---- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/tesla/__init__.py b/homeassistant/components/tesla/__init__.py index 3c2a22793db..df0664b8f4c 100644 --- a/homeassistant/components/tesla/__init__.py +++ b/homeassistant/components/tesla/__init__.py @@ -27,7 +27,14 @@ from .config_flow import ( configured_instances, validate_input, ) -from .const import DATA_LISTENER, DOMAIN, ICONS, TESLA_COMPONENTS +from .const import ( + DATA_LISTENER, + DEFAULT_SCAN_INTERVAL, + DOMAIN, + ICONS, + MIN_SCAN_INTERVAL, + TESLA_COMPONENTS, +) _LOGGER = logging.getLogger(__name__) @@ -37,9 +44,9 @@ CONFIG_SCHEMA = vol.Schema( { vol.Required(CONF_USERNAME): cv.string, vol.Required(CONF_PASSWORD): cv.string, - vol.Optional(CONF_SCAN_INTERVAL, default=300): vol.All( - cv.positive_int, vol.Clamp(min=300) - ), + vol.Optional( + CONF_SCAN_INTERVAL, default=DEFAULT_SCAN_INTERVAL + ): vol.All(cv.positive_int, vol.Clamp(min=MIN_SCAN_INTERVAL)), } ) }, @@ -64,7 +71,7 @@ async def async_setup(hass, base_config): def _update_entry(email, data=None, options=None): data = data or {} - options = options or {CONF_SCAN_INTERVAL: 300} + options = options or {CONF_SCAN_INTERVAL: DEFAULT_SCAN_INTERVAL} for entry in hass.config_entries.async_entries(DOMAIN): if email != entry.title: continue @@ -120,7 +127,9 @@ async def async_setup_entry(hass, config_entry): websession, refresh_token=config[CONF_TOKEN], access_token=config[CONF_ACCESS_TOKEN], - update_interval=config_entry.options.get(CONF_SCAN_INTERVAL, 300), + update_interval=config_entry.options.get( + CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL + ), ) (refresh_token, access_token) = await controller.connect() except TeslaException as ex: diff --git a/homeassistant/components/tesla/config_flow.py b/homeassistant/components/tesla/config_flow.py index 2d2bc0158d2..c719807da9f 100644 --- a/homeassistant/components/tesla/config_flow.py +++ b/homeassistant/components/tesla/config_flow.py @@ -15,7 +15,7 @@ from homeassistant.const import ( from homeassistant.core import callback from homeassistant.helpers import aiohttp_client, config_validation as cv -from .const import DOMAIN +from .const import DEFAULT_SCAN_INTERVAL, DOMAIN, MIN_SCAN_INTERVAL _LOGGER = logging.getLogger(__name__) @@ -100,8 +100,10 @@ class OptionsFlowHandler(config_entries.OptionsFlow): { vol.Optional( CONF_SCAN_INTERVAL, - default=self.config_entry.options.get(CONF_SCAN_INTERVAL, 300), - ): vol.All(cv.positive_int, vol.Clamp(min=300)) + default=self.config_entry.options.get( + CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL + ), + ): vol.All(cv.positive_int, vol.Clamp(min=MIN_SCAN_INTERVAL)) } ) return self.async_show_form(step_id="init", data_schema=data_schema) @@ -120,7 +122,7 @@ async def validate_input(hass: core.HomeAssistant, data): websession, email=data[CONF_USERNAME], password=data[CONF_PASSWORD], - update_interval=300, + update_interval=DEFAULT_SCAN_INTERVAL, ) (config[CONF_TOKEN], config[CONF_ACCESS_TOKEN]) = await controller.connect( test_login=True diff --git a/homeassistant/components/tesla/const.py b/homeassistant/components/tesla/const.py index be460a430ac..54cb7a2e071 100644 --- a/homeassistant/components/tesla/const.py +++ b/homeassistant/components/tesla/const.py @@ -1,6 +1,8 @@ """Const file for Tesla cars.""" DOMAIN = "tesla" DATA_LISTENER = "listener" +DEFAULT_SCAN_INTERVAL = 660 +MIN_SCAN_INTERVAL = 60 TESLA_COMPONENTS = [ "sensor", "lock", diff --git a/tests/components/tesla/test_config_flow.py b/tests/components/tesla/test_config_flow.py index 7b7e822ce58..477583f23fb 100644 --- a/tests/components/tesla/test_config_flow.py +++ b/tests/components/tesla/test_config_flow.py @@ -4,7 +4,7 @@ from unittest.mock import patch from teslajsonpy import TeslaException from homeassistant import config_entries, data_entry_flow, setup -from homeassistant.components.tesla.const import DOMAIN +from homeassistant.components.tesla.const import DOMAIN, MIN_SCAN_INTERVAL from homeassistant.const import ( CONF_ACCESS_TOKEN, CONF_PASSWORD, @@ -40,8 +40,8 @@ async def test_form(hass): assert result2["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY assert result2["title"] == "test@email.com" assert result2["data"] == { - "token": "test-refresh-token", - "access_token": "test-access-token", + CONF_TOKEN: "test-refresh-token", + CONF_ACCESS_TOKEN: "test-access-token", } await hass.async_block_till_done() assert len(mock_setup.mock_calls) == 1 @@ -157,4 +157,4 @@ async def test_option_flow_input_floor(hass): result["flow_id"], user_input={CONF_SCAN_INTERVAL: 1} ) assert result["type"] == "create_entry" - assert result["data"] == {CONF_SCAN_INTERVAL: 300} + assert result["data"] == {CONF_SCAN_INTERVAL: MIN_SCAN_INTERVAL}