diff --git a/custom_components/ferroamp/config_flow.py b/custom_components/ferroamp/config_flow.py index 3941efa..b6dc0e9 100644 --- a/custom_components/ferroamp/config_flow.py +++ b/custom_components/ferroamp/config_flow.py @@ -7,17 +7,7 @@ from homeassistant.util import slugify import voluptuous as vol -from .const import ( - CONF_INTERVAL, - CONF_PRECISION_BATTERY, - CONF_PRECISION_CURRENT, - CONF_PRECISION_ENERGY, - CONF_PRECISION_FREQUENCY, - CONF_PRECISION_TEMPERATURE, - CONF_PRECISION_VOLTAGE, - DOMAIN, - MANUFACTURER, -) +from .const import CONF_INTERVAL, DOMAIN, MANUFACTURER TOPIC_SCHEMA = vol.Schema( { @@ -68,32 +58,6 @@ async def async_step_init(self, user_input=None): if interval is None or interval == 0: interval = 30 - precision_battery = self.config_entry.options.get(CONF_PRECISION_BATTERY) - if precision_battery is None: - precision_battery = 1 - - precision_current = self.config_entry.options.get(CONF_PRECISION_CURRENT) - if precision_current is None: - precision_current = 0 - - precision_energy = self.config_entry.options.get(CONF_PRECISION_ENERGY) - if precision_energy is None: - precision_energy = 1 - - precision_frequency = self.config_entry.options.get(CONF_PRECISION_FREQUENCY) - if precision_frequency is None: - precision_frequency = 2 - - precision_temperature = self.config_entry.options.get( - CONF_PRECISION_TEMPERATURE - ) - if precision_temperature is None: - precision_temperature = 0 - - precision_voltage = self.config_entry.options.get(CONF_PRECISION_VOLTAGE) - if precision_voltage is None: - precision_voltage = 0 - return self.async_show_form( step_id="init", data_schema=vol.Schema( @@ -102,30 +66,6 @@ async def async_step_init(self, user_input=None): CONF_INTERVAL, default=interval, ): cv.positive_int, - vol.Required( - CONF_PRECISION_BATTERY, - default=precision_battery, - ): cv.positive_int, - vol.Required( - CONF_PRECISION_CURRENT, - default=precision_current, - ): cv.positive_int, - vol.Required( - CONF_PRECISION_ENERGY, - default=precision_energy, - ): cv.positive_int, - vol.Required( - CONF_PRECISION_FREQUENCY, - default=precision_frequency, - ): cv.positive_int, - vol.Required( - CONF_PRECISION_TEMPERATURE, - default=precision_temperature, - ): cv.positive_int, - vol.Required( - CONF_PRECISION_VOLTAGE, - default=precision_voltage, - ): cv.positive_int, } ), errors=errors, diff --git a/custom_components/ferroamp/const.py b/custom_components/ferroamp/const.py index b49dab0..e4de697 100644 --- a/custom_components/ferroamp/const.py +++ b/custom_components/ferroamp/const.py @@ -2,12 +2,6 @@ import re CONF_INTERVAL = "interval" -CONF_PRECISION_BATTERY = "precision_battery" -CONF_PRECISION_CURRENT = "precision_current" -CONF_PRECISION_ENERGY = "precision_energy" -CONF_PRECISION_FREQUENCY = "precision_frequency" -CONF_PRECISION_TEMPERATURE = "precision_temperature" -CONF_PRECISION_VOLTAGE = "precision_voltage" DATA_DEVICES = "devices" DATA_LISTENERS = "listeners" DATA_PREFIXES = "prefixes" diff --git a/custom_components/ferroamp/sensor.py b/custom_components/ferroamp/sensor.py index 6e2d4a4..f67fec8 100644 --- a/custom_components/ferroamp/sensor.py +++ b/custom_components/ferroamp/sensor.py @@ -33,12 +33,6 @@ from .const import ( CONF_INTERVAL, - CONF_PRECISION_BATTERY, - CONF_PRECISION_CURRENT, - CONF_PRECISION_ENERGY, - CONF_PRECISION_FREQUENCY, - CONF_PRECISION_TEMPERATURE, - CONF_PRECISION_VOLTAGE, DATA_DEVICES, DATA_LISTENERS, DOMAIN, @@ -82,12 +76,6 @@ async def async_setup_entry( slug = slugify(name) interval = get_option(config_entry, CONF_INTERVAL, 30) - precision_battery = get_option(config_entry, CONF_PRECISION_BATTERY, 1) - precision_current = get_option(config_entry, CONF_PRECISION_CURRENT, 0) - precision_energy = get_option(config_entry, CONF_PRECISION_ENERGY, 1) - precision_frequency = get_option(config_entry, CONF_PRECISION_FREQUENCY, 2) - precision_temperature = get_option(config_entry, CONF_PRECISION_TEMPERATURE, 0) - precision_voltage = get_option(config_entry, CONF_PRECISION_VOLTAGE, 0) listeners.append(config_entry.add_update_listener(options_update_listener)) @@ -96,10 +84,6 @@ async def async_setup_entry( ehub = ehub_sensors( slug, interval, - precision_battery, - precision_current, - precision_energy, - precision_frequency, config_id, ) eso_sensors = {} @@ -169,7 +153,6 @@ def sso_event_received(msg): device_id, device_name, interval, - precision_voltage, config_id, model=model, ), @@ -181,7 +164,6 @@ def sso_event_received(msg): device_id, device_name, interval, - precision_current, config_id, model=model, ), @@ -205,7 +187,6 @@ def sso_event_received(msg): device_id, device_name, interval, - precision_energy, config_id, model=model, ), @@ -237,7 +218,6 @@ def sso_event_received(msg): device_id, device_name, interval, - precision_temperature, config_id, model=model, ), @@ -265,7 +245,6 @@ def eso_event_received(msg): device_id, device_name, interval, - precision_voltage, config_id, ), CurrentFerroampSensor( @@ -276,7 +255,6 @@ def eso_event_received(msg): device_id, device_name, interval, - precision_current, config_id, ), CalculatedPowerFerroampSensor( @@ -298,7 +276,6 @@ def eso_event_received(msg): device_id, device_name, interval, - precision_energy, config_id, ), EnergyFerroampSensor( @@ -309,7 +286,6 @@ def eso_event_received(msg): device_id, device_name, interval, - precision_energy, config_id, ), BatteryFerroampSensor( @@ -319,7 +295,6 @@ def eso_event_received(msg): device_id, device_name, interval, - precision_battery, config_id, ), FaultcodeFerroampSensor( @@ -348,7 +323,6 @@ def eso_event_received(msg): device_id, device_name, interval, - precision_temperature, config_id, ), ] @@ -403,7 +377,6 @@ def esm_event_received(msg): device_id, device_name, interval, - precision_battery, config_id, model=model, ), @@ -414,7 +387,6 @@ def esm_event_received(msg): device_id, device_name, interval, - precision_battery, config_id, model=model, ), @@ -830,7 +802,6 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ): @@ -847,7 +818,6 @@ def __init__( config_id, **kwargs, ) - self._precision = precision def update_state_from_events(self, events) -> bool: temp = None @@ -860,9 +830,7 @@ def update_state_from_events(self, events) -> bool: if temp is None: return False else: - self._attr_native_value = round(temp / count, self._precision) - if self._precision == 0: - self._attr_native_value = int(self._attr_native_value) + self._attr_native_value = temp / count return True @@ -928,7 +896,6 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ): @@ -941,7 +908,6 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ) @@ -967,7 +933,6 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ): @@ -978,16 +943,11 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ) self._attr_device_class = SensorDeviceClass.BATTERY - def handle_options_update(self, options): - super().handle_options_update(options) - self._precision = options.get(CONF_PRECISION_BATTERY) - class TemperatureFerroampSensor(FloatValFerroampSensor): def __init__( @@ -998,7 +958,6 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ): @@ -1011,16 +970,11 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ) self._attr_state_class = SensorStateClass.MEASUREMENT - def handle_options_update(self, options): - super().handle_options_update(options) - self._precision = options.get(CONF_PRECISION_TEMPERATURE) - class CurrentFerroampSensor(FloatValFerroampSensor): def __init__( @@ -1032,7 +986,6 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ): @@ -1045,16 +998,11 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ) self._attr_state_class = SensorStateClass.MEASUREMENT - def handle_options_update(self, options): - super().handle_options_update(options) - self._precision = options.get(CONF_PRECISION_CURRENT) - class VoltageFerroampSensor(FloatValFerroampSensor): def __init__( @@ -1066,7 +1014,6 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ): @@ -1079,16 +1026,11 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ) self._attr_state_class = SensorStateClass.MEASUREMENT - def handle_options_update(self, options): - super().handle_options_update(options) - self._precision = options.get(CONF_PRECISION_VOLTAGE) - def isfloat(value): try: @@ -1110,7 +1052,6 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ): @@ -1124,7 +1065,6 @@ def __init__( device_id, device_name, interval, - precision, config_id, state_class=SensorStateClass.TOTAL_INCREASING, **kwargs, @@ -1151,7 +1091,7 @@ def update_state_from_events(self, events): if temp is None: return False else: - val = round(temp / count / 3600000000, self._precision) + val = temp / count / 3600000000 if ( self._attr_native_value is None or ( @@ -1163,16 +1103,10 @@ def update_state_from_events(self, events): or val * 1.1 < float(self._attr_native_value) ): self._attr_native_value = val - if self._precision == 0: - self._attr_native_value = int(self._attr_native_value) return True else: return False - def handle_options_update(self, options): - super().handle_options_update(options) - self._precision = options.get(CONF_PRECISION_ENERGY) - class RelayStatusFerroampSensor(KeyedFerroampSensor): def __init__( @@ -1243,7 +1177,6 @@ def __init__( device_id, device_name, interval, - 0, config_id, **kwargs, ) @@ -1319,7 +1252,6 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ): @@ -1337,7 +1269,6 @@ def __init__( ) if self._attr_state_class is None: self._attr_state_class = SensorStateClass.MEASUREMENT - self._precision = precision self._phase = phase self._attr_unique_id = f"{self.device_id}-{self._state_key}-{self._phase}" @@ -1352,7 +1283,7 @@ def update_state_from_events(self, events): if tmp is None: return False else: - val = round(tmp / count, self._precision) + val = tmp / count if ( self._attr_native_value is None or ( @@ -1364,8 +1295,6 @@ def update_state_from_events(self, events): or val * 1.1 < float(self._attr_native_value) ): self._attr_native_value = val - if self._precision == 0: - self._attr_native_value = int(self._attr_native_value) return True else: return False @@ -1384,7 +1313,6 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ): @@ -1403,7 +1331,6 @@ def __init__( ) if self._attr_state_class is None: self._attr_state_class = SensorStateClass.MEASUREMENT - self._precision = precision def get_phases(self, event): phases = event.get(self._state_key, None) @@ -1419,7 +1346,7 @@ def get_phases(self, event): return None def calculate_value(self, l1, l2, l3, count): - return round(l1 / count + l2 / count + l3 / count, self._precision) + return l1 / count + l2 / count + l3 / count def update_state_from_events(self, events): l1 = l2 = l3 = None @@ -1446,8 +1373,6 @@ def update_state_from_events(self, events): or val * 1.1 < float(self._attr_native_value) ): self._attr_native_value = val - if self._precision == 0: - self._attr_native_value = int(self._attr_native_value) self._attr_extra_state_attributes = dict( L1=round(float(l1 / count), 2), L2=round(float(l2 / count), 2), @@ -1463,11 +1388,7 @@ class ThreePhaseMinFerroampSensor(ThreePhaseFerroampSensor): Used in load balancing applications.""" def calculate_value(self, l1, l2, l3, count): - return round(min([l1 / count, l2 / count, l3 / count]), self._precision) - - def handle_options_update(self, options): - super().handle_options_update(options) - self._precision = options.get(CONF_PRECISION_CURRENT) + return min([l1 / count, l2 / count, l3 / count]) class SinglePhaseEnergyFerroampSensor(SinglePhaseFerroampSensor): @@ -1481,7 +1402,6 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ): @@ -1496,7 +1416,6 @@ def __init__( device_id, device_name, interval, - precision, config_id, state_class=SensorStateClass.TOTAL_INCREASING, **kwargs, @@ -1532,7 +1451,7 @@ def update_state_from_events(self, events): if tmp is None: return False else: - val = round(tmp / count, self._precision) + val = tmp / count if ( self._attr_native_value is None or ( @@ -1544,8 +1463,6 @@ def update_state_from_events(self, events): or val * 1.1 < float(self._attr_native_value) ): self._attr_native_value = val - if self._precision == 0: - self._attr_native_value = int(self._attr_native_value) return True else: return False @@ -1561,7 +1478,6 @@ def __init__( device_id, device_name, interval, - precision, config_id, **kwargs, ): @@ -1575,7 +1491,6 @@ def __init__( device_id, device_name, interval, - precision, config_id, state_class=SensorStateClass.TOTAL_INCREASING, **kwargs, @@ -1613,10 +1528,6 @@ def get_phases(self, event): return phases return None - def handle_options_update(self, options): - super().handle_options_update(options) - self._precision = options.get(CONF_PRECISION_ENERGY) - class SinglePhasePowerFerroampSensor(SinglePhaseFerroampSensor): def __init__( @@ -1642,7 +1553,6 @@ def __init__( device_id, device_name, interval, - 0, config_id, ) self._attr_state_class = SensorStateClass.MEASUREMENT @@ -1670,7 +1580,6 @@ def __init__( device_id, device_name, interval, - 0, config_id, ) self._attr_state_class = SensorStateClass.MEASUREMENT @@ -1790,10 +1699,6 @@ def update_state_from_events(self, events): def ehub_sensors( slug, interval, - precision_battery, - precision_current, - precision_energy, - precision_frequency, config_id, ): return [ @@ -1806,7 +1711,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_frequency, config_id, ), ThreePhaseFerroampSensor( @@ -1818,7 +1722,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -1831,7 +1734,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -1844,7 +1746,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -1857,7 +1758,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), ThreePhaseFerroampSensor( @@ -1869,7 +1769,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -1882,7 +1781,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -1895,7 +1793,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -1908,7 +1805,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), ThreePhaseFerroampSensor( @@ -1920,7 +1816,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -1933,7 +1828,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -1946,7 +1840,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -1959,7 +1852,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), ThreePhaseFerroampSensor( @@ -1971,7 +1863,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -1984,7 +1875,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -1997,7 +1887,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -2010,7 +1899,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), ThreePhaseFerroampSensor( @@ -2022,7 +1910,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -2035,7 +1922,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -2048,7 +1934,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -2061,7 +1946,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), ThreePhaseFerroampSensor( @@ -2073,7 +1957,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -2086,7 +1969,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -2099,7 +1981,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -2112,7 +1993,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), ThreePhaseFerroampSensor( @@ -2124,7 +2004,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -2137,7 +2016,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -2150,7 +2028,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), SinglePhaseFerroampSensor( @@ -2163,7 +2040,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - 0, config_id, ), ThreePhasePowerFerroampSensor( @@ -2432,7 +2308,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2444,7 +2319,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2456,7 +2330,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2468,7 +2341,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), ThreePhaseEnergyFerroampSensor( @@ -2479,7 +2351,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2491,7 +2362,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2503,7 +2373,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2515,7 +2384,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), ThreePhaseEnergyFerroampSensor( @@ -2526,7 +2394,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2538,7 +2405,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2550,7 +2416,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2562,7 +2427,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), ThreePhaseEnergyFerroampSensor( @@ -2573,7 +2437,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2585,7 +2448,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2597,7 +2459,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2609,7 +2470,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), ThreePhaseEnergyFerroampSensor( @@ -2620,7 +2480,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2632,7 +2491,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2644,7 +2502,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2656,7 +2513,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), ThreePhaseEnergyFerroampSensor( @@ -2667,7 +2523,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2679,7 +2534,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2691,7 +2545,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), SinglePhaseEnergyFerroampSensor( @@ -2703,7 +2556,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), EnergyFerroampSensor( @@ -2714,7 +2566,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, ), EnergyFerroampSensor( @@ -2725,7 +2576,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, check_presence=True, ), @@ -2737,7 +2587,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_energy, config_id, check_presence=True, ), @@ -2769,7 +2618,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_battery, config_id, check_presence=True, ), @@ -2780,7 +2628,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_battery, config_id, check_presence=True, ), @@ -2839,7 +2686,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_current, config_id, state_class=SensorStateClass.MEASUREMENT, check_presence=True, @@ -2853,7 +2699,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_current, config_id, check_presence=True, ), @@ -2866,7 +2711,6 @@ def ehub_sensors( f"{slug}_{EHUB}", EHUB_NAME, interval, - precision_current, config_id, check_presence=True, ), diff --git a/custom_components/ferroamp/strings.json b/custom_components/ferroamp/strings.json index 707e98a..043f110 100644 --- a/custom_components/ferroamp/strings.json +++ b/custom_components/ferroamp/strings.json @@ -23,13 +23,7 @@ "init": { "title": "Ferroamp options", "data": { - "interval": "Update interval in seconds (defaults to 30 if left blank)", - "precision_battery": "Precision of battery sensors (number of decimals)", - "precision_current": "Precision of current sensors (number of decimals)", - "precision_energy": "Precision of energy sensors (number of decimals)", - "precision_frequency": "Precision of frequency sensors (number of decimals)", - "precision_temperature": "Precision of temperature sensors (number of decimals)", - "precision_voltage": "Precision of voltage sensors (number of decimals)" + "interval": "Update interval in seconds (defaults to 30 if left blank)" } } } diff --git a/custom_components/ferroamp/translations/en.json b/custom_components/ferroamp/translations/en.json index 3de2ebb..453899e 100644 --- a/custom_components/ferroamp/translations/en.json +++ b/custom_components/ferroamp/translations/en.json @@ -23,13 +23,7 @@ "init": { "title": "Ferroamp options", "data": { - "interval": "Update interval in seconds (defaults to 30 if left blank)", - "precision_battery": "Precision of battery sensors (number of decimals)", - "precision_current": "Precision of current sensors (number of decimals)", - "precision_energy": "Precision of energy sensors (number of decimals)", - "precision_frequency": "Precision of frequency sensors (number of decimals)", - "precision_temperature": "Precision of temperature sensors (number of decimals)", - "precision_voltage": "Precision of voltage sensors (number of decimals)" + "interval": "Update interval in seconds (defaults to 30 if left blank)" } } } diff --git a/tests/test_config_flow.py b/tests/test_config_flow.py index 3a37eec..899463c 100644 --- a/tests/test_config_flow.py +++ b/tests/test_config_flow.py @@ -4,15 +4,7 @@ from pytest_homeassistant_custom_component.common import MockConfigEntry from custom_components.ferroamp import CONF_NAME, CONF_PREFIX, config_flow -from custom_components.ferroamp.const import ( - CONF_INTERVAL, - CONF_PRECISION_BATTERY, - CONF_PRECISION_CURRENT, - CONF_PRECISION_ENERGY, - CONF_PRECISION_FREQUENCY, - CONF_PRECISION_TEMPERATURE, - CONF_PRECISION_VOLTAGE, -) +from custom_components.ferroamp.const import CONF_INTERVAL async def test_flow_user_init(hass, mqtt_mock): @@ -96,31 +88,13 @@ async def test_options_flow(hass, mqtt_mock): result["flow_id"], user_input={ CONF_INTERVAL: 20, - CONF_PRECISION_BATTERY: 1, - CONF_PRECISION_CURRENT: 2, - CONF_PRECISION_ENERGY: 3, - CONF_PRECISION_FREQUENCY: 6, - CONF_PRECISION_TEMPERATURE: 4, - CONF_PRECISION_VOLTAGE: 5, }, ) assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY assert result["data"] == { CONF_INTERVAL: 20, - CONF_PRECISION_BATTERY: 1, - CONF_PRECISION_CURRENT: 2, - CONF_PRECISION_ENERGY: 3, - CONF_PRECISION_FREQUENCY: 6, - CONF_PRECISION_TEMPERATURE: 4, - CONF_PRECISION_VOLTAGE: 5, } assert config_entry.data == {CONF_NAME: "Ferroamp", CONF_PREFIX: "extapi"} assert config_entry.options == { CONF_INTERVAL: 20, - CONF_PRECISION_BATTERY: 1, - CONF_PRECISION_CURRENT: 2, - CONF_PRECISION_ENERGY: 3, - CONF_PRECISION_FREQUENCY: 6, - CONF_PRECISION_TEMPERATURE: 4, - CONF_PRECISION_VOLTAGE: 5, } diff --git a/tests/test_sensor.py b/tests/test_sensor.py index a05f798..1eeb2ba 100644 --- a/tests/test_sensor.py +++ b/tests/test_sensor.py @@ -12,17 +12,7 @@ mock_restore_cache, ) -from custom_components.ferroamp.const import ( - CONF_INTERVAL, - CONF_PRECISION_BATTERY, - CONF_PRECISION_CURRENT, - CONF_PRECISION_ENERGY, - CONF_PRECISION_FREQUENCY, - CONF_PRECISION_TEMPERATURE, - CONF_PRECISION_VOLTAGE, - DATA_DEVICES, - DOMAIN, -) +from custom_components.ferroamp.const import CONF_INTERVAL, DATA_DEVICES, DOMAIN from custom_components.ferroamp.sensor import ( BatteryFerroampSensor, EnergyFerroampSensor, @@ -55,12 +45,6 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): data={CONF_NAME: "Ferroamp", CONF_PREFIX: "extapi"}, options={ CONF_INTERVAL: 1, - CONF_PRECISION_BATTERY: 0, - CONF_PRECISION_CURRENT: 0, - CONF_PRECISION_ENERGY: 0, - CONF_PRECISION_FREQUENCY: 0, - CONF_PRECISION_TEMPERATURE: 0, - CONF_PRECISION_VOLTAGE: 0, }, version=1, unique_id="ferroamp", @@ -150,7 +134,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): await hass.async_block_till_done() state = hass.states.get("sensor.ferroamp_external_voltage") - assert state.state == "694" + assert state.state == "693.8" assert state.attributes == { "L1": 228.81, "L2": 233.81, @@ -163,7 +147,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_inverter_rms_current") - assert state.state == "30" + assert state.state == "29.59" assert state.attributes == { "L1": 9.89, "L2": 9.85, @@ -176,7 +160,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_inverter_rms_current_l1") - assert state.state == "10" + assert state.state == "9.89" assert state.attributes == { "device_class": "current", "friendly_name": "EnergyHub Inverter RMS Current L1", @@ -186,7 +170,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_inverter_rms_current_l2") - assert state.state == "10" + assert state.state == "9.85" assert state.attributes == { "device_class": "current", "friendly_name": "EnergyHub Inverter RMS Current L2", @@ -196,7 +180,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_inverter_rms_current_l3") - assert state.state == "10" + assert state.state == "9.85" assert state.attributes == { "device_class": "current", "friendly_name": "EnergyHub Inverter RMS Current L3", @@ -206,7 +190,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_inverter_reactive_current") - assert state.state == "8" + assert state.state == "8.03" assert state.attributes == { "L1": 2.66, "L2": 2.65, @@ -219,7 +203,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_grid_current") - assert state.state == "24" + assert state.state == "23.98" assert state.attributes == { "L1": 7.59, "L2": 8.9, @@ -232,7 +216,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_estimated_grid_frequency") - assert state.state == "50" + assert state.state == "50.07" assert state.attributes == { "friendly_name": "EnergyHub Estimated Grid Frequency", "icon": "mdi:sine-wave", @@ -240,7 +224,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_grid_reactive_current") - assert state.state == "9" + assert state.state == "9.47" assert state.attributes == { "L1": 4.21, "L2": 1.98, @@ -253,7 +237,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_external_active_current") - assert state.state == "-32" + assert state.state == "-32.45" assert state.attributes == { "L1": -9.86, "L2": -12.53, @@ -266,7 +250,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_adaptive_current_equalization") - assert state.state == "0" + assert state.state == "0.0" assert state.attributes == { "L1": 0, "L2": 0, @@ -279,7 +263,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_grid_power") - assert state.state == "-5311" + assert state.state == "-5311.35" assert state.attributes == { "L1": -1595.28, "L2": -2071.57, @@ -292,7 +276,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_grid_power_reactive") - assert state.state == "1545" + assert state.state == "1544.68" assert state.attributes == { "L1": 681.15, "L2": 327.35, @@ -305,7 +289,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_inverter_power_active") - assert state.state == "-6723" + assert state.state == "-6722.63" assert state.attributes == { "L1": -2224.66, "L2": -2263.35, @@ -318,7 +302,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_inverter_power_reactive") - assert state.state == "1313" + assert state.state == "1313.13" assert state.attributes == { "L1": 430.37, "L2": 438.12, @@ -331,7 +315,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_consumption_power") - assert state.state == "1411" + assert state.state == "1411.28" assert state.attributes == { "L1": 629.38, "L2": 191.78, @@ -344,7 +328,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_consumption_power_reactive") - assert state.state == "232" + assert state.state == "231.55" assert state.attributes == { "L1": 250.78, "L2": -110.77, @@ -357,7 +341,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_external_energy_produced") - assert state.state == "662" + assert state.state == "662.42" assert state.attributes == { "L1": 183.92, "L2": 310.57, @@ -370,7 +354,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_external_energy_consumed") - assert state.state == "6323" + assert state.state == "6322.6" assert state.attributes == { "L1": 2021.64, "L2": 1490.26, @@ -383,7 +367,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_inverter_energy_produced") - assert state.state == "2152" + assert state.state == "2152.47" assert state.attributes == { "L1": 713.08, "L2": 725.23, @@ -396,7 +380,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_inverter_energy_consumed") - assert state.state == "1212" + assert state.state == "1212.08" assert state.attributes == { "L1": 399.01, "L2": 409.75, @@ -409,7 +393,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_load_energy_produced") - assert state.state == "5" + assert state.state == "5.01" assert state.attributes == { "L1": 0.0, "L2": 5.01, @@ -422,7 +406,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_load_energy_consumed") - assert state.state == "6740" + assert state.state == "6739.88" assert state.attributes == { "L1": 2195.03, "L2": 1530.34, @@ -435,7 +419,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_total_solar_energy") - assert state.state == "1228" + assert state.state == "1228.35821955083" assert state.attributes == { "device_class": "energy", "friendly_name": "EnergyHub Total Solar Energy", @@ -445,7 +429,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_battery_energy_produced") - assert state.state == "1366" + assert state.state == "1366.37360237528" assert state.attributes == { "device_class": "energy", "friendly_name": "EnergyHub Battery Energy Produced", @@ -455,7 +439,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_battery_energy_consumed") - assert state.state == "1242" + assert state.state == "1242.4428329425" assert state.attributes == { "device_class": "energy", "friendly_name": "EnergyHub Battery Energy Consumed", @@ -485,17 +469,17 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_system_state_of_charge") - assert state.state == "80" + assert state.state == "79.9" assert state.attributes == { "device_class": "battery", "friendly_name": "EnergyHub System State of Charge", - "icon": "mdi:battery-80", + "icon": "mdi:battery-70", "state_class": "measurement", "unit_of_measurement": "%", } state = hass.states.get("sensor.ferroamp_system_state_of_health") - assert state.state == "99" + assert state.state == "98.9" assert state.attributes == { "friendly_name": "EnergyHub System State of Health", "icon": "mdi:battery-90", @@ -512,7 +496,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_solar_power") - assert state.state == "10108" + assert state.state == "10107.51" assert state.attributes == { "device_class": "power", "friendly_name": "EnergyHub Solar Power", @@ -522,7 +506,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_battery_power") - assert state.state == "-3219" + assert state.state == "-3218.99" assert state.attributes == { "device_class": "power", "friendly_name": "EnergyHub Battery Power", @@ -542,7 +526,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): state = hass.states.get( "sensor.ferroamp_available_active_current_for_load_balancing" ) - assert state.state == "29" + assert state.state == "29.05" assert state.attributes == { "L1": 35.89, "L2": 29.05, @@ -555,7 +539,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_available_rms_current_for_load_balancing") - assert state.state == "26" + assert state.state == "26.31" assert state.attributes == { "L1": 31.20, "L2": 26.31, @@ -570,7 +554,7 @@ async def test_setting_ehub_sensor_values_via_mqtt_message(hass, mqtt_mock): state = hass.states.get( "sensor.ferroamp_available_three_phase_active_current_for_load_balancing" ) - assert state.state == "29" + assert state.state == "29.05" assert state.attributes == { "device_class": "current", "friendly_name": "EnergyHub Available Three Phase Active Current For Load Balancing", @@ -588,12 +572,6 @@ async def test_only_adding_load_balancing_sensors_if_present_in_message( data={CONF_NAME: "Ferroamp", CONF_PREFIX: "extapi"}, options={ CONF_INTERVAL: 1, - CONF_PRECISION_BATTERY: 0, - CONF_PRECISION_CURRENT: 0, - CONF_PRECISION_ENERGY: 0, - CONF_PRECISION_FREQUENCY: 0, - CONF_PRECISION_TEMPERATURE: 0, - CONF_PRECISION_VOLTAGE: 0, }, version=1, unique_id="ferroamp", @@ -701,12 +679,6 @@ async def test_only_adding_battery_specific_sensors_if_present_in_mqtt_message( data={CONF_NAME: "Ferroamp", CONF_PREFIX: "extapi"}, options={ CONF_INTERVAL: 1, - CONF_PRECISION_BATTERY: 0, - CONF_PRECISION_CURRENT: 0, - CONF_PRECISION_ENERGY: 0, - CONF_PRECISION_FREQUENCY: 0, - CONF_PRECISION_TEMPERATURE: 0, - CONF_PRECISION_VOLTAGE: 0, }, version=1, unique_id="ferroamp", @@ -819,7 +791,7 @@ async def test_setting_esm_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_esm_1_rated_power") - assert state.state == "7000" + assert state.state == "7000.0" assert state.attributes == { "device_class": "power", "friendly_name": "ESM 1 Rated Power", @@ -913,7 +885,7 @@ async def test_trim_part_no_from_esm_id(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_esm_12345678_rated_power") - assert state.state == "7000" + assert state.state == "7000.0" assert state.attributes == { "device_class": "power", "friendly_name": "ESM 12345678 Rated Power", @@ -1065,7 +1037,7 @@ async def test_setting_eso_sensor_values_via_mqtt_message(hass, mqtt_mock): await hass.async_block_till_done() state = hass.states.get("sensor.ferroamp_eso_1_battery_voltage") - assert state.state == "623" + assert state.state == "622.601" assert state.attributes == { "device_class": "voltage", "friendly_name": "ESO 1 Battery Voltage", @@ -1075,7 +1047,7 @@ async def test_setting_eso_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_eso_1_battery_current") - assert state.state == "2" + assert state.state == "1.57" assert state.attributes == { "device_class": "current", "friendly_name": "ESO 1 Battery Current", @@ -1095,7 +1067,7 @@ async def test_setting_eso_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_eso_1_total_energy_produced") - assert state.state == "684.8" + assert state.state == "684.751700573056" assert state.attributes == { "device_class": "energy", "friendly_name": "ESO 1 Total Energy Produced", @@ -1105,7 +1077,7 @@ async def test_setting_eso_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_eso_1_total_energy_consumed") - assert state.state == "614.9" + assert state.state == "614.870966532778" assert state.attributes == { "device_class": "energy", "friendly_name": "ESO 1 Total Energy Consumed", @@ -1115,7 +1087,7 @@ async def test_setting_eso_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_eso_1_state_of_charge") - assert state.state == "48.1" + assert state.state == "48.100004" assert state.attributes == { "device_class": "battery", "friendly_name": "ESO 1 State of Charge", @@ -1140,7 +1112,7 @@ async def test_setting_eso_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_eso_1_pcb_temperature") - assert state.state == "20" + assert state.state == "20.379" assert state.attributes == { "device_class": "temperature", "friendly_name": "ESO 1 PCB Temperature", @@ -1250,7 +1222,7 @@ async def test_setting_sso_sensor_values_via_mqtt_message(hass, mqtt_mock): await hass.async_block_till_done() state = hass.states.get("sensor.ferroamp_sso_12345678_pv_string_voltage") - assert state.state == "653" + assert state.state == "653.012" assert state.attributes == { "device_class": "voltage", "friendly_name": "SSO 12345678 PV String Voltage", @@ -1260,7 +1232,7 @@ async def test_setting_sso_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_sso_12345678_pv_string_current") - assert state.state == "5" + assert state.state == "4.826" assert state.attributes == { "device_class": "current", "friendly_name": "SSO 12345678 PV String Current", @@ -1280,7 +1252,7 @@ async def test_setting_sso_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_sso_12345678_total_energy") - assert state.state == "234.3" + assert state.state == "234.310112298056" assert state.attributes == { "device_class": "energy", "friendly_name": "SSO 12345678 Total Energy", @@ -1305,7 +1277,7 @@ async def test_setting_sso_sensor_values_via_mqtt_message(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_sso_12345678_pcb_temperature") - assert state.state == "6" + assert state.state == "6.482" assert state.attributes == { "device_class": "temperature", "friendly_name": "SSO 12345678 PCB Temperature", @@ -1338,7 +1310,7 @@ async def test_trim_part_no_from_sso_id(hass, mqtt_mock): await hass.async_block_till_done() state = hass.states.get("sensor.ferroamp_sso_12345678_pv_string_voltage") - assert state.state == "653" + assert state.state == "653.012" assert state.attributes == { "device_class": "voltage", "friendly_name": "SSO 12345678 PV String Voltage", @@ -1348,7 +1320,7 @@ async def test_trim_part_no_from_sso_id(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_sso_12345678_pv_string_current") - assert state.state == "5" + assert state.state == "4.826" assert state.attributes == { "device_class": "current", "friendly_name": "SSO 12345678 PV String Current", @@ -1368,7 +1340,7 @@ async def test_trim_part_no_from_sso_id(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_sso_12345678_total_energy") - assert state.state == "234.3" + assert state.state == "234.310112298056" assert state.attributes == { "device_class": "energy", "friendly_name": "SSO 12345678 Total Energy", @@ -1393,7 +1365,7 @@ async def test_trim_part_no_from_sso_id(hass, mqtt_mock): } state = hass.states.get("sensor.ferroamp_sso_12345678_pcb_temperature") - assert state.state == "6" + assert state.state == "6.482" assert state.attributes == { "device_class": "temperature", "friendly_name": "SSO 12345678 PCB Temperature", @@ -1443,7 +1415,7 @@ async def test_migrate_old_sso_entities(hass, mqtt_mock): await hass.async_block_till_done() state = hass.states.get(entity.entity_id) - assert state.state == "653" + assert state.state == "653.012" assert state.attributes == { "device_class": "voltage", "friendly_name": "SSO 12345678 PV String Voltage", @@ -1810,11 +1782,6 @@ async def test_update_options(hass, mqtt_mock): result["flow_id"], user_input={ CONF_INTERVAL: 20, - CONF_PRECISION_BATTERY: 1, - CONF_PRECISION_CURRENT: 2, - CONF_PRECISION_ENERGY: 0, - CONF_PRECISION_TEMPERATURE: 3, - CONF_PRECISION_VOLTAGE: 4, }, ) await hass.async_block_till_done() @@ -1827,7 +1794,6 @@ async def test_update_options(hass, mqtt_mock): ] assert isinstance(sensor, BatteryFerroampSensor) assert sensor._interval == 20 - assert sensor._precision == 1 entity = er.async_get("sensor.ferroamp_total_solar_energy") assert entity is not None @@ -1836,7 +1802,6 @@ async def test_update_options(hass, mqtt_mock): ] assert isinstance(sensor, EnergyFerroampSensor) assert sensor._interval == 20 - assert sensor._precision == 0 entity = er.async_get("sensor.ferroamp_eso_1_pcb_temperature") assert entity is not None @@ -1845,7 +1810,6 @@ async def test_update_options(hass, mqtt_mock): ] assert isinstance(sensor, TemperatureFerroampSensor) assert sensor._interval == 20 - assert sensor._precision == 3 entity = er.async_get("sensor.ferroamp_sso_1_pv_string_voltage") assert entity is not None @@ -1854,7 +1818,6 @@ async def test_update_options(hass, mqtt_mock): ] assert isinstance(sensor, VoltageFerroampSensor) assert sensor._interval == 20 - assert sensor._precision == 4 async_fire_mqtt_message(hass, "extapi/data/ehub", msg) async_fire_mqtt_message(hass, "extapi/data/esm", msg) @@ -1867,7 +1830,7 @@ async def test_update_options(hass, mqtt_mock): sensor = hass.data[DOMAIN][DATA_DEVICES][config_entry.unique_id]["ferroamp_ehub"][ entity.unique_id ] - assert sensor.state == 1228.4 + assert sensor.state == 1228.3582195508334 async def test_base_class_update_state_from_events(): @@ -2087,7 +2050,7 @@ async def test_always_increasing_unknown_value(hass, mqtt_mock): sensor = hass.data[DOMAIN][DATA_DEVICES][config_entry.unique_id]["ferroamp_ehub"][ entity.unique_id ] - assert sensor.state == 1228.4 + assert sensor.state == 1228.3582195508334 async def test_always_increasing_counter_reset(hass, mqtt_mock): @@ -2216,7 +2179,7 @@ async def test_3phase_always_increasing_unknown_value(hass, mqtt_mock): sensor = hass.data[DOMAIN][DATA_DEVICES][config_entry.unique_id]["ferroamp_ehub"][ entity.unique_id ] - assert sensor.state == 662.4 + assert sensor.state == 662.4200000000001 async def test_3phase_always_increasing_counter_reset(hass, mqtt_mock): @@ -2252,12 +2215,6 @@ async def test_average_calculation(hass, mqtt_mock): data={CONF_NAME: "Ferroamp", CONF_PREFIX: "extapi"}, options={ CONF_INTERVAL: 1, - CONF_PRECISION_BATTERY: 0, - CONF_PRECISION_CURRENT: 0, - CONF_PRECISION_ENERGY: 0, - CONF_PRECISION_FREQUENCY: 0, - CONF_PRECISION_TEMPERATURE: 0, - CONF_PRECISION_VOLTAGE: 0, }, version=1, unique_id="ferroamp", @@ -2289,7 +2246,7 @@ def msg(l1, l2, l3) -> str: await hass.async_block_till_done() state = hass.states.get("sensor.ferroamp_external_energy_produced") - assert state.state == "662" + assert state.state == "662.42" assert state.attributes == { "L1": 183.92, "L2": 310.57,