mirror of
https://github.com/home-assistant/core.git
synced 2025-07-28 23:57:06 +00:00
Change hass.data storage to runtime.data for Squeezebox (#146482)
This commit is contained in:
parent
c9356868f7
commit
0729b3a2f1
@ -1,7 +1,7 @@
|
|||||||
"""The Squeezebox integration."""
|
"""The Squeezebox integration."""
|
||||||
|
|
||||||
from asyncio import timeout
|
from asyncio import timeout
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass, field
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from http import HTTPStatus
|
from http import HTTPStatus
|
||||||
import logging
|
import logging
|
||||||
@ -37,8 +37,6 @@ from .const import (
|
|||||||
DISCOVERY_INTERVAL,
|
DISCOVERY_INTERVAL,
|
||||||
DISCOVERY_TASK,
|
DISCOVERY_TASK,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
KNOWN_PLAYERS,
|
|
||||||
KNOWN_SERVERS,
|
|
||||||
SERVER_MANUFACTURER,
|
SERVER_MANUFACTURER,
|
||||||
SERVER_MODEL,
|
SERVER_MODEL,
|
||||||
SERVER_MODEL_ID,
|
SERVER_MODEL_ID,
|
||||||
@ -73,6 +71,7 @@ class SqueezeboxData:
|
|||||||
|
|
||||||
coordinator: LMSStatusDataUpdateCoordinator
|
coordinator: LMSStatusDataUpdateCoordinator
|
||||||
server: Server
|
server: Server
|
||||||
|
known_player_ids: set[str] = field(default_factory=set)
|
||||||
|
|
||||||
|
|
||||||
type SqueezeboxConfigEntry = ConfigEntry[SqueezeboxData]
|
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)
|
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:
|
async def _player_discovery(now: datetime | None = None) -> None:
|
||||||
"""Discover squeezebox players by polling server."""
|
"""Discover squeezebox players by polling server."""
|
||||||
|
|
||||||
async def _discovered_player(player: Player) -> None:
|
async def _discovered_player(player: Player) -> None:
|
||||||
"""Handle a (re)discovered player."""
|
"""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()
|
await player.async_update()
|
||||||
async_dispatcher_send(
|
async_dispatcher_send(
|
||||||
hass, SIGNAL_PLAYER_REDISCOVERED, player.player_id, player.connected
|
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
|
hass, entry, player, lms.uuid
|
||||||
)
|
)
|
||||||
await player_coordinator.async_refresh()
|
await player_coordinator.async_refresh()
|
||||||
known_players.append(player.player_id)
|
entry.runtime_data.known_player_ids.add(player.player_id)
|
||||||
async_dispatcher_send(
|
async_dispatcher_send(
|
||||||
hass, SIGNAL_PLAYER_DISCOVERED, player_coordinator
|
hass, SIGNAL_PLAYER_DISCOVERED, player_coordinator
|
||||||
)
|
)
|
||||||
|
@ -4,8 +4,6 @@ CONF_HTTPS = "https"
|
|||||||
DISCOVERY_TASK = "discovery_task"
|
DISCOVERY_TASK = "discovery_task"
|
||||||
DOMAIN = "squeezebox"
|
DOMAIN = "squeezebox"
|
||||||
DEFAULT_PORT = 9000
|
DEFAULT_PORT = 9000
|
||||||
KNOWN_PLAYERS = "known_players"
|
|
||||||
KNOWN_SERVERS = "known_servers"
|
|
||||||
PLAYER_DISCOVERY_UNSUB = "player_discovery_unsub"
|
PLAYER_DISCOVERY_UNSUB = "player_discovery_unsub"
|
||||||
SENSOR_UPDATE_INTERVAL = 60
|
SENSOR_UPDATE_INTERVAL = 60
|
||||||
SERVER_MANUFACTURER = "https://lyrion.org/"
|
SERVER_MANUFACTURER = "https://lyrion.org/"
|
||||||
|
@ -60,8 +60,6 @@ from .const import (
|
|||||||
DEFAULT_VOLUME_STEP,
|
DEFAULT_VOLUME_STEP,
|
||||||
DISCOVERY_TASK,
|
DISCOVERY_TASK,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
KNOWN_PLAYERS,
|
|
||||||
KNOWN_SERVERS,
|
|
||||||
SERVER_MANUFACTURER,
|
SERVER_MANUFACTURER,
|
||||||
SERVER_MODEL,
|
SERVER_MODEL,
|
||||||
SERVER_MODEL_ID,
|
SERVER_MODEL_ID,
|
||||||
@ -316,9 +314,9 @@ class SqueezeBoxMediaPlayerEntity(SqueezeboxEntity, MediaPlayerEntity):
|
|||||||
|
|
||||||
async def async_will_remove_from_hass(self) -> None:
|
async def async_will_remove_from_hass(self) -> None:
|
||||||
"""Remove from list of known players when removed from hass."""
|
"""Remove from list of known players when removed from hass."""
|
||||||
known_servers = self.hass.data[DOMAIN][KNOWN_SERVERS]
|
self.coordinator.config_entry.runtime_data.known_player_ids.remove(
|
||||||
known_players = known_servers[self.coordinator.server_uuid][KNOWN_PLAYERS]
|
self.coordinator.player.player_id
|
||||||
known_players.remove(self.coordinator.player.player_id)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def volume_level(self) -> float | None:
|
def volume_level(self) -> float | None:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user