Skip to content

Commit

Permalink
Store runtime data inside the config entry
Browse files Browse the repository at this point in the history
  • Loading branch information
cyr-ius committed May 22, 2024
1 parent d09e575 commit eb70dc6
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 30 deletions.
16 changes: 7 additions & 9 deletions custom_components/bbox/__init__.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
"""The Bouygues Bbox integration."""

from __future__ import annotations

from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant

from .const import DOMAIN
from .coordinator import BboxDataUpdateCoordinator

type BBoxConfigEntry = ConfigEntry[BboxDataUpdateCoordinator]

PLATFORMS: list[Platform] = [
Platform.SENSOR,
Platform.BINARY_SENSOR,
Expand All @@ -16,21 +18,17 @@
]


async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_setup_entry(hass: HomeAssistant, entry: BBoxConfigEntry) -> bool:
"""Set up Bouygues Bbox from a config entry."""
hass.data.setdefault(DOMAIN, {})
coordinator = BboxDataUpdateCoordinator(hass, entry)
await coordinator.async_config_entry_first_refresh()
hass.data[DOMAIN][entry.entry_id] = coordinator
entry.runtime_data = coordinator

await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)

return True


async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_unload_entry(hass: HomeAssistant, entry: BBoxConfigEntry) -> bool:
"""Unload a config entry."""
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
hass.data[DOMAIN].pop(entry.entry_id)

return unload_ok
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
10 changes: 4 additions & 6 deletions custom_components/bbox/binary_sensor.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""Support for Bbox binary sensors."""

from __future__ import annotations

import logging
Expand All @@ -7,11 +8,10 @@
BinarySensorDeviceClass,
BinarySensorEntity,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback

from .const import DOMAIN
from . import BBoxConfigEntry
from .entity import BboxEntity
from .helpers import BboxBinarySensorDescription, finditem

Expand All @@ -28,15 +28,13 @@


async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
hass: HomeAssistant, entry: BBoxConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Set up sensor."""
coordinator = hass.data[DOMAIN][entry.entry_id]

coordinator = entry.runtime_data
entities = [
BboxBinarySensor(coordinator, description) for description in SENSOR_TYPES
]

async_add_entities(entities)


Expand Down
9 changes: 5 additions & 4 deletions custom_components/bbox/button.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
"""Button for Bbox router."""

import logging

from bboxpy.exceptions import BboxException

from homeassistant.components.button import ButtonEntity, ButtonEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback

from .const import DOMAIN
from . import BBoxConfigEntry
from .entity import BboxEntity

_LOGGER = logging.getLogger(__name__)
Expand All @@ -18,10 +19,10 @@


async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
hass: HomeAssistant, entry: BBoxConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Set up sensor."""
coordinator = hass.data[DOMAIN][entry.entry_id]
coordinator = entry.runtime_data
entities = [RestartButton(coordinator, BUTTON_RESTART)]
async_add_entities(entities)

Expand Down
11 changes: 4 additions & 7 deletions custom_components/bbox/device_tracker.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""Support for tracking."""

from __future__ import annotations

import logging
Expand All @@ -7,10 +8,10 @@
from homeassistant.components.device_tracker import SourceType
from homeassistant.components.device_tracker.config_entry import ScannerEntity
from homeassistant.components.sensor import SensorEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback

from . import BBoxConfigEntry
from .const import DOMAIN
from .coordinator import BboxDataUpdateCoordinator
from .entity import BboxEntity
Expand All @@ -19,21 +20,17 @@


async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
hass: HomeAssistant, entry: BBoxConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Set up sensor."""
coordinator = hass.data[DOMAIN][entry.entry_id]

coordinator = entry.runtime_data
description = SensorEntityDescription(key="tracker", translation_key="tracker")

devices = coordinator.data.get("devices", {}).get("hosts", {}).get("list", [])

entities = [
BboxDeviceTracker(coordinator, description, device)
for device in devices
if device.get("macaddress")
]

async_add_entities(entities)


Expand Down
8 changes: 4 additions & 4 deletions custom_components/bbox/sensor.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""Support for Bbox sensors."""

from __future__ import annotations

import logging
Expand All @@ -8,12 +9,11 @@
SensorEntity,
SensorStateClass,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import PERCENTAGE, UnitOfDataRate, UnitOfTemperature
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback

from .const import DOMAIN
from . import BBoxConfigEntry
from .entity import BboxEntity
from .helpers import BboxSensorDescription, finditem

Expand Down Expand Up @@ -88,10 +88,10 @@


async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
hass: HomeAssistant, entry: BBoxConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Set up sensor."""
coordinator = hass.data[DOMAIN][entry.entry_id]
coordinator = entry.runtime_data
entities = [BboxSensor(coordinator, description) for description in SENSOR_TYPES]
async_add_entities(entities)

Expand Down

0 comments on commit eb70dc6

Please sign in to comment.