1 """Support for Blink Motion detection switches."""
3 from __future__
import annotations
10 SwitchEntityDescription,
18 from .const
import DEFAULT_BRAND, DOMAIN, TYPE_CAMERA_ARMED
19 from .coordinator
import BlinkConfigEntry, BlinkUpdateCoordinator
21 SWITCH_TYPES: tuple[SwitchEntityDescription, ...] = (
23 key=TYPE_CAMERA_ARMED,
24 translation_key=
"camera_motion",
25 device_class=SwitchDeviceClass.SWITCH,
32 config_entry: BlinkConfigEntry,
33 async_add_entities: AddEntitiesCallback,
35 """Set up the Blink switches."""
36 coordinator = config_entry.runtime_data
40 for camera
in coordinator.api.cameras
41 for description
in SWITCH_TYPES
46 """Representation of a Blink motion detection switch."""
48 _attr_has_entity_name =
True
52 coordinator: BlinkUpdateCoordinator,
54 description: SwitchEntityDescription,
56 """Initialize the switch."""
58 self.
_camera_camera = coordinator.api.cameras[camera]
60 serial = self.
_camera_camera.serial
63 identifiers={(DOMAIN, serial)},
66 manufacturer=DEFAULT_BRAND,
67 model=self.
_camera_camera.camera_type,
71 """Turn the switch on."""
73 await self.
_camera_camera.async_arm(
True)
75 except TimeoutError
as er:
77 translation_domain=DOMAIN,
78 translation_key=
"failed_arm_motion",
84 """Turn the switch off."""
86 await self.
_camera_camera.async_arm(
False)
88 except TimeoutError
as er:
90 translation_domain=DOMAIN,
91 translation_key=
"failed_disarm_motion",
98 """Return if Camera Motion is enabled."""
99 return self.
_camera_camera.motion_enabled
None async_turn_off(self, **Any kwargs)
None async_turn_on(self, **Any kwargs)
None __init__(self, BlinkUpdateCoordinator coordinator, camera, SwitchEntityDescription description)
None async_setup_entry(HomeAssistant hass, BlinkConfigEntry config_entry, AddEntitiesCallback async_add_entities)