Change POWER_VOLT_AMPERE_REACTIVE to UnitOfReactivePower (#117153)

* Refactoring: exchange POWER_VOLT_AMPERE_REACTIVE with UnitOfReactivePower

* updated iotawatt and mysensors from VOLT_AMPERE_REACTIVE to UnitOfReactivePower.VOLT_AMPERE_REACTIVE

* deprecation period for POWER_VOLT_AMPERE_REACTIVE changed to one year.

* POWER_VOLT_AMPERE_REACTIVE changed to UnitOfReactivePower in blebox integration

* Update homeassistant/const.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
This commit is contained in:
Christian Neumeier 2024-08-21 15:36:45 +02:00 committed by GitHub
parent b21b300625
commit 3e53cc175f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 68 additions and 56 deletions

View File

@ -14,13 +14,13 @@ from homeassistant.const import (
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
LIGHT_LUX, LIGHT_LUX,
PERCENTAGE, PERCENTAGE,
POWER_VOLT_AMPERE_REACTIVE,
UnitOfApparentPower, UnitOfApparentPower,
UnitOfElectricCurrent, UnitOfElectricCurrent,
UnitOfElectricPotential, UnitOfElectricPotential,
UnitOfEnergy, UnitOfEnergy,
UnitOfFrequency, UnitOfFrequency,
UnitOfPower, UnitOfPower,
UnitOfReactivePower,
UnitOfSpeed, UnitOfSpeed,
UnitOfTemperature, UnitOfTemperature,
) )
@ -85,7 +85,7 @@ SENSOR_TYPES = (
SensorEntityDescription( SensorEntityDescription(
key="reactivePower", key="reactivePower",
device_class=SensorDeviceClass.POWER, device_class=SensorDeviceClass.POWER,
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE, native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
), ),
SensorEntityDescription( SensorEntityDescription(
key="activePower", key="activePower",

View File

@ -14,7 +14,6 @@ from homeassistant.components.sensor import (
) )
from homeassistant.const import ( from homeassistant.const import (
PERCENTAGE, PERCENTAGE,
POWER_VOLT_AMPERE_REACTIVE,
EntityCategory, EntityCategory,
UnitOfApparentPower, UnitOfApparentPower,
UnitOfElectricCurrent, UnitOfElectricCurrent,
@ -22,6 +21,7 @@ from homeassistant.const import (
UnitOfEnergy, UnitOfEnergy,
UnitOfFrequency, UnitOfFrequency,
UnitOfPower, UnitOfPower,
UnitOfReactivePower,
UnitOfTemperature, UnitOfTemperature,
) )
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
@ -381,28 +381,28 @@ METER_ENTITY_DESCRIPTIONS: list[FroniusSensorEntityDescription] = [
), ),
FroniusSensorEntityDescription( FroniusSensorEntityDescription(
key="power_reactive_phase_1", key="power_reactive_phase_1",
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE, native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
device_class=SensorDeviceClass.REACTIVE_POWER, device_class=SensorDeviceClass.REACTIVE_POWER,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
), ),
FroniusSensorEntityDescription( FroniusSensorEntityDescription(
key="power_reactive_phase_2", key="power_reactive_phase_2",
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE, native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
device_class=SensorDeviceClass.REACTIVE_POWER, device_class=SensorDeviceClass.REACTIVE_POWER,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
), ),
FroniusSensorEntityDescription( FroniusSensorEntityDescription(
key="power_reactive_phase_3", key="power_reactive_phase_3",
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE, native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
device_class=SensorDeviceClass.REACTIVE_POWER, device_class=SensorDeviceClass.REACTIVE_POWER,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
), ),
FroniusSensorEntityDescription( FroniusSensorEntityDescription(
key="power_reactive", key="power_reactive",
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE, native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
device_class=SensorDeviceClass.REACTIVE_POWER, device_class=SensorDeviceClass.REACTIVE_POWER,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,

View File

@ -20,7 +20,6 @@ from homeassistant.components.sensor import (
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ( from homeassistant.const import (
PERCENTAGE, PERCENTAGE,
POWER_VOLT_AMPERE_REACTIVE,
EntityCategory, EntityCategory,
UnitOfApparentPower, UnitOfApparentPower,
UnitOfElectricCurrent, UnitOfElectricCurrent,
@ -28,6 +27,7 @@ from homeassistant.const import (
UnitOfEnergy, UnitOfEnergy,
UnitOfFrequency, UnitOfFrequency,
UnitOfPower, UnitOfPower,
UnitOfReactivePower,
UnitOfTemperature, UnitOfTemperature,
UnitOfTime, UnitOfTime,
) )
@ -126,7 +126,7 @@ _DESCRIPTIONS: dict[str, GoodweSensorEntityDescription] = {
key="var", key="var",
device_class=SensorDeviceClass.REACTIVE_POWER, device_class=SensorDeviceClass.REACTIVE_POWER,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE, native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
), ),
"C": GoodweSensorEntityDescription( "C": GoodweSensorEntityDescription(

View File

@ -18,7 +18,6 @@ from homeassistant.components.sensor import (
from homeassistant.const import ( from homeassistant.const import (
ATTR_VIA_DEVICE, ATTR_VIA_DEVICE,
PERCENTAGE, PERCENTAGE,
POWER_VOLT_AMPERE_REACTIVE,
EntityCategory, EntityCategory,
Platform, Platform,
UnitOfApparentPower, UnitOfApparentPower,
@ -27,6 +26,7 @@ from homeassistant.const import (
UnitOfEnergy, UnitOfEnergy,
UnitOfFrequency, UnitOfFrequency,
UnitOfPower, UnitOfPower,
UnitOfReactivePower,
UnitOfVolume, UnitOfVolume,
) )
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
@ -404,7 +404,7 @@ SENSORS: Final[tuple[HomeWizardSensorEntityDescription, ...]] = (
), ),
HomeWizardSensorEntityDescription( HomeWizardSensorEntityDescription(
key="active_reactive_power_var", key="active_reactive_power_var",
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE, native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
device_class=SensorDeviceClass.REACTIVE_POWER, device_class=SensorDeviceClass.REACTIVE_POWER,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
@ -415,7 +415,7 @@ SENSORS: Final[tuple[HomeWizardSensorEntityDescription, ...]] = (
key="active_reactive_power_l1_var", key="active_reactive_power_l1_var",
translation_key="active_reactive_power_phase_var", translation_key="active_reactive_power_phase_var",
translation_placeholders={"phase": "1"}, translation_placeholders={"phase": "1"},
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE, native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
device_class=SensorDeviceClass.REACTIVE_POWER, device_class=SensorDeviceClass.REACTIVE_POWER,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
@ -426,7 +426,7 @@ SENSORS: Final[tuple[HomeWizardSensorEntityDescription, ...]] = (
key="active_reactive_power_l2_var", key="active_reactive_power_l2_var",
translation_key="active_reactive_power_phase_var", translation_key="active_reactive_power_phase_var",
translation_placeholders={"phase": "2"}, translation_placeholders={"phase": "2"},
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE, native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
device_class=SensorDeviceClass.REACTIVE_POWER, device_class=SensorDeviceClass.REACTIVE_POWER,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
@ -437,7 +437,7 @@ SENSORS: Final[tuple[HomeWizardSensorEntityDescription, ...]] = (
key="active_reactive_power_l3_var", key="active_reactive_power_l3_var",
translation_key="active_reactive_power_phase_var", translation_key="active_reactive_power_phase_var",
translation_placeholders={"phase": "3"}, translation_placeholders={"phase": "3"},
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE, native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
device_class=SensorDeviceClass.REACTIVE_POWER, device_class=SensorDeviceClass.REACTIVE_POWER,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,

View File

@ -7,7 +7,6 @@ import json
import httpx import httpx
DOMAIN = "iotawatt" DOMAIN = "iotawatt"
VOLT_AMPERE_REACTIVE = "VAR"
VOLT_AMPERE_REACTIVE_HOURS = "VARh" VOLT_AMPERE_REACTIVE_HOURS = "VARh"
CONNECTION_ERRORS = (KeyError, json.JSONDecodeError, httpx.HTTPError) CONNECTION_ERRORS = (KeyError, json.JSONDecodeError, httpx.HTTPError)

View File

@ -23,6 +23,7 @@ from homeassistant.const import (
UnitOfEnergy, UnitOfEnergy,
UnitOfFrequency, UnitOfFrequency,
UnitOfPower, UnitOfPower,
UnitOfReactivePower,
) )
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.helpers import device_registry as dr, entity_registry as er
@ -31,7 +32,7 @@ from homeassistant.helpers.typing import StateType
from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
from homeassistant.util import dt as dt_util from homeassistant.util import dt as dt_util
from .const import DOMAIN, VOLT_AMPERE_REACTIVE, VOLT_AMPERE_REACTIVE_HOURS from .const import DOMAIN, VOLT_AMPERE_REACTIVE_HOURS
from .coordinator import IotawattUpdater from .coordinator import IotawattUpdater
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -89,7 +90,7 @@ ENTITY_DESCRIPTION_KEY_MAP: dict[str, IotaWattSensorEntityDescription] = {
), ),
"VAR": IotaWattSensorEntityDescription( "VAR": IotaWattSensorEntityDescription(
key="VAR", key="VAR",
native_unit_of_measurement=VOLT_AMPERE_REACTIVE, native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
icon="mdi:flash", icon="mdi:flash",
entity_registry_enabled_default=False, entity_registry_enabled_default=False,

View File

@ -23,7 +23,6 @@ from homeassistant.const import (
DEGREE, DEGREE,
LIGHT_LUX, LIGHT_LUX,
PERCENTAGE, PERCENTAGE,
POWER_VOLT_AMPERE_REACTIVE,
REVOLUTIONS_PER_MINUTE, REVOLUTIONS_PER_MINUTE,
SERVICE_LOCK, SERVICE_LOCK,
SERVICE_UNLOCK, SERVICE_UNLOCK,
@ -50,6 +49,7 @@ from homeassistant.const import (
UnitOfMass, UnitOfMass,
UnitOfPower, UnitOfPower,
UnitOfPressure, UnitOfPressure,
UnitOfReactivePower,
UnitOfSoundPressure, UnitOfSoundPressure,
UnitOfSpeed, UnitOfSpeed,
UnitOfTemperature, UnitOfTemperature,
@ -438,7 +438,7 @@ UOM_FRIENDLY_NAME = {
"133": UnitOfFrequency.KILOHERTZ, "133": UnitOfFrequency.KILOHERTZ,
"134": f"{UnitOfLength.METERS}/{UnitOfTime.SECONDS}²", "134": f"{UnitOfLength.METERS}/{UnitOfTime.SECONDS}²",
"135": UnitOfApparentPower.VOLT_AMPERE, # Volt-Amp "135": UnitOfApparentPower.VOLT_AMPERE, # Volt-Amp
"136": POWER_VOLT_AMPERE_REACTIVE, # VAR = Volt-Amp Reactive "136": UnitOfReactivePower.VOLT_AMPERE_REACTIVE, # VAR = Volt-Amp Reactive
"137": "", # NTP DateTime - Number of seconds since 1900 "137": "", # NTP DateTime - Number of seconds since 1900
"138": UnitOfPressure.PSI, "138": UnitOfPressure.PSI,
"139": DEGREE, # Degree 0-360 "139": DEGREE, # Degree 0-360

View File

@ -28,6 +28,7 @@ from homeassistant.const import (
UnitOfLength, UnitOfLength,
UnitOfMass, UnitOfMass,
UnitOfPower, UnitOfPower,
UnitOfReactivePower,
UnitOfSoundPressure, UnitOfSoundPressure,
UnitOfTemperature, UnitOfTemperature,
UnitOfVolume, UnitOfVolume,
@ -195,7 +196,7 @@ SENSORS: dict[str, SensorEntityDescription] = {
), ),
"V_VAR": SensorEntityDescription( "V_VAR": SensorEntityDescription(
key="V_VAR", key="V_VAR",
native_unit_of_measurement="var", native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
), ),
"V_VA": SensorEntityDescription( "V_VA": SensorEntityDescription(
key="V_VA", key="V_VA",

View File

@ -14,7 +14,6 @@ from homeassistant.const import (
CONCENTRATION_PARTS_PER_MILLION, CONCENTRATION_PARTS_PER_MILLION,
LIGHT_LUX, LIGHT_LUX,
PERCENTAGE, PERCENTAGE,
POWER_VOLT_AMPERE_REACTIVE,
SIGNAL_STRENGTH_DECIBELS, SIGNAL_STRENGTH_DECIBELS,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT, SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
UnitOfApparentPower, UnitOfApparentPower,
@ -31,6 +30,7 @@ from homeassistant.const import (
UnitOfPower, UnitOfPower,
UnitOfPrecipitationDepth, UnitOfPrecipitationDepth,
UnitOfPressure, UnitOfPressure,
UnitOfReactivePower,
UnitOfSoundPressure, UnitOfSoundPressure,
UnitOfSpeed, UnitOfSpeed,
UnitOfTemperature, UnitOfTemperature,
@ -468,7 +468,7 @@ DEVICE_CLASS_UNITS: dict[NumberDeviceClass, set[type[StrEnum] | str | None]] = {
NumberDeviceClass.PRECIPITATION: set(UnitOfPrecipitationDepth), NumberDeviceClass.PRECIPITATION: set(UnitOfPrecipitationDepth),
NumberDeviceClass.PRECIPITATION_INTENSITY: set(UnitOfVolumetricFlux), NumberDeviceClass.PRECIPITATION_INTENSITY: set(UnitOfVolumetricFlux),
NumberDeviceClass.PRESSURE: set(UnitOfPressure), NumberDeviceClass.PRESSURE: set(UnitOfPressure),
NumberDeviceClass.REACTIVE_POWER: {POWER_VOLT_AMPERE_REACTIVE}, NumberDeviceClass.REACTIVE_POWER: {UnitOfReactivePower.VOLT_AMPERE_REACTIVE},
NumberDeviceClass.SIGNAL_STRENGTH: { NumberDeviceClass.SIGNAL_STRENGTH: {
SIGNAL_STRENGTH_DECIBELS, SIGNAL_STRENGTH_DECIBELS,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT, SIGNAL_STRENGTH_DECIBELS_MILLIWATT,

View File

@ -14,7 +14,6 @@ from homeassistant.const import (
CONCENTRATION_PARTS_PER_MILLION, CONCENTRATION_PARTS_PER_MILLION,
LIGHT_LUX, LIGHT_LUX,
PERCENTAGE, PERCENTAGE,
POWER_VOLT_AMPERE_REACTIVE,
SIGNAL_STRENGTH_DECIBELS, SIGNAL_STRENGTH_DECIBELS,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT, SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
UnitOfApparentPower, UnitOfApparentPower,
@ -31,6 +30,7 @@ from homeassistant.const import (
UnitOfPower, UnitOfPower,
UnitOfPrecipitationDepth, UnitOfPrecipitationDepth,
UnitOfPressure, UnitOfPressure,
UnitOfReactivePower,
UnitOfSoundPressure, UnitOfSoundPressure,
UnitOfSpeed, UnitOfSpeed,
UnitOfTemperature, UnitOfTemperature,
@ -563,7 +563,7 @@ DEVICE_CLASS_UNITS: dict[SensorDeviceClass, set[type[StrEnum] | str | None]] = {
SensorDeviceClass.PRECIPITATION: set(UnitOfPrecipitationDepth), SensorDeviceClass.PRECIPITATION: set(UnitOfPrecipitationDepth),
SensorDeviceClass.PRECIPITATION_INTENSITY: set(UnitOfVolumetricFlux), SensorDeviceClass.PRECIPITATION_INTENSITY: set(UnitOfVolumetricFlux),
SensorDeviceClass.PRESSURE: set(UnitOfPressure), SensorDeviceClass.PRESSURE: set(UnitOfPressure),
SensorDeviceClass.REACTIVE_POWER: {POWER_VOLT_AMPERE_REACTIVE}, SensorDeviceClass.REACTIVE_POWER: {UnitOfReactivePower.VOLT_AMPERE_REACTIVE},
SensorDeviceClass.SIGNAL_STRENGTH: { SensorDeviceClass.SIGNAL_STRENGTH: {
SIGNAL_STRENGTH_DECIBELS, SIGNAL_STRENGTH_DECIBELS,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT, SIGNAL_STRENGTH_DECIBELS_MILLIWATT,

View File

@ -15,7 +15,6 @@ from homeassistant.components.sensor import (
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ( from homeassistant.const import (
PERCENTAGE, PERCENTAGE,
POWER_VOLT_AMPERE_REACTIVE,
EntityCategory, EntityCategory,
UnitOfApparentPower, UnitOfApparentPower,
UnitOfElectricCurrent, UnitOfElectricCurrent,
@ -23,6 +22,7 @@ from homeassistant.const import (
UnitOfEnergy, UnitOfEnergy,
UnitOfFrequency, UnitOfFrequency,
UnitOfPower, UnitOfPower,
UnitOfReactivePower,
UnitOfTemperature, UnitOfTemperature,
) )
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
@ -204,7 +204,7 @@ SENSOR_ENTITIES: dict[str, SensorEntityDescription] = {
"grid_reactive_power": SensorEntityDescription( "grid_reactive_power": SensorEntityDescription(
key="grid_reactive_power", key="grid_reactive_power",
name="Grid Reactive Power", name="Grid Reactive Power",
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE, native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.REACTIVE_POWER, device_class=SensorDeviceClass.REACTIVE_POWER,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
@ -212,7 +212,7 @@ SENSOR_ENTITIES: dict[str, SensorEntityDescription] = {
"grid_reactive_power_l1": SensorEntityDescription( "grid_reactive_power_l1": SensorEntityDescription(
key="grid_reactive_power_l1", key="grid_reactive_power_l1",
name="Grid Reactive Power L1", name="Grid Reactive Power L1",
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE, native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.REACTIVE_POWER, device_class=SensorDeviceClass.REACTIVE_POWER,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
@ -220,7 +220,7 @@ SENSOR_ENTITIES: dict[str, SensorEntityDescription] = {
"grid_reactive_power_l2": SensorEntityDescription( "grid_reactive_power_l2": SensorEntityDescription(
key="grid_reactive_power_l2", key="grid_reactive_power_l2",
name="Grid Reactive Power L2", name="Grid Reactive Power L2",
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE, native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.REACTIVE_POWER, device_class=SensorDeviceClass.REACTIVE_POWER,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
@ -228,7 +228,7 @@ SENSOR_ENTITIES: dict[str, SensorEntityDescription] = {
"grid_reactive_power_l3": SensorEntityDescription( "grid_reactive_power_l3": SensorEntityDescription(
key="grid_reactive_power_l3", key="grid_reactive_power_l3",
name="Grid Reactive Power L3", name="Grid Reactive Power L3",
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE, native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.REACTIVE_POWER, device_class=SensorDeviceClass.REACTIVE_POWER,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,

View File

@ -22,7 +22,6 @@ from homeassistant.const import (
CONCENTRATION_PARTS_PER_MILLION, CONCENTRATION_PARTS_PER_MILLION,
LIGHT_LUX, LIGHT_LUX,
PERCENTAGE, PERCENTAGE,
POWER_VOLT_AMPERE_REACTIVE,
SIGNAL_STRENGTH_DECIBELS, SIGNAL_STRENGTH_DECIBELS,
SIGNAL_STRENGTH_DECIBELS_MILLIWATT, SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
EntityCategory, EntityCategory,
@ -35,6 +34,7 @@ from homeassistant.const import (
UnitOfMass, UnitOfMass,
UnitOfPower, UnitOfPower,
UnitOfPressure, UnitOfPressure,
UnitOfReactivePower,
UnitOfSpeed, UnitOfSpeed,
UnitOfTemperature, UnitOfTemperature,
) )
@ -227,7 +227,7 @@ SENSOR_UNIT_MAP = {
hc.PERCENTAGE: PERCENTAGE, hc.PERCENTAGE: PERCENTAGE,
hc.POWER_WATT: UnitOfPower.WATT, hc.POWER_WATT: UnitOfPower.WATT,
hc.PRESSURE_HPA: UnitOfPressure.HPA, hc.PRESSURE_HPA: UnitOfPressure.HPA,
hc.REACTIVE_POWER: POWER_VOLT_AMPERE_REACTIVE, hc.REACTIVE_POWER: UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
hc.SIGNAL_STRENGTH_DECIBELS: SIGNAL_STRENGTH_DECIBELS, hc.SIGNAL_STRENGTH_DECIBELS: SIGNAL_STRENGTH_DECIBELS,
hc.SIGNAL_STRENGTH_DECIBELS_MILLIWATT: SIGNAL_STRENGTH_DECIBELS_MILLIWATT, hc.SIGNAL_STRENGTH_DECIBELS_MILLIWATT: SIGNAL_STRENGTH_DECIBELS_MILLIWATT,
hc.SPEED_KILOMETERS_PER_HOUR: UnitOfSpeed.KILOMETERS_PER_HOUR, hc.SPEED_KILOMETERS_PER_HOUR: UnitOfSpeed.KILOMETERS_PER_HOUR,

View File

@ -673,8 +673,19 @@ _DEPRECATED_POWER_BTU_PER_HOUR: Final = DeprecatedConstantEnum(
) )
"""Deprecated: please use UnitOfPower.BTU_PER_HOUR.""" """Deprecated: please use UnitOfPower.BTU_PER_HOUR."""
# Reactive power units # Reactive power units
POWER_VOLT_AMPERE_REACTIVE: Final = "var" class UnitOfReactivePower(StrEnum):
"""Reactive power units."""
VOLT_AMPERE_REACTIVE = "var"
_DEPRECATED_POWER_VOLT_AMPERE_REACTIVE: Final = DeprecatedConstantEnum(
UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
"2025.9",
)
"""Deprecated: please use UnitOfReactivePower.VOLT_AMPERE_REACTIVE."""
# Energy units # Energy units

View File

@ -712,7 +712,7 @@
'supported_features': 0, 'supported_features': 0,
'translation_key': None, 'translation_key': None,
'unique_id': 'aabbccddeeff_active_reactive_power_var', 'unique_id': 'aabbccddeeff_active_reactive_power_var',
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}) })
# --- # ---
# name: test_sensors[HWE-KWH1-entity_ids7][sensor.device_reactive_power:state] # name: test_sensors[HWE-KWH1-entity_ids7][sensor.device_reactive_power:state]
@ -721,7 +721,7 @@
'device_class': 'reactive_power', 'device_class': 'reactive_power',
'friendly_name': 'Device Reactive power', 'friendly_name': 'Device Reactive power',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'sensor.device_reactive_power', 'entity_id': 'sensor.device_reactive_power',
@ -2632,7 +2632,7 @@
'supported_features': 0, 'supported_features': 0,
'translation_key': None, 'translation_key': None,
'unique_id': 'aabbccddeeff_active_reactive_power_var', 'unique_id': 'aabbccddeeff_active_reactive_power_var',
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}) })
# --- # ---
# name: test_sensors[HWE-KWH3-entity_ids8][sensor.device_reactive_power:state] # name: test_sensors[HWE-KWH3-entity_ids8][sensor.device_reactive_power:state]
@ -2641,7 +2641,7 @@
'device_class': 'reactive_power', 'device_class': 'reactive_power',
'friendly_name': 'Device Reactive power', 'friendly_name': 'Device Reactive power',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'sensor.device_reactive_power', 'entity_id': 'sensor.device_reactive_power',
@ -2719,7 +2719,7 @@
'supported_features': 0, 'supported_features': 0,
'translation_key': 'active_reactive_power_phase_var', 'translation_key': 'active_reactive_power_phase_var',
'unique_id': 'aabbccddeeff_active_reactive_power_l1_var', 'unique_id': 'aabbccddeeff_active_reactive_power_l1_var',
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}) })
# --- # ---
# name: test_sensors[HWE-KWH3-entity_ids8][sensor.device_reactive_power_phase_1:state] # name: test_sensors[HWE-KWH3-entity_ids8][sensor.device_reactive_power_phase_1:state]
@ -2728,7 +2728,7 @@
'device_class': 'reactive_power', 'device_class': 'reactive_power',
'friendly_name': 'Device Reactive power phase 1', 'friendly_name': 'Device Reactive power phase 1',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'sensor.device_reactive_power_phase_1', 'entity_id': 'sensor.device_reactive_power_phase_1',
@ -2806,7 +2806,7 @@
'supported_features': 0, 'supported_features': 0,
'translation_key': 'active_reactive_power_phase_var', 'translation_key': 'active_reactive_power_phase_var',
'unique_id': 'aabbccddeeff_active_reactive_power_l2_var', 'unique_id': 'aabbccddeeff_active_reactive_power_l2_var',
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}) })
# --- # ---
# name: test_sensors[HWE-KWH3-entity_ids8][sensor.device_reactive_power_phase_2:state] # name: test_sensors[HWE-KWH3-entity_ids8][sensor.device_reactive_power_phase_2:state]
@ -2815,7 +2815,7 @@
'device_class': 'reactive_power', 'device_class': 'reactive_power',
'friendly_name': 'Device Reactive power phase 2', 'friendly_name': 'Device Reactive power phase 2',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'sensor.device_reactive_power_phase_2', 'entity_id': 'sensor.device_reactive_power_phase_2',
@ -2893,7 +2893,7 @@
'supported_features': 0, 'supported_features': 0,
'translation_key': 'active_reactive_power_phase_var', 'translation_key': 'active_reactive_power_phase_var',
'unique_id': 'aabbccddeeff_active_reactive_power_l3_var', 'unique_id': 'aabbccddeeff_active_reactive_power_l3_var',
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}) })
# --- # ---
# name: test_sensors[HWE-KWH3-entity_ids8][sensor.device_reactive_power_phase_3:state] # name: test_sensors[HWE-KWH3-entity_ids8][sensor.device_reactive_power_phase_3:state]
@ -2902,7 +2902,7 @@
'device_class': 'reactive_power', 'device_class': 'reactive_power',
'friendly_name': 'Device Reactive power phase 3', 'friendly_name': 'Device Reactive power phase 3',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'sensor.device_reactive_power_phase_3', 'entity_id': 'sensor.device_reactive_power_phase_3',
@ -14905,7 +14905,7 @@
'supported_features': 0, 'supported_features': 0,
'translation_key': None, 'translation_key': None,
'unique_id': 'aabbccddeeff_active_reactive_power_var', 'unique_id': 'aabbccddeeff_active_reactive_power_var',
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}) })
# --- # ---
# name: test_sensors[HWE-SKT-21-entity_ids3][sensor.device_reactive_power:state] # name: test_sensors[HWE-SKT-21-entity_ids3][sensor.device_reactive_power:state]
@ -14914,7 +14914,7 @@
'device_class': 'reactive_power', 'device_class': 'reactive_power',
'friendly_name': 'Device Reactive power', 'friendly_name': 'Device Reactive power',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'sensor.device_reactive_power', 'entity_id': 'sensor.device_reactive_power',
@ -16200,7 +16200,7 @@
'supported_features': 0, 'supported_features': 0,
'translation_key': None, 'translation_key': None,
'unique_id': 'aabbccddeeff_active_reactive_power_var', 'unique_id': 'aabbccddeeff_active_reactive_power_var',
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}) })
# --- # ---
# name: test_sensors[SDM230-entity_ids5][sensor.device_reactive_power:state] # name: test_sensors[SDM230-entity_ids5][sensor.device_reactive_power:state]
@ -16209,7 +16209,7 @@
'device_class': 'reactive_power', 'device_class': 'reactive_power',
'friendly_name': 'Device Reactive power', 'friendly_name': 'Device Reactive power',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'sensor.device_reactive_power', 'entity_id': 'sensor.device_reactive_power',
@ -18120,7 +18120,7 @@
'supported_features': 0, 'supported_features': 0,
'translation_key': None, 'translation_key': None,
'unique_id': 'aabbccddeeff_active_reactive_power_var', 'unique_id': 'aabbccddeeff_active_reactive_power_var',
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}) })
# --- # ---
# name: test_sensors[SDM630-entity_ids6][sensor.device_reactive_power:state] # name: test_sensors[SDM630-entity_ids6][sensor.device_reactive_power:state]
@ -18129,7 +18129,7 @@
'device_class': 'reactive_power', 'device_class': 'reactive_power',
'friendly_name': 'Device Reactive power', 'friendly_name': 'Device Reactive power',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'sensor.device_reactive_power', 'entity_id': 'sensor.device_reactive_power',
@ -18207,7 +18207,7 @@
'supported_features': 0, 'supported_features': 0,
'translation_key': 'active_reactive_power_phase_var', 'translation_key': 'active_reactive_power_phase_var',
'unique_id': 'aabbccddeeff_active_reactive_power_l1_var', 'unique_id': 'aabbccddeeff_active_reactive_power_l1_var',
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}) })
# --- # ---
# name: test_sensors[SDM630-entity_ids6][sensor.device_reactive_power_phase_1:state] # name: test_sensors[SDM630-entity_ids6][sensor.device_reactive_power_phase_1:state]
@ -18216,7 +18216,7 @@
'device_class': 'reactive_power', 'device_class': 'reactive_power',
'friendly_name': 'Device Reactive power phase 1', 'friendly_name': 'Device Reactive power phase 1',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'sensor.device_reactive_power_phase_1', 'entity_id': 'sensor.device_reactive_power_phase_1',
@ -18294,7 +18294,7 @@
'supported_features': 0, 'supported_features': 0,
'translation_key': 'active_reactive_power_phase_var', 'translation_key': 'active_reactive_power_phase_var',
'unique_id': 'aabbccddeeff_active_reactive_power_l2_var', 'unique_id': 'aabbccddeeff_active_reactive_power_l2_var',
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}) })
# --- # ---
# name: test_sensors[SDM630-entity_ids6][sensor.device_reactive_power_phase_2:state] # name: test_sensors[SDM630-entity_ids6][sensor.device_reactive_power_phase_2:state]
@ -18303,7 +18303,7 @@
'device_class': 'reactive_power', 'device_class': 'reactive_power',
'friendly_name': 'Device Reactive power phase 2', 'friendly_name': 'Device Reactive power phase 2',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'sensor.device_reactive_power_phase_2', 'entity_id': 'sensor.device_reactive_power_phase_2',
@ -18381,7 +18381,7 @@
'supported_features': 0, 'supported_features': 0,
'translation_key': 'active_reactive_power_phase_var', 'translation_key': 'active_reactive_power_phase_var',
'unique_id': 'aabbccddeeff_active_reactive_power_l3_var', 'unique_id': 'aabbccddeeff_active_reactive_power_l3_var',
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}) })
# --- # ---
# name: test_sensors[SDM630-entity_ids6][sensor.device_reactive_power_phase_3:state] # name: test_sensors[SDM630-entity_ids6][sensor.device_reactive_power_phase_3:state]
@ -18390,7 +18390,7 @@
'device_class': 'reactive_power', 'device_class': 'reactive_power',
'friendly_name': 'Device Reactive power phase 3', 'friendly_name': 'Device Reactive power phase 3',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>, 'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': 'var', 'unit_of_measurement': <UnitOfReactivePower.VOLT_AMPERE_REACTIVE: 'var'>,
}), }),
'context': <ANY>, 'context': <ANY>,
'entity_id': 'sensor.device_reactive_power_phase_3', 'entity_id': 'sensor.device_reactive_power_phase_3',

