diff --git a/homeassistant/components/growatt_server/coordinator.py b/homeassistant/components/growatt_server/coordinator.py index c228c61408d..e5b48fe0ecd 100644 --- a/homeassistant/components/growatt_server/coordinator.py +++ b/homeassistant/components/growatt_server/coordinator.py @@ -251,7 +251,7 @@ class GrowattCoordinator(DataUpdateCoordinator[dict[str, Any]]): def get_data( self, entity_description: GrowattSensorEntityDescription - ) -> str | int | float | None: + ) -> str | int | float | datetime.datetime | datetime.date | None: """Get the data.""" variable = entity_description.api_key api_value = self.data.get(variable) diff --git a/homeassistant/components/growatt_server/number.py b/homeassistant/components/growatt_server/number.py index 7542a283fe9..ccf72aed7cb 100644 --- a/homeassistant/components/growatt_server/number.py +++ b/homeassistant/components/growatt_server/number.py @@ -17,7 +17,6 @@ from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import DOMAIN from .coordinator import GrowattConfigEntry, GrowattCoordinator -from .sensor.sensor_entity_description import GrowattRequiredKeysMixin _LOGGER = logging.getLogger(__name__) @@ -27,9 +26,10 @@ PARALLEL_UPDATES = ( @dataclass(frozen=True, kw_only=True) -class GrowattNumberEntityDescription(NumberEntityDescription, GrowattRequiredKeysMixin): +class GrowattNumberEntityDescription(NumberEntityDescription): """Describes Growatt number entity.""" + api_key: str write_key: str | None = None # Parameter ID for writing (if different from api_key) diff --git a/homeassistant/components/growatt_server/quality_scale.yaml b/homeassistant/components/growatt_server/quality_scale.yaml index 6aec0d7428f..be6f188f31e 100644 --- a/homeassistant/components/growatt_server/quality_scale.yaml +++ b/homeassistant/components/growatt_server/quality_scale.yaml @@ -45,9 +45,7 @@ rules: docs-use-cases: todo dynamic-devices: todo entity-category: done - entity-device-class: - status: todo - comment: Replace custom precision field with suggested_display_precision to preserve full data granularity. + entity-device-class: done entity-disabled-by-default: done entity-translations: done exception-translations: todo diff --git a/homeassistant/components/growatt_server/sensor/__init__.py b/homeassistant/components/growatt_server/sensor/__init__.py index da3f19c6368..cbbcb25e29f 100644 --- a/homeassistant/components/growatt_server/sensor/__init__.py +++ b/homeassistant/components/growatt_server/sensor/__init__.py @@ -2,12 +2,14 @@ from __future__ import annotations +from datetime import date, datetime import logging from homeassistant.components.sensor import SensorEntity from homeassistant.core import HomeAssistant from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback +from homeassistant.helpers.typing import StateType from homeassistant.helpers.update_coordinator import CoordinatorEntity from ..const import DOMAIN @@ -109,15 +111,9 @@ class GrowattSensor(CoordinatorEntity[GrowattCoordinator], SensorEntity): ) @property - def native_value(self) -> str | int | float | None: + def native_value(self) -> StateType | date | datetime: """Return the state of the sensor.""" - result = self.coordinator.get_data(self.entity_description) - if ( - isinstance(result, (int, float)) - and self.entity_description.precision is not None - ): - result = round(result, self.entity_description.precision) - return result + return self.coordinator.get_data(self.entity_description) @property def native_unit_of_measurement(self) -> str | None: diff --git a/homeassistant/components/growatt_server/sensor/inverter.py b/homeassistant/components/growatt_server/sensor/inverter.py index 2c36d846018..dcefc394b87 100644 --- a/homeassistant/components/growatt_server/sensor/inverter.py +++ b/homeassistant/components/growatt_server/sensor/inverter.py @@ -23,7 +23,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="inverter_energy_total", @@ -31,7 +31,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="powerTotal", native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, - precision=1, + suggested_display_precision=1, state_class=SensorStateClass.TOTAL, ), GrowattSensorEntityDescription( @@ -41,7 +41,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricPotential.VOLT, device_class=SensorDeviceClass.VOLTAGE, state_class=SensorStateClass.MEASUREMENT, - precision=2, + suggested_display_precision=2, ), GrowattSensorEntityDescription( key="inverter_amperage_input_1", @@ -50,7 +50,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, device_class=SensorDeviceClass.CURRENT, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="inverter_wattage_input_1", @@ -59,7 +59,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="inverter_voltage_input_2", @@ -68,7 +68,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricPotential.VOLT, device_class=SensorDeviceClass.VOLTAGE, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="inverter_amperage_input_2", @@ -77,7 +77,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, device_class=SensorDeviceClass.CURRENT, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="inverter_wattage_input_2", @@ -86,7 +86,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="inverter_voltage_input_3", @@ -95,7 +95,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricPotential.VOLT, device_class=SensorDeviceClass.VOLTAGE, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="inverter_amperage_input_3", @@ -104,7 +104,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, device_class=SensorDeviceClass.CURRENT, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="inverter_wattage_input_3", @@ -113,7 +113,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="inverter_internal_wattage", @@ -122,7 +122,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="inverter_reactive_voltage", @@ -131,7 +131,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricPotential.VOLT, device_class=SensorDeviceClass.VOLTAGE, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), @@ -142,7 +142,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, device_class=SensorDeviceClass.CURRENT, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), @@ -153,7 +153,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfFrequency.HERTZ, device_class=SensorDeviceClass.FREQUENCY, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), @@ -164,7 +164,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="inverter_current_reactive_wattage", @@ -173,7 +173,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), @@ -184,7 +184,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfTemperature.CELSIUS, device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), @@ -195,7 +195,7 @@ INVERTER_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfTemperature.CELSIUS, device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), diff --git a/homeassistant/components/growatt_server/sensor/sensor_entity_description.py b/homeassistant/components/growatt_server/sensor/sensor_entity_description.py index e1ee4c30326..e1bb01c5d84 100644 --- a/homeassistant/components/growatt_server/sensor/sensor_entity_description.py +++ b/homeassistant/components/growatt_server/sensor/sensor_entity_description.py @@ -7,18 +7,11 @@ from dataclasses import dataclass from homeassistant.components.sensor import SensorEntityDescription -@dataclass(frozen=True) -class GrowattRequiredKeysMixin: - """Mixin for required keys.""" - - api_key: str - - -@dataclass(frozen=True) -class GrowattSensorEntityDescription(SensorEntityDescription, GrowattRequiredKeysMixin): +@dataclass(frozen=True, kw_only=True) +class GrowattSensorEntityDescription(SensorEntityDescription): """Describes Growatt sensor entity.""" - precision: int | None = None + api_key: str currency: bool = False previous_value_drop_threshold: float | None = None never_resets: bool = False diff --git a/homeassistant/components/growatt_server/sensor/storage.py b/homeassistant/components/growatt_server/sensor/storage.py index 81d0c1b2088..0ad3584ed46 100644 --- a/homeassistant/components/growatt_server/sensor/storage.py +++ b/homeassistant/components/growatt_server/sensor/storage.py @@ -190,7 +190,7 @@ STORAGE_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricPotential.VOLT, device_class=SensorDeviceClass.VOLTAGE, state_class=SensorStateClass.MEASUREMENT, - precision=2, + suggested_display_precision=2, ), GrowattSensorEntityDescription( key="storage_pv_charging_voltage", @@ -199,7 +199,7 @@ STORAGE_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricPotential.VOLT, device_class=SensorDeviceClass.VOLTAGE, state_class=SensorStateClass.MEASUREMENT, - precision=2, + suggested_display_precision=2, ), GrowattSensorEntityDescription( key="storage_pv_charging_voltage_2", @@ -208,7 +208,7 @@ STORAGE_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricPotential.VOLT, device_class=SensorDeviceClass.VOLTAGE, state_class=SensorStateClass.MEASUREMENT, - precision=2, + suggested_display_precision=2, ), GrowattSensorEntityDescription( key="storage_ac_input_frequency_out", @@ -217,7 +217,7 @@ STORAGE_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfFrequency.HERTZ, device_class=SensorDeviceClass.FREQUENCY, state_class=SensorStateClass.MEASUREMENT, - precision=2, + suggested_display_precision=2, entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), @@ -228,7 +228,7 @@ STORAGE_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricPotential.VOLT, device_class=SensorDeviceClass.VOLTAGE, state_class=SensorStateClass.MEASUREMENT, - precision=2, + suggested_display_precision=2, ), GrowattSensorEntityDescription( key="storage_ac_output_frequency", @@ -237,7 +237,7 @@ STORAGE_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfFrequency.HERTZ, device_class=SensorDeviceClass.FREQUENCY, state_class=SensorStateClass.MEASUREMENT, - precision=2, + suggested_display_precision=2, entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), @@ -248,7 +248,7 @@ STORAGE_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, device_class=SensorDeviceClass.CURRENT, state_class=SensorStateClass.MEASUREMENT, - precision=2, + suggested_display_precision=2, ), GrowattSensorEntityDescription( key="storage_current_1", @@ -257,7 +257,7 @@ STORAGE_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, device_class=SensorDeviceClass.CURRENT, state_class=SensorStateClass.MEASUREMENT, - precision=2, + suggested_display_precision=2, ), GrowattSensorEntityDescription( key="storage_current_2", @@ -266,7 +266,7 @@ STORAGE_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, device_class=SensorDeviceClass.CURRENT, state_class=SensorStateClass.MEASUREMENT, - precision=2, + suggested_display_precision=2, ), GrowattSensorEntityDescription( key="storage_grid_amperage_input", @@ -275,7 +275,7 @@ STORAGE_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, device_class=SensorDeviceClass.CURRENT, state_class=SensorStateClass.MEASUREMENT, - precision=2, + suggested_display_precision=2, ), GrowattSensorEntityDescription( key="storage_grid_out_current", @@ -284,7 +284,7 @@ STORAGE_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, device_class=SensorDeviceClass.CURRENT, state_class=SensorStateClass.MEASUREMENT, - precision=2, + suggested_display_precision=2, ), GrowattSensorEntityDescription( key="storage_battery_voltage", @@ -293,7 +293,7 @@ STORAGE_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfElectricPotential.VOLT, device_class=SensorDeviceClass.VOLTAGE, state_class=SensorStateClass.MEASUREMENT, - precision=2, + suggested_display_precision=2, ), GrowattSensorEntityDescription( key="storage_load_percentage", @@ -302,6 +302,6 @@ STORAGE_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=PERCENTAGE, device_class=SensorDeviceClass.BATTERY, state_class=SensorStateClass.MEASUREMENT, - precision=2, + suggested_display_precision=2, ), ) diff --git a/homeassistant/components/growatt_server/sensor/tlx.py b/homeassistant/components/growatt_server/sensor/tlx.py index bece130e32f..7307ac87933 100644 --- a/homeassistant/components/growatt_server/sensor/tlx.py +++ b/homeassistant/components/growatt_server/sensor/tlx.py @@ -27,7 +27,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_energy_total", @@ -36,7 +36,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, never_resets=True, ), GrowattSensorEntityDescription( @@ -46,7 +46,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, never_resets=True, ), GrowattSensorEntityDescription( @@ -56,7 +56,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_voltage_input_1", @@ -64,7 +64,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="vpv1", native_unit_of_measurement=UnitOfElectricPotential.VOLT, device_class=SensorDeviceClass.VOLTAGE, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_amperage_input_1", @@ -72,7 +72,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="ipv1", native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, device_class=SensorDeviceClass.CURRENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_wattage_input_1", @@ -81,7 +81,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_energy_total_input_2", @@ -90,7 +90,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, never_resets=True, ), GrowattSensorEntityDescription( @@ -100,7 +100,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_voltage_input_2", @@ -108,7 +108,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="vpv2", native_unit_of_measurement=UnitOfElectricPotential.VOLT, device_class=SensorDeviceClass.VOLTAGE, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_amperage_input_2", @@ -116,7 +116,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="ipv2", native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, device_class=SensorDeviceClass.CURRENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_wattage_input_2", @@ -125,7 +125,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_energy_total_input_3", @@ -134,7 +134,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, never_resets=True, ), GrowattSensorEntityDescription( @@ -144,7 +144,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_voltage_input_3", @@ -152,7 +152,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="vpv3", native_unit_of_measurement=UnitOfElectricPotential.VOLT, device_class=SensorDeviceClass.VOLTAGE, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_amperage_input_3", @@ -160,7 +160,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="ipv3", native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, device_class=SensorDeviceClass.CURRENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_wattage_input_3", @@ -169,7 +169,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_energy_total_input_4", @@ -178,7 +178,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, never_resets=True, ), GrowattSensorEntityDescription( @@ -188,7 +188,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_voltage_input_4", @@ -196,7 +196,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="vpv4", native_unit_of_measurement=UnitOfElectricPotential.VOLT, device_class=SensorDeviceClass.VOLTAGE, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_amperage_input_4", @@ -204,7 +204,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="ipv4", native_unit_of_measurement=UnitOfElectricCurrent.AMPERE, device_class=SensorDeviceClass.CURRENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_wattage_input_4", @@ -213,7 +213,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_solar_generation_today", @@ -222,7 +222,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_solar_generation_total", @@ -240,7 +240,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_reactive_voltage", @@ -248,7 +248,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="vacrs", native_unit_of_measurement=UnitOfElectricPotential.VOLT, device_class=SensorDeviceClass.VOLTAGE, - precision=1, + suggested_display_precision=1, entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), @@ -258,7 +258,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="fac", native_unit_of_measurement=UnitOfFrequency.HERTZ, device_class=SensorDeviceClass.FREQUENCY, - precision=1, + suggested_display_precision=1, entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), @@ -269,7 +269,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_temperature_1", @@ -277,7 +277,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="temp1", native_unit_of_measurement=UnitOfTemperature.CELSIUS, device_class=SensorDeviceClass.TEMPERATURE, - precision=1, + suggested_display_precision=1, entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), @@ -287,7 +287,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="temp2", native_unit_of_measurement=UnitOfTemperature.CELSIUS, device_class=SensorDeviceClass.TEMPERATURE, - precision=1, + suggested_display_precision=1, entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), @@ -297,7 +297,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="temp3", native_unit_of_measurement=UnitOfTemperature.CELSIUS, device_class=SensorDeviceClass.TEMPERATURE, - precision=1, + suggested_display_precision=1, entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), @@ -307,7 +307,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="temp4", native_unit_of_measurement=UnitOfTemperature.CELSIUS, device_class=SensorDeviceClass.TEMPERATURE, - precision=1, + suggested_display_precision=1, entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), @@ -317,7 +317,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( api_key="temp5", native_unit_of_measurement=UnitOfTemperature.CELSIUS, device_class=SensorDeviceClass.TEMPERATURE, - precision=1, + suggested_display_precision=1, entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, ), @@ -471,7 +471,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_pac_to_user_total", @@ -480,7 +480,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_pac_to_grid_total", @@ -489,7 +489,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_system_production_today", @@ -498,7 +498,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_system_production_total", @@ -508,7 +508,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, never_resets=True, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_self_consumption_today", @@ -517,7 +517,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_self_consumption_total", @@ -527,7 +527,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, never_resets=True, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_import_from_grid_today", @@ -536,7 +536,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_import_from_grid_total", @@ -546,7 +546,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, never_resets=True, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_batteries_charged_from_grid_today", @@ -555,7 +555,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_batteries_charged_from_grid_total", @@ -565,7 +565,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL_INCREASING, never_resets=True, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_p_system", @@ -574,7 +574,7 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), GrowattSensorEntityDescription( key="tlx_p_self", @@ -583,6 +583,6 @@ TLX_SENSOR_TYPES: tuple[GrowattSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfPower.WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, - precision=1, + suggested_display_precision=1, ), ) diff --git a/homeassistant/components/growatt_server/switch.py b/homeassistant/components/growatt_server/switch.py index 70eaa999fc9..cad7cea7cfa 100644 --- a/homeassistant/components/growatt_server/switch.py +++ b/homeassistant/components/growatt_server/switch.py @@ -18,7 +18,6 @@ from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import DOMAIN from .coordinator import GrowattConfigEntry, GrowattCoordinator -from .sensor.sensor_entity_description import GrowattRequiredKeysMixin _LOGGER = logging.getLogger(__name__) @@ -28,9 +27,10 @@ PARALLEL_UPDATES = ( @dataclass(frozen=True, kw_only=True) -class GrowattSwitchEntityDescription(SwitchEntityDescription, GrowattRequiredKeysMixin): +class GrowattSwitchEntityDescription(SwitchEntityDescription): """Describes Growatt switch entity.""" + api_key: str write_key: str | None = None # Parameter ID for writing (if different from api_key) diff --git a/tests/components/growatt_server/snapshots/test_sensor.ambr b/tests/components/growatt_server/snapshots/test_sensor.ambr index e7ae64d8892..46d6a1729a3 100644 --- a/tests/components/growatt_server/snapshots/test_sensor.ambr +++ b/tests/components/growatt_server/snapshots/test_sensor.ambr @@ -24,7 +24,7 @@ 'object_id_base': 'AC frequency', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -200,7 +200,7 @@ 'object_id_base': 'Batteries charged from grid today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -495,7 +495,7 @@ 'object_id_base': 'Energy today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -554,7 +554,7 @@ 'object_id_base': 'Energy today input 1', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -613,7 +613,7 @@ 'object_id_base': 'Energy today input 2', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -672,7 +672,7 @@ 'object_id_base': 'Energy today input 3', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -731,7 +731,7 @@ 'object_id_base': 'Energy today input 4', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -790,7 +790,7 @@ 'object_id_base': 'Export power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -908,7 +908,7 @@ 'object_id_base': 'Import from grid today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -967,7 +967,7 @@ 'object_id_base': 'Import power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1024,7 +1024,7 @@ 'object_id_base': 'Input 1 amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1080,7 +1080,7 @@ 'object_id_base': 'Input 1 voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1138,7 +1138,7 @@ 'object_id_base': 'Input 1 wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1195,7 +1195,7 @@ 'object_id_base': 'Input 2 amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1251,7 +1251,7 @@ 'object_id_base': 'Input 2 voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1309,7 +1309,7 @@ 'object_id_base': 'Input 2 wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1366,7 +1366,7 @@ 'object_id_base': 'Input 3 amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1422,7 +1422,7 @@ 'object_id_base': 'Input 3 voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1480,7 +1480,7 @@ 'object_id_base': 'Input 3 wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1537,7 +1537,7 @@ 'object_id_base': 'Input 4 amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1593,7 +1593,7 @@ 'object_id_base': 'Input 4 voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1651,7 +1651,7 @@ 'object_id_base': 'Input 4 wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1710,7 +1710,7 @@ 'object_id_base': 'Internal wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1769,7 +1769,7 @@ 'object_id_base': 'Lifetime batteries charged from grid', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1828,7 +1828,7 @@ 'object_id_base': 'Lifetime energy output', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1887,7 +1887,7 @@ 'object_id_base': 'Lifetime import from grid', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -1946,7 +1946,7 @@ 'object_id_base': 'Lifetime self consumption', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -2005,7 +2005,7 @@ 'object_id_base': 'Lifetime system production', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -2418,7 +2418,7 @@ 'object_id_base': 'Lifetime total energy input 1', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -2477,7 +2477,7 @@ 'object_id_base': 'Lifetime total energy input 2', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -2536,7 +2536,7 @@ 'object_id_base': 'Lifetime total energy input 3', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -2595,7 +2595,7 @@ 'object_id_base': 'Lifetime total energy input 4', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -2890,7 +2890,7 @@ 'object_id_base': 'Local load power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -2949,7 +2949,7 @@ 'object_id_base': 'Output power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -3006,7 +3006,7 @@ 'object_id_base': 'Reactive voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -3064,7 +3064,7 @@ 'object_id_base': 'Self consumption today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -3123,7 +3123,7 @@ 'object_id_base': 'Self power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -3182,7 +3182,7 @@ 'object_id_base': 'Solar energy today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -3294,7 +3294,7 @@ 'object_id_base': 'System power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -3353,7 +3353,7 @@ 'object_id_base': 'System production today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -4030,7 +4030,7 @@ 'object_id_base': 'AC frequency', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -4089,7 +4089,7 @@ 'object_id_base': 'Energy today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -4148,7 +4148,7 @@ 'object_id_base': 'Input 1 amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -4207,7 +4207,7 @@ 'object_id_base': 'Input 1 voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 2, }), }), 'original_device_class': , @@ -4266,7 +4266,7 @@ 'object_id_base': 'Input 1 wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -4325,7 +4325,7 @@ 'object_id_base': 'Input 2 amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -4384,7 +4384,7 @@ 'object_id_base': 'Input 2 voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -4443,7 +4443,7 @@ 'object_id_base': 'Input 2 wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -4502,7 +4502,7 @@ 'object_id_base': 'Input 3 amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -4561,7 +4561,7 @@ 'object_id_base': 'Input 3 voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -4620,7 +4620,7 @@ 'object_id_base': 'Input 3 wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -4738,7 +4738,7 @@ 'object_id_base': 'Internal wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -4856,7 +4856,7 @@ 'object_id_base': 'Lifetime energy output', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -4915,7 +4915,7 @@ 'object_id_base': 'Output power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -4974,7 +4974,7 @@ 'object_id_base': 'Reactive amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -5033,7 +5033,7 @@ 'object_id_base': 'Reactive voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -5092,7 +5092,7 @@ 'object_id_base': 'Reactive wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -7635,7 +7635,7 @@ 'object_id_base': 'AC input frequency', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 2, }), }), 'original_device_class': , @@ -7694,7 +7694,7 @@ 'object_id_base': 'AC input voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 2, }), }), 'original_device_class': , @@ -7753,7 +7753,7 @@ 'object_id_base': 'AC output frequency', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 2, }), }), 'original_device_class': , @@ -7868,7 +7868,7 @@ 'object_id_base': 'Battery voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 2, }), }), 'original_device_class': , @@ -8925,6 +8925,9 @@ 'name': None, 'object_id_base': 'Load percentage', 'options': dict({ + 'sensor': dict({ + 'suggested_display_precision': 2, + }), }), 'original_device_class': , 'original_icon': 'mdi:solar-power', @@ -8982,7 +8985,7 @@ 'object_id_base': 'Output voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 2, }), }), 'original_device_class': , @@ -9041,7 +9044,7 @@ 'object_id_base': 'PV1 charging voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 2, }), }), 'original_device_class': , @@ -9159,7 +9162,7 @@ 'object_id_base': 'PV2 charging voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 2, }), }), 'original_device_class': , @@ -10309,7 +10312,7 @@ 'object_id_base': 'AC frequency', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -10485,7 +10488,7 @@ 'object_id_base': 'Batteries charged from grid today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -10780,7 +10783,7 @@ 'object_id_base': 'Energy today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -10839,7 +10842,7 @@ 'object_id_base': 'Energy today input 1', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -10898,7 +10901,7 @@ 'object_id_base': 'Energy today input 2', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -10957,7 +10960,7 @@ 'object_id_base': 'Energy today input 3', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11016,7 +11019,7 @@ 'object_id_base': 'Energy today input 4', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11075,7 +11078,7 @@ 'object_id_base': 'Export power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11193,7 +11196,7 @@ 'object_id_base': 'Import from grid today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11252,7 +11255,7 @@ 'object_id_base': 'Import power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11309,7 +11312,7 @@ 'object_id_base': 'Input 1 amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11365,7 +11368,7 @@ 'object_id_base': 'Input 1 voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11423,7 +11426,7 @@ 'object_id_base': 'Input 1 wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11480,7 +11483,7 @@ 'object_id_base': 'Input 2 amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11536,7 +11539,7 @@ 'object_id_base': 'Input 2 voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11594,7 +11597,7 @@ 'object_id_base': 'Input 2 wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11651,7 +11654,7 @@ 'object_id_base': 'Input 3 amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11707,7 +11710,7 @@ 'object_id_base': 'Input 3 voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11765,7 +11768,7 @@ 'object_id_base': 'Input 3 wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11822,7 +11825,7 @@ 'object_id_base': 'Input 4 amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11878,7 +11881,7 @@ 'object_id_base': 'Input 4 voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11936,7 +11939,7 @@ 'object_id_base': 'Input 4 wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -11995,7 +11998,7 @@ 'object_id_base': 'Internal wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -12054,7 +12057,7 @@ 'object_id_base': 'Lifetime batteries charged from grid', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -12113,7 +12116,7 @@ 'object_id_base': 'Lifetime energy output', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -12172,7 +12175,7 @@ 'object_id_base': 'Lifetime import from grid', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -12231,7 +12234,7 @@ 'object_id_base': 'Lifetime self consumption', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -12290,7 +12293,7 @@ 'object_id_base': 'Lifetime system production', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -12703,7 +12706,7 @@ 'object_id_base': 'Lifetime total energy input 1', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -12762,7 +12765,7 @@ 'object_id_base': 'Lifetime total energy input 2', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -12821,7 +12824,7 @@ 'object_id_base': 'Lifetime total energy input 3', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -12880,7 +12883,7 @@ 'object_id_base': 'Lifetime total energy input 4', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -13175,7 +13178,7 @@ 'object_id_base': 'Local load power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -13234,7 +13237,7 @@ 'object_id_base': 'Output power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -13291,7 +13294,7 @@ 'object_id_base': 'Reactive voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -13349,7 +13352,7 @@ 'object_id_base': 'Self consumption today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -13408,7 +13411,7 @@ 'object_id_base': 'Self power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -13467,7 +13470,7 @@ 'object_id_base': 'Solar energy today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -13579,7 +13582,7 @@ 'object_id_base': 'System power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -13638,7 +13641,7 @@ 'object_id_base': 'System production today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -16634,7 +16637,7 @@ 'object_id_base': 'AC frequency', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -16810,7 +16813,7 @@ 'object_id_base': 'Batteries charged from grid today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -17105,7 +17108,7 @@ 'object_id_base': 'Energy today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -17164,7 +17167,7 @@ 'object_id_base': 'Energy today input 1', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -17223,7 +17226,7 @@ 'object_id_base': 'Energy today input 2', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -17282,7 +17285,7 @@ 'object_id_base': 'Energy today input 3', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -17341,7 +17344,7 @@ 'object_id_base': 'Energy today input 4', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -17400,7 +17403,7 @@ 'object_id_base': 'Export power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -17518,7 +17521,7 @@ 'object_id_base': 'Import from grid today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -17577,7 +17580,7 @@ 'object_id_base': 'Import power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -17634,7 +17637,7 @@ 'object_id_base': 'Input 1 amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -17690,7 +17693,7 @@ 'object_id_base': 'Input 1 voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -17748,7 +17751,7 @@ 'object_id_base': 'Input 1 wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -17805,7 +17808,7 @@ 'object_id_base': 'Input 2 amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -17861,7 +17864,7 @@ 'object_id_base': 'Input 2 voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -17919,7 +17922,7 @@ 'object_id_base': 'Input 2 wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -17976,7 +17979,7 @@ 'object_id_base': 'Input 3 amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -18032,7 +18035,7 @@ 'object_id_base': 'Input 3 voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -18090,7 +18093,7 @@ 'object_id_base': 'Input 3 wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -18147,7 +18150,7 @@ 'object_id_base': 'Input 4 amperage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -18203,7 +18206,7 @@ 'object_id_base': 'Input 4 voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -18261,7 +18264,7 @@ 'object_id_base': 'Input 4 wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -18320,7 +18323,7 @@ 'object_id_base': 'Internal wattage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -18379,7 +18382,7 @@ 'object_id_base': 'Lifetime batteries charged from grid', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -18438,7 +18441,7 @@ 'object_id_base': 'Lifetime energy output', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -18497,7 +18500,7 @@ 'object_id_base': 'Lifetime import from grid', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -18556,7 +18559,7 @@ 'object_id_base': 'Lifetime self consumption', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -18615,7 +18618,7 @@ 'object_id_base': 'Lifetime system production', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -19028,7 +19031,7 @@ 'object_id_base': 'Lifetime total energy input 1', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -19087,7 +19090,7 @@ 'object_id_base': 'Lifetime total energy input 2', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -19146,7 +19149,7 @@ 'object_id_base': 'Lifetime total energy input 3', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -19205,7 +19208,7 @@ 'object_id_base': 'Lifetime total energy input 4', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -19500,7 +19503,7 @@ 'object_id_base': 'Local load power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -19559,7 +19562,7 @@ 'object_id_base': 'Output power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -19616,7 +19619,7 @@ 'object_id_base': 'Reactive voltage', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -19674,7 +19677,7 @@ 'object_id_base': 'Self consumption today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -19733,7 +19736,7 @@ 'object_id_base': 'Self power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -19792,7 +19795,7 @@ 'object_id_base': 'Solar energy today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -19904,7 +19907,7 @@ 'object_id_base': 'System power', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 0, + 'suggested_display_precision': 1, }), }), 'original_device_class': , @@ -19963,7 +19966,7 @@ 'object_id_base': 'System production today', 'options': dict({ 'sensor': dict({ - 'suggested_display_precision': 2, + 'suggested_display_precision': 1, }), }), 'original_device_class': ,