mirror of
https://github.com/elisspace/core.git
synced 2026-08-29 15:43:55 +00:00
Add optional value_fn to EntityDescriptions
eg. to be able to map a API response value to a different value (status_code -> message)
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
"""Support for Fronius devices."""
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Callable
|
||||
from dataclasses import dataclass
|
||||
from typing import TYPE_CHECKING, Any, Final
|
||||
|
||||
@@ -85,6 +86,7 @@ class FroniusSensorEntityDescription(SensorEntityDescription):
|
||||
|
||||
default_value: StateType | None = None
|
||||
response_key: str | None = None
|
||||
value_fn: Callable[[StateType], StateType] | None = None
|
||||
|
||||
|
||||
INVERTER_ENTITY_DESCRIPTIONS: list[FroniusSensorEntityDescription] = [
|
||||
@@ -630,6 +632,8 @@ class _FroniusSensorEntity(CoordinatorEntity["FroniusCoordinatorBase"], SensorEn
|
||||
new_value = self.coordinator.data[self.solar_net_id][self.response_key]["value"]
|
||||
if new_value is None:
|
||||
return self.entity_description.default_value
|
||||
if self.entity_description.value_fn is not None:
|
||||
return self.entity_description.value_fn(new_value)
|
||||
if isinstance(new_value, float):
|
||||
return round(new_value, 4)
|
||||
return new_value
|
||||
|
||||
Reference in New Issue
Block a user