Add new sensors exposed by HomeWizard kWh meter (#108850)
* Add new sensors exposed by kWh meter * Add entity translation placeholders * Fix Mypy issue * Adjusts tests * Remove suggested display precision for disabled-by-default sensors * Update test-snapshots * Update snapshots
This commit is contained in:
parent
e9e289286e
commit
d631cad07f
7 changed files with 4426 additions and 139 deletions
|
@ -18,8 +18,10 @@ from homeassistant.config_entries import ConfigEntry
|
|||
from homeassistant.const import (
|
||||
ATTR_VIA_DEVICE,
|
||||
PERCENTAGE,
|
||||
POWER_VOLT_AMPERE_REACTIVE,
|
||||
EntityCategory,
|
||||
Platform,
|
||||
UnitOfApparentPower,
|
||||
UnitOfElectricCurrent,
|
||||
UnitOfElectricPotential,
|
||||
UnitOfEnergy,
|
||||
|
@ -57,6 +59,11 @@ class HomeWizardExternalSensorEntityDescription(SensorEntityDescription):
|
|||
device_name: str
|
||||
|
||||
|
||||
def to_percentage(value: float | None) -> float | None:
|
||||
"""Convert 0..1 value to percentage when value is not None."""
|
||||
return value * 100 if value is not None else None
|
||||
|
||||
|
||||
SENSORS: Final[tuple[HomeWizardSensorEntityDescription, ...]] = (
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="smr_version",
|
||||
|
@ -259,6 +266,15 @@ SENSORS: Final[tuple[HomeWizardSensorEntityDescription, ...]] = (
|
|||
has_fn=lambda data: data.active_power_l3_w is not None,
|
||||
value_fn=lambda data: data.active_power_l3_w,
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_voltage_v",
|
||||
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
||||
device_class=SensorDeviceClass.VOLTAGE,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_registry_enabled_default=False,
|
||||
has_fn=lambda data: data.active_voltage_v is not None,
|
||||
value_fn=lambda data: data.active_voltage_v,
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_voltage_l1_v",
|
||||
translation_key="active_voltage_phase_v",
|
||||
|
@ -292,6 +308,15 @@ SENSORS: Final[tuple[HomeWizardSensorEntityDescription, ...]] = (
|
|||
has_fn=lambda data: data.active_voltage_l3_v is not None,
|
||||
value_fn=lambda data: data.active_voltage_l3_v,
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_current_a",
|
||||
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
||||
device_class=SensorDeviceClass.CURRENT,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_registry_enabled_default=False,
|
||||
has_fn=lambda data: data.active_current_a is not None,
|
||||
value_fn=lambda data: data.active_current_a,
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_current_l1_a",
|
||||
translation_key="active_current_phase_a",
|
||||
|
@ -334,6 +359,132 @@ SENSORS: Final[tuple[HomeWizardSensorEntityDescription, ...]] = (
|
|||
has_fn=lambda data: data.active_frequency_hz is not None,
|
||||
value_fn=lambda data: data.active_frequency_hz,
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_apparent_power_va",
|
||||
native_unit_of_measurement=UnitOfApparentPower.VOLT_AMPERE,
|
||||
device_class=SensorDeviceClass.APPARENT_POWER,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_registry_enabled_default=False,
|
||||
has_fn=lambda data: data.active_apparent_power_va is not None,
|
||||
value_fn=lambda data: data.active_apparent_power_va,
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_apparent_power_l1_va",
|
||||
translation_key="active_apparent_power_phase_va",
|
||||
translation_placeholders={"phase": "1"},
|
||||
native_unit_of_measurement=UnitOfApparentPower.VOLT_AMPERE,
|
||||
device_class=SensorDeviceClass.APPARENT_POWER,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_registry_enabled_default=False,
|
||||
has_fn=lambda data: data.active_apparent_power_l1_va is not None,
|
||||
value_fn=lambda data: data.active_apparent_power_l1_va,
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_apparent_power_l2_va",
|
||||
translation_key="active_apparent_power_phase_va",
|
||||
translation_placeholders={"phase": "2"},
|
||||
native_unit_of_measurement=UnitOfApparentPower.VOLT_AMPERE,
|
||||
device_class=SensorDeviceClass.APPARENT_POWER,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_registry_enabled_default=False,
|
||||
has_fn=lambda data: data.active_apparent_power_l2_va is not None,
|
||||
value_fn=lambda data: data.active_apparent_power_l2_va,
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_apparent_power_l3_va",
|
||||
translation_key="active_apparent_power_phase_va",
|
||||
translation_placeholders={"phase": "3"},
|
||||
native_unit_of_measurement=UnitOfApparentPower.VOLT_AMPERE,
|
||||
device_class=SensorDeviceClass.APPARENT_POWER,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_registry_enabled_default=False,
|
||||
has_fn=lambda data: data.active_apparent_power_l3_va is not None,
|
||||
value_fn=lambda data: data.active_apparent_power_l3_va,
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_reactive_power_var",
|
||||
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE,
|
||||
device_class=SensorDeviceClass.REACTIVE_POWER,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_registry_enabled_default=False,
|
||||
has_fn=lambda data: data.active_reactive_power_var is not None,
|
||||
value_fn=lambda data: data.active_reactive_power_var,
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_reactive_power_l1_var",
|
||||
translation_key="active_reactive_power_phase_var",
|
||||
translation_placeholders={"phase": "1"},
|
||||
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE,
|
||||
device_class=SensorDeviceClass.REACTIVE_POWER,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_registry_enabled_default=False,
|
||||
has_fn=lambda data: data.active_reactive_power_l1_var is not None,
|
||||
value_fn=lambda data: data.active_reactive_power_l1_var,
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_reactive_power_l2_var",
|
||||
translation_key="active_reactive_power_phase_var",
|
||||
translation_placeholders={"phase": "2"},
|
||||
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE,
|
||||
device_class=SensorDeviceClass.REACTIVE_POWER,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_registry_enabled_default=False,
|
||||
has_fn=lambda data: data.active_reactive_power_l2_var is not None,
|
||||
value_fn=lambda data: data.active_reactive_power_l2_var,
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_reactive_power_l3_var",
|
||||
translation_key="active_reactive_power_phase_var",
|
||||
translation_placeholders={"phase": "3"},
|
||||
native_unit_of_measurement=POWER_VOLT_AMPERE_REACTIVE,
|
||||
device_class=SensorDeviceClass.REACTIVE_POWER,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_registry_enabled_default=False,
|
||||
has_fn=lambda data: data.active_reactive_power_l3_var is not None,
|
||||
value_fn=lambda data: data.active_reactive_power_l3_var,
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_power_factor",
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
device_class=SensorDeviceClass.POWER_FACTOR,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_registry_enabled_default=False,
|
||||
has_fn=lambda data: data.active_power_factor is not None,
|
||||
value_fn=lambda data: to_percentage(data.active_power_factor),
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_power_factor_l1",
|
||||
translation_key="active_power_factor_phase",
|
||||
translation_placeholders={"phase": "1"},
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
device_class=SensorDeviceClass.POWER_FACTOR,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_registry_enabled_default=False,
|
||||
has_fn=lambda data: data.active_power_factor_l1 is not None,
|
||||
value_fn=lambda data: to_percentage(data.active_power_factor_l1),
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_power_factor_l2",
|
||||
translation_key="active_power_factor_phase",
|
||||
translation_placeholders={"phase": "2"},
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
device_class=SensorDeviceClass.POWER_FACTOR,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_registry_enabled_default=False,
|
||||
has_fn=lambda data: data.active_power_factor_l2 is not None,
|
||||
value_fn=lambda data: to_percentage(data.active_power_factor_l2),
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="active_power_factor_l3",
|
||||
translation_key="active_power_factor_phase",
|
||||
translation_placeholders={"phase": "3"},
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
device_class=SensorDeviceClass.POWER_FACTOR,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
entity_registry_enabled_default=False,
|
||||
has_fn=lambda data: data.active_power_factor_l3 is not None,
|
||||
value_fn=lambda data: to_percentage(data.active_power_factor_l3),
|
||||
),
|
||||
HomeWizardSensorEntityDescription(
|
||||
key="voltage_sag_l1_count",
|
||||
translation_key="voltage_sag_phase_count",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue