brightness) return # Handle switch to RGB Color Mode if rgb := kwargs.get(ATTR_RGB_COLOR): if not self._device.requires_turn_on: rgb = _min_rgb_brightness(rgb) red, green, blue = rgb await self._device.async_set_levels(red, green, blue, brightness=brightness) return # Handle switch to RGBW Color Mode if rgbw := kwargs.get(ATTR_RGBW_COLOR): if ATTR_BRIGHTNESS in kwargs: rgbw = rgbw_brightness(rgbw, brightness) rgbw = _min_rgbw_brightness(rgbw, self._device.rgbw) await self._device.async_set_levels(*rgbw) return # Handle switch to RGBWW Color Mode if rgbcw := kwargs.get(ATTR_RGBWW_COLOR): if ATTR_BRIGHTNESS in kwargs: rgbcw = rgbcw_brightness(kwargs[ATTR_RGBWW_COLOR], brightness) rgbwc = rgbcw_to_rgbwc(rgbcw) rgbwc = _min_rgbwc_brightness(rgbwc, self._device.rgbww) await self._device.async_set_levels(*rgbwc) return if (white := kwargs.get(ATTR_WHITE)) is not None: await self._device.async_set_levels(w=white) return
brightness = kwargs.get( ATTR_BRIGHTNESS, self._device.getWhiteTemperature()[1] ) cold, warm = color_temp_to_white_levels(color_temp_kelvin, brightness) await self._device.async_set_levels(r=0, b=0, g=0, w=warm, w2=cold) return # Handle switch to RGB Color Mode if ATTR_RGB_COLOR in kwargs: await self._device.async_set_levels( *kwargs[ATTR_RGB_COLOR], brightness=brightness ) return # Handle switch to RGBW Color Mode if ATTR_RGBW_COLOR in kwargs: if ATTR_BRIGHTNESS in kwargs: rgbw = rgbw_brightness(kwargs[ATTR_RGBW_COLOR], brightness) else: rgbw = kwargs[ATTR_RGBW_COLOR] await self._device.async_set_levels(*rgbw) return # Handle switch to RGBWW Color Mode if ATTR_RGBWW_COLOR in kwargs: if ATTR_BRIGHTNESS in kwargs: rgbcw = rgbcw_brightness(kwargs[ATTR_RGBWW_COLOR], brightness) else: rgbcw = kwargs[ATTR_RGBWW_COLOR] await self._device.async_set_levels(*rgbcw_to_rgbwc(rgbcw)) return if ATTR_WHITE in kwargs: await self._device.async_set_levels(w=kwargs[ATTR_WHITE]) return