1 """Roon event entities."""
4 from typing
import cast
13 from .const
import DOMAIN
15 _LOGGER = logging.getLogger(__name__)
20 config_entry: ConfigEntry,
21 async_add_entities: AddEntitiesCallback,
23 """Set up Roon Event from Config Entry."""
24 roon_server = hass.data[DOMAIN][config_entry.entry_id]
25 event_entities = set()
28 def async_add_roon_volume_entity(player_data):
29 """Add or update Roon event Entity."""
30 dev_id = player_data[
"dev_id"]
31 if dev_id
in event_entities:
35 event_entities.add(dev_id)
39 config_entry.async_on_unload(
41 hass,
"roon_media_player", async_add_roon_volume_entity
47 """Representation of a Roon Event entity."""
49 _attr_device_class = EventDeviceClass.BUTTON
50 _attr_event_types = [
"volume_up",
"volume_down",
"mute_toggle"]
51 _attr_translation_key =
"volume"
54 """Initialize the entity."""
57 player_name = player_data[
"display_name"]
62 dev_model = self.
_player_data_player_data[
"source_controls"][0].
get(
"display_name")
65 identifiers={(DOMAIN, self.
unique_idunique_id)},
69 name=cast(str |
None, self.
namename),
70 manufacturer=
"RoonLabs",
72 via_device=(DOMAIN, self.
_server_server.roon_id),
76 self, control_key: str, event: str, value: int
78 """Callbacks from the roon api with volume request."""
80 if event ==
"set_mute":
82 elif event ==
"set_volume":
88 _LOGGER.debug(
"Received unsupported roon volume event %s", event)
95 """Register volume hooks with the roon api."""
97 self.
_server_server.roonapi.register_volume_control(
110 """Unregister volume hooks from the roon api."""
111 self.
_server_server.roonapi.unregister_volume_control(self.
unique_idunique_id)
None _trigger_event(self, str event_type, dict[str, Any]|None event_attributes=None)
None async_will_remove_from_hass(self)
def __init__(self, server, player_data)
None _roonapi_volume_callback(self, str control_key, str event, int value)
None async_added_to_hass(self)
None schedule_update_ha_state(self, bool force_refresh=False)
str|UndefinedType|None name(self)
web.Response get(self, web.Request request, str config_key)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)