Skip to content
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

0.51 #8919

Merged
merged 131 commits into from
Aug 12, 2017
Merged

0.51 #8919

merged 131 commits into from
Aug 12, 2017

Conversation

fabaff
Copy link
Member

@fabaff fabaff commented Aug 10, 2017

This release contains a migration which can take a long time (20 minutes). Do not stop Home Assistant while it is in progress.

Release 0.51 is around the corner and it contains some really great updates.

Database speed up

The first one is the database updates #8748 by @OverloadUT. Every query that has been tested executes in well under 1 second, even on a RPi using MySQL with 6 million rows and around 300 entities. This is true even when you're getting an unrealistically huge date range!

Updating the database will take some time when you start Home Assistant. During that time, Home Assistant is not usable. Please let it complete and do not turn Home Assistant off.

Frontend update

We have finished the migration of our frontend to be powered by Polymer 2. This has given us a big speed boost on Safari/iOS devices and has fixed a wide range of bugs.

We have also finished the automation editor. All triggers and actions are now implemented and so are most conditions (missing are and, or). The automation editor is also no longer Chrome only, it can now also be used in Safari.

Another change to the frontend is that we have reorganized the panels. The Z-Wave and automation configuration panels have been merged into the configuration panel.

https://www.youtube.com/watch?v=f3isVVpmiq4&feature=youtu.be

Vacuum cleaners

As we have seen more vacuum cleaners land in Home Assistant, it was time to create an official component for them. That's why @azogue introduced the new vacuum cleaner component in #8623. This allows first class integration of vacuum cleaners in Home Assistant. Out of the box we will have Dyson, Xiamo and Roomba as supported platforms.

New Platforms

Breaking Changes

vacuum:
- platform: xiaomi
  name: Vacuum cleaner
  host: !secret xiaomi_vacuum_robot_ip
  token: !secret xiaomi_vacuum_robot_token

All changes

William Scanlon and others added 30 commits July 28, 2017 12:02
* Support for Wink local control
* Upgrade pushbullet.py to 0.11.0

* Update sensor as well
* Shopping List: edit name / complete status

* Change ID to be UUID based
* added scene support

* Updated pylutron_caseta version number

* Updated pylutron_caseta version number

* Fixed lint errors

* fix style
* Fixed issue with routers in bridge mode

- Router in brdige mode apparently don't report all of the stats
- Re-wrote the data_format function so it's a bit easier to follow and able to log keys that aren't supported by a router in a given mode
- Changed config so that it properly ignores conditions when not explicitly listed
- Added tests to check for the above and also to verify we log that a key doesn't exist rather than throwing an exception

* Mistakenly was calling MONITORED_CONDITIONS in data_format

- Changed to be the actual config values to prevent log error
* Add new component for TPLink light bulbs.

* Update with result of gen_requirements_all.

* Add new component light.tplink.

* Move I/O outside of properties as per https://goo.gl/Nvioub.
DirectPy, the third party library used for controlling directv boxes,
has the ability to accept an ID in order to act as a remote for Genie
slaves instead of just the master directv box. This commit adds glue
such that one can configure home assistant to interface with these slave
genie boxes.

Signed-off-by: Nicholas Sielicki <[email protected]>
* Add proxy support for telegram_bot

New optional config parameters `proxy_url` and `proxy_params` (a dict)
```yaml
telegram_bot:
  platform: polling
  api_key: !secret telegram_bot_api_key
  allowed_chat_ids:
    - !secret telegram_bot_chatid
  proxy_url: socks5://proxy_ip:proxy_port
  proxy_params:
    username: my-username
password: my-secret-password
```

* change `ATTR_` for `CONF_` for config params
Requiring python-insteonplm v0.7.5 (up from 0.7.4) now
…#8448)

* New media_player platform for Russound devices using the RIO protocol
Auto discovers zones and sources
Handles media metadata from sources that support it
asyncio implementation
Push updates for any zone or source changes so no polling required.

* Fixed up linting issues

* Addressing PR feedback

Updated russound_rio dependency to 0.1.3
Use enumerate_zones and enumerate_sources methods instead of doing it in
the platform.
Register callbacks in async_added_to_hass coroutine
Corrected behavior of async methods
* Catch tradfri timout exception

