Fix for zwave RGB setting (#7137)

This commit is contained in:
Adam Mills 2017-04-16 18:06:59 -04:00 committed by Paulus Schoutsen
parent 58dfc1d1b1
commit 409fd62a7c
2 changed files with 29 additions and 29 deletions

View file

@ -310,25 +310,25 @@ class ZwaveColorLight(ZwaveDimmer):
if self._zw098:
if kwargs[ATTR_COLOR_TEMP] > TEMP_MID_HASS:
self._ct = TEMP_WARM_HASS
rgbw = b'#000000ff00'
rgbw = '#000000ff00'
else:
self._ct = TEMP_COLD_HASS
rgbw = b'#00000000ff'
rgbw = '#00000000ff'
elif ATTR_RGB_COLOR in kwargs:
self._rgb = kwargs[ATTR_RGB_COLOR]
if (not self._zw098 and (
self._color_channels & COLOR_CHANNEL_WARM_WHITE or
self._color_channels & COLOR_CHANNEL_COLD_WHITE)):
rgbw = b'#'
rgbw = '#'
for colorval in color_rgb_to_rgbw(*self._rgb):
rgbw += format(colorval, '02x').encode('utf-8')
rgbw += b'00'
rgbw += format(colorval, '02x')
rgbw += '00'
else:
rgbw = b'#'
rgbw = '#'
for colorval in self._rgb:
rgbw += format(colorval, '02x').encode('utf-8')
rgbw += b'0000'
rgbw += format(colorval, '02x')
rgbw += '0000'
if rgbw and self.values.color:
self.values.color.data = rgbw

View file

@ -207,36 +207,36 @@ def test_set_rgb_color(mock_openzwave):
"""Test setting zwave light color."""
node = MockNode(command_classes=[const.COMMAND_CLASS_SWITCH_COLOR])
value = MockValue(data=0, node=node)
color = MockValue(data=b'#0000000000', node=node)
color = MockValue(data='#0000000000', node=node)
# Suppoorts RGB only
color_channels = MockValue(data=0x1c, node=node)
values = MockLightValues(primary=value, color=color,
color_channels=color_channels)
device = zwave.get_device(node=node, values=values, node_config={})
assert color.data == b'#0000000000'
assert color.data == '#0000000000'
device.turn_on(**{ATTR_RGB_COLOR: (200, 150, 100)})
assert color.data == b'#c896640000'
assert color.data == '#c896640000'
def test_set_rgbw_color(mock_openzwave):
"""Test setting zwave light color."""
node = MockNode(command_classes=[const.COMMAND_CLASS_SWITCH_COLOR])
value = MockValue(data=0, node=node)
color = MockValue(data=b'#0000000000', node=node)
color = MockValue(data='#0000000000', node=node)
# Suppoorts RGBW
color_channels = MockValue(data=0x1d, node=node)
values = MockLightValues(primary=value, color=color,
color_channels=color_channels)
device = zwave.get_device(node=node, values=values, node_config={})
assert color.data == b'#0000000000'
assert color.data == '#0000000000'
device.turn_on(**{ATTR_RGB_COLOR: (200, 150, 100)})
assert color.data == b'#c86400c800'
assert color.data == '#c86400c800'
def test_zw098_set_color_temp(mock_openzwave):
@ -244,29 +244,29 @@ def test_zw098_set_color_temp(mock_openzwave):
node = MockNode(manufacturer_id='0086', product_id='0062',
command_classes=[const.COMMAND_CLASS_SWITCH_COLOR])
value = MockValue(data=0, node=node)
color = MockValue(data=b'#0000000000', node=node)
color = MockValue(data='#0000000000', node=node)
# Suppoorts RGB, warm white, cold white
color_channels = MockValue(data=0x1f, node=node)
values = MockLightValues(primary=value, color=color,
color_channels=color_channels)
device = zwave.get_device(node=node, values=values, node_config={})
assert color.data == b'#0000000000'
assert color.data == '#0000000000'
device.turn_on(**{ATTR_COLOR_TEMP: 200})
assert color.data == b'#00000000ff'
assert color.data == '#00000000ff'
device.turn_on(**{ATTR_COLOR_TEMP: 400})
assert color.data == b'#000000ff00'
assert color.data == '#000000ff00'
def test_rgb_not_supported(mock_openzwave):
"""Test value changed for rgb lights."""
node = MockNode(command_classes=[const.COMMAND_CLASS_SWITCH_COLOR])
value = MockValue(data=0, node=node)
color = MockValue(data=b'#0000000000', node=node)
color = MockValue(data='#0000000000', node=node)
# Suppoorts color temperature only
color_channels = MockValue(data=0x01, node=node)
values = MockLightValues(primary=value, color=color,
@ -290,7 +290,7 @@ def test_no_color_channels_value(mock_openzwave):
"""Test value changed for rgb lights."""
node = MockNode(command_classes=[const.COMMAND_CLASS_SWITCH_COLOR])
value = MockValue(data=0, node=node)
color = MockValue(data=b'#0000000000', node=node)
color = MockValue(data='#0000000000', node=node)
values = MockLightValues(primary=value, color=color)
device = zwave.get_device(node=node, values=values, node_config={})
@ -301,7 +301,7 @@ def test_rgb_value_changed(mock_openzwave):
"""Test value changed for rgb lights."""
node = MockNode(command_classes=[const.COMMAND_CLASS_SWITCH_COLOR])
value = MockValue(data=0, node=node)
color = MockValue(data=b'#0000000000', node=node)
color = MockValue(data='#0000000000', node=node)
# Suppoorts RGB only
color_channels = MockValue(data=0x1c, node=node)
values = MockLightValues(primary=value, color=color,
@ -310,7 +310,7 @@ def test_rgb_value_changed(mock_openzwave):
assert device.rgb_color == [0, 0, 0]
color.data = b'#c896640000'
color.data = '#c896640000'
value_changed(color)
assert device.rgb_color == [200, 150, 100]
@ -320,7 +320,7 @@ def test_rgbww_value_changed(mock_openzwave):
"""Test value changed for rgb lights."""
node = MockNode(command_classes=[const.COMMAND_CLASS_SWITCH_COLOR])
value = MockValue(data=0, node=node)
color = MockValue(data=b'#0000000000', node=node)
color = MockValue(data='#0000000000', node=node)
# Suppoorts RGB, Warm White
color_channels = MockValue(data=0x1d, node=node)
values = MockLightValues(primary=value, color=color,
@ -329,7 +329,7 @@ def test_rgbww_value_changed(mock_openzwave):
assert device.rgb_color == [0, 0, 0]
color.data = b'#c86400c800'
color.data = '#c86400c800'
value_changed(color)
assert device.rgb_color == [200, 150, 100]
@ -339,7 +339,7 @@ def test_rgbcw_value_changed(mock_openzwave):
"""Test value changed for rgb lights."""
node = MockNode(command_classes=[const.COMMAND_CLASS_SWITCH_COLOR])
value = MockValue(data=0, node=node)
color = MockValue(data=b'#0000000000', node=node)
color = MockValue(data='#0000000000', node=node)
# Suppoorts RGB, Cold White
color_channels = MockValue(data=0x1e, node=node)
values = MockLightValues(primary=value, color=color,
@ -348,7 +348,7 @@ def test_rgbcw_value_changed(mock_openzwave):
assert device.rgb_color == [0, 0, 0]
color.data = b'#c86400c800'
color.data = '#c86400c800'
value_changed(color)
assert device.rgb_color == [200, 150, 100]
@ -359,7 +359,7 @@ def test_ct_value_changed(mock_openzwave):
node = MockNode(manufacturer_id='0086', product_id='0062',
command_classes=[const.COMMAND_CLASS_SWITCH_COLOR])
value = MockValue(data=0, node=node)
color = MockValue(data=b'#0000000000', node=node)
color = MockValue(data='#0000000000', node=node)
# Suppoorts RGB, Cold White
color_channels = MockValue(data=0x1f, node=node)
values = MockLightValues(primary=value, color=color,
@ -368,12 +368,12 @@ def test_ct_value_changed(mock_openzwave):
assert device.color_temp == zwave.TEMP_MID_HASS
color.data = b'#000000ff00'
color.data = '#000000ff00'
value_changed(color)
assert device.color_temp == zwave.TEMP_WARM_HASS
color.data = b'#00000000ff'
color.data = '#00000000ff'
value_changed(color)
assert device.color_temp == zwave.TEMP_COLD_HASS