View File

@ -10,11 +10,11 @@ from homeassistant.const import (
CONCENTRATION_PARTS_PER_MILLION, CONCENTRATION_PARTS_PER_MILLION,
LIGHT_LUX, LIGHT_LUX,
PERCENTAGE, PERCENTAGE,
POWER_VOLT_AMPERE_REACTIVE,
SIGNAL_STRENGTH_DECIBELS, SIGNAL_STRENGTH_DECIBELS,
UnitOfApparentPower, UnitOfApparentPower,
UnitOfFrequency, UnitOfFrequency,
UnitOfPressure, UnitOfPressure,
UnitOfReactivePower,
UnitOfVolume, UnitOfVolume,
) )
@ -44,7 +44,7 @@ UNITS_OF_MEASUREMENT = {
SensorDeviceClass.ENERGY: "kWh", # energy (Wh/kWh/MWh) SensorDeviceClass.ENERGY: "kWh", # energy (Wh/kWh/MWh)
SensorDeviceClass.FREQUENCY: UnitOfFrequency.GIGAHERTZ, # energy (Hz/kHz/MHz/GHz) SensorDeviceClass.FREQUENCY: UnitOfFrequency.GIGAHERTZ, # energy (Hz/kHz/MHz/GHz)
SensorDeviceClass.POWER_FACTOR: PERCENTAGE, # power factor (no unit, min: -1.0, max: 1.0) SensorDeviceClass.POWER_FACTOR: PERCENTAGE, # power factor (no unit, min: -1.0, max: 1.0)
SensorDeviceClass.REACTIVE_POWER: POWER_VOLT_AMPERE_REACTIVE, # reactive power (var) SensorDeviceClass.REACTIVE_POWER: UnitOfReactivePower.VOLT_AMPERE_REACTIVE, # reactive power (var)
SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, # µg/m³ of vocs SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS: CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, # µg/m³ of vocs
SensorDeviceClass.VOLTAGE: "V", # voltage (V) SensorDeviceClass.VOLTAGE: "V", # voltage (V)
SensorDeviceClass.GAS: UnitOfVolume.CUBIC_METERS, # gas (m³) SensorDeviceClass.GAS: UnitOfVolume.CUBIC_METERS, # gas (m³)