diff --git a/homeassistant/components/homewizard/__init__.py b/homeassistant/components/homewizard/__init__.py index 01705d66f50..036f6c077da 100644 --- a/homeassistant/components/homewizard/__init__.py +++ b/homeassistant/components/homewizard/__init__.py @@ -1,6 +1,5 @@ """The Homewizard integration.""" from homeassistant.config_entries import SOURCE_REAUTH, ConfigEntry -from homeassistant.const import CONF_IP_ADDRESS from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady @@ -10,7 +9,7 @@ from .coordinator import HWEnergyDeviceUpdateCoordinator as Coordinator async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up Homewizard from a config entry.""" - coordinator = Coordinator(hass, entry, entry.data[CONF_IP_ADDRESS]) + coordinator = Coordinator(hass) try: await coordinator.async_config_entry_first_refresh() diff --git a/homeassistant/components/homewizard/button.py b/homeassistant/components/homewizard/button.py index 19ffb1d6042..8a6936ee1c8 100644 --- a/homeassistant/components/homewizard/button.py +++ b/homeassistant/components/homewizard/button.py @@ -18,7 +18,7 @@ async def async_setup_entry( """Set up the Identify button.""" coordinator: HWEnergyDeviceUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] if coordinator.supports_identify(): - async_add_entities([HomeWizardIdentifyButton(coordinator, entry)]) + async_add_entities([HomeWizardIdentifyButton(coordinator)]) class HomeWizardIdentifyButton(HomeWizardEntity, ButtonEntity): @@ -27,14 +27,10 @@ class HomeWizardIdentifyButton(HomeWizardEntity, ButtonEntity): _attr_entity_category = EntityCategory.CONFIG _attr_device_class = ButtonDeviceClass.IDENTIFY - def __init__( - self, - coordinator: HWEnergyDeviceUpdateCoordinator, - entry: ConfigEntry, - ) -> None: + def __init__(self, coordinator: HWEnergyDeviceUpdateCoordinator) -> None: """Initialize button.""" super().__init__(coordinator) - self._attr_unique_id = f"{entry.unique_id}_identify" + self._attr_unique_id = f"{coordinator.config_entry.unique_id}_identify" @homewizard_exception_handler async def async_press(self) -> None: diff --git a/homeassistant/components/homewizard/coordinator.py b/homeassistant/components/homewizard/coordinator.py index fb89989b2a5..e38b1d54471 100644 --- a/homeassistant/components/homewizard/coordinator.py +++ b/homeassistant/components/homewizard/coordinator.py @@ -9,6 +9,7 @@ from homewizard_energy.errors import DisabledError, RequestError, UnsupportedErr from homewizard_energy.models import Device from homeassistant.config_entries import ConfigEntry +from homeassistant.const import CONF_IP_ADDRESS from homeassistant.core import HomeAssistant from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed @@ -26,16 +27,18 @@ class HWEnergyDeviceUpdateCoordinator(DataUpdateCoordinator[DeviceResponseEntry] _unsupported_error: bool = False + config_entry: ConfigEntry + def __init__( self, hass: HomeAssistant, - entry: ConfigEntry, - host: str, ) -> None: """Initialize update coordinator.""" super().__init__(hass, _LOGGER, name=DOMAIN, update_interval=UPDATE_INTERVAL) - self.entry = entry - self.api = HomeWizardEnergy(host, clientsession=async_get_clientsession(hass)) + self.api = HomeWizardEnergy( + self.config_entry.data[CONF_IP_ADDRESS], + clientsession=async_get_clientsession(hass), + ) async def _async_update_data(self) -> DeviceResponseEntry: """Fetch all device and sensor data from api.""" @@ -58,7 +61,7 @@ class HWEnergyDeviceUpdateCoordinator(DataUpdateCoordinator[DeviceResponseEntry] self._unsupported_error = True _LOGGER.warning( "%s is running an outdated firmware version (%s). Contact HomeWizard support to update your device", - self.entry.title, + self.config_entry.title, ex, ) @@ -71,7 +74,9 @@ class HWEnergyDeviceUpdateCoordinator(DataUpdateCoordinator[DeviceResponseEntry] # Do not reload when performing first refresh if self.data is not None: - await self.hass.config_entries.async_reload(self.entry.entry_id) + await self.hass.config_entries.async_reload( + self.config_entry.entry_id + ) raise UpdateFailed(ex) from ex diff --git a/homeassistant/components/homewizard/entity.py b/homeassistant/components/homewizard/entity.py index 61bf20dbbc4..2090cc363ba 100644 --- a/homeassistant/components/homewizard/entity.py +++ b/homeassistant/components/homewizard/entity.py @@ -16,7 +16,7 @@ class HomeWizardEntity(CoordinatorEntity[HWEnergyDeviceUpdateCoordinator]): def __init__(self, coordinator: HWEnergyDeviceUpdateCoordinator) -> None: """Initialize the HomeWizard entity.""" - super().__init__(coordinator=coordinator) + super().__init__(coordinator) self._attr_device_info = DeviceInfo( manufacturer="HomeWizard", sw_version=coordinator.data.device.firmware_version, diff --git a/homeassistant/components/homewizard/helpers.py b/homeassistant/components/homewizard/helpers.py index d2d1b7c0119..3f7fc064931 100644 --- a/homeassistant/components/homewizard/helpers.py +++ b/homeassistant/components/homewizard/helpers.py @@ -32,7 +32,9 @@ def homewizard_exception_handler( except RequestError as ex: raise HomeAssistantError from ex except DisabledError as ex: - await self.hass.config_entries.async_reload(self.coordinator.entry.entry_id) + await self.hass.config_entries.async_reload( + self.coordinator.config_entry.entry_id + ) raise HomeAssistantError from ex return handler diff --git a/homeassistant/components/homewizard/number.py b/homeassistant/components/homewizard/number.py index 07f6bb9b55f..58e0b02a06c 100644 --- a/homeassistant/components/homewizard/number.py +++ b/homeassistant/components/homewizard/number.py @@ -21,7 +21,7 @@ async def async_setup_entry( """Set up numbers for device.""" coordinator: HWEnergyDeviceUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] if coordinator.supports_state(): - async_add_entities([HWEnergyNumberEntity(coordinator, entry)]) + async_add_entities([HWEnergyNumberEntity(coordinator)]) class HWEnergyNumberEntity(HomeWizardEntity, NumberEntity): @@ -35,11 +35,12 @@ class HWEnergyNumberEntity(HomeWizardEntity, NumberEntity): def __init__( self, coordinator: HWEnergyDeviceUpdateCoordinator, - entry: ConfigEntry, ) -> None: """Initialize the control number.""" super().__init__(coordinator) - self._attr_unique_id = f"{entry.unique_id}_status_light_brightness" + self._attr_unique_id = ( + f"{coordinator.config_entry.unique_id}_status_light_brightness" + ) @homewizard_exception_handler async def async_set_native_value(self, value: float) -> None: diff --git a/homeassistant/components/homewizard/sensor.py b/homeassistant/components/homewizard/sensor.py index d8cc72ce45e..a342e11bea0 100644 --- a/homeassistant/components/homewizard/sensor.py +++ b/homeassistant/components/homewizard/sensor.py @@ -26,6 +26,7 @@ from homeassistant.const import ( ) from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import StateType from .const import DOMAIN from .coordinator import HWEnergyDeviceUpdateCoordinator @@ -39,7 +40,7 @@ class HomeWizardEntityDescriptionMixin: """Mixin values for HomeWizard entities.""" has_fn: Callable[[Data], bool] - value_fn: Callable[[Data], float | int | str | None] + value_fn: Callable[[Data], StateType] @dataclass @@ -433,7 +434,7 @@ async def async_setup_entry( coordinator: HWEnergyDeviceUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] async_add_entities( - HomeWizardSensorEntity(coordinator, entry, description) + HomeWizardSensorEntity(coordinator, description) for description in SENSORS if description.has_fn(coordinator.data.data) ) @@ -447,18 +448,17 @@ class HomeWizardSensorEntity(HomeWizardEntity, SensorEntity): def __init__( self, coordinator: HWEnergyDeviceUpdateCoordinator, - entry: ConfigEntry, description: HomeWizardSensorEntityDescription, ) -> None: """Initialize Sensor Domain.""" super().__init__(coordinator) self.entity_description = description - self._attr_unique_id = f"{entry.unique_id}_{description.key}" + self._attr_unique_id = f"{coordinator.config_entry.unique_id}_{description.key}" if not description.enabled_fn(self.coordinator.data.data): self._attr_entity_registry_enabled_default = False @property - def native_value(self) -> float | int | str | None: + def native_value(self) -> StateType: """Return the sensor value.""" return self.entity_description.value_fn(self.coordinator.data.data) diff --git a/homeassistant/components/homewizard/switch.py b/homeassistant/components/homewizard/switch.py index cddcabc841e..ed59963aa41 100644 --- a/homeassistant/components/homewizard/switch.py +++ b/homeassistant/components/homewizard/switch.py @@ -86,11 +86,7 @@ async def async_setup_entry( coordinator: HWEnergyDeviceUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] async_add_entities( - HomeWizardSwitchEntity( - coordinator=coordinator, - description=description, - entry=entry, - ) + HomeWizardSwitchEntity(coordinator, description) for description in SWITCHES if description.create_fn(coordinator) ) @@ -105,12 +101,11 @@ class HomeWizardSwitchEntity(HomeWizardEntity, SwitchEntity): self, coordinator: HWEnergyDeviceUpdateCoordinator, description: HomeWizardSwitchEntityDescription, - entry: ConfigEntry, ) -> None: """Initialize the switch.""" super().__init__(coordinator) self.entity_description = description - self._attr_unique_id = f"{entry.unique_id}_{description.key}" + self._attr_unique_id = f"{coordinator.config_entry.unique_id}_{description.key}" @property def icon(self) -> str | None: