Home Assistant Unofficial Reference 2024.12.1
siren.py
Go to the documentation of this file.
1 """Support for deCONZ siren."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from pydeconz.models.event import EventType
8 from pydeconz.models.light.siren import Siren
9 
11  ATTR_DURATION,
12  DOMAIN as SIREN_DOMAIN,
13  SirenEntity,
14  SirenEntityFeature,
15 )
16 from homeassistant.config_entries import ConfigEntry
17 from homeassistant.core import HomeAssistant, callback
18 from homeassistant.helpers.entity_platform import AddEntitiesCallback
19 
20 from .entity import DeconzDevice
21 from .hub import DeconzHub
22 
23 
25  hass: HomeAssistant,
26  config_entry: ConfigEntry,
27  async_add_entities: AddEntitiesCallback,
28 ) -> None:
29  """Set up sirens for deCONZ component."""
30  hub = DeconzHub.get_hub(hass, config_entry)
31  hub.entities[SIREN_DOMAIN] = set()
32 
33  @callback
34  def async_add_siren(_: EventType, siren_id: str) -> None:
35  """Add siren from deCONZ."""
36  siren = hub.api.lights.sirens[siren_id]
37  async_add_entities([DeconzSiren(siren, hub)])
38 
39  hub.register_platform_add_device_callback(
40  async_add_siren,
41  hub.api.lights.sirens,
42  )
43 
44 
45 class DeconzSiren(DeconzDevice[Siren], SirenEntity):
46  """Representation of a deCONZ siren."""
47 
48  TYPE = SIREN_DOMAIN
49  _attr_supported_features = (
50  SirenEntityFeature.TURN_ON
51  | SirenEntityFeature.TURN_OFF
52  | SirenEntityFeature.DURATION
53  )
54 
55  @property
56  def is_on(self) -> bool:
57  """Return true if siren is on."""
58  return self._device.is_on
59 
60  async def async_turn_on(self, **kwargs: Any) -> None:
61  """Turn on siren."""
62  if (duration := kwargs.get(ATTR_DURATION)) is not None:
63  duration *= 10
64  await self.hub.api.lights.sirens.set_state(
65  id=self._device.resource_id,
66  on=True,
67  duration=duration,
68  )
69 
70  async def async_turn_off(self, **kwargs: Any) -> None:
71  """Turn off siren."""
72  await self.hub.api.lights.sirens.set_state(
73  id=self._device.resource_id,
74  on=False,
75  )
None async_turn_on(self, **Any kwargs)
Definition: siren.py:60
None async_turn_off(self, **Any kwargs)
Definition: siren.py:70
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: siren.py:28