1 """Support for EZVIZ sirens."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from datetime
import datetime, timedelta
9 from pyezviz
import HTTPError, PyEzvizError, SupportExt
13 SirenEntityDescription,
24 from .const
import DATA_COORDINATOR, DOMAIN
25 from .coordinator
import EzvizDataUpdateCoordinator
26 from .entity
import EzvizBaseEntity
33 translation_key=
"siren",
38 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
40 """Set up EZVIZ sensors based on a config entry."""
41 coordinator: EzvizDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id][
47 for camera
in coordinator.data
48 for capability, value
in coordinator.data[camera][
"supportExt"].items()
49 if capability ==
str(SupportExt.SupportActiveDefense.value)
55 """Representation of a EZVIZ Siren entity."""
57 _attr_supported_features = SirenEntityFeature.TURN_ON | SirenEntityFeature.TURN_OFF
58 _attr_should_poll =
False
59 _attr_assumed_state =
True
63 coordinator: EzvizDataUpdateCoordinator,
65 description: SirenEntityDescription,
67 """Initialize the Siren."""
68 super().
__init__(coordinator, serial)
75 """Run when entity about to be added to hass."""
78 self.
_attr_is_on_attr_is_on = last_state.state == STATE_ON
84 """Turn off camera siren."""
86 result = await self.
hasshass.async_add_executor_job(
90 except (HTTPError, PyEzvizError)
as err:
92 f
"Failed to turn siren off for {self.name}"
104 """Turn on camera siren."""
106 result = self.
hasshass.async_add_executor_job(
110 except (HTTPError, PyEzvizError)
as err:
112 f
"Failed to turn siren on for {self.name}"
128 """Switch device off after a delay.
130 Camera firmware has hard coded turn off after 60 seconds.
None off_delay_listener(self, datetime now)
None __init__(self, EzvizDataUpdateCoordinator coordinator, str serial, SirenEntityDescription description)
None async_turn_off(self, **Any kwargs)
None async_turn_on(self, **Any kwargs)
None async_added_to_hass(self)
None async_write_ha_state(self)
State|None async_get_last_state(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)