core/tests/components/fronius/__init__.py

99 lines
3.6 KiB
Python
Raw Normal View History

"""Tests for the Fronius integration."""
from __future__ import annotations
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
from homeassistant.components.fronius.const import DOMAIN
from homeassistant.config_entries import ConfigEntry
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
from homeassistant.const import CONF_HOST
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
from homeassistant.util import dt
from tests.common import MockConfigEntry, async_fire_time_changed, load_fixture
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
from tests.test_util.aiohttp import AiohttpClientMocker
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
MOCK_HOST = "http://fronius"
MOCK_UID = "123.4567890"
async def setup_fronius_integration(
hass: HomeAssistant, is_logger: bool = True, unique_id: str = MOCK_UID
) -> ConfigEntry:
"""Create the Fronius integration."""
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
entry = MockConfigEntry(
domain=DOMAIN,
unique_id=unique_id, # has to match mocked logger unique_id
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
data={
CONF_HOST: MOCK_HOST,
"is_logger": is_logger,
},
)
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
entry.add_to_hass(hass)
await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done()
return entry
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
def mock_responses(
aioclient_mock: AiohttpClientMocker,
host: str = MOCK_HOST,
fixture_set: str = "symo",
inverter_ids: list[str | int] = [1],
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
night: bool = False,
) -> None:
"""Mock responses for Fronius devices."""
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
aioclient_mock.clear_requests()
_night = "_night" if night else ""
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
aioclient_mock.get(
f"{host}/solar_api/GetAPIVersion.cgi",
text=load_fixture(f"{fixture_set}/GetAPIVersion.json", "fronius"),
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
)
for inverter_id in inverter_ids:
aioclient_mock.get(
f"{host}/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&"
f"DeviceId={inverter_id}&DataCollection=CommonInverterData",
text=load_fixture(
f"{fixture_set}/GetInverterRealtimeData_Device_{inverter_id}{_night}.json",
"fronius",
),
)
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
aioclient_mock.get(
f"{host}/solar_api/v1/GetInverterInfo.cgi",
text=load_fixture(f"{fixture_set}/GetInverterInfo.json", "fronius"),
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
)
aioclient_mock.get(
f"{host}/solar_api/v1/GetLoggerInfo.cgi",
text=load_fixture(f"{fixture_set}/GetLoggerInfo.json", "fronius"),
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
)
aioclient_mock.get(
f"{host}/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System",
text=load_fixture(f"{fixture_set}/GetMeterRealtimeData.json", "fronius"),
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
)
aioclient_mock.get(
f"{host}/solar_api/v1/GetPowerFlowRealtimeData.fcgi",
text=load_fixture(
f"{fixture_set}/GetPowerFlowRealtimeData{_night}.json", "fronius"
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
),
)
aioclient_mock.get(
f"{host}/solar_api/v1/GetStorageRealtimeData.cgi?Scope=System",
text=load_fixture(f"{fixture_set}/GetStorageRealtimeData.json", "fronius"),
)
aioclient_mock.get(
f"{host}/solar_api/v1/GetOhmPilotRealtimeData.cgi?Scope=System",
text=load_fixture(f"{fixture_set}/GetOhmPilotRealtimeData.json", "fronius"),
Rewrite Fronius integration (#59686) * Add unique_id and use DataUpdateCoordinator in Fronius (#57879) * initial refactoring commit - meters - config_flow (no strings, no tests yet) - import yaml config - FroniusSolarNet class for holding Fronius object , coordinators and some common data - meter descriptions - update coordinator - entities (including devices) * storage controllers * error handling on init; inverter unique_id * inverters * power_flow * fix VA, var, varh not valid for device_class power/energy and add custom icons * add SolarNet device for system wide values * cleanup * config_flow strings * test config_flow * use pyfronius 0.7.0 * enable strict typing * remove TODO comments * fix lint errors; move FroniusSensorEntity to sensor.py * power_flow as optional coordinator API V0 doesn't support power_flow endpoint * show error message in logs * prevent parallel requests to one host * logger_info coordinator * store FroniusSolarNet reference directly in coordinator * cleanup coordinators when unloading entry * round floats returned by Fronius API * default icons for grid im/export tariffs * small typing fix * Update homeassistant/components/fronius/sensor.py Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * DC icons * prepend names with "Fronius" and device type to get more reasonable default entity_ids (eg. have them next to each other when alphabetically sorted) * remove config_flow and devices * rename _FroniusUpdateCoordinator to FroniusCoordinatorBase and mark ABC * move SensorEntityDescriptions to sensor.py * Revert "move SensorEntityDescriptions to sensor.py" This reverts commit 2e5a726eb65854f236a0c72f3f67f04a6f8a2eff. * Don't raise ConfigEntryNotReady and use regular refresh method * move bridge initialization out of helper class * no coverage tests * power_flow update interval 10 seconds * move SensorEntityDescriptions to sensor.py without introducing a circular dependency * deprecation warning for CONF_MONITORED_CONDITIONS * remove extra_state_attributes form meter sensor entities * readd diagnostic entities * decouple default entity_id from default name * use key instead of name for entity_id and make deprecated config key optional * adjust tests * use old entity_ids these changes are now backwards compatible * check coverage * simplify entity description definitions * restore entity names of previous implementation Co-authored-by: Brett Adams <Bre77@users.noreply.github.com> * Add config_flow for Fronius integration (#59677) * Cleanup Fronius config_flow and tests (#60094) * Add devices to Fronius integration (#60104) * New entity names for Fronius entities (#60215) * Adaptive update interval for Fronius coordinators (#60192) Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2021-11-24 01:04:36 +00:00
)
async def enable_all_entities(hass, config_entry_id, time_till_next_update):
"""Enable all entities for a config entry and fast forward time to receive data."""
registry = er.async_get(hass)
entities = er.async_entries_for_config_entry(registry, config_entry_id)
for entry in [
entry for entry in entities if entry.disabled_by == er.DISABLED_INTEGRATION
]:
registry.async_update_entity(entry.entity_id, **{"disabled_by": None})
await hass.async_block_till_done()
async_fire_time_changed(hass, dt.utcnow() + time_till_next_update)
await hass.async_block_till_done()