# Handle switch to CCT Color Mode if ATTR_COLOR_TEMP in kwargs: color_temp_mired = kwargs[ATTR_COLOR_TEMP] color_temp_kelvin = color_temperature_mired_to_kelvin(color_temp_mired) if self.color_mode != COLOR_MODE_RGBWW: await self._device.async_set_white_temp(color_temp_kelvin, brightness) return # When switching to color temp from RGBWW mode, # we do not want the overall brightness, we only # want the brightness of the white channels 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)
await self._async_set_effect(effect, brightness) return # Handle switch to CCT Color Mode if color_temp_mired := kwargs.get(ATTR_COLOR_TEMP): color_temp_kelvin = color_temperature_mired_to_kelvin(color_temp_mired) if self.color_mode != COLOR_MODE_RGBWW: await self._device.async_set_white_temp(color_temp_kelvin, brightness) return # When switching to color temp from RGBWW mode, # we do not want the overall brightness, we only # want the brightness of the white channels brightness = kwargs.get( ATTR_BRIGHTNESS, self._device.getWhiteTemperature()[1] ) channels = color_temp_to_white_levels(color_temp_kelvin, brightness) warm = channels.warm_white cold = channels.cool_white await self._device.async_set_levels(r=0, b=0, g=0, w=warm, w2=cold) return # Handle switch to RGB Color Mode if rgb := kwargs.get(ATTR_RGB_COLOR): 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) await self._device.async_set_levels(*rgbw) return