mirror of
https://github.com/home-assistant/core.git
synced 2025-07-17 10:17:09 +00:00
Clean up zwave_js RGB code (#54336)
This commit is contained in:
parent
1c7891fbee
commit
188919f079
@ -287,39 +287,14 @@ class ZwaveLight(ZWaveBaseEntity, LightEntity):
|
|||||||
else:
|
else:
|
||||||
zwave_transition = {TRANSITION_DURATION: "default"}
|
zwave_transition = {TRANSITION_DURATION: "default"}
|
||||||
|
|
||||||
if combined_color_val and isinstance(combined_color_val.value, dict):
|
colors_dict = {}
|
||||||
colors_dict = {}
|
|
||||||
for color, value in colors.items():
|
|
||||||
color_name = MULTI_COLOR_MAP[color]
|
|
||||||
colors_dict[color_name] = value
|
|
||||||
# set updated color object
|
|
||||||
await self.info.node.async_set_value(
|
|
||||||
combined_color_val, colors_dict, zwave_transition
|
|
||||||
)
|
|
||||||
return
|
|
||||||
|
|
||||||
# fallback to setting the color(s) one by one if multicolor fails
|
|
||||||
# not sure this is needed at all, but just in case
|
|
||||||
for color, value in colors.items():
|
for color, value in colors.items():
|
||||||
await self._async_set_color(color, value)
|
color_name = MULTI_COLOR_MAP[color]
|
||||||
|
colors_dict[color_name] = value
|
||||||
async def _async_set_color(
|
# set updated color object
|
||||||
self,
|
await self.info.node.async_set_value(
|
||||||
color: ColorComponent,
|
combined_color_val, colors_dict, zwave_transition
|
||||||
new_value: int,
|
|
||||||
transition: dict[str, str] | None = None,
|
|
||||||
) -> None:
|
|
||||||
"""Set defined color to given value."""
|
|
||||||
# actually set the new color value
|
|
||||||
target_zwave_value = self.get_zwave_value(
|
|
||||||
"targetColor",
|
|
||||||
CommandClass.SWITCH_COLOR,
|
|
||||||
value_property_key=color.value,
|
|
||||||
)
|
)
|
||||||
if target_zwave_value is None:
|
|
||||||
# guard for unsupported color
|
|
||||||
return
|
|
||||||
await self.info.node.async_set_value(target_zwave_value, new_value, transition)
|
|
||||||
|
|
||||||
async def _async_set_brightness(
|
async def _async_set_brightness(
|
||||||
self, brightness: int | None, transition: float | None = None
|
self, brightness: int | None, transition: float | None = None
|
||||||
|
@ -223,58 +223,23 @@ async def test_light(hass, client, bulb_6_multi_color, integration):
|
|||||||
blocking=True,
|
blocking=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(client.async_send_command.call_args_list) == 6
|
assert len(client.async_send_command.call_args_list) == 2
|
||||||
warm_args = client.async_send_command.call_args_list[0][0][0] # red 255
|
args = client.async_send_command.call_args_list[0][0][0]
|
||||||
assert warm_args["command"] == "node.set_value"
|
assert args["command"] == "node.set_value"
|
||||||
assert warm_args["nodeId"] == 39
|
assert args["nodeId"] == 39
|
||||||
assert warm_args["valueId"]["commandClassName"] == "Color Switch"
|
assert args["valueId"]["commandClassName"] == "Color Switch"
|
||||||
assert warm_args["valueId"]["commandClass"] == 51
|
assert args["valueId"]["commandClass"] == 51
|
||||||
assert warm_args["valueId"]["endpoint"] == 0
|
assert args["valueId"]["endpoint"] == 0
|
||||||
assert warm_args["valueId"]["metadata"]["label"] == "Target value (Red)"
|
assert args["valueId"]["metadata"]["label"] == "Target Color"
|
||||||
assert warm_args["valueId"]["property"] == "targetColor"
|
assert args["valueId"]["property"] == "targetColor"
|
||||||
assert warm_args["valueId"]["propertyName"] == "targetColor"
|
assert args["valueId"]["propertyName"] == "targetColor"
|
||||||
assert warm_args["value"] == 255
|
assert args["value"] == {
|
||||||
|
"blue": 255,
|
||||||
cold_args = client.async_send_command.call_args_list[1][0][0] # green 76
|
"coldWhite": 0,
|
||||||
assert cold_args["command"] == "node.set_value"
|
"green": 76,
|
||||||
assert cold_args["nodeId"] == 39
|
"red": 255,
|
||||||
assert cold_args["valueId"]["commandClassName"] == "Color Switch"
|
"warmWhite": 0,
|
||||||
assert cold_args["valueId"]["commandClass"] == 51
|
}
|
||||||
assert cold_args["valueId"]["endpoint"] == 0
|
|
||||||
assert cold_args["valueId"]["metadata"]["label"] == "Target value (Green)"
|
|
||||||
assert cold_args["valueId"]["property"] == "targetColor"
|
|
||||||
assert cold_args["valueId"]["propertyName"] == "targetColor"
|
|
||||||
assert cold_args["value"] == 76
|
|
||||||
red_args = client.async_send_command.call_args_list[2][0][0] # blue 255
|
|
||||||
assert red_args["command"] == "node.set_value"
|
|
||||||
assert red_args["nodeId"] == 39
|
|
||||||
assert red_args["valueId"]["commandClassName"] == "Color Switch"
|
|
||||||
assert red_args["valueId"]["commandClass"] == 51
|
|
||||||
assert red_args["valueId"]["endpoint"] == 0
|
|
||||||
assert red_args["valueId"]["metadata"]["label"] == "Target value (Blue)"
|
|
||||||
assert red_args["valueId"]["property"] == "targetColor"
|
|
||||||
assert red_args["valueId"]["propertyName"] == "targetColor"
|
|
||||||
assert red_args["value"] == 255
|
|
||||||
green_args = client.async_send_command.call_args_list[3][0][0] # warm white 0
|
|
||||||
assert green_args["command"] == "node.set_value"
|
|
||||||
assert green_args["nodeId"] == 39
|
|
||||||
assert green_args["valueId"]["commandClassName"] == "Color Switch"
|
|
||||||
assert green_args["valueId"]["commandClass"] == 51
|
|
||||||
assert green_args["valueId"]["endpoint"] == 0
|
|
||||||
assert green_args["valueId"]["metadata"]["label"] == "Target value (Warm White)"
|
|
||||||
assert green_args["valueId"]["property"] == "targetColor"
|
|
||||||
assert green_args["valueId"]["propertyName"] == "targetColor"
|
|
||||||
assert green_args["value"] == 0
|
|
||||||
blue_args = client.async_send_command.call_args_list[4][0][0] # cold white 0
|
|
||||||
assert blue_args["command"] == "node.set_value"
|
|
||||||
assert blue_args["nodeId"] == 39
|
|
||||||
assert blue_args["valueId"]["commandClassName"] == "Color Switch"
|
|
||||||
assert blue_args["valueId"]["commandClass"] == 51
|
|
||||||
assert blue_args["valueId"]["endpoint"] == 0
|
|
||||||
assert blue_args["valueId"]["metadata"]["label"] == "Target value (Cold White)"
|
|
||||||
assert blue_args["valueId"]["property"] == "targetColor"
|
|
||||||
assert blue_args["valueId"]["propertyName"] == "targetColor"
|
|
||||||
assert blue_args["value"] == 0
|
|
||||||
|
|
||||||
# Test rgb color update from value updated event
|
# Test rgb color update from value updated event
|
||||||
red_event = Event(
|
red_event = Event(
|
||||||
@ -328,7 +293,7 @@ async def test_light(hass, client, bulb_6_multi_color, integration):
|
|||||||
blocking=True,
|
blocking=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(client.async_send_command.call_args_list) == 6
|
assert len(client.async_send_command.call_args_list) == 2
|
||||||
|
|
||||||
client.async_send_command.reset_mock()
|
client.async_send_command.reset_mock()
|
||||||
|
|
||||||
@ -344,8 +309,8 @@ async def test_light(hass, client, bulb_6_multi_color, integration):
|
|||||||
blocking=True,
|
blocking=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(client.async_send_command.call_args_list) == 6
|
assert len(client.async_send_command.call_args_list) == 2
|
||||||
args = client.async_send_command.call_args_list[5][0][0]
|
args = client.async_send_command.call_args_list[0][0][0]
|
||||||
assert args["options"]["transitionDuration"] == "20s"
|
assert args["options"]["transitionDuration"] == "20s"
|
||||||
client.async_send_command.reset_mock()
|
client.async_send_command.reset_mock()
|
||||||
|
|
||||||
@ -357,57 +322,23 @@ async def test_light(hass, client, bulb_6_multi_color, integration):
|
|||||||
blocking=True,
|
blocking=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(client.async_send_command.call_args_list) == 6
|
assert len(client.async_send_command.call_args_list) == 2
|
||||||
red_args = client.async_send_command.call_args_list[0][0][0] # red 0
|
args = client.async_send_command.call_args_list[0][0][0] # red 0
|
||||||
assert red_args["command"] == "node.set_value"
|
assert args["command"] == "node.set_value"
|
||||||
assert red_args["nodeId"] == 39
|
assert args["nodeId"] == 39
|
||||||
assert red_args["valueId"]["commandClassName"] == "Color Switch"
|
assert args["valueId"]["commandClassName"] == "Color Switch"
|
||||||
assert red_args["valueId"]["commandClass"] == 51
|
assert args["valueId"]["commandClass"] == 51
|
||||||
assert red_args["valueId"]["endpoint"] == 0
|
assert args["valueId"]["endpoint"] == 0
|
||||||
assert red_args["valueId"]["metadata"]["label"] == "Target value (Red)"
|
assert args["valueId"]["metadata"]["label"] == "Target Color"
|
||||||
assert red_args["valueId"]["property"] == "targetColor"
|
assert args["valueId"]["property"] == "targetColor"
|
||||||
assert red_args["valueId"]["propertyName"] == "targetColor"
|
assert args["valueId"]["propertyName"] == "targetColor"
|
||||||
assert red_args["value"] == 0
|
assert args["value"] == {
|
||||||
red_args = client.async_send_command.call_args_list[1][0][0] # green 0
|
"blue": 0,
|
||||||
assert red_args["command"] == "node.set_value"
|
"coldWhite": 235,
|
||||||
assert red_args["nodeId"] == 39
|
"green": 0,
|
||||||
assert red_args["valueId"]["commandClassName"] == "Color Switch"
|
"red": 0,
|
||||||
assert red_args["valueId"]["commandClass"] == 51
|
"warmWhite": 20,
|
||||||
assert red_args["valueId"]["endpoint"] == 0
|
}
|
||||||
assert red_args["valueId"]["metadata"]["label"] == "Target value (Green)"
|
|
||||||
assert red_args["valueId"]["property"] == "targetColor"
|
|
||||||
assert red_args["valueId"]["propertyName"] == "targetColor"
|
|
||||||
assert red_args["value"] == 0
|
|
||||||
red_args = client.async_send_command.call_args_list[2][0][0] # blue 0
|
|
||||||
assert red_args["command"] == "node.set_value"
|
|
||||||
assert red_args["nodeId"] == 39
|
|
||||||
assert red_args["valueId"]["commandClassName"] == "Color Switch"
|
|
||||||
assert red_args["valueId"]["commandClass"] == 51
|
|
||||||
assert red_args["valueId"]["endpoint"] == 0
|
|
||||||
assert red_args["valueId"]["metadata"]["label"] == "Target value (Blue)"
|
|
||||||
assert red_args["valueId"]["property"] == "targetColor"
|
|
||||||
assert red_args["valueId"]["propertyName"] == "targetColor"
|
|
||||||
assert red_args["value"] == 0
|
|
||||||
warm_args = client.async_send_command.call_args_list[3][0][0] # warm white 0
|
|
||||||
assert warm_args["command"] == "node.set_value"
|
|
||||||
assert warm_args["nodeId"] == 39
|
|
||||||
assert warm_args["valueId"]["commandClassName"] == "Color Switch"
|
|
||||||
assert warm_args["valueId"]["commandClass"] == 51
|
|
||||||
assert warm_args["valueId"]["endpoint"] == 0
|
|
||||||
assert warm_args["valueId"]["metadata"]["label"] == "Target value (Warm White)"
|
|
||||||
assert warm_args["valueId"]["property"] == "targetColor"
|
|
||||||
assert warm_args["valueId"]["propertyName"] == "targetColor"
|
|
||||||
assert warm_args["value"] == 20
|
|
||||||
red_args = client.async_send_command.call_args_list[4][0][0] # cold white
|
|
||||||
assert red_args["command"] == "node.set_value"
|
|
||||||
assert red_args["nodeId"] == 39
|
|
||||||
assert red_args["valueId"]["commandClassName"] == "Color Switch"
|
|
||||||
assert red_args["valueId"]["commandClass"] == 51
|
|
||||||
assert red_args["valueId"]["endpoint"] == 0
|
|
||||||
assert red_args["valueId"]["metadata"]["label"] == "Target value (Cold White)"
|
|
||||||
assert red_args["valueId"]["property"] == "targetColor"
|
|
||||||
assert red_args["valueId"]["propertyName"] == "targetColor"
|
|
||||||
assert red_args["value"] == 235
|
|
||||||
|
|
||||||
client.async_send_command.reset_mock()
|
client.async_send_command.reset_mock()
|
||||||
|
|
||||||
@ -466,7 +397,7 @@ async def test_light(hass, client, bulb_6_multi_color, integration):
|
|||||||
blocking=True,
|
blocking=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(client.async_send_command.call_args_list) == 6
|
assert len(client.async_send_command.call_args_list) == 2
|
||||||
|
|
||||||
client.async_send_command.reset_mock()
|
client.async_send_command.reset_mock()
|
||||||
|
|
||||||
@ -482,8 +413,8 @@ async def test_light(hass, client, bulb_6_multi_color, integration):
|
|||||||
blocking=True,
|
blocking=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(client.async_send_command.call_args_list) == 6
|
assert len(client.async_send_command.call_args_list) == 2
|
||||||
args = client.async_send_command.call_args_list[5][0][0]
|
args = client.async_send_command.call_args_list[0][0][0]
|
||||||
assert args["options"]["transitionDuration"] == "35s"
|
assert args["options"]["transitionDuration"] == "35s"
|
||||||
|
|
||||||
client.async_send_command.reset_mock()
|
client.async_send_command.reset_mock()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user