From 63de17fd45378043c1b6d2921ee9e3a115639cf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ab=C3=ADlio=20Costa?= Date: Thu, 2 Jul 2026 18:04:15 +0100 Subject: [PATCH] Add `radon` device class to number and sensor (#175135) --- homeassistant/components/number/const.py | 12 ++++++++++ homeassistant/components/number/icons.json | 3 +++ homeassistant/components/number/strings.json | 3 +++ .../components/recorder/statistics.py | 2 ++ .../components/recorder/websocket_api.py | 4 ++++ homeassistant/components/sensor/const.py | 14 ++++++++++++ .../components/sensor/device_condition.py | 3 +++ .../components/sensor/device_trigger.py | 3 +++ homeassistant/components/sensor/icons.json | 3 +++ homeassistant/components/sensor/strings.json | 5 +++++ homeassistant/const.py | 7 ++++++ homeassistant/generated/sensor.json | 1 + homeassistant/util/unit_conversion.py | 17 ++++++++++++++ homeassistant/util/unit_system.py | 11 ++++++++++ .../knx/snapshots/test_websocket.ambr | 6 +++++ tests/components/sensor/common.py | 2 ++ .../sensor/test_device_condition.py | 2 +- .../components/sensor/test_device_trigger.py | 2 +- tests/util/test_unit_conversion.py | 22 +++++++++++++++++++ tests/util/test_unit_system.py | 5 +++++ 20 files changed, 125 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/number/const.py b/homeassistant/components/number/const.py index 289fa9749ebe..f7756626add8 100644 --- a/homeassistant/components/number/const.py +++ b/homeassistant/components/number/const.py @@ -28,6 +28,7 @@ from homeassistant.const import ( UnitOfPower, UnitOfPrecipitationDepth, UnitOfPressure, + UnitOfRadiationConcentration, UnitOfRatio, UnitOfReactiveEnergy, UnitOfReactivePower, @@ -62,6 +63,7 @@ from homeassistant.util.unit_conversion import ( OzoneConcentrationConverter, PowerConverter, PressureConverter, + RadiationConcentrationConverter, ReactiveEnergyConverter, ReactivePowerConverter, SpeedConverter, @@ -373,6 +375,14 @@ class NumberDeviceClass(StrEnum): - `inH₂O` """ + RADON = "radon" + """Radon. + + Unit of measurement: UnitOfRadiationConcentration + - SI / metric: `Bq/m³` + - USCS / imperial: `pCi/L` + """ + REACTIVE_ENERGY = "reactive_energy" """Reactive energy. @@ -587,6 +597,7 @@ DEVICE_CLASS_UNITS: dict[NumberDeviceClass, set[type[StrEnum] | str | None]] = { NumberDeviceClass.PRECIPITATION: set(UnitOfPrecipitationDepth), NumberDeviceClass.PRECIPITATION_INTENSITY: set(UnitOfVolumetricFlux), NumberDeviceClass.PRESSURE: set(UnitOfPressure), + NumberDeviceClass.RADON: set(UnitOfRadiationConcentration), NumberDeviceClass.REACTIVE_ENERGY: set(UnitOfReactiveEnergy), NumberDeviceClass.REACTIVE_POWER: set(UnitOfReactivePower), NumberDeviceClass.SIGNAL_STRENGTH: { @@ -652,6 +663,7 @@ UNIT_CONVERTERS: dict[NumberDeviceClass, type[BaseUnitConverter]] = { NumberDeviceClass.PRECIPITATION: DistanceConverter, NumberDeviceClass.PRECIPITATION_INTENSITY: SpeedConverter, NumberDeviceClass.PRESSURE: PressureConverter, + NumberDeviceClass.RADON: RadiationConcentrationConverter, NumberDeviceClass.REACTIVE_ENERGY: ReactiveEnergyConverter, NumberDeviceClass.REACTIVE_POWER: ReactivePowerConverter, NumberDeviceClass.SULPHUR_DIOXIDE: SulphurDioxideConcentrationConverter, diff --git a/homeassistant/components/number/icons.json b/homeassistant/components/number/icons.json index b02583815d3b..b14504174efc 100644 --- a/homeassistant/components/number/icons.json +++ b/homeassistant/components/number/icons.json @@ -114,6 +114,9 @@ "pressure": { "default": "mdi:gauge" }, + "radon": { + "default": "mdi:radioactive" + }, "reactive_energy": { "default": "mdi:lightning-bolt" }, diff --git a/homeassistant/components/number/strings.json b/homeassistant/components/number/strings.json index 8d80be6ae1f4..37f19f132c41 100644 --- a/homeassistant/components/number/strings.json +++ b/homeassistant/components/number/strings.json @@ -135,6 +135,9 @@ "pressure": { "name": "[%key:component::sensor::entity_component::pressure::name%]" }, + "radon": { + "name": "[%key:component::sensor::entity_component::radon::name%]" + }, "reactive_energy": { "name": "[%key:component::sensor::entity_component::reactive_energy::name%]" }, diff --git a/homeassistant/components/recorder/statistics.py b/homeassistant/components/recorder/statistics.py index 329e51460ee9..641dc5e2973a 100644 --- a/homeassistant/components/recorder/statistics.py +++ b/homeassistant/components/recorder/statistics.py @@ -64,6 +64,7 @@ from homeassistant.util.unit_conversion import ( OzoneConcentrationConverter, PowerConverter, PressureConverter, + RadiationConcentrationConverter, ReactiveEnergyConverter, ReactivePowerConverter, SpeedConverter, @@ -219,6 +220,7 @@ _PRIMARY_UNIT_CONVERTERS: list[type[BaseUnitConverter]] = [ MassVolumeConcentrationConverter, PowerConverter, PressureConverter, + RadiationConcentrationConverter, ReactiveEnergyConverter, ReactivePowerConverter, SpeedConverter, diff --git a/homeassistant/components/recorder/websocket_api.py b/homeassistant/components/recorder/websocket_api.py index 764e4af613bd..f77a31b93d00 100644 --- a/homeassistant/components/recorder/websocket_api.py +++ b/homeassistant/components/recorder/websocket_api.py @@ -37,6 +37,7 @@ from homeassistant.util.unit_conversion import ( OzoneConcentrationConverter, PowerConverter, PressureConverter, + RadiationConcentrationConverter, ReactiveEnergyConverter, ReactivePowerConverter, SpeedConverter, @@ -101,6 +102,9 @@ UNIT_SCHEMA = vol.Schema( vol.Optional("ozone"): vol.In(OzoneConcentrationConverter.VALID_UNITS), vol.Optional("power"): vol.In(PowerConverter.VALID_UNITS), vol.Optional("pressure"): vol.In(PressureConverter.VALID_UNITS), + vol.Optional("radiation_concentration"): vol.In( + RadiationConcentrationConverter.VALID_UNITS + ), vol.Optional("reactive_energy"): vol.In(ReactiveEnergyConverter.VALID_UNITS), vol.Optional("reactive_power"): vol.In(ReactivePowerConverter.VALID_UNITS), vol.Optional("speed"): vol.In(SpeedConverter.VALID_UNITS), diff --git a/homeassistant/components/sensor/const.py b/homeassistant/components/sensor/const.py index f0d6b1e52265..c09a4c465dfb 100644 --- a/homeassistant/components/sensor/const.py +++ b/homeassistant/components/sensor/const.py @@ -28,6 +28,7 @@ from homeassistant.const import ( UnitOfPower, UnitOfPrecipitationDepth, UnitOfPressure, + UnitOfRadiationConcentration, UnitOfRatio, UnitOfReactiveEnergy, UnitOfReactivePower, @@ -62,6 +63,7 @@ from homeassistant.util.unit_conversion import ( OzoneConcentrationConverter, PowerConverter, PressureConverter, + RadiationConcentrationConverter, ReactiveEnergyConverter, ReactivePowerConverter, SpeedConverter, @@ -404,6 +406,14 @@ class SensorDeviceClass(StrEnum): - `inH₂O` """ + RADON = "radon" + """Radon. + + Unit of measurement: UnitOfRadiationConcentration + - SI / metric: `Bq/m³` + - USCS / imperial: `pCi/L` + """ + REACTIVE_ENERGY = "reactive_energy" """Reactive energy. @@ -611,6 +621,7 @@ UNIT_CONVERTERS: dict[SensorDeviceClass | str | None, type[BaseUnitConverter]] = SensorDeviceClass.PRECIPITATION: DistanceConverter, SensorDeviceClass.PRECIPITATION_INTENSITY: SpeedConverter, SensorDeviceClass.PRESSURE: PressureConverter, + SensorDeviceClass.RADON: RadiationConcentrationConverter, SensorDeviceClass.REACTIVE_ENERGY: ReactiveEnergyConverter, SensorDeviceClass.REACTIVE_POWER: ReactivePowerConverter, SensorDeviceClass.SULPHUR_DIOXIDE: SulphurDioxideConcentrationConverter, @@ -706,6 +717,7 @@ DEVICE_CLASS_UNITS: dict[SensorDeviceClass, set[type[StrEnum] | str | None]] = { SensorDeviceClass.PRECIPITATION: set(UnitOfPrecipitationDepth), SensorDeviceClass.PRECIPITATION_INTENSITY: set(UnitOfVolumetricFlux), SensorDeviceClass.PRESSURE: set(UnitOfPressure), + SensorDeviceClass.RADON: set(UnitOfRadiationConcentration), SensorDeviceClass.REACTIVE_ENERGY: set(UnitOfReactiveEnergy), SensorDeviceClass.REACTIVE_POWER: set(UnitOfReactivePower), SensorDeviceClass.SIGNAL_STRENGTH: { @@ -780,6 +792,7 @@ UNITS_PRECISION = { 0, ), SensorDeviceClass.PRESSURE: (UnitOfPressure.PA, 0), + SensorDeviceClass.RADON: (UnitOfRadiationConcentration.PICOCURIES_PER_LITER, 1), SensorDeviceClass.REACTIVE_POWER: (UnitOfReactivePower.VOLT_AMPERE_REACTIVE, 0), SensorDeviceClass.SOUND_PRESSURE: (UnitOfSoundPressure.DECIBEL, 0), SensorDeviceClass.SPEED: (UnitOfSpeed.MILLIMETERS_PER_SECOND, 0), @@ -839,6 +852,7 @@ DEVICE_CLASS_STATE_CLASSES: dict[SensorDeviceClass, set[SensorStateClass]] = { SensorDeviceClass.PRECIPITATION: set(SensorStateClass), SensorDeviceClass.PRECIPITATION_INTENSITY: {SensorStateClass.MEASUREMENT}, SensorDeviceClass.PRESSURE: {SensorStateClass.MEASUREMENT}, + SensorDeviceClass.RADON: {SensorStateClass.MEASUREMENT}, SensorDeviceClass.REACTIVE_ENERGY: { SensorStateClass.TOTAL, SensorStateClass.TOTAL_INCREASING, diff --git a/homeassistant/components/sensor/device_condition.py b/homeassistant/components/sensor/device_condition.py index 27846ae6face..433ecb7eec68 100644 --- a/homeassistant/components/sensor/device_condition.py +++ b/homeassistant/components/sensor/device_condition.py @@ -69,6 +69,7 @@ CONF_IS_POWER_FACTOR = "is_power_factor" CONF_IS_PRECIPITATION = "is_precipitation" CONF_IS_PRECIPITATION_INTENSITY = "is_precipitation_intensity" CONF_IS_PRESSURE = "is_pressure" +CONF_IS_RADON = "is_radon" CONF_IS_SPEED = "is_speed" CONF_IS_REACTIVE_ENERGY = "is_reactive_energy" CONF_IS_REACTIVE_POWER = "is_reactive_power" @@ -132,6 +133,7 @@ ENTITY_CONDITIONS = { {CONF_TYPE: CONF_IS_PRECIPITATION_INTENSITY} ], SensorDeviceClass.PRESSURE: [{CONF_TYPE: CONF_IS_PRESSURE}], + SensorDeviceClass.RADON: [{CONF_TYPE: CONF_IS_RADON}], SensorDeviceClass.REACTIVE_ENERGY: [{CONF_TYPE: CONF_IS_REACTIVE_ENERGY}], SensorDeviceClass.REACTIVE_POWER: [{CONF_TYPE: CONF_IS_REACTIVE_POWER}], SensorDeviceClass.SIGNAL_STRENGTH: [{CONF_TYPE: CONF_IS_SIGNAL_STRENGTH}], @@ -201,6 +203,7 @@ CONDITION_SCHEMA = vol.All( CONF_IS_PRECIPITATION, CONF_IS_PRECIPITATION_INTENSITY, CONF_IS_PRESSURE, + CONF_IS_RADON, CONF_IS_REACTIVE_ENERGY, CONF_IS_REACTIVE_POWER, CONF_IS_SIGNAL_STRENGTH, diff --git a/homeassistant/components/sensor/device_trigger.py b/homeassistant/components/sensor/device_trigger.py index b0babe303129..1d9fae637092 100644 --- a/homeassistant/components/sensor/device_trigger.py +++ b/homeassistant/components/sensor/device_trigger.py @@ -70,6 +70,7 @@ CONF_POWER_FACTOR = "power_factor" CONF_PRECIPITATION = "precipitation" CONF_PRECIPITATION_INTENSITY = "precipitation_intensity" CONF_PRESSURE = "pressure" +CONF_RADON = "radon" CONF_REACTIVE_ENERGY = "reactive_energy" CONF_REACTIVE_POWER = "reactive_power" CONF_SIGNAL_STRENGTH = "signal_strength" @@ -133,6 +134,7 @@ ENTITY_TRIGGERS = { {CONF_TYPE: CONF_PRECIPITATION_INTENSITY} ], SensorDeviceClass.PRESSURE: [{CONF_TYPE: CONF_PRESSURE}], + SensorDeviceClass.RADON: [{CONF_TYPE: CONF_RADON}], SensorDeviceClass.REACTIVE_ENERGY: [{CONF_TYPE: CONF_REACTIVE_ENERGY}], SensorDeviceClass.REACTIVE_POWER: [{CONF_TYPE: CONF_REACTIVE_POWER}], SensorDeviceClass.SIGNAL_STRENGTH: [{CONF_TYPE: CONF_SIGNAL_STRENGTH}], @@ -203,6 +205,7 @@ TRIGGER_SCHEMA = vol.All( CONF_PRECIPITATION, CONF_PRECIPITATION_INTENSITY, CONF_PRESSURE, + CONF_RADON, CONF_REACTIVE_ENERGY, CONF_REACTIVE_POWER, CONF_SIGNAL_STRENGTH, diff --git a/homeassistant/components/sensor/icons.json b/homeassistant/components/sensor/icons.json index 966e19439e38..63bbcaafb04b 100644 --- a/homeassistant/components/sensor/icons.json +++ b/homeassistant/components/sensor/icons.json @@ -136,6 +136,9 @@ "pressure": { "default": "mdi:gauge" }, + "radon": { + "default": "mdi:radioactive" + }, "reactive_energy": { "default": "mdi:lightning-bolt" }, diff --git a/homeassistant/components/sensor/strings.json b/homeassistant/components/sensor/strings.json index e51c139e8dea..4a89504f2a1f 100644 --- a/homeassistant/components/sensor/strings.json +++ b/homeassistant/components/sensor/strings.json @@ -39,6 +39,7 @@ "is_precipitation": "Current {entity_name} precipitation", "is_precipitation_intensity": "Current {entity_name} precipitation intensity", "is_pressure": "Current {entity_name} pressure", + "is_radon": "Current {entity_name} radon concentration level", "is_reactive_energy": "Current {entity_name} reactive energy", "is_reactive_power": "Current {entity_name} reactive power", "is_signal_strength": "Current {entity_name} signal strength", @@ -102,6 +103,7 @@ "precipitation": "{entity_name} precipitation changes", "precipitation_intensity": "{entity_name} precipitation intensity changes", "pressure": "{entity_name} pressure changes", + "radon": "{entity_name} radon concentration changes", "reactive_energy": "{entity_name} reactive energy changes", "reactive_power": "{entity_name} reactive power changes", "signal_strength": "{entity_name} signal strength changes", @@ -270,6 +272,9 @@ "pressure": { "name": "Pressure" }, + "radon": { + "name": "Radon" + }, "reactive_energy": { "name": "Reactive energy" }, diff --git a/homeassistant/const.py b/homeassistant/const.py index 648f07b37f83..326742e062e1 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -830,6 +830,13 @@ class UnitOfBloodGlucoseConcentration(StrEnum): MILLIMOLE_PER_LITER = "mmol/L" +class UnitOfRadiationConcentration(StrEnum): + """Radiation concentration units.""" + + BECQUEREL_PER_CUBIC_METER = "Bq/m³" + PICOCURIES_PER_LITER = "pCi/L" + + # Speed units class UnitOfSpeed(StrEnum): """Speed units.""" diff --git a/homeassistant/generated/sensor.json b/homeassistant/generated/sensor.json index dec0d0499eb5..cacd815794b5 100644 --- a/homeassistant/generated/sensor.json +++ b/homeassistant/generated/sensor.json @@ -39,6 +39,7 @@ "precipitation", "precipitation_intensity", "pressure", + "radon", "reactive_energy", "reactive_power", "signal_strength", diff --git a/homeassistant/util/unit_conversion.py b/homeassistant/util/unit_conversion.py index 55d61a804ab2..a9e4267a40b3 100644 --- a/homeassistant/util/unit_conversion.py +++ b/homeassistant/util/unit_conversion.py @@ -23,6 +23,7 @@ from homeassistant.const import ( UnitOfMass, UnitOfPower, UnitOfPressure, + UnitOfRadiationConcentration, UnitOfRatio, UnitOfReactiveEnergy, UnitOfReactivePower, @@ -105,6 +106,9 @@ _NITROGEN_MONOXIDE_MOLAR_MASS = 30.0061 _OZONE_MOLAR_MASS = 48.00 _SULPHUR_DIOXIDE_MOLAR_MASS = 64.066 +# Radiation concentration conversion constant +_PICOCURIES_PER_LITER_TO_BECQUEREL_PER_CUBIC_METER = 37 # 1 pCi/L = 37 Bq/m³ + class BaseUnitConverter: """Define the format of a conversion utility.""" @@ -612,6 +616,19 @@ class PressureConverter(BaseUnitConverter): } +class RadiationConcentrationConverter(BaseUnitConverter): + """Utility to convert radiation concentration values.""" + + UNIT_CLASS = "radiation_concentration" + _UNIT_CONVERSION: dict[str | None, float] = { + UnitOfRadiationConcentration.BECQUEREL_PER_CUBIC_METER: 1, + UnitOfRadiationConcentration.PICOCURIES_PER_LITER: ( + 1 / _PICOCURIES_PER_LITER_TO_BECQUEREL_PER_CUBIC_METER + ), + } + VALID_UNITS = set(UnitOfRadiationConcentration) + + class ReactiveEnergyConverter(BaseUnitConverter): """Utility to convert reactive energy values.""" diff --git a/homeassistant/util/unit_system.py b/homeassistant/util/unit_system.py index ccef442d32e9..23f4f504bb0c 100644 --- a/homeassistant/util/unit_system.py +++ b/homeassistant/util/unit_system.py @@ -21,6 +21,7 @@ from homeassistant.const import ( UnitOfMass, UnitOfPrecipitationDepth, UnitOfPressure, + UnitOfRadiationConcentration, UnitOfSpeed, UnitOfTemperature, UnitOfVolume, @@ -295,6 +296,11 @@ METRIC_SYSTEM = UnitSystem( ("pressure", UnitOfPressure.PSI): UnitOfPressure.KPA, ("pressure", UnitOfPressure.INHG): UnitOfPressure.HPA, ("pressure", UnitOfPressure.INH2O): UnitOfPressure.KPA, + # Convert non-metric radon concentration + ( + "radon", + UnitOfRadiationConcentration.PICOCURIES_PER_LITER, + ): UnitOfRadiationConcentration.BECQUEREL_PER_CUBIC_METER, # Convert non-metric speeds except knots to km/h ("speed", UnitOfSpeed.FEET_PER_SECOND): UnitOfSpeed.KILOMETERS_PER_HOUR, ("speed", UnitOfSpeed.INCHES_PER_SECOND): UnitOfSpeed.MILLIMETERS_PER_SECOND, @@ -380,6 +386,11 @@ US_CUSTOMARY_SYSTEM = UnitSystem( ("pressure", UnitOfPressure.KPA): UnitOfPressure.PSI, ("pressure", UnitOfPressure.MMHG): UnitOfPressure.INHG, ("pressure", UnitOfPressure.INH2O): UnitOfPressure.PSI, + # Convert non-USCS radon concentration + ( + "radon", + UnitOfRadiationConcentration.BECQUEREL_PER_CUBIC_METER, + ): UnitOfRadiationConcentration.PICOCURIES_PER_LITER, # Convert non-USCS speeds, except knots, to mph ("speed", UnitOfSpeed.METERS_PER_MINUTE): UnitOfSpeed.INCHES_PER_SECOND, ("speed", UnitOfSpeed.METERS_PER_SECOND): UnitOfSpeed.MILES_PER_HOUR, diff --git a/tests/components/knx/snapshots/test_websocket.ambr b/tests/components/knx/snapshots/test_websocket.ambr index ee0ebce81ab2..072bfa46f0be 100644 --- a/tests/components/knx/snapshots/test_websocket.ambr +++ b/tests/components/knx/snapshots/test_websocket.ambr @@ -1726,6 +1726,7 @@ 'B/s', 'BTU/(h⋅ft²)', 'Beaufort', + 'Bq/m³', 'CCF', 'EB', 'EiB', @@ -1875,6 +1876,7 @@ 'm³/s', 'nmi', 'oz', + 'pCi/L', 'ppb', 'ppm', 'psi', @@ -1947,6 +1949,7 @@ 'precipitation', 'precipitation_intensity', 'pressure', + 'radon', 'reactive_energy', 'reactive_power', 'signal_strength', @@ -2071,6 +2074,7 @@ 'B/s', 'BTU/(h⋅ft²)', 'Beaufort', + 'Bq/m³', 'CCF', 'EB', 'EiB', @@ -2220,6 +2224,7 @@ 'm³/s', 'nmi', 'oz', + 'pCi/L', 'ppb', 'ppm', 'psi', @@ -2296,6 +2301,7 @@ 'precipitation', 'precipitation_intensity', 'pressure', + 'radon', 'reactive_energy', 'reactive_power', 'signal_strength', diff --git a/tests/components/sensor/common.py b/tests/components/sensor/common.py index 1313f0b7e96b..c87b8148c253 100644 --- a/tests/components/sensor/common.py +++ b/tests/components/sensor/common.py @@ -28,6 +28,7 @@ from homeassistant.const import ( UnitOfPower, UnitOfPrecipitationDepth, UnitOfPressure, + UnitOfRadiationConcentration, UnitOfRatio, UnitOfReactiveEnergy, UnitOfReactivePower, @@ -88,6 +89,7 @@ UNITS_OF_MEASUREMENT = { UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR ), SensorDeviceClass.PRESSURE: UnitOfPressure.HPA, + SensorDeviceClass.RADON: UnitOfRadiationConcentration.BECQUEREL_PER_CUBIC_METER, SensorDeviceClass.REACTIVE_ENERGY: UnitOfReactiveEnergy.VOLT_AMPERE_REACTIVE_HOUR, SensorDeviceClass.REACTIVE_POWER: UnitOfReactivePower.VOLT_AMPERE_REACTIVE, SensorDeviceClass.SIGNAL_STRENGTH: SIGNAL_STRENGTH_DECIBELS, diff --git a/tests/components/sensor/test_device_condition.py b/tests/components/sensor/test_device_condition.py index 0404b3c5ae7c..b12f929228b2 100644 --- a/tests/components/sensor/test_device_condition.py +++ b/tests/components/sensor/test_device_condition.py @@ -121,7 +121,7 @@ async def test_get_conditions( conditions = await async_get_device_automations( hass, DeviceAutomationType.CONDITION, device_entry.id ) - assert len(conditions) == 57 + assert len(conditions) == 58 assert conditions == unordered(expected_conditions) diff --git a/tests/components/sensor/test_device_trigger.py b/tests/components/sensor/test_device_trigger.py index d796dd1158a6..046f9c6d1616 100644 --- a/tests/components/sensor/test_device_trigger.py +++ b/tests/components/sensor/test_device_trigger.py @@ -122,7 +122,7 @@ async def test_get_triggers( triggers = await async_get_device_automations( hass, DeviceAutomationType.TRIGGER, device_entry.id ) - assert len(triggers) == 57 + assert len(triggers) == 58 assert triggers == unordered(expected_triggers) diff --git a/tests/util/test_unit_conversion.py b/tests/util/test_unit_conversion.py index 830ae5f6f2d3..a729c43dd46d 100644 --- a/tests/util/test_unit_conversion.py +++ b/tests/util/test_unit_conversion.py @@ -22,6 +22,7 @@ from homeassistant.const import ( UnitOfMass, UnitOfPower, UnitOfPressure, + UnitOfRadiationConcentration, UnitOfRatio, UnitOfReactiveEnergy, UnitOfReactivePower, @@ -57,6 +58,7 @@ from homeassistant.util.unit_conversion import ( OzoneConcentrationConverter, PowerConverter, PressureConverter, + RadiationConcentrationConverter, ReactiveEnergyConverter, ReactivePowerConverter, SpeedConverter, @@ -95,6 +97,7 @@ _ALL_CONVERTERS: dict[type[BaseUnitConverter], list[str | None]] = { OzoneConcentrationConverter, PowerConverter, PressureConverter, + RadiationConcentrationConverter, ReactiveEnergyConverter, ReactivePowerConverter, SpeedConverter, @@ -181,6 +184,11 @@ _GET_UNIT_RATIO: dict[type[BaseUnitConverter], tuple[str | None, str | None, flo ), PowerConverter: (UnitOfPower.WATT, UnitOfPower.KILO_WATT, 1000), PressureConverter: (UnitOfPressure.HPA, UnitOfPressure.INHG, 33.86389), + RadiationConcentrationConverter: ( + UnitOfRadiationConcentration.BECQUEREL_PER_CUBIC_METER, + UnitOfRadiationConcentration.PICOCURIES_PER_LITER, + 37, + ), ReactiveEnergyConverter: ( UnitOfReactiveEnergy.VOLT_AMPERE_REACTIVE_HOUR, UnitOfReactiveEnergy.KILO_VOLT_AMPERE_REACTIVE_HOUR, @@ -874,6 +882,20 @@ _CONVERTED_VALUE: dict[ (30, UnitOfPressure.MMHG, 16.0572051431838, UnitOfPressure.INH2O), (5, UnitOfPressure.BAR, 72.51887, UnitOfPressure.PSI), ], + RadiationConcentrationConverter: [ + ( + 37, + UnitOfRadiationConcentration.BECQUEREL_PER_CUBIC_METER, + 1, + UnitOfRadiationConcentration.PICOCURIES_PER_LITER, + ), + ( + 1, + UnitOfRadiationConcentration.PICOCURIES_PER_LITER, + 37, + UnitOfRadiationConcentration.BECQUEREL_PER_CUBIC_METER, + ), + ], ReactiveEnergyConverter: [ ( 5, diff --git a/tests/util/test_unit_system.py b/tests/util/test_unit_system.py index 1bac5837f1f7..a95797d68c8c 100644 --- a/tests/util/test_unit_system.py +++ b/tests/util/test_unit_system.py @@ -17,6 +17,7 @@ from homeassistant.const import ( UnitOfMass, UnitOfPrecipitationDepth, UnitOfPressure, + UnitOfRadiationConcentration, UnitOfSpeed, UnitOfTemperature, UnitOfVolume, @@ -609,6 +610,7 @@ UNCONVERTED_UNITS_METRIC_SYSTEM = { UnitOfPressure.MILLIPASCAL, UnitOfPressure.PA, ), + SensorDeviceClass.RADON: (UnitOfRadiationConcentration.BECQUEREL_PER_CUBIC_METER,), SensorDeviceClass.SPEED: ( UnitOfSpeed.BEAUFORT, UnitOfSpeed.KILOMETERS_PER_HOUR, @@ -641,6 +643,7 @@ UNCONVERTED_UNITS_METRIC_SYSTEM = { SensorDeviceClass.PRECIPITATION, SensorDeviceClass.PRECIPITATION_INTENSITY, SensorDeviceClass.PRESSURE, + SensorDeviceClass.RADON, SensorDeviceClass.SPEED, SensorDeviceClass.VOLUME, SensorDeviceClass.WATER, @@ -857,6 +860,7 @@ UNCONVERTED_UNITS_US_SYSTEM = { UnitOfVolumetricFlux.INCHES_PER_HOUR, ), SensorDeviceClass.PRESSURE: (UnitOfPressure.INHG, UnitOfPressure.PSI), + SensorDeviceClass.RADON: (UnitOfRadiationConcentration.PICOCURIES_PER_LITER,), SensorDeviceClass.SPEED: ( UnitOfSpeed.BEAUFORT, UnitOfSpeed.FEET_PER_SECOND, @@ -891,6 +895,7 @@ UNCONVERTED_UNITS_US_SYSTEM = { SensorDeviceClass.PRECIPITATION, SensorDeviceClass.PRECIPITATION_INTENSITY, SensorDeviceClass.PRESSURE, + SensorDeviceClass.RADON, SensorDeviceClass.SPEED, SensorDeviceClass.VOLUME, SensorDeviceClass.WATER,