Add support for μg/m³ for Carbon Monoxide (#153158)

This commit is contained in:
wittypluck
2025-10-13 10:08:55 +02:00
committed by GitHub
parent ddfa6f33d2
commit e4ea79866d
4 changed files with 35 additions and 2 deletions

View File

@@ -124,7 +124,7 @@ class NumberDeviceClass(StrEnum):
CO = "carbon_monoxide"
"""Carbon Monoxide gas concentration.
Unit of measurement: `ppm` (parts per million), `mg/m³`
Unit of measurement: `ppm` (parts per million), `mg/m³`, `μg/m³`
"""
CO2 = "carbon_dioxide"
@@ -478,6 +478,7 @@ DEVICE_CLASS_UNITS: dict[NumberDeviceClass, set[type[StrEnum] | str | None]] = {
NumberDeviceClass.CO: {
CONCENTRATION_PARTS_PER_MILLION,
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
},
NumberDeviceClass.CO2: {CONCENTRATION_PARTS_PER_MILLION},
NumberDeviceClass.CONDUCTIVITY: set(UnitOfConductivity),

View File

@@ -157,7 +157,7 @@ class SensorDeviceClass(StrEnum):
CO = "carbon_monoxide"
"""Carbon Monoxide gas concentration.
Unit of measurement: `ppm` (parts per million), `mg/m³`
Unit of measurement: `ppm` (parts per million), `mg/m³`, `μg/m³`
"""
CO2 = "carbon_dioxide"
@@ -589,6 +589,7 @@ DEVICE_CLASS_UNITS: dict[SensorDeviceClass, set[type[StrEnum] | str | None]] = {
SensorDeviceClass.CO: {
CONCENTRATION_PARTS_PER_MILLION,
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
},
SensorDeviceClass.CO2: {CONCENTRATION_PARTS_PER_MILLION},
SensorDeviceClass.CONDUCTIVITY: set(UnitOfConductivity),

View File

@@ -191,10 +191,14 @@ class CarbonMonoxideConcentrationConverter(BaseUnitConverter):
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER: (
_CARBON_MONOXIDE_MOLAR_MASS / _AMBIENT_IDEAL_GAS_MOLAR_VOLUME * 1e3
),
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: (
_CARBON_MONOXIDE_MOLAR_MASS / _AMBIENT_IDEAL_GAS_MOLAR_VOLUME * 1e6
),
}
VALID_UNITS = {
CONCENTRATION_PARTS_PER_MILLION,
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
}

View File

@@ -288,18 +288,45 @@ _CONVERTED_VALUE: dict[
),
],
CarbonMonoxideConcentrationConverter: [
# PPM to other units
(
1,
CONCENTRATION_PARTS_PER_MILLION,
1.16441,
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
),
(
1,
CONCENTRATION_PARTS_PER_MILLION,
1164.41,
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
),
# MILLIGRAMS_PER_CUBIC_METER to other units
(
120,
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
103.05655,
CONCENTRATION_PARTS_PER_MILLION,
),
(
120,
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
120000,
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
),
# MICROGRAMS_PER_CUBIC_METER to other units
(
120000,
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
103.05655,
CONCENTRATION_PARTS_PER_MILLION,
),
(
120000,
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
120,
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
),
],
ConductivityConverter: [
(