* Remove not needed return statement

* Remove test logging

* Log warning instead of error
* Add toggle to remotes

* Only include activity if specified, and add service description
* added invert_state optional parameter

* removed superfluous parens

* moved state inversion to the is_closed method

* added relay_invert feature

* fixed syntax to comply with houndci-bot rules

* changed state_invert to invert_state and relay_invert to invert_relay
fabaff and others added 14 commits August 8, 2017 20:21
* Do not call update() in constructor

* Fix lint issues
)

* Add longer text strings to mailbox demo to test string truncation in frontend

* Remove lorem ipsum txt file

* Use format instead of %
* LIFX: improve performance of multi-light transitions

To avoid hub overload, the light.turn_on call will change each light
sequentially.

As LIFX has no hub we can safely increase performance by starting all
light transitions concurrently.

* Improve state updates after light changes

The light.turn_on call will set a new state and then immediately read it
back. However, reading the state of a LIFX light right after a state
change can still return the old value.

To handle this situation we have previously delayed the update request a
little while to allow a potential state change to settle. Because light
updates are now run in parallel, this delay might be too short when many
lights are set at once.

This commit introduces a per-light Lock to make it explicit when the
state cannot yet be trusted.

We must then do the state update ourselves. This was already done at the
end of a long transition and that code can be reused for also doing the
update at the start of a transition.
* Add new device tracker for Huawei Routers.

	This was tested with the HG8247H model, used by Vodafone
	Portugal for the Fiber service.

* add to .coveragerc; remove import and space

* add comments and fix lint

* rename methods

* huawei_router: add constants to scanner class

* huawei_router: remove lock; use format() in string

* huawei_router: use tupple instead of member only class

* huawei_router: reduce min scan time

* huawei_router: lint

* huawei_router: lint

* huawei_router: add missing lines in imports

* huawei_router: correctly decode string after router firmware update

* Remove things that is done on core now
* Added possibilities to use template in the command_line sensor

* Minor style guideline conforms

* Minor style guideline conforms

* Added new test for template rendering

* Minor style guideline conforms

* Minor style guideline conforms

* Fixed failing testcases

* Fix style violations

* fix code pretty
* Honor PEP8 naming convention

