From 876ab37064d50252e6a55a69c709b819acc1cdb5 Mon Sep 17 00:00:00 2001 From: RussellAult Date: Mon, 31 Aug 2026 09:21:56 -0600 Subject: [PATCH] Add kPa as a valid unit of measurement for pressure in weather entity (#165519) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- homeassistant/components/weather/const.py | 1 + .../components/weather/significant_change.py | 2 ++ .../weather/test_significant_change.py | 16 ++++++++++++++++ tests/components/weather/test_websocket_api.py | 2 +- 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/weather/const.py b/homeassistant/components/weather/const.py index f45c04145620..3e56f5e118de 100644 --- a/homeassistant/components/weather/const.py +++ b/homeassistant/components/weather/const.py @@ -81,6 +81,7 @@ INTENT_GET_WEATHER = "HassGetWeather" VALID_UNITS_PRESSURE: set[str] = { UnitOfPressure.HPA, + UnitOfPressure.KPA, UnitOfPressure.MBAR, UnitOfPressure.INHG, UnitOfPressure.MMHG, diff --git a/homeassistant/components/weather/significant_change.py b/homeassistant/components/weather/significant_change.py index 70d837b1dd2d..7deb5de2beb6 100644 --- a/homeassistant/components/weather/significant_change.py +++ b/homeassistant/components/weather/significant_change.py @@ -145,6 +145,8 @@ def async_check_significant_change( UnitOfPressure.MMHG, # 1hPa = 0.75mmHg ): absolute_change = 1.0 + elif unit == UnitOfPressure.KPA: # 1hPa = 0.1 kPa + absolute_change = 0.1 elif unit == UnitOfPressure.INHG: # 1hPa = 0.03inHg absolute_change = 0.05 diff --git a/tests/components/weather/test_significant_change.py b/tests/components/weather/test_significant_change.py index 93e5830a0acb..3230fa3c35b0 100644 --- a/tests/components/weather/test_significant_change.py +++ b/tests/components/weather/test_significant_change.py @@ -168,6 +168,14 @@ async def test_significant_state_change() -> None: }, False, ), + ( + {ATTR_WEATHER_PRESSURE: 100}, + { + ATTR_WEATHER_PRESSURE: 100.09, + ATTR_WEATHER_PRESSURE_UNIT: UnitOfPressure.KPA, + }, + False, + ), ( {ATTR_WEATHER_PRESSURE: 29.5}, { @@ -280,6 +288,14 @@ async def test_significant_state_change() -> None: }, True, ), + ( + {ATTR_WEATHER_PRESSURE: 100}, + { + ATTR_WEATHER_PRESSURE: 100.11, + ATTR_WEATHER_PRESSURE_UNIT: UnitOfPressure.KPA, + }, + True, + ), ( {ATTR_WEATHER_PRESSURE: 29.5}, { diff --git a/tests/components/weather/test_websocket_api.py b/tests/components/weather/test_websocket_api.py index 11c5baafa301..0cb1ae3c1580 100644 --- a/tests/components/weather/test_websocket_api.py +++ b/tests/components/weather/test_websocket_api.py @@ -30,7 +30,7 @@ async def test_device_class_units( assert msg["result"] == { "units": { "precipitation_unit": ["in", "mm"], - "pressure_unit": ["hPa", "inHg", "mbar", "mmHg"], + "pressure_unit": ["hPa", "inHg", "kPa", "mbar", "mmHg"], "temperature_unit": ["°C", "°F"], "visibility_unit": ["km", "mi"], "wind_speed_unit": ["Beaufort", "ft/s", "km/h", "kn", "m/s", "mph"],