Replace lambda by attrgetter in enphase_envoy platform value_fn (#115569)

This commit is contained in:
Arie Catsman
2024-04-14 17:41:25 +02:00
committed by GitHub
parent 6092894ce5
commit 131edea576
3 changed files with 37 additions and 34 deletions

View File

@@ -4,6 +4,7 @@ from __future__ import annotations
from collections.abc import Callable from collections.abc import Callable
from dataclasses import dataclass from dataclasses import dataclass
from operator import attrgetter
from pyenphase import EnvoyEncharge, EnvoyEnpower from pyenphase import EnvoyEncharge, EnvoyEnpower
@@ -36,7 +37,7 @@ ENCHARGE_SENSORS = (
translation_key="communicating", translation_key="communicating",
device_class=BinarySensorDeviceClass.CONNECTIVITY, device_class=BinarySensorDeviceClass.CONNECTIVITY,
entity_category=EntityCategory.DIAGNOSTIC, entity_category=EntityCategory.DIAGNOSTIC,
value_fn=lambda encharge: encharge.communicating, value_fn=attrgetter("communicating"),
), ),
EnvoyEnchargeBinarySensorEntityDescription( EnvoyEnchargeBinarySensorEntityDescription(
key="dc_switch", key="dc_switch",
@@ -60,7 +61,7 @@ ENPOWER_SENSORS = (
translation_key="communicating", translation_key="communicating",
device_class=BinarySensorDeviceClass.CONNECTIVITY, device_class=BinarySensorDeviceClass.CONNECTIVITY,
entity_category=EntityCategory.DIAGNOSTIC, entity_category=EntityCategory.DIAGNOSTIC,
value_fn=lambda enpower: enpower.communicating, value_fn=attrgetter("communicating"),
), ),
EnvoyEnpowerBinarySensorEntityDescription( EnvoyEnpowerBinarySensorEntityDescription(
key="mains_oper_state", key="mains_oper_state",

View File

@@ -4,6 +4,7 @@ from __future__ import annotations
from collections.abc import Awaitable, Callable from collections.abc import Awaitable, Callable
from dataclasses import dataclass from dataclasses import dataclass
from operator import attrgetter
from typing import Any from typing import Any
from pyenphase import Envoy, EnvoyDryContactSettings from pyenphase import Envoy, EnvoyDryContactSettings
@@ -47,14 +48,14 @@ RELAY_ENTITIES = (
translation_key="cutoff_battery_level", translation_key="cutoff_battery_level",
device_class=NumberDeviceClass.BATTERY, device_class=NumberDeviceClass.BATTERY,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
value_fn=lambda relay: relay.soc_low, value_fn=attrgetter("soc_low"),
), ),
EnvoyRelayNumberEntityDescription( EnvoyRelayNumberEntityDescription(
key="soc_high", key="soc_high",
translation_key="restore_battery_level", translation_key="restore_battery_level",
device_class=NumberDeviceClass.BATTERY, device_class=NumberDeviceClass.BATTERY,
entity_category=EntityCategory.CONFIG, entity_category=EntityCategory.CONFIG,
value_fn=lambda relay: relay.soc_high, value_fn=attrgetter("soc_high"),
), ),
) )
@@ -63,7 +64,7 @@ STORAGE_RESERVE_SOC_ENTITY = EnvoyStorageSettingsNumberEntityDescription(
translation_key="reserve_soc", translation_key="reserve_soc",
native_unit_of_measurement=PERCENTAGE, native_unit_of_measurement=PERCENTAGE,
device_class=NumberDeviceClass.BATTERY, device_class=NumberDeviceClass.BATTERY,
value_fn=lambda storage_settings: storage_settings.reserved_soc, value_fn=attrgetter("reserved_soc"),
update_fn=lambda envoy, value: envoy.set_reserve_soc(int(value)), update_fn=lambda envoy, value: envoy.set_reserve_soc(int(value)),
) )

View File

