1 """Support for Broadlink lights."""
6 from broadlink.exceptions
import BroadlinkException
10 ATTR_COLOR_TEMP_KELVIN,
19 from .const
import DOMAIN
20 from .entity
import BroadlinkEntity
22 _LOGGER = logging.getLogger(__name__)
24 BROADLINK_COLOR_MODE_RGB = 0
25 BROADLINK_COLOR_MODE_WHITE = 1
26 BROADLINK_COLOR_MODE_SCENES = 2
31 config_entry: ConfigEntry,
32 async_add_entities: AddEntitiesCallback,
34 """Set up the Broadlink light."""
35 device = hass.data[DOMAIN].devices[config_entry.entry_id]
38 if device.api.type
in {
"LB1",
"LB2"}:
45 """Representation of a Broadlink light."""
47 _attr_has_entity_name =
True
49 _attr_min_color_temp_kelvin = 2700
50 _attr_max_color_temp_kelvin = 6500
53 """Initialize the light."""
60 if {
"hue",
"saturation"}.issubset(data):
62 if "colortemp" in data:
70 """Update the state of the entity."""
74 if "brightness" in data:
81 if {
"hue",
"saturation"}.issubset(data):
84 if "colortemp" in data:
87 if "bulb_colormode" in data:
88 if data[
"bulb_colormode"] == BROADLINK_COLOR_MODE_RGB:
90 elif data[
"bulb_colormode"] == BROADLINK_COLOR_MODE_WHITE:
97 """Turn on the light."""
100 if ATTR_BRIGHTNESS
in kwargs:
101 brightness = kwargs[ATTR_BRIGHTNESS]
102 state[
"brightness"] = round(brightness / 2.55)
105 state[
"bulb_colormode"] = BROADLINK_COLOR_MODE_WHITE
107 elif ATTR_HS_COLOR
in kwargs:
108 hs_color = kwargs[ATTR_HS_COLOR]
109 state[
"hue"] =
int(hs_color[0])
110 state[
"saturation"] =
int(hs_color[1])
111 state[
"bulb_colormode"] = BROADLINK_COLOR_MODE_RGB
113 elif ATTR_COLOR_TEMP_KELVIN
in kwargs:
114 color_temp = kwargs[ATTR_COLOR_TEMP_KELVIN]
115 state[
"colortemp"] = color_temp
116 state[
"bulb_colormode"] = BROADLINK_COLOR_MODE_WHITE
121 """Turn off the light."""
125 """Set the state of the light."""
129 state = await device.async_request(device.api.set_state, **state)
130 except (BroadlinkException, OSError)
as err:
131 _LOGGER.error(
"Failed to set state: %s", err)
def _update_state(self, data)
_attr_supported_color_modes
None async_turn_on(self, **Any kwargs)
def __init__(self, device)
None async_turn_off(self, **Any kwargs)
def _async_set_state(self, state)
def _update_state(self, data)
set[ColorMode]|set[str]|None supported_color_modes(self)
None async_write_ha_state(self)
bool add(self, _T matcher)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)