Home Assistant Unofficial Reference 2024.12.1
switch.py
Go to the documentation of this file.
1 """The switch entities for musiccast."""
2 
3 from typing import Any
4 
5 from aiomusiccast.capabilities import BinarySetter
6 
7 from homeassistant.components.switch import SwitchEntity
8 from homeassistant.config_entries import ConfigEntry
9 from homeassistant.core import HomeAssistant
10 from homeassistant.helpers.entity_platform import AddEntitiesCallback
11 
12 from .const import DOMAIN
13 from .coordinator import MusicCastDataUpdateCoordinator
14 from .entity import MusicCastCapabilityEntity
15 
16 
18  hass: HomeAssistant,
19  entry: ConfigEntry,
20  async_add_entities: AddEntitiesCallback,
21 ) -> None:
22  """Set up MusicCast sensor based on a config entry."""
23  coordinator: MusicCastDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
24 
25  switch_entities = [
26  SwitchCapability(coordinator, capability)
27  for capability in coordinator.data.capabilities
28  if isinstance(capability, BinarySetter)
29  ]
30 
31  switch_entities.extend(
32  SwitchCapability(coordinator, capability, zone)
33  for zone, data in coordinator.data.zones.items()
34  for capability in data.capabilities
35  if isinstance(capability, BinarySetter)
36  )
37 
38  async_add_entities(switch_entities)
39 
40 
42  """Representation of a MusicCast switch entity."""
43 
44  capability: BinarySetter
45 
46  @property
47  def is_on(self) -> bool:
48  """Return the current status."""
49  return self.capabilitycapability.current
50 
51  async def async_turn_on(self, **kwargs: Any) -> None:
52  """Turn on the capability."""
53  await self.capabilitycapability.set(True)
54 
55  async def async_turn_off(self, **kwargs: Any) -> None:
56  """Turn off the capability."""
57  await self.capabilitycapability.set(False)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: switch.py:21