Skip to content

Commit 8464dad

Browse files
authored
Add milliPascal (mPa) as unit of measurement for Pressure (home-assistant#153087)
1 parent c3e2f0e commit 8464dad

File tree

8 files changed

+28
-6
lines changed

8 files changed

+28
-6
lines changed

homeassistant/components/number/const.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ class NumberDeviceClass(StrEnum):
330330
331331
Unit of measurement:
332332
- `mbar`, `cbar`, `bar`
333-
- `Pa`, `hPa`, `kPa`
333+
- `mPa`, `Pa`, `hPa`, `kPa`
334334
- `inHg`
335335
- `psi`
336336
- `inH₂O`

homeassistant/components/sensor/const.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ class SensorDeviceClass(StrEnum):
365365
366366
Unit of measurement:
367367
- `mbar`, `cbar`, `bar`
368-
- `Pa`, `hPa`, `kPa`
368+
- `mPa`, `Pa`, `hPa`, `kPa`
369369
- `inHg`
370370
- `psi`
371371
- `inH₂O`

homeassistant/const.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -613,6 +613,7 @@ class UnitOfFrequency(StrEnum):
613613
class UnitOfPressure(StrEnum):
614614
"""Pressure units."""
615615

616+
MILLIPASCAL = "mPa"
616617
PA = "Pa"
617618
HPA = "hPa"
618619
KPA = "kPa"

homeassistant/util/unit_conversion.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,7 @@ class PressureConverter(BaseUnitConverter):
464464

465465
UNIT_CLASS = "pressure"
466466
_UNIT_CONVERSION: dict[str | None, float] = {
467+
UnitOfPressure.MILLIPASCAL: 1 * 1000,
467468
UnitOfPressure.PA: 1,
468469
UnitOfPressure.HPA: 1 / 100,
469470
UnitOfPressure.KPA: 1 / 1000,
@@ -478,6 +479,7 @@ class PressureConverter(BaseUnitConverter):
478479
/ (_MM_TO_M * 1000 * _STANDARD_GRAVITY * _MERCURY_DENSITY),
479480
}
480481
VALID_UNITS = {
482+
UnitOfPressure.MILLIPASCAL,
481483
UnitOfPressure.PA,
482484
UnitOfPressure.HPA,
483485
UnitOfPressure.KPA,

homeassistant/util/unit_system.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@ def _deprecated_unit_system(value: str) -> str:
376376
("pressure", UnitOfPressure.MBAR): UnitOfPressure.PSI,
377377
("pressure", UnitOfPressure.CBAR): UnitOfPressure.PSI,
378378
("pressure", UnitOfPressure.BAR): UnitOfPressure.PSI,
379+
("pressure", UnitOfPressure.MILLIPASCAL): UnitOfPressure.PSI,
379380
("pressure", UnitOfPressure.PA): UnitOfPressure.PSI,
380381
("pressure", UnitOfPressure.HPA): UnitOfPressure.PSI,
381382
("pressure", UnitOfPressure.KPA): UnitOfPressure.PSI,

tests/components/sensor/test_recorder.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ async def assert_validation_result(
263263
("distance", "mi", "mi", "mi", "distance", 13.050847, -10, 30),
264264
("humidity", "%", "%", "%", "unitless", 13.050847, -10, 30),
265265
("humidity", None, None, None, "unitless", 13.050847, -10, 30),
266+
("pressure", "mPa", "mPa", "mPa", "pressure", 13.050847, -10, 30),
266267
("pressure", "Pa", "Pa", "Pa", "pressure", 13.050847, -10, 30),
267268
("pressure", "hPa", "hPa", "hPa", "pressure", 13.050847, -10, 30),
268269
("pressure", "mbar", "mbar", "mbar", "pressure", 13.050847, -10, 30),
@@ -2601,6 +2602,7 @@ async def test_compile_hourly_energy_statistics_multiple(
26012602
("distance", "mi", 30),
26022603
("humidity", "%", 30),
26032604
("humidity", None, 30),
2605+
("pressure", "mPa", 30),
26042606
("pressure", "Pa", 30),
26052607
("pressure", "hPa", 30),
26062608
("pressure", "mbar", 30),
@@ -2767,6 +2769,7 @@ async def test_compile_hourly_statistics_partially_unavailable(
27672769
("distance", "mi", 30),
27682770
("humidity", "%", 30),
27692771
("humidity", None, 30),
2772+
("pressure", "mPa", 30),
27702773
("pressure", "Pa", 30),
27712774
("pressure", "hPa", 30),
27722775
("pressure", "mbar", 30),
@@ -3045,6 +3048,15 @@ async def test_compile_hourly_statistics_fails(
30453048
"volume",
30463049
StatisticMeanType.ARITHMETIC,
30473050
),
3051+
(
3052+
"measurement",
3053+
"pressure",
3054+
"mPa",
3055+
"mPa",
3056+
"mPa",
3057+
"pressure",
3058+
StatisticMeanType.ARITHMETIC,
3059+
),
30483060
(
30493061
"measurement",
30503062
"pressure",
@@ -5125,15 +5137,15 @@ def set_state(entity_id, state, **kwargs):
51255137
"pressure",
51265138
"psi",
51275139
"bar",
5128-
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mbar, mmHg, psi",
5140+
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi",
51295141
),
51305142
(
51315143
METRIC_SYSTEM,
51325144
PRESSURE_SENSOR_ATTRIBUTES,
51335145
"pressure",
51345146
"Pa",
51355147
"bar",
5136-
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mbar, mmHg, psi",
5148+
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi",
51375149
),
51385150
],
51395151
)
@@ -5364,15 +5376,15 @@ async def test_validate_statistics_unit_ignore_device_class(
53645376
"pressure",
53655377
"psi",
53665378
"bar",
5367-
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mbar, mmHg, psi",
5379+
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi",
53685380
),
53695381
(
53705382
METRIC_SYSTEM,
53715383
PRESSURE_SENSOR_ATTRIBUTES,
53725384
"pressure",
53735385
"Pa",
53745386
"bar",
5375-
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mbar, mmHg, psi",
5387+
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi",
53765388
),
53775389
(
53785390
METRIC_SYSTEM,

tests/util/test_unit_conversion.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -675,20 +675,23 @@
675675
PressureConverter: [
676676
(1000, UnitOfPressure.HPA, 14.5037743897, UnitOfPressure.PSI),
677677
(1000, UnitOfPressure.HPA, 29.5299801647, UnitOfPressure.INHG),
678+
(1000, UnitOfPressure.HPA, 100000000, UnitOfPressure.MILLIPASCAL),
678679
(1000, UnitOfPressure.HPA, 100000, UnitOfPressure.PA),
679680
(1000, UnitOfPressure.HPA, 100, UnitOfPressure.KPA),
680681
(1000, UnitOfPressure.HPA, 1000, UnitOfPressure.MBAR),
681682
(1000, UnitOfPressure.HPA, 100, UnitOfPressure.CBAR),
682683
(1000, UnitOfPressure.HPA, 401.46307866177, UnitOfPressure.INH2O),
683684
(100, UnitOfPressure.KPA, 14.5037743897, UnitOfPressure.PSI),
684685
(100, UnitOfPressure.KPA, 29.5299801647, UnitOfPressure.INHG),
686+
(100, UnitOfPressure.KPA, 100000000, UnitOfPressure.MILLIPASCAL),
685687
(100, UnitOfPressure.KPA, 100000, UnitOfPressure.PA),
686688
(100, UnitOfPressure.KPA, 1000, UnitOfPressure.HPA),
687689
(100, UnitOfPressure.KPA, 1000, UnitOfPressure.MBAR),
688690
(100, UnitOfPressure.KPA, 100, UnitOfPressure.CBAR),
689691
(100, UnitOfPressure.INH2O, 3.6127291827353996, UnitOfPressure.PSI),
690692
(100, UnitOfPressure.INH2O, 186.83201548767, UnitOfPressure.MMHG),
691693
(100, UnitOfPressure.INH2O, 7.3555912463681, UnitOfPressure.INHG),
694+
(100, UnitOfPressure.INH2O, 24908890.833333, UnitOfPressure.MILLIPASCAL),
692695
(100, UnitOfPressure.INH2O, 24908.890833333, UnitOfPressure.PA),
693696
(100, UnitOfPressure.INH2O, 249.08890833333, UnitOfPressure.HPA),
694697
(100, UnitOfPressure.INH2O, 249.08890833333, UnitOfPressure.MBAR),
@@ -698,6 +701,7 @@
698701
(30, UnitOfPressure.INHG, 101.59167, UnitOfPressure.KPA),
699702
(30, UnitOfPressure.INHG, 1015.9167, UnitOfPressure.HPA),
700703
(30, UnitOfPressure.INHG, 101591.67, UnitOfPressure.PA),
704+
(30, UnitOfPressure.INHG, 101591670, UnitOfPressure.MILLIPASCAL),
701705
(30, UnitOfPressure.INHG, 1015.9167, UnitOfPressure.MBAR),
702706
(30, UnitOfPressure.INHG, 101.59167, UnitOfPressure.CBAR),
703707
(30, UnitOfPressure.INHG, 762, UnitOfPressure.MMHG),
@@ -706,6 +710,7 @@
706710
(30, UnitOfPressure.MMHG, 3.99967, UnitOfPressure.KPA),
707711
(30, UnitOfPressure.MMHG, 39.9967, UnitOfPressure.HPA),
708712
(30, UnitOfPressure.MMHG, 3999.67, UnitOfPressure.PA),
713+
(30, UnitOfPressure.MMHG, 3999670, UnitOfPressure.MILLIPASCAL),
709714
(30, UnitOfPressure.MMHG, 39.9967, UnitOfPressure.MBAR),
710715
(30, UnitOfPressure.MMHG, 3.99967, UnitOfPressure.CBAR),
711716
(30, UnitOfPressure.MMHG, 1.181102, UnitOfPressure.INHG),

tests/util/test_unit_system.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,7 @@ def test_get_metric_converted_unit_(
608608
UnitOfPressure.KPA,
609609
UnitOfPressure.MBAR,
610610
UnitOfPressure.MMHG,
611+
UnitOfPressure.MILLIPASCAL,
611612
UnitOfPressure.PA,
612613
),
613614
SensorDeviceClass.SPEED: (

0 commit comments

Comments
 (0)