Partly migrate Plex to has entity name (#98841)
* Partly migrate Plex to has entity name * Use friendly name for device name * Lowercase
This commit is contained in:
parent
3f2fc2fce9
commit
ef5d9d7377
7 changed files with 34 additions and 30 deletions
|
@ -9,12 +9,9 @@ from homeassistant.helpers.device_registry import DeviceInfo
|
|||
from homeassistant.helpers.dispatcher import async_dispatcher_send
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from .const import (
|
||||
CONF_SERVER,
|
||||
CONF_SERVER_IDENTIFIER,
|
||||
DOMAIN,
|
||||
PLEX_UPDATE_PLATFORMS_SIGNAL,
|
||||
)
|
||||
from . import PlexServer
|
||||
from .const import CONF_SERVER_IDENTIFIER, DOMAIN, PLEX_UPDATE_PLATFORMS_SIGNAL
|
||||
from .helpers import get_plex_server
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
|
@ -24,22 +21,24 @@ async def async_setup_entry(
|
|||
) -> None:
|
||||
"""Set up Plex button from config entry."""
|
||||
server_id: str = config_entry.data[CONF_SERVER_IDENTIFIER]
|
||||
server_name: str = config_entry.data[CONF_SERVER]
|
||||
async_add_entities([PlexScanClientsButton(server_id, server_name)])
|
||||
plex_server = get_plex_server(hass, server_id)
|
||||
async_add_entities([PlexScanClientsButton(server_id, plex_server)])
|
||||
|
||||
|
||||
class PlexScanClientsButton(ButtonEntity):
|
||||
"""Representation of a scan_clients button entity."""
|
||||
|
||||
_attr_entity_category = EntityCategory.CONFIG
|
||||
_attr_has_entity_name = True
|
||||
_attr_translation_key = "scan_clients"
|
||||
|
||||
def __init__(self, server_id: str, server_name: str) -> None:
|
||||
def __init__(self, server_id: str, plex_server: PlexServer) -> None:
|
||||
"""Initialize a scan_clients Plex button entity."""
|
||||
self.server_id = server_id
|
||||
self._attr_name = f"Scan Clients ({server_name})"
|
||||
self._attr_unique_id = f"plex-scan_clients-{self.server_id}"
|
||||
self._attr_device_info = DeviceInfo(
|
||||
identifiers={(DOMAIN, server_id)},
|
||||
name=plex_server.friendly_name,
|
||||
manufacturer="Plex",
|
||||
)
|
||||
|
||||
|
|
|
@ -17,7 +17,6 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
|||
from .const import (
|
||||
CONF_SERVER_IDENTIFIER,
|
||||
DOMAIN,
|
||||
NAME_FORMAT,
|
||||
PLEX_UPDATE_LIBRARY_SIGNAL,
|
||||
PLEX_UPDATE_SENSOR_SIGNAL,
|
||||
)
|
||||
|
@ -71,13 +70,15 @@ async def async_setup_entry(
|
|||
class PlexSensor(SensorEntity):
|
||||
"""Representation of a Plex now playing sensor."""
|
||||
|
||||
_attr_has_entity_name = True
|
||||
_attr_name = None
|
||||
_attr_icon = "mdi:plex"
|
||||
_attr_should_poll = False
|
||||
_attr_native_unit_of_measurement = "watching"
|
||||
|
||||
def __init__(self, hass, plex_server):
|
||||
"""Initialize the sensor."""
|
||||
self._attr_icon = "mdi:plex"
|
||||
self._attr_name = NAME_FORMAT.format(plex_server.friendly_name)
|
||||
self._attr_should_poll = False
|
||||
self._attr_unique_id = f"sensor-{plex_server.machine_identifier}"
|
||||
self._attr_native_unit_of_measurement = "Watching"
|
||||
|
||||
self._server = plex_server
|
||||
self.async_refresh_sensor = Debouncer(
|
||||
|
@ -113,9 +114,6 @@ class PlexSensor(SensorEntity):
|
|||
@property
|
||||
def device_info(self) -> DeviceInfo | None:
|
||||
"""Return a device description for device registry."""
|
||||
if self.unique_id is None:
|
||||
return None
|
||||
|
||||
return DeviceInfo(
|
||||
identifiers={(DOMAIN, self._server.machine_identifier)},
|
||||
manufacturer="Plex",
|
||||
|
|
|
@ -57,6 +57,13 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"button": {
|
||||
"scan_clients": {
|
||||
"name": "Scan clients"
|
||||
}
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
"refresh_library": {
|
||||
"name": "Refresh library",
|
||||
|
|
|
@ -30,7 +30,7 @@ async def test_scan_clients_button_schedule(
|
|||
BUTTON_DOMAIN,
|
||||
SERVICE_PRESS,
|
||||
{
|
||||
ATTR_ENTITY_ID: "button.scan_clients_plex_server_1",
|
||||
ATTR_ENTITY_ID: "button.plex_server_1_scan_clients",
|
||||
},
|
||||
True,
|
||||
)
|
||||
|
|
|
@ -120,7 +120,7 @@ async def test_setup_with_photo_session(
|
|||
|
||||
await wait_for_debouncer(hass)
|
||||
|
||||
sensor = hass.states.get("sensor.plex_plex_server_1")
|
||||
sensor = hass.states.get("sensor.plex_server_1")
|
||||
assert sensor.state == "0"
|
||||
|
||||
|
||||
|
@ -142,7 +142,7 @@ async def test_setup_with_live_tv_session(
|
|||
|
||||
await wait_for_debouncer(hass)
|
||||
|
||||
sensor = hass.states.get("sensor.plex_plex_server_1")
|
||||
sensor = hass.states.get("sensor.plex_server_1")
|
||||
assert sensor.state == "1"
|
||||
|
||||
|
||||
|
@ -164,7 +164,7 @@ async def test_setup_with_transient_session(
|
|||
|
||||
await wait_for_debouncer(hass)
|
||||
|
||||
sensor = hass.states.get("sensor.plex_plex_server_1")
|
||||
sensor = hass.states.get("sensor.plex_server_1")
|
||||
assert sensor.state == "1"
|
||||
|
||||
|
||||
|
@ -186,7 +186,7 @@ async def test_setup_with_unknown_session(
|
|||
|
||||
await wait_for_debouncer(hass)
|
||||
|
||||
sensor = hass.states.get("sensor.plex_plex_server_1")
|
||||
sensor = hass.states.get("sensor.plex_server_1")
|
||||
assert sensor.state == "1"
|
||||
|
||||
|
||||
|
|
|
@ -110,7 +110,7 @@ async def test_library_sensor_values(
|
|||
mock_plex_server = await setup_plex_server()
|
||||
await wait_for_debouncer(hass)
|
||||
|
||||
activity_sensor = hass.states.get("sensor.plex_plex_server_1")
|
||||
activity_sensor = hass.states.get("sensor.plex_server_1")
|
||||
assert activity_sensor.state == "1"
|
||||
|
||||
# Ensure sensor is created as disabled
|
||||
|
|
|
@ -87,7 +87,7 @@ async def test_new_ignored_users_available(
|
|||
|
||||
await wait_for_debouncer(hass)
|
||||
|
||||
sensor = hass.states.get("sensor.plex_plex_server_1")
|
||||
sensor = hass.states.get("sensor.plex_server_1")
|
||||
assert sensor.state == str(len(active_sessions))
|
||||
|
||||
|
||||
|
@ -101,7 +101,7 @@ async def test_network_error_during_refresh(
|
|||
|
||||
await wait_for_debouncer(hass)
|
||||
|
||||
sensor = hass.states.get("sensor.plex_plex_server_1")
|
||||
sensor = hass.states.get("sensor.plex_server_1")
|
||||
assert sensor.state == str(len(active_sessions))
|
||||
|
||||
with patch("plexapi.server.PlexServer.clients", side_effect=RequestException):
|
||||
|
@ -126,7 +126,7 @@ async def test_gdm_client_failure(
|
|||
active_sessions = mock_plex_server._plex_server.sessions()
|
||||
await wait_for_debouncer(hass)
|
||||
|
||||
sensor = hass.states.get("sensor.plex_plex_server_1")
|
||||
sensor = hass.states.get("sensor.plex_server_1")
|
||||
assert sensor.state == str(len(active_sessions))
|
||||
|
||||
with patch("plexapi.server.PlexServer.clients", side_effect=RequestException):
|
||||
|
@ -146,7 +146,7 @@ async def test_mark_sessions_idle(
|
|||
|
||||
active_sessions = mock_plex_server._plex_server.sessions()
|
||||
|
||||
sensor = hass.states.get("sensor.plex_plex_server_1")
|
||||
sensor = hass.states.get("sensor.plex_server_1")
|
||||
assert sensor.state == str(len(active_sessions))
|
||||
|
||||
url = mock_plex_server.url_in_use
|
||||
|
@ -157,7 +157,7 @@ async def test_mark_sessions_idle(
|
|||
await hass.async_block_till_done()
|
||||
await wait_for_debouncer(hass)
|
||||
|
||||
sensor = hass.states.get("sensor.plex_plex_server_1")
|
||||
sensor = hass.states.get("sensor.plex_server_1")
|
||||
assert sensor.state == "0"
|
||||
|
||||
|
||||
|
@ -175,7 +175,7 @@ async def test_ignore_plex_web_client(
|
|||
await wait_for_debouncer(hass)
|
||||
|
||||
active_sessions = mock_plex_server._plex_server.sessions()
|
||||
sensor = hass.states.get("sensor.plex_plex_server_1")
|
||||
sensor = hass.states.get("sensor.plex_server_1")
|
||||
assert sensor.state == str(len(active_sessions))
|
||||
|
||||
media_players = hass.states.async_entity_ids("media_player")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue