def test_color_xy_to_RGB(self): """Test color_xy_to_RGB.""" self.assertEqual((255, 243, 222), color_util.color_xy_to_RGB(.35, .35)) self.assertEqual((255, 0, 60), color_util.color_xy_to_RGB(1, 0)) self.assertEqual((0, 255, 0), color_util.color_xy_to_RGB(0, 1)) self.assertEqual((0, 63, 255), color_util.color_xy_to_RGB(0, 0))
def test_color_xy_to_RGB(self): """Test color_xy_to_RGB.""" assert (255, 243, 222) == \ color_util.color_xy_to_RGB(.35, .35) assert (255, 0, 60) == \ color_util.color_xy_to_RGB(1, 0) assert (0, 255, 0) == \ color_util.color_xy_to_RGB(0, 1) assert (0, 63, 255) == \ color_util.color_xy_to_RGB(0, 0)
async def async_turn_on(self, brightness: int = None, color_temp: int = None, rgb_color=None, xy_color=None, hs_color=None, effect: str = None, **kwargs) -> None: if brightness == 0: await self.async_turn_off() return if xy_color: rgb_color = color.color_xy_to_RGB(*xy_color) elif hs_color: rgb_color = color.color_hs_to_RGB(*hs_color) if brightness or color_temp or rgb_color or effect: params = self.get_params(brightness, color_temp, rgb_color, effect) else: params = None if params: # some lights can only be turned on when the lights are off if not self.is_on: await self.ewelink.send(self.device, {self.param: "on"}, query_cloud=False) await self.ewelink.send(self.device, params, { "cmd": "dimmable", **params }) else: await self.ewelink.send(self.device, {self.param: "on"})
def _light_internal_convert_color(self, color_mode: str) -> dict: data: dict[str, tuple] = {} if color_mode == COLOR_MODE_HS and self.hs_color: hs_color = self.hs_color data[ATTR_HS_COLOR] = (round(hs_color[0], 3), round(hs_color[1], 3)) data[ATTR_RGB_COLOR] = color_util.color_hs_to_RGB(*hs_color) data[ATTR_XY_COLOR] = color_util.color_hs_to_xy(*hs_color) elif color_mode == COLOR_MODE_XY and self.xy_color: xy_color = self.xy_color data[ATTR_HS_COLOR] = color_util.color_xy_to_hs(*xy_color) data[ATTR_RGB_COLOR] = color_util.color_xy_to_RGB(*xy_color) data[ATTR_XY_COLOR] = (round(xy_color[0], 6), round(xy_color[1], 6)) elif color_mode == COLOR_MODE_RGB and self.rgb_color: rgb_color = self.rgb_color data[ATTR_HS_COLOR] = color_util.color_RGB_to_hs(*rgb_color) data[ATTR_RGB_COLOR] = tuple(int(x) for x in rgb_color[0:3]) data[ATTR_XY_COLOR] = color_util.color_RGB_to_xy(*rgb_color) elif color_mode == COLOR_MODE_RGBW and self._light_internal_rgbw_color: rgbw_color = self._light_internal_rgbw_color rgb_color = color_util.color_rgbw_to_rgb(*rgbw_color) data[ATTR_HS_COLOR] = color_util.color_RGB_to_hs(*rgb_color) data[ATTR_RGB_COLOR] = tuple(int(x) for x in rgb_color[0:3]) data[ATTR_RGBW_COLOR] = tuple(int(x) for x in rgbw_color[0:4]) data[ATTR_XY_COLOR] = color_util.color_RGB_to_xy(*rgb_color) elif color_mode == COLOR_MODE_RGBWW and self.rgbww_color: rgbww_color = self.rgbww_color rgb_color = color_util.color_rgbww_to_rgb( *rgbww_color, self.min_mireds, self.max_mireds ) data[ATTR_HS_COLOR] = color_util.color_RGB_to_hs(*rgb_color) data[ATTR_RGB_COLOR] = tuple(int(x) for x in rgb_color[0:3]) data[ATTR_RGBWW_COLOR] = tuple(int(x) for x in rgbww_color[0:5]) data[ATTR_XY_COLOR] = color_util.color_RGB_to_xy(*rgb_color) return data
def test_color_xy_to_RGB(): """Test color_xy_to_RGB.""" assert color_util.color_xy_to_RGB(0.35, 0.35) == (255, 243, 222) assert color_util.color_xy_to_RGB(1, 0) == (255, 0, 60) assert color_util.color_xy_to_RGB(0, 1) == (0, 255, 0) assert color_util.color_xy_to_RGB(0, 0) == (0, 63, 255) assert color_util.color_xy_to_RGB(1, 0, GAMUT) == (255, 0, 3) assert color_util.color_xy_to_RGB(0, 1, GAMUT) == (82, 255, 0) assert color_util.color_xy_to_RGB(0, 0, GAMUT) == (9, 85, 255)
def state_attributes(self): """Return state attributes.""" if not self.is_on: return None data = {} data[ATTR_BRIGHTNESS] = self.brightness data[ATTR_COLOR_TEMP] = self.color_temp data[ATTR_XY_COLOR] = ( self._lamp_state.x_chromaticity, self._lamp_state.y_chromaticity, ) data[ATTR_HS_COLOR] = color_util.color_xy_to_hs(*data[ATTR_XY_COLOR]) data[ATTR_RGB_COLOR] = color_util.color_xy_to_RGB(*data[ATTR_XY_COLOR]) data[ATTR_WHITE_VALUE] = self.white_value return {key: val for key, val in data.items() if val is not None}
if ColorMode.RGBW in supported_color_modes: params[ATTR_RGBW_COLOR] = color_util.color_rgb_to_rgbw( *rgb_color) elif ColorMode.RGBWW in supported_color_modes: params[ATTR_RGBWW_COLOR] = color_util.color_rgb_to_rgbww( *rgb_color, light.min_mireds, light.max_mireds) elif ColorMode.HS in supported_color_modes: params[ATTR_HS_COLOR] = color_util.color_RGB_to_hs(*rgb_color) elif ColorMode.XY in supported_color_modes: params[ATTR_XY_COLOR] = color_util.color_RGB_to_xy(*rgb_color) elif ATTR_XY_COLOR in params and ColorMode.XY not in supported_color_modes: xy_color = params.pop(ATTR_XY_COLOR) if ColorMode.HS in supported_color_modes: params[ATTR_HS_COLOR] = color_util.color_xy_to_hs(*xy_color) elif ColorMode.RGB in supported_color_modes: params[ATTR_RGB_COLOR] = color_util.color_xy_to_RGB(*xy_color) elif ColorMode.RGBW in supported_color_modes: rgb_color = color_util.color_xy_to_RGB(*xy_color) params[ATTR_RGBW_COLOR] = color_util.color_rgb_to_rgbw( *rgb_color) elif ColorMode.RGBWW in supported_color_modes: rgb_color = color_util.color_xy_to_RGB(*xy_color) params[ATTR_RGBWW_COLOR] = color_util.color_rgb_to_rgbww( *rgb_color, light.min_mireds, light.max_mireds) elif ATTR_RGBW_COLOR in params and ColorMode.RGBW not in supported_color_modes: rgbw_color = params.pop(ATTR_RGBW_COLOR) rgb_color = color_util.color_rgbw_to_rgb(*rgbw_color) if ColorMode.RGB in supported_color_modes: params[ATTR_RGB_COLOR] = rgb_color elif ColorMode.RGBWW in supported_color_modes: params[ATTR_RGBWW_COLOR] = color_util.color_rgb_to_rgbww(