From abc5c3e1284b080caa20a91d0a18e9e02278c6fa Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 13 Jul 2017 10:19:59 -0700 Subject: [PATCH 01/34] Fix iFrame panel test --- tests/components/test_panel_iframe.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/components/test_panel_iframe.py b/tests/components/test_panel_iframe.py index ec1e5bf3650..5f9cdcfa57c 100644 --- a/tests/components/test_panel_iframe.py +++ b/tests/components/test_panel_iframe.py @@ -53,9 +53,7 @@ class TestPanelIframe(unittest.TestCase): }, }) - # 5 dev tools + map are automatically loaded + 2 iframe panels - assert len(self.hass.data[frontend.DATA_PANELS]) == 8 - assert self.hass.data[frontend.DATA_PANELS]['router'] == { + assert self.hass.data[frontend.DATA_PANELS].get('router') == { 'component_name': 'iframe', 'config': {'url': 'http://192.168.1.1'}, 'icon': 'mdi:network-wireless', @@ -64,7 +62,7 @@ class TestPanelIframe(unittest.TestCase): 'url_path': 'router' } - assert self.hass.data[frontend.DATA_PANELS]['weather'] == { + assert self.hass.data[frontend.DATA_PANELS].get('weather') == { 'component_name': 'iframe', 'config': {'url': 'https://www.wunderground.com/us/ca/san-diego'}, 'icon': 'mdi:weather', From af9a0e8fea6ed9350a900372a6ea2ea850f95ebc Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Fri, 14 Jul 2017 04:38:36 +0200 Subject: [PATCH 02/34] LIFX: support for multizone (#8399) * Make aiolifx modules easily available * Use aiolifx features_map for deciding bulb features Also move the feature detection out of Light so it is available even during the initial detection. * Move each LIFX light type to a separate class * Simplify AwaitAioLIFX This has become possible with recent aiolifx that calls the callback even when a message is lost. Now the wrapper can be used also before a Light is added though the register callback then has to become a coroutine. * Refactor send_color * Add support for multizone This lets lifx_set_state work on individual zones. Also update to aiolifx_effects 0.1.1 that restores the state for individual zones. --- homeassistant/components/light/lifx.py | 269 ++++++++++++------- homeassistant/components/light/services.yaml | 4 + requirements_all.txt | 2 +- 3 files changed, 181 insertions(+), 94 deletions(-) diff --git a/homeassistant/components/light/lifx.py b/homeassistant/components/light/lifx.py index 0c5535ea8ea..a32aa0c4a6b 100644 --- a/homeassistant/components/light/lifx.py +++ b/homeassistant/components/light/lifx.py @@ -33,7 +33,7 @@ import homeassistant.util.color as color_util _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['aiolifx==0.5.2', 'aiolifx_effects==0.1.0'] +REQUIREMENTS = ['aiolifx==0.5.2', 'aiolifx_effects==0.1.1'] UDP_BROADCAST_PORT = 56700 @@ -53,10 +53,12 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ SERVICE_LIFX_SET_STATE = 'lifx_set_state' ATTR_INFRARED = 'infrared' +ATTR_ZONES = 'zones' ATTR_POWER = 'power' LIFX_SET_STATE_SCHEMA = LIGHT_TURN_ON_SCHEMA.extend({ ATTR_INFRARED: vol.All(vol.Coerce(int), vol.Clamp(min=0, max=255)), + ATTR_ZONES: vol.All(cv.ensure_list, [cv.positive_int]), ATTR_POWER: cv.boolean, }) @@ -112,11 +114,21 @@ LIFX_EFFECT_STOP_SCHEMA = vol.Schema({ }) +def aiolifx(): + """Return the aiolifx module.""" + import aiolifx as aiolifx_module + return aiolifx_module + + +def aiolifx_effects(): + """Return the aiolifx_effects module.""" + import aiolifx_effects as aiolifx_effects_module + return aiolifx_effects_module + + @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): """Set up the LIFX platform.""" - import aiolifx - if sys.platform == 'win32': _LOGGER.warning("The lifx platform is known to not work on Windows. " "Consider using the lifx_legacy platform instead") @@ -124,7 +136,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): server_addr = config.get(CONF_SERVER) lifx_manager = LIFXManager(hass, async_add_devices) - lifx_discovery = aiolifx.LifxDiscovery( + lifx_discovery = aiolifx().LifxDiscovery( hass.loop, lifx_manager, discovery_interval=DISCOVERY_INTERVAL, @@ -145,6 +157,16 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): return True +def lifxwhite(device): + """Return whether this is a white-only bulb.""" + return not aiolifx().products.features_map[device.product]["color"] + + +def lifxmultizone(device): + """Return whether this is a multizone bulb/strip.""" + return aiolifx().products.features_map[device.product]["multizone"] + + def find_hsbk(**kwargs): """Find the desired color from a number of possible inputs.""" hue, saturation, brightness, kelvin = [None]*4 @@ -187,11 +209,10 @@ class LIFXManager(object): def __init__(self, hass, async_add_devices): """Initialize the light.""" - import aiolifx_effects self.entities = {} self.hass = hass self.async_add_devices = async_add_devices - self.effects_conductor = aiolifx_effects.Conductor(loop=hass.loop) + self.effects_conductor = aiolifx_effects().Conductor(loop=hass.loop) descriptions = load_yaml_config_file( path.join(path.dirname(__file__), 'services.yaml')) @@ -245,11 +266,10 @@ class LIFXManager(object): @asyncio.coroutine def start_effect(self, entities, service, **kwargs): """Start a light effect on entities.""" - import aiolifx_effects devices = list(map(lambda l: l.device, entities)) if service == SERVICE_EFFECT_PULSE: - effect = aiolifx_effects.EffectPulse( + effect = aiolifx_effects().EffectPulse( power_on=kwargs.get(ATTR_POWER_ON), period=kwargs.get(ATTR_PERIOD), cycles=kwargs.get(ATTR_CYCLES), @@ -264,7 +284,7 @@ class LIFXManager(object): if ATTR_BRIGHTNESS in kwargs: brightness = convert_8_to_16(kwargs[ATTR_BRIGHTNESS]) - effect = aiolifx_effects.EffectColorloop( + effect = aiolifx_effects().EffectColorloop( power_on=kwargs.get(ATTR_POWER_ON), period=kwargs.get(ATTR_PERIOD), change=kwargs.get(ATTR_CHANGE), @@ -289,32 +309,39 @@ class LIFXManager(object): @callback def register(self, device): - """Handle for newly detected bulb.""" + """Handler for newly detected bulb.""" + self.hass.async_add_job(self.async_register(device)) + + @asyncio.coroutine + def async_register(self, device): + """Handler for newly detected bulb.""" if device.mac_addr in self.entities: entity = self.entities[device.mac_addr] - entity.device = device entity.registered = True _LOGGER.debug("%s register AGAIN", entity.who) - self.hass.async_add_job(entity.async_update_ha_state()) + yield from entity.async_update() + yield from entity.async_update_ha_state() else: _LOGGER.debug("%s register NEW", device.ip_addr) device.timeout = MESSAGE_TIMEOUT device.retry_count = MESSAGE_RETRIES device.unregister_timeout = UNAVAILABLE_GRACE - device.get_version(self.got_version) - @callback - def got_version(self, device, msg): - """Request current color setting once we have the product version.""" - device.get_color(self.ready) + ack = AwaitAioLIFX().wait + yield from ack(device.get_version) + yield from ack(device.get_color) - @callback - def ready(self, device, msg): - """Handle the device once all data is retrieved.""" - entity = LIFXLight(device, self.effects_conductor) - _LOGGER.debug("%s register READY", entity.who) - self.entities[device.mac_addr] = entity - self.async_add_devices([entity]) + if lifxwhite(device): + entity = LIFXWhite(device, self.effects_conductor) + elif lifxmultizone(device): + yield from ack(partial(device.get_color_zones, start_index=0)) + entity = LIFXStrip(device, self.effects_conductor) + else: + entity = LIFXColor(device, self.effects_conductor) + + _LOGGER.debug("%s register READY", entity.who) + self.entities[device.mac_addr] = entity + self.async_add_devices([entity]) @callback def unregister(self, device): @@ -329,9 +356,8 @@ class LIFXManager(object): class AwaitAioLIFX: """Wait for an aiolifx callback and return the message.""" - def __init__(self, light): + def __init__(self): """Initialize the wrapper.""" - self.light = light self.device = None self.message = None self.event = asyncio.Event() @@ -373,15 +399,8 @@ class LIFXLight(Light): self.device = device self.effects_conductor = effects_conductor self.registered = True - self.product = device.product self.postponed_update = None - @property - def lifxwhite(self): - """Return whether this is a white-only bulb.""" - # https://lan.developer.lifx.com/docs/lifx-products - return self.product in [10, 11, 18] - @property def available(self): """Return the availability of the device.""" @@ -397,14 +416,6 @@ class LIFXLight(Light): """Return a string identifying the device.""" return "%s (%s)" % (self.device.ip_addr, self.name) - @property - def rgb_color(self): - """Return the RGB value.""" - hue, sat, bri, _ = self.device.color - - return color_util.color_hsv_to_RGB( - hue, convert_16_to_8(sat), convert_16_to_8(bri)) - @property def brightness(self): """Return the brightness of this light between 0..255.""" @@ -421,26 +432,6 @@ class LIFXLight(Light): _LOGGER.debug("color_temp: %d", temperature) return temperature - @property - def min_mireds(self): - """Return the coldest color_temp that this light supports.""" - # The 3 LIFX "White" products supported a limited temperature range - if self.lifxwhite: - kelvin = 6500 - else: - kelvin = 9000 - return math.floor(color_util.color_temperature_kelvin_to_mired(kelvin)) - - @property - def max_mireds(self): - """Return the warmest color_temp that this light supports.""" - # The 3 LIFX "White" products supported a limited temperature range - if self.lifxwhite: - kelvin = 2700 - else: - kelvin = 2500 - return math.ceil(color_util.color_temperature_kelvin_to_mired(kelvin)) - @property def is_on(self): """Return true if device is on.""" @@ -454,32 +445,6 @@ class LIFXLight(Light): return 'lifx_effect_' + effect.name return None - @property - def supported_features(self): - """Flag supported features.""" - features = (SUPPORT_BRIGHTNESS | SUPPORT_COLOR_TEMP | - SUPPORT_TRANSITION | SUPPORT_EFFECT) - - if not self.lifxwhite: - features |= SUPPORT_RGB_COLOR | SUPPORT_XY_COLOR - - return features - - @property - def effect_list(self): - """Return the list of supported effects for this light.""" - if self.lifxwhite: - return [ - SERVICE_EFFECT_PULSE, - SERVICE_EFFECT_STOP, - ] - - return [ - SERVICE_EFFECT_COLORLOOP, - SERVICE_EFFECT_PULSE, - SERVICE_EFFECT_STOP, - ] - @asyncio.coroutine def update_after_transition(self, now): """Request new status after completion of the last transition.""" @@ -530,30 +495,36 @@ class LIFXLight(Light): power_on = kwargs.get(ATTR_POWER, False) power_off = not kwargs.get(ATTR_POWER, True) - hsbk = merge_hsbk(self.device.color, find_hsbk(**kwargs)) + hsbk = find_hsbk(**kwargs) # Send messages, waiting for ACK each time - ack = AwaitAioLIFX(self).wait + ack = AwaitAioLIFX().wait bulb = self.device if not self.is_on: if power_off: yield from ack(partial(bulb.set_power, False)) if hsbk: - yield from ack(partial(bulb.set_color, hsbk)) + yield from self.send_color(ack, hsbk, kwargs, duration=0) if power_on: yield from ack(partial(bulb.set_power, True, duration=fade)) else: if power_on: yield from ack(partial(bulb.set_power, True)) if hsbk: - yield from ack(partial(bulb.set_color, hsbk, duration=fade)) + yield from self.send_color(ack, hsbk, kwargs, duration=fade) if power_off: yield from ack(partial(bulb.set_power, False, duration=fade)) # Schedule an update when the transition is complete self.update_later(fade) + @asyncio.coroutine + def send_color(self, ack, hsbk, kwargs, duration): + """Send a color change to the device.""" + hsbk = merge_hsbk(self.device.color, hsbk) + yield from ack(partial(self.device.set_color, hsbk, duration=duration)) + @asyncio.coroutine def default_effect(self, **kwargs): """Start an effect with default parameters.""" @@ -569,5 +540,117 @@ class LIFXLight(Light): _LOGGER.debug("%s async_update", self.who) if self.available: # Avoid state ping-pong by holding off updates as the state settles - yield from asyncio.sleep(0.25) - yield from AwaitAioLIFX(self).wait(self.device.get_color) + yield from asyncio.sleep(0.3) + yield from AwaitAioLIFX().wait(self.device.get_color) + + +class LIFXWhite(LIFXLight): + """Representation of a white-only LIFX light.""" + + @property + def min_mireds(self): + """Return the coldest color_temp that this light supports.""" + return math.floor(color_util.color_temperature_kelvin_to_mired(6500)) + + @property + def max_mireds(self): + """Return the warmest color_temp that this light supports.""" + return math.ceil(color_util.color_temperature_kelvin_to_mired(2700)) + + @property + def supported_features(self): + """Flag supported features.""" + return (SUPPORT_BRIGHTNESS | SUPPORT_COLOR_TEMP | SUPPORT_TRANSITION | + SUPPORT_EFFECT) + + @property + def effect_list(self): + """Return the list of supported effects for this light.""" + return [ + SERVICE_EFFECT_PULSE, + SERVICE_EFFECT_STOP, + ] + + +class LIFXColor(LIFXLight): + """Representation of a color LIFX light.""" + + @property + def min_mireds(self): + """Return the coldest color_temp that this light supports.""" + return math.floor(color_util.color_temperature_kelvin_to_mired(9000)) + + @property + def max_mireds(self): + """Return the warmest color_temp that this light supports.""" + return math.ceil(color_util.color_temperature_kelvin_to_mired(2500)) + + @property + def supported_features(self): + """Flag supported features.""" + return (SUPPORT_BRIGHTNESS | SUPPORT_COLOR_TEMP | SUPPORT_TRANSITION | + SUPPORT_EFFECT | SUPPORT_RGB_COLOR | SUPPORT_XY_COLOR) + + @property + def effect_list(self): + """Return the list of supported effects for this light.""" + return [ + SERVICE_EFFECT_COLORLOOP, + SERVICE_EFFECT_PULSE, + SERVICE_EFFECT_STOP, + ] + + @property + def rgb_color(self): + """Return the RGB value.""" + hue, sat, bri, _ = self.device.color + + return color_util.color_hsv_to_RGB( + hue, convert_16_to_8(sat), convert_16_to_8(bri)) + + +class LIFXStrip(LIFXColor): + """Representation of a LIFX light strip with multiple zones.""" + + @asyncio.coroutine + def send_color(self, ack, hsbk, kwargs, duration): + """Send a color change to the device.""" + bulb = self.device + num_zones = len(bulb.color_zones) + + # Zone brightness is not reported when powered off + if not self.is_on and hsbk[2] is None: + yield from ack(partial(bulb.set_power, True)) + yield from self.async_update() + yield from ack(partial(bulb.set_power, False)) + + zones = kwargs.get(ATTR_ZONES, None) + if zones is None: + zones = list(range(0, num_zones)) + else: + zones = list(filter(lambda x: x < num_zones, set(zones))) + + # Send new color to each zone + for index, zone in enumerate(zones): + zone_hsbk = merge_hsbk(bulb.color_zones[zone], hsbk) + apply = 1 if (index == len(zones)-1) else 0 + set_zone = partial(bulb.set_color_zones, + start_index=zone, + end_index=zone, + color=zone_hsbk, + duration=duration, + apply=apply) + yield from ack(set_zone) + + @asyncio.coroutine + def async_update(self): + """Update strip status.""" + if self.available: + yield from super().async_update() + + ack = AwaitAioLIFX().wait + bulb = self.device + + # Each get_color_zones returns the next 8 zones + for zone in range(0, len(bulb.color_zones), 8): + yield from ack(partial(bulb.get_color_zones, start_index=zone)) diff --git a/homeassistant/components/light/services.yaml b/homeassistant/components/light/services.yaml index ef99f18fb42..782d4496442 100644 --- a/homeassistant/components/light/services.yaml +++ b/homeassistant/components/light/services.yaml @@ -117,6 +117,10 @@ lifx_set_state: description: Automatic infrared level (0..255) when light brightness is low example: 255 + zones: + description: List of zone numbers to affect (8 per LIFX Z, starts at 0) + example: '[0,5]' + transition: description: Duration in seconds it takes to get to the final state example: 10 diff --git a/requirements_all.txt b/requirements_all.txt index d4e4a30add7..58ef8d070d0 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -52,7 +52,7 @@ aiohttp_cors==0.5.3 aiolifx==0.5.2 # homeassistant.components.light.lifx -aiolifx_effects==0.1.0 +aiolifx_effects==0.1.1 # homeassistant.components.scene.hunterdouglas_powerview aiopvapi==1.4 From 21e82bd0371aa7419e24c66a78e08ff7f62c73b5 Mon Sep 17 00:00:00 2001 From: Dougal Matthews Date: Fri, 14 Jul 2017 04:53:19 +0200 Subject: [PATCH 03/34] Add RGB support to switch.flux (#8417) --- homeassistant/components/switch/flux.py | 20 +++++++++-- tests/components/switch/test_flux.py | 47 +++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/switch/flux.py b/homeassistant/components/switch/flux.py index daa4d1f8cd1..dea4285e3a9 100644 --- a/homeassistant/components/switch/flux.py +++ b/homeassistant/components/switch/flux.py @@ -37,6 +37,7 @@ CONF_MODE = 'mode' MODE_XY = 'xy' MODE_MIRED = 'mired' +MODE_RGB = 'rgb' DEFAULT_MODE = MODE_XY PLATFORM_SCHEMA = vol.Schema({ @@ -55,7 +56,7 @@ PLATFORM_SCHEMA = vol.Schema({ vol.All(vol.Coerce(int), vol.Range(min=0, max=255)), vol.Optional(CONF_DISABLE_BRIGTNESS_ADJUST): cv.boolean, vol.Optional(CONF_MODE, default=DEFAULT_MODE): - vol.Any(MODE_XY, MODE_MIRED) + vol.Any(MODE_XY, MODE_MIRED, MODE_RGB) }) @@ -79,6 +80,15 @@ def set_lights_temp(hass, lights, mired, brightness): transition=30) +def set_lights_rgb(hass, lights, rgb): + """Set color of array of lights.""" + for light in lights: + if is_on(hass, light): + turn_on(hass, light, + rgb_color=rgb, + transition=30) + + # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): """Set up the Flux switches.""" @@ -194,7 +204,8 @@ class FluxSwitch(SwitchDevice): temp = self._sunset_colortemp - temp_offset else: temp = self._sunset_colortemp + temp_offset - x_val, y_val, b_val = color_RGB_to_xy(*color_temperature_to_rgb(temp)) + rgb = color_temperature_to_rgb(temp) + x_val, y_val, b_val = color_RGB_to_xy(*rgb) brightness = self._brightness if self._brightness else b_val if self._disable_brightness_adjust: brightness = None @@ -205,6 +216,11 @@ class FluxSwitch(SwitchDevice): "of %s cycle complete at %s", x_val, y_val, brightness, round( percentage_complete * 100), time_state, now) + elif self._mode == MODE_RGB: + set_lights_rgb(self.hass, self._lights, rgb) + _LOGGER.info("Lights updated to rgb:%s, %s%% " + "of %s cycle complete at %s", rgb, + round(percentage_complete * 100), time_state, now) else: # Convert to mired and clamp to allowed values mired = color_temperature_kelvin_to_mired(temp) diff --git a/tests/components/switch/test_flux.py b/tests/components/switch/test_flux.py index 2422f0ea334..d529e8c3f56 100644 --- a/tests/components/switch/test_flux.py +++ b/tests/components/switch/test_flux.py @@ -557,3 +557,50 @@ class TestSwitchFlux(unittest.TestCase): self.hass.block_till_done() call = turn_on_calls[-1] self.assertEqual(call.data[light.ATTR_COLOR_TEMP], 269) + + def test_flux_with_rgb(self): + """Test the flux switch´s mode rgb.""" + platform = loader.get_component('light.test') + platform.init() + self.assertTrue( + setup_component(self.hass, light.DOMAIN, + {light.DOMAIN: {CONF_PLATFORM: 'test'}})) + + dev1 = platform.DEVICES[0] + + # Verify initial state of light + state = self.hass.states.get(dev1.entity_id) + self.assertEqual(STATE_ON, state.state) + self.assertIsNone(state.attributes.get('color_temp')) + + test_time = dt_util.now().replace(hour=8, minute=30, second=0) + sunset_time = test_time.replace(hour=17, minute=0, second=0) + sunrise_time = test_time.replace(hour=5, minute=0, second=0) + + def event_date(hass, event, now=None): + if event == 'sunrise': + return sunrise_time + else: + return sunset_time + + with patch('homeassistant.util.dt.now', return_value=test_time): + with patch('homeassistant.helpers.sun.get_astral_event_date', + side_effect=event_date): + assert setup_component(self.hass, switch.DOMAIN, { + switch.DOMAIN: { + 'platform': 'flux', + 'name': 'flux', + 'lights': [dev1.entity_id], + 'mode': 'rgb' + } + }) + turn_on_calls = mock_service( + self.hass, light.DOMAIN, SERVICE_TURN_ON) + switch.turn_on(self.hass, 'switch.flux') + self.hass.block_till_done() + fire_time_changed(self.hass, test_time) + self.hass.block_till_done() + call = turn_on_calls[-1] + rgb = (255, 198, 152) + rounded_call = tuple(map(round, call.data[light.ATTR_RGB_COLOR])) + self.assertEqual(rounded_call, rgb) From bd1e533409a6651c867725699751bb68bd7a87f8 Mon Sep 17 00:00:00 2001 From: dersger Date: Fri, 14 Jul 2017 05:00:23 +0200 Subject: [PATCH 04/34] Fix media_position for cast component (#8452) * Make it available during state paused. * Don't adjust for media_position_updated_at. I.e. do as vlc, sonos etc so that returned position is the position at the time of media_position_updated_at, not now. --- homeassistant/components/media_player/cast.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/media_player/cast.py b/homeassistant/components/media_player/cast.py index 418d3576750..51acf68d819 100644 --- a/homeassistant/components/media_player/cast.py +++ b/homeassistant/components/media_player/cast.py @@ -234,18 +234,13 @@ class CastDevice(MediaPlayerDevice): @property def media_position(self): """Position of current playing media in seconds.""" - if self.media_status is None or self.media_status_received is None or \ + if self.media_status is None or \ not (self.media_status.player_is_playing or + self.media_status.player_is_paused or self.media_status.player_is_idle): return None - position = self.media_status.current_time - - if self.media_status.player_is_playing: - position += (dt_util.utcnow() - - self.media_status_received).total_seconds() - - return position + return self.media_status.current_time @property def media_position_updated_at(self): From e5e2a151aa5d31e28e46f0bd2b2c86ba036e8f6a Mon Sep 17 00:00:00 2001 From: Sean Gollschewsky Date: Fri, 14 Jul 2017 04:01:25 +0100 Subject: [PATCH 05/34] Remove km from visibility, add visibility_distance (#8454) * Remove km from visibility, add visibility_distance * Fix line length * Fix trailing space and line break indentation * Indentation * More whitespace --- homeassistant/components/sensor/metoffice.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/sensor/metoffice.py b/homeassistant/components/sensor/metoffice.py index a20ec8fdd5a..25516eda5b1 100644 --- a/homeassistant/components/sensor/metoffice.py +++ b/homeassistant/components/sensor/metoffice.py @@ -40,6 +40,15 @@ CONDITION_CLASSES = { 'exceptional': [], } +VISIBILTY_CLASSES = { + 'VP': '<1', + 'PO': '1-4', + 'MO': '4-10', + 'GO': '10-20', + 'VG': '20-40', + 'EX': '>40' +} + SCAN_INTERVAL = timedelta(minutes=35) # Sensor types are defined like: Name, units @@ -51,7 +60,8 @@ SENSOR_TYPES = { 'wind_speed': ['Wind Speed', 'm/s'], 'wind_direction': ['Wind Direction', None], 'wind_gust': ['Wind Gust', 'm/s'], - 'visibility': ['Visibility', 'km'], + 'visibility': ['Visibility', None], + 'visibility_distance': ['Visibility Distance', 'km'], 'uv': ['UV', None], 'precipitation': ['Probability of Precipitation', '%'], 'humidity': ['Humidity', '%'] @@ -119,6 +129,9 @@ class MetOfficeCurrentSensor(Entity): @property def state(self): """Return the state of the sensor.""" + if (self._condition == 'visibility_distance' and + 'visibility' in self.data.data.__dict__.keys()): + return VISIBILTY_CLASSES.get(self.data.data.visibility.value) if self._condition in self.data.data.__dict__.keys(): variable = getattr(self.data.data, self._condition) if self._condition == "weather": From 1366c93c83f3cd2f55bdfa4f2ea2f526d497ac47 Mon Sep 17 00:00:00 2001 From: Bryce Edwards Date: Thu, 13 Jul 2017 22:02:07 -0500 Subject: [PATCH 06/34] Radarr sensor fix for issue #8250 (#8456) * Radarr sensor fix for issue #8250 * Radarr sensor fix for issue #8250 --- homeassistant/components/sensor/radarr.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sensor/radarr.py b/homeassistant/components/sensor/radarr.py index f5efe12c449..59408b4f96b 100644 --- a/homeassistant/components/sensor/radarr.py +++ b/homeassistant/components/sensor/radarr.py @@ -216,9 +216,9 @@ def get_date(zone, offset=0): def get_release_date(data): """Get release date.""" - date = data['physicalRelease'] + date = data.get('physicalRelease') if not date: - date = data['inCinemas'] + date = data.get('inCinemas') return date From 84ca4d2a21831701dd9e5c10811e07ceccde4bee Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Fri, 14 Jul 2017 05:04:23 +0200 Subject: [PATCH 07/34] Accept transition for light.toggle (#8466) --- homeassistant/helpers/entity.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index da177bc4331..49f250c65fa 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -378,18 +378,18 @@ class ToggleEntity(Entity): return self.hass.async_add_job( ft.partial(self.turn_off, **kwargs)) - def toggle(self) -> None: + def toggle(self, **kwargs) -> None: """Toggle the entity.""" if self.is_on: - self.turn_off() + self.turn_off(**kwargs) else: - self.turn_on() + self.turn_on(**kwargs) - def async_toggle(self): + def async_toggle(self, **kwargs): """Toggle the entity. This method must be run in the event loop and returns a coroutine. """ if self.is_on: - return self.async_turn_off() - return self.async_turn_on() + return self.async_turn_off(**kwargs) + return self.async_turn_on(**kwargs) From 3377f3061331b22733d4314423f41f0bc7accfa8 Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 14 Jul 2017 21:26:26 +0300 Subject: [PATCH 08/34] Make themes API work even when themes are not defined. (#8473) --- homeassistant/components/frontend/__init__.py | 11 +++++++---- tests/components/test_frontend.py | 10 ++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/frontend/__init__.py b/homeassistant/components/frontend/__init__.py index 4184feabaeb..443ff6f3852 100644 --- a/homeassistant/components/frontend/__init__.py +++ b/homeassistant/components/frontend/__init__.py @@ -212,17 +212,20 @@ def setup(hass, config): register_built_in_panel(hass, panel) themes = config.get(DOMAIN, {}).get(ATTR_THEMES) - if themes: - setup_themes(hass, themes) + setup_themes(hass, themes) return True def setup_themes(hass, themes): """Set up themes data and services.""" - hass.data[DATA_THEMES] = themes - hass.data[DATA_DEFAULT_THEME] = DEFAULT_THEME hass.http.register_view(ThemesView) + hass.data[DATA_DEFAULT_THEME] = DEFAULT_THEME + if themes is None: + hass.data[DATA_THEMES] = {} + return + + hass.data[DATA_THEMES] = themes @callback def update_theme_and_fire_event(): diff --git a/tests/components/test_frontend.py b/tests/components/test_frontend.py index d1e2e5d4346..3682e0a2c14 100644 --- a/tests/components/test_frontend.py +++ b/tests/components/test_frontend.py @@ -133,3 +133,13 @@ def test_themes_reload_themes(hass, mock_http_client_with_themes): json = yield from resp.json() assert json['themes'] == {'sad': {'primary-color': 'blue'}} assert json['default_theme'] == 'default' + + +@asyncio.coroutine +def test_missing_themes(mock_http_client): + """Test that themes API works when themes are not defined.""" + resp = yield from mock_http_client.get('/api/themes') + assert resp.status == 200 + json = yield from resp.json() + assert json['default_theme'] == 'default' + assert json['themes'] == {} From 1d4a7f11607c111d51b248ff61470e1a93f5ec9c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 15 Jul 2017 21:06:20 -0700 Subject: [PATCH 09/34] Version bump to 0.49 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index f7df04be7f1..fae73899986 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -2,7 +2,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 49 -PATCH_VERSION = '0.dev0' +PATCH_VERSION = '0' __short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION) __version__ = '{}.{}'.format(__short_version__, PATCH_VERSION) REQUIRED_PYTHON_VER = (3, 4, 2) From ffd295b38b10ab1599ef46ce619f4b7b95fd1dff Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 23 Jul 2017 23:34:08 -0700 Subject: [PATCH 10/34] Update to 0.49.1 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index fae73899986..25990b102a8 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -2,7 +2,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 49 -PATCH_VERSION = '0' +PATCH_VERSION = '1' __short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION) __version__ = '{}.{}'.format(__short_version__, PATCH_VERSION) REQUIRED_PYTHON_VER = (3, 4, 2) From 5c39eebea8de2b0750e5ede785a9c64dedca86a2 Mon Sep 17 00:00:00 2001 From: Maikel Wever Date: Sun, 16 Jul 2017 19:27:48 +0200 Subject: [PATCH 11/34] Fix TP-Link device tracker regression since 0.49 (#8497) * Fix TP-Link device tracker regression since 0.49 This regression was introduced by #8322. Fix is to utf encode the password like the other TP-Link backends do. * Fix linting issue introduced in previous commit Commit in question: 677f3fbb7f821ee925364c8260d235dce4f0ddbe --- homeassistant/components/device_tracker/tplink.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/device_tracker/tplink.py b/homeassistant/components/device_tracker/tplink.py index 88b0abe8ce4..ccf0c2d01af 100755 --- a/homeassistant/components/device_tracker/tplink.py +++ b/homeassistant/components/device_tracker/tplink.py @@ -391,7 +391,8 @@ class Tplink5DeviceScanner(TplinkDeviceScanner): "Cache-Control": "no-cache" } - password_md5 = hashlib.md5(self.password).hexdigest().upper() + password_md5 = hashlib.md5( + self.password.encode('utf')).hexdigest().upper() # create a session to handle cookie easier session = requests.session() From 6dc93c27514039670254e2a2781bdb3bd56beb95 Mon Sep 17 00:00:00 2001 From: Russell Cloran Date: Mon, 17 Jul 2017 02:25:20 -0700 Subject: [PATCH 12/34] prometheus: Convert fahrenheit to celsius (#8511) --- homeassistant/components/prometheus.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/homeassistant/components/prometheus.py b/homeassistant/components/prometheus.py index 4ed6028ac56..18a3a932d36 100644 --- a/homeassistant/components/prometheus.py +++ b/homeassistant/components/prometheus.py @@ -17,6 +17,7 @@ from homeassistant.const import (CONF_DOMAINS, CONF_ENTITIES, CONF_EXCLUDE, TEMP_CELSIUS, TEMP_FAHRENHEIT) from homeassistant import core as hacore from homeassistant.helpers import state as state_helper +from homeassistant.util.temperature import fahrenheit_to_celsius _LOGGER = logging.getLogger(__name__) @@ -198,6 +199,8 @@ class Metrics: metric = self._metric(*metric) try: value = state_helper.state_as_number(state) + if unit == TEMP_FAHRENHEIT: + value = fahrenheit_to_celsius(value) metric.labels(**self._labels(state)).set(value) except ValueError: pass From 7d99d6aad97081419554f0cab34d04d2a61b032a Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 17 Jul 2017 11:03:16 +0200 Subject: [PATCH 13/34] Update dlib_face_detect.py (#8516) --- homeassistant/components/image_processing/dlib_face_detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/image_processing/dlib_face_detect.py b/homeassistant/components/image_processing/dlib_face_detect.py index 7c0c0e26649..b4ad10934f2 100644 --- a/homeassistant/components/image_processing/dlib_face_detect.py +++ b/homeassistant/components/image_processing/dlib_face_detect.py @@ -68,4 +68,4 @@ class DlibFaceDetectEntity(ImageProcessingFaceEntity): image = face_recognition.load_image_file(fak_file) face_locations = face_recognition.face_locations(image) - self.process_faces(face_locations, len(face_locations)) + self.process_faces(list(face_locations), len(face_locations)) From 4961ece9311d403786edb57fd78b92bfa0e0d4a9 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 17 Jul 2017 12:09:42 +0200 Subject: [PATCH 14/34] Realfix for dlib (#8517) * Update dlib_face_detect.py * fix lint * Update dlib_face_detect.py --- .../components/image_processing/dlib_face_detect.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/image_processing/dlib_face_detect.py b/homeassistant/components/image_processing/dlib_face_detect.py index b4ad10934f2..1c999782ec7 100644 --- a/homeassistant/components/image_processing/dlib_face_detect.py +++ b/homeassistant/components/image_processing/dlib_face_detect.py @@ -19,6 +19,8 @@ REQUIREMENTS = ['face_recognition==0.2.0'] _LOGGER = logging.getLogger(__name__) +ATTR_LOCATION = 'location' + def setup_platform(hass, config, add_devices, discovery_info=None): """Set up the Dlib Face detection platform.""" @@ -68,4 +70,7 @@ class DlibFaceDetectEntity(ImageProcessingFaceEntity): image = face_recognition.load_image_file(fak_file) face_locations = face_recognition.face_locations(image) - self.process_faces(list(face_locations), len(face_locations)) + face_locations = [{ATTR_LOCATION: location} + for location in face_locations] + + self.process_faces(face_locations, len(face_locations)) From a5bfcceacd70beb85c302b08232f9658705b4380 Mon Sep 17 00:00:00 2001 From: Eugenio Panadero Date: Mon, 17 Jul 2017 13:47:28 +0200 Subject: [PATCH 15/34] Attach the `chat_id` for a callback query from a chat group (fixes #8461) (#8523) --- homeassistant/components/telegram_bot/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/homeassistant/components/telegram_bot/__init__.py b/homeassistant/components/telegram_bot/__init__.py index 3d16252120b..6d9f43e2425 100644 --- a/homeassistant/components/telegram_bot/__init__.py +++ b/homeassistant/components/telegram_bot/__init__.py @@ -581,6 +581,8 @@ class BaseTelegramBotEntity: data[ATTR_FROM_LAST] = msg_data['from']['last_name'] if 'chat' in msg_data: data[ATTR_CHAT_ID] = msg_data['chat']['id'] + elif ATTR_MESSAGE in msg_data and 'chat' in msg_data[ATTR_MESSAGE]: + data[ATTR_CHAT_ID] = msg_data[ATTR_MESSAGE]['chat']['id'] return True, data From d7da90ae548cc4336dbd6b180ca18ed9558b26bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20St=C3=A5hl?= Date: Tue, 18 Jul 2017 20:19:36 +0200 Subject: [PATCH 16/34] Fix support for multiple Apple TVs (#8539) --- homeassistant/components/apple_tv.py | 2 +- homeassistant/components/remote/apple_tv.py | 5 +++++ requirements_all.txt | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/apple_tv.py b/homeassistant/components/apple_tv.py index 17cc46f3318..f5850bb21a9 100644 --- a/homeassistant/components/apple_tv.py +++ b/homeassistant/components/apple_tv.py @@ -18,7 +18,7 @@ from homeassistant.components.discovery import SERVICE_APPLE_TV from homeassistant.loader import get_component import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['pyatv==0.3.2'] +REQUIREMENTS = ['pyatv==0.3.4'] _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/remote/apple_tv.py b/homeassistant/components/remote/apple_tv.py index a7ea113c2db..e89234c60ac 100644 --- a/homeassistant/components/remote/apple_tv.py +++ b/homeassistant/components/remote/apple_tv.py @@ -44,6 +44,11 @@ class AppleTVRemote(remote.RemoteDevice): """Return the name of the device.""" return self._name + @property + def unique_id(self): + """Return an unique ID.""" + return self._atv.metadata.device_id + @property def is_on(self): """Return true if device is on.""" diff --git a/requirements_all.txt b/requirements_all.txt index 58ef8d070d0..48a3f677345 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -519,7 +519,7 @@ pyasn1-modules==0.0.9 pyasn1==0.2.3 # homeassistant.components.apple_tv -pyatv==0.3.2 +pyatv==0.3.4 # homeassistant.components.device_tracker.bbox # homeassistant.components.sensor.bbox From fb6bdfaba9563f8e2d52c78f5ff15fee6e42a5f0 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Thu, 20 Jul 2017 07:54:46 +0200 Subject: [PATCH 17/34] LIFX: assume default features for unknown products (#8553) This makes the detection work for prototypes as well. --- homeassistant/components/light/lifx.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/light/lifx.py b/homeassistant/components/light/lifx.py index a32aa0c4a6b..a6c5f855875 100644 --- a/homeassistant/components/light/lifx.py +++ b/homeassistant/components/light/lifx.py @@ -159,12 +159,18 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): def lifxwhite(device): """Return whether this is a white-only bulb.""" - return not aiolifx().products.features_map[device.product]["color"] + features = aiolifx().products.features_map.get(device.product, None) + if features: + return not features["color"] + return False def lifxmultizone(device): """Return whether this is a multizone bulb/strip.""" - return aiolifx().products.features_map[device.product]["multizone"] + features = aiolifx().products.features_map.get(device.product, None) + if features: + return features["multizone"] + return False def find_hsbk(**kwargs): From 7b10f0a14fe6763f733143f1f6f2cfbf8d7a7571 Mon Sep 17 00:00:00 2001 From: Yannick POLLART Date: Thu, 20 Jul 2017 07:56:11 +0200 Subject: [PATCH 18/34] Fix broken status update for lighting4 devices (#8543) * Fix broken status update for lighting4 devices * Fixed indentation --- .../components/binary_sensor/rfxtrx.py | 20 +++++++++---------- homeassistant/components/rfxtrx.py | 11 ++-------- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/homeassistant/components/binary_sensor/rfxtrx.py b/homeassistant/components/binary_sensor/rfxtrx.py index 9a2c23206c1..b70169dc594 100644 --- a/homeassistant/components/binary_sensor/rfxtrx.py +++ b/homeassistant/components/binary_sensor/rfxtrx.py @@ -62,6 +62,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): entity[CONF_COMMAND_ON], entity[CONF_COMMAND_OFF]) device.hass = hass + device.is_lighting4 = (packet_id[2:4] == '13') sensors.append(device) rfxtrx.RFX_DEVICES[device_id] = device @@ -94,6 +95,8 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): pkt_id = "".join("{0:02x}".format(x) for x in event.data) sensor = RfxtrxBinarySensor(event, pkt_id) + sensor.hass = hass + sensor.is_lighting4 = (pkt_id[2:4] == '13') rfxtrx.RFX_DEVICES[device_id] = sensor add_devices_callback([sensor]) _LOGGER.info("Added binary sensor %s " @@ -111,12 +114,12 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): slugify(event.device.id_string.lower()), event.device.__class__.__name__, event.device.subtype) - - if sensor.is_pt2262: - cmd = rfxtrx.get_pt2262_cmd(device_id, sensor.data_bits) - _LOGGER.info("applying cmd %s to device_id: %s)", - cmd, sensor.masked_id) - sensor.apply_cmd(int(cmd, 16)) + if sensor.is_lighting4: + if sensor.data_bits is not None: + cmd = rfxtrx.get_pt2262_cmd(device_id, sensor.data_bits) + sensor.apply_cmd(int(cmd, 16)) + else: + sensor.update_state(True) else: rfxtrx.apply_received_command(event) @@ -170,11 +173,6 @@ class RfxtrxBinarySensor(BinarySensorDevice): """Return the device name.""" return self._name - @property - def is_pt2262(self): - """Return true if the device is PT2262-based.""" - return self._data_bits is not None - @property def masked_id(self): """Return the masked device id (isolated address bits).""" diff --git a/homeassistant/components/rfxtrx.py b/homeassistant/components/rfxtrx.py index b6e4d3415f4..e3ffc2f24a8 100644 --- a/homeassistant/components/rfxtrx.py +++ b/homeassistant/components/rfxtrx.py @@ -247,10 +247,8 @@ def get_pt2262_device(device_id): """Look for the device which id matches the given device_id parameter.""" for dev_id, device in RFX_DEVICES.items(): try: - if (device.is_pt2262 and - device.masked_id == get_pt2262_deviceid( - device_id, - device.data_bits)): + if device.masked_id == get_pt2262_deviceid(device_id, + device.data_bits): _LOGGER.info("rfxtrx: found matching device %s for %s", device_id, get_pt2262_deviceid(device_id, device.data_bits)) @@ -414,11 +412,6 @@ class RfxtrxDevice(Entity): """Return is the device must fire event.""" return self._should_fire_event - @property - def is_pt2262(self): - """Return true if the device is PT2262-based.""" - return False - @property def is_on(self): """Return true if device is on.""" From 333da0dc6da1fcb3eb1e5fdbda7481ef9f1a5e0c Mon Sep 17 00:00:00 2001 From: Russell Cloran Date: Fri, 21 Jul 2017 21:22:43 -0700 Subject: [PATCH 19/34] zha: Update to bellows 0.3.4 (#8594) --- homeassistant/components/zha/__init__.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/zha/__init__.py b/homeassistant/components/zha/__init__.py index e397b7d042a..1b2d46ee72b 100644 --- a/homeassistant/components/zha/__init__.py +++ b/homeassistant/components/zha/__init__.py @@ -14,7 +14,7 @@ from homeassistant import const as ha_const from homeassistant.helpers import discovery, entity from homeassistant.util import slugify -REQUIREMENTS = ['bellows==0.3.2'] +REQUIREMENTS = ['bellows==0.3.4'] DOMAIN = 'zha' diff --git a/requirements_all.txt b/requirements_all.txt index 48a3f677345..53f37caf256 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -92,7 +92,7 @@ batinfo==0.4.2 beautifulsoup4==4.6.0 # homeassistant.components.zha -bellows==0.3.2 +bellows==0.3.4 # homeassistant.components.blink blinkpy==0.6.0 From 2cf9254a08d64effb393412fda80a68933d7a59c Mon Sep 17 00:00:00 2001 From: Chia-liang Kao Date: Sun, 23 Jul 2017 03:22:49 -0500 Subject: [PATCH 20/34] Fix STATION_SCHEMA validation on longitude (#8610) --- homeassistant/components/sensor/citybikes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/sensor/citybikes.py b/homeassistant/components/sensor/citybikes.py index 15046897732..b0cde805796 100644 --- a/homeassistant/components/sensor/citybikes.py +++ b/homeassistant/components/sensor/citybikes.py @@ -84,7 +84,7 @@ STATION_SCHEMA = vol.Schema({ vol.Required(ATTR_FREE_BIKES): cv.positive_int, vol.Required(ATTR_EMPTY_SLOTS): cv.positive_int, vol.Required(ATTR_LATITUDE): cv.latitude, - vol.Required(ATTR_LONGITUDE): cv.latitude, + vol.Required(ATTR_LONGITUDE): cv.longitude, vol.Required(ATTR_ID): cv.string, vol.Required(ATTR_NAME): cv.string, vol.Required(ATTR_TIMESTAMP): cv.string, From 3e34f34f6be606bc3ad9a5967860c649d899d80c Mon Sep 17 00:00:00 2001 From: Marcelo Moreira de Mello Date: Mon, 24 Jul 2017 02:46:23 -0400 Subject: [PATCH 21/34] Bumped Amcrest version (#8624) --- homeassistant/components/amcrest.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/amcrest.py b/homeassistant/components/amcrest.py index 8a40c790c12..76ba13c3409 100644 --- a/homeassistant/components/amcrest.py +++ b/homeassistant/components/amcrest.py @@ -18,7 +18,7 @@ from homeassistant.const import ( from homeassistant.helpers import discovery import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['amcrest==1.2.0'] +REQUIREMENTS = ['amcrest==1.2.1'] DEPENDENCIES = ['ffmpeg'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 53f37caf256..a2188f8b6a2 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -61,7 +61,7 @@ aiopvapi==1.4 alarmdecoder==0.12.1.0 # homeassistant.components.amcrest -amcrest==1.2.0 +amcrest==1.2.1 # homeassistant.components.media_player.anthemav anthemav==1.1.8 From 8760dc9b29d529b162f747acad182dab65828f07 Mon Sep 17 00:00:00 2001 From: Daniel Schaal Date: Mon, 24 Jul 2017 08:47:38 +0200 Subject: [PATCH 22/34] Check if /dev/input/by-id exists (#8601) --- homeassistant/components/keyboard_remote.py | 25 ++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/keyboard_remote.py b/homeassistant/components/keyboard_remote.py index 88d406ace0b..5a81f6d2a9e 100644 --- a/homeassistant/components/keyboard_remote.py +++ b/homeassistant/components/keyboard_remote.py @@ -94,20 +94,25 @@ class KeyboardRemote(threading.Thread): if self.dev is not None: _LOGGER.debug("Keyboard connected, %s", self.device_id) else: - id_folder = '/dev/input/by-id/' - device_names = [InputDevice(file_name).name - for file_name in list_devices()] _LOGGER.debug( 'Keyboard not connected, %s.\n\ - Check /dev/input/event* permissions.\ - Possible device names are:\n %s.\n \ - Possible device descriptors are %s:\n %s', - self.device_id, - device_names, - id_folder, - os.listdir(id_folder) + Check /dev/input/event* permissions.', + self.device_id ) + id_folder = '/dev/input/by-id/' + + if os.path.isdir(id_folder): + device_names = [InputDevice(file_name).name + for file_name in list_devices()] + _LOGGER.debug( + 'Possible device names are:\n %s.\n \ + Possible device descriptors are %s:\n %s', + device_names, + id_folder, + os.listdir(id_folder) + ) + threading.Thread.__init__(self) self.stopped = threading.Event() self.hass = hass From e4317a6741db56ca50ea388184c9ef7b542fb6ba Mon Sep 17 00:00:00 2001 From: Phil Cole Date: Mon, 24 Jul 2017 08:48:20 +0200 Subject: [PATCH 23/34] Tado Fix #8606 (#8621) Handle case where 'mode' and 'fanSpeed' are missing JSON. Based on changes in commit https://github.com/wmalgadey/tado_component/commit/adfb608f86b8bf4c1c43e71b4067cbfe1de9ba85 --- homeassistant/components/climate/tado.py | 47 ++++++++++++++---------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/homeassistant/components/climate/tado.py b/homeassistant/components/climate/tado.py index 8a2e6621af3..459cbec0497 100644 --- a/homeassistant/components/climate/tado.py +++ b/homeassistant/components/climate/tado.py @@ -273,31 +273,38 @@ class TadoClimate(ClimateDevice): else: self._device_is_active = True + overlay = False + overlay_data = None + termination = self._current_operation + cooling = False + fan_speed = CONST_MODE_OFF + + if 'overlay' in data: + overlay_data = data['overlay'] + overlay = overlay_data is not None + + if overlay: + termination = overlay_data['termination']['type'] + + if 'setting' in overlay_data: + setting_data = overlay_data['setting'] + setting = setting is not None + + if setting: + if 'mode' in setting_data: + cooling = setting_data['mode'] == 'COOL' + + if 'fanSpeed' in setting_data: + fan_speed = setting_data['fanSpeed'] + if self._device_is_active: - overlay = False - overlay_data = None - termination = self._current_operation - cooling = False - fan_speed = CONST_MODE_OFF - - if 'overlay' in data: - overlay_data = data['overlay'] - overlay = overlay_data is not None - - if overlay: - termination = overlay_data['termination']['type'] - - if 'setting' in overlay_data: - cooling = overlay_data['setting']['mode'] == 'COOL' - fan_speed = overlay_data['setting']['fanSpeed'] - # If you set mode manualy to off, there will be an overlay # and a termination, but we want to see the mode "OFF" - self._overlay_mode = termination self._current_operation = termination - self._cooling = cooling - self._current_fan = fan_speed + + self._cooling = cooling + self._current_fan = fan_speed def _control_heating(self): """Send new target temperature to mytado.""" From 8f47a9109c03412d442af7ea583b3ea407295837 Mon Sep 17 00:00:00 2001 From: Russell Cloran Date: Sun, 23 Jul 2017 23:49:03 -0700 Subject: [PATCH 24/34] prometheus: Fix zwave battery level (#8615) --- homeassistant/components/prometheus.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/homeassistant/components/prometheus.py b/homeassistant/components/prometheus.py index 18a3a932d36..f244bcdd740 100644 --- a/homeassistant/components/prometheus.py +++ b/homeassistant/components/prometheus.py @@ -216,6 +216,9 @@ class Metrics: value = state_helper.state_as_number(state) metric.labels(**self._labels(state)).set(value) + def _handle_zwave(self, state): + self._battery(state) + class PrometheusView(HomeAssistantView): """Handle Prometheus requests.""" From 0c09cfc6c445950db9399b451fceb93466d2768a Mon Sep 17 00:00:00 2001 From: Anton Lundin Date: Mon, 24 Jul 2017 08:51:07 +0200 Subject: [PATCH 25/34] ubus: Make multiple instances work again (#8571) Back in "ubus: Refresh session on Access denied (#8111)" I added the decorator _refresh_on_acccess_denied. Somehow that stopped multiple ubus trackers from working in parallel, and only the one first init'ed worked. Changing the order of the decorators fixes the issue but, I'm sorry to say I can't figure out why. There's some magic somewhere which I'm missing. Signed-off-by: Anton Lundin --- homeassistant/components/device_tracker/ubus.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/device_tracker/ubus.py b/homeassistant/components/device_tracker/ubus.py index e3cef60c376..8d4cd1dcd73 100644 --- a/homeassistant/components/device_tracker/ubus.py +++ b/homeassistant/components/device_tracker/ubus.py @@ -115,8 +115,8 @@ class UbusDeviceScanner(DeviceScanner): return self.mac2name.get(device.upper(), None) - @Throttle(MIN_TIME_BETWEEN_SCANS) @_refresh_on_acccess_denied + @Throttle(MIN_TIME_BETWEEN_SCANS) def _update_info(self): """Ensure the information from the Luci router is up to date. From 36e266442f946156b5b25bc7fb364d2acaabfc61 Mon Sep 17 00:00:00 2001 From: Jeff Wilson Date: Mon, 24 Jul 2017 02:53:03 -0400 Subject: [PATCH 26/34] Properly slugify switch.flux update service name (#8545) --- homeassistant/components/switch/flux.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/switch/flux.py b/homeassistant/components/switch/flux.py index dea4285e3a9..5613bcbb19e 100644 --- a/homeassistant/components/switch/flux.py +++ b/homeassistant/components/switch/flux.py @@ -15,6 +15,7 @@ from homeassistant.components.switch import DOMAIN, SwitchDevice from homeassistant.const import CONF_NAME, CONF_PLATFORM from homeassistant.helpers.event import track_time_change from homeassistant.helpers.sun import get_astral_event_date +from homeassistant.util import slugify from homeassistant.util.color import ( color_temperature_to_rgb, color_RGB_to_xy, color_temperature_kelvin_to_mired) @@ -111,7 +112,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None): """Update lights.""" flux.flux_update() - hass.services.register(DOMAIN, name + '_update', update) + service_name = slugify("{} {}".format(name, 'update')) + hass.services.register(DOMAIN, service_name, update) class FluxSwitch(SwitchDevice): From c100b8cb52dcc1ec91d953fc42bab183292b3f40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Thu, 20 Jul 2017 11:12:42 +0200 Subject: [PATCH 27/34] Add is_lighting4 to RfxtrxBinarySensor (#8563) --- homeassistant/components/binary_sensor/rfxtrx.py | 1 + 1 file changed, 1 insertion(+) diff --git a/homeassistant/components/binary_sensor/rfxtrx.py b/homeassistant/components/binary_sensor/rfxtrx.py index b70169dc594..e86c948e191 100644 --- a/homeassistant/components/binary_sensor/rfxtrx.py +++ b/homeassistant/components/binary_sensor/rfxtrx.py @@ -154,6 +154,7 @@ class RfxtrxBinarySensor(BinarySensorDevice): self._device_class = device_class self._off_delay = off_delay self._state = False + self.is_lighting4 = False self.delay_listener = None self._data_bits = data_bits self._cmd_on = cmd_on From 0c97fe7eac0e5145fa7e9d3ac723ddb19433b2c8 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 28 Jul 2017 02:38:06 -0700 Subject: [PATCH 28/34] Version bump to 0.50 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index ca8075b10ab..751aa316084 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -2,7 +2,7 @@ """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 MINOR_VERSION = 50 -PATCH_VERSION = '0.dev0' +PATCH_VERSION = '0' __short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION) __version__ = '{}.{}'.format(__short_version__, PATCH_VERSION) REQUIRED_PYTHON_VER = (3, 4, 2) From 828c469ef7acc9e0c45d181cd07431c82b060aa4 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 28 Jul 2017 20:53:15 -0700 Subject: [PATCH 29/34] Fix Lint --- homeassistant/components/device_tracker/ubus.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/device_tracker/ubus.py b/homeassistant/components/device_tracker/ubus.py index cac4b7769e3..9ccc61dffc9 100644 --- a/homeassistant/components/device_tracker/ubus.py +++ b/homeassistant/components/device_tracker/ubus.py @@ -80,7 +80,7 @@ class UbusDeviceScanner(DeviceScanner): return self.last_results @_refresh_on_acccess_denied - def get_device_name(self, device): + def get_device_name(self, mac): """Return the name of the given device or None if we don't know.""" if self.leasefile is None: result = _req_json_rpc( @@ -105,10 +105,9 @@ class UbusDeviceScanner(DeviceScanner): # Error, handled in the _req_json_rpc return - return self.mac2name.get(device.upper(), None) + return self.mac2name.get(mac.upper(), None) @_refresh_on_acccess_denied - @Throttle(MIN_TIME_BETWEEN_SCANS) def _update_info(self): """Ensure the information from the Luci router is up to date. From 56f4486e0b86b6278f8853ed8741fab35bd77db0 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 29 Jul 2017 10:45:14 -0700 Subject: [PATCH 30/34] Update frontend --- homeassistant/components/frontend/version.py | 4 +- .../frontend/www_static/frontend.html | 2 +- .../frontend/www_static/frontend.html.gz | Bin 139371 -> 139470 bytes .../www_static/home-assistant-polymer | 2 +- .../panels/ha-panel-shopping-list.html | 108 +++++++++++++++++- .../panels/ha-panel-shopping-list.html.gz | Bin 5308 -> 6144 bytes .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2490 -> 2491 bytes 8 files changed, 112 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index a0958f65d95..985177e95f3 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -3,7 +3,7 @@ FINGERPRINTS = { "compatibility.js": "8e4c44b5f4288cc48ec1ba94a9bec812", "core.js": "d4a7cb8c80c62b536764e0e81385f6aa", - "frontend.html": "c44e49b9a0d9b9e4a626b7af34ca97d0", + "frontend.html": "c544d43b2305b922e230c7c4e74d7613", "mdi.html": "e91f61a039ed0a9936e7ee5360da3870", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", "panels/ha-panel-automation.html": "1982116c49ad26ee8d89295edc797084", @@ -19,6 +19,6 @@ FINGERPRINTS = { "panels/ha-panel-kiosk.html": "2ac2df41bd447600692a0054892fc094", "panels/ha-panel-logbook.html": "7c45bd41c146ec38b9938b8a5188bb0d", "panels/ha-panel-map.html": "50501cd53eb4304e9e46eb719aa894b7", - "panels/ha-panel-shopping-list.html": "c04af28c6475b90cbf2cf63ba1b841d0", + "panels/ha-panel-shopping-list.html": "0a6020ff6aec96a1e6220e00ea5b15f8", "panels/ha-panel-zwave.html": "422f95f820f8b6b231265351ffcf4dd1" } diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index ca86fd55d22..23c00301cf3 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -2,4 +2,4 @@ this._useContent&&u.Logical.saveChildNodes(this)},_setupRoot:function(){this._useContent&&(this._createLocalRoot(),this.dataHost||l(u.Logical.getChildNodes(this)))},_createLocalRoot:function(){this.shadyRoot=this.root,this.shadyRoot._distributionClean=!1,this.shadyRoot._hasDistributed=!1,this.shadyRoot._isShadyRoot=!0,this.shadyRoot._dirtyRoots=[];var e=this.shadyRoot._insertionPoints=!this._notes||this._notes._hasContent?this.shadyRoot.querySelectorAll("content"):[];u.Logical.saveChildNodes(this.shadyRoot);for(var t,o=0;o0?~setTimeout(e,t):(this._twiddle.textContent=this._twiddleContent++,this._callbacks.push(e),this._currVal++)},cancel:function(e){if(e<0)clearTimeout(~e);else{var t=e-this._lastVal;if(t>=0){if(!this._callbacks[t])throw"invalid async handle: "+e;this._callbacks[t]=null}}},_atEndOfMicrotask:function(){for(var e=this._callbacks.length,t=0;t \ No newline at end of file +;return"matrix("+o(i[0])+" "+o(i[1])+" "+o(i[4])+" "+o(i[5])+" "+o(i[12])+" "+o(i[13])+")"}}(n),function(t,e){function i(t,e){e.concat([t]).forEach(function(e){e in document.documentElement.style&&(n[t]=e),r[e]=t})}var n={},r={};i("transform",["webkitTransform","msTransform"]),i("transformOrigin",["webkitTransformOrigin"]),i("perspective",["webkitPerspective"]),i("perspectiveOrigin",["webkitPerspectiveOrigin"]),t.propertyName=function(t){return n[t]||t},t.unprefixedPropertyName=function(t){return r[t]||t}}(n)}(),function(){if(void 0===document.createElement("div").animate([]).oncancel){var t;if(window.performance&&performance.now)var t=function(){return performance.now()};else var t=function(){return Date.now()};var e=function(t,e,i){this.target=t,this.currentTime=e,this.timelineTime=i,this.type="cancel",this.bubbles=!1,this.cancelable=!1,this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},i=window.Element.prototype.animate;window.Element.prototype.animate=function(n,r){var o=i.call(this,n,r);o._cancelHandlers=[],o.oncancel=null;var a=o.cancel;o.cancel=function(){a.call(this);var i=new e(this,null,t()),n=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){n.forEach(function(t){t.call(i.target,i)})},0)};var s=o.addEventListener;o.addEventListener=function(t,e){"function"==typeof e&&"cancel"==t?this._cancelHandlers.push(e):s.call(this,t,e)};var u=o.removeEventListener;return o.removeEventListener=function(t,e){if("cancel"==t){var i=this._cancelHandlers.indexOf(e);i>=0&&this._cancelHandlers.splice(i,1)}else u.call(this,t,e)},o}}}(),function(t){var e=document.documentElement,i=null,n=!1;try{var r=getComputedStyle(e).getPropertyValue("opacity"),o="0"==r?"1":"0";i=e.animate({opacity:[o,o]},{duration:1}),i.currentTime=0,n=getComputedStyle(e).getPropertyValue("opacity")==o}catch(t){}finally{i&&i.cancel()}if(!n){var a=window.Element.prototype.animate;window.Element.prototype.animate=function(e,i){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||null===e||(e=t.convertToArrayForm(e)),a.call(this,e,i)}}}(i),function(t,e,i){function n(t){var i=e.timeline;i.currentTime=t,i._discardAnimations(),0==i._animations.length?o=!1:requestAnimationFrame(n)}var r=window.requestAnimationFrame;window.requestAnimationFrame=function(t){return r(function(i){e.timeline._updateAnimationsPromises(),t(i),e.timeline._updateAnimationsPromises()})},e.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},e.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){e.animationsWithPromises=e.animationsWithPromises.filter(function(t){return t._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(t){return"finished"!=t.playState&&"idle"!=t.playState})},_play:function(t){var i=new e.Animation(t,this);return this._animations.push(i),e.restartWebAnimationsNextTick(),i._updatePromises(),i._animation.play(),i._updatePromises(),i},play:function(t){return t&&t.remove(),this._play(t)}};var o=!1;e.restartWebAnimationsNextTick=function(){o||(o=!0,requestAnimationFrame(n))};var a=new e.AnimationTimeline;e.timeline=a;try{Object.defineProperty(window.document,"timeline",{configurable:!0,get:function(){return a}})}catch(t){}try{window.document.timeline=a}catch(t){}}(0,r),function(t,e,i){e.animationsWithPromises=[],e.Animation=function(e,i){if(this.id="",e&&e._id&&(this.id=e._id),this.effect=e,e&&(e._animation=this),!i)throw new Error("Animation with null timeline is not supported");this._timeline=i,this._sequenceNumber=t.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState="idle",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},e.Animation.prototype={_updatePromises:function(){var t=this._oldPlayState,e=this.playState;return this._readyPromise&&e!==t&&("idle"==e?(this._rejectReadyPromise(),this._readyPromise=void 0):"pending"==t?this._resolveReadyPromise():"pending"==e&&(this._readyPromise=void 0)),this._finishedPromise&&e!==t&&("idle"==e?(this._rejectFinishedPromise(),this._finishedPromise=void 0):"finished"==e?this._resolveFinishedPromise():"finished"==t&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var t,i,n,r,o=!!this._animation;o&&(t=this.playbackRate,i=this._paused,n=this.startTime,r=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=e.newUnderlyingAnimationForKeyframeEffect(this.effect),e.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=e.newUnderlyingAnimationForGroup(this.effect),e.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&e.bindAnimationForCustomEffect(this),o&&(1!=t&&(this.playbackRate=t),null!==n?this.startTime=n:null!==r?this.currentTime=r:null!==this._holdTime&&(this.currentTime=this._holdTime),i&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&"idle"!=this.playState){var t=this.effect._timing.delay;this._childAnimations.forEach(function(i){this._arrangeChildren(i,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i.effect))}.bind(this))}},_setExternalAnimation:function(t){if(this.effect&&this._isGroup)for(var e=0;e \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/frontend.html.gz b/homeassistant/components/frontend/www_static/frontend.html.gz index a55204f203c36e36624813e501c97257c6755fd0..ad2cc4fb8cf0038f3583228f4f1371e0b31af173 100644 GIT binary patch delta 83077 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 QgpX0Z4h0{m=KEf3sr|eede(>Z#D8 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 \ No newline at end of file + \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-shopping-list.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-shopping-list.html.gz index 6c71d75c39096ba7237d6622b4046bb8c125c169..76577a763119ab74f445f4ec39294e974c418994 100644 GIT binary patch literal 6144 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 Ot^WnUqSg?9O8@|0oJ1)A diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index bb8dcaf4735..05af75abb23 100644 --- a/homeassistant/components/frontend/www_static/service_worker.js +++ b/homeassistant/components/frontend/www_static/service_worker.js @@ -1 +1 @@ -"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}function notificationEventCallback(e,t){firePushCallback({action:t.action,data:t.notification.data,tag:t.notification.tag,type:e},t.notification.data.jwt)}function firePushCallback(e,t){delete e.data.jwt,0===Object.keys(e.data).length&&e.data.constructor===Object&&delete e.data,fetch("/api/notify.html5/callback",{method:"POST",headers:new Headers({"Content-Type":"application/json",Authorization:"Bearer "+t}),body:JSON.stringify(e)})}var precacheConfig=[["/","e8a916ce10360ad5d87ca48fc5444525"],["/frontend/panels/dev-event-77784d5f0c73fcc3b29b6cc050bdf324.html","eebf53a12ae770fea7c5429de2db810c"],["/frontend/panels/dev-info-24e888ec7a8acd0c395b34396e9001bc.html","7bb116813e8dbab7bcfabdf4de3ec83f"],["/frontend/panels/dev-service-86a42a17f4894478b6b77bc636beafd0.html","86888ff94a1958074cde156739687ba0"],["/frontend/panels/dev-state-31ef6ffe3347cdda5bb0cbbc54b62cde.html","38dc27f1f817045900f396a61c7e736f"],["/frontend/panels/dev-template-d1d76e20fe9622cddee33e67318abde8.html","2973bd8b33775239a4a05d6d569dd331"],["/frontend/panels/map-50501cd53eb4304e9e46eb719aa894b7.html","410d870df0226d08078d8dc45d02a8ef"],["/static/compatibility-8e4c44b5f4288cc48ec1ba94a9bec812.js","4704a985ad259e324c3d8a0a40f6d937"],["/static/core-d4a7cb8c80c62b536764e0e81385f6aa.js","37e34ec6aa0fa155c7d50e2883be1ead"],["/static/frontend-c44e49b9a0d9b9e4a626b7af34ca97d0.html","de85e6c361344f98a02beed34046df6b"],["/static/mdi-e91f61a039ed0a9936e7ee5360da3870.html","5e587bc82719b740a4f0798722a83aee"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","32b5a9b7ada86304bec6b43d3f2194f0"]],cacheName="sw-precache-v3--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var a=new URL(e);return"/"===a.pathname.slice(-1)&&(a.pathname+=t),a.toString()},cleanResponse=function(e){return e.redirected?("body"in e?Promise.resolve(e.body):e.blob()).then(function(t){return new Response(t,{headers:e.headers,status:e.status,statusText:e.statusText})}):Promise.resolve(e)},createCacheKey=function(e,t,a,n){var c=new URL(e);return n&&c.pathname.match(n)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(a)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var a=new URL(t).pathname;return e.some(function(e){return a.match(e)})},stripIgnoredUrlParameters=function(e,t){var a=new URL(e);return a.search=a.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),a.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],a=e[1],n=new URL(t,self.location),c=createCacheKey(n,hashParamName,a,!1);return[n.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(a){if(!t.has(a)){var n=new Request(a,{credentials:"same-origin"});return fetch(n).then(function(t){if(!t.ok)throw new Error("Request for "+a+" returned a response with status "+t.status);return cleanResponse(t).then(function(t){return e.put(a,t)})})}}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(a){return Promise.all(a.map(function(a){if(!t.has(a.url))return e.delete(a)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,a=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(a);t||(a=addDirectoryIndex(a,"index.html"),t=urlsToCacheKeys.has(a));!t&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(a=new URL("/",self.location).toString(),t=urlsToCacheKeys.has(a)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(a)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}),self.addEventListener("push",function(e){var t;e.data&&(t=e.data.json(),e.waitUntil(self.registration.showNotification(t.title,t).then(function(e){firePushCallback({type:"received",tag:t.tag,data:t.data},t.data.jwt)})))}),self.addEventListener("notificationclick",function(e){var t;notificationEventCallback("clicked",e),e.notification.close(),e.notification.data&&e.notification.data.url&&(t=e.notification.data.url)&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var a,n;for(a=0;aa zLID{PNn|K8rcSGAvAHS)jysPH5tSsOhplOjx2pt2zKqnNg< zNChN;NHJx}6FbtlT$M(Z3}l*MNT}yYNU|l8RwPq{jKINcqbkf(#%0DCOVc=HIYi*c zGLdnTOUYPpTot92aZLUWgp3*Ti1`ub7$wNlAO|26dAiXMe+9nGQeP@R3=`=SY?-9} zMX~fl$Z*(<0jLlYQ7>0C;6+*Jn{kGbh$0@VD9kb;A|gY;f#Aj}$ZnPDE7XnaF&Rggjbj02y#UVc!$=OEF*QK~_p`j9D0lK^T2c)~_gw^>PrV zkfJ@J;GjK