@@ -6,6 +6,7 @@ from collections.abc import Callable
from dataclasses import dataclass, replace from dataclasses import dataclass, replace
import datetime import datetime
import logging import logging
from operator import attrgetter
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from pyenphase import ( from pyenphase import (
@@ -73,7 +74,7 @@ INVERTER_SENSORS = (
native_unit_of_measurement=UnitOfPower.WATT, native_unit_of_measurement=UnitOfPower.WATT,
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.POWER, device_class=SensorDeviceClass.POWER,
value_fn=lambda inverter: inverter.last_report_watts, value_fn=attrgetter("last_report_watts"),
), ),
EnvoyInverterSensorEntityDescription( EnvoyInverterSensorEntityDescription(
key=LAST_REPORTED_KEY, key=LAST_REPORTED_KEY,
@@ -102,7 +103,7 @@ PRODUCTION_SENSORS = (
device_class=SensorDeviceClass.POWER, device_class=SensorDeviceClass.POWER,
suggested_unit_of_measurement=UnitOfPower.KILO_WATT, suggested_unit_of_measurement=UnitOfPower.KILO_WATT,
suggested_display_precision=3, suggested_display_precision=3,
value_fn=lambda production: production.watts_now, value_fn=attrgetter("watts_now"),
on_phase=None, on_phase=None,
), ),
EnvoyProductionSensorEntityDescription( EnvoyProductionSensorEntityDescription(
@@ -113,7 +114,7 @@ PRODUCTION_SENSORS = (
device_class=SensorDeviceClass.ENERGY, device_class=SensorDeviceClass.ENERGY,
suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
suggested_display_precision=2, suggested_display_precision=2,
value_fn=lambda production: production.watt_hours_today, value_fn=attrgetter("watt_hours_today"),
on_phase=None, on_phase=None,
), ),
EnvoyProductionSensorEntityDescription( EnvoyProductionSensorEntityDescription(
@@ -123,7 +124,7 @@ PRODUCTION_SENSORS = (
device_class=SensorDeviceClass.ENERGY, device_class=SensorDeviceClass.ENERGY,
suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
suggested_display_precision=1, suggested_display_precision=1,
value_fn=lambda production: production.watt_hours_last_7_days, value_fn=attrgetter("watt_hours_last_7_days"),
on_phase=None, on_phase=None,
), ),
EnvoyProductionSensorEntityDescription( EnvoyProductionSensorEntityDescription(
@@ -134,7 +135,7 @@ PRODUCTION_SENSORS = (
device_class=SensorDeviceClass.ENERGY, device_class=SensorDeviceClass.ENERGY,
suggested_unit_of_measurement=UnitOfEnergy.MEGA_WATT_HOUR, suggested_unit_of_measurement=UnitOfEnergy.MEGA_WATT_HOUR,
suggested_display_precision=3, suggested_display_precision=3,
value_fn=lambda production: production.watt_hours_lifetime, value_fn=attrgetter("watt_hours_lifetime"),
on_phase=None, on_phase=None,
), ),
) )
@@ -173,7 +174,7 @@ CONSUMPTION_SENSORS = (
device_class=SensorDeviceClass.POWER, device_class=SensorDeviceClass.POWER,
suggested_unit_of_measurement=UnitOfPower.KILO_WATT, suggested_unit_of_measurement=UnitOfPower.KILO_WATT,
suggested_display_precision=3, suggested_display_precision=3,
value_fn=lambda consumption: consumption.watts_now, value_fn=attrgetter("watts_now"),
on_phase=None, on_phase=None,
), ),
EnvoyConsumptionSensorEntityDescription( EnvoyConsumptionSensorEntityDescription(
@@ -184,7 +185,7 @@ CONSUMPTION_SENSORS = (
device_class=SensorDeviceClass.ENERGY, device_class=SensorDeviceClass.ENERGY,
suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
suggested_display_precision=2, suggested_display_precision=2,
value_fn=lambda consumption: consumption.watt_hours_today, value_fn=attrgetter("watt_hours_today"),
on_phase=None, on_phase=None,
), ),
EnvoyConsumptionSensorEntityDescription( EnvoyConsumptionSensorEntityDescription(
@@ -194,7 +195,7 @@ CONSUMPTION_SENSORS = (
device_class=SensorDeviceClass.ENERGY, device_class=SensorDeviceClass.ENERGY,
suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, suggested_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
suggested_display_precision=1, suggested_display_precision=1,
value_fn=lambda consumption: consumption.watt_hours_last_7_days, value_fn=attrgetter("watt_hours_last_7_days"),
on_phase=None, on_phase=None,
), ),
EnvoyConsumptionSensorEntityDescription( EnvoyConsumptionSensorEntityDescription(
@@ -205,7 +206,7 @@ CONSUMPTION_SENSORS = (
device_class=SensorDeviceClass.ENERGY, device_class=SensorDeviceClass.ENERGY,
suggested_unit_of_measurement=UnitOfEnergy.MEGA_WATT_HOUR, suggested_unit_of_measurement=UnitOfEnergy.MEGA_WATT_HOUR,
suggested_display_precision=3, suggested_display_precision=3,
value_fn=lambda consumption: consumption.watt_hours_lifetime, value_fn=attrgetter("watt_hours_lifetime"),
on_phase=None, on_phase=None,
), ),
) )
@@ -247,7 +248,7 @@ CT_NET_CONSUMPTION_SENSORS = (
device_class=SensorDeviceClass.ENERGY, device_class=SensorDeviceClass.ENERGY,
suggested_unit_of_measurement=UnitOfEnergy.MEGA_WATT_HOUR, suggested_unit_of_measurement=UnitOfEnergy.MEGA_WATT_HOUR,
suggested_display_precision=3, suggested_display_precision=3,
value_fn=lambda ct: ct.energy_delivered, value_fn=attrgetter("energy_delivered"),
on_phase=None, on_phase=None,
), ),
EnvoyCTSensorEntityDescription( EnvoyCTSensorEntityDescription(
@@ -258,7 +259,7 @@ CT_NET_CONSUMPTION_SENSORS = (
device_class=SensorDeviceClass.ENERGY, device_class=SensorDeviceClass.ENERGY,
suggested_unit_of_measurement=UnitOfEnergy.MEGA_WATT_HOUR, suggested_unit_of_measurement=UnitOfEnergy.MEGA_WATT_HOUR,
suggested_display_precision=3, suggested_display_precision=3,
value_fn=lambda ct: ct.energy_received, value_fn=attrgetter("energy_received"),
on_phase=None, on_phase=None,
), ),
EnvoyCTSensorEntityDescription( EnvoyCTSensorEntityDescription(
@@ -269,7 +270,7 @@ CT_NET_CONSUMPTION_SENSORS = (
device_class=SensorDeviceClass.POWER, device_class=SensorDeviceClass.POWER,
suggested_unit_of_measurement=UnitOfPower.KILO_WATT, suggested_unit_of_measurement=UnitOfPower.KILO_WATT,
suggested_display_precision=3, suggested_display_precision=3,
value_fn=lambda ct: ct.active_power, value_fn=attrgetter("active_power"),
on_phase=None, on_phase=None,
), ),
EnvoyCTSensorEntityDescription( EnvoyCTSensorEntityDescription(
@@ -280,7 +281,7 @@ CT_NET_CONSUMPTION_SENSORS = (
device_class=SensorDeviceClass.FREQUENCY, device_class=SensorDeviceClass.FREQUENCY,
suggested_display_precision=1, suggested_display_precision=1,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
value_fn=lambda ct: ct.frequency, value_fn=attrgetter("frequency"),
on_phase=None, on_phase=None,
), ),
EnvoyCTSensorEntityDescription( EnvoyCTSensorEntityDescription(
@@ -292,7 +293,7 @@ CT_NET_CONSUMPTION_SENSORS = (
suggested_unit_of_measurement=UnitOfElectricPotential.VOLT, suggested_unit_of_measurement=UnitOfElectricPotential.VOLT,
suggested_display_precision=1, suggested_display_precision=1,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
value_fn=lambda ct: ct.voltage, value_fn=attrgetter("voltage"),
on_phase=None, on_phase=None,
), ),
EnvoyCTSensorEntityDescription( EnvoyCTSensorEntityDescription(
@@ -301,7 +302,7 @@ CT_NET_CONSUMPTION_SENSORS = (
device_class=SensorDeviceClass.ENUM, device_class=SensorDeviceClass.ENUM,
options=list(CtMeterStatus), options=list(CtMeterStatus),
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
value_fn=lambda ct: ct.metering_status, value_fn=attrgetter("metering_status"),
on_phase=None, on_phase=None,
), ),
EnvoyCTSensorEntityDescription( EnvoyCTSensorEntityDescription(
@@ -337,7 +338,7 @@ CT_PRODUCTION_SENSORS = (
device_class=SensorDeviceClass.ENUM, device_class=SensorDeviceClass.ENUM,
options=list(CtMeterStatus), options=list(CtMeterStatus),
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
value_fn=lambda ct: ct.metering_status, value_fn=attrgetter("metering_status"),
on_phase=None, on_phase=None,
), ),
EnvoyCTSensorEntityDescription( EnvoyCTSensorEntityDescription(
@@ -374,7 +375,7 @@ CT_STORAGE_SENSORS = (
device_class=SensorDeviceClass.ENERGY, device_class=SensorDeviceClass.ENERGY,
suggested_unit_of_measurement=UnitOfEnergy.MEGA_WATT_HOUR, suggested_unit_of_measurement=UnitOfEnergy.MEGA_WATT_HOUR,
suggested_display_precision=3, suggested_display_precision=3,
value_fn=lambda ct: ct.energy_delivered, value_fn=attrgetter("energy_delivered"),
on_phase=None, on_phase=None,
), ),
EnvoyCTSensorEntityDescription( EnvoyCTSensorEntityDescription(
@@ -385,7 +386,7 @@ CT_STORAGE_SENSORS = (
device_class=SensorDeviceClass.ENERGY, device_class=SensorDeviceClass.ENERGY,
suggested_unit_of_measurement=UnitOfEnergy.MEGA_WATT_HOUR, suggested_unit_of_measurement=UnitOfEnergy.MEGA_WATT_HOUR,
suggested_display_precision=3, suggested_display_precision=3,
value_fn=lambda ct: ct.energy_received, value_fn=attrgetter("energy_received"),
on_phase=None, on_phase=None,
), ),
EnvoyCTSensorEntityDescription( EnvoyCTSensorEntityDescription(
@@ -396,7 +397,7 @@ CT_STORAGE_SENSORS = (
device_class=SensorDeviceClass.POWER, device_class=SensorDeviceClass.POWER,
suggested_unit_of_measurement=UnitOfPower.KILO_WATT, suggested_unit_of_measurement=UnitOfPower.KILO_WATT,
suggested_display_precision=3, suggested_display_precision=3,
value_fn=lambda ct: ct.active_power, value_fn=attrgetter("active_power"),
on_phase=None, on_phase=None,
), ),
EnvoyCTSensorEntityDescription( EnvoyCTSensorEntityDescription(
@@ -408,7 +409,7 @@ CT_STORAGE_SENSORS = (
suggested_unit_of_measurement=UnitOfElectricPotential.VOLT, suggested_unit_of_measurement=UnitOfElectricPotential.VOLT,
suggested_display_precision=1, suggested_display_precision=1,
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
value_fn=lambda ct: ct.voltage, value_fn=attrgetter("voltage"),
on_phase=None, on_phase=None,
), ),
EnvoyCTSensorEntityDescription( EnvoyCTSensorEntityDescription(
@@ -417,7 +418,7 @@ CT_STORAGE_SENSORS = (
device_class=SensorDeviceClass.ENUM, device_class=SensorDeviceClass.ENUM,
options=list(CtMeterStatus), options=list(CtMeterStatus),
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
value_fn=lambda ct: ct.metering_status, value_fn=attrgetter("metering_status"),
on_phase=None, on_phase=None,
), ),
EnvoyCTSensorEntityDescription( EnvoyCTSensorEntityDescription(
@@ -471,7 +472,7 @@ ENCHARGE_INVENTORY_SENSORS = (
key="temperature", key="temperature",
native_unit_of_measurement=UnitOfTemperature.CELSIUS, native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE, device_class=SensorDeviceClass.TEMPERATURE,
value_fn=lambda encharge: encharge.temperature, value_fn=attrgetter("temperature"),
), ),
EnvoyEnchargeSensorEntityDescription( EnvoyEnchargeSensorEntityDescription(
key=LAST_REPORTED_KEY, key=LAST_REPORTED_KEY,
@@ -486,7 +487,7 @@ ENCHARGE_POWER_SENSORS = (
key="soc", key="soc",
native_unit_of_measurement=PERCENTAGE, native_unit_of_measurement=PERCENTAGE,
device_class=SensorDeviceClass.BATTERY, device_class=SensorDeviceClass.BATTERY,
value_fn=lambda encharge: encharge.soc, value_fn=attrgetter("soc"),
), ),
EnvoyEnchargePowerSensorEntityDescription( EnvoyEnchargePowerSensorEntityDescription(
key="apparent_power_mva", key="apparent_power_mva",
@@ -515,7 +516,7 @@ ENPOWER_SENSORS = (
key="temperature", key="temperature",
native_unit_of_measurement=UnitOfTemperature.FAHRENHEIT, native_unit_of_measurement=UnitOfTemperature.FAHRENHEIT,
device_class=SensorDeviceClass.TEMPERATURE, device_class=SensorDeviceClass.TEMPERATURE,
value_fn=lambda enpower: enpower.temperature, value_fn=attrgetter("temperature"),
), ),
EnvoyEnpowerSensorEntityDescription( EnvoyEnpowerSensorEntityDescription(
key=LAST_REPORTED_KEY, key=LAST_REPORTED_KEY,
@@ -543,35 +544,35 @@ ENCHARGE_AGGREGATE_SENSORS = (
key="battery_level", key="battery_level",
native_unit_of_measurement=PERCENTAGE, native_unit_of_measurement=PERCENTAGE,
device_class=SensorDeviceClass.BATTERY, device_class=SensorDeviceClass.BATTERY,
value_fn=lambda encharge: encharge.state_of_charge, value_fn=attrgetter("state_of_charge"),
), ),
EnvoyEnchargeAggregateSensorEntityDescription( EnvoyEnchargeAggregateSensorEntityDescription(
key="reserve_soc", key="reserve_soc",
translation_key="reserve_soc", translation_key="reserve_soc",
native_unit_of_measurement=PERCENTAGE, native_unit_of_measurement=PERCENTAGE,
device_class=SensorDeviceClass.BATTERY, device_class=SensorDeviceClass.BATTERY,
value_fn=lambda encharge: encharge.reserve_state_of_charge, value_fn=attrgetter("reserve_state_of_charge"),
), ),
EnvoyEnchargeAggregateSensorEntityDescription( EnvoyEnchargeAggregateSensorEntityDescription(
key="available_energy", key="available_energy",
translation_key="available_energy", translation_key="available_energy",
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR, native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
device_class=SensorDeviceClass.ENERGY, device_class=SensorDeviceClass.ENERGY,
value_fn=lambda encharge: encharge.available_energy, value_fn=attrgetter("available_energy"),
), ),
EnvoyEnchargeAggregateSensorEntityDescription( EnvoyEnchargeAggregateSensorEntityDescription(
key="reserve_energy", key="reserve_energy",
translation_key="reserve_energy", translation_key="reserve_energy",
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR, native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
device_class=SensorDeviceClass.ENERGY, device_class=SensorDeviceClass.ENERGY,
value_fn=lambda encharge: encharge.backup_reserve, value_fn=attrgetter("backup_reserve"),
), ),
EnvoyEnchargeAggregateSensorEntityDescription( EnvoyEnchargeAggregateSensorEntityDescription(
key="max_capacity", key="max_capacity",
translation_key="max_capacity", translation_key="max_capacity",
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR, native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
device_class=SensorDeviceClass.ENERGY, device_class=SensorDeviceClass.ENERGY,
value_fn=lambda encharge: encharge.max_available_capacity, value_fn=attrgetter("max_available_capacity"),
), ),
) )