8000 0.52 by balloob · Pull Request #9131 · home-assistant/core · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

0.52 #9131

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 94 commits into from
Aug 26, 2017
Merged

0.52 #9131

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
ff3a463
Version bump to 0.52.0.dev0
fabaff Aug 10, 2017
d427063
Update python-wink version to fix Dome water valve bug. (#8923)
Aug 11, 2017
0999e2d
Update roombapy to 1.3.1 to avoid installing all the mapping dependen…
pschmitt Aug 11, 2017
49733b7
10000 Remove not needed call to update (#8930)
MartinHjelmare Aug 12, 2017
c4550d0
Add version sensor (#8912)
fabaff Aug 12, 2017
489a02b
Fix hue lights for Philips and non-philips lights (#8905)
groth-its Aug 12, 2017
369caee
fixing emulated hue issue and testing it (#8928)
cribbstechnologies Aug 12, 2017
fbb6782
Fix SET_TEMPERATURE_SCHEMA in climate component (#8879)
MartinHjelmare Aug 12, 2017
4a98b32
Update frontend
balloob Aug 12, 2017
79f45b5
Fixed cert_expiry sensor to delay firing on HA startup (#8920)
arsaboo Aug 13, 2017
73d6227
Remove spaces from Xiami switch attributes (#8952)
syssi Aug 13, 2017
c92e5c1
fix DeviceException handling when updating xiaomi vacuum (#8954)
azogue Aug 13, 2017
811fdc5
Add service to alarm control panel for night mode arming (#8614)
schmittx Aug 13, 2017
cbe5225
Fix call to ha_send_commands (#8956)
MartinHjelmare Aug 13, 2017
4b3a932
Sabnzbd: do not assume discovery info is a dict (#8951)
balloob Aug 13, 2017
74adebc
fix issue #8948 in pushbullet (#8965)
balloob Aug 13, 2017
23273d3
Fix zwave power_consumption attribute (#8968)
andrey-git Aug 14, 2017
a0ddb24
Turn foscam verbose mode off (#8967)
andrey-git Aug 14, 2017
8fcec03
Update frontend
balloob Aug 14, 2017
19d1d74
Add support for Automatic OAuth2 authentication (#8962)
emlove Aug 14, 2017
e2920ce
Nello.io lock support (#8957)
pschmitt Aug 14, 2017
5309006
Added continue-on-errors, added value template (#8971)
iamjackg Aug 14, 2017
1892eb6
Is_allowed_path raise for None path (#8953)
Danielhiversen Aug 15, 2017
6507cc1
Fix #8960 - Decora Wi-Fi Switch unable to set brightness (#8989)
tlyakhov Aug 15, 2017
eb42d59
Adds port/SSL config options for RainMachine (#8986)
bachya Aug 15, 2017
95c5741
Automatic device tracker remove password (#9002)
emlove Aug 16, 2017
2dab239
Add scripts editor backend (#8993)
balloob Aug 16, 2017
0fb281c
Update frontend
balloob Aug 16, 2017
3342db3
MQTT Switch - Add configurable availability payload (#8934)
Aug 16, 2017
e7ce110
Buienradar newconditions (#8897)
mjj4791 Aug 16, 2017
f114263
Pushbullet, fix multiple messages sent when url param is set (#9006)
karlkar Aug 16, 2017
95663f8
Update to pyenvisalink 2.2, and remove range validation on zonedump i…
Cinntax Aug 16, 2017
b75ce4f
Fix #9010 - Swiss Public Transportation shows departure time in the p…
hertg Aug 16, 2017
3765f88
Add HipChat notify service. (#8918)
BioSehnsucht Aug 16, 2017
55234a7
Update onkyo-eiscp to 1.2.3 (#9019)
danieljkemp Aug 17, 2017
427d7ee
Check if album image(s) exist in spotify (#9024)
Tommatheussen Aug 17, 2017
c278209
Update ffmpeg to 1.7 to fix severals problems (#9029)
pvizeli Aug 17, 2017
b282167
Add state_with_unit property to state objects in templates (#9014)
balloob Aug 18, 2017
6215e27
Fix Geizhals index issue when not 4 prices available (#9035)
celeroll Aug 18, 2017
ecc249a
Refactor USPS into component with Sensors+Camera (#8679)
mezz64 Aug 18, 2017
7ac1e46
Set password after connecting. Fixes #8983 (#9039)
StevenLooman Aug 19, 2017
597f53a
Update iOS sensor (battery icon fix and format updates) (#9032)
schmittx Aug 19, 2017
9837056
Adds London_air component (#9020)
robmarkcole Aug 19, 2017
a748b5e
Update pwmled to 1.2.1. (#9040)
soldag Aug 19, 2017
bf66019
Configurable timeout for webostv. (#9042)
soldag Aug 19, 2017
84025e4
Update ios.py (#9041)
schmittx Aug 19, 2017
5d52993
Support Windows in UPNP discovery (#8936)
kabongsteve Aug 19, 2017
0f9ae88
Upgrade python-pushover to 0.3 (#9045)
fanaticDavid Aug 19, 2017
d153ee0
Add speeds to fan dropdown in ISY fan component (#9004)
boojew Aug 19, 2017
c059dfd
Update Fitbit sensor (icons, formatting, client update) (#9031)
schmittx Aug 19, 2017
b3d16e8
Add Abode home security component (#9030)
arsaboo Aug 20, 2017
fee89d8
LIFX: avoid rare NoneType errors (#9054)
amelchio Aug 20, 2017
ebd64cd
Bump dlib face_recognition to 0.2.2 (#9060)
arsaboo Aug 20, 2017
c3d548a
Update fitbit.py (#9064)
schmittx Aug 21, 2017
3c9e09c
Upgrade sendgrid to 5.0.0 (#9062)
fabaff Aug 21, 2017
fe7384a
Upgrade slacker to 0.9.60 (#9065)
fabaff Aug 21, 2017
97e6a69
Add support for Prowl notifications. (#9028)
mbrrg Aug 21, 2017
f7daefd
Upgrade onkyo-eiscp to 1.2.4 (fixes #8995) (#9068)
fabaff Aug 21, 2017
7c38058
Workday sensor offset (#8824)
LaStrada Aug 21, 2017
4bb7809
eliqonline: channel id is an integer (#9072)
molobrakos Aug 21, 2017
bc549e9
Use builtin constants for Abode alarm_control_panel (#9059)
arsaboo Aug 21, 2017
54f01f3
bump python-ecobee-api version to 0.0.8 (#9074)
nkgilley Aug 21, 2017
8ceeee0
Bump abodepy to 0.7.1 (#9077)
arsaboo Aug 22, 2017
398735c
async_query returns False if connection to server failed, handle this…
molobrakos Aug 22, 2017
f6c5e5f
Added insteonplm device_override multiple capabilities (#9078)
teharris1 Aug 22, 2017
af8aec0
Upgrade uber_rides to 0.5.1 (#9080)
fabaff Aug 22, 2017
42fcaf9
Upgrade discord.py to 0.16.10 (#9082)
fabaff Aug 22, 2017
da2cb8e
Fix `device` attribute in fritz_callmonitor.py (fixes #9055) (#9081)
max-te Aug 22, 2017
4a3be6d
Upgrade youtube_dl to 2017.8.18 (#9079)
fabaff Aug 22, 2017
c77d2ea
Remove dash (#9089)
fabaff Aug 22, 2017
dd0ca0a
Upgrade credstash to 1.13.3 (#9088)
fabaff Aug 22, 2017
5a3a43c
9043 Fixed error while running dev docker (#9044)
MungoRae Aug 22, 2017
252aea3
Don't redefine consts (#9086)
fabaff Aug 22, 2017
06a20d0
Fix octoprint errors when printer is off/disconnected (#8988)
Aug 22, 2017
fd6fd76
Pilight switch: restore last state after restart (#8580)
janLo Aug 22, 2017
90689c3
Fix netdata system_load and add disk_free. (#9091)
michaelarnauts Aug 22, 2017
cb59b3f
Add worldtidesinfo sensor component (#8860)
Aug 22, 2017
90fb33f
Support changing the bulb color for tplink smartbulbs, fixes #8766 (#…
rytilahti Aug 23, 2017
9072484
bump snapcast version (#9100)
happyleavesaoc Aug 23, 2017
27b0d64
bump fedex version (#9099)
happyleavesaoc Aug 23, 2017
55a44b0
Yeelight fix updates on hsv mode (#9093)
rytilahti Aug 23, 2017
2355216
Catch exceptions (#9085)
fabaff Aug 23, 2017
4890953
Fix issue 8894 with uk_transport component if no next_buses or next_t…
robmarkcole Aug 23, 2017
feb85b9
upgrade Xiaomi Gateway lib to 0.3 (#9101)
Danielhiversen Aug 23, 2017
0dccef4
pythonegardia package requirement to .18 (#9104)
jeroenterheerdt Aug 23, 2017
698d133
Simplisafe unknown status fix (#9111)
lekobob Aug 24, 2017
d72a181
Update flux_led.py (#9122)
Danielhiversen Aug 24, 2017
8000
1e276a7
Xiaomi (#9126)
Danielhiversen Aug 25, 2017
fb5019e
refactor pushbullet (#9125)
Danielhiversen Aug 25, 2017
2ec0d25
optimistic mode for template covers (w/o timed movement) (#8402)
PhracturedBlue Aug 25, 2017
fdeef2f
Use const (#9127)
fabaff Aug 25, 2017
fe7dca5
Merge remote-tracking branch 'origin/master' into dev
balloob Aug 25, 2017
2e1b163
Version bump to 0.52
balloob Aug 25, 2017
1d615ea
Refactor mysensors callback and add validation (#9069)
MartinHjelmare Aug 25, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ omit =
homeassistant/helpers/signal.py

# omit pieces of code that rely on external devices being present
homeassistant/components/abode.py
homeassistant/components/*/abode.py

homeassistant/components/alarmdecoder.py
homeassistant/components/*/alarmdecoder.py

Expand Down Expand Up @@ -176,6 +179,9 @@ omit =
homeassistant/components/notify/twilio_sms.py
homeassistant/components/notify/twilio_call.py

homeassistant/components/usps.py
homeassistant/components/*/usps.py

homeassistant/components/velbus.py
homeassistant/components/*/velbus.py

Expand Down Expand Up @@ -326,6 +332,7 @@ omit =
homeassistant/components/light/yeelightsunflower.py
homeassistant/components/light/zengge.py
homeassistant/components/lirc.py
homeassistant/components/lock/nello.py
homeassistant/components/lock/nuki.py
homeassistant/components/lock/lockitron.py
homeassistant/components/lock/sesame.py
Expand Down Expand Up @@ -383,6 +390,7 @@ omit =
homeassistant/components/notify/free_mobile.py
homeassistant/components/notify/gntp.py
homeassistant/components/notify/group.py
homeassistant/components/notify/hipchat.py
homeassistant/components/notify/instapush.py
homeassistant/components/notify/kodi.py
homeassistant/components/notify/lannouncer.py
Expand All @@ -391,6 +399,7 @@ omit =
homeassistant/components/notify/message_bird.py
homeassistant/components/notify/nfandroidtv.py
homeassistant/components/notify/nma.py
homeassistant/components/notify/prowl.py
homeassistant/components/notify/pushbullet.py
homeassistant/components/notify/pushetta.py
homeassistant/components/notify/pushover.py
Expand Down Expand Up @@ -517,9 +526,9 @@ omit =
homeassistant/components/sensor/uber.py
homeassistant/components/sensor/upnp.py
homeassistant/components/sensor/ups.py
homeassistant/components/sensor/usps.py
homeassistant/components/sensor/vasttrafik.py
homeassistant/components/sensor/waqi.py
homeassistant/components/sensor/worldtidesinfo.py
homeassistant/components/sensor/xbox_live.py
homeassistant/components/sensor/yweather.py
homeassistant/components/sensor/zamg.py
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,6 @@ docs/build

# Windows Explorer
desktop.ini
/home-assistant.pyproj
/home-assistant.sln
/.vs/home-assistant/v14
75 changes: 75 additions & 0 deletions homeassistant/components/abode.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
"""
This component provides basic support for Abode Home Security system.

For more details about this component, please refer to the documentation at
https://home-assistant.io/components/abode/
"""
import logging

import voluptuous as vol
from requests.exceptions import HTTPError, ConnectTimeout
from homeassistant.helpers import discovery
from homeassistant.helpers import config_validation as cv
from homeassistant.const import CONF_USERNAME, CONF_PASSWORD, CONF_NAME

REQUIREMENTS = ['abodepy==0.7.1']

_LOGGER = logging.getLogger(__name__)

CONF_ATTRIBUTION = "Data provided by goabode.com"

DOMAIN = 'abode'
DEFAULT_NAME = 'Abode'
DATA_ABODE = 'data_abode'
DEFAULT_ENTITY_NAMESPACE = 'abode'

NOTIFICATION_ID = 'abode_notification'
NOTIFICATION_TITLE = 'Abode Security Setup'

CONFIG_SCHEMA = vol.Schema({
DOMAIN: vol.Schema({
vol.Required(CONF_USERNAME): cv.string,
vol.Required(CONF_PASSWORD): cv.string,
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
}),
}, extra=vol.ALLOW_EXTRA)


def setup(hass, config):
"""Set up Abode component."""
conf = config[DOMAIN]
username = conf.get(CONF_USERNAME)
password = conf.get(CONF_PASSWORD)

try:
data = AbodeData(username, password)
hass.data[DATA_ABODE] = data

for component in ['binary_sensor', 'alarm_control_panel']:
discovery.load_platform(hass, component, DOMAIN, {}, config)

except (ConnectTimeout, HTTPError) as ex:
_LOGGER.error("Unable to connect to Abode: %s", str(ex))
hass.components.persistent_notification.create(
'Error: {}<br />'
'You will need to restart hass after fixing.'
''.format(ex),
title=NOTIFICATION_TITLE,
notification_id=NOTIFICATION_ID)
return False

return True


class AbodeData:
"""Shared Abode data."""

def __init__(self, username, password):
"""Initialize Abode oject."""
import abodepy

self.abode = abodepy.Abode(username, password)
self.devices = self.abode.get_devices()

_LOGGER.debug("Abode Security set up with %s devices",
len(self.devices))
27 changes: 26 additions & 1 deletion homeassistant/components/alarm_control_panel/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@

from homeassistant.const import (
ATTR_CODE, ATTR_CODE_FORMAT, ATTR_ENTITY_ID, SERVICE_ALARM_TRIGGER,
SERVICE_ALARM_DISARM, SERVICE_ALARM_ARM_HOME, SERVICE_ALARM_ARM_AWAY)
SERVICE_ALARM_DISARM, SERVICE_ALARM_ARM_HOME, SERVICE_ALARM_ARM_AWAY,
SERVICE_ALARM_ARM_NIGHT)
from homeassistant.config import load_yaml_config_file
from homeassistant.loader import bind_hass
from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa
Expand All @@ -31,6 +32,7 @@
SERVICE_ALARM_DISARM: 'alarm_disarm',
SERVICE_ALARM_ARM_HOME: 'alarm_arm_home',
SERVICE_ALARM_ARM_AWAY: 'alarm_arm_away',
SERVICE_ALARM_ARM_NIGHT: 'alarm_arm_night',
SERVICE_ALARM_TRIGGER: 'alarm_trigger'
}

Expand Down Expand Up @@ -81,6 +83,18 @@ def alarm_arm_away(hass, code=None, entity_id=None):
hass.services.call(DOMAIN, SERVICE_ALARM_ARM_AWAY, data)


@bind_hass
def alarm_arm_night(hass, code=None, entity_id=None):
"""Send the alarm the command for arm night."""
data = {}
if code:
data[ATTR_CODE] = code
if entity_id:
data[ATTR_ENTITY_ID] = entity_id

hass.services.call(DOMAIN, SERVICE_ALARM_ARM_NIGHT, data)


@bind_hass
def alarm_trigger(hass, code=None, entity_id=None):
"""Send the alarm the command for trigger."""
Expand Down Expand Up @@ -187,6 +201,17 @@ def async_alarm_arm_away(self, code=None):
"""
return self.hass.async_add_job(self.alarm_arm_away, code)

def alarm_arm_night(self, code=None):
"""Send arm night command."""
raise NotImplementedError()

def async_alarm_arm_night(self, code=None):
"""Send arm night command.

This method must be run in the event loop and returns a coroutine.
"""
return self.hass.async_add_job(self.alarm_arm_night, code)

def alarm_trigger(self, code=None):
"""Send alarm trigger command."""
raise NotImplementedError()
Expand Down
82 changes: 82 additions & 0 deletions homeassistant/components/alarm_control_panel/abode.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
"""
This component provides HA alarm_control_panel support for Abode System.

For more details about this platform, please refer to the documentation at
https://home-assistant.io/components/alarm_control_panel.abode/
"""
import logging

from homeassistant.components.abode import (DATA_ABODE, DEFAULT_NAME)
from homeassistant.const import (STATE_ALARM_ARMED_AWAY,
STATE_ALARM_ARMED_HOME, STATE_ALARM_DISARMED)
import homeassistant.components.alarm_control_panel as alarm

DEPENDENCIES = ['abode']

_LOGGER = logging.getLogger(__name__)

ICON = 'mdi:security'


def setup_platform(hass, config, add_devices, discovery_info=None):
"""Set up a sensor for an Abode device."""
data = hass.data.get(DATA_ABODE)

add_devices([AbodeAlarm(hass, data, data.abode.get_alarm())])


class AbodeAlarm(alarm.AlarmControlPanel):
"""An alarm_control_panel implementation for Abode."""

def __init__(self, hass, data, device):
"""Initialize the alarm control panel."""
super(AbodeAlarm, self).__init__()
self._device = device
self._name = "{0}".format(DEFAULT_NAME)

@property
def should_poll(self):
"""Return the polling state."""
return True

@property
def name(self):
"""Return the name of the sensor."""
return self._name

@property
def icon(self):
"""Return icon."""
return ICON

@property
def state(self):
"""Return the state of the device."""
if self._device.mode == "standby":
state = STATE_ALARM_DISARMED
elif self._device.mode == "away":
state = STATE_ALARM_ARMED_AWAY
elif self._device.mode == "home":
state = STATE_ALARM_ARMED_HOME
else:
state = None
return state

def alarm_disarm(self, code=None):
"""Send disarm command."""
self._device.set_standby()
self.schedule_update_ha_state()

def alarm_arm_home(self, code=None):
"""Send arm home command."""
self._device.set_home()
self.schedule_update_ha_state()

def alarm_arm_away(self, code=None):
"""Send arm away command."""
self._device.set_away()
self.schedule_update_ha_state()

def update(self):
"""Update the device state."""
self._device.refresh()
2 changes: 1 addition & 1 deletion homeassistant/components/alarm_control_panel/egardia.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
CONF_NAME, STATE_ALARM_DISARMED, STATE_ALARM_ARMED_HOME,
STATE_ALARM_ARMED_AWAY, STATE_ALARM_TRIGGERED)

REQUIREMENTS = ['pythonegardia==1.0.17']
REQUIREMENTS = ['pythonegardia==1.0.18']

_LOGGER = logging.getLogger(__name__)

Expand Down
24 changes: 20 additions & 4 deletions homeassistant/components/alarm_control_panel/manual.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@
import homeassistant.components.alarm_control_panel as alarm
import homeassistant.util.dt as dt_util
from homeassistant.const i A92E mport (
STATE_ALARM_ARMED_AWAY, STATE_ALARM_ARMED_HOME, STATE_ALARM_DISARMED,
STATE_ALARM_PENDING, STATE_ALARM_TRIGGERED, CONF_PLATFORM, CONF_NAME,
CONF_CODE, CONF_PENDING_TIME, CONF_TRIGGER_TIME, CONF_DISARM_AFTER_TRIGGER)
STATE_ALARM_ARMED_AWAY, STATE_ALARM_ARMED_HOME, STATE_ALARM_ARMED_NIGHT,
STATE_ALARM_DISARMED, STATE_ALARM_PENDING, STATE_ALARM_TRIGGERED,
CONF_PLATFORM, CONF_NAME, CONF_CODE, CONF_PENDING_TIME, CONF_TRIGGER_TIME,
CONF_DISARM_AFTER_TRIGGER)
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.event import track_point_in_time

Expand Down Expand Up @@ -87,7 +88,8 @@ def name(self):
def state(self):
"""Return the state of the device."""
if self._state in (STATE_ALARM_ARMED_HOME,
STATE_ALARM_ARMED_AWAY) and \
STATE_ALARM_ARMED_AWAY,
STATE_ALARM_ARMED_NIGHT) and \
self._pending_time and self._state_ts + self._pending_time > \
dt_util.utcnow():
return STATE_ALARM_PENDING
Expand Down Expand Up @@ -145,6 +147,20 @@ def alarm_arm_away(self, code=None):
self._hass, self.async_update_ha_state,
self._state_ts + self._pending_time)

def alarm_arm_night(self, code=None):
"""Send arm night command."""
if not self._validate_code(code, STATE_ALARM_ARMED_NIGHT):
return

self._state = STATE_ALARM_ARMED_NIGHT
self._state_ts = dt_util.utcnow()
self.schedule_update_ha_state()

if self._pending_time:
track_point_in_time(
self._hass, self.async_update_ha_state,
self._state_ts + self._pending_time)

def alarm_trigger(self, code=None):
"""Send alarm trigger command. No code needed."""
self._pre_trigger_state = self._state
Expand Down
11 changes: 11 additions & 0 deletions homeassistant/components/alarm_control_panel/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,17 @@ alarm_arm_away:
description: An optional code to arm away the alarm control panel with
example: 1234

alarm_arm_night:
description: Send the alarm the command for arm night

fields:
entity_id:
description: Name of alarm control panel to arm night
example: 'alarm_control_panel.downstairs'
code:
description: An optional code to arm night the alarm control panel with
example: 1234

alarm_trigger:
description: Send the alarm the command for trigger

Expand Down
8 changes: 4 additions & 4 deletions homeassistant/components/alarm_control_panel/simplisafe.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
EVENT_HOMEASSISTANT_STOP)
import homeassistant.helpers.config_validation as cv

REQUIREMENTS = ['simplisafe-python==1.0.4']
REQUIREMENTS = ['simplisafe-python==1.0.5']

_LOGGER = logging.getLogger(__name__)

Expand Down Expand Up @@ -89,11 +89,11 @@ def code_format(self):
def state(self):
"""Return the state of the device."""
status = self.simplisafe.state()
if status == 'Off':
if status == 'off':
state = STATE_ALARM_DISARMED
elif status == 'Home':
elif status == 'home':
state = STATE_ALARM_ARMED_HOME
elif status == 'Away':
elif status == 'away':
state = STATE_ALARM_ARMED_AWAY
else:
state = STATE_UNKNOWN
Expand Down
Loading
0