DE`1_UI36ekf2#ICf$6o!d{D>E1edH9X~yj3;tn4af8;~7Cj20=<( z@o9&g@>LK7X?#+SNB?NOAB8OD5-7V;=AvyO4+O`MGEtrgwFgnLggLfUX&U)?NzlM& ziu)UEKJ)ot4KRwDKn5bnD9tlQG>bwqC1*Yok6>5YHF6Vqbw%m3sRRiH2TwuhmSreX$UsP6usr50VtInO?+09L)TEpTL6QXwGs%Ic zTqqzzB8dz|#?)ywEjCw$z;Tv96he@yD9fWL&3M975|glmBPi)_G-U}Hq*NY3kjI&y zMnYl`Cn?#Kr5yYxG=FK(IA#H=L@8t}N`;gVbM6by2^F4%Bx|FGWm1Hx3RD)PeiYMo z6{&zE5GkfCd16Nzm#fmKl7UPU3<>o-2}!m@(u!nikP$eTZB&JM%DBupV`&z4g`PB$+JP|eQAvX!U*y# z1{uaV68{8~8Tb(SDv>!$A1P=EoQSB%Gm-fs33<$tG>OnhqEHsA1fZA8Qe+VddiE6r zaV%09`$(2Bj!ppu@1EQZLSr%*qnzj9OZtxyBq6a06pIAp=>wO@2QemsB>{^fm6O3C zN0cn`qeQBN?@3?EVvKp9k^p>`qx2!qS%N7d8ShJA1n@?1lavE0NtLmYg}D$!jwnfp zjsd|;0UQE=47i`L?}_@Qm@o7oD1k06POgnEDXaSjJ_x9SCqwiIS5lo z(H>E7&>lrdi7S%_1SEgtqlg7!S6X2T!$iTA8H|HG{6>G?s+xC9&vT#gj36R|ASJH& zv_nq$DhPr!J}Jkef3)6@LKbrglwB!v(YBBWf@4UTC{KjigQ!@-99yb1jr_bMXy7x& z{S7vs`FyYj7)4DW0}*5_rcllxi9#|ZXFd{-U{~5Taua!VMd`Du1PKKQ)xx1YV-^4a DGqNuE From f0e5f688650f5b2414ca5b868a3be82b209446d3 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 29 Jul 2017 08:48:09 -0700 Subject: [PATCH 31/34] Shopping List: edit name / complete status (#8666) * Shopping List: edit name / complete status * Change ID to be UUID based --- homeassistant/components/shopping_list.py | 72 ++++++++++++++++-- tests/components/test_shopping_list.py | 90 ++++++++++++++++++++++- 2 files changed, 154 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/shopping_list.py b/homeassistant/components/shopping_list.py index ac59c15572a..9922960da3f 100644 --- a/homeassistant/components/shopping_list.py +++ b/homeassistant/components/shopping_list.py @@ -1,9 +1,11 @@ """Component to manage a shoppling list.""" import asyncio import logging +import uuid import voluptuous as vol +from homeassistant.const import HTTP_NOT_FOUND, HTTP_BAD_REQUEST from homeassistant.core import callback from homeassistant.components import http from homeassistant.helpers import intent @@ -17,15 +19,20 @@ CONFIG_SCHEMA = vol.Schema({DOMAIN: {}}, extra=vol.ALLOW_EXTRA) EVENT = 'shopping_list_updated' INTENT_ADD_ITEM = 'HassShoppingListAddItem' INTENT_LAST_ITEMS = 'HassShoppingListLastItems' +ITEM_UPDATE_SCHEMA = vol.Schema({ + 'complete': bool, + 'name': str, +}) @asyncio.coroutine def async_setup(hass, config): """Initialize the shopping list.""" - hass.data[DOMAIN] = [] + hass.data[DOMAIN] = ShoppingData([]) intent.async_register(hass, AddItemIntent()) intent.async_register(hass, ListTopItemsIntent()) hass.http.register_view(ShoppingListView) + hass.http.register_view(UpdateShoppingListItemView) hass.components.conversation.async_register(INTENT_ADD_ITEM, [ 'Add {item} to my shopping list', ]) @@ -37,6 +44,37 @@ def async_setup(hass, config): return True +class ShoppingData: + """Class to hold shopping list data.""" + + def __init__(self, items): + """Initialize the shopping list.""" + self.items = items + + def add(self, name): + """Add a shopping list item.""" + self.items.append({ + 'name': name, + 'id': uuid.uuid4().hex, + 'complete': False + }) + + def update(self, item_id, info): + """Update a shopping list item.""" + item = next((itm for itm in self.items if itm['id'] == item_id), None) + + if item is None: + raise KeyError + + info = ITEM_UPDATE_SCHEMA(info) + item.update(info) + return item + + def clear_completed(self): + """Clear completed items.""" + self.items = [itm for itm in self.items if not itm['complete']] + + class AddItemIntent(intent.IntentHandler): """Handle AddItem intents.""" @@ -50,7 +88,7 @@ class AddItemIntent(intent.IntentHandler): """Handle the intent.""" slots = self.async_validate_slots(intent_obj.slots) item = slots['item']['value'] - intent_obj.hass.data[DOMAIN].append(item) + intent_obj.hass.data[DOMAIN].add(item) response = intent_obj.create_response() response.async_set_speech( @@ -70,16 +108,17 @@ class ListTopItemsIntent(intent.IntentHandler): @asyncio.coroutine def async_handle(self, intent_obj): """Handle the intent.""" - items = intent_obj.hass.data[DOMAIN][-5:] + items = intent_obj.hass.data[DOMAIN].items[-5:] response = intent_obj.create_response() - if len(items) == 0: + if not items: response.async_set_speech( "There are no items on your shopping list") else: response.async_set_speech( "These are the top {} items on your shopping list: {}".format( - min(len(items), 5), ', '.join(reversed(items)))) + min(len(items), 5), + ', '.join(itm['name'] for itm in reversed(items)))) return response @@ -92,4 +131,25 @@ class ShoppingListView(http.HomeAssistantView): @callback def get(self, request): """Retrieve if API is running.""" - return self.json(request.app['hass'].data[DOMAIN]) + return self.json(request.app['hass'].data[DOMAIN].items) + + +class UpdateShoppingListItemView(http.HomeAssistantView): + """View to retrieve shopping list content.""" + + url = '/api/shopping_list/{item_id}' + name = "api:shopping_list:id" + + @callback + def post(self, request, item_id): + """Retrieve if API is running.""" + data = yield from request.json() + + try: + item = request.app['hass'].data[DOMAIN].update(item_id, data) + request.app['hass'].bus.async_fire(EVENT) + return self.json(item) + except KeyError: + return self.json_message('Item not found', HTTP_NOT_FOUND) + except vol.Invalid: + return self.json_message('Item not found', HTTP_BAD_REQUEST) diff --git a/tests/components/test_shopping_list.py b/tests/components/test_shopping_list.py index c25ce593c54..e4a99ad39d4 100644 --- a/tests/components/test_shopping_list.py +++ b/tests/components/test_shopping_list.py @@ -42,7 +42,7 @@ def test_recent_items_intent(hass): @asyncio.coroutine -def test_api(hass, test_client): +def test_api_get_all(hass, test_client): """Test the API.""" yield from async_setup_component(hass, 'shopping_list', {}) @@ -58,4 +58,90 @@ def test_api(hass, test_client): assert resp.status == 200 data = yield from resp.json() - assert data == ['beer', 'wine'] + assert len(data) == 2 + assert data[0]['name'] == 'beer' + assert not data[0]['complete'] + assert data[1]['name'] == 'wine' + assert not data[1]['complete'] + + +@asyncio.coroutine +def test_api_update(hass, test_client): + """Test the API.""" + yield from async_setup_component(hass, 'shopping_list', {}) + + yield from intent.async_handle( + hass, 'test', 'HassShoppingListAddItem', {'item': {'value': 'beer'}} + ) + yield from intent.async_handle( + hass, 'test', 'HassShoppingListAddItem', {'item': {'value': 'wine'}} + ) + + beer_id = hass.data['shopping_list'].items[0]['id'] + wine_id = hass.data['shopping_list'].items[1]['id'] + + client = yield from test_client(hass.http.app) + resp = yield from client.post( + '/api/shopping_list/{}'.format(beer_id), json={ + 'name': 'soda' + }) + + assert resp.status == 200 + data = yield from resp.json() + assert data == { + 'id': beer_id, + 'name': 'soda', + 'complete': False + } + + resp = yield from client.post( + '/api/shopping_list/{}'.format(wine_id), json={ + 'complete': True + }) + + assert resp.status == 200 + data = yield from resp.json() + assert data == { + 'id': wine_id, + 'name': 'wine', + 'complete': True + } + + beer, wine = hass.data['shopping_list'].items + assert beer == { + 'id': beer_id, + 'name': 'soda', + 'complete': False + } + assert wine == { + 'id': wine_id, + 'name': 'wine', + 'complete': True + } + + +@asyncio.coroutine +def test_api_update_fails(hass, test_client): + """Test the API.""" + yield from async_setup_component(hass, 'shopping_list', {}) + + yield from intent.async_handle( + hass, 'test', 'HassShoppingListAddItem', {'item': {'value': 'beer'}} + ) + + client = yield from test_client(hass.http.app) + resp = yield from client.post( + '/api/shopping_list/non_existing', json={ + 'name': 'soda' + }) + + assert resp.status == 404 + + beer_id = hass.data['shopping_list'].items[0]['id'] + client = yield from test_client(hass.http.app) + resp = yield from client.post( + '/api/shopping_list/{}'.format(beer_id), json={ + 'name': 123, + }) + + assert resp.status == 400 From c376bc2e451734d03f559a5743a9020c105992be Mon Sep 17 00:00:00 2001 From: William Scanlon Date: Fri, 28 Jul 2017 12:02:16 -0400 Subject: [PATCH 32/34] Support for Wink local control (#8607) * Support for Wink local control --- homeassistant/components/wink.py | 38 ++++++++++++++++++++++---------- requirements_all.txt | 2 +- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/wink.py b/homeassistant/components/wink.py index 1783d4bd79a..e6d60aa5568 100644 --- a/homeassistant/components/wink.py +++ b/homeassistant/components/wink.py @@ -25,7 +25,7 @@ from homeassistant.const import ( from homeassistant.helpers.entity import Entity import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['python-wink==1.3.1', 'pubnubsub-handler==1.0.2'] +REQUIREMENTS = ['python-wink==1.4.2', 'pubnubsub-handler==1.0.2'] _LOGGER = logging.getLogger(__name__) @@ -36,10 +36,10 @@ SUBSCRIPTION_HANDLER = None CONF_CLIENT_ID = 'client_id' CONF_CLIENT_SECRET = 'client_secret' CONF_USER_AGENT = 'user_agent' -CONF_OATH = 'oath' +CONF_OAUTH = 'oauth' +CONF_LOCAL_CONTROL = 'local_control' CONF_APPSPOT = 'appspot' -CONF_DEFINED_BOTH_MSG = 'Remove access token to use oath2.' -CONF_MISSING_OATH_MSG = 'Missing oath2 credentials.' +CONF_MISSING_OAUTH_MSG = 'Missing oauth2 credentials.' CONF_TOKEN_URL = "https://winkbearertoken.appspot.com/token" ATTR_ACCESS_TOKEN = 'access_token' @@ -64,15 +64,14 @@ SERVICE_KEEP_ALIVE = 'keep_pubnub_updates_flowing' CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ vol.Inclusive(CONF_EMAIL, CONF_APPSPOT, - msg=CONF_MISSING_OATH_MSG): cv.string, + msg=CONF_MISSING_OAUTH_MSG): cv.string, vol.Inclusive(CONF_PASSWORD, CONF_APPSPOT, - msg=CONF_MISSING_OATH_MSG): cv.string, - vol.Inclusive(CONF_CLIENT_ID, CONF_OATH, - msg=CONF_MISSING_OATH_MSG): cv.string, - vol.Inclusive(CONF_CLIENT_SECRET, CONF_OATH, - msg=CONF_MISSING_OATH_MSG): cv.string, - vol.Exclusive(CONF_EMAIL, CONF_OATH, - msg=CONF_DEFINED_BOTH_MSG): cv.string, + msg=CONF_MISSING_OAUTH_MSG): cv.string, + vol.Inclusive(CONF_CLIENT_ID, CONF_OAUTH, + msg=CONF_MISSING_OAUTH_MSG): cv.string, + vol.Inclusive(CONF_CLIENT_SECRET, CONF_OAUTH, + msg=CONF_MISSING_OAUTH_MSG): cv.string, + vol.Optional(CONF_LOCAL_CONTROL, default=False): cv.boolean }) }, extra=vol.ALLOW_EXTRA) @@ -206,8 +205,11 @@ def setup(hass, config): client_secret = config[DOMAIN].get(ATTR_CLIENT_SECRET) email = config[DOMAIN].get(CONF_EMAIL) password = config[DOMAIN].get(CONF_PASSWORD) + local_control = config[DOMAIN].get(CONF_LOCAL_CONTROL) if None not in [client_id, client_secret]: _LOGGER.info("Using legacy oauth authentication") + if not local_control: + pywink.disable_local_control() hass.data[DOMAIN]["oauth"]["client_id"] = client_id hass.data[DOMAIN]["oauth"]["client_secret"] = client_secret hass.data[DOMAIN]["oauth"]["email"] = email @@ -216,11 +218,14 @@ def setup(hass, config): client_id, client_secret) elif None not in [email, password]: _LOGGER.info("Using web form authentication") + pywink.disable_local_control() hass.data[DOMAIN]["oauth"]["email"] = email hass.data[DOMAIN]["oauth"]["password"] = password _get_wink_token_from_web() else: _LOGGER.info("Using new oauth authentication") + if not local_control: + pywink.disable_local_control() config_path = hass.config.path(WINK_CONFIG_FILE) if os.path.isfile(config_path): config_file = _read_config_file(config_path) @@ -304,6 +309,15 @@ def setup(hass, config): hass.bus.listen(EVENT_HOMEASSISTANT_STOP, stop_subscription) + def save_credentials(event): + """Save currently set oauth credentials.""" + if hass.data[DOMAIN]["oauth"].get("email") is None: + config_path = hass.config.path(WINK_CONFIG_FILE) + _config = pywink.get_current_oauth_credentials() + _write_config_file(config_path, _config) + + hass.bus.listen(EVENT_HOMEASSISTANT_STOP, save_credentials) + def force_update(call): """Force all devices to poll the Wink API.""" _LOGGER.info("Refreshing Wink states from API") diff --git a/requirements_all.txt b/requirements_all.txt index 5bce15dbfd2..84e3618d2a0 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -768,7 +768,7 @@ python-velbus==2.0.11 python-vlc==1.1.2 # homeassistant.components.wink -python-wink==1.3.1 +python-wink==1.4.2 # homeassistant.components.zwave python_openzwave==0.4.0.31 From 12dec93565a1bea09876d6cb9a429be7968f3599 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 29 Jul 2017 12:18:50 -0700 Subject: [PATCH 33/34] Update frontend --- homeassistant/components/frontend/version.py | 4 ++-- .../frontend/www_static/frontend.html | 2 +- .../frontend/www_static/frontend.html.gz | Bin 139470 -> 139501 bytes .../www_static/home-assistant-polymer | 2 +- .../panels/ha-panel-shopping-list.html | 10 +++++++--- .../panels/ha-panel-shopping-list.html.gz | Bin 6144 -> 15408 bytes .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2491 -> 2492 bytes 8 files changed, 12 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 985177e95f3..469452f7e49 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -3,7 +3,7 @@ FINGERPRINTS = { "compatibility.js": "8e4c44b5f4288cc48ec1ba94a9bec812", "core.js": "d4a7cb8c80c62b536764e0e81385f6aa", - "frontend.html": "c544d43b2305b922e230c7c4e74d7613", + "frontend.html": "7d599996578579600f1000d6d25e649d", "mdi.html": "e91f61a039ed0a9936e7ee5360da3870", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", "panels/ha-panel-automation.html": "1982116c49ad26ee8d89295edc797084", @@ -19,6 +19,6 @@ FINGERPRINTS = { "panels/ha-panel-kiosk.html": "2ac2df41bd447600692a0054892fc094", "panels/ha-panel-logbook.html": "7c45bd41c146ec38b9938b8a5188bb0d", "panels/ha-panel-map.html": "50501cd53eb4304e9e46eb719aa894b7", - "panels/ha-panel-shopping-list.html": "0a6020ff6aec96a1e6220e00ea5b15f8", + "panels/ha-panel-shopping-list.html": "1d7126efc9ff9a102df7465d803a11d1", "panels/ha-panel-zwave.html": "422f95f820f8b6b231265351ffcf4dd1" } diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index 23c00301cf3..7dd7b17c987 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -2,4 +2,4 @@ this._useContent&&u.Logical.saveChildNodes(this)},_setupRoot:function(){this._useContent&&(this._createLocalRoot(),this.dataHost||l(u.Logical.getChildNodes(this)))},_createLocalRoot:function(){this.shadyRoot=this.root,this.shadyRoot._distributionClean=!1,this.shadyRoot._hasDistributed=!1,this.shadyRoot._isShadyRoot=!0,this.shadyRoot._dirtyRoots=[];var e=this.shadyRoot._insertionPoints=!this._notes||this._notes._hasContent?this.shadyRoot.querySelectorAll("content"):[];u.Logical.saveChildNodes(this.shadyRoot);for(var t,o=0;o0?~setTimeout(e,t):(this._twiddle.textContent=this._twiddleContent++,this._callbacks.push(e),this._currVal++)},cancel:function(e){if(e<0)clearTimeout(~e);else{var t=e-this._lastVal;if(t>=0){if(!this._callbacks[t])throw"invalid async handle: "+e;this._callbacks[t]=null}}},_atEndOfMicrotask:function(){for(var e=this._callbacks.length,t=0;t \ No newline at end of file +;return"matrix("+o(i[0])+" "+o(i[1])+" "+o(i[4])+" "+o(i[5])+" "+o(i[12])+" "+o(i[13])+")"}}(n),function(t,e){function i(t,e){e.concat([t]).forEach(function(e){e in document.documentElement.style&&(n[t]=e),r[e]=t})}var n={},r={};i("transform",["webkitTransform","msTransform"]),i("transformOrigin",["webkitTransformOrigin"]),i("perspective",["webkitPerspective"]),i("perspectiveOrigin",["webkitPerspectiveOrigin"]),t.propertyName=function(t){return n[t]||t},t.unprefixedPropertyName=function(t){return r[t]||t}}(n)}(),function(){if(void 0===document.createElement("div").animate([]).oncancel){var t;if(window.performance&&performance.now)var t=function(){return performance.now()};else var t=function(){return Date.now()};var e=function(t,e,i){this.target=t,this.currentTime=e,this.timelineTime=i,this.type="cancel",this.bubbles=!1,this.cancelable=!1,this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},i=window.Element.prototype.animate;window.Element.prototype.animate=function(n,r){var o=i.call(this,n,r);o._cancelHandlers=[],o.oncancel=null;var a=o.cancel;o.cancel=function(){a.call(this);var i=new e(this,null,t()),n=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){n.forEach(function(t){t.call(i.target,i)})},0)};var s=o.addEventListener;o.addEventListener=function(t,e){"function"==typeof e&&"cancel"==t?this._cancelHandlers.push(e):s.call(this,t,e)};var u=o.removeEventListener;return o.removeEventListener=function(t,e){if("cancel"==t){var i=this._cancelHandlers.indexOf(e);i>=0&&this._cancelHandlers.splice(i,1)}else u.call(this,t,e)},o}}}(),function(t){var e=document.documentElement,i=null,n=!1;try{var r=getComputedStyle(e).getPropertyValue("opacity"),o="0"==r?"1":"0";i=e.animate({opacity:[o,o]},{duration:1}),i.currentTime=0,n=getComputedStyle(e).getPropertyValue("opacity")==o}catch(t){}finally{i&&i.cancel()}if(!n){var a=window.Element.prototype.animate;window.Element.prototype.animate=function(e,i){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||null===e||(e=t.convertToArrayForm(e)),a.call(this,e,i)}}}(i),function(t,e,i){function n(t){var i=e.timeline;i.currentTime=t,i._discardAnimations(),0==i._animations.length?o=!1:requestAnimationFrame(n)}var r=window.requestAnimationFrame;window.requestAnimationFrame=function(t){return r(function(i){e.timeline._updateAnimationsPromises(),t(i),e.timeline._updateAnimationsPromises()})},e.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},e.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){e.animationsWithPromises=e.animationsWithPromises.filter(function(t){return t._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(t){return"finished"!=t.playState&&"idle"!=t.playState})},_play:function(t){var i=new e.Animation(t,this);return this._animations.push(i),e.restartWebAnimationsNextTick(),i._updatePromises(),i._animation.play(),i._updatePromises(),i},play:function(t){return t&&t.remove(),this._play(t)}};var o=!1;e.restartWebAnimationsNextTick=function(){o||(o=!0,requestAnimationFrame(n))};var a=new e.AnimationTimeline;e.timeline=a;try{Object.defineProperty(window.document,"timeline",{configurable:!0,get:function(){return a}})}catch(t){}try{window.document.timeline=a}catch(t){}}(0,r),function(t,e,i){e.animationsWithPromises=[],e.Animation=function(e,i){if(this.id="",e&&e._id&&(this.id=e._id),this.effect=e,e&&(e._animation=this),!i)throw new Error("Animation with null timeline is not supported");this._timeline=i,this._sequenceNumber=t.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState="idle",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},e.Animation.prototype={_updatePromises:function(){var t=this._oldPlayState,e=this.playState;return this._readyPromise&&e!==t&&("idle"==e?(this._rejectReadyPromise(),this._readyPromise=void 0):"pending"==t?this._resolveReadyPromise():"pending"==e&&(this._readyPromise=void 0)),this._finishedPromise&&e!==t&&("idle"==e?(this._rejectFinishedPromise(),this._finishedPromise=void 0):"finished"==e?this._resolveFinishedPromise():"finished"==t&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var t,i,n,r,o=!!this._animation;o&&(t=this.playbackRate,i=this._paused,n=this.startTime,r=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=e.newUnderlyingAnimationForKeyframeEffect(this.effect),e.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=e.newUnderlyingAnimationForGroup(this.effect),e.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&e.bindAnimationForCustomEffect(this),o&&(1!=t&&(this.playbackRate=t),null!==n?this.startTime=n:null!==r?this.currentTime=r:null!==this._holdTime&&(this.currentTime=this._holdTime),i&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&"idle"!=this.playState){var t=this.effect._timing.delay;this._childAnimations.forEach(function(i){this._arrangeChildren(i,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i.effect))}.bind(this))}},_setExternalAnimation:function(t){if(this.effect&&this._isGroup)for(var e=0;e \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/frontend.html.gz b/homeassistant/components/frontend/www_static/frontend.html.gz index ad2cc4fb8cf0038f3583228f4f1371e0b31af173..d41c459ae9b59c2f9233602083606c4a653c80d6 100644 GIT binary patch delta 27986 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

