mirror of
https://github.com/home-assistant/core.git
synced 2026-05-31 21:19:56 +02:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b6d6398933 |
+11
-5
@@ -701,9 +701,6 @@ LIGHT_LUX: Final = "lx"
|
||||
# UV Index units
|
||||
UV_INDEX: Final = "UV index"
|
||||
|
||||
# Percentage units
|
||||
PERCENTAGE: Final = "%"
|
||||
|
||||
# Rotational speed units
|
||||
REVOLUTIONS_PER_MINUTE: Final = "rpm"
|
||||
|
||||
@@ -753,14 +750,23 @@ class UnitOfPrecipitationDepth(StrEnum):
|
||||
"""Derived from cm³/cm²"""
|
||||
|
||||
|
||||
class UnitOfProportion(StrEnum):
|
||||
"""Proportion units."""
|
||||
|
||||
PARTS_PER_MILLION = "ppm"
|
||||
PARTS_PER_BILLION = "ppb"
|
||||
PERCENTAGE = "%"
|
||||
|
||||
|
||||
# Concentration units
|
||||
CONCENTRATION_GRAMS_PER_CUBIC_METER: Final = "g/m³"
|
||||
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER: Final = "mg/m³"
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: Final = "μg/m³"
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_FOOT: Final = "μg/ft³"
|
||||
CONCENTRATION_PARTS_PER_CUBIC_METER: Final = "p/m³"
|
||||
CONCENTRATION_PARTS_PER_MILLION: Final = "ppm"
|
||||
CONCENTRATION_PARTS_PER_BILLION: Final = "ppb"
|
||||
CONCENTRATION_PARTS_PER_MILLION: Final = UnitOfProportion.PARTS_PER_MILLION.value
|
||||
CONCENTRATION_PARTS_PER_BILLION: Final = UnitOfProportion.PARTS_PER_BILLION.value
|
||||
PERCENTAGE: Final = UnitOfProportion.PERCENTAGE.value
|
||||
|
||||
|
||||
class UnitOfBloodGlucoseConcentration(StrEnum):
|
||||
|
||||
@@ -8,9 +8,6 @@ from homeassistant.const import (
|
||||
CONCENTRATION_GRAMS_PER_CUBIC_METER,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
PERCENTAGE,
|
||||
UNIT_NOT_RECOGNIZED_TEMPLATE,
|
||||
UnitOfApparentPower,
|
||||
UnitOfArea,
|
||||
@@ -27,6 +24,7 @@ from homeassistant.const import (
|
||||
UnitOfMass,
|
||||
UnitOfPower,
|
||||
UnitOfPressure,
|
||||
UnitOfProportion,
|
||||
UnitOfReactiveEnergy,
|
||||
UnitOfReactivePower,
|
||||
UnitOfSpeed,
|
||||
@@ -246,8 +244,8 @@ class CarbonMonoxideConcentrationConverter(BaseUnitConverter):
|
||||
|
||||
UNIT_CLASS = "carbon_monoxide"
|
||||
_UNIT_CONVERSION: dict[str | None, float] = {
|
||||
CONCENTRATION_PARTS_PER_BILLION: 1e9,
|
||||
CONCENTRATION_PARTS_PER_MILLION: 1e6,
|
||||
UnitOfProportion.PARTS_PER_BILLION: 1e9,
|
||||
UnitOfProportion.PARTS_PER_MILLION: 1e6,
|
||||
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER: (
|
||||
_CARBON_MONOXIDE_MOLAR_MASS / _AMBIENT_IDEAL_GAS_MOLAR_VOLUME * 1e3
|
||||
),
|
||||
@@ -256,8 +254,8 @@ class CarbonMonoxideConcentrationConverter(BaseUnitConverter):
|
||||
),
|
||||
}
|
||||
VALID_UNITS = {
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
}
|
||||
@@ -510,15 +508,15 @@ class NitrogenDioxideConcentrationConverter(BaseUnitConverter):
|
||||
|
||||
UNIT_CLASS = "nitrogen_dioxide"
|
||||
_UNIT_CONVERSION: dict[str | None, float] = {
|
||||
CONCENTRATION_PARTS_PER_BILLION: 1e9,
|
||||
CONCENTRATION_PARTS_PER_MILLION: 1e6,
|
||||
UnitOfProportion.PARTS_PER_BILLION: 1e9,
|
||||
UnitOfProportion.PARTS_PER_MILLION: 1e6,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: (
|
||||
_NITROGEN_DIOXIDE_MOLAR_MASS / _AMBIENT_IDEAL_GAS_MOLAR_VOLUME * 1e6
|
||||
),
|
||||
}
|
||||
VALID_UNITS = {
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
}
|
||||
|
||||
@@ -528,13 +526,13 @@ class NitrogenMonoxideConcentrationConverter(BaseUnitConverter):
|
||||
|
||||
UNIT_CLASS = "nitrogen_monoxide"
|
||||
_UNIT_CONVERSION: dict[str | None, float] = {
|
||||
CONCENTRATION_PARTS_PER_BILLION: 1e9,
|
||||
UnitOfProportion.PARTS_PER_BILLION: 1e9,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: (
|
||||
_NITROGEN_MONOXIDE_MOLAR_MASS / _AMBIENT_IDEAL_GAS_MOLAR_VOLUME * 1e6
|
||||
),
|
||||
}
|
||||
VALID_UNITS = {
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
}
|
||||
|
||||
@@ -544,15 +542,15 @@ class OzoneConcentrationConverter(BaseUnitConverter):
|
||||
|
||||
UNIT_CLASS = "ozone"
|
||||
_UNIT_CONVERSION: dict[str | None, float] = {
|
||||
CONCENTRATION_PARTS_PER_BILLION: 1e9,
|
||||
CONCENTRATION_PARTS_PER_MILLION: 1e6,
|
||||
UnitOfProportion.PARTS_PER_BILLION: 1e9,
|
||||
UnitOfProportion.PARTS_PER_MILLION: 1e6,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: (
|
||||
_OZONE_MOLAR_MASS / _AMBIENT_IDEAL_GAS_MOLAR_VOLUME * 1e6
|
||||
),
|
||||
}
|
||||
VALID_UNITS = {
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
}
|
||||
|
||||
@@ -750,13 +748,13 @@ class SulphurDioxideConcentrationConverter(BaseUnitConverter):
|
||||
|
||||
UNIT_CLASS = "sulphur_dioxide"
|
||||
_UNIT_CONVERSION: dict[str | None, float] = {
|
||||
CONCENTRATION_PARTS_PER_BILLION: 1e9,
|
||||
UnitOfProportion.PARTS_PER_BILLION: 1e9,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: (
|
||||
_SULPHUR_DIOXIDE_MOLAR_MASS / _AMBIENT_IDEAL_GAS_MOLAR_VOLUME * 1e6
|
||||
),
|
||||
}
|
||||
VALID_UNITS = {
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
}
|
||||
|
||||
@@ -922,15 +920,15 @@ class UnitlessRatioConverter(BaseUnitConverter):
|
||||
UNIT_CLASS = "unitless"
|
||||
_UNIT_CONVERSION: dict[str | None, float] = {
|
||||
None: 1,
|
||||
CONCENTRATION_PARTS_PER_BILLION: 1000000000,
|
||||
CONCENTRATION_PARTS_PER_MILLION: 1000000,
|
||||
PERCENTAGE: 100,
|
||||
UnitOfProportion.PARTS_PER_BILLION: 1000000000,
|
||||
UnitOfProportion.PARTS_PER_MILLION: 1000000,
|
||||
UnitOfProportion.PERCENTAGE: 100,
|
||||
}
|
||||
VALID_UNITS = {
|
||||
None,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
PERCENTAGE,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
UnitOfProportion.PERCENTAGE,
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -9,9 +9,6 @@ from homeassistant.const import (
|
||||
CONCENTRATION_GRAMS_PER_CUBIC_METER,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
PERCENTAGE,
|
||||
UnitOfApparentPower,
|
||||
UnitOfArea,
|
||||
UnitOfBloodGlucoseConcentration,
|
||||
@@ -27,6 +24,7 @@ from homeassistant.const import (
|
||||
UnitOfMass,
|
||||
UnitOfPower,
|
||||
UnitOfPressure,
|
||||
UnitOfProportion,
|
||||
UnitOfReactiveEnergy,
|
||||
UnitOfReactivePower,
|
||||
UnitOfSpeed,
|
||||
@@ -129,7 +127,7 @@ _GET_UNIT_RATIO: dict[type[BaseUnitConverter], tuple[str | None, str | None, flo
|
||||
),
|
||||
CarbonMonoxideConcentrationConverter: (
|
||||
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
1.16441,
|
||||
),
|
||||
ConductivityConverter: (
|
||||
@@ -170,17 +168,17 @@ _GET_UNIT_RATIO: dict[type[BaseUnitConverter], tuple[str | None, str | None, flo
|
||||
),
|
||||
NitrogenDioxideConcentrationConverter: (
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
1.912503,
|
||||
),
|
||||
NitrogenMonoxideConcentrationConverter: (
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
1.247389,
|
||||
),
|
||||
OzoneConcentrationConverter: (
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
1.995417,
|
||||
),
|
||||
PowerConverter: (UnitOfPower.WATT, UnitOfPower.KILO_WATT, 1000),
|
||||
@@ -202,7 +200,7 @@ _GET_UNIT_RATIO: dict[type[BaseUnitConverter], tuple[str | None, str | None, flo
|
||||
),
|
||||
SulphurDioxideConcentrationConverter: (
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
2.6633,
|
||||
),
|
||||
TemperatureConverter: (
|
||||
@@ -215,7 +213,7 @@ _GET_UNIT_RATIO: dict[type[BaseUnitConverter], tuple[str | None, str | None, flo
|
||||
UnitOfTemperature.FAHRENHEIT,
|
||||
0.555556,
|
||||
),
|
||||
UnitlessRatioConverter: (PERCENTAGE, None, 100),
|
||||
UnitlessRatioConverter: (UnitOfProportion.PERCENTAGE, None, 100),
|
||||
VolumeConverter: (UnitOfVolume.GALLONS, UnitOfVolume.LITERS, 0.264172),
|
||||
VolumeFlowRateConverter: (
|
||||
UnitOfVolumeFlowRate.CUBIC_METERS_PER_HOUR,
|
||||
@@ -328,38 +326,38 @@ _CONVERTED_VALUE: dict[
|
||||
# PPB to other units
|
||||
(
|
||||
1,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
0.001,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
),
|
||||
(
|
||||
1,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
1.16441,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
),
|
||||
(
|
||||
1,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
0.00116441,
|
||||
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
|
||||
),
|
||||
# PPM to other units
|
||||
(
|
||||
1,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
1000,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
),
|
||||
(
|
||||
1,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
1.16441,
|
||||
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
|
||||
),
|
||||
(
|
||||
1,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
1164.41,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
),
|
||||
@@ -368,13 +366,13 @@ _CONVERTED_VALUE: dict[
|
||||
120000,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
103056.5,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
),
|
||||
(
|
||||
120000,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
103.0565,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
),
|
||||
(
|
||||
120000,
|
||||
@@ -387,13 +385,13 @@ _CONVERTED_VALUE: dict[
|
||||
120,
|
||||
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
|
||||
103056.5,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
),
|
||||
(
|
||||
120,
|
||||
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
|
||||
103.0565,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
),
|
||||
(
|
||||
120,
|
||||
@@ -405,7 +403,7 @@ _CONVERTED_VALUE: dict[
|
||||
NitrogenDioxideConcentrationConverter: [
|
||||
(
|
||||
1,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
1.912503,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
),
|
||||
@@ -413,11 +411,11 @@ _CONVERTED_VALUE: dict[
|
||||
120,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
62.744976,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
),
|
||||
(
|
||||
1,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
1912.503,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
),
|
||||
@@ -425,25 +423,25 @@ _CONVERTED_VALUE: dict[
|
||||
120,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
0.062744976,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
),
|
||||
(
|
||||
100,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
0.1,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
),
|
||||
(
|
||||
0.5,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
500,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
),
|
||||
],
|
||||
NitrogenMonoxideConcentrationConverter: [
|
||||
(
|
||||
1,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
1.247389,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
),
|
||||
@@ -451,7 +449,7 @@ _CONVERTED_VALUE: dict[
|
||||
120,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
96.200906,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
),
|
||||
],
|
||||
ConductivityConverter: [
|
||||
@@ -801,7 +799,7 @@ _CONVERTED_VALUE: dict[
|
||||
OzoneConcentrationConverter: [
|
||||
(
|
||||
1,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
1.995417,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
),
|
||||
@@ -809,11 +807,11 @@ _CONVERTED_VALUE: dict[
|
||||
120,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
60.1378,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
),
|
||||
(
|
||||
1,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
1995.417,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
),
|
||||
@@ -821,7 +819,7 @@ _CONVERTED_VALUE: dict[
|
||||
120,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
0.0601378,
|
||||
CONCENTRATION_PARTS_PER_MILLION,
|
||||
UnitOfProportion.PARTS_PER_MILLION,
|
||||
),
|
||||
],
|
||||
PowerConverter: [
|
||||
@@ -1003,7 +1001,7 @@ _CONVERTED_VALUE: dict[
|
||||
SulphurDioxideConcentrationConverter: [
|
||||
(
|
||||
1,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
2.6633,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
),
|
||||
@@ -1011,7 +1009,7 @@ _CONVERTED_VALUE: dict[
|
||||
120,
|
||||
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
||||
45.056879,
|
||||
CONCENTRATION_PARTS_PER_BILLION,
|
||||
UnitOfProportion.PARTS_PER_BILLION,
|
||||
),
|
||||
],
|
||||
TemperatureConverter: [
|
||||
@@ -1051,10 +1049,10 @@ _CONVERTED_VALUE: dict[
|
||||
),
|
||||
],
|
||||
UnitlessRatioConverter: [
|
||||
(5, None, 500, PERCENTAGE),
|
||||
(5, None, 5000000000, CONCENTRATION_PARTS_PER_BILLION),
|
||||
(5, None, 5000000, CONCENTRATION_PARTS_PER_MILLION),
|
||||
(5, PERCENTAGE, 0.05, None),
|
||||
(5, None, 500, UnitOfProportion.PERCENTAGE),
|
||||
(5, None, 5000000000, UnitOfProportion.PARTS_PER_BILLION),
|
||||
(5, None, 5000000, UnitOfProportion.PARTS_PER_MILLION),
|
||||
(5, UnitOfProportion.PERCENTAGE, 0.05, None),
|
||||
],
|
||||
MassVolumeConcentrationConverter: [
|
||||
# 1000 µg/m³ = 1 mg/m³
|
||||
|
||||
Reference in New Issue
Block a user