1
0
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:
farmio
2023-06-07 09:30:11 +02:00
parent 76920037e6
commit 866d1c9040

View File

@@ -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