mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 04:07:08 +00:00
Fix snapcast uuid to be more unique (#14925)
Current uuid is ok when using only 1 snapserver New uuid is needed when using multiple snapserver Because the client can connect to more snapservers and then uuid based on client MAC is not enough
This commit is contained in:
parent
6755ae2605
commit
89d008d1f3
@ -80,8 +80,11 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
|
||||
host, port)
|
||||
return
|
||||
|
||||
groups = [SnapcastGroupDevice(group) for group in server.groups]
|
||||
clients = [SnapcastClientDevice(client) for client in server.clients]
|
||||
# Note: Host part is needed, when using multiple snapservers
|
||||
hpid = '{}:{}'.format(host, port)
|
||||
|
||||
groups = [SnapcastGroupDevice(group, hpid) for group in server.groups]
|
||||
clients = [SnapcastClientDevice(client, hpid) for client in server.clients]
|
||||
devices = groups + clients
|
||||
hass.data[DATA_KEY] = devices
|
||||
async_add_devices(devices)
|
||||
@ -90,10 +93,12 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
|
||||
class SnapcastGroupDevice(MediaPlayerDevice):
|
||||
"""Representation of a Snapcast group device."""
|
||||
|
||||
def __init__(self, group):
|
||||
def __init__(self, group, uid_part):
|
||||
"""Initialize the Snapcast group device."""
|
||||
group.set_callback(self.schedule_update_ha_state)
|
||||
self._group = group
|
||||
self._uid = '{}{}_{}'.format(GROUP_PREFIX, uid_part,
|
||||
self._group.identifier)
|
||||
|
||||
@property
|
||||
def state(self):
|
||||
@ -107,7 +112,7 @@ class SnapcastGroupDevice(MediaPlayerDevice):
|
||||
@property
|
||||
def unique_id(self):
|
||||
"""Return the ID of snapcast group."""
|
||||
return '{}{}'.format(GROUP_PREFIX, self._group.identifier)
|
||||
return self._uid
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
@ -185,15 +190,21 @@ class SnapcastGroupDevice(MediaPlayerDevice):
|
||||
class SnapcastClientDevice(MediaPlayerDevice):
|
||||
"""Representation of a Snapcast client device."""
|
||||
|
||||
def __init__(self, client):
|
||||
def __init__(self, client, uid_part):
|
||||
"""Initialize the Snapcast client device."""
|
||||
client.set_callback(self.schedule_update_ha_state)
|
||||
self._client = client
|
||||
self._uid = '{}{}_{}'.format(CLIENT_PREFIX, uid_part,
|
||||
self._client.identifier)
|
||||
|
||||
@property
|
||||
def unique_id(self):
|
||||
"""Return the ID of this snapcast client."""
|
||||
return '{}{}'.format(CLIENT_PREFIX, self._client.identifier)
|
||||
"""
|
||||
Return the ID of this snapcast client.
|
||||
|
||||
Note: Host part is needed, when using multiple snapservers
|
||||
"""
|
||||
return self._uid
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user