Change hass.data storage to runtime.data for Squeezebox (#146482)

This commit is contained in:
peteS-UK 2025-07-14 20:53:53 +02:00 committed by GitHub
parent c9356868f7
commit 0729b3a2f1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 7 additions and 16 deletions

View File

@ -1,7 +1,7 @@
"""The Squeezebox integration."""
from asyncio import timeout
from dataclasses import dataclass
from dataclasses import dataclass, field
from datetime import datetime
from http import HTTPStatus
import logging
@ -37,8 +37,6 @@ from .const import (
DISCOVERY_INTERVAL,
DISCOVERY_TASK,
DOMAIN,
KNOWN_PLAYERS,
KNOWN_SERVERS,
SERVER_MANUFACTURER,
SERVER_MODEL,
SERVER_MODEL_ID,
@ -73,6 +71,7 @@ class SqueezeboxData:
coordinator: LMSStatusDataUpdateCoordinator
server: Server
known_player_ids: set[str] = field(default_factory=set)
type SqueezeboxConfigEntry = ConfigEntry[SqueezeboxData]
@ -187,16 +186,12 @@ async def async_setup_entry(hass: HomeAssistant, entry: SqueezeboxConfigEntry) -
entry.runtime_data = SqueezeboxData(coordinator=server_coordinator, server=lms)
# set up player discovery
known_servers = hass.data.setdefault(DOMAIN, {}).setdefault(KNOWN_SERVERS, {})
known_players = known_servers.setdefault(lms.uuid, {}).setdefault(KNOWN_PLAYERS, [])
async def _player_discovery(now: datetime | None = None) -> None:
"""Discover squeezebox players by polling server."""
async def _discovered_player(player: Player) -> None:
"""Handle a (re)discovered player."""
if player.player_id in known_players:
if player.player_id in entry.runtime_data.known_player_ids:
await player.async_update()
async_dispatcher_send(
hass, SIGNAL_PLAYER_REDISCOVERED, player.player_id, player.connected
@ -207,7 +202,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: SqueezeboxConfigEntry) -
hass, entry, player, lms.uuid
)
await player_coordinator.async_refresh()
known_players.append(player.player_id)
entry.runtime_data.known_player_ids.add(player.player_id)
async_dispatcher_send(
hass, SIGNAL_PLAYER_DISCOVERED, player_coordinator
)

View File

@ -4,8 +4,6 @@ CONF_HTTPS = "https"
DISCOVERY_TASK = "discovery_task"
DOMAIN = "squeezebox"
DEFAULT_PORT = 9000
KNOWN_PLAYERS = "known_players"
KNOWN_SERVERS = "known_servers"
PLAYER_DISCOVERY_UNSUB = "player_discovery_unsub"
SENSOR_UPDATE_INTERVAL = 60
SERVER_MANUFACTURER = "https://lyrion.org/"

View File

@ -60,8 +60,6 @@ from .const import (
DEFAULT_VOLUME_STEP,
DISCOVERY_TASK,
DOMAIN,
KNOWN_PLAYERS,
KNOWN_SERVERS,
SERVER_MANUFACTURER,
SERVER_MODEL,
SERVER_MODEL_ID,
@ -316,9 +314,9 @@ class SqueezeBoxMediaPlayerEntity(SqueezeboxEntity, MediaPlayerEntity):
async def async_will_remove_from_hass(self) -> None:
"""Remove from list of known players when removed from hass."""
known_servers = self.hass.data[DOMAIN][KNOWN_SERVERS]
known_players = known_servers[self.coordinator.server_uuid][KNOWN_PLAYERS]
known_players.remove(self.coordinator.player.player_id)
self.coordinator.config_entry.runtime_data.known_player_ids.remove(
self.coordinator.player.player_id
)
@property
def volume_level(self) -> float | None: