Merge pull request #12047 from home-assistant/release-0-62-1

0.62.1
pull/12382/head 0.62.1
Paulus Schoutsen 2018-01-29 16:35:59 -08:00 committed by GitHub
commit 1aaf49d0c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 31 additions and 14 deletions

View File

@ -98,10 +98,16 @@ class DaikinClimate(ClimateDevice):
daikin_attr = HA_ATTR_TO_DAIKIN[ATTR_FAN_MODE]
if self._api.device.values.get(daikin_attr) is not None:
self._supported_features |= SUPPORT_FAN_MODE
else:
# even devices without support must have a default valid value
self._api.device.values[daikin_attr] = 'A'
daikin_attr = HA_ATTR_TO_DAIKIN[ATTR_SWING_MODE]
if self._api.device.values.get(daikin_attr) is not None:
self._supported_features |= SUPPORT_SWING_MODE
else:
# even devices without support must have a default valid value
self._api.device.values[daikin_attr] = '0'
def get(self, key):
"""Retrieve device settings from API library cache."""

View File

@ -214,7 +214,8 @@ class AsusWrtDeviceScanner(DeviceScanner):
for device in result:
if device['mac'] is not None:
mac = device['mac'].upper()
old_ip = cur_devices.get(mac, {}).ip or None
old_device = cur_devices.get(mac)
old_ip = old_device.ip if old_device else None
devices[mac] = Device(mac, device.get('ip', old_ip), None)
return devices

View File

@ -23,7 +23,7 @@ from homeassistant.const import CONF_NAME, EVENT_THEMES_UPDATED
from homeassistant.core import callback
from homeassistant.loader import bind_hass
REQUIREMENTS = ['home-assistant-frontend==20180126.0', 'user-agents==1.1.0']
REQUIREMENTS = ['home-assistant-frontend==20180130.0', 'user-agents==1.1.0']
DOMAIN = 'frontend'
DEPENDENCIES = ['api', 'websocket_api', 'http', 'system_log']
@ -300,7 +300,8 @@ def async_setup(hass, config):
if is_dev:
for subpath in ["src", "build-translations", "build-temp", "build",
"hass_frontend", "bower_components", "panels"]:
"hass_frontend", "bower_components", "panels",
"hassio"]:
hass.http.register_static_path(
"/home-assistant-polymer/{}".format(subpath),
os.path.join(repo_path, subpath),

View File

@ -494,5 +494,5 @@ class SqueezeBoxDevice(MediaPlayerDevice):
all_params = [command]
if parameters:
for parameter in parameters:
all_params.append(urllib.parse.quote(parameter, safe=':='))
all_params.append(urllib.parse.quote(parameter, safe=':=/?'))
return self.async_query(*all_params)

View File

@ -17,9 +17,10 @@ from homeassistant.components.remote import (
from homeassistant.const import (
ATTR_ENTITY_ID, CONF_HOST, CONF_NAME, CONF_PORT, EVENT_HOMEASSISTANT_STOP)
import homeassistant.helpers.config_validation as cv
from homeassistant.exceptions import PlatformNotReady
from homeassistant.util import slugify
REQUIREMENTS = ['pyharmony==1.0.18']
REQUIREMENTS = ['pyharmony==1.0.20']
_LOGGER = logging.getLogger(__name__)
@ -97,8 +98,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
DEVICES.append(device)
add_devices([device])
register_services(hass)
except ValueError:
_LOGGER.warning("Failed to initialize remote: %s", name)
except (ValueError, AttributeError):
raise PlatformNotReady
def register_services(hass):

View File

@ -67,15 +67,17 @@ class DeutscheBahnSensor(Entity):
def device_state_attributes(self):
"""Return the state attributes."""
connections = self.data.connections[0]
connections['next'] = self.data.connections[1]['departure']
connections['next_on'] = self.data.connections[2]['departure']
if len(self.data.connections) > 1:
connections['next'] = self.data.connections[1]['departure']
if len(self.data.connections) > 2:
connections['next_on'] = self.data.connections[2]['departure']
return connections
def update(self):
"""Get the latest delay from bahn.de and updates the state."""
self.data.update()
self._state = self.data.connections[0].get('departure', 'Unknown')
if self.data.connections[0]['delay'] != 0:
if self.data.connections[0].get('delay', 0) != 0:
self._state += " + {}".format(self.data.connections[0]['delay'])
@ -96,6 +98,9 @@ class SchieneData(object):
self.connections = self.schiene.connections(
self.start, self.goal, dt_util.as_local(dt_util.utcnow()))
if not self.connections:
self.connections = [{}]
for con in self.connections:
# Detail info is not useful. Having a more consistent interface
# simplifies usage of template sensors.

View File

@ -2,7 +2,7 @@
"""Constants used by Home Assistant components."""
MAJOR_VERSION = 0
MINOR_VERSION = 62
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)

View File

@ -352,7 +352,7 @@ hipnotify==1.0.8
holidays==0.9.3
# homeassistant.components.frontend
home-assistant-frontend==20180126.0
home-assistant-frontend==20180130.0
# homeassistant.components.camera.onvif
http://github.com/tgaugry/suds-passworddigest-py3/archive/86fc50e39b4d2b8997481967d6a7fe1c57118999.zip#suds-passworddigest-py3==0.1.2a
@ -723,7 +723,7 @@ pyflexit==0.3
pyfttt==0.3
# homeassistant.components.remote.harmony
pyharmony==1.0.18
pyharmony==1.0.20
# homeassistant.components.binary_sensor.hikvision
pyhik==0.1.4

View File

@ -75,7 +75,7 @@ hbmqtt==0.9.1
holidays==0.9.3
# homeassistant.components.frontend
home-assistant-frontend==20180126.0
home-assistant-frontend==20180130.0
# homeassistant.components.influxdb
# homeassistant.components.sensor.influxdb

View File

@ -447,6 +447,9 @@ class TestComponentsDeviceTrackerASUSWRT(unittest.TestCase):
scanner = get_scanner(self.hass, VALID_CONFIG_ROUTER_SSH)
scanner.connection = mocked_ssh
self.assertEqual(NEIGH_DEVICES, scanner._get_neigh(ARP_DEVICES.copy()))
self.assertEqual(NEIGH_DEVICES, scanner._get_neigh({
'UN:KN:WN:DE:VI:CE': Device('UN:KN:WN:DE:VI:CE', None, None),
}))
mocked_ssh.run_command.return_value = ''
self.assertEqual({}, scanner._get_neigh(ARP_DEVICES.copy()))