1 """Support for Axis lights."""
3 from dataclasses
import dataclass
6 from axis.models.event
import Event, EventTopic
12 LightEntityDescription,
17 from .
import AxisConfigEntry
18 from .entity
import TOPIC_TO_EVENT_TYPE, AxisEventDescription, AxisEventEntity
19 from .hub
import AxisHub
24 """Provide Axis light entity name."""
25 event_type = TOPIC_TO_EVENT_TYPE[event.topic_base]
26 light_id = f
"led{event.id}"
27 light_type = hub.api.vapix.light_control[light_id].light_type
28 return f
"{light_type} {event_type} {event.id}"
31 @dataclass(frozen=True, kw_only=True)
33 """Axis light entity description."""
36 ENTITY_DESCRIPTIONS = (
38 key=
"Light state control",
39 event_topic=EventTopic.LIGHT_STATUS,
40 name_fn=light_name_fn,
41 supported_fn=
lambda hub, event: len(hub.api.vapix.light_control) > 0,
48 config_entry: AxisConfigEntry,
49 async_add_entities: AddEntitiesCallback,
51 """Set up the Axis light platform."""
52 config_entry.runtime_data.entity_loader.register_platform(
53 async_add_entities, AxisLight, ENTITY_DESCRIPTIONS
58 """Representation of an Axis light."""
60 entity_description: AxisLightDescription
62 _attr_should_poll =
True
63 _attr_color_mode = ColorMode.BRIGHTNESS
64 _attr_supported_color_modes = {ColorMode.BRIGHTNESS}
67 self, hub: AxisHub, description: AxisLightDescription, event: Event
69 """Initialize the Axis light."""
70 super().
__init__(hub, description, event)
78 """Subscribe lights events."""
81 await self.
hubhub.api.vapix.light_control.get_current_intensity(self.
_light_id_light_id)
84 await self.
hubhub.api.vapix.light_control.get_valid_intensity(self.
_light_id_light_id)
89 """Update light state."""
95 """Return the brightness of this light between 0..255."""
100 if not self.
is_onis_on:
101 await self.
hubhub.api.vapix.light_control.activate_light(self.
_light_id_light_id)
103 if ATTR_BRIGHTNESS
in kwargs:
104 intensity =
int((kwargs[ATTR_BRIGHTNESS] / 255) * self.
max_intensitymax_intensity)
105 await self.
hubhub.api.vapix.light_control.set_manual_intensity(
110 """Turn off light."""
112 await self.
hubhub.api.vapix.light_control.deactivate_light(self.
_light_id_light_id)
115 """Update brightness."""
117 await self.
hubhub.api.vapix.light_control.get_current_intensity(self.
_light_id_light_id)
None __init__(self, AxisHub hub, AxisLightDescription description, Event event)
None async_turn_off(self, **Any kwargs)
None async_event_callback(self, Event event)
None async_turn_on(self, **Any kwargs)
None async_added_to_hass(self)
None async_write_ha_state(self)
None async_setup_entry(HomeAssistant hass, AxisConfigEntry config_entry, AddEntitiesCallback async_add_entities)
str light_name_fn(AxisHub hub, Event event)