diff --git a/homeassistant/const.py b/homeassistant/const.py index ccb1fd02986..2f408491d29 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -470,6 +470,7 @@ FREQUENCY_GIGAHERTZ: Final = "GHz" # Pressure units PRESSURE_PA: Final = "Pa" PRESSURE_HPA: Final = "hPa" +PRESSURE_KPA: Final = "kPa" PRESSURE_BAR: Final = "bar" PRESSURE_MBAR: Final = "mbar" PRESSURE_INHG: Final = "inHg" diff --git a/homeassistant/util/pressure.py b/homeassistant/util/pressure.py index 95b32a69643..53bbbffc01e 100644 --- a/homeassistant/util/pressure.py +++ b/homeassistant/util/pressure.py @@ -8,6 +8,7 @@ from homeassistant.const import ( PRESSURE_BAR, PRESSURE_HPA, PRESSURE_INHG, + PRESSURE_KPA, PRESSURE_MBAR, PRESSURE_PA, PRESSURE_PSI, @@ -17,6 +18,7 @@ from homeassistant.const import ( VALID_UNITS: tuple[str, ...] = ( PRESSURE_PA, PRESSURE_HPA, + PRESSURE_KPA, PRESSURE_BAR, PRESSURE_MBAR, PRESSURE_INHG, @@ -26,6 +28,7 @@ VALID_UNITS: tuple[str, ...] = ( UNIT_CONVERSION: dict[str, float] = { PRESSURE_PA: 1, PRESSURE_HPA: 1 / 100, + PRESSURE_KPA: 1 / 1000, PRESSURE_BAR: 1 / 100000, PRESSURE_MBAR: 1 / 100, PRESSURE_INHG: 1 / 3386.389, diff --git a/tests/util/test_pressure.py b/tests/util/test_pressure.py index d92cc32542f..d6211fa5343 100644 --- a/tests/util/test_pressure.py +++ b/tests/util/test_pressure.py @@ -4,6 +4,7 @@ import pytest from homeassistant.const import ( PRESSURE_HPA, PRESSURE_INHG, + PRESSURE_KPA, PRESSURE_MBAR, PRESSURE_PA, PRESSURE_PSI, @@ -20,6 +21,7 @@ def test_convert_same_unit(): assert pressure_util.convert(3, PRESSURE_HPA, PRESSURE_HPA) == 3 assert pressure_util.convert(4, PRESSURE_MBAR, PRESSURE_MBAR) == 4 assert pressure_util.convert(5, PRESSURE_INHG, PRESSURE_INHG) == 5 + assert pressure_util.convert(6, PRESSURE_KPA, PRESSURE_KPA) == 6 def test_convert_invalid_unit(): @@ -49,17 +51,43 @@ def test_convert_from_hpascals(): assert pressure_util.convert(hpascals, PRESSURE_HPA, PRESSURE_PA) == pytest.approx( 100000 ) + assert pressure_util.convert(hpascals, PRESSURE_HPA, PRESSURE_KPA) == pytest.approx( + 100 + ) assert pressure_util.convert( hpascals, PRESSURE_HPA, PRESSURE_MBAR ) == pytest.approx(1000) +def test_convert_from_kpascals(): + """Test conversion from hPA to other units.""" + kpascals = 100 + assert pressure_util.convert(kpascals, PRESSURE_KPA, PRESSURE_PSI) == pytest.approx( + 14.5037743897 + ) + assert pressure_util.convert( + kpascals, PRESSURE_KPA, PRESSURE_INHG + ) == pytest.approx(29.5299801647) + assert pressure_util.convert(kpascals, PRESSURE_KPA, PRESSURE_PA) == pytest.approx( + 100000 + ) + assert pressure_util.convert(kpascals, PRESSURE_KPA, PRESSURE_HPA) == pytest.approx( + 1000 + ) + assert pressure_util.convert( + kpascals, PRESSURE_KPA, PRESSURE_MBAR + ) == pytest.approx(1000) + + def test_convert_from_inhg(): """Test conversion from inHg to other units.""" inhg = 30 assert pressure_util.convert(inhg, PRESSURE_INHG, PRESSURE_PSI) == pytest.approx( 14.7346266155 ) + assert pressure_util.convert(inhg, PRESSURE_INHG, PRESSURE_KPA) == pytest.approx( + 101.59167 + ) assert pressure_util.convert(inhg, PRESSURE_INHG, PRESSURE_HPA) == pytest.approx( 1015.9167 )