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

0.50 #8685

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 120 commits into from
Jul 29, 2017
Merged

0.50 #8685

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
5581c62
Fix iFrame panel test
balloob Jul 13, 2017
ba019c7
Make deps directory persistent over upgrades (#7801)
MartinHjelmare Jul 14, 2017
8000
4fde0ff
LIFX: support for multizone (#8399)
amelchio Jul 14, 2017
d8abef9
Add RGB support to switch.flux (#8417)
d0ugal Jul 14, 2017
9373d5e
Fix media_position for cast component (#8452)
dersger Jul 14, 2017
d473f34
Remove km from visibility, add visibility_distance (#8454)
gollo Jul 14, 2017
5829cdf
Radarr sensor fix for issue #8250 (#8456)
hoopty Jul 14, 2017
87b83f3
Accept transition for light.toggle (#8466)
amelchio Jul 14, 2017
6ca828f
Make themes API work even when themes are not defined. (#8473)
andrey-git Jul 14, 2017
543e8bb
Fix check for running inside venv (#8481)
MartinHjelmare Jul 15, 2017
23b65bf
Version bump to 0.50.0dev0
balloob Jul 16, 2017
bffa0d2
Bump to KNXIP 0.5 (#8492)
Jul 16, 2017
d3be056
Expose all components on hass [Concept] (#8490)
balloob Jul 16, 2017
d29bddd
Add bind_hass to components (#8502)
balloob Jul 16, 2017
f6c3832
Fix TP-Link device tracker regression since 0.49 (#8497)
maikelwever Jul 16, 2017
d0275c8
Persistent notification import (#8507)
balloob Jul 16, 2017
ffd3081
Added additional attributes to OwnTracks device_tracker (#8503)
Jul 16, 2017
8c95574
Update dlib_face_detect.py (#8516)
pvizeli Jul 17, 2017
40aafcd
prometheus: Convert fahrenheit to celsius (#8511)
rcloran Jul 17, 2017
f047985
Realfix for dlib (#8517)
pvizeli Jul 17, 2017
cca0d3e
Attach the `chat_id` for a callback query from a chat group (fixes #8…
azogue Jul 17, 2017
1a1571c
Added sensor state rounding (#8499)
fronzbot Jul 17, 2017
c67c20f
fix for a bug introduced with media support in #8282 (#8513)
MikeChristianson Jul 17, 2017
95e0027
Fix KeyError
fabaff Jul 17, 2017
8c9b389
handle timeout errors without logging.exception when updating hue lig…
azogue Jul 17, 2017
b83ff73
Remove deprecated automation keywords (#8510)
amelchio Jul 17, 2017
fde4a7d
Citybikes: Allow None as result for empty slots (#8528)
janLo Jul 17, 2017
dcd6f7a
Return a 0 temperature value when none is found (#8518)
phil-lavin Jul 17, 2017
4ae11c0
Fix #6469 and #6828 (#8537)
titilambert Jul 18, 2017
879c816
Update docstrings (#8536)
fabaff Jul 18, 2017
2aa89cf
Upgrade TwitterAPI to 2.4.6 (#8535)
fabaff Jul 18, 2017
2926621
Fix support for multiple Apple TVs (#8539)
postlund Jul 18, 2017
5e1ff20
Decora: Fix set brightness and improve reconnection (#8522)
titilambert Jul 18, 2017
d54a634
Update demo.py
balloob Jul 18, 2017
1a86fa5
Initial support for Google Wifi/OnHub (#8485)
fronzbot Jul 18, 2017
4ece4bf
Fix exception dlib_face_identify when image is not recognized by face…
tchellomello Jul 19, 2017
6bc0729
[media_extractor] Add support for custom stream queries for media_ext…
minchik Jul 19, 2017
42699b7
Report Harmony remote off if state is unknown (#8547)
jawilson Jul 19, 2017
c8bfcd2
Upgrade the alarmdecoder dependency library from 0.12.1 to 0.12.3. (#…
viswa-swami Jul 19, 2017
c27074e
turn_on_action and turn_off_action with script syntax (#8558)
azogue Jul 19, 2017
f1280d3
Extends Pi-hole sensor to support the new sensors: (#8549)
tchellomello Jul 19, 2017
84ebcd8
Support for Wink Switch and Light groups also fix fan speed selection…
Jul 19, 2017
54755df
Added a service to write to KNX group addressed including documentati…
Jul 20, 2017
9cc3e7e
Handle manual edits to emulated_hue_ids.json (#8560)
jawilson Jul 20, 2017
< 8000 /a>
8a42e15
LIFX: assume default features for unknown products (#8553)
amelchio Jul 20, 2017
ee05a4a
Fix broken status update for lighting4 devices (#8543)
ypollart Jul 20, 2017
8d1999d
Enhance python_script to support "_getitem_" (#8541)
sdague Jul 20, 2017
49c399c
Update persistent deps dir version in config.py (#8479)
balloob Jul 20, 2017
fde291f
Add is_lighting4 to RfxtrxBinarySensor (#8563)
Danielhiversen Jul 20, 2017
bc27d17
Bump pyver to fix exception in fetching colours.
pavoni Jul 20, 2017
966809c
Merge pull request #8564 from home-assistant/bump_pyvera
pavoni Jul 20, 2017
90639d3
Xiaomi gw support (#8555)
Danielhiversen Jul 20, 2017
7189494
fix #8263 corrected Adafruit DHT library version from 1.3.0 to 1.3.2 …
namadori Jul 20, 2017
a5c0831
xiaomi bug fix (#8576)
Danielhiversen Jul 20, 2017
e63a96c
Bumped python-simplisafe version (#8578)
bachya Jul 20, 2017
4f8d2ec
Added Time Remaining and Time Elapsed sensors for octoprint (#8581)
Jul 21, 2017
f6a5e08
upgade xiaomi lib to 0.2 (#8584)
Danielhiversen Jul 21, 2017
fada6d3
Device support for different new sensors of the xiaomi aqara gateway …
syssi Jul 21, 2017
ee15306
Extends Fitbit sensors to track the device battery level (#8583)
tchellomello Jul 21, 2017
4359e0b
xiaomi binary sensor bug fix (#8586)
Danielhiversen Jul 21, 2017
06ceadf
upgrade pywebpush and PyJWT (#8588)
perosb Jul 21, 2017
dc42b63
Support for Wink oauth application authorization (#8208)
Jul 22, 2017
8d31c5f
zha: Update to bellows 0.3.4 (#8594)
rcloran Jul 22, 2017
7bea69c
update frontend
balloob Jul 22, 2017
7edf14e
Add Intent component (#8434)
balloob Jul 22, 2017
8e8ec7a
Remove code in wink.py overwriting hass.data configurator (#8595)
Jul 22, 2017
b4f392b
bump python-mirobo version for more robust protocol handling, make th…
rytilahti Jul 22, 2017
1807b45
Binary sensor ping fixed for hassio (#8573)
gollo Jul 22, 2017
2f08a91
Simplified percent conversion, better logging (#8568)
Jul 22, 2017
9043895
make attributes in the fritzdect module easier to process (#8436)
thomasklingbeil Jul 22, 2017
dac9716
Fix STATION_SCHEMA validation on longitude (#8610)
clkao Jul 23, 2017
c6bf529
Allow set_cover_position in scenes (#8613)
koenekelschot Jul 23, 2017
77d8e39
better but still not great (#8618)
cribbstechnologies Jul 23, 2017
cc2de5e
Upgrade youtube_dl to 2017.7.23 (#8617)
fabaff Jul 23, 2017
486bcc4
Upgrade mypy to 0.520 (#8616)
fabaff Jul 23, 2017
5d810da
REST binary sensor value_template optional (#8596)
philhawthorne Jul 23, 2017
3fec295
Bumped Amcrest version (#8624)
tchellomello Jul 24, 2017
1831a7d
Check if /dev/input/by-id exists (#8601)
schaal Jul 24, 2017
4b449f5
Tado Fix #8606 (#8621)
filcole Jul 24, 2017
f0293ee
prometheus: Fix zwave battery level (#8615)
rcloran Jul 24, 2017
b0b6026
ubus: Make multiple instances work again (#8571)
glance- Jul 24, 2017
f3d9086
Properly slugify switch.flux update service name (#8545)
jawilson Jul 24, 2017
a2abb4a
Update frontend
balloob Jul 24, 2017
654ad41
added onvif camera fix for non-virtual env installations (#8592)
matt2005 Jul 24, 2017
f86bd15
Cleanup old device_tracker stuff (#8627)
pvizeli Jul 24, 2017
1d31137
8000 Update README.rst
balloob Jul 24, 2017
9d9ca64
Update README.rst
balloob Jul 24, 2017
98568b5
Add support for using credstash as a secret store (#8494)
justin8 Jul 24, 2017
ecc1429
Added support for default value when environment variable is missing …
Jul 24, 2017
cc03f7e
Manual alarm with MQTT control (#8257)
colinodell Jul 24, 2017
3b7f16f
Catch and log Lyft API errors (#8635)
emlove Jul 25, 2017
ad7370e
Update frontend
balloob Jul 25, 2017
c2828ba
Tweak conversation/intent/shopping list (#8636)
balloob Jul 25, 2017
cd2703e
Update dependencies cast + discovery (#8646)
balloob Jul 26, 2017
e83816c
Add component Light TPLink (#8643)
gollo Jul 26, 2017
7c12074
Fixes Fitbit sensor to report battery level with the expected device …
tchellomello Jul 26, 2017
81a27e7
Upgrade aiolifx (#8648)
amelchio Jul 26, 2017
fff269e
Velbus (#8076)
thomasdelaet Jul 26, 2017
abcfcdd
Yahoo Weather update, supports forecast for more days (#8626)
fanthos Jul 26, 2017
438edc5
History performance improvements for single-entity requests (#8632)
OverloadUT Jul 26, 2017
3318f02
Add transition support to light.zha (#8548)
jawilson Jul 26, 2017
3b4ea86
Add uk_transport component. (#8600)
robmarkcole Jul 26, 2017
f5eeb25
Added support for SerenaHoneycombShades to Lutron Caseta (#8662)
kfcook Jul 27, 2017
9d5c61b
MQTT Switch: add availability_topic for online/offline status (#8593)
abmantis Jul 27, 2017
1e8c00a
Adding support for mapping keys to value in statsd (#8665)
Khabi Jul 27, 2017
b59c299
Upgrade fuzzywuzzy to 0.15.1 (#8671)
fabaff Jul 27, 2017
4fcaea2
Upgrade libnacl to 1.5.2 (#8670)
fabaff Jul 27, 2017
74581b5
Upgrade sqlalchemy to 1.1.12 (#8669)
fabaff Jul 27, 2017
9e6817b
Upgrade pyhomematic to 0.1.30 (#8673)
danielperna84 Jul 27, 2017
51108b8
Hass.io: logo support / timeout handling (#8668)
pvizeli Jul 27, 2017
0ab0e35
Updated pysnmp to 4.3.9 (#8675)
bgehrich Jul 27, 2017
e8ce418
Fix COMMAND_CLASS_BARRIER_OPERATOR for dev branch of OpenZwave (#8574)
firstof9 Jul 27, 2017
0c97fe7
Version bump to 0.50
Jul 28, 2017
0a6d519
Merge remote-tracking branch 'origin/master' into release-0-50
Jul 28, 2017
828c469
Fix Lint
balloob Jul 29, 2017
56f4486
Update frontend
balloob Jul 29, 2017
f0e5f68
Shopping List: edit name / complete status (#8666)
balloob Jul 29, 2017
c376bc2
Support for Wink local control (#8607)
Jul 28, 2017
12dec93
Update frontend
balloob Jul 29, 2017
a760673
Persist shopping list + clear completed (#8697)
balloob Jul 29, 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
9 changes: 8 additions & 1 deletion .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,9 @@ omit =
homeassistant/components/twilio.py
homeassistant/components/notify/twilio_sms.py
homeassistant/components/notify/twilio_call.py

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

homeassistant/components/velux.py
homeassistant/components/*/velux.py
Expand All @@ -193,6 +196,9 @@ omit =
homeassistant/components/wink.py
homeassistant/components/*/wink.py

homeassistant/components/xiaomi.py
homeassistant/components/*/xiaomi.py

homeassistant/components/zabbix.py
homeassistant/components/*/zabbix.py

Expand All @@ -208,6 +214,7 @@ omit =

homeassistant/components/alarm_control_panel/alarmdotcom.py
homeassistant/components/alarm_control_panel/concord232.py
homeassistant/components/alarm_control_panel/manual_mqtt.py
homeassistant/components/alarm_control_panel/nx584.py
homeassistant/components/alarm_control_panel/simplisafe.py
homeassistant/components/alarm_control_panel/totalconnect.py
Expand Down Expand Up @@ -274,7 +281,6 @@ omit =
homeassistant/components/device_tracker/tplink.py
homeassistant/components/device_tracker/trackr.py
homeassistant/components/device_tracker/ubus.py
homeassistant/components/device_tracker/xiaomi.py
homeassistant/components/downloader.py
homeassistant/components/emoncms_history.py
homeassistant/components/emulated_hue/upnp.py
Expand Down Expand Up @@ -303,6 +309,7 @@ omit =
homeassistant/components/light/piglow.py
homeassistant/components/light/sensehat.py
homeassistant/components/light/tikteck.py
homeassistant/components/light/tplink.py
homeassistant/components/light/tradfri.py
homeassistant/components/light/x10.py
homeassistant/components/light/yeelight.py
Expand Down
6 changes: 4 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Home Assistant |Build Status| |Coverage Status| |Join the chat at https://gitter.im/home-assistant/home-assistant| |Join the dev chat at https://gitter.im/home-assistant/home-assistant/devs|
==============================================================================================================================================================================================
Home Assistant |Build Status| |Coverage Status| |Chat Status|
=============================================================

Home Assistant is a home automation platform running on Python 3. It is able to track and control all devices at home and offer a platform for automating control.

Expand Down Expand Up @@ -31,6 +31,8 @@ of a component, check the `Home Assistant help section <https://home-assistant.i
:target: https://travis-ci.org/home-assistant/home-assistant
.. |Coverage Status| image:: https://img.shields.io/coveralls/home-assistant/home-assistant.svg
:target: https://coveralls.io/r/home-assistant/home-assistant?branch=master
.. |Chat Status| image:: https://img.shields.io/discord/330944238910963714.svg
:target: https://discord.gg/c5DvZ4e
.. |Join the chat at https://gitter.im/home-assistant/home-assistant| image:: https://img.shields.io/badge/gitter-general-blue.svg
:target: https://gitter.im/home-assistant/home-assistant?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
.. |Join the dev chat at https://gitter.im/home-assistant/home-assistant/devs| image:: https://img.shields.io/badge/gitter-development-yellowgreen.svg
Expand Down
42 changes: 28 additions & 14 deletions homeassistant/bootstrap.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
from homeassistant.setup import async_setup_component
import homeassistant.loader as loader
from homeassistant.util.logging import AsyncHandler
from homeassistant.util.package import async_get_user_site, get_user_site
from homeassistant.util.yaml import clear_secret_cache
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.signal import async_register_signal_handling
Expand All @@ -39,7 +40,7 @@ def from_config_dict(config: Dict[str, Any],
skip_pip: bool=False,
log_rotate_days: Any=None) \
-> Optional[core.HomeAssistant]:
"""Try to configure Home Assistant from a config dict.
"""Try to configure Home Assistant from a configuration dictionary.

Dynamically loads required components and its dependencies.
"""
Expand All @@ -48,7 +49,8 @@ def from_config_dict(config: Dict[str, Any],
if config_dir is not None:
config_dir = os.path.abspath(config_dir)
hass.config.config_dir = config_dir
mount_local_lib_path(config_dir)
hass.loop.run_until_complete(
async_mount_local_lib_path(config_dir, hass.loop))

# run task
hass = hass.loop.run_until_complete(
Expand All @@ -69,7 +71,7 @@ def async_from_config_dict(config: Dict[str, Any],
skip_pip: bool=False,
log_rotate_days: Any=None) \
-> Optional[core.HomeAssistant]:
"""Try to configure Home Assistant from a config dict.
"""Try to configure Home Assistant from a configuration dictionary.

Dynamically loads required components and its dependencies.
This method is a coroutine.
Expand All @@ -90,8 +92,8 @@ def async_from_config_dict(config: Dict[str, Any],

hass.config.skip_pip = skip_pip
if skip_pip:
_LOGGER.warning('Skipping pip installation of required modules. '
'This may cause issues.')
_LOGGER.warning("Skipping pip installation of required modules. "
"This may cause issues")

if not loader.PREPARED:
yield from hass.async_add_job(loader.prepare, hass)
Expand All @@ -116,13 +118,13 @@ def async_from_config_dict(config: Dict[str, Any],
# pylint: disable=not-an-iterable
res = yield from core_components.async_setup(hass, config)
if not res:
_LOGGER.error('Home Assistant core failed to initialize. '
'Further initialization aborted.')
_LOGGER.error("Home Assistant core failed to initialize. "
"further initialization aborted")
return hass

yield from persistent_notification.async_setup(hass, config)

_LOGGER.info('Home Assistant core initialized')
_LOGGER.info("Home Assistant core initialized")

# stage 1
for component in components:
Expand All @@ -141,7 +143,7 @@ def async_from_config_dict(config: Dict[str, Any],
yield from hass.async_block_till_done()

stop = time()
_LOGGER.info('Home Assistant initialized in %.2fs', stop-start)
_LOGGER.info("Home Assistant initialized in %.2fs", stop-start)

async_register_signal_handling(hass)
return hass
Expand Down Expand Up @@ -183,15 +185,15 @@ def async_from_config_file(config_path: str,
# Set config dir to directory holding config file
config_dir = os.path.abspath(os.path.dirname(config_path))
hass.config.config_dir = config_dir
yield from hass.async_add_job(mount_local_lib_path, config_dir)
yield from async_mount_local_lib_path(config_dir, hass.loop)

async_enable_logging(hass, verbose, log_rotate_days)

try:
config_dict = yield from hass.async_add_job(
conf_util.load_yaml_config_file, config_path)
except HomeAssistantError as err:
_LOGGER.error('Error loading %s: %s', config_path, err)
_LOGGER.error("Error loading %s: %s", config_path, err)
return None
finally:
clear_secret_cache()
Expand Down Expand Up @@ -276,11 +278,23 @@ def async_stop_async_handler(event):


def mount_local_lib_path(config_dir: str) -> str:
"""Add local library to Python Path."""
deps_dir = os.path.join(config_dir, 'deps')
lib_dir = get_user_site(deps_dir)
if lib_dir not in sys.path:
sys.path.insert(0, lib_dir)
return deps_dir


@asyncio.coroutine
def async_mount_local_lib_path(config_dir: str,
loop: asyncio.AbstractEventLoop) -> str:
"""Add local library to Python Path.

Async friendly.
This function is a coroutine.
"""
deps_dir = os.path.join(config_dir, 'deps')
if deps_dir not in sys.path:
sys.path.insert(0, os.path.join(config_dir, 'deps'))
lib_dir = yield from async_get_user_site(deps_dir, loop=loop)
if lib_dir not in sys.path:
sys.path.insert(0, lib_dir)
return deps_dir
30 changes: 15 additions & 15 deletions homeassistant/components/__init__.py
10000
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import homeassistant.config as conf_util
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.service import extract_entity_ids
from homeassistant.loader import get_component
from homeassistant.const import (
ATTR_ENTITY_ID, SERVICE_TURN_ON, SERVICE_TURN_OFF, SERVICE_TOGGLE,
SERVICE_HOMEASSISTANT_STOP, SERVICE_HOMEASSISTANT_RESTART,
Expand All @@ -33,25 +32,27 @@ def is_on(hass, entity_id=None):
If there is no entity id given we will check all.
"""
if entity_id:
group = get_component('group')

entity_ids = group.expand_entity_ids(hass, [entity_id])
entity_ids = hass.components.group.expand_entity_ids([entity_id])
else:
entity_ids = hass.states.entity_ids()

for ent_id in entity_ids:
domain = ha.split_entity_id(ent_id)[0]

module = get_component(domain)

try:
if module.is_on(hass, ent_id):
return True
component = getattr(hass.components, domain)

except ImportError:
_LOGGER.error('Failed to call %s.is_on: component not found',
domain)
continue

if not hasattr(component, 'is_on'):
_LOGGER.warning("Component %s has no is_on method.", domain)
continue

except AttributeError:
# module is None or method is_on does not exist
_LOGGER.exception("Failed to call %s.is_on for %s",
module, ent_id)
if component.is_on(ent_id):
return True

return False

Expand Down Expand Up @@ -161,10 +162,9 @@ def async_handle_core_service(call):
return

if errors:
notif = get_component('persistent_notification')
_LOGGER.error(errors)
notif.async_create(
hass, "Config error. See dev-info panel for details.",
hass.components.persistent_notification.async_create(
"Config error. See dev-info panel for details.",
"Config validating", "{0}.check_config".format(ha.DOMAIN))
return

Expand Down
5 changes: 5 additions & 0 deletions homeassistant/components/alarm_control_panel/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
ATTR_CODE, ATTR_CODE_FORMAT, ATTR_ENTITY_ID, SERVICE_ALARM_TRIGGER,
SERVICE_ALARM_DISARM, SERVICE_ALARM_ARM_HOME, SERVICE_ALARM_ARM_AWAY)
from homeassistant.config import load_yaml_config_file
from homeassistant.loader import bind_hass
from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity import Entity
Expand Down Expand Up @@ -44,6 +45,7 @@
})


@bind_hass
def alarm_disarm(hass, code=None, entity_id=None):
"""Send the alarm the command for disarm."""
data = {}
Expand All @@ -55,6 +57,7 @@ def alarm_disarm(hass, code=None, entity_id=None):
hass.services.call(DOMAIN, SERVICE_ALARM_DISARM, data)


@bind_hass
def alarm_arm_home(hass, code=None, entity_id=None):
"""Send the alarm the command for arm home."""
data = {}
Expand All @@ -66,6 +69,7 @@ def alarm_arm_home(hass, code=None, entity_id=None):
hass.services.call(DOMAIN, SERVICE_ALARM_ARM_HOME, data)


@bind_hass
def alarm_arm_away(hass, code=None, entity_id=None):
"""Send the alarm the command for arm away."""
data = {}
Expand All @@ -77,6 +81,7 @@ def alarm_arm_away(hass, code=None, entity_id=None):
hass.services.call(DOMAIN, SERVICE_ALARM_ARM_AWAY, data)


@bind_hass
def alarm_trigger(hass, code=None, entity_id=None):
"""Send the alarm the command for trigger."""
data = {}
Expand Down
Loading
0