1
0
mirror of https://github.com/home-assistant/core.git synced 2026-02-15 07:36:16 +00:00

Add milliPascal (mPa) as unit of measurement for Pressure (#153087)

This commit is contained in:
Domochip
2025-10-14 13:38:14 +02:00
committed by GitHub
parent c3e2f0e19b
commit 8464dad8e0
8 changed files with 28 additions and 6 deletions

View File

@@ -330,7 +330,7 @@ class NumberDeviceClass(StrEnum):
Unit of measurement:
- `mbar`, `cbar`, `bar`
- `Pa`, `hPa`, `kPa`
- `mPa`, `Pa`, `hPa`, `kPa`
- `inHg`
- `psi`
- `inH₂O`

View File

@@ -365,7 +365,7 @@ class SensorDeviceClass(StrEnum):
Unit of measurement:
- `mbar`, `cbar`, `bar`
- `Pa`, `hPa`, `kPa`
- `mPa`, `Pa`, `hPa`, `kPa`
- `inHg`
- `psi`
- `inH₂O`

View File

@@ -613,6 +613,7 @@ class UnitOfFrequency(StrEnum):
class UnitOfPressure(StrEnum):
"""Pressure units."""
MILLIPASCAL = "mPa"
PA = "Pa"
HPA = "hPa"
KPA = "kPa"

View File

@@ -464,6 +464,7 @@ class PressureConverter(BaseUnitConverter):
UNIT_CLASS = "pressure"
_UNIT_CONVERSION: dict[str | None, float] = {
UnitOfPressure.MILLIPASCAL: 1 * 1000,
UnitOfPressure.PA: 1,
UnitOfPressure.HPA: 1 / 100,
UnitOfPressure.KPA: 1 / 1000,
@@ -478,6 +479,7 @@ class PressureConverter(BaseUnitConverter):
/ (_MM_TO_M * 1000 * _STANDARD_GRAVITY * _MERCURY_DENSITY),
}
VALID_UNITS = {
UnitOfPressure.MILLIPASCAL,
UnitOfPressure.PA,
UnitOfPressure.HPA,
UnitOfPressure.KPA,

View File

@@ -376,6 +376,7 @@ US_CUSTOMARY_SYSTEM = UnitSystem(
("pressure", UnitOfPressure.MBAR): UnitOfPressure.PSI,
("pressure", UnitOfPressure.CBAR): UnitOfPressure.PSI,
("pressure", UnitOfPressure.BAR): UnitOfPressure.PSI,
("pressure", UnitOfPressure.MILLIPASCAL): UnitOfPressure.PSI,
("pressure", UnitOfPressure.PA): UnitOfPressure.PSI,
("pressure", UnitOfPressure.HPA): UnitOfPressure.PSI,
("pressure", UnitOfPressure.KPA): UnitOfPressure.PSI,

View File

@@ -263,6 +263,7 @@ async def assert_validation_result(
("distance", "mi", "mi", "mi", "distance", 13.050847, -10, 30),
("humidity", "%", "%", "%", "unitless", 13.050847, -10, 30),
("humidity", None, None, None, "unitless", 13.050847, -10, 30),
("pressure", "mPa", "mPa", "mPa", "pressure", 13.050847, -10, 30),
("pressure", "Pa", "Pa", "Pa", "pressure", 13.050847, -10, 30),
("pressure", "hPa", "hPa", "hPa", "pressure", 13.050847, -10, 30),
("pressure", "mbar", "mbar", "mbar", "pressure", 13.050847, -10, 30),
@@ -2601,6 +2602,7 @@ async def test_compile_hourly_energy_statistics_multiple(
("distance", "mi", 30),
("humidity", "%", 30),
("humidity", None, 30),
("pressure", "mPa", 30),
("pressure", "Pa", 30),
("pressure", "hPa", 30),
("pressure", "mbar", 30),
@@ -2767,6 +2769,7 @@ async def test_compile_hourly_statistics_partially_unavailable(
("distance", "mi", 30),
("humidity", "%", 30),
("humidity", None, 30),
("pressure", "mPa", 30),
("pressure", "Pa", 30),
("pressure", "hPa", 30),
("pressure", "mbar", 30),
@@ -3045,6 +3048,15 @@ async def test_compile_hourly_statistics_fails(
"volume",
StatisticMeanType.ARITHMETIC,
),
(
"measurement",
"pressure",
"mPa",
"mPa",
"mPa",
"pressure",
StatisticMeanType.ARITHMETIC,
),
(
"measurement",
"pressure",
@@ -5125,7 +5137,7 @@ async def async_record_states(
"pressure",
"psi",
"bar",
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mbar, mmHg, psi",
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi",
),
(
METRIC_SYSTEM,
@@ -5133,7 +5145,7 @@ async def async_record_states(
"pressure",
"Pa",
"bar",
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mbar, mmHg, psi",
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi",
),
],
)
@@ -5364,7 +5376,7 @@ async def test_validate_statistics_unit_ignore_device_class(
"pressure",
"psi",
"bar",
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mbar, mmHg, psi",
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi",
),
(
METRIC_SYSTEM,
@@ -5372,7 +5384,7 @@ async def test_validate_statistics_unit_ignore_device_class(
"pressure",
"Pa",
"bar",
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mbar, mmHg, psi",
"Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi",
),
(
METRIC_SYSTEM,

View File

@@ -675,6 +675,7 @@ _CONVERTED_VALUE: dict[
PressureConverter: [
(1000, UnitOfPressure.HPA, 14.5037743897, UnitOfPressure.PSI),
(1000, UnitOfPressure.HPA, 29.5299801647, UnitOfPressure.INHG),
(1000, UnitOfPressure.HPA, 100000000, UnitOfPressure.MILLIPASCAL),
(1000, UnitOfPressure.HPA, 100000, UnitOfPressure.PA),
(1000, UnitOfPressure.HPA, 100, UnitOfPressure.KPA),
(1000, UnitOfPressure.HPA, 1000, UnitOfPressure.MBAR),
@@ -682,6 +683,7 @@ _CONVERTED_VALUE: dict[
(1000, UnitOfPressure.HPA, 401.46307866177, UnitOfPressure.INH2O),
(100, UnitOfPressure.KPA, 14.5037743897, UnitOfPressure.PSI),
(100, UnitOfPressure.KPA, 29.5299801647, UnitOfPressure.INHG),
(100, UnitOfPressure.KPA, 100000000, UnitOfPressure.MILLIPASCAL),
(100, UnitOfPressure.KPA, 100000, UnitOfPressure.PA),
(100, UnitOfPressure.KPA, 1000, UnitOfPressure.HPA),
(100, UnitOfPressure.KPA, 1000, UnitOfPressure.MBAR),
@@ -689,6 +691,7 @@ _CONVERTED_VALUE: dict[
(100, UnitOfPressure.INH2O, 3.6127291827353996, UnitOfPressure.PSI),
(100, UnitOfPressure.INH2O, 186.83201548767, UnitOfPressure.MMHG),
(100, UnitOfPressure.INH2O, 7.3555912463681, UnitOfPressure.INHG),
(100, UnitOfPressure.INH2O, 24908890.833333, UnitOfPressure.MILLIPASCAL),
(100, UnitOfPressure.INH2O, 24908.890833333, UnitOfPressure.PA),
(100, UnitOfPressure.INH2O, 249.08890833333, UnitOfPressure.HPA),
(100, UnitOfPressure.INH2O, 249.08890833333, UnitOfPressure.MBAR),
@@ -698,6 +701,7 @@ _CONVERTED_VALUE: dict[
(30, UnitOfPressure.INHG, 101.59167, UnitOfPressure.KPA),
(30, UnitOfPressure.INHG, 1015.9167, UnitOfPressure.HPA),
(30, UnitOfPressure.INHG, 101591.67, UnitOfPressure.PA),
(30, UnitOfPressure.INHG, 101591670, UnitOfPressure.MILLIPASCAL),
(30, UnitOfPressure.INHG, 1015.9167, UnitOfPressure.MBAR),
(30, UnitOfPressure.INHG, 101.59167, UnitOfPressure.CBAR),
(30, UnitOfPressure.INHG, 762, UnitOfPressure.MMHG),
@@ -706,6 +710,7 @@ _CONVERTED_VALUE: dict[
(30, UnitOfPressure.MMHG, 3.99967, UnitOfPressure.KPA),
(30, UnitOfPressure.MMHG, 39.9967, UnitOfPressure.HPA),
(30, UnitOfPressure.MMHG, 3999.67, UnitOfPressure.PA),
(30, UnitOfPressure.MMHG, 3999670, UnitOfPressure.MILLIPASCAL),
(30, UnitOfPressure.MMHG, 39.9967, UnitOfPressure.MBAR),
(30, UnitOfPressure.MMHG, 3.99967, UnitOfPressure.CBAR),
(30, UnitOfPressure.MMHG, 1.181102, UnitOfPressure.INHG),

View File

@@ -608,6 +608,7 @@ UNCONVERTED_UNITS_METRIC_SYSTEM = {
UnitOfPressure.KPA,
UnitOfPressure.MBAR,
UnitOfPressure.MMHG,
UnitOfPressure.MILLIPASCAL,
UnitOfPressure.PA,
),
SensorDeviceClass.SPEED: (