152 lines
4.5 KiB
Python
152 lines
4.5 KiB
Python
"""Test Z-Wave Lights."""
|
|
from homeassistant.components.ozw.light import byte_to_zwave_brightness
|
|
|
|
from .common import setup_ozw
|
|
|
|
|
|
async def test_light(hass, light_data, light_msg, sent_messages):
|
|
"""Test setting up config entry."""
|
|
receive_message = await setup_ozw(hass, fixture=light_data)
|
|
|
|
# Test loaded
|
|
state = hass.states.get("light.led_bulb_6_multi_colour_level")
|
|
assert state is not None
|
|
assert state.state == "off"
|
|
|
|
# Test turning on
|
|
# Beware that due to rounding, a roundtrip conversion does not always work
|
|
new_brightness = 44
|
|
new_transition = 0
|
|
await hass.services.async_call(
|
|
"light",
|
|
"turn_on",
|
|
{
|
|
"entity_id": "light.led_bulb_6_multi_colour_level",
|
|
"brightness": new_brightness,
|
|
"transition": new_transition,
|
|
},
|
|
blocking=True,
|
|
)
|
|
assert len(sent_messages) == 2
|
|
|
|
msg = sent_messages[0]
|
|
assert msg["topic"] == "OpenZWave/1/command/setvalue/"
|
|
assert msg["payload"] == {"Value": 0, "ValueIDKey": 1407375551070225}
|
|
|
|
msg = sent_messages[1]
|
|
assert msg["topic"] == "OpenZWave/1/command/setvalue/"
|
|
assert msg["payload"] == {
|
|
"Value": byte_to_zwave_brightness(new_brightness),
|
|
"ValueIDKey": 659128337,
|
|
}
|
|
|
|
# Feedback on state
|
|
light_msg.decode()
|
|
light_msg.payload["Value"] = byte_to_zwave_brightness(new_brightness)
|
|
light_msg.encode()
|
|
receive_message(light_msg)
|
|
await hass.async_block_till_done()
|
|
|
|
state = hass.states.get("light.led_bulb_6_multi_colour_level")
|
|
assert state is not None
|
|
assert state.state == "on"
|
|
assert state.attributes["brightness"] == new_brightness
|
|
|
|
# Test turning off
|
|
new_transition = 6553
|
|
await hass.services.async_call(
|
|
"light",
|
|
"turn_off",
|
|
{
|
|
"entity_id": "light.led_bulb_6_multi_colour_level",
|
|
"transition": new_transition,
|
|
},
|
|
blocking=True,
|
|
)
|
|
assert len(sent_messages) == 4
|
|
|
|
msg = sent_messages[-2]
|
|
assert msg["topic"] == "OpenZWave/1/command/setvalue/"
|
|
assert msg["payload"] == {"Value": 237, "ValueIDKey": 1407375551070225}
|
|
|
|
msg = sent_messages[-1]
|
|
assert msg["topic"] == "OpenZWave/1/command/setvalue/"
|
|
assert msg["payload"] == {"Value": 0, "ValueIDKey": 659128337}
|
|
|
|
# Feedback on state
|
|
light_msg.decode()
|
|
light_msg.payload["Value"] = 0
|
|
light_msg.encode()
|
|
receive_message(light_msg)
|
|
await hass.async_block_till_done()
|
|
|
|
state = hass.states.get("light.led_bulb_6_multi_colour_level")
|
|
assert state is not None
|
|
assert state.state == "off"
|
|
|
|
# Test turn on without brightness
|
|
new_transition = 127
|
|
await hass.services.async_call(
|
|
"light",
|
|
"turn_on",
|
|
{
|
|
"entity_id": "light.led_bulb_6_multi_colour_level",
|
|
"transition": new_transition,
|
|
},
|
|
blocking=True,
|
|
)
|
|
assert len(sent_messages) == 6
|
|
|
|
msg = sent_messages[-2]
|
|
assert msg["topic"] == "OpenZWave/1/command/setvalue/"
|
|
assert msg["payload"] == {"Value": 127, "ValueIDKey": 1407375551070225}
|
|
|
|
msg = sent_messages[-1]
|
|
assert msg["topic"] == "OpenZWave/1/command/setvalue/"
|
|
assert msg["payload"] == {
|
|
"Value": 255,
|
|
"ValueIDKey": 659128337,
|
|
}
|
|
|
|
# Feedback on state
|
|
light_msg.decode()
|
|
light_msg.payload["Value"] = byte_to_zwave_brightness(new_brightness)
|
|
light_msg.encode()
|
|
receive_message(light_msg)
|
|
await hass.async_block_till_done()
|
|
|
|
state = hass.states.get("light.led_bulb_6_multi_colour_level")
|
|
assert state is not None
|
|
assert state.state == "on"
|
|
assert state.attributes["brightness"] == new_brightness
|
|
|
|
# Test set brightness to 0
|
|
new_brightness = 0
|
|
await hass.services.async_call(
|
|
"light",
|
|
"turn_on",
|
|
{
|
|
"entity_id": "light.led_bulb_6_multi_colour_level",
|
|
"brightness": new_brightness,
|
|
},
|
|
blocking=True,
|
|
)
|
|
assert len(sent_messages) == 7
|
|
msg = sent_messages[-1]
|
|
assert msg["topic"] == "OpenZWave/1/command/setvalue/"
|
|
assert msg["payload"] == {
|
|
"Value": byte_to_zwave_brightness(new_brightness),
|
|
"ValueIDKey": 659128337,
|
|
}
|
|
|
|
# Feedback on state
|
|
light_msg.decode()
|
|
light_msg.payload["Value"] = byte_to_zwave_brightness(new_brightness)
|
|
light_msg.encode()
|
|
receive_message(light_msg)
|
|
await hass.async_block_till_done()
|
|
|
|
state = hass.states.get("light.led_bulb_6_multi_colour_level")
|
|
assert state is not None
|
|
assert state.state == "off"
|