mirror of
https://github.com/home-assistant/core.git
synced 2025-07-26 06:37:52 +00:00
Fix brightness_step and brightness_step_pct via lifx.set_state (#149217)
Signed-off-by: Avi Miller <me@dje.li>
This commit is contained in:
parent
391b144033
commit
ccd22ce0d5
@ -10,6 +10,9 @@ import aiolifx_effects as aiolifx_effects_module
|
|||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.components.light import (
|
from homeassistant.components.light import (
|
||||||
|
ATTR_BRIGHTNESS,
|
||||||
|
ATTR_BRIGHTNESS_STEP,
|
||||||
|
ATTR_BRIGHTNESS_STEP_PCT,
|
||||||
ATTR_EFFECT,
|
ATTR_EFFECT,
|
||||||
ATTR_TRANSITION,
|
ATTR_TRANSITION,
|
||||||
LIGHT_TURN_ON_SCHEMA,
|
LIGHT_TURN_ON_SCHEMA,
|
||||||
@ -234,6 +237,20 @@ class LIFXLight(LIFXEntity, LightEntity):
|
|||||||
else:
|
else:
|
||||||
fade = 0
|
fade = 0
|
||||||
|
|
||||||
|
if ATTR_BRIGHTNESS_STEP in kwargs or ATTR_BRIGHTNESS_STEP_PCT in kwargs:
|
||||||
|
brightness = self.brightness if self.is_on and self.brightness else 0
|
||||||
|
|
||||||
|
if ATTR_BRIGHTNESS_STEP in kwargs:
|
||||||
|
brightness += kwargs.pop(ATTR_BRIGHTNESS_STEP)
|
||||||
|
|
||||||
|
else:
|
||||||
|
brightness_pct = round(brightness / 255 * 100)
|
||||||
|
brightness = round(
|
||||||
|
(brightness_pct + kwargs.pop(ATTR_BRIGHTNESS_STEP_PCT)) / 100 * 255
|
||||||
|
)
|
||||||
|
|
||||||
|
kwargs[ATTR_BRIGHTNESS] = max(0, min(255, brightness))
|
||||||
|
|
||||||
# These are both False if ATTR_POWER is not set
|
# These are both False if ATTR_POWER is not set
|
||||||
power_on = kwargs.get(ATTR_POWER, False)
|
power_on = kwargs.get(ATTR_POWER, False)
|
||||||
power_off = not kwargs.get(ATTR_POWER, True)
|
power_off = not kwargs.get(ATTR_POWER, True)
|
||||||
|
@ -30,6 +30,8 @@ from homeassistant.components.lifx.manager import (
|
|||||||
from homeassistant.components.light import (
|
from homeassistant.components.light import (
|
||||||
ATTR_BRIGHTNESS,
|
ATTR_BRIGHTNESS,
|
||||||
ATTR_BRIGHTNESS_PCT,
|
ATTR_BRIGHTNESS_PCT,
|
||||||
|
ATTR_BRIGHTNESS_STEP,
|
||||||
|
ATTR_BRIGHTNESS_STEP_PCT,
|
||||||
ATTR_COLOR_MODE,
|
ATTR_COLOR_MODE,
|
||||||
ATTR_COLOR_NAME,
|
ATTR_COLOR_NAME,
|
||||||
ATTR_COLOR_TEMP_KELVIN,
|
ATTR_COLOR_TEMP_KELVIN,
|
||||||
@ -1735,6 +1737,48 @@ async def test_transitions_color_bulb(hass: HomeAssistant) -> None:
|
|||||||
bulb.set_color.reset_mock()
|
bulb.set_color.reset_mock()
|
||||||
|
|
||||||
|
|
||||||
|
async def test_lifx_set_state_brightness(hass: HomeAssistant) -> None:
|
||||||
|
"""Test lifx.set_state works with brightness, brightness_pct and brightness_step."""
|
||||||
|
config_entry = MockConfigEntry(
|
||||||
|
domain=DOMAIN, data={CONF_HOST: "127.0.0.1"}, unique_id=SERIAL
|
||||||
|
)
|
||||||
|
config_entry.add_to_hass(hass)
|
||||||
|
bulb = _mocked_bulb_new_firmware()
|
||||||
|
bulb.power_level = 65535
|
||||||
|
bulb.color = [0, 0, 32768, 3500]
|
||||||
|
with (
|
||||||
|
_patch_discovery(device=bulb),
|
||||||
|
_patch_config_flow_try_connect(device=bulb),
|
||||||
|
_patch_device(device=bulb),
|
||||||
|
):
|
||||||
|
await async_setup_component(hass, lifx.DOMAIN, {lifx.DOMAIN: {}})
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
entity_id = "light.my_bulb"
|
||||||
|
|
||||||
|
# brightness_step should convert from 8 bit to 16 bit
|
||||||
|
await hass.services.async_call(
|
||||||
|
DOMAIN,
|
||||||
|
"set_state",
|
||||||
|
{ATTR_ENTITY_ID: entity_id, ATTR_BRIGHTNESS_STEP: 128},
|
||||||
|
blocking=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
assert bulb.set_color.calls[0][0][0] == [0, 0, 65535, 3500]
|
||||||
|
bulb.set_color.reset_mock()
|
||||||
|
|
||||||
|
# brightness_step_pct should convert from percentage to 16 bit
|
||||||
|
await hass.services.async_call(
|
||||||
|
DOMAIN,
|
||||||
|
"set_state",
|
||||||
|
{ATTR_ENTITY_ID: entity_id, ATTR_BRIGHTNESS_STEP_PCT: 50},
|
||||||
|
blocking=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
assert bulb.set_color.calls[0][0][0] == [0, 0, 65535, 3500]
|
||||||
|
bulb.set_color.reset_mock()
|
||||||
|
|
||||||
|
|
||||||
async def test_lifx_set_state_color(hass: HomeAssistant) -> None:
|
async def test_lifx_set_state_color(hass: HomeAssistant) -> None:
|
||||||
"""Test lifx.set_state works with color names and RGB."""
|
"""Test lifx.set_state works with color names and RGB."""
|
||||||
config_entry = MockConfigEntry(
|
config_entry = MockConfigEntry(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user