diff --git a/homeassistant/components/frontend/__init__.py b/homeassistant/components/frontend/__init__.py index b2f50148bd3f7ed8113df98bd1f23db0931badf8..1fbfe94bb0d2f066db9b5a70314e45d0dcf604ae 100644 --- a/homeassistant/components/frontend/__init__.py +++ b/homeassistant/components/frontend/__init__.py @@ -24,7 +24,7 @@ from homeassistant.core import callback from homeassistant.helpers.translation import async_get_translations from homeassistant.loader import bind_hass -REQUIREMENTS = ['home-assistant-frontend==20180330.0'] +REQUIREMENTS = ['home-assistant-frontend==20180401.0'] DOMAIN = 'frontend' DEPENDENCIES = ['api', 'websocket_api', 'http', 'system_log'] diff --git a/homeassistant/components/homekit/util.py b/homeassistant/components/homekit/util.py index 2fa2ebd396ab3e655fa4d4beef08486da1949929..af2c74d9c3c665f075d4ba61e4f4f1c5b541e223 100644 --- a/homeassistant/components/homekit/util.py +++ b/homeassistant/components/homekit/util.py @@ -36,6 +36,7 @@ def validate_entity_config(values): def show_setup_message(bridge, hass): """Display persistent notification with setup information.""" pin = bridge.pincode.decode() + _LOGGER.info('Pincode: %s', pin) message = 'To setup Home Assistant in the Home App, enter the ' \ 'following code:\n### {}'.format(pin) hass.components.persistent_notification.create( diff --git a/homeassistant/components/light/mqtt_json.py b/homeassistant/components/light/mqtt_json.py index 25212e45c601710ce88265322a6e66b66c1a37c3..20e49e40bae9a444add9f530e30503a4c9b5b0e5 100644 --- a/homeassistant/components/light/mqtt_json.py +++ b/homeassistant/components/light/mqtt_json.py @@ -129,6 +129,8 @@ class MqttJson(MqttAvailability, Light): self._retain = retain self._optimistic = optimistic or topic[CONF_STATE_TOPIC] is None self._state = False + self._rgb = rgb + self._xy = xy if brightness: self._brightness = 255 else: @@ -307,20 +309,22 @@ class MqttJson(MqttAvailability, Light): message = {'state': 'ON'} - if ATTR_HS_COLOR in kwargs: + if ATTR_HS_COLOR in kwargs and (self._rgb or self._xy): hs_color = kwargs[ATTR_HS_COLOR] - brightness = kwargs.get( - ATTR_BRIGHTNESS, self._brightness if self._brightness else 255) - rgb = color_util.color_hsv_to_RGB( - hs_color[0], hs_color[1], brightness / 255 * 100) - xy_color = color_util.color_hs_to_xy(*kwargs[ATTR_HS_COLOR]) - message['color'] = { - 'r': rgb[0], - 'g': rgb[1], - 'b': rgb[2], - 'x': xy_color[0], - 'y': xy_color[1], - } + message['color'] = {} + if self._rgb: + brightness = kwargs.get( + ATTR_BRIGHTNESS, + self._brightness if self._brightness else 255) + rgb = color_util.color_hsv_to_RGB( + hs_color[0], hs_color[1], brightness / 255 * 100) + message['color']['r'] = rgb[0] + message['color']['g'] = rgb[1] + message['color']['b'] = rgb[2] + if self._xy: + xy_color = color_util.color_hs_to_xy(*kwargs[ATTR_HS_COLOR]) + message['color']['x'] = xy_color[0] + message['color']['y'] = xy_color[1] if self._optimistic: self._hs = kwargs[ATTR_HS_COLOR] diff --git a/homeassistant/components/sensor/mysensors.py b/homeassistant/components/sensor/mysensors.py index 3876b260dfcfeb6e1808e60ff118a0cc23453bae..66c36a8d9b1781739eb89860f7d642a4672171b3 100644 --- a/homeassistant/components/sensor/mysensors.py +++ b/homeassistant/components/sensor/mysensors.py @@ -81,5 +81,6 @@ class MySensorsSensor(mysensors.MySensorsEntity): TEMP_CELSIUS if self.gateway.metric else TEMP_FAHRENHEIT) sensor_type = SENSORS.get(set_req(self.value_type).name, [None, None]) if isinstance(sensor_type, dict): - sensor_type = sensor_type.get(pres(self.child_type).name) + sensor_type = sensor_type.get( + pres(self.child_type).name, [None, None]) return sensor_type diff --git a/homeassistant/const.py b/homeassistant/const.py index 3dce88820151e410223dc99b55f65847a5c6f9e6..a597c25d094dfddf31f2df36a7f3ac5a5bc0ade7 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -2,7 +2,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 66 -PATCH_VERSION = '0' +PATCH_VERSION = '1' __short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION) __version__ = '{}.{}'.format(__short_version__, PATCH_VERSION) REQUIRED_PYTHON_VER = (3, 5, 3) diff --git a/requirements_all.txt b/requirements_all.txt index 7ac9bd5fd7e0b0002bb7711079c2351e598d3aa9..b2232eeb9e2388a81a5027d698845b889fceb41c 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -366,7 +366,7 @@ hipnotify==1.0.8 holidays==0.9.4 # homeassistant.components.frontend -home-assistant-frontend==20180330.0 +home-assistant-frontend==20180401.0 # homeassistant.components.homematicip_cloud homematicip==0.8 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 33527a913a547f57b4030190740a88dd9fbd3612..8c01400f79e777f3c14be0d504419f5648417858 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -81,7 +81,7 @@ hbmqtt==0.9.1 holidays==0.9.4 # homeassistant.components.frontend -home-assistant-frontend==20180330.0 +home-assistant-frontend==20180401.0 # homeassistant.components.influxdb # homeassistant.components.sensor.influxdb diff --git a/tests/components/light/test_mqtt_json.py b/tests/components/light/test_mqtt_json.py index cfeffc93108fee5215cb5c7e0ac3ebc1edff7955..a183355fbb37963e1673938cc17c4cca8cae7768 100644 --- a/tests/components/light/test_mqtt_json.py +++ b/tests/components/light/test_mqtt_json.py @@ -334,6 +334,33 @@ class TestLightMQTTJSON(unittest.TestCase): self.assertEqual('colorloop', state.attributes['effect']) self.assertEqual(170, state.attributes['white_value']) + # Test a color command + light.turn_on(self.hass, 'light.test', + brightness=50, hs_color=(125, 100)) + self.hass.block_till_done() + + self.assertEqual('test_light_rgb/set', + self.mock_publish.async_publish.mock_calls[0][1][0]) + self.assertEqual(2, + self.mock_publish.async_publish.mock_calls[0][1][2]) + self.assertEqual(False, + self.mock_publish.async_publish.mock_calls[0][1][3]) + # Get the sent message + message_json = json.loads( + self.mock_publish.async_publish.mock_calls[1][1][1]) + self.assertEqual(50, message_json["brightness"]) + self.assertEqual({ + 'r': 0, + 'g': 50, + 'b': 4, + }, message_json["color"]) + self.assertEqual("ON", message_json["state"]) + + state = self.hass.states.get('light.test') + self.assertEqual(STATE_ON, state.state) + self.assertEqual(50, state.attributes['brightness']) + self.assertEqual((125, 100), state.attributes['hs_color']) + def test_flash_short_and_long(self): \ # pylint: disable=invalid-name """Test for flash length being sent when included."""