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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

n@8MrqIcGZWJUzG9?v980 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 JpTfb&003vCKdAr! diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index 19b903dfb7c..23f0744fe27 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 19b903dfb7c940bfafdecc5407526647d0aed2f2 +Subproject commit 23f0744fe272b6d306dde9592d872c34d53fa6b7 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 20d85cfdee9..ea6e121dcf6 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 +1,107 @@ -

\ 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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 literal 5308 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 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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 bU7@1ru$nu?t}({u&ws`+b=$8Y(>WLbHJ+EP delta 27999 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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 zcmb2|=3oE;Cg!WP+2wc4CcXInQ&hw_Ja662+;6|1Zo5`Er}w-{Vc*-EH+%Z}_-3=H z=4ou2z9dIG=>PZVR&hpwoUNO7mcN&Md(2lPAXGzyi**6Ro;~aGH-+o3_mtRQRq6cd zLg%`}o0PsD`}=$O``_H(ubvj?*`fPrcewuJFPn?!9y2^?zV3C-`(N|(H*1`^e4n$1 zdB={I_eDPDy3H}Uw<9z1$=@$(dz97*hc%RnU%M_{ZcxGaf4lC!37?F#^2%KOKJBWy z_@s_;MOM+~(}!m5sfxT>E?K#Cm)@#hc7EC(d!v_DPJ6aw|Jkk=+e<&roZ=Z)6KQzv z+U`YOueY2CS7qdRnZD_NnsnHc_wx7lo?HBS(Ugdy1$+K4V|w?v+&ujL()sUGFBU|L z-puvAR=P2o^|jI7UF#m+&kekOl=sgGkEZ)p%f3AGdX%=N*7NbNs;`zh)qm@P_uKh? zJA8ZBhilhc9_2kve5rGJ-nD(@d~25dyxRIa!zWwic4X)}iTNLlm9D#rP5yM!^j_P= z{P5Jm*~kB`IMF3E>(Q(!nS1rh5~o}%U;Xe`{NcNLyNkEn(oiw|)vVIvc}G9*_3vFg z#pk$>Kjm3AwV79Tno#YA`kzgiM@~=Bnt5%@y5iVLDUa)#yQGb3kNR}&h*_><6c8@Z zeY*7LdgGXLqXMy4vCu6svWH40|7{XO?*eIs+6+L>3&9K`ZGuTA{#-jY~$ zf8{BT(+rmnd|W;Kfb?sJ6Ur$II3C2iWT!7Yn;#+;8tP!YOlR|_-h_;qYd9K@sR~ri z|Ie{MQ%UpmB9WE(9}njqSz$6~>cn^{i}VckT7iJyeA_m^e~_Or;je;WvI+C;3$4$1 znd`q) z@4;iTA<>F+Lt50`=dN?r$`4pxQSZ6`T=H-20s+yJlf42(>yjkXR=l68bx9=9GVIOs z+p~2wx0XG<7Oi_?lAQL=>5tZgJ%6WaTIU&f??cfZ_1}FNap%9@^`3J4xRl9nTm9S2 zOIvMviz?r-YN#~oeAL=`R$1rP=XbAPZ;^_b#^UoQU8r7XG4HC<%U`1_|64KKVAzmv zCcV~R%G--9CXvgRzxl4(^VWXTwpVj`Y~#IKPR(KQk}}nraaLI7!j%7N+&bl+c?YB? z$S!&ABsTr>zt;|utZXGbk|v99TAOevi2mQf#d}+nE2DLn&cdj@ldfz}t#cCm(D(Dh z0lSU-bLVZkAM@Ma|EYNAT9G9abA$^+lw>X^o1BZW)YyIH&&{@D>wX#RH9c)|IC=M+ z*IjIE#?{ZRJ=HA?pWkg##w0Cel@+DcwfB{aqe|TxsXq&N(%0>N6{dDUKI>+c{<-sV z`*uqFIo+*&zjQC7g@5MV;`jsSV>iC8l!~AG$$({%)RbwPj7yh9nrUu%dcH?<)`PjG z`@_$kfBx>Bwpm|VzLmgc8?CfyhXRYWm;Dht5iPb{(c#an-R#@1dfvV}x#IPgBQLgP zlr1@U!FS^S=Vghv9zA)u(C+o$hxd4%Wu`tf{mOg$%Bdoo<>&KGuX%1)eb4FRpP8?1 zH%lyfkZ~>0`F8S_qeoV)+cDQW&0$tfy3}p1hN81?S}kX-Yza)Z2p*Xk7fRkt9k%pa1 z`1y?(=iJ@Z;CZ|F`%&)iJAID*T=abpo9(UlwliW3r%TpkTF$KhYP4%@g4m7c!ur4Z zCx=Og`5_hf-?omWlD+9xg(B-r;X%jH|b^851R2#Kvz`-9~5bG9zg(Fr`B z7W4nM4$sO-7use-S7eCQ$GuQH8Buws)nM)W`wjPlmL(oD3O%mlw5dtwKlh3kyi2;y zuM72@f7^EMi&GI?IqSXFomI+uyzbpoqgiLq$m-Zwg;ad>2flMZ@;ohXpZOQwf}cqFAfz6mt;Jz|Bk;o;j6Dv=d+6y zYZ;GmC~U4YF=q&7Idc1Cip_P#ViuRnAB(o+Fx-AK%|Pj*4&USx4FOu8b0yS@nVnAh zxOHb587fRUS79^z_-3}EP@zf2PPZ*3-8OPAnzHQk+cLpf3SL?s(>|6YHfgL)*v+BV zCGyT=nqzzVqV5w()>#KNwx-DCsuyybr7GR`Yg)j%_{*dO%do@)r(~C#9kpjZ6s2{* zp4mxLm-C;bfLFTN5&O(%5s#TBw&ZYLoFw^CrR(v;X?Ba2Oitawv$f>dr4qYkr!Ft? zkNEepLP{cKrH9&uRZ+is9!lyT57wQ#Nxt9xq{hWd;yxGMx-U9;#~baHa69bb&0l#` z?4eV-hK%8X5|gXhGJX;X7V~{d7#?$G37M=Y%ls!jInzZ=<aQY zSITgCRf1VmUkStHY!l9B3q7S7Pb<#sEoGRRvqvH?ovrX%xBKCvC99cNAbJNQ$?lIg?kJfLoVDd*wzuHa4LSs+%ww)XLG;FyO^<$*GE9~dsB~EVn)-mGc0_Q zH-zeHeTuZWqZhq&#Rc_;1)DN99z5dbuynFn&(|9XLMpe#a+FLgBDW<>Ic>laaruOy zqV-l*51(fz&u}f%IeIw5X?YPNOUv5(idmh*0!b8h*S4ci}1`Dz(4C*#UNIj)wxYF2xrsNd{to0e%?J|Dl8V;!es_2jfv zo}BNabvz*~n_n8dJar()?tx;j+0x26aiVL!im8M|^*i6VVB71o^r1yZ(H5UWu6GU{ zZ~OW*Ni5e_AhlTP?6$xQ&zM@L__W_%$+_sQah%_@L~g}m_NKy3K0X4uQ!ggj#P<0L z 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%0Du!jDY`Z(MPk;8Gk4!7 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 p9&eY|Jx$hRSH~D? literal 6144 zcmb2|=3oE;Cg!yM5)K=K4#!{tgj+TUP2n>-5p23;73UKYy}rZTf57 zr(1gMZuHHax8vJ%bA_zZ9e)iri!2nKmKGkVHAVQ|vy$ldT(@dAACo*;zdQHUZs(0B zUdP^T(B8IX<*m|MmCCDjYwmoVf8yhg>J1{fD$}_Br+RWl>Ac$gZDZ~U#}i5!k*7bT z7`jhhrvBb$@4iDF6}}Y{G}moio9leK_pdB>Ow-3xR-Vr`tzCA{aYs{Rj^OG0`EO=R z%XKZV|Mp9pUGHMoW`22vhS^;@YQOihavqV`l--D)+|}Ue+1bBJRvqjWEt_U%EMc>GHRp#P96oiHe^}mED(BAH z^)jkHMgGmfo=K10SbvrtXmxO((de{FZWZLXgD>dRi|ygnxf%V%B=`?95qMShLk?RMqZz4_8^zvjJp z_u|yH`Ogx58NMjke%tn}>S4cfrkC#(Pa7I{`_->gg1rRt&G*^8CICeH+JSkKyC zzyAKVhSY@RSGn0W%7rU@zR6THt+)7pw|I~0c|WdzboE;f>tb)pFMVg9bMoOdu>;MP zX_FXtWqz$#aeGw_!%0W^pg%=7K7K#X^GNOIvOt@b{e?VguiQOd?_JVtKU}x(cKVjU zKU$l%+X&3wXZC5O`SZ-uVw<)pZr_pb@`<_sIcrOQ9-4c0s$0ObR^_c9mmJ!4){3*@^#5R%H+L`ChA{tS z*|}w5w{AuK{wZONs`1X#4rhJqQ)St3>W@upOt50Rw#ih^)UQ&v?wPiW&uN%3BYxil zce8eo=}N!i_r0;dm^8(CzKXBfv@djIwoDKGDe0#OT!12$AGi8;fpP!vB zm!DR@XV=`@-*PyQ249W475?E{guH%wSIp#Z7kHG^MU-zC%2ZDGW!?8jvh@+~X7j_p zuYUM8wf4`MIg6jn<~(%6eOZrg)0PuSmwxx{m{`chR&wv0+`^o#TE$hDZtkjD=o>w) z>{rXeWs82kw{G2e{N;50x3f?GuP}42it0TPb$08WloHGMOWnKE$}{8l7F6>9LxH>(h*q#SEKXbxeHrHqC3(R-N0` z+n(n1wj~}q`}E%aF4quALleHm1y)~FMUPDKd6xf$LwmK;lI%$yH`=Q%en^{W+g_>Y zD`(=eTX5;iPx&`q%Ad`<`6d6RjB~ce?m4QrpPad-R2%p4Pub&|gvr^(oUUenZmswTYL%o!Yl+Q~cMnIr}ZDuR6)t+MZ1)ZdEnDa_Mi{zh9+wgJKZ{evU>NLe>znW-ujl2KV!q5cK7_--Bgq&d1mg< zOS5-xUS8_oksB4>f7s&AQ9g^i7pvEuI;7p_<$nBA-~6BTeOK?KJ-IY<^Yu%-X~oBj z7TTH^_9xnHF|Iktc6x)k^wT%eb0k|INS-@sJm;_Bxq}wZ4?K|Rd409GY%b@uc>a3-dCyHXZg`Ud*RhsPJt+lk4{jw`%8DO`X%d zXSq>qrhDVFl~1DNm8{FZ-jHA1yL4wdd-ZuhlV|Og(t8xOwt=9=`d~Z;Gz@ zdzXHZ@weW3?WTh}>z9Y-wtsuy9y(V!W!AOKNjr4j6!+{YmZ*Gg_-S79llg~F*!NHT zFSGc8jN8G=o~Gv#t4N{>5{6B8WnI-OLnatq7dWSSjzcq<_hAl`KIdr%XAAlJ z{g0HSCfshj#B6jb>D9AVzCypmIjNi%70;d0ysYF?(($=y(-BS;ZJP^s`P6J?=`Hts zCMoee>{z9k2%FfVlba6|^7MSxo_l4wp}VN#LA%(aqKV z#V=wKf-dz0EtQ-(y)v-EYxnWU>6)IMm->`iH=b`!&*0xs|DwI`*tFRy4C}St3SRmc zY#(xK=a1I+Q{z@{QJ2Vwd!*`B-BtMTS>C!W!V4pughCY_DGF3ATxG~9Q1DnGfN=_^ zNg-R%@mC+DZ<#D-JbSh5$=sC4g}e^;9D~x>>+hJo^q5B8mxdjVNga)8%LOhi?R?l%%C!6pkIoCF z9X`B0-kux@&6Byk`Zuv>I6gL#YTfD4I-A`@_UO)tne)Y5&AN))mn6!3I+FJ&=8J@p z-#g!q<2sVRRl3~^-_4)!YoW>0lsT*A54m-zEVlR_B2Z;m=vMen?>?)4-|2R{(|=TE zZqT>VJJ+1FirL&zWY^OW_A@^n+W9Vq$acNj=JsB7ipM=+4!ygHek#W~JG`e%Q_gg-dGeTQ?* zqo0OX6~DMnTE4|ZW0ACzy_Q$8O!!%SC!;1#&E}v(E_0ceeNR->zEZ~1v1Y*~m!}M~ z?w;&4@otaO;@TAONr|0FXKBYAxpt}3#g|un32m5td#R_>R>2rv^IqkZ0uLC>w@SM$ zd=kc2;B4(GARNxxGSl`%&C<34(PjljwnL#GFIkvQkeGO4@&wu6RSrg*xvvV#Iv;)0 z%&H>aywj#LnnhKzdFR7sqwl9Hc*Km-Cq5B(HA+*Mza-Uw&7EWU%qLu&$C$2qPdX&q zEZp+gLi<=kNuTtwOfxoaaZ6XDypV?)>ilX2>vla(Imgm>$vR*@Pup4f6O4DCPAOcu zb@5`GSySh6RX7E$3U+!f(&`*5>ag70-^7%t}OrK`7bGm9_XB2erg zVR62wcalMY*u)stmPSvNQ2i$JS=wGgq5^Dwmm-q&u5?`XU~Xw#Y;t7=H#58IgB1)? zGmhj;U#uvnc43o_N#n%>d5(!f*&gW+Ch=U}d^>cL=~kYlt--gJJmc&wl6}ZDVME6f zi%DhcJ7*vFT%fq)jl1NH`vMJ?Y}Yt5H@9+ZFMc4be&Oc>Bi73M=S^9z2T2`X=j~je zdDiLG%Nm!^$Pl;|h`W`_nYro<*Q-uB_+n|a+N6uA5~nZB5etgd zf4oDLW2N_@z&X1cFDUuk3A8yN>oCv#VN1oC-pF_CDI)zFPMrR8K>Fy$7Vk@!kh|FAvL$XINCRWBxTWNfck-Ib^_cwZ0LX+4i&v$V)=X0D@qWUs9>OG+@Yi?EnvaHuZe z`c1ouuLM|HBt(|&ZR1c}F}XrYi6_40(oAk8ryX-V+!N+9bnNh3qnPp4=rixaR;we1 z6I|xJox;|nrmrmgQitz%N$i_*4_sv=7F$hanw+2>ujW{KxbDQoo41#Y}6rXLf$ z@!S^`ZXcf&)A}xo9P4*-xBfE0cEZIe#}*fqubAVlo@sQid+M&mJMPcD>(#xshx=l( z&2D*N{{D*O^U_Bz+B?4R>R#G&JmX!%j+Ywq9tdVX*!}p^!-XX;-Oug#H}`zdte)H3 zi(_1xJNXW=)EPchEX;_lC^AX){p&ep{hQehA!rRog!&RmBbo*$MK7IoCq?do`7D0}5k-5SLT2ls^=7D+Xk3VuyGKYjIC zcAoe{aap^6`S!4M9G&%dG1Dt^6QKiJ&vSjdRC)UT9S?@E4#nz~2X2^K$vB*~{T9?H z;$MHm+t&N#*5#HVa>)wQI#VZ#{N(5=e2`+o?;c=ts?@{b1xMG@m}qB@dg(`%=# zGfz;T^!CR2N!0}s6^kls8_M~Gq}XJua#ro_Qq`HVv1#6en~iFhPumS#K*VKH-7U zw~zFIGxlKoNCy7Y_F$EOi+c0xyhMNJl#esC$CEo*)aW{`^EF;Z*uP{ zU_ACHH^gI|tnSIXc}k0(Zo9et?-@OH-@fPyf1Ukx(Q#(I|XvvdZzBQ4{h#0`JZZyZ7;P)bE#pk)I`Z-oMT+ z7h-kphuz%=si*i)x!x5Qov|+SYCVM;J&z_$?*P1HI7601*6kTfh<;{K9SdkWA|Mz;wn@y(s zh4*eWbW(`q+w8fo>~GWdo;bhtevg>U-XD4&x%svi18;KK+LE;~yYdc4E$x55i}8_| zV*AHj{*BztYv%raE0y?B;>a|4*~U%AcW(%DEs=h3c+IA^(+}#8*8S;wyx{EDv%dZd zc7Hqj|2&h-y>9#S_gSV-(|@YAV}VVbbj`Y$udX+LXsMEHJe)~`Jg%-bFRw|*o>dr~Ad3pyHJ$f7M z_$nyXcJurjb01Ewdphacb_dPfdv;j|R=0|K{`~84(^ENo!w=Eb(YL(H`Ho6do2e&% z_>jR~y=|NSopayP4qsX4-My#A^TyNT`tcv4Zd|!wIaP1csYJVlGfZ_%U+ukfE^6`P zW%{MPV#T69Gg+%|oc<{)D{b`m#I%!K%v|li*2Ui0965dRT*e2RxyAlBF>TS(j*^g7 zSYuZ%x&3d5euOK>$+CD^u~W{WCP&3$?;pKTEa&|6ntj^RyJl17`LBDgE9^6A-h;0j z-ux>}yU~38MXmDPx2qnnv|4MQ+j#gVXNvhyIa-`V()O^RX z-04cE?r!}1@63umw-r3yH?}W-sQ5vRS!9=virO77mn&ylJ7)#tk!N?Y>%zq6se&O)r(klu}zt)nxAC0w;#7b zE^i=PThb z(T^_)Teohl4`{#b{rRJL+l@zYMqLM2JAP~P)@{;E7nL^Il+L*I$&QWomzb>=|JbJXy@@UnT@?=n&$>BV9v2WZ>F-}tdQz-MHaAgq6Z`~`J-g{v0| zbpBSJZ+|H#)a2>S=I2b`d`zcZl2~bfeSYrifaH}7-m$(>Y@f5bBd2}-t^Ql(%rEKM z2CkO}WY|vpztA4v_%m~Za{8KkrN6|Q=jHlaPBcQ0*Jv^EsEDD_<1eZPwMTz7vtEmg6o35s+|fV$7aVW- zMC3Fa-F)TLFV)}TA%}|ZHFXxHmZlozzqz#J+L`oB_fwlHDs%VdN_{dA_l;lPZxXW-dDS0gX>~6Qd-sY)z zZT_WgEK%K4uU_4F?WqsXk@T1;Th4B;SJd5TR&{!kug1RveK&vc9~MX}-?mI%Lw$$M z-PAJ+CI3#G?+}|6^6Z-H^K<<^Kl;m$H-%mkH(vO9)7?YMswTXD#~|Y9p~&~YV~L~7 zzsy`)&rOX5%CBNRrEPI?T)sA7>b0c@Gtxdyd&wK4_O{DSY4_dR$)%Ny(Q~=)@=gBr z`NW*B4;48cX>C8aBbNJ&LGy(3K00o3f?sy)`m#sQKFe0^@#IXa>$TbU%8zJNKk}&k zBf3m$r|ORaA(5%}m)mq3rLS>*Vz^t_do5VZ`kMOXlyLED+J0$~qMz?M+>P3?Y06ST z^>aKPP3!f1&3#?YYze&TT78G<{Ogl}TQ)tpqMH9}>65o#N4-|4$*GX=S}^C`v6A4;tv<;Q*Qwu#k2z878riW=wcuE;*$D%QsVi4K zh!Il$!Z!PU!6bPe=6TDb-zz@ZJ(0)GCH%RPT#(Rw;nuewSf@X7@^R}ZHv9JI@SJR; z-?nM2%3B`&|NmFLDTJr@_vD*wHC*18`3+ciw8q?ju$+ZW`mSU)hxf(>bI%^_F4fCQ fiC<+iFD*MWzK8X;Xno!L|BPFrPDURKXJ7yTJT>Vv diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index 05af75abb23..173132fd3a9 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=[["/","a8feb2ef5f35df9e3b9829f83e1de98c"],["/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-c544d43b2305b922e230c7c4e74d7613.html","54241a208f8a65b56444646c137feaef"],["/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,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 From a760673ad66537df0b42ca0c408e88d39338b399 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen 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 + }