From fc4b5f66ff91f30e9e05db3fd549b16649b6cd8a Mon Sep 17 00:00:00 2001 From: stephan-carstens <87971111+stephan-carstens@users.noreply.github.com> Date: Sun, 31 Aug 2025 01:05:07 +0200 Subject: [PATCH] Extend UnitOfApparentPower with 'kVA' (#151420) --- homeassistant/components/number/const.py | 2 +- homeassistant/components/sensor/const.py | 2 +- homeassistant/const.py | 1 + homeassistant/util/unit_conversion.py | 2 ++ tests/util/test_unit_conversion.py | 18 ++++++++++++++++++ 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/number/const.py b/homeassistant/components/number/const.py index 93fbfac2ebb..22c1170b6b8 100644 --- a/homeassistant/components/number/const.py +++ b/homeassistant/components/number/const.py @@ -89,7 +89,7 @@ class NumberDeviceClass(StrEnum): APPARENT_POWER = "apparent_power" """Apparent power. - Unit of measurement: `mVA`, `VA` + Unit of measurement: `mVA`, `VA`, `kVA` """ AQI = "aqi" diff --git a/homeassistant/components/sensor/const.py b/homeassistant/components/sensor/const.py index af35b8127eb..94578a6f652 100644 --- a/homeassistant/components/sensor/const.py +++ b/homeassistant/components/sensor/const.py @@ -120,7 +120,7 @@ class SensorDeviceClass(StrEnum): APPARENT_POWER = "apparent_power" """Apparent power. - Unit of measurement: `mVA`, `VA` + Unit of measurement: `mVA`, `VA`, `kVA` """ AQI = "aqi" diff --git a/homeassistant/const.py b/homeassistant/const.py index f9c6d384922..3bd7cc51c7c 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -590,6 +590,7 @@ class UnitOfApparentPower(StrEnum): MILLIVOLT_AMPERE = "mVA" VOLT_AMPERE = "VA" + KILO_VOLT_AMPERE = "kVA" # Power units diff --git a/homeassistant/util/unit_conversion.py b/homeassistant/util/unit_conversion.py index 4d6d2365617..918b45ff3c9 100644 --- a/homeassistant/util/unit_conversion.py +++ b/homeassistant/util/unit_conversion.py @@ -391,10 +391,12 @@ class ApparentPowerConverter(BaseUnitConverter): _UNIT_CONVERSION: dict[str | None, float] = { UnitOfApparentPower.MILLIVOLT_AMPERE: 1 * 1000, UnitOfApparentPower.VOLT_AMPERE: 1, + UnitOfApparentPower.KILO_VOLT_AMPERE: 1 / 1000, } VALID_UNITS = { UnitOfApparentPower.MILLIVOLT_AMPERE, UnitOfApparentPower.VOLT_AMPERE, + UnitOfApparentPower.KILO_VOLT_AMPERE, } diff --git a/tests/util/test_unit_conversion.py b/tests/util/test_unit_conversion.py index d6f9d282174..476cb667d90 100644 --- a/tests/util/test_unit_conversion.py +++ b/tests/util/test_unit_conversion.py @@ -191,6 +191,24 @@ _CONVERTED_VALUE: dict[ 0.01, UnitOfApparentPower.VOLT_AMPERE, ), + ( + 10, + UnitOfApparentPower.MILLIVOLT_AMPERE, + 0.00001, + UnitOfApparentPower.KILO_VOLT_AMPERE, + ), + ( + 10, + UnitOfApparentPower.VOLT_AMPERE, + 0.01, + UnitOfApparentPower.KILO_VOLT_AMPERE, + ), + ( + 10, + UnitOfApparentPower.KILO_VOLT_AMPERE, + 10000, + UnitOfApparentPower.VOLT_AMPERE, + ), ], AreaConverter: [ # Square Meters to other units