1 """Support for ZHA sirens."""
3 from __future__
import annotations
8 from zha.application.const
import (
9 WARNING_DEVICE_MODE_BURGLAR,
10 WARNING_DEVICE_MODE_EMERGENCY,
11 WARNING_DEVICE_MODE_EMERGENCY_PANIC,
12 WARNING_DEVICE_MODE_FIRE,
13 WARNING_DEVICE_MODE_FIRE_PANIC,
14 WARNING_DEVICE_MODE_POLICE_PANIC,
16 from zha.application.platforms.siren
import SirenEntityFeature
as ZHASirenEntityFeature
31 from .entity
import ZHAEntity
32 from .helpers
import (
35 async_add_entities
as zha_async_add_entities,
36 convert_zha_error_to_ha_error,
43 config_entry: ConfigEntry,
44 async_add_entities: AddEntitiesCallback,
46 """Set up the Zigbee Home Automation siren from config entry."""
48 entities_to_create = zha_data.platforms[Platform.SIREN]
54 zha_async_add_entities, async_add_entities, ZHASiren, entities_to_create
57 config_entry.async_on_unload(unsub)
61 """Representation of a ZHA siren."""
63 _attr_available_tones: list[int | str] | dict[int, str] |
None = {
64 WARNING_DEVICE_MODE_BURGLAR:
"Burglar",
65 WARNING_DEVICE_MODE_FIRE:
"Fire",
66 WARNING_DEVICE_MODE_EMERGENCY:
"Emergency",
67 WARNING_DEVICE_MODE_POLICE_PANIC:
"Police Panic",
68 WARNING_DEVICE_MODE_FIRE_PANIC:
"Fire Panic",
69 WARNING_DEVICE_MODE_EMERGENCY_PANIC:
"Emergency Panic",
72 def __init__(self, entity_data: EntityData, **kwargs: Any) ->
None:
73 """Initialize the ZHA siren."""
74 super().
__init__(entity_data, **kwargs)
77 zha_features: ZHASirenEntityFeature = self.entity_data.entity.supported_features
79 if ZHASirenEntityFeature.TURN_ON
in zha_features:
80 features |= SirenEntityFeature.TURN_ON
81 if ZHASirenEntityFeature.TURN_OFF
in zha_features:
82 features |= SirenEntityFeature.TURN_OFF
83 if ZHASirenEntityFeature.TONES
in zha_features:
84 features |= SirenEntityFeature.TONES
85 if ZHASirenEntityFeature.VOLUME_SET
in zha_features:
86 features |= SirenEntityFeature.VOLUME_SET
87 if ZHASirenEntityFeature.DURATION
in zha_features:
88 features |= SirenEntityFeature.DURATION
94 """Return True if entity is on."""
95 return self.entity_data.entity.is_on
97 @convert_zha_error_to_ha_error
100 await self.entity_data.entity.async_turn_on(
101 duration=kwargs.get(ATTR_DURATION),
102 tone=kwargs.get(ATTR_TONE),
103 volume_level=kwargs.get(ATTR_VOLUME_LEVEL),
107 @convert_zha_error_to_ha_error
109 """Turn off siren."""
110 await self.entity_data.entity.async_turn_off()
None __init__(self, EntityData entity_data, **Any kwargs)
None async_turn_off(self, **Any kwargs)
None async_turn_on(self, **Any kwargs)
None async_write_ha_state(self)
HAZHAData get_zha_data(HomeAssistant hass)
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)