From 1cae813dbe65c74c766e9c0bd2eeef845f087cf0 Mon Sep 17 00:00:00 2001 From: Chris Xiao <30990835+chrisx8@users.noreply.github.com> Date: Thu, 16 Feb 2023 21:00:10 -0500 Subject: [PATCH 1/3] display unit of elevation in met config flow Co-authored-by: lijake8 Signed-off-by: Chris Xiao <30990835+chrisx8@users.noreply.github.com> --- homeassistant/components/met/__init__.py | 10 ---------- homeassistant/components/met/config_flow.py | 19 +++++++++++++++---- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/met/__init__.py b/homeassistant/components/met/__init__.py index c95c3abe05e611..973a6328439c42 100644 --- a/homeassistant/components/met/__init__.py +++ b/homeassistant/components/met/__init__.py @@ -18,14 +18,12 @@ CONF_LONGITUDE, EVENT_CORE_CONFIG_UPDATE, Platform, - UnitOfLength, ) from homeassistant.core import Event, HomeAssistant from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed from homeassistant.util import dt as dt_util -from homeassistant.util.unit_conversion import DistanceConverter from homeassistant.util.unit_system import METRIC_SYSTEM from .const import ( @@ -165,14 +163,6 @@ def set_coordinates(self) -> bool: latitude = self._config[CONF_LATITUDE] longitude = self._config[CONF_LONGITUDE] elevation = self._config[CONF_ELEVATION] - if not self._is_metric: - elevation = int( - round( - DistanceConverter.convert( - elevation, UnitOfLength.FEET, UnitOfLength.METERS - ) - ) - ) coordinates = { "lat": str(latitude), diff --git a/homeassistant/components/met/config_flow.py b/homeassistant/components/met/config_flow.py index 453c0a9cee80e5..7864c1bc164e25 100644 --- a/homeassistant/components/met/config_flow.py +++ b/homeassistant/components/met/config_flow.py @@ -10,6 +10,11 @@ from homeassistant.core import HomeAssistant, callback from homeassistant.data_entry_flow import FlowResult import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.selector import ( + TextSelector, + TextSelectorConfig, + TextSelectorType, +) from .const import ( CONF_TRACK_HOME, @@ -47,7 +52,11 @@ def _get_data_schema( vol.Required( CONF_LONGITUDE, default=hass.config.longitude ): cv.longitude, - vol.Required(CONF_ELEVATION, default=hass.config.elevation): int, + vol.Required(CONF_ELEVATION, default=hass.config.elevation): TextSelector( + TextSelectorConfig( + type=TextSelectorType.NUMBER, suffix="meters" + ) + ), } ) # Not tracking home, default values come from config entry @@ -60,9 +69,11 @@ def _get_data_schema( vol.Required( CONF_LONGITUDE, default=config_entry.data.get(CONF_LONGITUDE) ): cv.longitude, - vol.Required( - CONF_ELEVATION, default=config_entry.data.get(CONF_ELEVATION) - ): int, + vol.Required(CONF_ELEVATION, default=config_entry.data.get(CONF_ELEVATION)): TextSelector( + TextSelectorConfig( + type=TextSelectorType.NUMBER, suffix="meters" + ) + ), } ) From f95aebca82e76e7f87f65b073606f63933704c76 Mon Sep 17 00:00:00 2001 From: Chris Xiao <30990835+chrisx8@users.noreply.github.com> Date: Fri, 17 Feb 2023 13:22:19 -0500 Subject: [PATCH 2/3] use NumberSelector for met config flow --- homeassistant/components/met/config_flow.py | 32 ++++++++++++++------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/met/config_flow.py b/homeassistant/components/met/config_flow.py index 7864c1bc164e25..d8cb31077c21be 100644 --- a/homeassistant/components/met/config_flow.py +++ b/homeassistant/components/met/config_flow.py @@ -6,14 +6,20 @@ import voluptuous as vol from homeassistant import config_entries -from homeassistant.const import CONF_ELEVATION, CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME +from homeassistant.const import ( + CONF_ELEVATION, + CONF_LATITUDE, + CONF_LONGITUDE, + CONF_NAME, + UnitOfLength, +) from homeassistant.core import HomeAssistant, callback from homeassistant.data_entry_flow import FlowResult import homeassistant.helpers.config_validation as cv from homeassistant.helpers.selector import ( - TextSelector, - TextSelectorConfig, - TextSelectorType, + NumberSelector, + NumberSelectorConfig, + NumberSelectorMode, ) from .const import ( @@ -52,9 +58,12 @@ def _get_data_schema( vol.Required( CONF_LONGITUDE, default=hass.config.longitude ): cv.longitude, - vol.Required(CONF_ELEVATION, default=hass.config.elevation): TextSelector( - TextSelectorConfig( - type=TextSelectorType.NUMBER, suffix="meters" + vol.Required( + CONF_ELEVATION, default=hass.config.elevation + ): NumberSelector( + NumberSelectorConfig( + mode=NumberSelectorMode.BOX, + unit_of_measurement=UnitOfLength.METERS, ) ), } @@ -69,9 +78,12 @@ def _get_data_schema( vol.Required( CONF_LONGITUDE, default=config_entry.data.get(CONF_LONGITUDE) ): cv.longitude, - vol.Required(CONF_ELEVATION, default=config_entry.data.get(CONF_ELEVATION)): TextSelector( - TextSelectorConfig( - type=TextSelectorType.NUMBER, suffix="meters" + vol.Required( + CONF_ELEVATION, default=config_entry.data.get(CONF_ELEVATION) + ): NumberSelector( + NumberSelectorConfig( + mode=NumberSelectorMode.BOX, + unit_of_measurement=UnitOfLength.METERS, ) ), } From e7fb048a5fc48ce6d68e5d8414cc740b7c4eb244 Mon Sep 17 00:00:00 2001 From: Chris Xiao <30990835+chrisx8@users.noreply.github.com> Date: Sat, 25 Feb 2023 20:20:12 +0000 Subject: [PATCH 3/3] met remove unused is_metric param --- homeassistant/components/met/__init__.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/met/__init__.py b/homeassistant/components/met/__init__.py index 973a6328439c42..c676f15336eca2 100644 --- a/homeassistant/components/met/__init__.py +++ b/homeassistant/components/met/__init__.py @@ -24,7 +24,6 @@ from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed from homeassistant.util import dt as dt_util -from homeassistant.util.unit_system import METRIC_SYSTEM from .const import ( CONF_TRACK_HOME, @@ -100,9 +99,7 @@ class MetDataUpdateCoordinator(DataUpdateCoordinator["MetWeatherData"]): def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry) -> None: """Initialize global Met data updater.""" self._unsub_track_home: Callable[[], None] | None = None - self.weather = MetWeatherData( - hass, config_entry.data, hass.config.units is METRIC_SYSTEM - ) + self.weather = MetWeatherData(hass, config_entry.data) self.weather.set_coordinates() update_interval = timedelta(minutes=randrange(55, 65)) @@ -140,13 +137,10 @@ def untrack_home(self) -> None: class MetWeatherData: """Keep data for Met.no weather entities.""" - def __init__( - self, hass: HomeAssistant, config: MappingProxyType[str, Any], is_metric: bool - ) -> None: + def __init__(self, hass: HomeAssistant, config: MappingProxyType[str, Any]) -> None: """Initialise the weather entity data.""" self.hass = hass self._config = config - self._is_metric = is_metric self._weather_data: metno.MetWeatherData self.current_weather_data: dict = {} self.daily_forecast: list[dict] = []