diff --git a/homeassistant/components/fibaro/__init__.py b/homeassistant/components/fibaro/__init__.py index 86f25253c2d..ffa13749fa7 100644 --- a/homeassistant/components/fibaro/__init__.py +++ b/homeassistant/components/fibaro/__init__.py @@ -35,8 +35,6 @@ from .const import CONF_IMPORT_PLUGINS, DOMAIN _LOGGER = logging.getLogger(__name__) -FIBARO_CONTROLLER = "fibaro_controller" -FIBARO_DEVICES = "fibaro_devices" PLATFORMS = [ Platform.BINARY_SENSOR, Platform.CLIMATE, @@ -377,12 +375,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: except FibaroAuthFailed as auth_ex: raise ConfigEntryAuthFailed from auth_ex - data: dict[str, Any] = {} - hass.data.setdefault(DOMAIN, {})[entry.entry_id] = data - data[FIBARO_CONTROLLER] = controller - devices = data[FIBARO_DEVICES] = {} - for platform in PLATFORMS: - devices[platform] = [*controller.fibaro_devices[platform]] + hass.data.setdefault(DOMAIN, {})[entry.entry_id] = controller # register the hub device info separately as the hub has sometimes no entities device_registry = dr.async_get(hass) @@ -408,7 +401,7 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: _LOGGER.debug("Shutting down Fibaro connection") unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS) - hass.data[DOMAIN][entry.entry_id][FIBARO_CONTROLLER].disable_state_handler() + hass.data[DOMAIN][entry.entry_id].disable_state_handler() hass.data[DOMAIN].pop(entry.entry_id) return unload_ok diff --git a/homeassistant/components/fibaro/binary_sensor.py b/homeassistant/components/fibaro/binary_sensor.py index 57b3bc99b4f..07c0d9a779c 100644 --- a/homeassistant/components/fibaro/binary_sensor.py +++ b/homeassistant/components/fibaro/binary_sensor.py @@ -16,7 +16,7 @@ from homeassistant.const import Platform from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import FIBARO_DEVICES, FibaroDevice +from . import FibaroController, FibaroDevice from .const import DOMAIN SENSOR_TYPES = { @@ -45,12 +45,11 @@ async def async_setup_entry( async_add_entities: AddEntitiesCallback, ) -> None: """Perform the setup for Fibaro controller devices.""" + controller: FibaroController = hass.data[DOMAIN][entry.entry_id] async_add_entities( [ FibaroBinarySensor(device) - for device in hass.data[DOMAIN][entry.entry_id][FIBARO_DEVICES][ - Platform.BINARY_SENSOR - ] + for device in controller.fibaro_devices[Platform.BINARY_SENSOR] ], True, ) diff --git a/homeassistant/components/fibaro/climate.py b/homeassistant/components/fibaro/climate.py index a56056ade03..18fef8dbe7a 100644 --- a/homeassistant/components/fibaro/climate.py +++ b/homeassistant/components/fibaro/climate.py @@ -21,7 +21,7 @@ from homeassistant.const import ATTR_TEMPERATURE, Platform, UnitOfTemperature from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import FIBARO_DEVICES, FibaroDevice +from . import FibaroController, FibaroDevice from .const import DOMAIN PRESET_RESUME = "resume" @@ -113,12 +113,11 @@ async def async_setup_entry( async_add_entities: AddEntitiesCallback, ) -> None: """Perform the setup for Fibaro controller devices.""" + controller: FibaroController = hass.data[DOMAIN][entry.entry_id] async_add_entities( [ FibaroThermostat(device) - for device in hass.data[DOMAIN][entry.entry_id][FIBARO_DEVICES][ - Platform.CLIMATE - ] + for device in controller.fibaro_devices[Platform.CLIMATE] ], True, ) diff --git a/homeassistant/components/fibaro/cover.py b/homeassistant/components/fibaro/cover.py index c73c45d254c..d353b352c5c 100644 --- a/homeassistant/components/fibaro/cover.py +++ b/homeassistant/components/fibaro/cover.py @@ -17,7 +17,7 @@ from homeassistant.const import Platform from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import FIBARO_DEVICES, FibaroDevice +from . import FibaroController, FibaroDevice from .const import DOMAIN @@ -27,13 +27,9 @@ async def async_setup_entry( async_add_entities: AddEntitiesCallback, ) -> None: """Set up the Fibaro covers.""" + controller: FibaroController = hass.data[DOMAIN][entry.entry_id] async_add_entities( - [ - FibaroCover(device) - for device in hass.data[DOMAIN][entry.entry_id][FIBARO_DEVICES][ - Platform.COVER - ] - ], + [FibaroCover(device) for device in controller.fibaro_devices[Platform.COVER]], True, ) diff --git a/homeassistant/components/fibaro/light.py b/homeassistant/components/fibaro/light.py index 6a918f64f86..981b81fdd43 100644 --- a/homeassistant/components/fibaro/light.py +++ b/homeassistant/components/fibaro/light.py @@ -23,7 +23,7 @@ from homeassistant.const import Platform from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import FIBARO_DEVICES, FibaroDevice +from . import FibaroController, FibaroDevice from .const import DOMAIN PARALLEL_UPDATES = 2 @@ -56,13 +56,9 @@ async def async_setup_entry( async_add_entities: AddEntitiesCallback, ) -> None: """Perform the setup for Fibaro controller devices.""" + controller: FibaroController = hass.data[DOMAIN][entry.entry_id] async_add_entities( - [ - FibaroLight(device) - for device in hass.data[DOMAIN][entry.entry_id][FIBARO_DEVICES][ - Platform.LIGHT - ] - ], + [FibaroLight(device) for device in controller.fibaro_devices[Platform.LIGHT]], True, ) diff --git a/homeassistant/components/fibaro/lock.py b/homeassistant/components/fibaro/lock.py index 503407bc28f..715116d2843 100644 --- a/homeassistant/components/fibaro/lock.py +++ b/homeassistant/components/fibaro/lock.py @@ -11,7 +11,7 @@ from homeassistant.const import Platform from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import FIBARO_DEVICES, FibaroDevice +from . import FibaroController, FibaroDevice from .const import DOMAIN @@ -21,13 +21,9 @@ async def async_setup_entry( async_add_entities: AddEntitiesCallback, ) -> None: """Set up the Fibaro locks.""" + controller: FibaroController = hass.data[DOMAIN][entry.entry_id] async_add_entities( - [ - FibaroLock(device) - for device in hass.data[DOMAIN][entry.entry_id][FIBARO_DEVICES][ - Platform.LOCK - ] - ], + [FibaroLock(device) for device in controller.fibaro_devices[Platform.LOCK]], True, ) diff --git a/homeassistant/components/fibaro/scene.py b/homeassistant/components/fibaro/scene.py index 812a85b2f50..36d2666f97d 100644 --- a/homeassistant/components/fibaro/scene.py +++ b/homeassistant/components/fibaro/scene.py @@ -13,7 +13,7 @@ from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.util import slugify -from . import FIBARO_DEVICES, FibaroController +from . import FibaroController from .const import DOMAIN @@ -23,13 +23,9 @@ async def async_setup_entry( async_add_entities: AddEntitiesCallback, ) -> None: """Perform the setup for Fibaro scenes.""" + controller: FibaroController = hass.data[DOMAIN][entry.entry_id] async_add_entities( - [ - FibaroScene(scene) - for scene in hass.data[DOMAIN][entry.entry_id][FIBARO_DEVICES][ - Platform.SCENE - ] - ], + [FibaroScene(scene) for scene in controller.fibaro_devices[Platform.SCENE]], True, ) diff --git a/homeassistant/components/fibaro/sensor.py b/homeassistant/components/fibaro/sensor.py index b98e12b889e..e859a9b1afb 100644 --- a/homeassistant/components/fibaro/sensor.py +++ b/homeassistant/components/fibaro/sensor.py @@ -26,7 +26,7 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.util import convert -from . import FIBARO_DEVICES, FibaroDevice +from . import FibaroController, FibaroDevice from .const import DOMAIN # List of known sensors which represents a fibaro device @@ -107,7 +107,9 @@ async def async_setup_entry( """Set up the Fibaro controller devices.""" entities: list[SensorEntity] = [] - for device in hass.data[DOMAIN][entry.entry_id][FIBARO_DEVICES][Platform.SENSOR]: + controller: FibaroController = hass.data[DOMAIN][entry.entry_id] + + for device in controller.fibaro_devices[Platform.SENSOR]: entity_description = MAIN_SENSOR_TYPES.get(device.type) # main sensors are created even if the entity type is not known @@ -122,7 +124,7 @@ async def async_setup_entry( Platform.SENSOR, Platform.SWITCH, ): - for device in hass.data[DOMAIN][entry.entry_id][FIBARO_DEVICES][platform]: + for device in controller.fibaro_devices[platform]: for entity_description in ADDITIONAL_SENSOR_TYPES: if entity_description.key in device.properties: entities.append(FibaroAdditionalSensor(device, entity_description)) diff --git a/homeassistant/components/fibaro/switch.py b/homeassistant/components/fibaro/switch.py index 6ca770ab2d1..fdd473ea282 100644 --- a/homeassistant/components/fibaro/switch.py +++ b/homeassistant/components/fibaro/switch.py @@ -11,7 +11,7 @@ from homeassistant.const import Platform from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import FIBARO_DEVICES, FibaroDevice +from . import FibaroController, FibaroDevice from .const import DOMAIN @@ -21,13 +21,9 @@ async def async_setup_entry( async_add_entities: AddEntitiesCallback, ) -> None: """Set up the Fibaro switches.""" + controller: FibaroController = hass.data[DOMAIN][entry.entry_id] async_add_entities( - [ - FibaroSwitch(device) - for device in hass.data[DOMAIN][entry.entry_id][FIBARO_DEVICES][ - Platform.SWITCH - ] - ], + [FibaroSwitch(device) for device in controller.fibaro_devices[Platform.SWITCH]], True, ) diff --git a/tests/components/fibaro/conftest.py b/tests/components/fibaro/conftest.py index 8a2bbcbcd4a..1a3f9b083b8 100644 --- a/tests/components/fibaro/conftest.py +++ b/tests/components/fibaro/conftest.py @@ -5,7 +5,7 @@ from unittest.mock import AsyncMock, Mock, patch from pyfibaro.fibaro_scene import SceneModel import pytest -from homeassistant.components.fibaro import DOMAIN, FIBARO_CONTROLLER, FIBARO_DEVICES +from homeassistant.components.fibaro import DOMAIN from homeassistant.config_entries import ConfigEntry from homeassistant.const import Platform from homeassistant.core import HomeAssistant @@ -47,16 +47,12 @@ async def setup_platform( controller_mock = Mock() controller_mock.hub_serial = "HC2-111111" controller_mock.get_room_name.return_value = room_name + controller_mock.fibaro_devices = {Platform.SCENE: scenes} for scene in scenes: scene.fibaro_controller = controller_mock - hass.data[DOMAIN] = { - config_entry.entry_id: { - FIBARO_CONTROLLER: controller_mock, - FIBARO_DEVICES: {Platform.SCENE: scenes}, - } - } + hass.data[DOMAIN] = {config_entry.entry_id: controller_mock} await hass.config_entries.async_forward_entry_setup(config_entry, platform) await hass.async_block_till_done() return config_entry