* Update validator
'use strict';var nb="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this;
(function(){function k(){var a=this;this.s={};this.g=document.documentElement;var b=new za;b.rules=[];this.h=t.set(this.g,new t(b));this.i=!1;this.b=this.a=null;ob(function(){a.c()})}function H(){this.customStyles=[];this.enqueued=!1}function pb(){}function ha(a){this.cache={};this.c=void 0===a?100:a}function p(){}function t(a,b,c,d,e){this.G=a||null;this.b=b||null;this.sa=c||[];this.P=null;this.Y=e||"";this.a=this.B=this.K=null}function r(){}function za(){this.end=this.start=0;this.rules=this.parent=
this.previous=null;this.cssText=this.parsedCssText="";this.atRule=!1;this.type=0;this.parsedSelector=this.selector=this.keyframesName=""}function $c(a){function b(b,c){Object.defineProperty(b,"innerHTML",{enumerable:c.enumerable,configurable:!0,get:c.get,set:function(b){var d=this,e=void 0;m(this)&&(e=[],J(this,function(a){a!==d&&e.push(a)}));c.set.call(this,b);if(e)for(var f=0;f<e.length;f++){var g=e[f];1===g.__CE_state&&a.disconnectedCallback(g)}this.ownerDocument.__CE_hasRegistry?a.c(this):a.j(this);
return b}})}function c(b,c){u(b,"insertAdjacentElement",function(b,d){var e=m(d);b=c.call(this,b,d);e&&a.a(d);m(b)&&a.b(d);return b})}qb?u(Element.prototype,"attachShadow",function(a){return this.__CE_shadowRoot=a=qb.call(this,a)}):console.warn("Custom Elements: `Element#attachShadow` was not patched.");if(Aa&&Aa.get)b(Element.prototype,Aa);else if(Ba&&Ba.get)b(HTMLElement.prototype,Ba);else{var d=Ca.call(document,"div");a.u(function(a){b(a,{enumerable:!0,configurable:!0,get:function(){return rb.call(this,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing semicolon.
Expected an assignment or function call and instead saw an expression.
Too many errors. (17% scanned).

*/
'use strict';var nb="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this;
(function(){function k(){var a=this;this.s={};this.g=document.documentElement;var b=new za;b.rules=[];this.h=t.set(this.g,new t(b));this.i=!1;this.b=this.a=null;ob(function(){a.c()})}function H(){this.customStyles=[];this.enqueued=!1}function pb(){}function ha(a){this.cache={};this.c=void 0===a?100:a}function p(){}function t(a,b,c,d,e){this.G=a||null;this.b=b||null;this.sa=c||[];this.P=null;this.Y=e||"";this.a=this.B=this.K=null}function r(){}function za(){this.end=this.start=0;this.rules=this.parent=
this.previous=null;this.cssText=this.parsedCssText="";this.atRule=!1;this.type=0;this.parsedSelector=this.selector=this.keyframesName=""}function $c(a){function b(b,c){Object.defineProperty(b,"innerHTML",{enumerable:c.enumerable,configurable:!0,get:c.get,set:function(b){var d=this,e=void 0;m(this)&&(e=[],J(this,function(a){a!==d&&e.push(a)}));c.set.call(this,b);if(e)for(var f=0;f<e.length;f++){var g=e[f];1===g.__CE_state&&a.disconnectedCallback(g)}this.ownerDocument.__CE_hasRegistry?a.c(this):a.j(this);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If a strict mode function is executed using function invocation, its 'this' value will be undefined.
Missing semicolon.
Expected an assignment or function call and instead saw an expression.

subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
'use strict';var nb="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this;
(function(){function k(){var a=this;this.s={};this.g=document.documentElement;var b=new za;b.rules=[];this.h=t.set(this.g,new t(b));this.i=!1;this.b=this.a=null;ob(function(){a.c()})}function H(){this.customStyles=[];this.enqueued=!1}function pb(){}function ha(a){this.cache={};this.c=void 0===a?100:a}function p(){}function t(a,b,c,d,e){this.G=a||null;this.b=b||null;this.sa=c||[];this.P=null;this.Y=e||"";this.a=this.B=this.K=null}function r(){}function za(){this.end=this.start=0;this.rules=this.parent=

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If a strict mode function is executed using function invocation, its 'this' value will be undefined.
Missing '()' invoking a constructor.
Missing semicolon.

Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
'use strict';var nb="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use '!==' to compare with 'null'.

}
fetch('/api/notify.html5/callback', {
method: 'POST',

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'Headers' is not defined.

// If we don't have a key matching url in the cache already, add it.
if (!cachedUrls.has(cacheKey)) {
var request = new Request(cacheKey, {credentials: 'same-origin'});

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'fetch' is not defined.

Array.from(urlsToCacheKeys.values()).map(function(cacheKey) {
// If we don't have a key matching url in the cache already, add it.
if (!cachedUrls.has(cacheKey)) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'Request' is not defined.

// event.respondWith(), using the appropriate cache key.
if (shouldRespond) {
event.respondWith(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'caches' is not defined.

var setOfExpectedUrls = new Set(urlsToCacheKeys.values());

event.waitUntil(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'caches' is not defined.


self.addEventListener('install', function(event) {
event.waitUntil(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'caches' is not defined.

@fabaff
Copy link
Member Author

fabaff commented Aug 10, 2017

Docs update: home-assistant/home-assistant.io#3167

@emlove emlove removed their request for review August 10, 2017 21:47
MartinHjelmare and others added 5 commits August 12, 2017 10:57
* This will ensure no I/O in entity properties.
* fixing emulated hue issue and testing it

* fixing hound issues

* I should probably stop using vim

* Check against dict directly instead of items.
* Require either temperature or high/low target temperatures.
* Add tests.
@balloob balloob merged commit adbcbe3 into master Aug 12, 2017
@fabaff fabaff deleted the release-0-51 branch August 22, 2017 16:04
@home-assistant home-assistant locked and limited conversation to collaborators Dec 11, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.