@lk)6`u`Uq_30 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 diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index 23f0744fe27..7f6aeaf2a2e 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 23f0744fe272b6d306dde9592d872c34d53fa6b7 +Subproject commit 7f6aeaf2a2e8a91f59030300fbf47f0b8e3952f1 diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-shopping-list.html b/homeassistant/components/frontend/www_static/panels/ha-panel-shopping-list.html index ea6e121dcf6..0eb37f1a00d 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-shopping-list.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-shopping-list.html @@ -1,4 +1,4 @@ -

\ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-shopping-list.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-shopping-list.html.gz index 76577a763119ab74f445f4ec39294e974c418994..687f39056836d14629c45edd06169259406744f6 100644 GIT binary patch literal 15408 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 a-db5{VlL>5>-r{p^}hifAaDR^=KuhUXDcB9 literal 6144 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 G761SN73}%| literal 2491 zcmV;s2}JfEiwFP!000021EpAPbKAHP{woTn=Ob&1A_=}))nx9{Oq=%ZlF7^DL+Z;c zfQ7__B2^Ny3RqIOVqOL|Q>euQ8 zhy}_IP1)M$+%~A!O*KOAE8euWbrmMTZa^DN9&#xRhW zXTrL4=|k0YX35D4DlFTH#H%qHpO4ct%_12qU!+V4!FZVSLI-j>24GD0vq6Pv|KsRgc36vn)fALIy(mg5@!15z7ysPH5tSsOhplOjx2pt2zK zqnNgv7=2IHuPBT4auBAFqCKMEpgoFEi8xD$ zjFe?k;x@_tp0Kw#UzgAf(m*hk=DDPB1QiE)LirAf9O>`~`XR6`h0giyexAR$XA(8+xXMZ9Dx407U@b$RJ_MdmkH;>>EV$D67% zzGCCCb#Av|o9YKMQ)fTC{e=qRwC`)E{!uvxkCM!yBI#aB zr55dR;GCV=57Xx}?YQ9S`dwF3ZRg$SfWI*KJ*1A$1()opV9IWzB8paTBKZny`&ZTf4WL_JImTKXQ%#)@Gs~4A1ZJo8Hcu z2h-|Z9N1xY)gV=iuDkpv-t1xMf?M@CibEVn)!CVNKyhgtWLM7Joh`hU+7q!jpKXWF ztuxEG_8cowOZ@Qm)r$?;XtU?m%sTc49LE)VE-2bJr10Z{=vfkTP(Jc`p={IL;n2%D zy{XUq={^~>vo(CW^<7&p@mL=W!``}<$~7(4>QzTjxyR5y#y*nPBQo0z2L1((*HY7` zZ9>X9-Lwzi%q-KntD+>$$3D~^^=Zw`5k@_uY>X{+^`HDpr|bVu>iSX_)kal6Cet3p z!~)tyhe03upLb&4a_NN8zOOgbYCAN3C2jjX>45H zU6gjWgVv**RoUC*cltDSc!oO}^P4Co_4ZFq12-PE7EAjPn%)(ZYiv#O*aHx{C?Gcz z3?_m)IC}u!;=k9%_u$?VXp;6@K-pecEm=OM)5W}~totof`?F1T#LixR{ngQnroQfS z)XS!+3AI7PNY&;FBLI^!|53_66{<{5f_d`fwdNAGfrd_DNz$5bqZ_ z>Qu^ybf6cYN7vAf@Y|~Eokm4FB8IoLG0*C$Dmn{}H?|+@cM)Zsx~ar9Ir9 zIZp-l?u{EI1aqBrxYg4)f>yW27=mWwd-r#utSPx4O!ufAnKbSh;5_=yF{^fR?vTDZ z=Ke&9a=_-ALchMYj$M0p9h+NCi7FIy{uKVQX(Oj_e(n&dE9ypox)Gy~vVqACsut_k zH2Kwr@Riri+0K+!Y|JpB_OVm#Y>V9EH@1E{%kDda(A#&$lWw4|J1 Date: Sat, 29 Jul 2017 12:22:38 -0700 Subject: [PATCH 34/34] Persist shopping list + clear completed (#8697) --- homeassistant/components/shopping_list.py | 71 +++++++++++++++++++---- tests/components/test_shopping_list.py | 53 ++++++++++++++++- 2 files changed, 111 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/shopping_list.py b/homeassistant/components/shopping_list.py index 9922960da3f..ad9fae67bc6 100644 --- a/homeassistant/components/shopping_list.py +++ b/homeassistant/components/shopping_list.py @@ -1,6 +1,8 @@ """Component to manage a shoppling list.""" import asyncio +import json import logging +import os import uuid import voluptuous as vol @@ -23,43 +25,55 @@ ITEM_UPDATE_SCHEMA = vol.Schema({ 'complete': bool, 'name': str, }) +PERSISTENCE = '.shopping_list.json' @asyncio.coroutine def async_setup(hass, config): """Initialize the shopping list.""" - hass.data[DOMAIN] = ShoppingData([]) + data = hass.data[DOMAIN] = ShoppingData(hass) + yield from data.async_load() + intent.async_register(hass, AddItemIntent()) intent.async_register(hass, ListTopItemsIntent()) + hass.http.register_view(ShoppingListView) hass.http.register_view(UpdateShoppingListItemView) + hass.http.register_view(ClearCompletedItemsView) + hass.components.conversation.async_register(INTENT_ADD_ITEM, [ 'Add {item} to my shopping list', ]) hass.components.conversation.async_register(INTENT_LAST_ITEMS, [ 'What is on my shopping list' ]) + hass.components.frontend.register_built_in_panel( 'shopping-list', 'Shopping List', 'mdi:cart') + return True class ShoppingData: """Class to hold shopping list data.""" - def __init__(self, items): + def __init__(self, hass): """Initialize the shopping list.""" - self.items = items + self.hass = hass + self.items = [] - def add(self, name): + @callback + def async_add(self, name): """Add a shopping list item.""" self.items.append({ 'name': name, 'id': uuid.uuid4().hex, 'complete': False }) + self.hass.async_add_job(self.save) - def update(self, item_id, info): + @callback + def async_update(self, item_id, info): """Update a shopping list item.""" item = next((itm for itm in self.items if itm['id'] == item_id), None) @@ -68,11 +82,33 @@ class ShoppingData: info = ITEM_UPDATE_SCHEMA(info) item.update(info) + self.hass.async_add_job(self.save) return item - def clear_completed(self): + @callback + def async_clear_completed(self): """Clear completed items.""" self.items = [itm for itm in self.items if not itm['complete']] + self.hass.async_add_job(self.save) + + @asyncio.coroutine + def async_load(self): + """Load items.""" + def load(): + """Load the items synchronously.""" + path = self.hass.config.path(PERSISTENCE) + if not os.path.isfile(path): + return [] + with open(path) as file: + return json.loads(file.read()) + + items = yield from self.hass.async_add_job(load) + self.items = items + + def save(self): + """Save the items.""" + with open(self.hass.config.path(PERSISTENCE), 'wt') as file: + file.write(json.dumps(self.items, sort_keys=True, indent=4)) class AddItemIntent(intent.IntentHandler): @@ -88,7 +124,7 @@ class AddItemIntent(intent.IntentHandler): """Handle the intent.""" slots = self.async_validate_slots(intent_obj.slots) item = slots['item']['value'] - intent_obj.hass.data[DOMAIN].add(item) + intent_obj.hass.data[DOMAIN].async_add(item) response = intent_obj.create_response() response.async_set_speech( @@ -137,8 +173,8 @@ class ShoppingListView(http.HomeAssistantView): class UpdateShoppingListItemView(http.HomeAssistantView): """View to retrieve shopping list content.""" - url = '/api/shopping_list/{item_id}' - name = "api:shopping_list:id" + url = '/api/shopping_list/item/{item_id}' + name = "api:shopping_list:item:id" @callback def post(self, request, item_id): @@ -146,10 +182,25 @@ class UpdateShoppingListItemView(http.HomeAssistantView): data = yield from request.json() try: - item = request.app['hass'].data[DOMAIN].update(item_id, data) + item = request.app['hass'].data[DOMAIN].async_update(item_id, data) request.app['hass'].bus.async_fire(EVENT) return self.json(item) except KeyError: return self.json_message('Item not found', HTTP_NOT_FOUND) except vol.Invalid: return self.json_message('Item not found', HTTP_BAD_REQUEST) + + +class ClearCompletedItemsView(http.HomeAssistantView): + """View to retrieve shopping list content.""" + + url = '/api/shopping_list/clear_completed' + name = "api:shopping_list:clear_completed" + + @callback + def post(self, request): + """Retrieve if API is running.""" + hass = request.app['hass'] + hass.data[DOMAIN].async_clear_completed() + hass.bus.async_fire(EVENT) + return self.json_message('Cleared completed items.') diff --git a/tests/components/test_shopping_list.py b/tests/components/test_shopping_list.py index e4a99ad39d4..449eab65016 100644 --- a/tests/components/test_shopping_list.py +++ b/tests/components/test_shopping_list.py @@ -1,10 +1,20 @@ """Test shopping list component.""" import asyncio +from unittest.mock import patch + +import pytest from homeassistant.bootstrap import async_setup_component from homeassistant.helpers import intent +@pytest.fixture(autouse=True) +def mock_shopping_list_save(): + """Stub out the persistence.""" + with patch('homeassistant.components.shopping_list.ShoppingData.save'): + yield + + @asyncio.coroutine def test_add_item(hass): """Test adding an item intent.""" @@ -82,7 +92,7 @@ def test_api_update(hass, test_client): client = yield from test_client(hass.http.app) resp = yield from client.post( - '/api/shopping_list/{}'.format(beer_id), json={ + '/api/shopping_list/item/{}'.format(beer_id), json={ 'name': 'soda' }) @@ -95,7 +105,7 @@ def test_api_update(hass, test_client): } resp = yield from client.post( - '/api/shopping_list/{}'.format(wine_id), json={ + '/api/shopping_list/item/{}'.format(wine_id), json={ 'complete': True }) @@ -140,8 +150,45 @@ def test_api_update_fails(hass, test_client): beer_id = hass.data['shopping_list'].items[0]['id'] client = yield from test_client(hass.http.app) resp = yield from client.post( - '/api/shopping_list/{}'.format(beer_id), json={ + '/api/shopping_list/item/{}'.format(beer_id), json={ 'name': 123, }) assert resp.status == 400 + + +@asyncio.coroutine +def test_api_clear_completed(hass, test_client): + """Test the API.""" + yield from async_setup_component(hass, 'shopping_list', {}) + + yield from intent.async_handle( + hass, 'test', 'HassShoppingListAddItem', {'item': {'value': 'beer'}} + ) + yield from intent.async_handle( + hass, 'test', 'HassShoppingListAddItem', {'item': {'value': 'wine'}} + ) + + beer_id = hass.data['shopping_list'].items[0]['id'] + wine_id = hass.data['shopping_list'].items[1]['id'] + + client = yield from test_client(hass.http.app) + + # Mark beer as completed + resp = yield from client.post( + '/api/shopping_list/item/{}'.format(beer_id), json={ + 'complete': True + }) + assert resp.status == 200 + + resp = yield from client.post('/api/shopping_list/clear_completed') + assert resp.status == 200 + + items = hass.data['shopping_list'].items + assert len(items) == 1 + + assert items[0] == { + 'id': wine_id, + 'name': 'wine', + 'complete': False + }