mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
Use config entry runtime data in Trafikverket Camera (#116552)
This commit is contained in:
parent
6cb703aa1d
commit
b2c1cd3e2a
@ -19,13 +19,15 @@ CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN)
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
TVCameraConfigEntry = ConfigEntry[TVDataUpdateCoordinator]
|
||||
|
||||
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
|
||||
async def async_setup_entry(hass: HomeAssistant, entry: TVCameraConfigEntry) -> bool:
|
||||
"""Set up Trafikverket Camera from a config entry."""
|
||||
|
||||
coordinator = TVDataUpdateCoordinator(hass, entry)
|
||||
coordinator = TVDataUpdateCoordinator(hass)
|
||||
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)
|
||||
|
||||
@ -34,11 +36,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
|
||||
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
"""Unload Trafikverket Camera 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)
|
||||
|
||||
|
||||
async def async_migrate_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
|
@ -9,12 +9,11 @@ from homeassistant.components.binary_sensor import (
|
||||
BinarySensorEntity,
|
||||
BinarySensorEntityDescription,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from .const import DOMAIN
|
||||
from .coordinator import CameraData, TVDataUpdateCoordinator
|
||||
from . import TVCameraConfigEntry
|
||||
from .coordinator import CameraData
|
||||
from .entity import TrafikverketCameraNonCameraEntity
|
||||
|
||||
PARALLEL_UPDATES = 0
|
||||
@ -35,11 +34,13 @@ BINARY_SENSOR_TYPE = TVCameraSensorEntityDescription(
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
||||
hass: HomeAssistant,
|
||||
entry: TVCameraConfigEntry,
|
||||
async_add_entities: AddEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Trafikverket Camera binary sensor platform."""
|
||||
|
||||
coordinator: TVDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
|
||||
coordinator = entry.runtime_data
|
||||
async_add_entities(
|
||||
[
|
||||
TrafikverketCameraBinarySensor(
|
||||
|
@ -6,24 +6,24 @@ from collections.abc import Mapping
|
||||
from typing import Any
|
||||
|
||||
from homeassistant.components.camera import Camera
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import ATTR_LOCATION
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from .const import ATTR_DESCRIPTION, ATTR_TYPE, DOMAIN
|
||||
from . import TVCameraConfigEntry
|
||||
from .const import ATTR_DESCRIPTION, ATTR_TYPE
|
||||
from .coordinator import TVDataUpdateCoordinator
|
||||
from .entity import TrafikverketCameraEntity
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
entry: ConfigEntry,
|
||||
entry: TVCameraConfigEntry,
|
||||
async_add_entities: AddEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up a Trafikverket Camera."""
|
||||
|
||||
coordinator: TVDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
|
||||
coordinator = entry.runtime_data
|
||||
|
||||
async_add_entities(
|
||||
[
|
||||
|
@ -6,6 +6,7 @@ from dataclasses import dataclass
|
||||
from datetime import timedelta
|
||||
from io import BytesIO
|
||||
import logging
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from pytrafikverket.exceptions import (
|
||||
InvalidAuthentication,
|
||||
@ -15,7 +16,6 @@ from pytrafikverket.exceptions import (
|
||||
)
|
||||
from pytrafikverket.trafikverket_camera import CameraInfo, TrafikverketCamera
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import CONF_API_KEY, CONF_ID
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.exceptions import ConfigEntryAuthFailed
|
||||
@ -24,6 +24,9 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, Upda
|
||||
|
||||
from .const import DOMAIN
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from . import TVCameraConfigEntry
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
TIME_BETWEEN_UPDATES = timedelta(minutes=5)
|
||||
|
||||
@ -39,7 +42,9 @@ class CameraData:
|
||||
class TVDataUpdateCoordinator(DataUpdateCoordinator[CameraData]):
|
||||
"""A Trafikverket Data Update Coordinator."""
|
||||
|
||||
def __init__(self, hass: HomeAssistant, entry: ConfigEntry) -> None:
|
||||
config_entry: TVCameraConfigEntry
|
||||
|
||||
def __init__(self, hass: HomeAssistant) -> None:
|
||||
"""Initialize the Trafikverket coordinator."""
|
||||
super().__init__(
|
||||
hass,
|
||||
@ -48,8 +53,10 @@ class TVDataUpdateCoordinator(DataUpdateCoordinator[CameraData]):
|
||||
update_interval=TIME_BETWEEN_UPDATES,
|
||||
)
|
||||
self.session = async_get_clientsession(hass)
|
||||
self._camera_api = TrafikverketCamera(self.session, entry.data[CONF_API_KEY])
|
||||
self._id = entry.data[CONF_ID]
|
||||
self._camera_api = TrafikverketCamera(
|
||||
self.session, self.config_entry.data[CONF_API_KEY]
|
||||
)
|
||||
self._id = self.config_entry.data[CONF_ID]
|
||||
|
||||
async def _async_update_data(self) -> CameraData:
|
||||
"""Fetch data from Trafikverket."""
|
||||
|
@ -11,14 +11,13 @@ from homeassistant.components.sensor import (
|
||||
SensorEntity,
|
||||
SensorEntityDescription,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import DEGREE
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.typing import StateType
|
||||
|
||||
from .const import DOMAIN
|
||||
from .coordinator import CameraData, TVDataUpdateCoordinator
|
||||
from . import TVCameraConfigEntry
|
||||
from .coordinator import CameraData
|
||||
from .entity import TrafikverketCameraNonCameraEntity
|
||||
|
||||
PARALLEL_UPDATES = 0
|
||||
@ -73,11 +72,13 @@ SENSOR_TYPES: tuple[TVCameraSensorEntityDescription, ...] = (
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
||||
hass: HomeAssistant,
|
||||
entry: TVCameraConfigEntry,
|
||||
async_add_entities: AddEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set up Trafikverket Camera sensor platform."""
|
||||
|
||||
coordinator: TVDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
|
||||
coordinator = entry.runtime_data
|
||||
async_add_entities(
|
||||
TrafikverketCameraSensor(coordinator, entry.entry_id, description)
|
||||
for description in SENSOR_TYPES
|
||||
|
Loading…
x
Reference in New Issue
Block a user