From 75abf87611d8ad5627126a3fe09fdddc8402237c Mon Sep 17 00:00:00 2001 From: Matthias Alphart Date: Mon, 11 Jul 2022 18:16:29 +0200 Subject: [PATCH] Migrate Fronius to new entity naming style (#74974) --- homeassistant/components/fronius/sensor.py | 32 +- tests/components/fronius/test_sensor.py | 541 +++++++++------------ 2 files changed, 234 insertions(+), 339 deletions(-) diff --git a/homeassistant/components/fronius/sensor.py b/homeassistant/components/fronius/sensor.py index c3b219c4b22..35881225b68 100644 --- a/homeassistant/components/fronius/sensor.py +++ b/homeassistant/components/fronius/sensor.py @@ -4,7 +4,6 @@ from __future__ import annotations from typing import TYPE_CHECKING, Any, Final from homeassistant.components.sensor import ( - DOMAIN as SENSOR_DOMAIN, SensorDeviceClass, SensorEntity, SensorEntityDescription, @@ -109,14 +108,14 @@ INVERTER_ENTITY_DESCRIPTIONS: list[SensorEntityDescription] = [ ), SensorEntityDescription( key="current_ac", - name="AC current", + name="Current AC", native_unit_of_measurement=ELECTRIC_CURRENT_AMPERE, device_class=SensorDeviceClass.CURRENT, state_class=SensorStateClass.MEASUREMENT, ), SensorEntityDescription( key="current_dc", - name="DC current", + name="Current DC", native_unit_of_measurement=ELECTRIC_CURRENT_AMPERE, device_class=SensorDeviceClass.CURRENT, state_class=SensorStateClass.MEASUREMENT, @@ -124,7 +123,7 @@ INVERTER_ENTITY_DESCRIPTIONS: list[SensorEntityDescription] = [ ), SensorEntityDescription( key="current_dc_2", - name="DC current 2", + name="Current DC 2", native_unit_of_measurement=ELECTRIC_CURRENT_AMPERE, device_class=SensorDeviceClass.CURRENT, state_class=SensorStateClass.MEASUREMENT, @@ -132,14 +131,14 @@ INVERTER_ENTITY_DESCRIPTIONS: list[SensorEntityDescription] = [ ), SensorEntityDescription( key="power_ac", - name="AC power", + name="Power AC", native_unit_of_measurement=POWER_WATT, device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, ), SensorEntityDescription( key="voltage_ac", - name="AC voltage", + name="Voltage AC", native_unit_of_measurement=ELECTRIC_POTENTIAL_VOLT, device_class=SensorDeviceClass.VOLTAGE, state_class=SensorStateClass.MEASUREMENT, @@ -147,7 +146,7 @@ INVERTER_ENTITY_DESCRIPTIONS: list[SensorEntityDescription] = [ ), SensorEntityDescription( key="voltage_dc", - name="DC voltage", + name="Voltage DC", native_unit_of_measurement=ELECTRIC_POTENTIAL_VOLT, device_class=SensorDeviceClass.VOLTAGE, state_class=SensorStateClass.MEASUREMENT, @@ -155,7 +154,7 @@ INVERTER_ENTITY_DESCRIPTIONS: list[SensorEntityDescription] = [ ), SensorEntityDescription( key="voltage_dc_2", - name="DC voltage 2", + name="Voltage DC 2", native_unit_of_measurement=ELECTRIC_POTENTIAL_VOLT, device_class=SensorDeviceClass.VOLTAGE, state_class=SensorStateClass.MEASUREMENT, @@ -492,7 +491,7 @@ OHMPILOT_ENTITY_DESCRIPTIONS: list[SensorEntityDescription] = [ ), SensorEntityDescription( key="temperature_channel_1", - name="Temperature Channel 1", + name="Temperature channel 1", native_unit_of_measurement=TEMP_CELSIUS, device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, @@ -541,7 +540,7 @@ POWER_FLOW_ENTITY_DESCRIPTIONS: list[SensorEntityDescription] = [ ), SensorEntityDescription( key="meter_mode", - name="Mode", + name="Meter mode", entity_category=EntityCategory.DIAGNOSTIC, ), SensorEntityDescription( @@ -656,7 +655,8 @@ class _FroniusSensorEntity(CoordinatorEntity["FroniusCoordinatorBase"], SensorEn """Defines a Fronius coordinator entity.""" entity_descriptions: list[SensorEntityDescription] - _entity_id_prefix: str + + _attr_has_entity_name = True def __init__( self, @@ -669,10 +669,6 @@ class _FroniusSensorEntity(CoordinatorEntity["FroniusCoordinatorBase"], SensorEn self.entity_description = next( desc for desc in self.entity_descriptions if desc.key == key ) - # default entity_id added 2021.12 - # used for migration from non-unique_id entities of previous integration implementation - # when removed after migration period `_entity_id_prefix` will also no longer be needed - self.entity_id = f"{SENSOR_DOMAIN}.{key}_{DOMAIN}_{self._entity_id_prefix}_{coordinator.solar_net.host}" self.solar_net_id = solar_net_id self._attr_native_value = self._get_entity_value() @@ -709,7 +705,6 @@ class InverterSensor(_FroniusSensorEntity): solar_net_id: str, ) -> None: """Set up an individual Fronius inverter sensor.""" - self._entity_id_prefix = f"inverter_{solar_net_id}" super().__init__(coordinator, key, solar_net_id) # device_info created in __init__ from a `GetInverterInfo` request self._attr_device_info = coordinator.inverter_info.device_info @@ -720,7 +715,6 @@ class LoggerSensor(_FroniusSensorEntity): """Defines a Fronius logger device sensor entity.""" entity_descriptions = LOGGER_ENTITY_DESCRIPTIONS - _entity_id_prefix = "logger_info_0" def __init__( self, @@ -749,7 +743,6 @@ class MeterSensor(_FroniusSensorEntity): solar_net_id: str, ) -> None: """Set up an individual Fronius meter sensor.""" - self._entity_id_prefix = f"meter_{solar_net_id}" super().__init__(coordinator, key, solar_net_id) meter_data = self._device_data() # S0 meters connected directly to inverters respond "n.a." as serial number @@ -782,7 +775,6 @@ class OhmpilotSensor(_FroniusSensorEntity): solar_net_id: str, ) -> None: """Set up an individual Fronius meter sensor.""" - self._entity_id_prefix = f"ohmpilot_{solar_net_id}" super().__init__(coordinator, key, solar_net_id) device_data = self._device_data() @@ -801,7 +793,6 @@ class PowerFlowSensor(_FroniusSensorEntity): """Defines a Fronius power flow sensor entity.""" entity_descriptions = POWER_FLOW_ENTITY_DESCRIPTIONS - _entity_id_prefix = "power_flow_0" def __init__( self, @@ -830,7 +821,6 @@ class StorageSensor(_FroniusSensorEntity): solar_net_id: str, ) -> None: """Set up an individual Fronius storage sensor.""" - self._entity_id_prefix = f"storage_{solar_net_id}" super().__init__(coordinator, key, solar_net_id) storage_data = self._device_data() diff --git a/tests/components/fronius/test_sensor.py b/tests/components/fronius/test_sensor.py index 0f3e8f28a56..3ed1e37505c 100644 --- a/tests/components/fronius/test_sensor.py +++ b/tests/components/fronius/test_sensor.py @@ -30,11 +30,11 @@ async def test_symo_inverter(hass, aioclient_mock): hass, config_entry.entry_id, FroniusInverterUpdateCoordinator.default_interval ) assert len(hass.states.async_all(domain_filter=SENSOR_DOMAIN)) == 52 - assert_state("sensor.current_dc_fronius_inverter_1_http_fronius", 0) - assert_state("sensor.energy_day_fronius_inverter_1_http_fronius", 10828) - assert_state("sensor.energy_total_fronius_inverter_1_http_fronius", 44186900) - assert_state("sensor.energy_year_fronius_inverter_1_http_fronius", 25507686) - assert_state("sensor.voltage_dc_fronius_inverter_1_http_fronius", 16) + assert_state("sensor.symo_20_current_dc", 0) + assert_state("sensor.symo_20_energy_day", 10828) + assert_state("sensor.symo_20_energy_total", 44186900) + assert_state("sensor.symo_20_energy_year", 25507686) + assert_state("sensor.symo_20_voltage_dc", 16) # Second test at daytime when inverter is producing mock_responses(aioclient_mock, night=False) @@ -48,15 +48,15 @@ async def test_symo_inverter(hass, aioclient_mock): ) assert len(hass.states.async_all(domain_filter=SENSOR_DOMAIN)) == 58 # 4 additional AC entities - assert_state("sensor.current_dc_fronius_inverter_1_http_fronius", 2.19) - assert_state("sensor.energy_day_fronius_inverter_1_http_fronius", 1113) - assert_state("sensor.energy_total_fronius_inverter_1_http_fronius", 44188000) - assert_state("sensor.energy_year_fronius_inverter_1_http_fronius", 25508798) - assert_state("sensor.voltage_dc_fronius_inverter_1_http_fronius", 518) - assert_state("sensor.current_ac_fronius_inverter_1_http_fronius", 5.19) - assert_state("sensor.frequency_ac_fronius_inverter_1_http_fronius", 49.94) - assert_state("sensor.power_ac_fronius_inverter_1_http_fronius", 1190) - assert_state("sensor.voltage_ac_fronius_inverter_1_http_fronius", 227.90) + assert_state("sensor.symo_20_current_dc", 2.19) + assert_state("sensor.symo_20_energy_day", 1113) + assert_state("sensor.symo_20_energy_total", 44188000) + assert_state("sensor.symo_20_energy_year", 25508798) + assert_state("sensor.symo_20_voltage_dc", 518) + assert_state("sensor.symo_20_current_ac", 5.19) + assert_state("sensor.symo_20_frequency_ac", 49.94) + assert_state("sensor.symo_20_power_ac", 1190) + assert_state("sensor.symo_20_voltage_ac", 227.90) # Third test at nighttime - additional AC entities aren't changed mock_responses(aioclient_mock, night=True) @@ -64,10 +64,10 @@ async def test_symo_inverter(hass, aioclient_mock): hass, dt.utcnow() + FroniusInverterUpdateCoordinator.default_interval ) await hass.async_block_till_done() - assert_state("sensor.current_ac_fronius_inverter_1_http_fronius", 5.19) - assert_state("sensor.frequency_ac_fronius_inverter_1_http_fronius", 49.94) - assert_state("sensor.power_ac_fronius_inverter_1_http_fronius", 1190) - assert_state("sensor.voltage_ac_fronius_inverter_1_http_fronius", 227.90) + assert_state("sensor.symo_20_current_ac", 5.19) + assert_state("sensor.symo_20_frequency_ac", 49.94) + assert_state("sensor.symo_20_power_ac", 1190) + assert_state("sensor.symo_20_voltage_ac", 227.90) async def test_symo_logger(hass, aioclient_mock): @@ -82,18 +82,9 @@ async def test_symo_logger(hass, aioclient_mock): await setup_fronius_integration(hass) assert len(hass.states.async_all(domain_filter=SENSOR_DOMAIN)) == 24 # states are rounded to 4 decimals - assert_state( - "sensor.cash_factor_fronius_logger_info_0_http_fronius", - 0.078, - ) - assert_state( - "sensor.co2_factor_fronius_logger_info_0_http_fronius", - 0.53, - ) - assert_state( - "sensor.delivery_factor_fronius_logger_info_0_http_fronius", - 0.15, - ) + assert_state("sensor.solarnet_grid_export_tariff", 0.078) + assert_state("sensor.solarnet_co2_factor", 0.53) + assert_state("sensor.solarnet_grid_import_tariff", 0.15) async def test_symo_meter(hass, aioclient_mock): @@ -113,48 +104,38 @@ async def test_symo_meter(hass, aioclient_mock): ) assert len(hass.states.async_all(domain_filter=SENSOR_DOMAIN)) == 58 # states are rounded to 4 decimals - assert_state("sensor.current_ac_phase_1_fronius_meter_0_http_fronius", 7.755) - assert_state("sensor.current_ac_phase_2_fronius_meter_0_http_fronius", 6.68) - assert_state("sensor.current_ac_phase_3_fronius_meter_0_http_fronius", 10.102) - assert_state( - "sensor.energy_reactive_ac_consumed_fronius_meter_0_http_fronius", 59960790 - ) - assert_state( - "sensor.energy_reactive_ac_produced_fronius_meter_0_http_fronius", 723160 - ) - assert_state("sensor.energy_real_ac_minus_fronius_meter_0_http_fronius", 35623065) - assert_state("sensor.energy_real_ac_plus_fronius_meter_0_http_fronius", 15303334) - assert_state("sensor.energy_real_consumed_fronius_meter_0_http_fronius", 15303334) - assert_state("sensor.energy_real_produced_fronius_meter_0_http_fronius", 35623065) - assert_state("sensor.frequency_phase_average_fronius_meter_0_http_fronius", 50) - assert_state("sensor.power_apparent_phase_1_fronius_meter_0_http_fronius", 1772.793) - assert_state("sensor.power_apparent_phase_2_fronius_meter_0_http_fronius", 1527.048) - assert_state("sensor.power_apparent_phase_3_fronius_meter_0_http_fronius", 2333.562) - assert_state("sensor.power_apparent_fronius_meter_0_http_fronius", 5592.57) - assert_state("sensor.power_factor_phase_1_fronius_meter_0_http_fronius", -0.99) - assert_state("sensor.power_factor_phase_2_fronius_meter_0_http_fronius", -0.99) - assert_state("sensor.power_factor_phase_3_fronius_meter_0_http_fronius", 0.99) - assert_state("sensor.power_factor_fronius_meter_0_http_fronius", 1) - assert_state("sensor.power_reactive_phase_1_fronius_meter_0_http_fronius", 51.48) - assert_state("sensor.power_reactive_phase_2_fronius_meter_0_http_fronius", 115.63) - assert_state("sensor.power_reactive_phase_3_fronius_meter_0_http_fronius", -164.24) - assert_state("sensor.power_reactive_fronius_meter_0_http_fronius", 2.87) - assert_state("sensor.power_real_phase_1_fronius_meter_0_http_fronius", 1765.55) - assert_state("sensor.power_real_phase_2_fronius_meter_0_http_fronius", 1515.8) - assert_state("sensor.power_real_phase_3_fronius_meter_0_http_fronius", 2311.22) - assert_state("sensor.power_real_fronius_meter_0_http_fronius", 5592.57) - assert_state("sensor.voltage_ac_phase_1_fronius_meter_0_http_fronius", 228.6) - assert_state("sensor.voltage_ac_phase_2_fronius_meter_0_http_fronius", 228.6) - assert_state("sensor.voltage_ac_phase_3_fronius_meter_0_http_fronius", 231) - assert_state( - "sensor.voltage_ac_phase_to_phase_12_fronius_meter_0_http_fronius", 395.9 - ) - assert_state( - "sensor.voltage_ac_phase_to_phase_23_fronius_meter_0_http_fronius", 398 - ) - assert_state( - "sensor.voltage_ac_phase_to_phase_31_fronius_meter_0_http_fronius", 398 - ) + assert_state("sensor.smart_meter_63a_current_ac_phase_1", 7.755) + assert_state("sensor.smart_meter_63a_current_ac_phase_2", 6.68) + assert_state("sensor.smart_meter_63a_current_ac_phase_3", 10.102) + assert_state("sensor.smart_meter_63a_energy_reactive_ac_consumed", 59960790) + assert_state("sensor.smart_meter_63a_energy_reactive_ac_produced", 723160) + assert_state("sensor.smart_meter_63a_energy_real_ac_minus", 35623065) + assert_state("sensor.smart_meter_63a_energy_real_ac_plus", 15303334) + assert_state("sensor.smart_meter_63a_energy_real_consumed", 15303334) + assert_state("sensor.smart_meter_63a_energy_real_produced", 35623065) + assert_state("sensor.smart_meter_63a_frequency_phase_average", 50) + assert_state("sensor.smart_meter_63a_power_apparent_phase_1", 1772.793) + assert_state("sensor.smart_meter_63a_power_apparent_phase_2", 1527.048) + assert_state("sensor.smart_meter_63a_power_apparent_phase_3", 2333.562) + assert_state("sensor.smart_meter_63a_power_apparent", 5592.57) + assert_state("sensor.smart_meter_63a_power_factor_phase_1", -0.99) + assert_state("sensor.smart_meter_63a_power_factor_phase_2", -0.99) + assert_state("sensor.smart_meter_63a_power_factor_phase_3", 0.99) + assert_state("sensor.smart_meter_63a_power_factor", 1) + assert_state("sensor.smart_meter_63a_power_reactive_phase_1", 51.48) + assert_state("sensor.smart_meter_63a_power_reactive_phase_2", 115.63) + assert_state("sensor.smart_meter_63a_power_reactive_phase_3", -164.24) + assert_state("sensor.smart_meter_63a_power_reactive", 2.87) + assert_state("sensor.smart_meter_63a_power_real_phase_1", 1765.55) + assert_state("sensor.smart_meter_63a_power_real_phase_2", 1515.8) + assert_state("sensor.smart_meter_63a_power_real_phase_3", 2311.22) + assert_state("sensor.smart_meter_63a_power_real", 5592.57) + assert_state("sensor.smart_meter_63a_voltage_ac_phase_1", 228.6) + assert_state("sensor.smart_meter_63a_voltage_ac_phase_2", 228.6) + assert_state("sensor.smart_meter_63a_voltage_ac_phase_3", 231) + assert_state("sensor.smart_meter_63a_voltage_ac_phase_1_2", 395.9) + assert_state("sensor.smart_meter_63a_voltage_ac_phase_2_3", 398) + assert_state("sensor.smart_meter_63a_voltage_ac_phase_3_1", 398) async def test_symo_power_flow(hass, aioclient_mock): @@ -175,30 +156,12 @@ async def test_symo_power_flow(hass, aioclient_mock): ) assert len(hass.states.async_all(domain_filter=SENSOR_DOMAIN)) == 52 # states are rounded to 4 decimals - assert_state( - "sensor.energy_day_fronius_power_flow_0_http_fronius", - 10828, - ) - assert_state( - "sensor.energy_total_fronius_power_flow_0_http_fronius", - 44186900, - ) - assert_state( - "sensor.energy_year_fronius_power_flow_0_http_fronius", - 25507686, - ) - assert_state( - "sensor.power_grid_fronius_power_flow_0_http_fronius", - 975.31, - ) - assert_state( - "sensor.power_load_fronius_power_flow_0_http_fronius", - -975.31, - ) - assert_state( - "sensor.relative_autonomy_fronius_power_flow_0_http_fronius", - 0, - ) + assert_state("sensor.solarnet_energy_day", 10828) + assert_state("sensor.solarnet_energy_total", 44186900) + assert_state("sensor.solarnet_energy_year", 25507686) + assert_state("sensor.solarnet_power_grid", 975.31) + assert_state("sensor.solarnet_power_load", -975.31) + assert_state("sensor.solarnet_relative_autonomy", 0) # Second test at daytime when inverter is producing mock_responses(aioclient_mock, night=False) @@ -208,38 +171,14 @@ async def test_symo_power_flow(hass, aioclient_mock): await hass.async_block_till_done() # 54 because power_flow `rel_SelfConsumption` and `P_PV` is not `null` anymore assert len(hass.states.async_all(domain_filter=SENSOR_DOMAIN)) == 54 - assert_state( - "sensor.energy_day_fronius_power_flow_0_http_fronius", - 1101.7001, - ) - assert_state( - "sensor.energy_total_fronius_power_flow_0_http_fronius", - 44188000, - ) - assert_state( - "sensor.energy_year_fronius_power_flow_0_http_fronius", - 25508788, - ) - assert_state( - "sensor.power_grid_fronius_power_flow_0_http_fronius", - 1703.74, - ) - assert_state( - "sensor.power_load_fronius_power_flow_0_http_fronius", - -2814.74, - ) - assert_state( - "sensor.power_photovoltaics_fronius_power_flow_0_http_fronius", - 1111, - ) - assert_state( - "sensor.relative_autonomy_fronius_power_flow_0_http_fronius", - 39.4708, - ) - assert_state( - "sensor.relative_self_consumption_fronius_power_flow_0_http_fronius", - 100, - ) + assert_state("sensor.solarnet_energy_day", 1101.7001) + assert_state("sensor.solarnet_energy_total", 44188000) + assert_state("sensor.solarnet_energy_year", 25508788) + assert_state("sensor.solarnet_power_grid", 1703.74) + assert_state("sensor.solarnet_power_load", -2814.74) + assert_state("sensor.solarnet_power_photovoltaics", 1111) + assert_state("sensor.solarnet_relative_autonomy", 39.4708) + assert_state("sensor.solarnet_relative_self_consumption", 100) async def test_gen24(hass, aioclient_mock): @@ -259,74 +198,60 @@ async def test_gen24(hass, aioclient_mock): ) assert len(hass.states.async_all(domain_filter=SENSOR_DOMAIN)) == 52 # inverter 1 - assert_state("sensor.current_ac_fronius_inverter_1_http_fronius", 0.1589) - assert_state("sensor.current_dc_2_fronius_inverter_1_http_fronius", 0.0754) - assert_state("sensor.status_code_fronius_inverter_1_http_fronius", 7) - assert_state("sensor.current_dc_fronius_inverter_1_http_fronius", 0.0783) - assert_state("sensor.voltage_dc_2_fronius_inverter_1_http_fronius", 403.4312) - assert_state("sensor.power_ac_fronius_inverter_1_http_fronius", 37.3204) - assert_state("sensor.error_code_fronius_inverter_1_http_fronius", 0) - assert_state("sensor.voltage_dc_fronius_inverter_1_http_fronius", 411.3811) - assert_state("sensor.energy_total_fronius_inverter_1_http_fronius", 1530193.42) - assert_state("sensor.inverter_state_fronius_inverter_1_http_fronius", "Running") - assert_state("sensor.voltage_ac_fronius_inverter_1_http_fronius", 234.9168) - assert_state("sensor.frequency_ac_fronius_inverter_1_http_fronius", 49.9917) + assert_state("sensor.inverter_name_current_ac", 0.1589) + assert_state("sensor.inverter_name_current_dc_2", 0.0754) + assert_state("sensor.inverter_name_status_code", 7) + assert_state("sensor.inverter_name_current_dc", 0.0783) + assert_state("sensor.inverter_name_voltage_dc_2", 403.4312) + assert_state("sensor.inverter_name_power_ac", 37.3204) + assert_state("sensor.inverter_name_error_code", 0) + assert_state("sensor.inverter_name_voltage_dc", 411.3811) + assert_state("sensor.inverter_name_energy_total", 1530193.42) + assert_state("sensor.inverter_name_inverter_state", "Running") + assert_state("sensor.inverter_name_voltage_ac", 234.9168) + assert_state("sensor.inverter_name_frequency_ac", 49.9917) # meter - assert_state("sensor.energy_real_produced_fronius_meter_0_http_fronius", 3863340.0) - assert_state("sensor.energy_real_consumed_fronius_meter_0_http_fronius", 2013105.0) - assert_state("sensor.power_real_fronius_meter_0_http_fronius", 653.1) - assert_state("sensor.frequency_phase_average_fronius_meter_0_http_fronius", 49.9) - assert_state("sensor.meter_location_fronius_meter_0_http_fronius", 0.0) - assert_state("sensor.power_factor_fronius_meter_0_http_fronius", 0.828) - assert_state( - "sensor.energy_reactive_ac_consumed_fronius_meter_0_http_fronius", 88221.0 - ) - assert_state("sensor.energy_real_ac_minus_fronius_meter_0_http_fronius", 3863340.0) - assert_state("sensor.current_ac_phase_2_fronius_meter_0_http_fronius", 2.33) - assert_state("sensor.voltage_ac_phase_1_fronius_meter_0_http_fronius", 235.9) - assert_state( - "sensor.voltage_ac_phase_to_phase_12_fronius_meter_0_http_fronius", 408.7 - ) - assert_state("sensor.power_real_phase_2_fronius_meter_0_http_fronius", 294.9) - assert_state("sensor.energy_real_ac_plus_fronius_meter_0_http_fronius", 2013105.0) - assert_state("sensor.voltage_ac_phase_2_fronius_meter_0_http_fronius", 236.1) - assert_state( - "sensor.energy_reactive_ac_produced_fronius_meter_0_http_fronius", 1989125.0 - ) - assert_state("sensor.voltage_ac_phase_3_fronius_meter_0_http_fronius", 236.9) - assert_state("sensor.power_factor_phase_1_fronius_meter_0_http_fronius", 0.441) - assert_state( - "sensor.voltage_ac_phase_to_phase_23_fronius_meter_0_http_fronius", 409.6 - ) - assert_state("sensor.current_ac_phase_3_fronius_meter_0_http_fronius", 1.825) - assert_state("sensor.power_factor_phase_3_fronius_meter_0_http_fronius", 0.832) - assert_state("sensor.power_apparent_phase_1_fronius_meter_0_http_fronius", 243.3) - assert_state( - "sensor.voltage_ac_phase_to_phase_31_fronius_meter_0_http_fronius", 409.4 - ) - assert_state("sensor.power_apparent_phase_2_fronius_meter_0_http_fronius", 323.4) - assert_state("sensor.power_apparent_phase_3_fronius_meter_0_http_fronius", 301.2) - assert_state("sensor.power_real_phase_1_fronius_meter_0_http_fronius", 106.8) - assert_state("sensor.power_factor_phase_2_fronius_meter_0_http_fronius", 0.934) - assert_state("sensor.power_real_phase_3_fronius_meter_0_http_fronius", 251.3) - assert_state("sensor.power_reactive_phase_1_fronius_meter_0_http_fronius", -218.6) - assert_state("sensor.power_reactive_phase_2_fronius_meter_0_http_fronius", -132.8) - assert_state("sensor.power_reactive_phase_3_fronius_meter_0_http_fronius", -166.0) - assert_state("sensor.power_apparent_fronius_meter_0_http_fronius", 868.0) - assert_state("sensor.power_reactive_fronius_meter_0_http_fronius", -517.4) - assert_state("sensor.current_ac_phase_1_fronius_meter_0_http_fronius", 1.145) + assert_state("sensor.smart_meter_ts_65a_3_energy_real_produced", 3863340.0) + assert_state("sensor.smart_meter_ts_65a_3_energy_real_consumed", 2013105.0) + assert_state("sensor.smart_meter_ts_65a_3_power_real", 653.1) + assert_state("sensor.smart_meter_ts_65a_3_frequency_phase_average", 49.9) + assert_state("sensor.smart_meter_ts_65a_3_meter_location", 0.0) + assert_state("sensor.smart_meter_ts_65a_3_power_factor", 0.828) + assert_state("sensor.smart_meter_ts_65a_3_energy_reactive_ac_consumed", 88221.0) + assert_state("sensor.smart_meter_ts_65a_3_energy_real_ac_minus", 3863340.0) + assert_state("sensor.smart_meter_ts_65a_3_current_ac_phase_2", 2.33) + assert_state("sensor.smart_meter_ts_65a_3_voltage_ac_phase_1", 235.9) + assert_state("sensor.smart_meter_ts_65a_3_voltage_ac_phase_1_2", 408.7) + assert_state("sensor.smart_meter_ts_65a_3_power_real_phase_2", 294.9) + assert_state("sensor.smart_meter_ts_65a_3_energy_real_ac_plus", 2013105.0) + assert_state("sensor.smart_meter_ts_65a_3_voltage_ac_phase_2", 236.1) + assert_state("sensor.smart_meter_ts_65a_3_energy_reactive_ac_produced", 1989125.0) + assert_state("sensor.smart_meter_ts_65a_3_voltage_ac_phase_3", 236.9) + assert_state("sensor.smart_meter_ts_65a_3_power_factor_phase_1", 0.441) + assert_state("sensor.smart_meter_ts_65a_3_voltage_ac_phase_2_3", 409.6) + assert_state("sensor.smart_meter_ts_65a_3_current_ac_phase_3", 1.825) + assert_state("sensor.smart_meter_ts_65a_3_power_factor_phase_3", 0.832) + assert_state("sensor.smart_meter_ts_65a_3_power_apparent_phase_1", 243.3) + assert_state("sensor.smart_meter_ts_65a_3_voltage_ac_phase_3_1", 409.4) + assert_state("sensor.smart_meter_ts_65a_3_power_apparent_phase_2", 323.4) + assert_state("sensor.smart_meter_ts_65a_3_power_apparent_phase_3", 301.2) + assert_state("sensor.smart_meter_ts_65a_3_power_real_phase_1", 106.8) + assert_state("sensor.smart_meter_ts_65a_3_power_factor_phase_2", 0.934) + assert_state("sensor.smart_meter_ts_65a_3_power_real_phase_3", 251.3) + assert_state("sensor.smart_meter_ts_65a_3_power_reactive_phase_1", -218.6) + assert_state("sensor.smart_meter_ts_65a_3_power_reactive_phase_2", -132.8) + assert_state("sensor.smart_meter_ts_65a_3_power_reactive_phase_3", -166.0) + assert_state("sensor.smart_meter_ts_65a_3_power_apparent", 868.0) + assert_state("sensor.smart_meter_ts_65a_3_power_reactive", -517.4) + assert_state("sensor.smart_meter_ts_65a_3_current_ac_phase_1", 1.145) # power_flow - assert_state("sensor.power_grid_fronius_power_flow_0_http_fronius", 658.4) - assert_state( - "sensor.relative_self_consumption_fronius_power_flow_0_http_fronius", 100.0 - ) - assert_state( - "sensor.power_photovoltaics_fronius_power_flow_0_http_fronius", 62.9481 - ) - assert_state("sensor.power_load_fronius_power_flow_0_http_fronius", -695.6827) - assert_state("sensor.meter_mode_fronius_power_flow_0_http_fronius", "meter") - assert_state("sensor.relative_autonomy_fronius_power_flow_0_http_fronius", 5.3592) - assert_state("sensor.energy_total_fronius_power_flow_0_http_fronius", 1530193.42) + assert_state("sensor.solarnet_power_grid", 658.4) + assert_state("sensor.solarnet_relative_self_consumption", 100.0) + assert_state("sensor.solarnet_power_photovoltaics", 62.9481) + assert_state("sensor.solarnet_power_load", -695.6827) + assert_state("sensor.solarnet_meter_mode", "meter") + assert_state("sensor.solarnet_relative_autonomy", 5.3592) + assert_state("sensor.solarnet_energy_total", 1530193.42) async def test_gen24_storage(hass, aioclient_mock): @@ -348,92 +273,74 @@ async def test_gen24_storage(hass, aioclient_mock): ) assert len(hass.states.async_all(domain_filter=SENSOR_DOMAIN)) == 64 # inverter 1 - assert_state("sensor.current_dc_fronius_inverter_1_http_fronius", 0.3952) - assert_state("sensor.voltage_dc_2_fronius_inverter_1_http_fronius", 318.8103) - assert_state("sensor.current_dc_2_fronius_inverter_1_http_fronius", 0.3564) - assert_state("sensor.current_ac_fronius_inverter_1_http_fronius", 1.1087) - assert_state("sensor.power_ac_fronius_inverter_1_http_fronius", 250.9093) - assert_state("sensor.error_code_fronius_inverter_1_http_fronius", 0) - assert_state("sensor.status_code_fronius_inverter_1_http_fronius", 7) - assert_state("sensor.energy_total_fronius_inverter_1_http_fronius", 7512794.0117) - assert_state("sensor.inverter_state_fronius_inverter_1_http_fronius", "Running") - assert_state("sensor.voltage_dc_fronius_inverter_1_http_fronius", 419.1009) - assert_state("sensor.voltage_ac_fronius_inverter_1_http_fronius", 227.354) - assert_state("sensor.frequency_ac_fronius_inverter_1_http_fronius", 49.9816) + assert_state("sensor.gen24_storage_current_dc", 0.3952) + assert_state("sensor.gen24_storage_voltage_dc_2", 318.8103) + assert_state("sensor.gen24_storage_current_dc_2", 0.3564) + assert_state("sensor.gen24_storage_current_ac", 1.1087) + assert_state("sensor.gen24_storage_power_ac", 250.9093) + assert_state("sensor.gen24_storage_error_code", 0) + assert_state("sensor.gen24_storage_status_code", 7) + assert_state("sensor.gen24_storage_energy_total", 7512794.0117) + assert_state("sensor.gen24_storage_inverter_state", "Running") + assert_state("sensor.gen24_storage_voltage_dc", 419.1009) + assert_state("sensor.gen24_storage_voltage_ac", 227.354) + assert_state("sensor.gen24_storage_frequency_ac", 49.9816) # meter - assert_state("sensor.energy_real_produced_fronius_meter_0_http_fronius", 1705128.0) - assert_state("sensor.power_real_fronius_meter_0_http_fronius", 487.7) - assert_state("sensor.power_factor_fronius_meter_0_http_fronius", 0.698) - assert_state("sensor.energy_real_consumed_fronius_meter_0_http_fronius", 1247204.0) - assert_state("sensor.frequency_phase_average_fronius_meter_0_http_fronius", 49.9) - assert_state("sensor.meter_location_fronius_meter_0_http_fronius", 0.0) - assert_state("sensor.power_reactive_fronius_meter_0_http_fronius", -501.5) - assert_state( - "sensor.energy_reactive_ac_produced_fronius_meter_0_http_fronius", 3266105.0 - ) - assert_state("sensor.power_real_phase_3_fronius_meter_0_http_fronius", 19.6) - assert_state("sensor.current_ac_phase_3_fronius_meter_0_http_fronius", 0.645) - assert_state("sensor.energy_real_ac_minus_fronius_meter_0_http_fronius", 1705128.0) - assert_state("sensor.power_apparent_phase_2_fronius_meter_0_http_fronius", 383.9) - assert_state("sensor.current_ac_phase_1_fronius_meter_0_http_fronius", 1.701) - assert_state("sensor.current_ac_phase_2_fronius_meter_0_http_fronius", 1.832) - assert_state("sensor.power_apparent_phase_1_fronius_meter_0_http_fronius", 319.5) - assert_state("sensor.voltage_ac_phase_1_fronius_meter_0_http_fronius", 229.4) - assert_state("sensor.power_real_phase_2_fronius_meter_0_http_fronius", 150.0) - assert_state( - "sensor.voltage_ac_phase_to_phase_31_fronius_meter_0_http_fronius", 394.3 - ) - assert_state("sensor.voltage_ac_phase_2_fronius_meter_0_http_fronius", 225.6) - assert_state( - "sensor.energy_reactive_ac_consumed_fronius_meter_0_http_fronius", 5482.0 - ) - assert_state("sensor.energy_real_ac_plus_fronius_meter_0_http_fronius", 1247204.0) - assert_state("sensor.power_factor_phase_1_fronius_meter_0_http_fronius", 0.995) - assert_state("sensor.power_factor_phase_3_fronius_meter_0_http_fronius", 0.163) - assert_state("sensor.power_factor_phase_2_fronius_meter_0_http_fronius", 0.389) - assert_state("sensor.power_reactive_phase_1_fronius_meter_0_http_fronius", -31.3) - assert_state("sensor.power_reactive_phase_3_fronius_meter_0_http_fronius", -116.7) - assert_state( - "sensor.voltage_ac_phase_to_phase_12_fronius_meter_0_http_fronius", 396.0 - ) - assert_state( - "sensor.voltage_ac_phase_to_phase_23_fronius_meter_0_http_fronius", 393.0 - ) - assert_state("sensor.power_reactive_phase_2_fronius_meter_0_http_fronius", -353.4) - assert_state("sensor.power_real_phase_1_fronius_meter_0_http_fronius", 317.9) - assert_state("sensor.voltage_ac_phase_3_fronius_meter_0_http_fronius", 228.3) - assert_state("sensor.power_apparent_fronius_meter_0_http_fronius", 821.9) - assert_state("sensor.power_apparent_phase_3_fronius_meter_0_http_fronius", 118.4) + assert_state("sensor.smart_meter_ts_65a_3_energy_real_produced", 1705128.0) + assert_state("sensor.smart_meter_ts_65a_3_power_real", 487.7) + assert_state("sensor.smart_meter_ts_65a_3_power_factor", 0.698) + assert_state("sensor.smart_meter_ts_65a_3_energy_real_consumed", 1247204.0) + assert_state("sensor.smart_meter_ts_65a_3_frequency_phase_average", 49.9) + assert_state("sensor.smart_meter_ts_65a_3_meter_location", 0.0) + assert_state("sensor.smart_meter_ts_65a_3_power_reactive", -501.5) + assert_state("sensor.smart_meter_ts_65a_3_energy_reactive_ac_produced", 3266105.0) + assert_state("sensor.smart_meter_ts_65a_3_power_real_phase_3", 19.6) + assert_state("sensor.smart_meter_ts_65a_3_current_ac_phase_3", 0.645) + assert_state("sensor.smart_meter_ts_65a_3_energy_real_ac_minus", 1705128.0) + assert_state("sensor.smart_meter_ts_65a_3_power_apparent_phase_2", 383.9) + assert_state("sensor.smart_meter_ts_65a_3_current_ac_phase_1", 1.701) + assert_state("sensor.smart_meter_ts_65a_3_current_ac_phase_2", 1.832) + assert_state("sensor.smart_meter_ts_65a_3_power_apparent_phase_1", 319.5) + assert_state("sensor.smart_meter_ts_65a_3_voltage_ac_phase_1", 229.4) + assert_state("sensor.smart_meter_ts_65a_3_power_real_phase_2", 150.0) + assert_state("sensor.smart_meter_ts_65a_3_voltage_ac_phase_3_1", 394.3) + assert_state("sensor.smart_meter_ts_65a_3_voltage_ac_phase_2", 225.6) + assert_state("sensor.smart_meter_ts_65a_3_energy_reactive_ac_consumed", 5482.0) + assert_state("sensor.smart_meter_ts_65a_3_energy_real_ac_plus", 1247204.0) + assert_state("sensor.smart_meter_ts_65a_3_power_factor_phase_1", 0.995) + assert_state("sensor.smart_meter_ts_65a_3_power_factor_phase_3", 0.163) + assert_state("sensor.smart_meter_ts_65a_3_power_factor_phase_2", 0.389) + assert_state("sensor.smart_meter_ts_65a_3_power_reactive_phase_1", -31.3) + assert_state("sensor.smart_meter_ts_65a_3_power_reactive_phase_3", -116.7) + assert_state("sensor.smart_meter_ts_65a_3_voltage_ac_phase_1_2", 396.0) + assert_state("sensor.smart_meter_ts_65a_3_voltage_ac_phase_2_3", 393.0) + assert_state("sensor.smart_meter_ts_65a_3_power_reactive_phase_2", -353.4) + assert_state("sensor.smart_meter_ts_65a_3_power_real_phase_1", 317.9) + assert_state("sensor.smart_meter_ts_65a_3_voltage_ac_phase_3", 228.3) + assert_state("sensor.smart_meter_ts_65a_3_power_apparent", 821.9) + assert_state("sensor.smart_meter_ts_65a_3_power_apparent_phase_3", 118.4) # ohmpilot - assert_state( - "sensor.energy_real_ac_consumed_fronius_ohmpilot_0_http_fronius", 1233295.0 - ) - assert_state("sensor.power_real_ac_fronius_ohmpilot_0_http_fronius", 0.0) - assert_state("sensor.temperature_channel_1_fronius_ohmpilot_0_http_fronius", 38.9) - assert_state("sensor.state_code_fronius_ohmpilot_0_http_fronius", 0.0) - assert_state( - "sensor.state_message_fronius_ohmpilot_0_http_fronius", "Up and running" - ) + assert_state("sensor.ohmpilot_energy_consumed", 1233295.0) + assert_state("sensor.ohmpilot_power", 0.0) + assert_state("sensor.ohmpilot_temperature_channel_1", 38.9) + assert_state("sensor.ohmpilot_state_code", 0.0) + assert_state("sensor.ohmpilot_state_message", "Up and running") # power_flow - assert_state("sensor.power_grid_fronius_power_flow_0_http_fronius", 2274.9) - assert_state("sensor.power_battery_fronius_power_flow_0_http_fronius", 0.1591) - assert_state("sensor.power_load_fronius_power_flow_0_http_fronius", -2459.3092) - assert_state( - "sensor.relative_self_consumption_fronius_power_flow_0_http_fronius", 100.0 - ) - assert_state( - "sensor.power_photovoltaics_fronius_power_flow_0_http_fronius", 216.4328 - ) - assert_state("sensor.relative_autonomy_fronius_power_flow_0_http_fronius", 7.4984) - assert_state("sensor.meter_mode_fronius_power_flow_0_http_fronius", "bidirectional") - assert_state("sensor.energy_total_fronius_power_flow_0_http_fronius", 7512664.4042) + assert_state("sensor.solarnet_power_grid", 2274.9) + assert_state("sensor.solarnet_power_battery", 0.1591) + assert_state("sensor.solarnet_power_load", -2459.3092) + assert_state("sensor.solarnet_relative_self_consumption", 100.0) + assert_state("sensor.solarnet_power_photovoltaics", 216.4328) + assert_state("sensor.solarnet_relative_autonomy", 7.4984) + assert_state("sensor.solarnet_meter_mode", "bidirectional") + assert_state("sensor.solarnet_energy_total", 7512664.4042) # storage - assert_state("sensor.current_dc_fronius_storage_0_http_fronius", 0.0) - assert_state("sensor.state_of_charge_fronius_storage_0_http_fronius", 4.6) - assert_state("sensor.capacity_maximum_fronius_storage_0_http_fronius", 16588) - assert_state("sensor.temperature_cell_fronius_storage_0_http_fronius", 21.5) - assert_state("sensor.capacity_designed_fronius_storage_0_http_fronius", 16588) - assert_state("sensor.voltage_dc_fronius_storage_0_http_fronius", 0.0) + assert_state("sensor.byd_battery_box_premium_hv_current_dc", 0.0) + assert_state("sensor.byd_battery_box_premium_hv_state_of_charge", 4.6) + assert_state("sensor.byd_battery_box_premium_hv_capacity_maximum", 16588) + assert_state("sensor.byd_battery_box_premium_hv_temperature_cell", 21.5) + assert_state("sensor.byd_battery_box_premium_hv_capacity_designed", 16588) + assert_state("sensor.byd_battery_box_premium_hv_voltage_dc", 0.0) # Devices device_registry = dr.async_get(hass) @@ -486,52 +393,50 @@ async def test_primo_s0(hass, aioclient_mock): ) assert len(hass.states.async_all(domain_filter=SENSOR_DOMAIN)) == 40 # logger - assert_state("sensor.cash_factor_fronius_logger_info_0_http_fronius", 1) - assert_state("sensor.co2_factor_fronius_logger_info_0_http_fronius", 0.53) - assert_state("sensor.delivery_factor_fronius_logger_info_0_http_fronius", 1) + assert_state("sensor.solarnet_grid_export_tariff", 1) + assert_state("sensor.solarnet_co2_factor", 0.53) + assert_state("sensor.solarnet_grid_import_tariff", 1) # inverter 1 - assert_state("sensor.energy_total_fronius_inverter_1_http_fronius", 17114940) - assert_state("sensor.energy_day_fronius_inverter_1_http_fronius", 22504) - assert_state("sensor.voltage_dc_fronius_inverter_1_http_fronius", 452.3) - assert_state("sensor.power_ac_fronius_inverter_1_http_fronius", 862) - assert_state("sensor.error_code_fronius_inverter_1_http_fronius", 0) - assert_state("sensor.current_dc_fronius_inverter_1_http_fronius", 4.23) - assert_state("sensor.status_code_fronius_inverter_1_http_fronius", 7) - assert_state("sensor.energy_year_fronius_inverter_1_http_fronius", 7532755.5) - assert_state("sensor.current_ac_fronius_inverter_1_http_fronius", 3.85) - assert_state("sensor.voltage_ac_fronius_inverter_1_http_fronius", 223.9) - assert_state("sensor.frequency_ac_fronius_inverter_1_http_fronius", 60) - assert_state("sensor.led_color_fronius_inverter_1_http_fronius", 2) - assert_state("sensor.led_state_fronius_inverter_1_http_fronius", 0) + assert_state("sensor.primo_5_0_1_energy_total", 17114940) + assert_state("sensor.primo_5_0_1_energy_day", 22504) + assert_state("sensor.primo_5_0_1_voltage_dc", 452.3) + assert_state("sensor.primo_5_0_1_power_ac", 862) + assert_state("sensor.primo_5_0_1_error_code", 0) + assert_state("sensor.primo_5_0_1_current_dc", 4.23) + assert_state("sensor.primo_5_0_1_status_code", 7) + assert_state("sensor.primo_5_0_1_energy_year", 7532755.5) + assert_state("sensor.primo_5_0_1_current_ac", 3.85) + assert_state("sensor.primo_5_0_1_voltage_ac", 223.9) + assert_state("sensor.primo_5_0_1_frequency_ac", 60) + assert_state("sensor.primo_5_0_1_led_color", 2) + assert_state("sensor.primo_5_0_1_led_state", 0) # inverter 2 - assert_state("sensor.energy_total_fronius_inverter_2_http_fronius", 5796010) - assert_state("sensor.energy_day_fronius_inverter_2_http_fronius", 14237) - assert_state("sensor.voltage_dc_fronius_inverter_2_http_fronius", 329.5) - assert_state("sensor.power_ac_fronius_inverter_2_http_fronius", 296) - assert_state("sensor.error_code_fronius_inverter_2_http_fronius", 0) - assert_state("sensor.current_dc_fronius_inverter_2_http_fronius", 0.97) - assert_state("sensor.status_code_fronius_inverter_2_http_fronius", 7) - assert_state("sensor.energy_year_fronius_inverter_2_http_fronius", 3596193.25) - assert_state("sensor.current_ac_fronius_inverter_2_http_fronius", 1.32) - assert_state("sensor.voltage_ac_fronius_inverter_2_http_fronius", 223.6) - assert_state("sensor.frequency_ac_fronius_inverter_2_http_fronius", 60.01) - assert_state("sensor.led_color_fronius_inverter_2_http_fronius", 2) - assert_state("sensor.led_state_fronius_inverter_2_http_fronius", 0) + assert_state("sensor.primo_3_0_1_energy_total", 5796010) + assert_state("sensor.primo_3_0_1_energy_day", 14237) + assert_state("sensor.primo_3_0_1_voltage_dc", 329.5) + assert_state("sensor.primo_3_0_1_power_ac", 296) + assert_state("sensor.primo_3_0_1_error_code", 0) + assert_state("sensor.primo_3_0_1_current_dc", 0.97) + assert_state("sensor.primo_3_0_1_status_code", 7) + assert_state("sensor.primo_3_0_1_energy_year", 3596193.25) + assert_state("sensor.primo_3_0_1_current_ac", 1.32) + assert_state("sensor.primo_3_0_1_voltage_ac", 223.6) + assert_state("sensor.primo_3_0_1_frequency_ac", 60.01) + assert_state("sensor.primo_3_0_1_led_color", 2) + assert_state("sensor.primo_3_0_1_led_state", 0) # meter - assert_state("sensor.meter_location_fronius_meter_0_http_fronius", 1) - assert_state("sensor.power_real_fronius_meter_0_http_fronius", -2216.7487) + assert_state("sensor.s0_meter_at_inverter_1_meter_location", 1) + assert_state("sensor.s0_meter_at_inverter_1_power_real", -2216.7487) # power_flow - assert_state("sensor.power_load_fronius_power_flow_0_http_fronius", -2218.9349) - assert_state("sensor.meter_mode_fronius_power_flow_0_http_fronius", "vague-meter") - assert_state("sensor.power_photovoltaics_fronius_power_flow_0_http_fronius", 1834) - assert_state("sensor.power_grid_fronius_power_flow_0_http_fronius", 384.9349) - assert_state( - "sensor.relative_self_consumption_fronius_power_flow_0_http_fronius", 100 - ) - assert_state("sensor.relative_autonomy_fronius_power_flow_0_http_fronius", 82.6523) - assert_state("sensor.energy_total_fronius_power_flow_0_http_fronius", 22910919.5) - assert_state("sensor.energy_day_fronius_power_flow_0_http_fronius", 36724) - assert_state("sensor.energy_year_fronius_power_flow_0_http_fronius", 11128933.25) + assert_state("sensor.solarnet_power_load", -2218.9349) + assert_state("sensor.solarnet_meter_mode", "vague-meter") + assert_state("sensor.solarnet_power_photovoltaics", 1834) + assert_state("sensor.solarnet_power_grid", 384.9349) + assert_state("sensor.solarnet_relative_self_consumption", 100) + assert_state("sensor.solarnet_relative_autonomy", 82.6523) + assert_state("sensor.solarnet_energy_total", 22910919.5) + assert_state("sensor.solarnet_energy_day", 36724) + assert_state("sensor.solarnet_energy_year", 11128933.25) # Devices device_registry = dr.async_get(hass)