From 190d8aef0a5c1153c71cb1cecd2c0f0f58546aca Mon Sep 17 00:00:00 2001 From: Robert Resch Date: Wed, 11 Oct 2023 07:38:01 +0000 Subject: [PATCH 1/4] Add all units of measurement for selector in scrape --- homeassistant/components/scrape/config_flow.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/scrape/config_flow.py b/homeassistant/components/scrape/config_flow.py index b4305b3948e..bc425780dc9 100644 --- a/homeassistant/components/scrape/config_flow.py +++ b/homeassistant/components/scrape/config_flow.py @@ -12,6 +12,7 @@ from homeassistant.components.rest.data import DEFAULT_TIMEOUT from homeassistant.components.rest.schema import DEFAULT_METHOD, METHODS from homeassistant.components.sensor import ( CONF_STATE_CLASS, + DEVICE_CLASS_UNITS as SENSOR_DEVICE_CLASS_UNITS, DOMAIN as SENSOR_DOMAIN, SensorDeviceClass, SensorStateClass, @@ -34,7 +35,6 @@ from homeassistant.const import ( CONF_VERIFY_SSL, HTTP_BASIC_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION, - UnitOfTemperature, ) from homeassistant.core import async_get_hass from homeassistant.helpers import config_validation as cv, entity_registry as er @@ -124,7 +124,14 @@ SENSOR_SETUP = { ), vol.Optional(CONF_UNIT_OF_MEASUREMENT): SelectSelector( SelectSelectorConfig( - options=[cls.value for cls in UnitOfTemperature], + options=list( + { + str(unit) + for units in SENSOR_DEVICE_CLASS_UNITS.values() + for unit in units + if unit is not None + } + ), custom_value=True, mode=SelectSelectorMode.DROPDOWN, translation_key="unit_of_measurement", From 1ee4f0fb58d1b5c4613c37afa278a2859a8c1e23 Mon Sep 17 00:00:00 2001 From: Robert Resch Date: Tue, 12 Dec 2023 12:48:07 +0000 Subject: [PATCH 2/4] list all units of measurement --- .../components/scrape/config_flow.py | 11 +--- homeassistant/const.py | 52 +++++++++++++++++++ 2 files changed, 54 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/scrape/config_flow.py b/homeassistant/components/scrape/config_flow.py index bc425780dc9..7f6617ba7fd 100644 --- a/homeassistant/components/scrape/config_flow.py +++ b/homeassistant/components/scrape/config_flow.py @@ -12,7 +12,6 @@ from homeassistant.components.rest.data import DEFAULT_TIMEOUT from homeassistant.components.rest.schema import DEFAULT_METHOD, METHODS from homeassistant.components.sensor import ( CONF_STATE_CLASS, - DEVICE_CLASS_UNITS as SENSOR_DEVICE_CLASS_UNITS, DOMAIN as SENSOR_DOMAIN, SensorDeviceClass, SensorStateClass, @@ -35,6 +34,7 @@ from homeassistant.const import ( CONF_VERIFY_SSL, HTTP_BASIC_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION, + UNITS_OF_MEASUREMENT, ) from homeassistant.core import async_get_hass from homeassistant.helpers import config_validation as cv, entity_registry as er @@ -124,14 +124,7 @@ SENSOR_SETUP = { ), vol.Optional(CONF_UNIT_OF_MEASUREMENT): SelectSelector( SelectSelectorConfig( - options=list( - { - str(unit) - for units in SENSOR_DEVICE_CLASS_UNITS.values() - for unit in units - if unit is not None - } - ), + options=list(UNITS_OF_MEASUREMENT), custom_value=True, mode=SelectSelectorMode.DROPDOWN, translation_key="unit_of_measurement", diff --git a/homeassistant/const.py b/homeassistant/const.py index 8da1c251b4e..1ab0ac352f7 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1051,6 +1051,58 @@ DATA_RATE_GIBIBYTES_PER_SECOND: Final = "GiB/s" """Deprecated: please use UnitOfDataRate.GIBIBYTES_PER_SECOND""" +UNITS_OF_MEASUREMENT: Final[frozenset[str]] = frozenset( + { + unit + for unit_type in ( + UnitOfApparentPower, + UnitOfPower, + UnitOfEnergy, + UnitOfElectricCurrent, + UnitOfElectricPotential, + UnitOfTemperature, + UnitOfTime, + UnitOfLength, + UnitOfFrequency, + UnitOfPressure, + UnitOfSoundPressure, + UnitOfVolume, + UnitOfVolumeFlowRate, + UnitOfMass, + UnitOfIrradiance, + UnitOfVolumetricFlux, + UnitOfPrecipitationDepth, + UnitOfSpeed, + UnitOfInformation, + UnitOfDataRate, + ) + for unit in unit_type + } +).union( + { + POWER_VOLT_AMPERE_REACTIVE, + DEGREE, + CURRENCY_EURO, + CURRENCY_DOLLAR, + CURRENCY_CENT, + AREA_SQUARE_METERS, + CONDUCTIVITY, + LIGHT_LUX, + UV_INDEX, + PERCENTAGE, + REVOLUTIONS_PER_MINUTE, + CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER, + CONCENTRATION_MICROGRAMS_PER_CUBIC_FOOT, + CONCENTRATION_PARTS_PER_CUBIC_METER, + CONCENTRATION_PARTS_PER_MILLION, + CONCENTRATION_PARTS_PER_BILLION, + SIGNAL_STRENGTH_DECIBELS, + SIGNAL_STRENGTH_DECIBELS_MILLIWATT, + } +) + + # States COMPRESSED_STATE_STATE = "s" COMPRESSED_STATE_ATTRIBUTES = "a" From 983f97fdb30a14ec6a9b407b8808856d85f75130 Mon Sep 17 00:00:00 2001 From: Robert Resch Date: Tue, 12 Dec 2023 12:57:52 +0000 Subject: [PATCH 3/4] sort --- homeassistant/components/scrape/config_flow.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/scrape/config_flow.py b/homeassistant/components/scrape/config_flow.py index 7f6617ba7fd..a2ac29278e2 100644 --- a/homeassistant/components/scrape/config_flow.py +++ b/homeassistant/components/scrape/config_flow.py @@ -124,7 +124,7 @@ SENSOR_SETUP = { ), vol.Optional(CONF_UNIT_OF_MEASUREMENT): SelectSelector( SelectSelectorConfig( - options=list(UNITS_OF_MEASUREMENT), + options=sorted(UNITS_OF_MEASUREMENT), custom_value=True, mode=SelectSelectorMode.DROPDOWN, translation_key="unit_of_measurement", From 8158da573a40210e3cfc91fad2d4114759dc602d Mon Sep 17 00:00:00 2001 From: Robert Resch Date: Tue, 12 Dec 2023 13:04:17 +0000 Subject: [PATCH 4/4] update translations --- homeassistant/components/scrape/config_flow.py | 1 - homeassistant/components/scrape/strings.json | 7 +------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/homeassistant/components/scrape/config_flow.py b/homeassistant/components/scrape/config_flow.py index a2ac29278e2..7af347acbc5 100644 --- a/homeassistant/components/scrape/config_flow.py +++ b/homeassistant/components/scrape/config_flow.py @@ -128,7 +128,6 @@ SENSOR_SETUP = { custom_value=True, mode=SelectSelectorMode.DROPDOWN, translation_key="unit_of_measurement", - sort=True, ) ), } diff --git a/homeassistant/components/scrape/strings.json b/homeassistant/components/scrape/strings.json index 217e69b27df..06e0bd50af8 100644 --- a/homeassistant/components/scrape/strings.json +++ b/homeassistant/components/scrape/strings.json @@ -48,7 +48,7 @@ "value_template": "Defines a template to get the state of the sensor", "device_class": "The type/class of the sensor to set the icon in the frontend", "state_class": "The state_class of the sensor", - "unit_of_measurement": "Choose temperature measurement or create your own" + "unit_of_measurement": "Choose a unit of measurement or create your own" } } } @@ -190,11 +190,6 @@ "total": "[%key:component::sensor::entity_component::_::state_attributes::state_class::state::total%]", "total_increasing": "[%key:component::sensor::entity_component::_::state_attributes::state_class::state::total_increasing%]" } - }, - "unit_of_measurement": { - "options": { - "none": "No unit of measurement" - } } } }