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