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 async def async_set_custom_effect(self, colors: list[tuple[int, int, int]], speed_pct: int, transition: str) -> None: """Set a custom effect on the bulb.""" await self._device.async_set_custom_pattern( colors, speed_pct, transition, )
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 if ATTR_EFFECT in kwargs: effect = kwargs[ATTR_EFFECT] # Random color effect if effect == EFFECT_RANDOM: await self._device.async_set_levels( random.randint(0, 255), random.randint(0, 255), random.randint(0, 255), ) return # Custom effect