Skip to content

Commit e4ea798

Browse files
authored
Add support for μg/m³ for Carbon Monoxide (home-assistant#153158)
1 parent ddfa6f3 commit e4ea798

File tree

4 files changed

+35
-2
lines changed

4 files changed

+35
-2
lines changed

homeassistant/components/number/const.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ class NumberDeviceClass(StrEnum):
124124
CO = "carbon_monoxide"
125125
"""Carbon Monoxide gas concentration.
126126
127-
Unit of measurement: `ppm` (parts per million), `mg/m³`
127+
Unit of measurement: `ppm` (parts per million), `mg/m³`, `μg/m³`
128128
"""
129129

130130
CO2 = "carbon_dioxide"
@@ -478,6 +478,7 @@ class NumberDeviceClass(StrEnum):
478478
NumberDeviceClass.CO: {
479479
CONCENTRATION_PARTS_PER_MILLION,
480480
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
481+
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
481482
},
482483
NumberDeviceClass.CO2: {CONCENTRATION_PARTS_PER_MILLION},
483484
NumberDeviceClass.CONDUCTIVITY: set(UnitOfConductivity),

homeassistant/components/sensor/const.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ class SensorDeviceClass(StrEnum):
157157
CO = "carbon_monoxide"
158158
"""Carbon Monoxide gas concentration.
159159
160-
Unit of measurement: `ppm` (parts per million), `mg/m³`
160+
Unit of measurement: `ppm` (parts per million), `mg/m³`, `μg/m³`
161161
"""
162162

163163
CO2 = "carbon_dioxide"
@@ -589,6 +589,7 @@ class SensorStateClass(StrEnum):
589589
SensorDeviceClass.CO: {
590590
CONCENTRATION_PARTS_PER_MILLION,
591591
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
592+
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
592593
},
593594
SensorDeviceClass.CO2: {CONCENTRATION_PARTS_PER_MILLION},
594595
SensorDeviceClass.CONDUCTIVITY: set(UnitOfConductivity),

homeassistant/util/unit_conversion.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,14 @@ class CarbonMonoxideConcentrationConverter(BaseUnitConverter):
191191
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER: (
192192
_CARBON_MONOXIDE_MOLAR_MASS / _AMBIENT_IDEAL_GAS_MOLAR_VOLUME * 1e3
193193
),
194+
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: (
195+
_CARBON_MONOXIDE_MOLAR_MASS / _AMBIENT_IDEAL_GAS_MOLAR_VOLUME * 1e6
196+
),
194197
}
195198
VALID_UNITS = {
196199
CONCENTRATION_PARTS_PER_MILLION,
197200
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
201+
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
198202
}
199203

200204

tests/util/test_unit_conversion.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,18 +288,45 @@
288288
),
289289
],
290290
CarbonMonoxideConcentrationConverter: [
291+
# PPM to other units
291292
(
292293
1,
293294
CONCENTRATION_PARTS_PER_MILLION,
294295
1.16441,
295296
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
296297
),
298+
(
299+
1,
300+
CONCENTRATION_PARTS_PER_MILLION,
301+
1164.41,
302+
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
303+
),
304+
# MILLIGRAMS_PER_CUBIC_METER to other units
305+
(
306+
120,
307+
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
308+
103.05655,
309+
CONCENTRATION_PARTS_PER_MILLION,
310+
),
297311
(
298312
120,
299313
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
314+
120000,
315+
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
316+
),
317+
# MICROGRAMS_PER_CUBIC_METER to other units
318+
(
319+
120000,
320+
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
300321
103.05655,
301322
CONCENTRATION_PARTS_PER_MILLION,
302323
),
324+
(
325+
120000,
326+
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
327+
120,
328+
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER,
329+
),
303330
],
304331
ConductivityConverter: [
305332
(

0 commit comments

Comments
 (0)