Fix SolarEdge statistics; missing device_class (#53720)
This commit is contained in:
parent
3c0e4b1fd9
commit
7c98fc94d4
3 changed files with 59 additions and 59 deletions
|
@ -21,7 +21,7 @@ from .coordinator import (
|
|||
SolarEdgeOverviewDataService,
|
||||
SolarEdgePowerFlowDataService,
|
||||
)
|
||||
from .models import SolarEdgeSensor
|
||||
from .models import SolarEdgeSensorEntityDescription
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
|
@ -68,7 +68,8 @@ class SolarEdgeSensorFactory:
|
|||
self.services: dict[
|
||||
str,
|
||||
tuple[
|
||||
type[SolarEdgeSensor | SolarEdgeOverviewSensor], SolarEdgeDataService
|
||||
type[SolarEdgeSensorEntity | SolarEdgeOverviewSensor],
|
||||
SolarEdgeDataService,
|
||||
],
|
||||
] = {"site_details": (SolarEdgeDetailsSensor, details)}
|
||||
|
||||
|
@ -99,7 +100,9 @@ class SolarEdgeSensorFactory:
|
|||
):
|
||||
self.services[key] = (SolarEdgeEnergyDetailsSensor, energy)
|
||||
|
||||
def create_sensor(self, sensor_type: SolarEdgeSensor) -> SolarEdgeSensor:
|
||||
def create_sensor(
|
||||
self, sensor_type: SolarEdgeSensorEntityDescription
|
||||
) -> SolarEdgeSensorEntityDescription:
|
||||
"""Create and return a sensor based on the sensor_key."""
|
||||
sensor_class, service = self.services[sensor_type.key]
|
||||
|
||||
|
@ -109,27 +112,21 @@ class SolarEdgeSensorFactory:
|
|||
class SolarEdgeSensorEntity(CoordinatorEntity, SensorEntity):
|
||||
"""Abstract class for a solaredge sensor."""
|
||||
|
||||
entity_description: SolarEdgeSensorEntityDescription
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
platform_name: str,
|
||||
sensor_type: SolarEdgeSensor,
|
||||
description: SolarEdgeSensorEntityDescription,
|
||||
data_service: SolarEdgeDataService,
|
||||
) -> None:
|
||||
"""Initialize the sensor."""
|
||||
super().__init__(data_service.coordinator)
|
||||
self.platform_name = platform_name
|
||||
self.sensor_type = sensor_type
|
||||
self.entity_description = description
|
||||
self.data_service = data_service
|
||||
|
||||
self._attr_device_class = sensor_type.device_class
|
||||
self._attr_entity_registry_enabled_default = (
|
||||
sensor_type.entity_registry_enabled_default
|
||||
)
|
||||
self._attr_icon = sensor_type.icon
|
||||
self._attr_last_reset = sensor_type.last_reset
|
||||
self._attr_name = f"{platform_name} ({sensor_type.name})"
|
||||
self._attr_state_class = sensor_type.state_class
|
||||
self._attr_unit_of_measurement = sensor_type.unit_of_measurement
|
||||
self._attr_name = f"{platform_name} ({description.name})"
|
||||
|
||||
|
||||
class SolarEdgeOverviewSensor(SolarEdgeSensorEntity):
|
||||
|
@ -138,7 +135,7 @@ class SolarEdgeOverviewSensor(SolarEdgeSensorEntity):
|
|||
@property
|
||||
def state(self) -> str | None:
|
||||
"""Return the state of the sensor."""
|
||||
return self.data_service.data.get(self.sensor_type.json_key)
|
||||
return self.data_service.data.get(self.entity_description.json_key)
|
||||
|
||||
|
||||
class SolarEdgeDetailsSensor(SolarEdgeSensorEntity):
|
||||
|
@ -161,12 +158,12 @@ class SolarEdgeInventorySensor(SolarEdgeSensorEntity):
|
|||
@property
|
||||
def extra_state_attributes(self) -> dict[str, Any]:
|
||||
"""Return the state attributes."""
|
||||
return self.data_service.attributes.get(self.sensor_type.json_key)
|
||||
return self.data_service.attributes.get(self.entity_description.json_key)
|
||||
|
||||
@property
|
||||
def state(self) -> str | None:
|
||||
"""Return the state of the sensor."""
|
||||
return self.data_service.data.get(self.sensor_type.json_key)
|
||||
return self.data_service.data.get(self.entity_description.json_key)
|
||||
|
||||
|
||||
class SolarEdgeEnergyDetailsSensor(SolarEdgeSensorEntity):
|
||||
|
@ -181,12 +178,12 @@ class SolarEdgeEnergyDetailsSensor(SolarEdgeSensorEntity):
|
|||
@property
|
||||
def extra_state_attributes(self) -> dict[str, Any]:
|
||||
"""Return the state attributes."""
|
||||
return self.data_service.attributes.get(self.sensor_type.json_key)
|
||||
return self.data_service.attributes.get(self.entity_description.json_key)
|
||||
|
||||
@property
|
||||
def state(self) -> str | None:
|
||||
"""Return the state of the sensor."""
|
||||
return self.data_service.data.get(self.sensor_type.json_key)
|
||||
return self.data_service.data.get(self.entity_description.json_key)
|
||||
|
||||
|
||||
class SolarEdgePowerFlowSensor(SolarEdgeSensorEntity):
|
||||
|
@ -197,23 +194,23 @@ class SolarEdgePowerFlowSensor(SolarEdgeSensorEntity):
|
|||
def __init__(
|
||||
self,
|
||||
platform_name: str,
|
||||
sensor_type: SolarEdgeSensor,
|
||||
description: SolarEdgeSensorEntityDescription,
|
||||
data_service: SolarEdgeDataService,
|
||||
) -> None:
|
||||
"""Initialize the power flow sensor."""
|
||||
super().__init__(platform_name, sensor_type, data_service)
|
||||
super().__init__(platform_name, description, data_service)
|
||||
|
||||
self._attr_unit_of_measurement = data_service.unit
|
||||
|
||||
@property
|
||||
def extra_state_attributes(self) -> dict[str, Any]:
|
||||
"""Return the state attributes."""
|
||||
return self.data_service.attributes.get(self.sensor_type.json_key)
|
||||
return self.data_service.attributes.get(self.entity_description.json_key)
|
||||
|
||||
@property
|
||||
def state(self) -> str | None:
|
||||
"""Return the state of the sensor."""
|
||||
return self.data_service.data.get(self.sensor_type.json_key)
|
||||
return self.data_service.data.get(self.entity_description.json_key)
|
||||
|
||||
|
||||
class SolarEdgeStorageLevelSensor(SolarEdgeSensorEntity):
|
||||
|
@ -224,7 +221,7 @@ class SolarEdgeStorageLevelSensor(SolarEdgeSensorEntity):
|
|||
@property
|
||||
def state(self) -> str | None:
|
||||
"""Return the state of the sensor."""
|
||||
attr = self.data_service.attributes.get(self.sensor_type.json_key)
|
||||
attr = self.data_service.attributes.get(self.entity_description.json_key)
|
||||
if attr and "soc" in attr:
|
||||
return attr["soc"]
|
||||
return None
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue