1 """Support for EZVIZ select controls."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
7 from pyezviz.constants
import DeviceSwitchType, SoundMode
8 from pyezviz.exceptions
import HTTPError, PyEzvizError
17 from .const
import DATA_COORDINATOR, DOMAIN
18 from .coordinator
import EzvizDataUpdateCoordinator
19 from .entity
import EzvizEntity
24 @dataclass(frozen=True, kw_only=True)
26 """Describe a EZVIZ Select entity."""
32 key=
"alarm_sound_mod",
33 translation_key=
"alarm_sound_mode",
34 entity_category=EntityCategory.CONFIG,
35 options=[
"soft",
"intensive",
"silent"],
36 supported_switch=DeviceSwitchType.ALARM_TONE.value,
41 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
43 """Set up EZVIZ select entities based on a config entry."""
44 coordinator: EzvizDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id][
50 for camera
in coordinator.data
51 for switch
in coordinator.data[camera][
"switches"]
52 if switch == SELECT_TYPE.supported_switch
57 """Representation of a EZVIZ select entity."""
61 coordinator: EzvizDataUpdateCoordinator,
64 """Initialize the sensor."""
65 super().
__init__(coordinator, serial)
71 """Return the selected entity option to represent the entity state."""
72 sound_mode_value = getattr(
75 if sound_mode_value
in [0, 1, 2]:
76 return self.
optionsoptions[sound_mode_value]
81 """Change the selected option."""
82 sound_mode_value = self.
optionsoptions.index(option)
85 self.coordinator.ezviz_client.alarm_sound(self.
_serial_serial, sound_mode_value, 1)
87 except (HTTPError, PyEzvizError)
as err:
89 f
"Cannot set Warning sound level for {self.entity_id}"
dict[str, Any] data(self)
None select_option(self, str option)
str|None current_option(self)
None __init__(self, EzvizDataUpdateCoordinator coordinator, str serial)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)