Use runtime_data in gpslogger (#144884)

This commit is contained in:
epenet 2025-05-14 14:59:10 +02:00 committed by GitHub
parent a9238c7577
commit ef99658919
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 8 deletions

View File

@ -24,6 +24,8 @@ from .const import (
DOMAIN,
)
type GPSLoggerConfigEntry = ConfigEntry[set[str]]
PLATFORMS = [Platform.DEVICE_TRACKER]
TRACKER_UPDATE = f"{DOMAIN}_tracker_update"
@ -88,9 +90,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: GPSLoggerConfigEntry) -> bool:
"""Configure based on config entry."""
hass.data.setdefault(DOMAIN, {"devices": set()})
entry.runtime_data = set()
webhook.async_register(
hass, DOMAIN, "GPSLogger", entry.data[CONF_WEBHOOK_ID], handle_webhook
)

View File

@ -1,7 +1,6 @@
"""Support for the GPSLogger device tracking."""
from homeassistant.components.device_tracker import TrackerEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
ATTR_BATTERY_LEVEL,
ATTR_GPS_ACCURACY,
@ -15,19 +14,20 @@ 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 TRACKER_UPDATE, GPSLoggerConfigEntry
from .const import (
ATTR_ACTIVITY,
ATTR_ALTITUDE,
ATTR_DIRECTION,
ATTR_PROVIDER,
ATTR_SPEED,
DOMAIN,
)
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: GPSLoggerConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Configure a dispatcher connection based on a config entry."""
@ -35,10 +35,10 @@ async def async_setup_entry(
@callback
def _receive_data(device, gps, 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([GPSLoggerEntity(device, gps, battery, accuracy, attrs)])
@ -56,7 +56,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 = GPSLoggerEntity(dev_id, None, None, None, None)
entities.append(entity)