mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 20:27:08 +00:00
commit
1aaf49d0c1
@ -98,10 +98,16 @@ class DaikinClimate(ClimateDevice):
|
|||||||
daikin_attr = HA_ATTR_TO_DAIKIN[ATTR_FAN_MODE]
|
daikin_attr = HA_ATTR_TO_DAIKIN[ATTR_FAN_MODE]
|
||||||
if self._api.device.values.get(daikin_attr) is not None:
|
if self._api.device.values.get(daikin_attr) is not None:
|
||||||
self._supported_features |= SUPPORT_FAN_MODE
|
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]
|
daikin_attr = HA_ATTR_TO_DAIKIN[ATTR_SWING_MODE]
|
||||||
if self._api.device.values.get(daikin_attr) is not None:
|
if self._api.device.values.get(daikin_attr) is not None:
|
||||||
self._supported_features |= SUPPORT_SWING_MODE
|
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):
|
def get(self, key):
|
||||||
"""Retrieve device settings from API library cache."""
|
"""Retrieve device settings from API library cache."""
|
||||||
|
@ -214,7 +214,8 @@ class AsusWrtDeviceScanner(DeviceScanner):
|
|||||||
for device in result:
|
for device in result:
|
||||||
if device['mac'] is not None:
|
if device['mac'] is not None:
|
||||||
mac = device['mac'].upper()
|
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)
|
devices[mac] = Device(mac, device.get('ip', old_ip), None)
|
||||||
return devices
|
return devices
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ from homeassistant.const import CONF_NAME, EVENT_THEMES_UPDATED
|
|||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
from homeassistant.loader import bind_hass
|
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'
|
DOMAIN = 'frontend'
|
||||||
DEPENDENCIES = ['api', 'websocket_api', 'http', 'system_log']
|
DEPENDENCIES = ['api', 'websocket_api', 'http', 'system_log']
|
||||||
@ -300,7 +300,8 @@ def async_setup(hass, config):
|
|||||||
|
|
||||||
if is_dev:
|
if is_dev:
|
||||||
for subpath in ["src", "build-translations", "build-temp", "build",
|
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(
|
hass.http.register_static_path(
|
||||||
"/home-assistant-polymer/{}".format(subpath),
|
"/home-assistant-polymer/{}".format(subpath),
|
||||||
os.path.join(repo_path, subpath),
|
os.path.join(repo_path, subpath),
|
||||||
|
@ -494,5 +494,5 @@ class SqueezeBoxDevice(MediaPlayerDevice):
|
|||||||
all_params = [command]
|
all_params = [command]
|
||||||
if parameters:
|
if parameters:
|
||||||
for parameter in 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)
|
return self.async_query(*all_params)
|
||||||
|
@ -17,9 +17,10 @@ from homeassistant.components.remote import (
|
|||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_ENTITY_ID, CONF_HOST, CONF_NAME, CONF_PORT, EVENT_HOMEASSISTANT_STOP)
|
ATTR_ENTITY_ID, CONF_HOST, CONF_NAME, CONF_PORT, EVENT_HOMEASSISTANT_STOP)
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
from homeassistant.exceptions import PlatformNotReady
|
||||||
from homeassistant.util import slugify
|
from homeassistant.util import slugify
|
||||||
|
|
||||||
REQUIREMENTS = ['pyharmony==1.0.18']
|
REQUIREMENTS = ['pyharmony==1.0.20']
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -97,8 +98,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
DEVICES.append(device)
|
DEVICES.append(device)
|
||||||
add_devices([device])
|
add_devices([device])
|
||||||
register_services(hass)
|
register_services(hass)
|
||||||
except ValueError:
|
except (ValueError, AttributeError):
|
||||||
_LOGGER.warning("Failed to initialize remote: %s", name)
|
raise PlatformNotReady
|
||||||
|
|
||||||
|
|
||||||
def register_services(hass):
|
def register_services(hass):
|
||||||
|
@ -67,15 +67,17 @@ class DeutscheBahnSensor(Entity):
|
|||||||
def device_state_attributes(self):
|
def device_state_attributes(self):
|
||||||
"""Return the state attributes."""
|
"""Return the state attributes."""
|
||||||
connections = self.data.connections[0]
|
connections = self.data.connections[0]
|
||||||
connections['next'] = self.data.connections[1]['departure']
|
if len(self.data.connections) > 1:
|
||||||
connections['next_on'] = self.data.connections[2]['departure']
|
connections['next'] = self.data.connections[1]['departure']
|
||||||
|
if len(self.data.connections) > 2:
|
||||||
|
connections['next_on'] = self.data.connections[2]['departure']
|
||||||
return connections
|
return connections
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Get the latest delay from bahn.de and updates the state."""
|
"""Get the latest delay from bahn.de and updates the state."""
|
||||||
self.data.update()
|
self.data.update()
|
||||||
self._state = self.data.connections[0].get('departure', 'Unknown')
|
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'])
|
self._state += " + {}".format(self.data.connections[0]['delay'])
|
||||||
|
|
||||||
|
|
||||||
@ -96,6 +98,9 @@ class SchieneData(object):
|
|||||||
self.connections = self.schiene.connections(
|
self.connections = self.schiene.connections(
|
||||||
self.start, self.goal, dt_util.as_local(dt_util.utcnow()))
|
self.start, self.goal, dt_util.as_local(dt_util.utcnow()))
|
||||||
|
|
||||||
|
if not self.connections:
|
||||||
|
self.connections = [{}]
|
||||||
|
|
||||||
for con in self.connections:
|
for con in self.connections:
|
||||||
# Detail info is not useful. Having a more consistent interface
|
# Detail info is not useful. Having a more consistent interface
|
||||||
# simplifies usage of template sensors.
|
# simplifies usage of template sensors.
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"""Constants used by Home Assistant components."""
|
"""Constants used by Home Assistant components."""
|
||||||
MAJOR_VERSION = 0
|
MAJOR_VERSION = 0
|
||||||
MINOR_VERSION = 62
|
MINOR_VERSION = 62
|
||||||
PATCH_VERSION = '0'
|
PATCH_VERSION = '1'
|
||||||
__short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION)
|
__short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION)
|
||||||
__version__ = '{}.{}'.format(__short_version__, PATCH_VERSION)
|
__version__ = '{}.{}'.format(__short_version__, PATCH_VERSION)
|
||||||
REQUIRED_PYTHON_VER = (3, 4, 2)
|
REQUIRED_PYTHON_VER = (3, 4, 2)
|
||||||
|
@ -352,7 +352,7 @@ hipnotify==1.0.8
|
|||||||
holidays==0.9.3
|
holidays==0.9.3
|
||||||
|
|
||||||
# homeassistant.components.frontend
|
# homeassistant.components.frontend
|
||||||
home-assistant-frontend==20180126.0
|
home-assistant-frontend==20180130.0
|
||||||
|
|
||||||
# homeassistant.components.camera.onvif
|
# homeassistant.components.camera.onvif
|
||||||
http://github.com/tgaugry/suds-passworddigest-py3/archive/86fc50e39b4d2b8997481967d6a7fe1c57118999.zip#suds-passworddigest-py3==0.1.2a
|
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
|
pyfttt==0.3
|
||||||
|
|
||||||
# homeassistant.components.remote.harmony
|
# homeassistant.components.remote.harmony
|
||||||
pyharmony==1.0.18
|
pyharmony==1.0.20
|
||||||
|
|
||||||
# homeassistant.components.binary_sensor.hikvision
|
# homeassistant.components.binary_sensor.hikvision
|
||||||
pyhik==0.1.4
|
pyhik==0.1.4
|
||||||
|
@ -75,7 +75,7 @@ hbmqtt==0.9.1
|
|||||||
holidays==0.9.3
|
holidays==0.9.3
|
||||||
|
|
||||||
# homeassistant.components.frontend
|
# homeassistant.components.frontend
|
||||||
home-assistant-frontend==20180126.0
|
home-assistant-frontend==20180130.0
|
||||||
|
|
||||||
# homeassistant.components.influxdb
|
# homeassistant.components.influxdb
|
||||||
# homeassistant.components.sensor.influxdb
|
# homeassistant.components.sensor.influxdb
|
||||||
|
@ -447,6 +447,9 @@ class TestComponentsDeviceTrackerASUSWRT(unittest.TestCase):
|
|||||||
scanner = get_scanner(self.hass, VALID_CONFIG_ROUTER_SSH)
|
scanner = get_scanner(self.hass, VALID_CONFIG_ROUTER_SSH)
|
||||||
scanner.connection = mocked_ssh
|
scanner.connection = mocked_ssh
|
||||||
self.assertEqual(NEIGH_DEVICES, scanner._get_neigh(ARP_DEVICES.copy()))
|
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 = ''
|
mocked_ssh.run_command.return_value = ''
|
||||||
self.assertEqual({}, scanner._get_neigh(ARP_DEVICES.copy()))
|
self.assertEqual({}, scanner._get_neigh(ARP_DEVICES.copy()))
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user