Home Assistant Unofficial Reference 2024.12.1
button.py
Go to the documentation of this file.
1 """Representation of Plex buttons."""
2 
3 from __future__ import annotations
4 
5 from homeassistant.components.button import ButtonEntity
6 from homeassistant.config_entries import ConfigEntry
7 from homeassistant.const import EntityCategory
8 from homeassistant.core import HomeAssistant
9 from homeassistant.helpers.device_registry import DeviceInfo
10 from homeassistant.helpers.dispatcher import async_dispatcher_send
11 from homeassistant.helpers.entity_platform import AddEntitiesCallback
12 
13 from . import PlexServer
14 from .const import CONF_SERVER_IDENTIFIER, DOMAIN, PLEX_UPDATE_PLATFORMS_SIGNAL
15 from .helpers import get_plex_server
16 
17 
19  hass: HomeAssistant,
20  config_entry: ConfigEntry,
21  async_add_entities: AddEntitiesCallback,
22 ) -> None:
23  """Set up Plex button from config entry."""
24  server_id: str = config_entry.data[CONF_SERVER_IDENTIFIER]
25  plex_server = get_plex_server(hass, server_id)
26  async_add_entities([PlexScanClientsButton(server_id, plex_server)])
27 
28 
30  """Representation of a scan_clients button entity."""
31 
32  _attr_entity_category = EntityCategory.CONFIG
33  _attr_has_entity_name = True
34  _attr_translation_key = "scan_clients"
35 
36  def __init__(self, server_id: str, plex_server: PlexServer) -> None:
37  """Initialize a scan_clients Plex button entity."""
38  self.server_idserver_id = server_id
39  self._attr_unique_id_attr_unique_id = f"plex-scan_clients-{self.server_id}"
40  self._attr_device_info_attr_device_info = DeviceInfo(
41  identifiers={(DOMAIN, server_id)},
42  name=plex_server.friendly_name,
43  manufacturer="Plex",
44  )
45 
46  async def async_press(self) -> None:
47  """Press the button."""
49  self.hasshass, PLEX_UPDATE_PLATFORMS_SIGNAL.format(self.server_idserver_id)
50  )
None __init__(self, str server_id, PlexServer plex_server)
Definition: button.py:36
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: button.py:22
PlexServer get_plex_server(HomeAssistant hass, str server_id)
Definition: helpers.py:34
None async_dispatcher_send(HomeAssistant hass, str signal, *Any args)
Definition: dispatcher.py:193