Use runtime_data for Fully Kiosk Browser integration (#131101)

This commit is contained in:
Charles Garwood
2024-11-21 09:07:39 -05:00
committed by GitHub
parent 3ed462f7a7
commit fc987ee794
12 changed files with 44 additions and 57 deletions

View File

@@ -10,6 +10,8 @@ from .const import DOMAIN
from .coordinator import FullyKioskDataUpdateCoordinator from .coordinator import FullyKioskDataUpdateCoordinator
from .services import async_setup_services from .services import async_setup_services
type FullyKioskConfigEntry = ConfigEntry[FullyKioskDataUpdateCoordinator]
PLATFORMS = [ PLATFORMS = [
Platform.BINARY_SENSOR, Platform.BINARY_SENSOR,
Platform.BUTTON, Platform.BUTTON,
@@ -33,13 +35,13 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
return True return True
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_setup_entry(hass: HomeAssistant, entry: FullyKioskConfigEntry) -> bool:
"""Set up Fully Kiosk Browser from a config entry.""" """Set up Fully Kiosk Browser from a config entry."""
coordinator = FullyKioskDataUpdateCoordinator(hass, entry) coordinator = FullyKioskDataUpdateCoordinator(hass, entry)
await coordinator.async_config_entry_first_refresh() await coordinator.async_config_entry_first_refresh()
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator entry.runtime_data = coordinator
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
coordinator.async_update_listeners() coordinator.async_update_listeners()
@@ -47,10 +49,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
return True return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_unload_entry(hass: HomeAssistant, entry: FullyKioskConfigEntry) -> bool:
"""Unload a config entry.""" """Unload a config entry."""
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS) return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok

View File

@@ -7,12 +7,11 @@ from homeassistant.components.binary_sensor import (
BinarySensorEntity, BinarySensorEntity,
BinarySensorEntityDescription, BinarySensorEntityDescription,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import EntityCategory from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN from . import FullyKioskConfigEntry
from .coordinator import FullyKioskDataUpdateCoordinator from .coordinator import FullyKioskDataUpdateCoordinator
from .entity import FullyKioskEntity from .entity import FullyKioskEntity
@@ -38,13 +37,11 @@ SENSORS: tuple[BinarySensorEntityDescription, ...] = (
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: FullyKioskConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Fully Kiosk Browser sensor.""" """Set up the Fully Kiosk Browser sensor."""
coordinator: FullyKioskDataUpdateCoordinator = hass.data[DOMAIN][ coordinator = config_entry.runtime_data
config_entry.entry_id
]
async_add_entities( async_add_entities(
FullyBinarySensor(coordinator, description) FullyBinarySensor(coordinator, description)

View File

@@ -13,12 +13,11 @@ from homeassistant.components.button import (
ButtonEntity, ButtonEntity,
ButtonEntityDescription, ButtonEntityDescription,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import EntityCategory from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN from . import FullyKioskConfigEntry
from .coordinator import FullyKioskDataUpdateCoordinator from .coordinator import FullyKioskDataUpdateCoordinator
from .entity import FullyKioskEntity from .entity import FullyKioskEntity
@@ -68,13 +67,11 @@ BUTTONS: tuple[FullyButtonEntityDescription, ...] = (
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: FullyKioskConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Fully Kiosk Browser button entities.""" """Set up the Fully Kiosk Browser button entities."""
coordinator: FullyKioskDataUpdateCoordinator = hass.data[DOMAIN][ coordinator = config_entry.runtime_data
config_entry.entry_id
]
async_add_entities( async_add_entities(
FullyButtonEntity(coordinator, description) for description in BUTTONS FullyButtonEntity(coordinator, description) for description in BUTTONS

View File

@@ -5,21 +5,22 @@ from __future__ import annotations
from fullykiosk import FullyKioskError from fullykiosk import FullyKioskError
from homeassistant.components.camera import Camera, CameraEntityFeature from homeassistant.components.camera import Camera, CameraEntityFeature
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
from homeassistant.exceptions import HomeAssistantError from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN from . import FullyKioskConfigEntry
from .coordinator import FullyKioskDataUpdateCoordinator from .coordinator import FullyKioskDataUpdateCoordinator
from .entity import FullyKioskEntity from .entity import FullyKioskEntity
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant,
entry: FullyKioskConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the cameras.""" """Set up the cameras."""
coordinator: FullyKioskDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] coordinator = entry.runtime_data
async_add_entities([FullyCameraEntity(coordinator)]) async_add_entities([FullyCameraEntity(coordinator)])

View File

@@ -5,11 +5,10 @@ from __future__ import annotations
from typing import Any from typing import Any
from homeassistant.components.diagnostics import async_redact_data from homeassistant.components.diagnostics import async_redact_data
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr from homeassistant.helpers import device_registry as dr
from .const import DOMAIN from . import FullyKioskConfigEntry
DEVICE_INFO_TO_REDACT = { DEVICE_INFO_TO_REDACT = {
"serial", "serial",
@@ -57,10 +56,10 @@ SETTINGS_TO_REDACT = {
async def async_get_device_diagnostics( async def async_get_device_diagnostics(
hass: HomeAssistant, entry: ConfigEntry, device: dr.DeviceEntry hass: HomeAssistant, entry: FullyKioskConfigEntry, device: dr.DeviceEntry
) -> dict[str, Any]: ) -> dict[str, Any]:
"""Return device diagnostics.""" """Return device diagnostics."""
coordinator = hass.data[DOMAIN][entry.entry_id] coordinator = entry.runtime_data
data = coordinator.data data = coordinator.data
data["settings"] = async_redact_data(data["settings"], SETTINGS_TO_REDACT) data["settings"] = async_redact_data(data["settings"], SETTINGS_TO_REDACT)
return async_redact_data(data, DEVICE_INFO_TO_REDACT) return async_redact_data(data, DEVICE_INFO_TO_REDACT)

View File

@@ -9,13 +9,12 @@ from typing import Any
from fullykiosk import FullyKiosk, FullyKioskError from fullykiosk import FullyKiosk, FullyKioskError
from homeassistant.components.image import ImageEntity, ImageEntityDescription from homeassistant.components.image import ImageEntity, ImageEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
import homeassistant.util.dt as dt_util import homeassistant.util.dt as dt_util
from .const import DOMAIN from . import FullyKioskConfigEntry
from .coordinator import FullyKioskDataUpdateCoordinator from .coordinator import FullyKioskDataUpdateCoordinator
from .entity import FullyKioskEntity from .entity import FullyKioskEntity
@@ -37,10 +36,12 @@ IMAGES: tuple[FullyImageEntityDescription, ...] = (
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant,
entry: FullyKioskConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Fully Kiosk Browser image entities.""" """Set up the Fully Kiosk Browser image entities."""
coordinator: FullyKioskDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] coordinator = entry.runtime_data
async_add_entities( async_add_entities(
FullyImageEntity(coordinator, description) for description in IMAGES FullyImageEntity(coordinator, description) for description in IMAGES
) )

View File

@@ -12,23 +12,23 @@ from homeassistant.components.media_player import (
MediaType, MediaType,
async_process_play_media_url, async_process_play_media_url,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
from homeassistant.exceptions import HomeAssistantError from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import AUDIOMANAGER_STREAM_MUSIC, DOMAIN, MEDIA_SUPPORT_FULLYKIOSK from . import FullyKioskConfigEntry
from .const import AUDIOMANAGER_STREAM_MUSIC, MEDIA_SUPPORT_FULLYKIOSK
from .coordinator import FullyKioskDataUpdateCoordinator from .coordinator import FullyKioskDataUpdateCoordinator
from .entity import FullyKioskEntity from .entity import FullyKioskEntity
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: FullyKioskConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Fully Kiosk Browser media player entity.""" """Set up the Fully Kiosk Browser media player entity."""
coordinator = hass.data[DOMAIN][config_entry.entry_id] coordinator = config_entry.runtime_data
async_add_entities([FullyMediaPlayer(coordinator)]) async_add_entities([FullyMediaPlayer(coordinator)])

View File

@@ -7,12 +7,11 @@ from dataclasses import dataclass
from fullykiosk import FullyKioskError from fullykiosk import FullyKioskError
from homeassistant.components.notify import NotifyEntity, NotifyEntityDescription from homeassistant.components.notify import NotifyEntity, NotifyEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN from . import FullyKioskConfigEntry
from .coordinator import FullyKioskDataUpdateCoordinator from .coordinator import FullyKioskDataUpdateCoordinator
from .entity import FullyKioskEntity from .entity import FullyKioskEntity
@@ -39,10 +38,12 @@ NOTIFIERS: tuple[FullyNotifyEntityDescription, ...] = (
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant,
entry: FullyKioskConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Fully Kiosk Browser notify entities.""" """Set up the Fully Kiosk Browser notify entities."""
coordinator: FullyKioskDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] coordinator = entry.runtime_data
async_add_entities( async_add_entities(
FullyNotifyEntity(coordinator, description) for description in NOTIFIERS FullyNotifyEntity(coordinator, description) for description in NOTIFIERS
) )

View File

@@ -5,12 +5,11 @@ from __future__ import annotations
from contextlib import suppress from contextlib import suppress
from homeassistant.components.number import NumberEntity, NumberEntityDescription from homeassistant.components.number import NumberEntity, NumberEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import EntityCategory, UnitOfTime from homeassistant.const import EntityCategory, UnitOfTime
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN from . import FullyKioskConfigEntry
from .coordinator import FullyKioskDataUpdateCoordinator from .coordinator import FullyKioskDataUpdateCoordinator
from .entity import FullyKioskEntity from .entity import FullyKioskEntity
@@ -54,11 +53,11 @@ ENTITY_TYPES: tuple[NumberEntityDescription, ...] = (
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: FullyKioskConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Fully Kiosk Browser number entities.""" """Set up the Fully Kiosk Browser number entities."""
coordinator = hass.data[DOMAIN][config_entry.entry_id] coordinator = config_entry.runtime_data
async_add_entities( async_add_entities(
FullyNumberEntity(coordinator, entity) FullyNumberEntity(coordinator, entity)

View File

@@ -12,13 +12,12 @@ from homeassistant.components.sensor import (
SensorEntityDescription, SensorEntityDescription,
SensorStateClass, SensorStateClass,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import PERCENTAGE, EntityCategory, UnitOfInformation from homeassistant.const import PERCENTAGE, EntityCategory, UnitOfInformation
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import StateType from homeassistant.helpers.typing import StateType
from .const import DOMAIN from . import FullyKioskConfigEntry
from .coordinator import FullyKioskDataUpdateCoordinator from .coordinator import FullyKioskDataUpdateCoordinator
from .entity import FullyKioskEntity from .entity import FullyKioskEntity
@@ -114,13 +113,11 @@ SENSORS: tuple[FullySensorEntityDescription, ...] = (
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: FullyKioskConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Fully Kiosk Browser sensor.""" """Set up the Fully Kiosk Browser sensor."""
coordinator: FullyKioskDataUpdateCoordinator = hass.data[DOMAIN][ coordinator = config_entry.runtime_data
config_entry.entry_id
]
async_add_entities( async_add_entities(
FullySensor(coordinator, description) FullySensor(coordinator, description)
for description in SENSORS for description in SENSORS

View File

@@ -53,7 +53,7 @@ async def async_setup_services(hass: HomeAssistant) -> None:
for config_entry in config_entries: for config_entry in config_entries:
if config_entry.state != ConfigEntryState.LOADED: if config_entry.state != ConfigEntryState.LOADED:
raise HomeAssistantError(f"{config_entry.title} is not loaded") raise HomeAssistantError(f"{config_entry.title} is not loaded")
coordinators.append(hass.data[DOMAIN][config_entry.entry_id]) coordinators.append(config_entry.runtime_data)
return coordinators return coordinators
async def async_load_url(call: ServiceCall) -> None: async def async_load_url(call: ServiceCall) -> None:

View File

@@ -9,12 +9,11 @@ from typing import Any
from fullykiosk import FullyKiosk from fullykiosk import FullyKiosk
from homeassistant.components.switch import SwitchEntity, SwitchEntityDescription from homeassistant.components.switch import SwitchEntity, SwitchEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import EntityCategory from homeassistant.const import EntityCategory
from homeassistant.core import CALLBACK_TYPE, HomeAssistant, callback from homeassistant.core import CALLBACK_TYPE, HomeAssistant, callback
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN from . import FullyKioskConfigEntry
from .coordinator import FullyKioskDataUpdateCoordinator from .coordinator import FullyKioskDataUpdateCoordinator
from .entity import FullyKioskEntity from .entity import FullyKioskEntity
@@ -84,13 +83,11 @@ SWITCHES: tuple[FullySwitchEntityDescription, ...] = (
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, hass: HomeAssistant,
config_entry: ConfigEntry, config_entry: FullyKioskConfigEntry,
async_add_entities: AddEntitiesCallback, async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Fully Kiosk Browser switch.""" """Set up the Fully Kiosk Browser switch."""
coordinator: FullyKioskDataUpdateCoordinator = hass.data[DOMAIN][ coordinator = config_entry.runtime_data
config_entry.entry_id
]
async_add_entities( async_add_entities(
FullySwitchEntity(coordinator, description) for description in SWITCHES FullySwitchEntity(coordinator, description) for description in SWITCHES