From 9889cfcf66a93577ba4a8ff714217eef088fb5e2 Mon Sep 17 00:00:00 2001 From: Brett Adams Date: Mon, 31 Aug 2026 23:17:38 +1000 Subject: [PATCH] Add atmospheres (atm) as a pressure unit (#178708) Co-authored-by: Markus Tuominen <3738613+Markus98@users.noreply.github.com> --- homeassistant/const.py | 1 + homeassistant/generated/sensor.json | 4 ++++ homeassistant/util/unit_conversion.py | 2 ++ homeassistant/util/unit_system.py | 1 + tests/components/knx/snapshots/test_websocket.ambr | 2 ++ tests/components/sensor/test_recorder.py | 8 ++++---- tests/util/test_unit_conversion.py | 5 +++++ tests/util/test_unit_system.py | 1 + 8 files changed, 20 insertions(+), 4 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 6e913ef931c9..6379cc6a5a62 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -647,6 +647,7 @@ class UnitOfPressure(StrEnum): INHG = "inHg" INH2O = "inH₂O" PSI = "psi" + ATM = "atm" # Sound pressure units diff --git a/homeassistant/generated/sensor.json b/homeassistant/generated/sensor.json index a6214cf7d8e8..836e8b624f5f 100644 --- a/homeassistant/generated/sensor.json +++ b/homeassistant/generated/sensor.json @@ -22,6 +22,7 @@ "yd\u00b2" ], "atmospheric_pressure": [ + "atm", "bar", "cbar", "hPa", @@ -199,6 +200,7 @@ "mm/h" ], "pressure": [ + "atm", "bar", "cbar", "hPa", @@ -356,6 +358,7 @@ "yd\u00b2" ], "atmospheric_pressure": [ + "atm", "bar", "cbar", "hPa", @@ -570,6 +573,7 @@ "mm/h" ], "pressure": [ + "atm", "bar", "cbar", "hPa", diff --git a/homeassistant/util/unit_conversion.py b/homeassistant/util/unit_conversion.py index a9e4267a40b3..13c342860980 100644 --- a/homeassistant/util/unit_conversion.py +++ b/homeassistant/util/unit_conversion.py @@ -600,6 +600,7 @@ class PressureConverter(BaseUnitConverter): UnitOfPressure.PSI: 1 / 6894.757, UnitOfPressure.MMHG: 1 / (_MM_TO_M * 1000 * _STANDARD_GRAVITY * _MERCURY_DENSITY), + UnitOfPressure.ATM: 1 / 101325, } VALID_UNITS = { UnitOfPressure.MILLIPASCAL, @@ -613,6 +614,7 @@ class PressureConverter(BaseUnitConverter): UnitOfPressure.INH2O, UnitOfPressure.PSI, UnitOfPressure.MMHG, + UnitOfPressure.ATM, } diff --git a/homeassistant/util/unit_system.py b/homeassistant/util/unit_system.py index 23f4f504bb0c..d3e9249a2fa1 100644 --- a/homeassistant/util/unit_system.py +++ b/homeassistant/util/unit_system.py @@ -386,6 +386,7 @@ US_CUSTOMARY_SYSTEM = UnitSystem( ("pressure", UnitOfPressure.KPA): UnitOfPressure.PSI, ("pressure", UnitOfPressure.MMHG): UnitOfPressure.INHG, ("pressure", UnitOfPressure.INH2O): UnitOfPressure.PSI, + ("pressure", UnitOfPressure.ATM): UnitOfPressure.PSI, # Convert non-USCS radon concentration ( "radon", diff --git a/tests/components/knx/snapshots/test_websocket.ambr b/tests/components/knx/snapshots/test_websocket.ambr index c84770e4521b..dd5bae21929b 100644 --- a/tests/components/knx/snapshots/test_websocket.ambr +++ b/tests/components/knx/snapshots/test_websocket.ambr @@ -1839,6 +1839,7 @@ 'ZB', 'ZiB', 'ac', + 'atm', 'bar', 'bit', 'bit/s', @@ -2216,6 +2217,7 @@ 'ZB', 'ZiB', 'ac', + 'atm', 'bar', 'bit', 'bit/s', diff --git a/tests/components/sensor/test_recorder.py b/tests/components/sensor/test_recorder.py index ef0f89545d8c..b73cb177498d 100644 --- a/tests/components/sensor/test_recorder.py +++ b/tests/components/sensor/test_recorder.py @@ -5322,7 +5322,7 @@ async def async_record_states( "pressure", "psi", "bar", - "Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi", + "Pa, atm, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi", ), ( METRIC_SYSTEM, @@ -5330,7 +5330,7 @@ async def async_record_states( "pressure", "Pa", "bar", - "Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi", + "Pa, atm, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi", ), ], ) @@ -5561,7 +5561,7 @@ async def test_validate_statistics_unit_ignore_device_class( "pressure", "psi", "bar", - "Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi", + "Pa, atm, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi", ), ( METRIC_SYSTEM, @@ -5569,7 +5569,7 @@ async def test_validate_statistics_unit_ignore_device_class( "pressure", "Pa", "bar", - "Pa, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi", + "Pa, atm, bar, cbar, hPa, inHg, inH₂O, kPa, mPa, mbar, mmHg, psi", ), ( METRIC_SYSTEM, diff --git a/tests/util/test_unit_conversion.py b/tests/util/test_unit_conversion.py index f37011646f11..09c85a208f95 100644 --- a/tests/util/test_unit_conversion.py +++ b/tests/util/test_unit_conversion.py @@ -880,6 +880,11 @@ _CONVERTED_VALUE: dict[ (30, UnitOfPressure.MMHG, 1.181102, UnitOfPressure.INHG), (30, UnitOfPressure.MMHG, 16.0572051431838, UnitOfPressure.INH2O), (5, UnitOfPressure.BAR, 72.51887, UnitOfPressure.PSI), + (1, UnitOfPressure.ATM, 101325, UnitOfPressure.PA), + (1, UnitOfPressure.ATM, 1013.25, UnitOfPressure.HPA), + (1, UnitOfPressure.ATM, 1013.25, UnitOfPressure.MBAR), + (1, UnitOfPressure.ATM, 1.01325, UnitOfPressure.BAR), + (101325, UnitOfPressure.PA, 1, UnitOfPressure.ATM), ], RadiationConcentrationConverter: [ ( diff --git a/tests/util/test_unit_system.py b/tests/util/test_unit_system.py index a95797d68c8c..116ce92dceef 100644 --- a/tests/util/test_unit_system.py +++ b/tests/util/test_unit_system.py @@ -601,6 +601,7 @@ UNCONVERTED_UNITS_METRIC_SYSTEM = { UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR, ), SensorDeviceClass.PRESSURE: ( + UnitOfPressure.ATM, UnitOfPressure.BAR, UnitOfPressure.CBAR, UnitOfPressure.HPA,