Use entry.runtime_data in fibaro (#133235)

This commit is contained in:
rappenze 2024-12-15 11:49:23 +01:00 committed by GitHub
parent 314076b85f
commit 14a61d94e2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 35 additions and 52 deletions

View File

@ -28,8 +28,9 @@ from homeassistant.util import slugify
from .const import CONF_IMPORT_PLUGINS, DOMAIN
_LOGGER = logging.getLogger(__name__)
type FibaroConfigEntry = ConfigEntry[FibaroController]
_LOGGER = logging.getLogger(__name__)
PLATFORMS = [
Platform.BINARY_SENSOR,
@ -381,7 +382,7 @@ def init_controller(data: Mapping[str, Any]) -> FibaroController:
return controller
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_setup_entry(hass: HomeAssistant, entry: FibaroConfigEntry) -> bool:
"""Set up the Fibaro Component.
The unique id of the config entry is the serial number of the home center.
@ -395,7 +396,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
except FibaroAuthFailed as auth_ex:
raise ConfigEntryAuthFailed from auth_ex
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = controller
entry.runtime_data = controller
# register the hub device info separately as the hub has sometimes no entities
device_registry = dr.async_get(hass)
@ -417,25 +418,24 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_unload_entry(hass: HomeAssistant, entry: FibaroConfigEntry) -> bool:
"""Unload a config entry."""
_LOGGER.debug("Shutting down Fibaro connection")
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
hass.data[DOMAIN][entry.entry_id].disable_state_handler()
hass.data[DOMAIN].pop(entry.entry_id)
entry.runtime_data.disable_state_handler()
return unload_ok
async def async_remove_config_entry_device(
hass: HomeAssistant, config_entry: ConfigEntry, device_entry: DeviceEntry
hass: HomeAssistant, config_entry: FibaroConfigEntry, device_entry: DeviceEntry
) -> bool:
"""Remove a device entry from fibaro integration.
Only removing devices which are not present anymore are eligible to be removed.
"""
controller: FibaroController = hass.data[DOMAIN][config_entry.entry_id]
controller = config_entry.runtime_data
for identifiers in controller.get_all_device_identifiers():
if device_entry.identifiers == identifiers:
# Fibaro device is still served by the controller,

View File

@ -12,13 +12,11 @@ from homeassistant.components.binary_sensor import (
BinarySensorDeviceClass,
BinarySensorEntity,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import FibaroController
from .const import DOMAIN
from . import FibaroConfigEntry
from .entity import FibaroEntity
SENSOR_TYPES = {
@ -43,11 +41,11 @@ SENSOR_TYPES = {
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: FibaroConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Perform the setup for Fibaro controller devices."""
controller: FibaroController = hass.data[DOMAIN][entry.entry_id]
controller = entry.runtime_data
async_add_entities(
[
FibaroBinarySensor(device)

View File

@ -17,13 +17,11 @@ from homeassistant.components.climate import (
HVACAction,
HVACMode,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_TEMPERATURE, Platform, UnitOfTemperature
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import FibaroController
from .const import DOMAIN
from . import FibaroConfigEntry
from .entity import FibaroEntity
PRESET_RESUME = "resume"
@ -111,11 +109,11 @@ OP_MODE_ACTIONS = ("setMode", "setOperatingMode", "setThermostatMode")
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: FibaroConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Perform the setup for Fibaro controller devices."""
controller: FibaroController = hass.data[DOMAIN][entry.entry_id]
controller = entry.runtime_data
async_add_entities(
[
FibaroThermostat(device)

View File

@ -13,23 +13,21 @@ from homeassistant.components.cover import (
CoverEntity,
CoverEntityFeature,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import FibaroController
from .const import DOMAIN
from . import FibaroConfigEntry
from .entity import FibaroEntity
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: FibaroConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the Fibaro covers."""
controller: FibaroController = hass.data[DOMAIN][entry.entry_id]
controller = entry.runtime_data
async_add_entities(
[FibaroCover(device) for device in controller.fibaro_devices[Platform.COVER]],
True,

View File

@ -10,23 +10,21 @@ from homeassistant.components.event import (
EventDeviceClass,
EventEntity,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import FibaroController
from .const import DOMAIN
from . import FibaroConfigEntry
from .entity import FibaroEntity
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: FibaroConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the Fibaro event entities."""
controller: FibaroController = hass.data[DOMAIN][entry.entry_id]
controller = entry.runtime_data
# Each scene event represents a button on a device
async_add_entities(

View File

@ -17,13 +17,11 @@ from homeassistant.components.light import (
brightness_supported,
color_supported,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import FibaroController
from .const import DOMAIN
from . import FibaroConfigEntry
from .entity import FibaroEntity
PARALLEL_UPDATES = 2
@ -52,11 +50,11 @@ def scaleto99(value: int | None) -> int:
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: FibaroConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Perform the setup for Fibaro controller devices."""
controller: FibaroController = hass.data[DOMAIN][entry.entry_id]
controller = entry.runtime_data
async_add_entities(
[FibaroLight(device) for device in controller.fibaro_devices[Platform.LIGHT]],
True,

View File

@ -7,23 +7,21 @@ from typing import Any
from pyfibaro.fibaro_device import DeviceModel
from homeassistant.components.lock import ENTITY_ID_FORMAT, LockEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import FibaroController
from .const import DOMAIN
from . import FibaroConfigEntry
from .entity import FibaroEntity
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: FibaroConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the Fibaro locks."""
controller: FibaroController = hass.data[DOMAIN][entry.entry_id]
controller = entry.runtime_data
async_add_entities(
[FibaroLock(device) for device in controller.fibaro_devices[Platform.LOCK]],
True,

View File

@ -7,23 +7,22 @@ from typing import Any
from pyfibaro.fibaro_scene import SceneModel
from homeassistant.components.scene import Scene
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.util import slugify
from . import FibaroController
from . import FibaroConfigEntry, FibaroController
from .const import DOMAIN
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: FibaroConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Perform the setup for Fibaro scenes."""
controller: FibaroController = hass.data[DOMAIN][entry.entry_id]
controller = entry.runtime_data
async_add_entities(
[FibaroScene(scene, controller) for scene in controller.read_scenes()],
True,

View File

@ -13,7 +13,6 @@ from homeassistant.components.sensor import (
SensorEntityDescription,
SensorStateClass,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
CONCENTRATION_PARTS_PER_MILLION,
LIGHT_LUX,
@ -27,8 +26,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.util import convert
from . import FibaroController
from .const import DOMAIN
from . import FibaroConfigEntry
from .entity import FibaroEntity
# List of known sensors which represents a fibaro device
@ -103,12 +101,12 @@ FIBARO_TO_HASS_UNIT: dict[str, str] = {
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: FibaroConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the Fibaro controller devices."""
controller: FibaroController = hass.data[DOMAIN][entry.entry_id]
controller = entry.runtime_data
entities: list[SensorEntity] = [
FibaroSensor(device, MAIN_SENSOR_TYPES.get(device.type))
for device in controller.fibaro_devices[Platform.SENSOR]

View File

@ -7,23 +7,21 @@ from typing import Any
from pyfibaro.fibaro_device import DeviceModel
from homeassistant.components.switch import ENTITY_ID_FORMAT, SwitchEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import FibaroController
from .const import DOMAIN
from . import FibaroConfigEntry
from .entity import FibaroEntity
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: FibaroConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the Fibaro switches."""
controller: FibaroController = hass.data[DOMAIN][entry.entry_id]
controller = entry.runtime_data
async_add_entities(
[FibaroSwitch(device) for device in controller.fibaro_devices[Platform.SWITCH]],
True,