1 """Support for Z-Wave controls using the siren platform."""
3 from __future__
import annotations
7 from zwave_js_server.client
import Client
as ZwaveClient
8 from zwave_js_server.const.command_class.sound_switch
import ToneID
9 from zwave_js_server.model.driver
import Driver
14 DOMAIN
as SIREN_DOMAIN,
23 from .const
import DATA_CLIENT, DOMAIN
24 from .discovery
import ZwaveDiscoveryInfo
25 from .entity
import ZWaveBaseEntity
32 config_entry: ConfigEntry,
33 async_add_entities: AddEntitiesCallback,
35 """Set up Z-Wave Siren entity from Config Entry."""
36 client: ZwaveClient = config_entry.runtime_data[DATA_CLIENT]
39 def async_add_siren(info: ZwaveDiscoveryInfo) ->
None:
40 """Add Z-Wave siren entity."""
41 driver = client.driver
42 assert driver
is not None
43 entities: list[ZWaveBaseEntity] = []
47 config_entry.async_on_unload(
50 f
"{DOMAIN}_{config_entry.entry_id}_add_{SIREN_DOMAIN}",
57 """Representation of a Z-Wave siren entity."""
60 self, config_entry: ConfigEntry, driver: Driver, info: ZwaveDiscoveryInfo
62 """Initialize a ZwaveSirenEntity entity."""
63 super().
__init__(config_entry, driver, info)
67 for state_id, val
in self.
infoinfo.primary_value.metadata.states.items()
70 SirenEntityFeature.TURN_ON
71 | SirenEntityFeature.TURN_OFF
72 | SirenEntityFeature.VOLUME_SET
81 """Return whether device is on."""
82 if self.
infoinfo.primary_value.value
is None:
84 return bool(self.
infoinfo.primary_value.value)
87 """Turn the device on."""
88 tone_id: int |
None = kwargs.get(ATTR_TONE)
90 if (volume := kwargs.get(ATTR_VOLUME_LEVEL))
is not None:
91 options[
"volume"] = round(volume * 100)
95 self.
infoinfo.primary_value, ToneID.DEFAULT, options
102 """Turn the device off."""
str generate_name(self, bool include_value_name=False, str|None alternate_value_name=None, Sequence[str|None]|None additional_info=None, str|None name_prefix=None)
SetValueResult|None _async_set_value(self, ZwaveValue value, Any new_value, dict|None options=None, bool|None wait_for_result=None)
None __init__(self, ConfigEntry config_entry, Driver driver, ZwaveDiscoveryInfo info)
None async_turn_on(self, **Any kwargs)
None async_turn_off(self, **Any kwargs)
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)