Migrate traccar to config entry runtime data (#177393)

This commit is contained in:
Martin
2026-08-25 09:58:27 +02:00
committed by GitHub
parent 1731278d86
commit 4eb854ee51
2 changed files with 11 additions and 15 deletions
+5 -5
View File
@@ -1,5 +1,4 @@
"""Support for Traccar Client."""
# pylint: disable=home-assistant-use-runtime-data # Uses legacy hass.data[DOMAIN] pattern
from http import HTTPStatus
from json import JSONDecodeError
@@ -32,6 +31,8 @@ PLATFORMS = [Platform.DEVICE_TRACKER]
TRACKER_UPDATE = f"{DOMAIN}_tracker_update"
type TraccarConfigEntry = ConfigEntry[set[str]]
LOGGER = logging.getLogger(__name__)
DEFAULT_ACCURACY = 200
@@ -121,9 +122,9 @@ async def handle_webhook(
return web.Response(text=f"Setting location for {device}")
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_setup_entry(hass: HomeAssistant, entry: TraccarConfigEntry) -> bool:
"""Configure based on config entry."""
hass.data.setdefault(DOMAIN, {"devices": set(), "unsub_device_tracker": {}})
entry.runtime_data = set()
webhook.async_register(
hass, DOMAIN, "Traccar", entry.data[CONF_WEBHOOK_ID], handle_webhook
)
@@ -132,10 +133,9 @@ 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: TraccarConfigEntry) -> bool:
"""Unload a config entry."""
webhook.async_unregister(hass, entry.data[CONF_WEBHOOK_ID])
hass.data[DOMAIN]["unsub_device_tracker"].pop(entry.entry_id)()
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
@@ -1,5 +1,4 @@
"""Support for Traccar device tracking."""
# pylint: disable=home-assistant-use-runtime-data # Uses legacy hass.data[DOMAIN] pattern
from datetime import timedelta
import logging
@@ -9,7 +8,6 @@ from homeassistant.components.device_tracker import (
TrackerEntity,
TrackerEntityStateAttribute,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_BATTERY_LEVEL, EntityStateAttribute
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers import device_registry as dr
@@ -18,7 +16,7 @@ from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from homeassistant.helpers.restore_state import RestoreEntity
from . import DOMAIN, TRACKER_UPDATE
from . import DOMAIN, TRACKER_UPDATE, TraccarConfigEntry
from .const import (
ATTR_ALTITUDE,
ATTR_BEARING,
@@ -70,7 +68,7 @@ EVENTS = [
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: TraccarConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Configure a dispatcher connection based on a config entry."""
@@ -78,18 +76,16 @@ async def async_setup_entry(
@callback
def _receive_data(device, latitude, longitude, battery, accuracy, attrs):
"""Receive set location."""
if device in hass.data[DOMAIN]["devices"]:
if device in entry.runtime_data:
return
hass.data[DOMAIN]["devices"].add(device)
entry.runtime_data.add(device)
async_add_entities(
[TraccarEntity(device, latitude, longitude, battery, accuracy, attrs)]
)
hass.data[DOMAIN]["unsub_device_tracker"][entry.entry_id] = (
async_dispatcher_connect(hass, TRACKER_UPDATE, _receive_data)
)
entry.async_on_unload(async_dispatcher_connect(hass, TRACKER_UPDATE, _receive_data))
# Restore previously loaded devices
dev_reg = dr.async_get(hass)
@@ -103,7 +99,7 @@ async def async_setup_entry(
entities = []
for dev_id in dev_ids:
hass.data[DOMAIN]["devices"].add(dev_id)
entry.runtime_data.add(dev_id)
entity = TraccarEntity(dev_id, None, None, None, None, None)
entities.append(entity)