mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 12:47:08 +00:00
Fix setting brightness to 0 in HomeKit when the On characteristic is not sent (#129201)
This commit is contained in:
parent
2c8fc67ab1
commit
3b458738e0
@ -171,8 +171,9 @@ class Light(HomeAccessory):
|
|||||||
events = []
|
events = []
|
||||||
service = SERVICE_TURN_ON
|
service = SERVICE_TURN_ON
|
||||||
params: dict[str, Any] = {ATTR_ENTITY_ID: self.entity_id}
|
params: dict[str, Any] = {ATTR_ENTITY_ID: self.entity_id}
|
||||||
|
has_on = CHAR_ON in char_values
|
||||||
|
|
||||||
if CHAR_ON in char_values:
|
if has_on:
|
||||||
if not char_values[CHAR_ON]:
|
if not char_values[CHAR_ON]:
|
||||||
service = SERVICE_TURN_OFF
|
service = SERVICE_TURN_OFF
|
||||||
events.append(f"Set state to {char_values[CHAR_ON]}")
|
events.append(f"Set state to {char_values[CHAR_ON]}")
|
||||||
@ -180,7 +181,10 @@ class Light(HomeAccessory):
|
|||||||
brightness_pct = None
|
brightness_pct = None
|
||||||
if CHAR_BRIGHTNESS in char_values:
|
if CHAR_BRIGHTNESS in char_values:
|
||||||
if char_values[CHAR_BRIGHTNESS] == 0:
|
if char_values[CHAR_BRIGHTNESS] == 0:
|
||||||
|
if has_on:
|
||||||
events[-1] = "Set state to 0"
|
events[-1] = "Set state to 0"
|
||||||
|
else:
|
||||||
|
events.append("Set state to 0")
|
||||||
service = SERVICE_TURN_OFF
|
service = SERVICE_TURN_OFF
|
||||||
else:
|
else:
|
||||||
brightness_pct = char_values[CHAR_BRIGHTNESS]
|
brightness_pct = char_values[CHAR_BRIGHTNESS]
|
||||||
|
@ -226,6 +226,24 @@ async def test_light_brightness(
|
|||||||
assert len(events) == 3
|
assert len(events) == 3
|
||||||
assert events[-1].data[ATTR_VALUE] == f"Set state to 0, brightness at 0{PERCENTAGE}"
|
assert events[-1].data[ATTR_VALUE] == f"Set state to 0, brightness at 0{PERCENTAGE}"
|
||||||
|
|
||||||
|
hk_driver.set_characteristics(
|
||||||
|
{
|
||||||
|
HAP_REPR_CHARS: [
|
||||||
|
{
|
||||||
|
HAP_REPR_AID: acc.aid,
|
||||||
|
HAP_REPR_IID: char_brightness_iid,
|
||||||
|
HAP_REPR_VALUE: 0,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"mock_addr",
|
||||||
|
)
|
||||||
|
await _wait_for_light_coalesce(hass)
|
||||||
|
assert call_turn_off
|
||||||
|
assert call_turn_off[0].data[ATTR_ENTITY_ID] == entity_id
|
||||||
|
assert len(events) == 4
|
||||||
|
assert events[-1].data[ATTR_VALUE] == f"Set state to 0, brightness at 0{PERCENTAGE}"
|
||||||
|
|
||||||
# 0 is a special case for homekit, see "Handle Brightness"
|
# 0 is a special case for homekit, see "Handle Brightness"
|
||||||
# in update_state
|
# in update_state
|
||||||
hass.states.async_set(
|
hass.states.async_set(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user