diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/background.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/background.png
index c2824cc432c..e932cb09a99 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/background.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/background.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/divider.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/divider.png
index 77cd829a4b5..021685f4b0a 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/divider.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/divider.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png
index e06aa50ca29..9d3291e8e59 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png
index d2bc4fc75a8..ef55acc7ca4 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png
index 96fe7bb0242..091cc054a2a 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png
index 22295074029..f7c23cd5ba1 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png
index 15db44d4e66..1f6aebd73ae 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png
index e399bf34cb9..e6ab8aa55a3 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png
index 409d89d29a3..8dcf0c5bfcc 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png
index 3fe284845fa..6898116a3b7 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png
index 73b371abbca..5e151d69c8c 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png
index 72322171bd5..e89fc5c6afc 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png
index 626444a66a7..ae47e9018b3 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png
index 27851dfdf36..63692be0b75 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png
index 3658453cfc1..6433b4d476a 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png
index 138ebb35ba8..206be887e0a 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/display/background.png b/.themes/classic/source/assets/jwplayer/glow/display/background.png
index 391152f5e2f..eb7c709d39b 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/display/background.png and b/.themes/classic/source/assets/jwplayer/glow/display/background.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png b/.themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png
index a3819c1ef19..10ae39736ad 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png and b/.themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/display/muteIcon.png b/.themes/classic/source/assets/jwplayer/glow/display/muteIcon.png
index e0408bbda5e..8e078ae4387 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/display/muteIcon.png and b/.themes/classic/source/assets/jwplayer/glow/display/muteIcon.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/display/playIcon.png b/.themes/classic/source/assets/jwplayer/glow/display/playIcon.png
index cb384278722..269e4311bcb 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/display/playIcon.png and b/.themes/classic/source/assets/jwplayer/glow/display/playIcon.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/dock/button.png b/.themes/classic/source/assets/jwplayer/glow/dock/button.png
index 391152f5e2f..eb7c709d39b 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/dock/button.png and b/.themes/classic/source/assets/jwplayer/glow/dock/button.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/item.png b/.themes/classic/source/assets/jwplayer/glow/playlist/item.png
index 812592c3ce5..825911836fb 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/playlist/item.png and b/.themes/classic/source/assets/jwplayer/glow/playlist/item.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png b/.themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png
index 549f3721d6b..cbb7e34d85f 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png and b/.themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png
index 048cc623be9..61c6dfbbba0 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png and b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png
index 65c463a0c04..4d6dae6290f 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png and b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png
index 121778affdc..2b455a6ff85 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png and b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png b/.themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png
index b4059754baf..dabce156c23 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png and b/.themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png b/.themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png
index eae1d4e7559..b659a20c3b5 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png and b/.themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png differ
diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png b/.themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png
index 695ec949f86..2435d3777eb 100644
Binary files a/.themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png and b/.themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png differ
diff --git a/.themes/classic/source/favicon.png b/.themes/classic/source/favicon.png
index 0f250673059..2ad3a59140c 100644
Binary files a/.themes/classic/source/favicon.png and b/.themes/classic/source/favicon.png differ
diff --git a/.themes/classic/source/images/bird_32_gray.png b/.themes/classic/source/images/bird_32_gray.png
index 574f210aec4..cf2cb22d97d 100644
Binary files a/.themes/classic/source/images/bird_32_gray.png and b/.themes/classic/source/images/bird_32_gray.png differ
diff --git a/.themes/classic/source/images/bird_32_gray_fail.png b/.themes/classic/source/images/bird_32_gray_fail.png
index 8337d10317a..d6259651482 100644
Binary files a/.themes/classic/source/images/bird_32_gray_fail.png and b/.themes/classic/source/images/bird_32_gray_fail.png differ
diff --git a/.themes/classic/source/images/code_bg.png b/.themes/classic/source/images/code_bg.png
index a57bab56a1b..ebd3acfa9b7 100644
Binary files a/.themes/classic/source/images/code_bg.png and b/.themes/classic/source/images/code_bg.png differ
diff --git a/.themes/classic/source/images/dotted-border.png b/.themes/classic/source/images/dotted-border.png
index 57f99071a5a..d19b60c9f6b 100644
Binary files a/.themes/classic/source/images/dotted-border.png and b/.themes/classic/source/images/dotted-border.png differ
diff --git a/.themes/classic/source/images/email.png b/.themes/classic/source/images/email.png
index e55473fef7b..9100c8bb194 100644
Binary files a/.themes/classic/source/images/email.png and b/.themes/classic/source/images/email.png differ
diff --git a/.themes/classic/source/images/line-tile.png b/.themes/classic/source/images/line-tile.png
index f67ee19fdc9..9247c3b1f5c 100644
Binary files a/.themes/classic/source/images/line-tile.png and b/.themes/classic/source/images/line-tile.png differ
diff --git a/.themes/classic/source/images/noise.png b/.themes/classic/source/images/noise.png
index 432e05bfd1a..46cdf03fdf2 100644
Binary files a/.themes/classic/source/images/noise.png and b/.themes/classic/source/images/noise.png differ
diff --git a/.themes/classic/source/images/rss.png b/.themes/classic/source/images/rss.png
index 151ae718ebf..037ce65db15 100644
Binary files a/.themes/classic/source/images/rss.png and b/.themes/classic/source/images/rss.png differ
diff --git a/.themes/classic/source/images/search.png b/.themes/classic/source/images/search.png
index 1220ff4e261..d0e1b1908bb 100644
Binary files a/.themes/classic/source/images/search.png and b/.themes/classic/source/images/search.png differ
diff --git a/Gemfile b/Gemfile
index c30860255d8..d7b8fe661d0 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,5 +1,7 @@
source "https://rubygems.org"
+ruby "> 2.3.0"
+
group :development do
gem 'rake', '~> 10.0'
gem 'jekyll', '~> 3.0'
@@ -7,6 +9,9 @@ group :development do
gem 'sass-globbing', '~> 1.0'
gem 'stringex', '~> 1.4'
gem 'pry'
+
+ # See https://github.com/home-assistant/home-assistant.github.io/pull/3904
+ gem 'rb-inotify', '< 0.9.9'
end
group :jekyll_plugins do
diff --git a/Gemfile.lock b/Gemfile.lock
index d706705eb30..4a9684644f8 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -73,8 +73,8 @@ GEM
rack
rake (10.5.0)
rb-fsevent (0.10.2)
- rb-inotify (0.9.10)
- ffi (>= 0.5.0, < 2)
+ rb-inotify (0.9.8)
+ ffi (>= 0.5.0)
redcarpet (3.4.0)
rouge (1.11.1)
safe_yaml (1.0.4)
@@ -104,9 +104,13 @@ DEPENDENCIES
octopress-include-tag
pry
rake (~> 10.0)
+ rb-inotify (< 0.9.9)
sass-globbing (~> 1.0)
sinatra (~> 1.4.2)
stringex (~> 1.4)
+RUBY VERSION
+ ruby 2.4.1p111
+
BUNDLED WITH
1.15.4
diff --git a/_config.yml b/_config.yml
index 69312dd7804..de05f2cbf1c 100644
--- a/_config.yml
+++ b/_config.yml
@@ -139,12 +139,12 @@ social:
# Home Assistant release details
current_major_version: 0
-current_minor_version: 57
-current_patch_version: 2
-date_released: 2017-11-05
+current_minor_version: 59
+current_patch_version: 1
+date_released: 2017-12-04
# Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it.
# Major release:
-patch_version_notes: "#release-0572--november-5"
+patch_version_notes: "#release-0591---december-4"
# Minor release (Example #release-0431---april-25):
diff --git a/source/_addons/configurator.markdown b/source/_addons/configurator.markdown
index f2b2d3df19f..97640ebe203 100644
--- a/source/_addons/configurator.markdown
+++ b/source/_addons/configurator.markdown
@@ -46,7 +46,9 @@ Screenshot of the HASS Configurator.
"ssl": false,
"allowed_networks": ["192.168.0.0/16"],
"banned_ips": ["8.8.8.8"],
- "ignore_pattern": ["__pycache__"]
+ "banlimit": 0,
+ "ignore_pattern": ["__pycache__"],
+ "dirsfirst": false,
}
```
@@ -55,7 +57,9 @@ Screenshot of the HASS Configurator.
- **ssl** (*Optional*): Enable or Disable SSL for the editor.
- **allowed_networks** (*Optional*): Limit access to the configurator by adding allowed IP addresses / networks to the list.
- **banned_ips** (*Optional*): List of statically banned IP addresses.
+- **banlimit** (*Optional*): Ban access from IPs after `banlimit` failed login attempts. The default value `0` disables this feature. Restart the add-on to clear the list of banned IP addresses.
- **ignore_pattern** (*Optional*): Files and folders to ignore in the UI.
+- **dirsfirst** (*Optional*): List directories before files in the filebrowser.
### {% linkable_title Embedding into Home-Assistant %}
diff --git a/source/_addons/git_pull.markdown b/source/_addons/git_pull.markdown
index 579ca5ad092..126fab9c1a5 100644
--- a/source/_addons/git_pull.markdown
+++ b/source/_addons/git_pull.markdown
@@ -44,4 +44,8 @@ Load and update configuration files for Home Assistant from a GIT repository.
* **ed25519**
* **rsa**
- The protocol is typically known by the suffix of the private key --e.g., a key file named `id_rsa` will be a private key using "rsa" protocol.
+The protocol is typically known by the suffix of the private key --e.g., a key file named `id_rsa` will be a private key using "rsa" protocol.
+
+
+You should only use this add-on if you do not have an existing configuration or if your existing configuration is already in a git repository. If the script does not find the necessary git files in your configuration folder, it will delete anything that might be there. Please ensure that there is a `.git` folder before using this. You can verify this by listing the items in the configuration folder including hidden files. The command is `ls -a /config`.
+
+ If you are wanting to integrate your Google Home, or mobile phone running Google Assistant, with Home Assistant then you want the [Google Assistant component](https://home-assistant.io/components/google_assistant/).
+
+
[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact over [api.ai] with Home-Assistant. You can also use [Google Actions][GoogleActions] to extend its functionality.
To enable access to the Google Assistant API, do the following:
diff --git a/source/_addons/mariadb.markdown b/source/_addons/mariadb.markdown
index d04dc3c474c..b7882dd2c6f 100644
--- a/source/_addons/mariadb.markdown
+++ b/source/_addons/mariadb.markdown
@@ -34,15 +34,15 @@ Set up a [mariadb](https://mariadb.org/) SQL server. It supports multiple databa
Configuration variables:
-- **databases** (*Require*): Listen of databases.
-- **logins** (*Require*): Listen of logindata they will create or update.
- - **username** (*Require*): Username for login.
- - **host** (*Require*): Host for login, if you need a login with multibe hosts, use '%'.
- - **password** (*Require*): Password for login.
-- **rights** (*Require*): Listen of rights to be handle.
- - **username** (*Require*): Username for grant rights.
+- **databases** (*Require*): List of databases.
+- **logins** (*Require*): List of SQL accounts to create or update.
+ - **username** (*Require*): Username for account.
+ - **host** (*Require*): Host for account. If you need an account on multiple hosts, use '%'.
+ - **password** (*Require*): Password for account.
+- **rights** (*Require*): List of rights to be granted.
+ - **username** (*Require*): Username for granted rights.
- **host** (*Require*): Host is a part of username like above.
- - **database** (*Require*): Database name to grant this user rights to.
+ - **database** (*Require*): Database name on which to grant user rights.
- **grant** (*Require*): SQL grant part for access too.
## {% linkable_title Home Assistant configuration %}
diff --git a/source/_addons/mosquitto.markdown b/source/_addons/mosquitto.markdown
index f944dc7989c..a99487c1f92 100644
--- a/source/_addons/mosquitto.markdown
+++ b/source/_addons/mosquitto.markdown
@@ -23,7 +23,9 @@ Set up [Mosquitto](https://mosquitto.org/) as MQTT broker.
"customize": {
"active": false,
"folder": "mosquitto"
- }
+ },
+ "certfile": "fullchain.pem",
+ "keyfile": "privkey.pem"
}
```
diff --git a/source/_addons/tellstick.markdown b/source/_addons/tellstick.markdown
new file mode 100644
index 00000000000..52d783f4335
--- /dev/null
+++ b/source/_addons/tellstick.markdown
@@ -0,0 +1,80 @@
+---
+layout: page
+title: "TellStick"
+description: "Telldus TellStick service enabler and tools."
+date: 2017-11-30 21:43
+sidebar: true
+comments: false
+sharing: true
+footer: true
+featured: false
+---
+
+Setting up the [Tellstick](http://telldus.com) service and tools contained in the [telldus-core](http://developer.telldus.com/) package and adding configuration to enable Tellstick and Tellstick Duo to work on your Hass.io.
+
+
+To use this add-on, you first install it from the list of Built-in add-ons in Hass.io.
+After installation you are presented with a default and example configuration, to alter this you must follow both the JSON format and also be aligned with the [valid parameters for Tellstick configuration file (tellstick.conf)](https://developer.telldus.com/wiki/TellStick_conf).
+
+After any changes has been made to the configuration you need to restart the add-on for the changes to take effect.
+
+
+Configuration variables:
+
+- **id** (*Required*): This is a number and must be unique for each device.
+- **name** (*Required*): A name for easy identification of the device.
+- **protocol** (*Required*): This is the protocol the device uses. More on the different protocols later down.
+- **model** (*Optional*): The parameter model is only used by some protocols where there exists different types of devices using the same protocol. This can be dimmers versus non-dimmers, codeswitch versus selflearning etc.
+- **house** (*Optional*): Depending on protocol the values here can vary a lot to identify or group per house or type.
+- **unit** (*Optional*): Unit identifier, in most cases a value between 1 to 16 and often used in combination with house.
+- **fade** (*Optional*): Fade is either `true` or `false` and tells a dimmer if is should fade smooth or instant between values (only for IKEA protocol as it seems).
+- **code** (*Optional*): A number series based on ones and zeroes often used for dip-switch based devices.
+
+
+
+
+In order to communicate with the add-on you will also need to add Hass.io specific data in the `configuration.yaml` file.
+For regular Home Assistant you only add `tellstick:` but for Hass.io and this add-on you need to add internal communication details.
+
+
+```yaml
+# Example configuration.yaml entry
+
+tellstick:
+ host: core-tellstick
+ port: [50800, 50801]
+
+```
+
+
+
+To add [lights](https://home-assistant.io/components/light.tellstick/), [sensors](https://home-assistant.io/components/sensor.tellstick/) and [switches](https://home-assistant.io/components/switch.tellstick/) you follow the guidelines for each type individually that is [described for Home Assistant](https://home-assistant.io/components/tellstick/)
+
+
+## {% linkable_title Examples %}
+
+
+Example for adding more devices in the add-on configuration (note the comma separator between devices):
+
+```json
+{
+ "devices": [
+ {
+ "id": 1,
+ "name": "Outdoor light",
+ "protocol": "everflourish",
+ "model": "selflearning-switch",
+ "house": "A",
+ "unit": "1"
+ },
+ {
+ "id": 2,
+ "name": "Hallway dimmer",
+ "protocol": "risingsun",
+ "model": "selflearning-dimmer",
+ "house": "A",
+ "unit": "2"
+ }
+ ]
+}
+```
diff --git a/source/_components/ads.markdown b/source/_components/ads.markdown
new file mode 100644
index 00000000000..cea2088d32e
--- /dev/null
+++ b/source/_components/ads.markdown
@@ -0,0 +1,59 @@
+---
+layout: page
+title: "ADS"
+description: Connect Home Assistant to TwinCAT devices via the ADS interface
+date: 2017-12-05 12:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: beckhoff.png
+ha_category: Hub
+ha_release: "0.60"
+ha_iot_class: "Local Push"
+---
+
+The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between [Beckhoff](https://www.beckhoff.com/) automation devices running [TwinCAT](http://www.beckhoff.hu/english.asp?twincat/default.htm) and other devices implementing this interface.
+
+To enable ADS, add the following lines to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+ads:
+ device: '127.0.0.1.1.1'
+ port: 48898
+```
+
+{% configuration %}
+ device:
+ required: true
+ description: The AMS NetId that identifies the device.
+ type: string
+ port:
+ required: true
+ description: The port that runs the AMS server on the device, typically this would be 801 or 851.
+ type: int
+ ip_address:
+ required: false
+ description: The IP address of the ADS device, if not set the first 4 bytes of the device id will be used.
+ type: string
+{% endconfiguration %}
+
+## {% linkable_title Service %}
+
+The ADS component will register the service `write_by_name` allowing you to write a value to a variable on your ADS device.
+
+```json
+{
+ "adsvar": ".myvariable",
+ "adstype": "int",
+ "value": 123
+}
+```
+
+Service parameters:
+
+- **adsvar**: Name of the variable on the ADS device. To access global variables on *TwinCAT2* use a prepending dot `.myvariable`, for TwinCAT3 use
+`GBL.myvariable`.
+- **adstype**: Specify the type of the variable. Use one of the following: `int`, `byte`, `uint`, `bool`
+- **value**: The value that will be written in the variable.
diff --git a/source/_components/alarm_control_panel.arlo.markdown b/source/_components/alarm_control_panel.arlo.markdown
index bc94d594a54..19294db81b1 100644
--- a/source/_components/alarm_control_panel.arlo.markdown
+++ b/source/_components/alarm_control_panel.arlo.markdown
@@ -14,7 +14,7 @@ ha_iot_class: "Cloud Polling"
---
-The `arlo` control panel platform allows you to control your [Arlo](https://arlo.netgear.com/) base stations.
+The `arlo` alarm control panel allows you to control your [Arlo](https://arlo.netgear.com/) base stations. You can use it to switch modes and trigger alarms from Home Assistant.
To get your [Arlo](https://arlo.netgear.com/) base stations working within Home Assistant, please follow the instructions for the general [Arlo component](/components/arlo).
@@ -26,7 +26,53 @@ alarm_control_panel:
- platform: arlo
```
-Configuration variables:
+{% configuration %}
+home_mode_name:
+ description: "Arlo base station does not have a built-in home mode. You can map one of your custom modes to home assistant's home mode by setting the name of the custom mode in this configuration variable. The name of the custom mode should match exactly as you set it up in the Arlo app."
+ required: false
+ type: string
+away_mode_name:
+ description: "Arlo base station does not have a built-in away mode. You can map one of your custom modes to home assistant's away mode by setting the name of the custom mode in this configuration variable. The name of the custom mode should match eactly as you set it up in the Arlo app."
+ required: false
+ type: string
+ default: "`Armed` mode in Arlo"
+{% endconfiguration %}
+
+## {% linkable_title Examples %}
+
+These examples are based on an Arlo base station named `my_arlo_base_station`. Replace this with the name of your base station's `entity_id`.
+
+Arming the Arlo Base Station when leaving.
+
+```yaml
+- id: arm_arlo_when_leaving
+ alias: Arm Arlo cameras when leaving
+ trigger:
+ platform: state
+ entity_id: group.family
+ from: home
+ to: not_home
+ action:
+ service: alarm_control_panel.alarm_arm_away
+ entity_id: alarm_control_panel.my_arlo_base_station
+```
+
+Setting Arlo to a custom mode (mapped to `home_mode_name` in `configuration.yaml`) when arriving.
+
+```yaml
+- id: disarm_arlo_when_arriving
+ alias: Set Arlo cameras to Home mode when arriving
+ trigger:
+ platform: state
+ entity_id: group.family
+ from: not_home
+ to: home
+ action:
+ service: alarm_control_panel.alarm_arm_home
+ entity_id: alarm_control_panel.my_arlo_base_station
+```
+
+You can also completely disarm the Arlo base station by calling the `alarm_control_panel.alarm_disarm` service, and trigger the alarm by calling the `alarm_control_panel.alarm_trigger` service.
+
+More examples and configuration options can be found on the [Manual Alarm Control page](/components/alarm_control_panel.manual/#examples).
-- **home_mode_name**: (*Optional*): Arlo base station does not have a built-in home mode. You can map one of your custom modes to home assistant's home mode by setting the name of the custom mode in this configuration variable. The name of the custom mode should match exactly as you set it up in the Arlo app.
-- **away_mode_name**: (*Optional*): Like the home mode, the Arlo base station does not have a built-in away mode, however, you can map a custom mode from the Arlo app to Home Assistant with this variable, just make sure the name matches exactly what you have set up in the Arlo app.
diff --git a/source/_components/alarm_control_panel.ialarm.markdown b/source/_components/alarm_control_panel.ialarm.markdown
new file mode 100644
index 00000000000..9c58525fc62
--- /dev/null
+++ b/source/_components/alarm_control_panel.ialarm.markdown
@@ -0,0 +1,48 @@
+---
+layout: page
+title: "Antifurto365 iAlarm Control Panel"
+description: "Instructions how to integrate iAlarms alarms into Home Assistant."
+date: 2017-11-30 20:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: antifurto365-ialarm.png
+ha_category: Alarm
+ha_release: "0.60"
+---
+
+The `ialarm` platform provides connectivity with the [Antifurto365](https://www.antifurtocasa365.it/) iAlarm alarm systems.
+
+This platform supports the following services: `alarm_arm_away`, `alarm_arm_home` and `alarm_disarm`.
+
+To enable this, add the following lines to your `configuration.yaml`:
+
+```yaml
+# Example configuration.yaml entry
+alarm_control_panel:
+ - platform: ialarm
+ host: ALARM_SYSTEM_IP
+ username: YOUR_USERNAME
+ password: YOUR_PASSWORD
+```
+
+{% configuration %}
+ host:
+ description: The IP address of the iAlarm device on your home network.
+ required: true
+ type: string
+ username:
+ description: Username used to sign into the iAlarm web client (should be admin by default).
+ required: true
+ type: string
+ password:
+ description: Password used to sign into the iAlarm web client.
+ required: true
+ type: string
+ name:
+ description: Name of device in Home Assistant.
+ required: false
+ type: string
+{% endconfiguration %}
+
diff --git a/source/_components/alarm_control_panel.manual.markdown b/source/_components/alarm_control_panel.manual.markdown
index 0bdb28cd801..86509ebe620 100644
--- a/source/_components/alarm_control_panel.manual.markdown
+++ b/source/_components/alarm_control_panel.manual.markdown
@@ -25,13 +25,62 @@ Configuration variables:
- **name** (*Optional*): The name of the alarm. Default is "HA Alarm".
- **code** (*Optional*): If defined, specifies a code to enable or disable the alarm in the frontend.
-- **pending_time** (*Optional*): The time in seconds of the pending time before arming the alarm. Default is 60 seconds.
+- **code_template** (*Optional*): If defined, returns a code to enable or disable the alarm in the frontend; an empty string disables checking the code. Inside the template, the variables **from_state** and **to_state** identify the current and desired state. Only one of **code** and **code_template** can be specified.
+- **delay_time** (*Optional*): The time in seconds of the pending time before triggering the alarm. Default is 0 seconds.
+- **pending_time** (*Optional*): The time in seconds of the pending time before effecting a state change. Default is 60 seconds.
- **trigger_time** (*Optional*): The time in seconds of the trigger time in which the alarm is firing. Default is 120 seconds.
- **disarm_after_trigger** (*Optional*): If true, the alarm will automatically disarm after it has been triggered instead of returning to the previous state.
-- **armed_home/armed_away/armed_night/triggered** (*Optional*): State specific settings
- - **pending_time**: State specific pending time override.
+- **armed_custom_bypass/armed_home/armed_away/armed_night/disarmed/triggered** (*Optional*): State specific settings
+ - **delay_time** (*Optional*): State specific setting for **delay_time** (all states except **triggered**)
+ - **pending_time** (*Optional*): State specific setting for **pending_time** (all states except **disarmed**)
+ - **trigger_time** (*Optional*): State specific setting for **trigger_time** (all states except **triggered**)
-In the config example below, armed_home state will have no pending time and triggered state will have pending time of 20 second whereas armed_away state will have a default pending time of 30 seconds.
+## {% linkable_title State machine %}
+
+The state machine of the manual alarm component is complex but powerful. The
+transitions are timed according to three values, **delay_time**, **pending_time**
+and **trigger_time**. The values in turn can come from the default configuration
+variable or from a state-specific override.
+
+When the alarm is armed, its state first goes to **pending** for a number
+of seconds equal to the destination state's **pending_time**, and then
+transitions to one of the "armed" states. Note that **code_template**
+never receives "pending" in the **to_state** variable; instead,
+**to_state** contains the state which the user has requested. However,
+**from_state** *can* contain "pending".
+
+When the alarm is triggered, its state goes to **pending** for a number of
+seconds equal to the previous state's **delay_time** plus the triggered
+state's **pending_time**. Then the alarm transitions to the "triggered"
+states. The code is never checked when triggering the alarm, so the
+**to_state** variable of **code_template** cannot ever contain "triggered"
+either; again, **from_state** *can* contain "triggered".
+
+The alarm remains in the "triggered" state for a number of seconds equal to the
+previous state's **trigger_time**. Then, depending on **disarm_after_trigger**,
+it goes back to either the previous state or **disarmed**. If the previous
+state's **trigger_time** is zero, the transition to "triggered" is entirely
+blocked and the alarm remains in the armed state.
+
+Each of the settings is useful in different scenarios. **pending_time** gives
+you some time to leave the building (for "armed" states) or to disarm the alarm
+(for the "triggered" state).
+
+**delay_time** can also be used to allow some time to disarm the alarm, but with
+more flexibility. For example, you could specify a delay time for the
+"armed away" state, in order to avoid triggering the alarm while the
+garage door opens, but not for the "armed home" state.
+
+**trigger_time** is useful to disable the alarm when disarmed, but it can also
+be used for example to sound the siren for a shorter time during the night.
+
+In the config example below:
+
+- the disarmed state never triggers the alarm;
+
+- the armed_home state will leave no time to leave the building or disarm the alarm;
+
+- while other states state will give 30 seconds to leave the building before triggering the alarm, and 20 seconds to disarm the alarm when coming back.
```yaml
# Example configuration.yaml entry
@@ -40,11 +89,13 @@ alarm_control_panel:
name: Home Alarm
code: 1234
pending_time: 30
+ delay_time: 20
+ trigger_time: 4
+ disarmed:
+ trigger_time: 0
armed_home:
pending_time: 0
- triggered:
- pending_time: 20
- trigger_time: 4
+ delay_time: 0
```
## {% linkable_title Examples %}
diff --git a/source/_components/alarm_control_panel.manual_mqtt.markdown b/source/_components/alarm_control_panel.manual_mqtt.markdown
index bf5ba5bdcc7..4f1f90995ce 100644
--- a/source/_components/alarm_control_panel.manual_mqtt.markdown
+++ b/source/_components/alarm_control_panel.manual_mqtt.markdown
@@ -42,15 +42,21 @@ alarm_control_panel:
Configuration variables:
-All configuration variables from the base manual alarm platform are available:
+The following configuration variables from the base manual alarm platform are available:
- **name** (*Optional*): The name of the alarm. Default is "HA Alarm".
- **code** (*Optional*): If defined, specifies a code to enable or disable the alarm in the frontend. This code is not required for MQTT interactions.
-- **pending_time** (*Optional*): The time in seconds of the pending time before arming the alarm. Default is 60 seconds.
+- **code_template** (*Optional*): If defined, returns a code to enable or disable the alarm in the frontend; an empty string disables checking the code. Inside the template, the variables **from_state** and **to_state** identify the current and desired state. Only one of **code** and **code_template** can be specified.
+- **delay_time** (*Optional*): The time in seconds of the pending time before triggering the alarm. Default is 0 seconds.
+- **pending_time** (*Optional*): The time in seconds of the pending time before effecting a state change. Default is 60 seconds.
- **trigger_time** (*Optional*): The time in seconds of the trigger time in which the alarm is firing. Default is 120 seconds.
- **disarm_after_trigger** (*Optional*): If true, the alarm will automatically disarm after it has been triggered instead of returning to the previous state.
-- **armed_home|armed_away|armed_night|triggered** (*Optional*): State specific settings
- - **pending_time**: State specific pending time override.
+- **armed_home/armed_away/armed_night/disarmed/triggered** (*Optional*): State specific settings
+ - **delay_time** (*Optional*): State specific setting for **delay_time** (all states except **triggered**)
+ - **pending_time** (*Optional*): State specific setting for **pending_time** (all states except **disarmed**)
+ - **trigger_time** (*Optional*): State specific setting for **trigger_time** (all states except **triggered**)
+
+See the documentation for the [manual alarm platform](../alarm_control_panel.manual/) for a description.
Additionally, the following MQTT configuration variables are also available:
@@ -62,7 +68,13 @@ Additionally, the following MQTT configuration variables are also available:
- **payload_arm_away** (*Optional*): The payload to set armed-away mode on this Alarm Panel. Default is "ARM_AWAY".
- **payload_arm_night** (*Optional*): The payload to set armed-night mode on this Alarm Panel. Default is "ARM_NIGHT".
-In the config example below, armed_home state will have no pending time and triggered state will have a pending time of 20 seconds whereas armed_away state will have a default pending time of 30 seconds.
+In the config example below:
+
+- the disarmed state never triggers the alarm;
+
+- the armed_home state will leave no time to leave the building or disarm the alarm;
+
+- while other states state will give 30 seconds to leave the building before triggering the alarm, and 20 seconds to disarm the alarm when coming back.
```yaml
# Example configuration.yaml entry
@@ -71,11 +83,13 @@ alarm_control_panel:
state_topic: home/alarm
command_topic: home/alarm/set
pending_time: 30
+ delay_time: 20
+ trigger_time: 4
+ disarmed:
+ trigger_time: 0
armed_home:
pending_time: 0
- triggered:
- pending_time: 20
- trigger_time: 4
+ delay_time: 0
```
## {% linkable_title Examples %}
diff --git a/source/_components/alarm_control_panel.spc.markdown b/source/_components/alarm_control_panel.spc.markdown
index 673e687fa3b..78e7066f00e 100644
--- a/source/_components/alarm_control_panel.spc.markdown
+++ b/source/_components/alarm_control_panel.spc.markdown
@@ -18,3 +18,19 @@ The `spc` alarm control panel platform allows you to control your [Vanderbilt SP
The requirement is that you have setup your [SPC hub](/components/spc/).
+The `changed_by` attribute enables one to be able to take different actions depending on who armed/disarmed the alarm in [automation](/getting-started/automation/).
+
+```yaml
+automation:
+ - alias: Alarm status changed
+ trigger:
+ - platform: state
+ entity_id: alarm_control_panel.alarm_1
+ action:
+ - service: notify.notify
+ data_template:
+ message: >
+ {% raw %}Alarm changed from {{ trigger.from_state.state }}
+ to {{ trigger.to_state.state }}
+ by {{ trigger.to_state.attributes.changed_by }}{% endraw %}
+```
diff --git a/source/_components/alexa.markdown b/source/_components/alexa.markdown
index 179fb4076c1..bccf44f2e77 100644
--- a/source/_components/alexa.markdown
+++ b/source/_components/alexa.markdown
@@ -135,6 +135,13 @@ Custom slot type for scene support.
The names must exactly match the scene names (minus underscores - amazon discards them anyway and we later map them back in with the template).
+In the new Alexa Skills Kit, you can also create synonyms for slot type values, which can be used in place of the base value in utterances. Synonyms will be replaced with their associated slot value in the intent request sent to the Alexa API endpoint, but only if there are not multiple synonym matches. Otherwise, the value of the synonym that was spoken will be used.
+
+
-If you are using Python 3.6, you might need to replace the 34m with 36m in the _gi.*.so filename in the gi folder.
-
-
Any specific levels for triggers needs to be configured on the device.
diff --git a/source/_components/binary_sensor.ads.markdown b/source/_components/binary_sensor.ads.markdown
new file mode 100644
index 00000000000..753858d9737
--- /dev/null
+++ b/source/_components/binary_sensor.ads.markdown
@@ -0,0 +1,41 @@
+---
+layout: page
+title: "ADS Binary Sensor"
+description: "Instructions on how to set up ADS binary sensors within Home Assistant."
+date: 2017-10-25 10:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: beckhoff.png
+ha_category: Binary Sensor
+ha_release: "0.60"
+ha_iot_class: "Local Push"
+---
+
+The `ads` binary sensor platform can be used to monitor a boolean value on your ADS device.
+
+To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml`
+file:
+
+```yaml
+# Example configuration.yaml entry
+binary_sensor:
+ - platform: ads
+ adsvar: .boolean1
+```
+
+{% configuration %}
+ adsvar:
+ required: true
+ description: The name of the variable which you want to access on the ADS device.
+ type: string
+ name:
+ required: false
+ description: An identifier for the light in the frontend.
+ type: string
+ device_class:
+ required: false
+ description: The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend.
+ type: string
+{% endconfiguration %}
diff --git a/source/_components/binary_sensor.digital_ocean.markdown b/source/_components/binary_sensor.digital_ocean.markdown
index 48e17b354d0..e4bc04ac1cb 100644
--- a/source/_components/binary_sensor.digital_ocean.markdown
+++ b/source/_components/binary_sensor.digital_ocean.markdown
@@ -26,7 +26,10 @@ binary_sensor:
- 'coreos-512mb-nyc3-01'
```
-Configuration variables:
-
-- **droplets** (*Required*): List of droplets you want to control.
+{% configuration %}
+droplets:
+ description: List of droplets you want to monitor.
+ required: true
+ type: list
+{% endconfiguration %}
diff --git a/source/_components/binary_sensor.hive.markdown b/source/_components/binary_sensor.hive.markdown
new file mode 100644
index 00000000000..62022aa898c
--- /dev/null
+++ b/source/_components/binary_sensor.hive.markdown
@@ -0,0 +1,28 @@
+---
+layout: page
+title: "Hive Sensor"
+description: "Instructions on how to integrate Hive Sensors with Home Assistant."
+date: 2017-09-24 21:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: hive.png
+ha_category: Binary Sensor
+ha_release: 0.59
+ha_iot_class: "Cloud Polling"
+---
+
+
+The 'hive' binary sensor component integrates your Hive sensors into Home Assistant.
+
+The Hive sensor component supports the following Hive products:
+- **Hive Window or Door Sensor**
+- **Hive Motion Sensor**
+
+
+
+Full configuration details can be found on the main [Hive component](/components/hive/) page.
+
+
+
diff --git a/source/_components/binary_sensor.iss.markdown b/source/_components/binary_sensor.iss.markdown
index b2b2b3d9015..c2061706882 100644
--- a/source/_components/binary_sensor.iss.markdown
+++ b/source/_components/binary_sensor.iss.markdown
@@ -25,9 +25,13 @@ binary_sensor:
- platform: iss
```
-Configuration variables:
-
-- **show_on_map** (*Optional*): Option to show the position of the ISS on the map. Defaults to `False`.
+{% configuration %}
+show_on_map:
+ description: Option to show the position of the ISS on the map.
+ required: optional
+ default: false
+ type: string
+{% endconfiguration %}
If you set `show_on_map` `True` then the location attributes are named `latitude` and `longitude`. The default name of the location attributes is `lat` and `long` to avoid showing them on the map.
diff --git a/source/_components/binary_sensor.markdown b/source/_components/binary_sensor.markdown
index afc028a2bcb..c25e0fb6b60 100644
--- a/source/_components/binary_sensor.markdown
+++ b/source/_components/binary_sensor.markdown
@@ -14,6 +14,7 @@ Binary sensors gather information about the state of devices which have a "digit
The way these sensors are displayed in the frontend can be modified in the [customize section](/getting-started/customizing-devices/). The following device classes are supported for binary sensors:
- **None**: Generic on/off. This is the default and doesn't need to be set.
+- **battery**: `On` means low, `Off` means normal
- **cold**: `On` means cold
- **connectivity**: `On` means connection present, `Off` means no connection
- **gas**: `On` means gas detected
@@ -26,6 +27,7 @@ The way these sensors are displayed in the frontend can be modified in the [cust
- **opening**: `On` means open, `Off` means closed
- **plug**: `On` means device is plugged in, `Off` means device is unplugged
- **power**: Power, over-current, etc.
+- **presence**: `On` means Home, `Off` means Away
- **safety**: `On` means unsafe, `Off` means safe
- **smoke**: `On` means smoke detected
- **sound**: `On` means sound detected, `Off` means no sound
diff --git a/source/_components/binary_sensor.random.markdown b/source/_components/binary_sensor.random.markdown
index 7376d6254d9..ea8de4b90cc 100644
--- a/source/_components/binary_sensor.random.markdown
+++ b/source/_components/binary_sensor.random.markdown
@@ -25,10 +25,10 @@ binary_sensor:
```
{% configuration %}
- name:
- description: Name to use in the frontend.
- required: false
- type: string
+name:
+ description: Name to use in the frontend.
+ required: false
+ type: string
{% endconfiguration %}
See the [entity component options](/docs/configuration/platform_options/) to control how often the main component polls the random binary sensor. The default is 30 seconds.
diff --git a/source/_components/binary_sensor.template.markdown b/source/_components/binary_sensor.template.markdown
index 009f4131ddd..867930ccdf6 100644
--- a/source/_components/binary_sensor.template.markdown
+++ b/source/_components/binary_sensor.template.markdown
@@ -158,7 +158,7 @@ binary_sensor:
This example creates a washing machine "load running" sensor by monitoring an
energy meter connected to the washer. During the washer's operation, the energy
meter will fluctuate wildly, hitting zero frequently even before the load is
-finished. By utilizing `off_delay`, we can have this sensor only turn off if
+finished. By utilizing `delay_off`, we can have this sensor only turn off if
there has been no washer activity for 5 minutes.
{% raw %}
diff --git a/source/_components/camera.ring.markdown b/source/_components/camera.ring.markdown
index c383381eaf7..eb7fc031628 100644
--- a/source/_components/camera.ring.markdown
+++ b/source/_components/camera.ring.markdown
@@ -1,6 +1,6 @@
---
layout: page
-title: "Ring Binary Camera"
+title: "Ring Camera"
description: "Instructions on how to integrate your Ring.com devices within Home Assistant."
date: 2017-10-20 10:00
sidebar: true
@@ -13,7 +13,7 @@ ha_release: 0.57
ha_iot_class: "Cloud Polling"
---
-To get your [Ring.com](https://ring.com/) cameras working within Home Assistant, please follow the instructions for the general [Ring component](/components/ring).
+To get your [Ring.com](https://ring.com/) cameras working within Home Assistant, please follow the instructions for the general [Ring component](/components/ring). Please note that downloading and playing Ring video will require a Ring Protect plan.
Once you have enabled the [Ring component](/components/ring), add the following to your `configuration.yaml` file:
@@ -32,19 +32,30 @@ Configuration variables:
Currently it supports doorbell and stickup cameras.
+## {% linkable_title Saving the videos captured by your Ring Door Bell %}
-## {% linkable_title Saving locally the videos captured by your Ring Door Bell %}
+You can save locally the latest video captured by your Ring Door Bell using the [downloader](/components/downloader) along with either an [automation](/components/automation) or [python_script](/components/python_script). First, enable the [downloader](/components/downloader) component in your configuration by adding the following to your `configuration.yaml`.
-You can save locally the latest video captured by your Ring Door Bell by enabling the [downloader](/components/downloader) and the [python_scripts](/components/python_script) components.
-
- - Add to the `configuration.yaml` the `downloader` and `python_scripts`. Visit the component page for further details.
-
-```json
-python_script:
+```yaml
downloader:
download_dir: downloads
```
- - Create a file `ring_downloader.py` in the folder `/python_scripts` and give it this content:
+Then you can use the following `action` in your automation (this will save the video file under `/downloads/ring_/`):
+
+```yaml
+action:
+ - service: downloader.download_file
+ data_template:
+ url: "{{ states.camera.front_door.attributes.video_url }}"
+ subdir: "{{states.camera.front_door.attributes.friendly_name}}"
+ filename: "{{states.camera.front_door.attributes.friendly_name}}"
+```
+
+If you want to use `python_script`, enable it your `configuration.yaml` file first:
+```yaml
+python_script:
+```
+You can then use the following `python_script` to save the video file:
```python
# obtain ring doorbell camera object
@@ -57,15 +68,9 @@ subdir_name = 'ring_{}'.format(ring_cam.attributes.get('friendly_name'))
data = {
'url': ring_cam.attributes.get('video_url'),
'subdir': subdir_name,
+ 'filename': ring_cam.attributes.get('friendly_name')
}
# call downloader component to save the video
hass.services.call('downloader', 'download_file', data)
```
-
- - Start Home Assistant
- - Call the server `python_script/ring_downloader`
-
-You should be able to see a video file saved under `//ring_/`.
-
-You can also automate the process by integrating it with the (automation)[/components/automation) component.
diff --git a/source/_components/climate.hive.markdown b/source/_components/climate.hive.markdown
new file mode 100644
index 00000000000..a6c40b14623
--- /dev/null
+++ b/source/_components/climate.hive.markdown
@@ -0,0 +1,29 @@
+---
+layout: page
+title: "Hive Thermostat"
+description: "Instructions on how to integrate Hive thermostat(s) with Home Assistant."
+date: 2017-09-24 21:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: hive.png
+ha_category: Climate
+ha_release: 0.59
+ha_iot_class: "Cloud Polling"
+---
+
+
+The 'hive' climate component integrates your Hive thermostat and hot water into Home Assistant, enabling control of setting the **mode** and setting the **target temperature**.
+
+The Hive climate component supports the following Hive products:
+- **Hive Active Heating**
+- **Hive Multizone**
+- **Hot water control**
+
+
+
+Full configuration details can be found on the main [Hive component](/components/hive/) page.
+
+
+
diff --git a/source/_components/climate.knx.markdown b/source/_components/climate.knx.markdown
index 1c740bba30c..b5b59a01e36 100644
--- a/source/_components/climate.knx.markdown
+++ b/source/_components/climate.knx.markdown
@@ -25,10 +25,11 @@ To use your KNX thermostats in your installation, add the following lines to you
climate:
- platform: knx
name: HASS-Kitchen.Temperature
- temperature_address: '6/2/1'
- setpoint_address: '5/1/2'
- target_temperature_address: '5/1/1'
- operation_mode_address: '5/1/3'
+ temperature_address: '5/1/1'
+ setpoint_shift_address: '5/1/2'
+ setpoint_shift_state_address: '5/1/3'
+ target_temperature_address: '5/1/4'
+ operation_mode_address: '5/1/5'
```
Alternatively, if your device has dedicated binary group addresses for frost/night/comfort mode:
@@ -38,12 +39,13 @@ Alternatively, if your device has dedicated binary group addresses for frost/nig
climate:
- platform: knx
name: HASS-Kitchen.Temperature
- temperature_address: '6/2/1'
- setpoint_address: '5/1/2'
- target_temperature_address: '5/1/1'
- operation_mode_frost_protection_address: '5/1/3'
- operation_mode_night_address: '5/1/4'
- operation_mode_comfort_address: '5/1/5'
+ temperature_address: '5/1/1'
+ setpoint_shift_address: '5/1/2'
+ setpoint_shift_state_address: '5/1/3'
+ target_temperature_address: '5/1/4'
+ operation_mode_frost_protection_address: '5/1/5'
+ operation_mode_night_address: '5/1/6'
+ operation_mode_comfort_address: '5/1/7'
```
Configuration variables:
@@ -51,7 +53,16 @@ Configuration variables:
- **name** (*Optional*): A name for this device used within Home Assistant.
- **temperature_address**: KNX group address for reading current room temperature from KNX bus.
- **target_temperature_address**: KNX group address for reading current target temperature from KNX bus.
-- **setpoint_address**: KNX group address for basis setpoint
+
+The `knx` component sets the desired target temperature by modifying the setpoint_shift. The module provides the following configuration options:
+
+* **setpoint_shift_address**: (*Optional*) KNX address for setpoint_shift
+* **setpoint_shift_state_address**: (*Optional*) Explicit KNX address for reading setpoint_shift.
+* **setpoint_shift_step**: (*Optional*) Defines for step size in Kelvin for each step of setpoint_shift. Default is 0.5 K.
+* **setpoint_shift_min**: (*Optional*) Minimum value of setpoint shift. Default is "-6".
+* **setpoint_shift_max**: (*Optional*) Maximum value of setpoint shift. Default is "6".
+
+The operation modes may be controlled with the following directives:
- **operation_mode_address** (*Optional*): KNX address for operation mode (Frost protection/night/comfort).
- **operation_mode_state_address** (*Optional*): Explicit KNX address for reading operation mode
@@ -63,5 +74,3 @@ Configuration variables:
- **operation_mode_comfort_address** (*Optional*): KNX address for switching on/off comfort mode.
`operation_mode_frost_protection_address` / `operation_mode_night_address` / `operation_mode_comfort_address` are not necessary if `operation_mode_address` was specified.
-
-
diff --git a/source/_components/cloud.markdown b/source/_components/cloud.markdown
new file mode 100644
index 00000000000..19541d18047
--- /dev/null
+++ b/source/_components/cloud.markdown
@@ -0,0 +1,92 @@
+---
+layout: page
+title: "Cloud"
+description: "Enable the Home Assistant Cloud integration."
+date: 2017-11-17 20:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: home-assistant.png
+ha_release: 0.57
+---
+
+
+Home Assistant Cloud is currently in private beta.
+
+
+The Home Assistant Cloud allows you to quickly integrate your local instance with various cloud services. Any processing of services from other cloud services is handled by your local instance.
+
+To get started, create an account and log in via the configuration panel in your Home Assistant instance. There is no need to configure your router or expose your instance to the internet in any other way.
+
+### {% linkable_title Amazon Alexa %}
+
+The Alexa integration allows users to control the entities via the [Home Assistant Smart Home skill for Alexa][alexa skill]. This means that you can say things like "Alexa, turn on the kitchen light" to control your local instance.
+
+```yaml
+# Example configuration.yaml entry configuring Alexa
+cloud:
+ alexa:
+ filter:
+ include_entities:
+ - light.kitchen
+ include_domains:
+ - switch
+ exclude_entities:
+ - light.living_room
+ exclude_domains:
+ - script
+```
+
+{% configuration %}
+alexa:
+ description: Configuration options for the Amazon Alexa integration.
+ required: false
+ type: map
+ keys:
+ filter:
+ description: Filters for entities to include/exclude from Alexa.
+ required: false
+ type: map
+ keys:
+ include_entities:
+ description: Entity IDs to include.
+ required: false
+ type: list
+ include_domains:
+ description: Domains to include.
+ required: false
+ type: list
+ exclude_entities:
+ description: Entity IDs to exclude.
+ required: false
+ type: list
+ exclude_domains:
+ description: Domains to exclude.
+ required: false
+ type: list
+{% endconfiguration %}
+
+### {% linkable_title Possible values for customize %}
+
+| Attribute | Description |
+| --------- | ----------- |
+| `alexa_hidden` | Hide the entity from the Alexa smart home devices.
+| `alexa_name` | Defines name of the entity for a Alexa smart home device. Useful if you have an entity with a friendly name in a local language that you want to access using an English sounding name.
+| `alexa_description` | The description of the device in the Alexa smart home device list.
+| `alexa_display_categories` | Set displayCategories, useful for things like media_player (TV/SPEAKERS) or scene (ACTIVITY_TRIGGER/SCENE_TRIGGER). More info can be found [here](https://developer.amazon.com/docs/device-apis/alexa-discovery.html#display-categories).
+
+### {% linkable_title Available domains %}
+Currently, the following domains are available to be used with Alexa:
+- alert
+- automation
+- cover
+- light
+- fan (supports on/off and set speed)
+- group
+- lock (lock and unlock, but unlock is untested as Amazon has disabled unlock for now)
+- media_player (play, pause, stop, set volume, adjust volume, next track and previous track)
+- scene
+- switch
+
+[alexa skill]: https://alexa.amazon.com/spa/index.html#skills/dp/B0772J1QKB/?ref=skill_dsk_skb_sr_2
diff --git a/source/_components/cover.tahoma.markdown b/source/_components/cover.tahoma.markdown
new file mode 100644
index 00000000000..9dfebff30f9
--- /dev/null
+++ b/source/_components/cover.tahoma.markdown
@@ -0,0 +1,21 @@
+---
+layout: page
+title: "Tahoma Cover"
+description: "Instructions how to integrate Tahoma covers into Home Assistant."
+date: 2017-07-18 12:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: tahoma.png
+ha_category: Cover
+ha_release: 0.59
+---
+
+To use your tahoma covers in your installation, add the following to your `configuration.yaml` file:
+
+``yaml
+# Example configuration.yml entry
+cover:
+ platform: tahoma
+```
\ No newline at end of file
diff --git a/source/_components/device_tracker.hitron_coda.markdown b/source/_components/device_tracker.hitron_coda.markdown
new file mode 100644
index 00000000000..fecdc2fd5ed
--- /dev/null
+++ b/source/_components/device_tracker.hitron_coda.markdown
@@ -0,0 +1,44 @@
+---
+layout: page
+title: "Hitron CODA Routers"
+description: "Instructions on how to integrate Hitron CODA Routers into Home Assistant."
+date: 2017-10-03 15:40
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: hitron.png
+ha_category: Presence Detection
+ha_release: 0.58
+---
+
+This component offers presence detection by examining devices connected to a [Rogers Hitron CODA](https://www.rogers.com/customer/support/article/wi-fi-password-hitron-coda4582-cgn3amr-cgnm3552-cgn3acr-cgn3)
+Router.
+
+To use a Hitron router in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+device_tracker:
+ - platform: hitron_coda
+ host: !secret router_ip
+ username: !secret router_username
+ password: !secret router_password
+```
+
+{% configuration %}
+host:
+ description: The IP address of your router, e.g., `192.168.0.1`.
+ required: true
+ type: string
+username:
+ description: The username to login into the router (user should have read access to the web interface of the router). Usually "cusadmin".
+ required: true
+ type: string
+password:
+ description: The password for the specified username. Usually your WiFi password.
+ required: true
+ type: string
+{% endconfiguration %}
+
+See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.
diff --git a/source/_components/device_tracker.huawei_router.markdown b/source/_components/device_tracker.huawei_router.markdown
index 42c7b22a4e4..6fb470ea4fb 100644
--- a/source/_components/device_tracker.huawei_router.markdown
+++ b/source/_components/device_tracker.huawei_router.markdown
@@ -13,7 +13,7 @@ ha_release: 0.51
---
This component offers presence detection by looking at connected devices to a [Huawei router](http://m.huawei.com/enmobile/enterprise/products/network/access/pon-one/hw-371813.htm).
-Currently, this was only tested with the Huawei HG8247H (used by Vodafone Portugal).
+Currently, this was only tested with the Huawei HG8247H and HG8247Q Smart Router (used by Vodafone Portugal).
To use a Huawei router in your installation, add the following to your `configuration.yaml` file:
diff --git a/source/_components/device_tracker.markdown b/source/_components/device_tracker.markdown
index 105dec1e7f3..ece347286a7 100644
--- a/source/_components/device_tracker.markdown
+++ b/source/_components/device_tracker.markdown
@@ -26,15 +26,19 @@ device_tracker:
host: 192.168.1.1
username: admin
password: YOUR_PASSWORD
+ new_device_defaults:
+ track_new_devices: True
+ hide_if_away: False
+
```
The following optional parameters can be used with any platform. However device tracker will only look for global settings under the configuration of the first configured platform:
| Parameter | Default | Description |
-|---------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `track_new_devices` | True | If new discovered devices are tracked by default |
-| `interval_seconds` | 12 | Seconds between each scan for new devices |
-| `consider_home` | 180 | Seconds to wait till marking someone as not home after not being seen. This parameter is most useful for households with Apple iOS devices that go into sleep mode while still at home to conserve battery life. iPhones will occasionally drop off the network and then re-appear. `consider_home` helps prevent false alarms in presence detection when using IP scanners such as Nmap. `consider_home` accepts various time representations, (E.g. the following all represents 3 minutes: `180`, `0:03`, `0:03:00`) |
+|----------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `interval_seconds` | 12 | Seconds between each scan for new devices |
+| `consider_home` | 180 | Seconds to wait till marking someone as not home after not being seen. This parameter is most useful for households with Apple iOS devices that go into sleep mode while still at home to conserve battery life. iPhones will occasionally drop off the network and then re-appear. `consider_home` helps prevent false alarms in presence detection when using IP scanners such as Nmap. `consider_home` accepts various time representations, (E.g. the following all represents 3 minutes: `180`, `0:03`, `0:03:00`) |
+| `new_device_defaults`| | Default values for new discovered devices. Available options `track_new_devices` (default: `True`), `hide_if_away` (default: `False`) |
The extended example from above would look like the following sample:
diff --git a/source/_components/device_tracker.nmap_tracker.markdown b/source/_components/device_tracker.nmap_tracker.markdown
index 74b40f25eed..0ce79dfc3a9 100644
--- a/source/_components/device_tracker.nmap_tracker.markdown
+++ b/source/_components/device_tracker.nmap_tracker.markdown
@@ -15,7 +15,7 @@ featured: false
As an alternative to the router-based device tracking, it is possible to directly scan the network for devices by using Nmap. The IP addresses to scan can be specified in any format that Nmap understands, including the network-prefix notation (`192.168.1.1/24`) and the range notation (`192.168.1.1-255`).
-If you're on Debian or Ubuntu, you might have to install the packages for `arp` and `nmap`. Do so by running `$ sudo apt-get install net-tools nmap`. On a Fedora host run `$ sudo dnf -y install nmap`.
+You might have to install the packages for `arp` and `nmap`. On Debian based hosts (for example Hassbian and Raspbian) do so by running `$ sudo apt-get install net-tools nmap`. On a Fedora host run `$ sudo dnf -y install nmap`.
If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled.
@@ -29,7 +29,7 @@ To use this device tracker in your installation, add the following to your `conf
# Example configuration.yaml entry
device_tracker:
- platform: nmap_tracker
- hosts: 192.168.1.1/24
+ hosts: 192.168.1.0/24
```
Configuration variables:
@@ -47,7 +47,7 @@ A full example for the `nmap` tracker could look like the following sample:
# One whole subnet, and skipping two specific IPs.
device_tracker:
- platform: nmap_tracker
- hosts: 192.168.1.1/24
+ hosts: 192.168.1.0/24
home_interval: 10
exclude:
- 192.168.1.12
@@ -60,7 +60,7 @@ device_tracker:
device_tracker:
- platform: nmap_tracker
hosts:
- - 192.168.1.1/24
+ - 192.168.1.0/24
- 10.0.0.2
- 10.0.0.15
```
diff --git a/source/_components/device_tracker.snmp.markdown b/source/_components/device_tracker.snmp.markdown
index b6a140f3920..60c14a1f873 100644
--- a/source/_components/device_tracker.snmp.markdown
+++ b/source/_components/device_tracker.snmp.markdown
@@ -19,7 +19,7 @@ A lot WiFi access points and WiFi routers support the Simple Network Management
This device tracker needs SNMP to be enabled on the router. It could be that you need to install the SNMP support manually.
-OID examples:
+The following OID examples pull the current MAC Address table from a router. This reflects all recent devices seen on the network. However, since devices are not removed until they time out, this is less effective for [device tracker component page](/components/device_tracker/) than desirable. It is recommended to use [Ping](/components/device_tracker.ping/) or [NMAP](/components/device_tracker.nmap_tracker/) instead.
| Brand | Device/Firmware | OID |
|---|---|---|---|
@@ -33,6 +33,7 @@ OID examples:
| TP-Link | Archer VR600 | `1.3.6.1.2.1.3.1.1.2` |
| EdgeRouter | Lite v1.9.0 | `1.3.6.1.2.1.4.22.1.2` |
| Ruckus | ZoneDirector 9.13.3 | `1.3.6.1.4.1.25053.1.2.2.1.1.3.1.1.1.6` |
+| DD-WRT | unknown RouterOS version/model | `1.3.6.1.2.1.4.22.1.2` |
To use the SNMP version 1 platform in your installation, add the following to your `configuration.yaml` file:
diff --git a/source/_components/device_tracker.tile.markdown b/source/_components/device_tracker.tile.markdown
new file mode 100644
index 00000000000..7dc534339f4
--- /dev/null
+++ b/source/_components/device_tracker.tile.markdown
@@ -0,0 +1,46 @@
+---
+layout: page
+title: "Tile"
+description: "Instructions how to use Tile to track devices in Home Assistant."
+date: 2017-11-08 20:40:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: tile.png
+ha_release: 0.58
+ha_category: Presence Detection
+ha_iot_class: "Cloud Polling"
+---
+
+The `tile` platform allows Home Assistant to utilize [Tile® Bluetooth trackers](https://www.thetileapp.com).
+The official Tile mobile app handles the actual tracking of Tile devices using
+the mobile device's Bluetooth and GPS.
+
+To integrate Tile into Home Assistant, add the following section to your
+`configuration.yaml` file:
+
+```yaml
+device_tracker:
+ - platform: tile
+ username: email@address.com
+ password: MY_PASSWORD_123
+ monitored_variables:
+ - TILE
+ - PHONE
+```
+
+{% configuration %}
+ username:
+ description: the email address for the Tile account
+ required: true
+ type: string
+ password:
+ description: the password for the Tile account
+ required: true
+ type: string
+ monitored_variables:
+ description: the Tile types to monitor; valid values are `TILE` and `PHONE` (default is for all types to be included)
+ required: false
+ type: list
+{% endconfiguration %}
diff --git a/source/_components/device_tracker.unifi.markdown b/source/_components/device_tracker.unifi.markdown
index af017915885..004d92679d7 100644
--- a/source/_components/device_tracker.unifi.markdown
+++ b/source/_components/device_tracker.unifi.markdown
@@ -36,3 +36,9 @@ Configuration variables:
- **detection_time** (*Optional*): The Unifi component will not return a device that has not been seen by the controller in the last 180 seconds. You can adjust this threshold with this variable and accepts seconds or `00:00:00` time formats.
See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.
+
+
+If you decide to install the Unifi Controller on the same system as your Home Assistant, be aware there may be overlap in ports if you have the MQTT component as well.
+
+[Related Issue](https://github.com/home-assistant/home-assistant/issues/10507)
+
diff --git a/source/_components/device_tracker.unifi_direct.markdown b/source/_components/device_tracker.unifi_direct.markdown
new file mode 100644
index 00000000000..d00d2259646
--- /dev/null
+++ b/source/_components/device_tracker.unifi_direct.markdown
@@ -0,0 +1,45 @@
+---
+layout: page
+title: "Ubiquiti Unifi direct AP"
+description: "Instructions how to use a Unifi WAP as a device tracker."
+date: 2017-11-17 14:59
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: ubiquiti.png
+ha_category: Presence Detection
+ha_release: 0.59
+---
+
+
+This platform allows you to detect presence by looking at devices connected to a [UniFi AP](https://www.ubnt.com/products/#unifi). This device tracker differs form [Ubiquiti Unifi WAP](https://home-assistant.io/components/device_tracker.unifi/) because it doesn't require the Unifi controller software.
+
+To use this device tracker in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+device_tracker:
+ - platform: unifi_direct
+ host: YOUR_AP_IP_ADDRESS
+ username: YOUR_USERNAME
+ password: YOUR_PASSWORD
+```
+
+{% configuration %}
+host:
+ description: The hostname or IP address of your Unifi AP.
+ required: true
+ type: string
+username:
+ description: The username used to connect to your Unifi AP.
+ required: true
+ type: string
+password:
+ description: The password used to connect to your Unifi AP.
+ required: true
+ type: string
+{% endconfiguration %}
+
+See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.
+
diff --git a/source/_components/digital_ocean.markdown b/source/_components/digital_ocean.markdown
index 6c5c190ba76..c2e26b9aa3b 100644
--- a/source/_components/digital_ocean.markdown
+++ b/source/_components/digital_ocean.markdown
@@ -26,6 +26,10 @@ digital_ocean:
access_token: YOUR_API_KEY
```
-Configuration variables:
+{% configuration %}
+access_token:
+ description: Your Digital Ocean API access token.
+ required: true
+ type: string
+{% endconfiguration %}
-- **access_token** (*Required*): Your Digital Ocean API access token.
diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown
index 62f9c0c1b34..18ac58261ce 100644
--- a/source/_components/discovery.markdown
+++ b/source/_components/discovery.markdown
@@ -35,6 +35,7 @@ Home Assistant can discover and automatically configure [zeroconf](https://en.wi
* [SABnzbd downloader](https://home-assistant.io/components/sensor.sabnzbd/)
* [Samsung TVs](https://home-assistant.io/components/media_player.samsungtv/)
* [Sonos speakers](https://home-assistant.io/components/media_player.sonos/)
+ * [Telldus Live](https://home-assistant.io/components/tellduslive/)
* [Yamaha media player](https://home-assistant.io/components/media_player.yamaha/)
* [Yeelight Sunflower bulb](https://home-assistant.io/components/light.yeelightsunflower/)
@@ -77,6 +78,7 @@ Valid values for ignore are:
* `sabnzbd`: SABnzbd downloader
* `samsung_tv`: Samsung TVs
* `sonos`: Sonos speakers
+ * `tellduslive`: Telldus Live
* `yamaha`: Yamaha media player
* `yeelight`: Yeelight Sunflower bulb
@@ -94,7 +96,9 @@ If you are on Windows and you're using Python 3.5, download the [Netifaces](http
-If you see `Not initializing discovery because could not install dependency netdisco==0.6.1` in the logs, you will need to install the `python3-dev` or `python3-devel` package on your system manually (eg. `sudo apt-get install python3-dev` or `sudo dnf -y install python3-devel`). On the next restart of home-assistant, discovery should work. If you still get an error, check if you have a compiler (`gcc`) available on your system.
+If you see `Not initializing discovery because could not install dependency netdisco==0.6.1` in the logs, you will need to install the `python3-dev` or `python3-devel` package on your system manually (eg. `sudo apt-get install python3-dev` or `sudo dnf -y install python3-devel`). On the next restart of Home Assistant, the discovery should work. If you still get an error, check if you have a compiler (`gcc`) available on your system.
+
+For DSM/Synology, install via debian-chroot [see this forum post](https://community.home-assistant.io/t/error-starting-home-assistant-on-synology-for-first-time/917/15).
If you are developing a new platform, please read [how to make your platform discoverable](/developers/component_discovery/) for further details.
diff --git a/source/_components/dominos.markdown b/source/_components/dominos.markdown
new file mode 100644
index 00000000000..a7b70d7fafb
--- /dev/null
+++ b/source/_components/dominos.markdown
@@ -0,0 +1,80 @@
+---
+layout: page
+title: "Dominos Pizza"
+description: "Instructions on how to setup Dominos Pizza ordering within Home Assistant."
+date: 2017-11-05 17:30
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: dominos.png
+ha_category: Other
+ha_version: 0.59
+---
+
+The `Dominos` component allows you to order Dominos Pizza from within your Home Assistant scripts and automations.
+
+At present, this component only supports ordering within Canada and the US.
+
+To enable the component, you need to set up your customer information and define some orders.
+
+Orders are a group of product codes. You can get these product codes by inspecting an order request from the Dominos web app, or you can [add this custom panel by following this readme](https://github.com/wardcraigj/hass-dominos-panel) to see the available product codes in a separate panel in your install.
+
+Currently, there is no support in this component for toppings, coupons or order tracking.
+
+```yaml
+dominos:
+ country_code: ca
+ first_name: Justin
+ last_name: Trudeau
+ email: justin.trudeau@parl.gc.ca
+ phone: 6139950253
+ address: 24 Sussex Dr, Ottawa, ON, K1M1M4
+ orders:
+ - name: Medium Pan
+ codes:
+ - P12IPAZA
+```
+
+Now you can use the Dominos service to order pizza within your automations:
+
+```yaml
+- service: dominos.order
+ data:
+ order_entity_id: dominos.medium_pan
+```
+
+{% configuration %}
+ country_code:
+ required: true
+ description: \'ca\' or \'us\', depending on your location
+ type: string
+ first_name:
+ required: true
+ description: Your first name
+ type: string
+ last_name:
+ required: true
+ description: Your last name
+ type: string
+ email:
+ required: true
+ description: Your email address
+ type: string
+ phone:
+ required: true
+ description: Your phone number
+ type: string
+ address:
+ required: true
+ description: Your delivery address
+ type: string
+ show_menu:
+ required: false
+ description: Dumps product codes from your nearest store into your log (for use in with the custom panel)
+ type: integer
+ orders:
+ required: false
+ description: Sets of product codes to use for ordering
+ type: list
+{% endconfiguration %}
diff --git a/source/_components/ecobee.markdown b/source/_components/ecobee.markdown
index a3e6da2ceef..1d18fb430d1 100644
--- a/source/_components/ecobee.markdown
+++ b/source/_components/ecobee.markdown
@@ -61,3 +61,5 @@ Configuration variables:
+
+If for whatever reason you delete and re-create your ecobee app at ecobee.com such that your developer API key changes, you will need to delete your `/conf/ecobee.conf file`. You will also need to update the `api_key:` in the `configuration.yaml` or `secrets.yaml` file.
diff --git a/source/_components/emulated_hue.markdown b/source/_components/emulated_hue.markdown
index 0244bc546aa..1079a0f96b6 100644
--- a/source/_components/emulated_hue.markdown
+++ b/source/_components/emulated_hue.markdown
@@ -22,7 +22,7 @@ entities. The driving use case behind this functionality is to allow Home Assist
The virtual bridge has the ability to turn entities on or off, or change the brightness of dimmable lights. The volume level of media players can be controlled as brightness.
-A physical Hue Bridge is required for the lights to function - this virtual bridge will not replace a physical bridge.
+A physical Hue Bridge is required for Philips Hue lights to function - this virtual bridge will not replace a physical bridge. Instead, it allows Home Assistant to represent non-Philips Hue devices to Amazon Echo as Philips Hue devices, which Amazon Echo can control with built-in support.
diff --git a/source/_components/fan.xiaomi_miio.markdown b/source/_components/fan.xiaomi_miio.markdown
index 7acf1291e45..218a7c0da40 100644
--- a/source/_components/fan.xiaomi_miio.markdown
+++ b/source/_components/fan.xiaomi_miio.markdown
@@ -13,7 +13,7 @@ ha_version: 0.57
ha_iot_class: "Local Polling"
---
-The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier 2. The Air Purifier Pro isn't supported right now.
+The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier 2, Air Purifier 2S andd Air Purifier Pro.
Currently, the supported features are
diff --git a/source/_components/frontend.markdown b/source/_components/frontend.markdown
index dc48dd837fb..aa7f0cb9263 100644
--- a/source/_components/frontend.markdown
+++ b/source/_components/frontend.markdown
@@ -19,6 +19,11 @@ frontend:
```
{% configuration %}
+ javascript_version:
+ description: "Version of the JavaScript to serve to clients. Options: `es5` - transpiled so old browsers understand it. `latest` - not transpiled, so will work on recent browsers only. `auto` - select a version according to the browser user-agent. The value in the config can be overiden by putting `es5` or `latest` in the URL. For example `http://localhost:8123/states?es5` "
+ required: false
+ type: string
+ default: es5
themes:
description: Allow to define different themes. See below for further details.
required: false
@@ -34,7 +39,11 @@ frontend:
required: true
type: [list, string]
extra_html_url:
- description: "List of addtional [resources](/developers/frontend_creating_custom_ui/) to load."
+ description: "List of addtional [resources](/developers/frontend_creating_custom_ui/) to load in `latest` javascript mode."
+ required: false
+ type: list
+ extra_html_url_es5:
+ description: "List of addtional [resources](/developers/frontend_creating_custom_ui/) to load in `es5` javascript mode."
required: false
type: list
development_repo:
@@ -101,8 +110,12 @@ automation:
### {% linkable_title Manual Theme Selection %}
-When themes are enabled in the `configuration.yaml` file, a new option will show up in the Configuration panel under `configuration.yaml` called "Set a theme." You can then choose any installed theme from the dropdown list and it will be applied immediately.
+When themes are enabled in the `configuration.yaml` file, a new option will show up in the Configuration panel under **General** called "Set a theme." You can then choose any installed theme from the dropdown list and it will be applied immediately.
+
+
+ Set a theme
+
## {% linkable_title Loading extra HTML %}
@@ -118,4 +131,13 @@ frontend:
- /file2.html
```
-Those will be loaded via `` on any page (states and panels)
+Those will be loaded via `` on any page (states and panels).
+
+### {% linkable_title Manual Language Selection %}
+
+The browser language is automatically detected. To use a different language, go to **General** in the Configuration panel and select a one from "Choose a Language". It will be applied immediately.
+
+
+
+ Choose a Language
+
diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown
index 23c1ce73397..3c3edcc5a13 100644
--- a/source/_components/google_assistant.markdown
+++ b/source/_components/google_assistant.markdown
@@ -28,6 +28,8 @@ google_assistant:
project_id: someproject-2d0b8
client_id: [long URL safe random string]
access_token: [a different long URL safe random string]
+ agent_user_id: [a string to identify user]
+ api_key: [an API Key generated for the Google Actions project]
exposed_domains:
- switch
- light
@@ -43,6 +45,8 @@ google_assistant:
* *project_id* (Required): Project ID from the Google Developer console (looks like `words-2ab12`)
* *client_id* (Required): A long random URL safe string (no spaces or special characters) that will be used for Implicit OAuth.
* *access_token* (Required): Another different long random URL safe string.
+* *agent_user_id* (Optional): A string to identify the user, e.g., email address. If not provided, the component will generate one.
+* *api_key* (Optional): An API Key generated for the project from [Google Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) which allows you to update devices without unlinking and relinking an account (see setup below). If not provided then the request_sync service is not exposed.
* *exposed_domains* (Optional): An array of Home Assistant domains to expose to Google Assistant. Options include:
- `switch`
- `light`
@@ -111,7 +115,7 @@ homeassistant:
5. You'll need to fill out most of the information on that page, but none of it really matters since you won't be addressing the App directly, only through the Smart Home functionality built into Google Assistant.
6. The final item on that page `Account linking` is required for your app to interact with Home Assistant.
1. Grant type: `Implicit`
- 2. Client ID: Should be the same as `client_id` from your hass config above
+ 2. Client ID: The `client_id` from your Home Assistant configuration above
3. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL]/api/google_assistant/auth`
4. Configure your client. Add scopes for `email` and `name`
5. Testing instructions: doesn't matter since you won't submit this app
@@ -123,3 +127,10 @@ homeassistant:
2. Under the gear icon, click `Permissions`
3. Click `Add`, type the new user's e-mail address and choose `Project -> Editor` role
4. Have the new user go to [developer console](https://console.actions.google.com/) and repeat steps starting from point 7.
+11. If you want to use the `google_assistant.request_sync` service in Home Assistant, then enable Homegraph API for your project:
+ 1. Go to the [cloud console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview)
+ 2. Select your project and click Enable Homegraph API
+ 3. Go to Credentials and select API Key from Create Credentials
+ 4. Note down the generated API Key and use this in the configuration
+
+*Note:* The request_sync service requires that the initial sync from Google includes the agent_user_id. If not, the service will log an error that reads something like "Request contains an invalid argument". If this happens, then [unlink the account](https://support.google.com/googlehome/answer/7506443?hl=en-GB) from Home Control and relink.
diff --git a/source/_components/group.markdown b/source/_components/group.markdown
index 5dd01ab44c5..74f07dc49bb 100644
--- a/source/_components/group.markdown
+++ b/source/_components/group.markdown
@@ -79,9 +79,7 @@ Notice in the example below that in order to refer to the group "Living Room", y
entities:
- light.light_family_1
- binary_sensor.motion_living
-
Bedroom: light.light_bedroom, switch.sleeping
-
Rooms:
view: yes
name: Rooms
@@ -93,6 +91,7 @@ Notice in the example below that in order to refer to the group "Living Room", y
## {% linkable_title Default groups %}
Some components automatically create special groups containing component entities. These groups are named like `group.all_...`, for example:
+
- `group.all_switches`
- `group.all_lights`
- `group.all_devices`
@@ -105,13 +104,11 @@ Default groups appear in the HOME tab, if not overridden by user views and group
```yaml
# Example configuration.yaml to include default groups in custom view
-
customize:
group.all_automations:
hidden: false
group.all_scripts:
hidden: false
-
group:
automation_view:
name: Automation
@@ -124,3 +121,22 @@ group:
## {% linkable_title Group behaviour %}
When any member of a group is `on` then the group will also be `on`. Similarly with a device tracker, when any member of the group is `home` then the group is `home`.
+
+## {% linkable_title Customize group order %}
+You can also order your groups using [customize](/docs/configuration/customizing-devices/) with `order: ` if they don't show up in the order you want them in.
+
+```yaml
+# Example configuration.yaml to order groups with order:
+customize:
+ group.all_automations:
+ order: 1
+ group.all_scripts:
+ order: 2
+group:
+ automation_view:
+ name: Automation
+ view: yes
+ entities:
+ - group.all_automations
+ - group.all_scripts
+```
diff --git a/source/_components/hive.markdown b/source/_components/hive.markdown
new file mode 100644
index 00000000000..7c3d47a3c9f
--- /dev/null
+++ b/source/_components/hive.markdown
@@ -0,0 +1,54 @@
+---
+layout: page
+title: "Hive"
+description: "Instructions on how to integrate Hive devices with Home Assistant."
+date: 2017-09-24 21:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: hive.png
+ha_category: Hub
+ha_release: 0.59
+ha_iot_class: "Cloud Polling"
+---
+
+
+This Hive component is the main component to set up and integrate all supported Hive devices. Once configured with the minimum required details it will detect and add all your Hive devices into Home Assistant, including support for multizone heating.
+
+This component uses the unofficial API used in the official Hive website [https://my.hivehome.com](https://my.hivehome.com), and you will need to use the same Username and Password you use on the Hive website to configure this Hive component in Home Assistant.
+
+To add your Hive devices into your Home Assistant installation, using the default scan_interval, add the following to your 'configuration.yaml' file:
+
+```yaml
+# Example configuration.yaml entry
+hive:
+ username: YOUR_USERNAME
+ password: YOUR_PASSWORD
+```
+
+{% configuration %}
+username:
+ description: Your username from [https://my.hivehome.com](https://my.hivehome.com).
+ required: true
+ type: string
+password:
+ description: Your password from [https://my.hivehome.com](https://my.hivehome.com).
+ required: true
+ type: string
+scan_interval:
+ description: The time in minutes between Hive API calls
+ required: false
+ type: int
+ default: 2
+{% endconfiguration %}
+
+
+The Hive Home Assistant platform currently supports the following Hive devices:
+
+- Hive Active Heating (including hot water and Hive Multizone)
+- Hive Active Light Dimmable
+- Hive Active Light Cool to Warm White
+- Hive Active Plug
+- Hive Window or Door Sensor
+- Hive Motion Sensor
diff --git a/source/_components/ifttt.markdown b/source/_components/ifttt.markdown
index fc330b5f799..764138d2725 100644
--- a/source/_components/ifttt.markdown
+++ b/source/_components/ifttt.markdown
@@ -64,6 +64,7 @@ Choose "Webhooks" as service.
You need to setup a unique trigger for each event you sent to IFTTT.
+{% raw %}
```yaml
# Example configuration.yaml Automation entry
automation:
@@ -75,9 +76,11 @@ automation:
service: ifttt.trigger
data: {"event":"TestHA_Trigger", "value1":"Hello World!"}
```
+{% endraw %}
IFTTT can also be used in scripts and with `data_template`. Here is the above automation broken into an automation and script using variables and data_templates.
+{% raw %}
```yaml
# Example configuration.yaml Automation entry
automation:
@@ -89,10 +92,12 @@ automation:
service: script.ifttt_notify
data_template:
value1: 'HA Status:'
- value2: {% raw %}"{{ trigger.event.data.entity_id.split('_')[1] }} is "{% endraw %}
- value3: {% raw %}"{{ trigger.event.data.to_state.state }}"{% endraw %}
+ value2: "{{ trigger.event.data.entity_id.split('_')[1] }} is "
+ value3: "{{ trigger.event.data.to_state.state }}"
```
+{% endraw %}
+{% raw %}
```yaml
#Example Script to send TestHA_Trigger to IFTTT but with some other data (homeassistant UP).
ifttt_notify:
@@ -100,6 +105,7 @@ ifttt_notify:
- service: ifttt.trigger
data_template: {"event":"TestHA_Trigger", "value1":"{{ value1 }}", "value2":"{{ value2 }}", "value3":"{{ value3 }}"}
```
+{% endraw %}
### {% linkable_title Sending events from IFTTT to Home Assistant %}
diff --git a/source/_components/influxdb.markdown b/source/_components/influxdb.markdown
index 60bd6cac432..f2291bda29d 100644
--- a/source/_components/influxdb.markdown
+++ b/source/_components/influxdb.markdown
@@ -34,6 +34,8 @@ Configuration variables:
- **database** (*Optional*): Name of the database to use. Defaults to `home_assistant`. The database must already exist.
- **ssl** (*Optional*): Use https instead of http to connect. Defaults to false.
- **verify_ssl** (*Optional*): Verify SSL certificate for https request. Defaults to false.
+- **max_retries** (*Optional*): Allow the component to retry if there was a network error when transmitting data
+- **retry_queue_limit** (*Optional*): If retry enabled, specify how much calls are allowed to be queued for retry.
- **default_measurement** (*Optional*): Measurement name to use when an entity doesn't have a unit. Defaults to entity id.
- **override_measurement** (*Optional*): Measurement name to use instead of unit or default measurement. This will store all data points in a single measurement.
- **component_config**, **component_config_domain**, **component_config_glob** (*Optional*): These attributes contains component-specific override values. See [Customizing devices and services](https://home-assistant.io/getting-started/customizing-devices/) for format.
@@ -175,6 +177,7 @@ influxdb:
password: MY_PASSWORD
ssl: true
verify_ssl: true
+ max_retries: 3
default_measurement: state
exclude:
entities:
diff --git a/source/_components/input_datetime.markdown b/source/_components/input_datetime.markdown
index f9351f09848..588154ca277 100644
--- a/source/_components/input_datetime.markdown
+++ b/source/_components/input_datetime.markdown
@@ -39,7 +39,7 @@ Configuration variables:
- **name** (*Optional*): Friendly name of the datetime input.
- **has_time** (*Optional*): Set to `true` if this input should have time. Defaults to `false`.
- **has_date** (*Optional*): Set to `true` if this input should have a date. Defaults to `false`.
- - **initial** (*Optional*): Set the initial value of this input. Defaults to '1970-01-01 00:00'.
+ - **initial** (*Optional*): Set the initial value of this input. Defaults to '1970-01-01 00:00'. If has_time is `false` this must be just a date (e.g.: '1970-01-01'). If has_date is `false` this must be just a time (e.g.: '15:16').
A datetime input entity's state exports several attributes that can be useful in automations and templates:
diff --git a/source/_components/input_number.markdown b/source/_components/input_number.markdown
index 9c041e1b7f3..ccec8bc39bd 100644
--- a/source/_components/input_number.markdown
+++ b/source/_components/input_number.markdown
@@ -55,11 +55,9 @@ Configuration variables:
Here's an example of `input_number` being used as a trigger in an automation.
-```yaml
{% raw %}
+```yaml
# Example configuration.yaml entry using 'input_number' as a trigger in an automation
-
-# Define input_number
input_number:
bedroom_brightness:
name: Brightness
@@ -67,8 +65,6 @@ input_number:
min: 0
max: 254
step: 1
-
-# Automation.
automation:
- alias: Bedroom Light - Adjust Brightness
trigger:
@@ -76,20 +72,19 @@ automation:
entity_id: input_number.bedroom_brightness
action:
- service: light.turn_on
-# Note the use of 'data_template:' below rather than the normal 'data:' if you weren't using an input variable
+ # Note the use of 'data_template:' below rather than the normal 'data:' if you weren't using an input variable
data_template:
entity_id: light.bedroom
brightness: '{{ trigger.to_state.state | int }}'
-{% endraw %}
+
```
+{% endraw %}
Another code example using `input_number`, this time being used in an action in an automation.
-```yaml
{% raw %}
+```yaml
# Example configuration.yaml entry using 'input_number' in an action in an automation
-
-# Define 'input_select'
input_select:
scene_bedroom:
name: Scene
@@ -101,8 +96,6 @@ input_select:
- Relax
- 'OFF'
initial: 'Select'
-
-# Define input_number
input_number:
bedroom_brightness:
name: Brightness
@@ -110,8 +103,6 @@ input_number:
min: 0
max: 254
step: 1
-
-# Automation.
automation:
- alias: Bedroom Light - Custom
trigger:
@@ -120,21 +111,18 @@ automation:
to: CUSTOM
action:
- service: light.turn_on
-# Again, note the use of 'data_template:' rather than the normal 'data:' if you weren't using an input variable.
+ # Again, note the use of 'data_template:' rather than the normal 'data:' if you weren't using an input variable.
data_template:
entity_id: light.bedroom
brightness: '{{ states.input_number.bedroom_brightness.state | int }}'
-{% endraw %}
```
-
+{% endraw %}
Example of `input_number` being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation.
-```yaml
{% raw %}
+```yaml
# Example configuration.yaml entry using 'input_number' in an action in an automation
-
-# Define input_number
input_number:
target_temp:
name: Target Heater Temperature Slider
@@ -143,31 +131,29 @@ input_number:
step: 1
unit_of_measurement: step
icon: mdi:target
-
-# Automation.
# This automation script runs when a value is received via MQTT on retained topic: setTemperature
# It sets the value slider on the GUI. This slides also had its own automation when the value is changed.
-- alias: Set temp slider
- trigger:
- platform: mqtt
- topic: "setTemperature"
- action:
- service: input_number.set_value
- data_template:
- entity_id: input_number.target_temp
- value: '{{ trigger.payload}}'
-
- # This automation script runs when the target temperature slider is moved.
- # It publishes its value to the same MQTT topic it is also subscribed to.
-- alias: Temp slider moved
- trigger:
- platform: state
- entity_id: input_number.target_temp
- action:
- service: mqtt.publish
- data_template:
+automation:
+ - alias: Set temp slider
+ trigger:
+ platform: mqtt
topic: "setTemperature"
- retain: true
- payload: '{{ states.input_number.target_temp.state | int }}'
-{% endraw %}
+ action:
+ service: input_number.set_value
+ data_template:
+ entity_id: input_number.target_temp
+ value: '{{ trigger.payload}}'
+# This automation script runs when the target temperature slider is moved.
+# It publishes its value to the same MQTT topic it is also subscribed to.
+ - alias: Temp slider moved
+ trigger:
+ platform: state
+ entity_id: input_number.target_temp
+ action:
+ service: mqtt.publish
+ data_template:
+ topic: "setTemperature"
+ retain: true
+ payload: '{{ states.input_number.target_temp.state | int }}'
```
+{% endraw %}
diff --git a/source/_components/knx.markdown b/source/_components/knx.markdown
index b813ac3aee4..ff8c0786fcc 100644
--- a/source/_components/knx.markdown
+++ b/source/_components/knx.markdown
@@ -18,6 +18,10 @@ The [KNX](http://www.knx.org) integration for Home Assistant allows you to conne
The component requires a local KNX/IP interface like the [Weinzierl 730](http://www.weinzierl.de/index.php/en/all-knx/knx-devices-en/knx-ip-interface-730-en). Through this, it will send and receive commands to and from other devices to the KNX bus.
+
+ Please note, the `knx` platform does not support Windows and needs at least python version 3.5.
+
+
There is currently support for the following device types within Home Assistant:
- [Binary Sensor](/components/binary_sensor.knx)
@@ -79,6 +83,7 @@ knx:
- **fire_event** (*Optional*): If set to True, platform will write all received KNX messages to event bus
- **fire_event_filter** (*Optional*): If `fire_event` is set `fire_event_filter` has to be specified. `fire_event_filter` defines a list of patterns for filtering KNX addresses. Only telegrams which match this pattern are sent to the HOme Assistant event bus.
- **state_updater** (*Optional*): The component will collect the current state of each configured device from the KNX bus to display it correctly within Home-Assistant. Set this option to False to prevent this behaviour.
+- **time_address** (*Optional*): Broadcast current local time to KNX bus with configured group address.
### {% linkable_title Services %}
diff --git a/source/_components/light.ads.markdown b/source/_components/light.ads.markdown
new file mode 100644
index 00000000000..b5188cf33e8
--- /dev/null
+++ b/source/_components/light.ads.markdown
@@ -0,0 +1,42 @@
+---
+layout: page
+title: "ADS Light"
+description: Instructions how to set up ADS lights within Home Assistant
+date: 2017-10-25 10:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: beckhoff.png
+ha_category: Light
+ha_release: "0.60"
+ha_iot_class: "Local Push"
+---
+
+The `ads` light platform allows you to control your connecte ADS lights.
+
+To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml`
+file:
+
+```yaml
+# Example configuration.yaml entry
+light:
+ - platform: ads
+ adsvar: GVL.enable_light
+ adsvar_brightness: GVL.brightness
+```
+
+{% configuration %}
+ adsvar:
+ required: true
+ description: The name of the boolean variable that switches the light on
+ type: string
+ adsvar_brightness:
+ required: false
+ description: The name of the variable that controls the brightness, use an unsigned integer on the PLC side
+ type: integer
+ name:
+ required: false
+ description: An identifier for the Light in the frontend
+ type: string
+{% endconfiguration %}
diff --git a/source/_components/light.hive.markdown b/source/_components/light.hive.markdown
new file mode 100644
index 00000000000..7b9038ae169
--- /dev/null
+++ b/source/_components/light.hive.markdown
@@ -0,0 +1,28 @@
+---
+layout: page
+title: "Hive Light"
+description: "Instructions on how to integrate Hive lights with Home Assistant."
+date: 2017-09-24 21:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: hive.png
+ha_category: Light
+ha_release: 0.59
+ha_iot_class: "Cloud Polling"
+---
+
+
+The 'hive' light component integrates your Hive lights into Home Assistant, enabling control of various settings, depending on the model light.
+
+The Hive light component supports the following Hive products:
+- **Hive Active Light Dimmable**
+- **Hive Active Light Cool to Warm White**
+
+
+
+Full configuration details can be found on the main [Hive component](/components/hive/) page.
+
+
+
diff --git a/source/_components/light.mqtt.markdown b/source/_components/light.mqtt.markdown
index 99a1746623c..ba3041dde38 100644
--- a/source/_components/light.mqtt.markdown
+++ b/source/_components/light.mqtt.markdown
@@ -53,7 +53,7 @@ Configuration variables:
- **rgb_state_topic** (*Optional*): The MQTT topic subscribed to receive RGB state updates.
- **rgb_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the RGB value.
- **state_topic** (*Optional*): The MQTT topic subscribed to receive state updates.
-- **state_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the state value.
+- **state_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the state value. The template should match the payload "on" and "off" values, so if your light uses "power on" to turn on, your `state_value_template` string should return "power on" when the switch is on. For example if the message is just "on", your `state_value_template` should be `power {{ value }}`.
- **white_value_command_topic** (*Optional*): The MQTT topic to publish commands to change the light's white value.
- **white_value_state_topic** (*Optional*): The MQTT topic subscribed to receive white value updates.
- **white_value_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the white value.
diff --git a/source/_components/light.mystrom.markdown b/source/_components/light.mystrom.markdown
index ea1334c3f97..f9ceacdb226 100644
--- a/source/_components/light.mystrom.markdown
+++ b/source/_components/light.mystrom.markdown
@@ -26,11 +26,21 @@ light:
mac: MAC_ADDRESS
```
-Configuration variables:
-
-- **host** (*Required*): The IP address of your myStrom WiFi Bulb, eg. `192.168.1.32`.
-- **mac** (*Required*): The MAC address of your myStrom WiFi Bulb, eg. `5AAC8CA542F3`.
-- **name** (*Optional*): The name to use when displaying this light.
+{% configuration %}
+host:
+ description: "The IP address of your myStrom WiFi Bulb, e.g., `192.168.1.32`."
+ required: true
+ type: string
+mac:
+ description: "The MAC address of your myStrom WiFi Bulb, e.g., `5AAC8CA542F3`."
+ required: true
+ type: string
+name:
+ description: The name to use when displaying this bulb.
+ required: false
+ type: string
+ default: myStrom Bulb
+{% endconfiguration %}
Check if you are able to access the light located at `IP_ADRRESS`. The details about your light is provided as a JSON response.
diff --git a/source/_components/light.yeelight.markdown b/source/_components/light.yeelight.markdown
index 426b4754b0b..c082a8b2d8c 100644
--- a/source/_components/light.yeelight.markdown
+++ b/source/_components/light.yeelight.markdown
@@ -47,7 +47,7 @@ Per default the bulb limits the amount of requests per minute to 60, a limitatio
### {% linkable_title Initial setup %}
Before trying to control your light through Home Assistant, you have to setup your bulb using Yeelight app. ( [Android](https://play.google.com/store/apps/details?id=com.yeelight.cherry&hl=fr), [IOS](https://itunes.apple.com/us/app/yeelight/id977125608?mt=8) ).
-In the bulb property, you have to enable "Developer Mode" Developer mode may only be available with the latest firmware installed on your bulb. Firmware can be updated in the application after connecting the bulb.
+In the bulb property, you have to enable "LAN Mode" (previously called "Developer mode"). LAN mode may only be available with the latest firmware installed on your bulb. Firmware can be updated in the application after connecting the bulb.
Determine your bulb IP (using router, software, ping ...)
diff --git a/source/_components/linode.markdown b/source/_components/linode.markdown
index 49336ba74a1..623132c0448 100644
--- a/source/_components/linode.markdown
+++ b/source/_components/linode.markdown
@@ -13,7 +13,7 @@ ha_release: 0.57
ha_iot_class: "Cloud Polling"
---
-The `linode` component allows you to access the information about your [Linode](https://www.linode.com) systems from Home Assistant.
+The `linode` component allows you to access the information about your [Linode](https://linode.com) systems from Home Assistant.
Obtain your oAuth2 Access Token from Linode account.
*
diff --git a/source/_components/lirc.markdown b/source/_components/lirc.markdown
index 72ea7b545ef..ffe675ea0c4 100644
--- a/source/_components/lirc.markdown
+++ b/source/_components/lirc.markdown
@@ -26,9 +26,15 @@ To allow Home Assistant to talk to your IR receiver, you need to first make sure
$ sudo apt-get install lirc liblircclient-dev
```
-
-If you are configuring on a Raspberry Pi, there are excellent instructions with GPIO schematics and driver configurations [here](http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/). Consider following these.
+If you are configuring on a Raspberry Pi, there are excellent instructions with GPIO schematics and driver configurations [here](http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/). Take notice, the instructions in this blog are valid for Raspian Jesse where lirc 0.9.0 was included in the debian package. In Raspian Stretch lirc 0.9.4 is included in the Debian package.
+The configuration is slightly different :
+
+ - The `hardware.conf` file is not supported, obsoleted by a new `lirc_options.conf` file and systemd unit definitions.
+ - The former single `lirc` service is replaced with the three systemd services `lircd.service`, `lircmd.service` and `irexec.service`. There is no counterpart to the 0.9.0 `lirc` service which covered all of these. Using a separate transmitter device requires yet another service.
+ - 0.9.4 defaults to using systemd for controlling the services. This is not just start/stop functionality, systemd is used to implement new features and to address shortcomings in 0.9.0. However, traditional systemV scripts are also installed and could be used although this is less tested and not really documented.
+
+For more infomation have a look at `/usr/share/doc/lirc/README.Debian.gz` where the update process is explained when you have updated from jessie to stretch.
### {% linkable_title Configuring LIRC %}
diff --git a/source/_components/logentries.markdown b/source/_components/logentries.markdown
index e14b908b871..b365e57f63d 100644
--- a/source/_components/logentries.markdown
+++ b/source/_components/logentries.markdown
@@ -11,7 +11,9 @@ footer: true
ha_category: "History"
---
-The `logentries` component makes it possible to log all state changes to [your Logentries account](http://logentries.com/) using Logentries Webhook endpoint and a token based log
+The `logentries` component makes it possible to log all state changes to [Logentries](http://logentries.com/) using Logentries Webhook endpoint.
+
+Open the **Add a Log** page and choose **Manual**. Enter a name for your log in **Log Name**, add a group in **Select Log Set**, set **Token TCP - logs are identified by a token.** and press **Create Log Token**. The generated token is required for the Home Assistant configuration.
To use the `logentries` component in your installation, add the following to your `configuration.yaml` file:
@@ -21,6 +23,10 @@ logentries:
token: TOKEN
```
-Configuration variables:
+{% configuration %}
+token:
+ description: The token for the log to use.
+ required: true
+ type: string
+{% endconfiguration %}
-- **token** (*Required*): Your Logentries log token.
diff --git a/source/_components/lutron_caseta.markdown b/source/_components/lutron_caseta.markdown
index c2a3f41f7c6..912bd82dc41 100644
--- a/source/_components/lutron_caseta.markdown
+++ b/source/_components/lutron_caseta.markdown
@@ -27,17 +27,25 @@ The currently supported Caseta devices are:
When configured, the `lutron_caseta` component will automatically discover the currently supported devices as setup in the Lutron Smart Bridge. The name assigned in the Lutron mobile app will be used to form the `entity_id` used in Home Assistant. e.g. a dimmer called 'Bedroom Lamp' becomes `light.bedroom_lamp` in Home Assistant.
-To use Lutron Caseta devices in your installation, add the following to your `configuration.yaml` file using the IP of your Smart Bridge:
+To use Lutron Caseta devices in your installation, you must first log in to your Lutron account and generate a certificate that allows Home Assistant to connect to your bridge. This can be accomplished by downloading and executing [this script](/assets/get_lutron_cert.zip), which will generate three files: caseta.key, caseta.crt, caseta-bridge.crt when you run it. See the instructions at the top of the script for more information.
+
+Once you have the three necessary files, place them in your configuration directory and add the following to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
lutron_caseta:
host: IP_ADDRESS
+ keyfile: caseta.key
+ certfile: caseta.crt
+ ca_certs: caseta-bridge.crt
```
Configuration variables:
- **host** (*Required*): The IP address of the Lutron Smart Bridge.
+- **keyfile** (*Required*): The private key that Home Assistant will use to authenticate to the bridge.
+- **certfile** (*Required*): The certificate chain that Home Assistant will use to authenticate to the bridge.
+- **ca_certs** (*Required*): The list of certificate authorities (usually only one) that Home Assistant will expect when connecting to the bridge.
It is recommended to assign a static IP address to your Lutron Smart Bridge. This ensures that it won't change IP address, so you won't have to change the `host` if it reboots and comes up with a different IP address.
diff --git a/source/_components/media_player.aquostv.markdown b/source/_components/media_player.aquostv.markdown
index 2c764f46873..c9d7d2124d3 100644
--- a/source/_components/media_player.aquostv.markdown
+++ b/source/_components/media_player.aquostv.markdown
@@ -52,5 +52,6 @@ Currently known supported models:
- LC-52LE925UN
- LC-60LE925UN
- LC-60LE857U
+- LC-60EQ10U
If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/media_player.aquostv.markdown).
diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown
index 511bdeee001..2caaf7b0778 100644
--- a/source/_components/media_player.samsungtv.markdown
+++ b/source/_components/media_player.samsungtv.markdown
@@ -57,6 +57,7 @@ Currently known supported models:
- KS8005 (port must be set to 8001, and `pip3 install websocket-client` must be executed)
- KS7502 (port must be set to 8001, and `pip3 install websocket-client` must be executed, turn on doesn't work, turn off works fine)
- K5600AK (partially supported, turn on works but state is not updated)
+- UE65KS8005 (port must be set to 8001, On/Off, Forward/Backward, Volume are OK, but no Play button)
Currently tested but not working models:
diff --git a/source/_components/media_player.universal.markdown b/source/_components/media_player.universal.markdown
index 1d19ddadcf6..106f114f780 100644
--- a/source/_components/media_player.universal.markdown
+++ b/source/_components/media_player.universal.markdown
@@ -14,7 +14,7 @@ featured: false
Universal Media Players combine multiple existing entities in Home Assistant into one media player entity. This is used for creating a single entity that controls an entire media center.
-Multiple Media Player entities can be controlled from a Universal Media Player. Additionally, the Universal Media Player allows volume and power commands to be re-routed to other entities in Home Assistant. This allows the power and volume to control external devices like a television or audio receiver.
+Multiple media player entities can be controlled from an universal media player. Additionally, the universal media player allows volume and power commands to be re-routed to other entities in Home Assistant. This allows the power and volume to control external devices like a television or audio receiver.
A Universal Media Player is created in `configuration.yaml` as follows.
@@ -47,23 +47,46 @@ media_player:
state: ENTITY_ID|ATTRIBUTE
```
-Configuration variables:
+{% configuration %}
+name:
+ description: The name to assign the player.
+ required: true
+ type: string
+children:
+ description: Ordered list of child media players this entity will control.
+ required: true
+ type: list
+state_template:
+ description: "A [template](/topics/templating/) can be specified to render the state of the media player. This way, the state could depend on entities different from media players, like switches or input booleans."
+ required: false
+ type: template
+commands:
+ description: "Commands to be overwritten. Possible entries are `turn_on`, `turn_off`, `select_source`, `volume_set`, `volume_up`, `volume_down` and `volume_mute`."
+ required: false
+ type: string
+attributes:
+ description: "Attributes that can be overwritten. Possible entries are `is_volume_muted`, `state`, `source`, `source_list` and `volume_level`. The values should be an entity ID and state attribute separated by a pipe character (|). If the entity ID's state should be used, then only the entity id should be provided."
+ required: false
+ type: string
+{% endconfiguration %}
-- **name** (*Required*): The name to assign the player
-- **children** (*Required*): Ordered list of child media players this entity will control
-- **commands** (*Optional*): Commands to be overwritten. Possible entries are *turn_on*, *turn_off*, *select_source*, *volume_set*, *volume_up*, *volume_down*, and *volume_mute*.
-- **attributes** (*Optional*): Attributes that can be overwritten. Possible entries are *is_volume_muted*, *state*, *source*, *source_list, and *volume_level*. The values should be an entity id and state attribute separated by a bar (\|). If the entity id's state should be used, then only the entity id should be provided.
+The Universal Media Player will primarily imitate one of its `children`. The Universal Media Player will control the first child on the list that is active (not idle/off). The Universal Media Player will also inherit its state from the first active child if a `state_template` is not provided. Entities in the `children:` list must be media players, but the state template can contain any entity.
-The universal media player will primarily imitate one of its *children*. The first child in the list that is active (not idle/off) will be controlled the universal media player. The universal media player will also inherit its state from the first active child. Entities in the *children* list must be media players.
+It is recommended that the command `turn_on`, the command `turn_off`, and the attribute `state` all be provided together. The `state` attribute indicates if the media player is on or off. If `state` indicates the media player is off, this status will take precedence over the states of the children. If all the children are idle/off and `state` is on, the Universal Media Player's state will be on.
-It is recommended that the command *turn_on*, the command *turn_off*, and the attribute *state* all be provided together. The *state* attribute indicates if the Media Player is on or off. If *state* indicates the media player is off, this status will take precedent over the states of the children. If all the children are idle/off and *state* is on, the universal media player's state will be on.
+It is also recommended that the command `volume_up`, the command `volume_down`, the command `volume_mute`, and the attribute `is_volume_muted` all be provided together. The attribute `is_volume_muted` should return either True or the on state when the volume is muted. The `volume_mute` service should toggle the mute setting.
-It is also recommended that the command *volume_up*, the command *volume_down*, the command *volume_mute*, and the attribute *is_volume_muted* all be provided together. The attribute *is_volume_muted* should return either True or the on state when the volume is muted. The *volume_mute* service should toggle the mute setting.
+When providing `select_source` as a command, it is recommended to also provide the attributes `source`, and `source_list`. The `source` attribute is the currently select source, while the `source_list` attribute is a list of all available sources.
-When providing *select_source* as a command, it is recommended to also provide the attributes *source*, and *source_list*. The *source* attribute is the currently select source, while the *source_list* attribute is a list of all available sources.
+## {% linkable_title Usage examples %}
-Below is an example configuration.
+#### {% linkable_title Chromecast & Kodi control with switches %}
+In this example, a switch is available to control the power of the television. Switches are also available to turn the volume up, turn the volume down, and mute the audio. These could be command line switches or any other entity in Home Assistant. The `turn_on` and `turn_off` commands will be redirected to the television, and the volume commands will be redirected to an audio receiver. The `select_source` command will be passed directly to an A/V receiver.
+
+The children are a Chromecast and a Kodi player. If the Chromecast is playing, the Universal Media Player will reflect its status. If the Chromecast is idle and Kodi is playing, the universal media player will change to reflect its status.
+
+{% raw %}
```yaml
media_player:
platform: universal
@@ -96,12 +119,12 @@ media_player:
service: media_player.select_source
data_template:
entity_id: media_player.receiver
- source: '{% raw %}{{ source }}{% endraw %}'
+ source: '{{ source }}'
volume_set:
service: media_player.volume_set
data_template:
entity_id: media_player.receiver
- volume_level: '{% raw %}{{ volume_level }}{% endraw %}'
+ volume_level: '{{ volume_level }}'
attributes:
state: switch.living_room_tv
@@ -109,9 +132,112 @@ media_player:
volume_level: media_player.receiver|volume_level
source: media_player.receiver|source
source_list: media_player.receiver|source_list
-
```
+{% endraw %}
-In this example, a switch is available to control the power of the television. Switches are also available to turn the volume up, turn the volume down, and mute the audio. These could be command line switches or any other entity in Home Assistant. The *turn_on* and *turn_off* commands will be redirected to the television and the volume commands will be redirected to an audio receiver. The *select_source* command will be passed directly to an A/V receiver.
+#### {% linkable_title Kodi CEC-TV control %}
-The children are a Chromecast and a Kodi player. If the Chromecast is playing, the Universal Media Player will reflect its status. If the Chromecast is idle and Kodi is playing, the Universal Media player will change to reflect its status.
+In this example, a [Kodi Media Player](/components/media_player.kodi/) runs in a CEC capable device (OSMC/OpenElec running in a Raspberry Pi 24/7, for example), and, with the JSON-CEC Kodi addon installed, it can turn on and off the attached TV.
+
+We store the state of the attached TV in a hidden [input boolean](/components/input_boolean/), so we can differentiate the TV being on or off, while Kodi is always 'idle', and use the universal media player to render its state with a template. We can hide the Kodi Media Player too, and only show the universal one, which now can differentiate between the 'idle' and the 'off' state (being the second when it is idle and the TV is off).
+
+Because the input boolean used to store the TV state is only changing when using the Home Assistant `turn_on` and `turn_off` actions, and Kodi could be controlled by so many ways, we also define some automations to update this Input Boolean when needed.
+
+In an Apple HomeKit scene, we can now expose this universal media player as an on/off switch in Homebridge, and, that way, use Siri to turn on and off the TV.
+
+The complete configuration is:
+
+{% raw %}
+```yaml
+homeassistant:
+ customize:
+ input_boolean.kodi_tv_state:
+ hidden: true
+ homebridge_hidden: true
+ media_player.kodi:
+ hidden: true
+ homebridge_hidden: true
+ media_player.kodi_tv:
+ friendly_name: Kodi
+ homebridge_name: Kodi
+ homebridge_media_player_switch: on_off
+
+input_boolean:
+ kodi_tv_state:
+
+media_player:
+- platform: universal
+ name: Kodi TV
+ state_template: >
+ {% if is_state('media_player.kodi', 'idle') and is_state('input_boolean.kodi_tv_state', 'off') %}
+ off
+ {% else %}
+ {{ states('media_player.kodi') }}
+ {% endif %}
+ children:
+ - media_player.kodi
+ commands:
+ turn_on:
+ service: media_player.turn_on
+ data:
+ entity_id: media_player.kodi
+ turn_off:
+ service: media_player.turn_off
+ data:
+ entity_id: media_player.kodi
+ attributes:
+ is_volume_muted: media_player.kodi|is_volume_muted
+ volume_level: media_player.kodi|volume_level
+
+- platform: kodi
+ name: Kodi
+ host: 192.168.1.10
+ turn_on_action:
+ - service: input_boolean.turn_on
+ data:
+ entity_id: input_boolean.kodi_tv_state
+ - service: media_player.kodi_call_method
+ data:
+ entity_id: media_player.kodi
+ method: Addons.ExecuteAddon
+ addonid: script.json-cec
+ params:
+ command: activate
+ turn_off_action:
+ - service: input_boolean.turn_off
+ data:
+ entity_id: input_boolean.kodi_tv_state
+ - service: media_player.media_stop
+ data:
+ entity_id: media_player.kodi
+ - service: media_player.kodi_call_method
+ data:
+ entity_id: media_player.kodi
+ method: Addons.ExecuteAddon
+ addonid: script.json-cec
+ params:
+ command: standby
+
+automation:
+- alias: Turn on the TV when Kodi is activated
+ trigger:
+ platform: state
+ entity_id: media_player.kodi_tv
+ from: 'off'
+ to: 'playing'
+ action:
+ - service: media_player.turn_on
+ entity_id: media_player.kodi_tv
+
+- alias: Turn off the TV when Kodi is in idle > 15 min
+ trigger:
+ platform: state
+ entity_id: media_player.kodi_tv
+ to: 'idle'
+ for:
+ minutes: 15
+ action:
+ - service: media_player.turn_off
+ entity_id: media_player.kodi_tv
+```
+{% endraw %}
diff --git a/source/_components/mqtt_eventstream.markdown b/source/_components/mqtt_eventstream.markdown
index e440c9ec5ec..7dd471e5cbf 100644
--- a/source/_components/mqtt_eventstream.markdown
+++ b/source/_components/mqtt_eventstream.markdown
@@ -24,12 +24,18 @@ mqtt_eventstream:
subscribe_topic: OtherHaServerName
```
-Configuration variables:
+{% configuration %}
+publish_topic:
+ description: Topic for publishing local events.
+ required: false
+ type: string
+subscribe_topic:
+ description: Topic to receive events from the remote server.
+ required: false
+ type: string
+{% endconfiguration %}
-- **publish_topic** (*Optional*): Topic for publishing local events
-- **subscribe_topic** (*Optional*): Topic to receive events from the remote server.
-
-## Multiple Instances
+## {% linkable_title Multiple Instances %}
Events from multiple instances can be aggregated to a single master instance by subscribing to a wildcard topic from the master instance.
diff --git a/source/_components/mqtt_statestream.markdown b/source/_components/mqtt_statestream.markdown
index 1fa88b4469f..5b7b832fe91 100644
--- a/source/_components/mqtt_statestream.markdown
+++ b/source/_components/mqtt_statestream.markdown
@@ -32,6 +32,12 @@ Configuration variables:
Default is false.
- **publish_timestamps** (*Optional*): Publish the last_changed and last_updated timestamps for the entity.
Default is false.
+- **exclude** (*Optional*): Configure which components should be excluded from recordings. See *Include/Exclude* section below for details.
+ - **entities** (*Optional*): The list of entity ids to be excluded from recordings.
+ - **domains** (*Optional*): The list of domains to be excluded from recordings.
+- **include** (*Optional*): Configure which components should be included in recordings. If set, all other entities will not be recorded.
+ - **entities** (*Optional*): The list of entity ids to be included from recordings.
+ - **domains** (*Optional*): The list of domains to be included from recordings.
## Operation
@@ -44,6 +50,56 @@ For example, with the example configuration above, if an entity called 'light.ma
If that entity also has an attribute called `brightness`, the component will also publish the value of that attribute to `homeassistant/light/master_bedroom_dimmer/brightness`.
-All states and attributes are passed through JSON serialization before publishing. **Please note** that this causes strings to be quoted (e.g., the string 'on' will be published as '"on"'). You can access the JSON deserialized values (as well as unquoted strings) at many places by using `value_json` instead of `value`.
+All states and attributes are passed through JSON serialization before publishing. **Please note** that this causes strings to be quoted (e.g., the string 'on' will be published as '"on"'). You can access the JSON deserialized values (as well as unquoted strings) at many places by using `value_json` instead of `value`.
The last_updated and last_changed values for the entity will be published to `homeassistant/light/master_bedroom_dimmer/last_updated` and `homeassistant/light/master_bedroom_dimmer/last_changed`, respectively. The timestamps are in ISO 8601 format - for example, `2017-10-01T23:20:30.920969+00:00`.
+
+## Include/exclude
+
+The **exclude** and **include** configuration variables can be used to filter the items that are published to MQTT.
+
+1\. If neither **exclude** or **include** are specified, all entities are published.
+
+2\. If only **exclude** is specified, then all entities except the ones listed are published.
+
+```yaml
+# Example of excluding entities
+mqtt_statestream:
+ base_topic: homeassistant
+ exclude:
+ domains:
+ - switch
+ entities:
+ - sensor.nopublish
+```
+In the above example, all entities except for *switch.x* and *sensor.nopublish* will be published to MQTT.
+
+3\. If only **include** is specified, then only the specified entries are published.
+
+```yaml
+# Example of excluding entities
+mqtt_statestream:
+ base_topic: homeassistant
+ include:
+ domains:
+ - sensor
+ entities:
+ - lock.important
+```
+In this example, only *sensor.x* and *lock.important* will be published.
+
+4\. If both **include** and **exclude** are specified then all entities specified by **include** are published except for the ones
+specified by **exclude**.
+
+```yaml
+# Example of excluding entities
+mqtt_statestream:
+ base_topic: homeassistant
+ include:
+ domains:
+ - sensor
+ exclude:
+ entities:
+ - sensor.noshow
+```
+In this example, all sensors except for *sensor.noshow* will be published.
diff --git a/source/_components/notify.html5.markdown b/source/_components/notify.html5.markdown
index 34547169778..bddb7ff0847 100644
--- a/source/_components/notify.html5.markdown
+++ b/source/_components/notify.html5.markdown
@@ -21,14 +21,14 @@ To enable this platform, add the following lines to your `configuration.yaml` fi
notify:
- name: NOTIFIER_NAME
platform: html5
- gcm_api_key: 'gcm-sender-key'
+ gcm_api_key: 'gcm-server-key'
gcm_sender_id: 'gcm-sender-id'
```
Configuration variables:
- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`.
-- **gcm_api_key** (*Required if pushing to Chrome*): The API key provided to you by Google for Google Cloud Messaging (GCM). Required to push to Chrome.
+- **gcm_api_key** (*Required if pushing to Chrome*): The API Server key provided to you by Google for Google Cloud Messaging (GCM). Required to push to Chrome.
- **gcm_sender_id** (*Required if pushing to Chrome*): The sender ID provided to you by Google for Google Cloud Messaging (GCM). Required to push to Chrome.
### {% linkable_title Getting ready for Chrome %}
@@ -42,7 +42,7 @@ Configuration variables:
#### {% linkable_title Verify your domain with Hass.io %}
1. For verifying your domain you need to download a file in step 2.
-2. Create a dictionary named "www" in you Hass.io configuration dictionary.
+2. Create a dictionary named "www" in you Hass.io configuration directory.
3. Place the file (something like this: google*.html) in the "www" directory.
4. You can open it by going to **https://yourdomain/local/exact_file_name.html**
5. Proceed with step 3.
diff --git a/source/_components/notify.lametric.markdown b/source/_components/notify.lametric.markdown
index 8adb8c094eb..cf50cffaa2e 100644
--- a/source/_components/notify.lametric.markdown
+++ b/source/_components/notify.lametric.markdown
@@ -12,17 +12,71 @@ ha_category: Notifications
ha_release: 0.49
---
-This component allows to send notification to a LaMetric device. It need the LaMetric platform to be configured first.
+The `lametric` notification platform allows to send notification to a LaMetric device. It needs the LaMetric platform to be configured first.
+
+To enable LaMetric notifications in your installation, add the following to your `configuration.yaml` file:
```yaml
+# Example configuration.yaml entry
notify:
- name: lametric1
+ name: NOTIFIER_NAME
platform: lametric
- display_time: 20
- icon: i555
```
-- **name** (*Optional*): The name of the LaMetric device. Usually it is "My Lametric"
-- **display_time** (*Optional*): Defines how long the message should be displayed (in seconds).
-- **icon** (*Optional*): An icon or animation. Check out the list of all icons her: https://developer.lametric.com/icons
-Note that icons always begin with "i" while animations begin with "a". This is part of the name, you can't just use the number.
+{% configuration %}
+name:
+ description: "The optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`."
+ required: false
+ type: string
+ default: notify
+lifetime:
+ description: Defines how long the message remains in LaMetric notification queue (in seconds).
+ required: false
+ type: int
+ default: 10
+icon:
+ description: An icon or animation.
+ required: false
+ type: string
+cycles:
+ description: Defines how often the notification is displayed.
+ required: false
+ type: int
+ default: 1
+{% endconfiguration %}
+
+Check out the list of all icons at [https://developer.lametric.com/icons](https://developer.lametric.com/icons). Note that icons always begin with "i" while animations begin with "a". This is part of the name, you can't just use the number!
+
+## {% linkable_title Examples %}
+
+### {% linkable_title Full configuration example %}
+
+```yaml
+# Example configuration.yaml entry
+notify:
+ name: NOTIFIER_NAME
+ platform: lametric
+ lifetime: 20
+ icon: a7956
+ cycles: 3
+```
+
+### {% linkable_title Changing sounds and icons %}
+
+To add a notification sound or an icon override, it has to be done via service data.
+
+```yaml
+- alias: "Send notification on arrival at school"
+ trigger:
+ platform: state
+ entity_id: device_tracker.son_mobile
+ from: 'not_home'
+ to: 'school'
+ action:
+ service: notify.lametric
+ data:
+ message: "Son has arrived at school!"
+ data:
+ sound: 'notification'
+ icon: 'i51'
+ ```
diff --git a/source/_components/notify.nfandroidtv.markdown b/source/_components/notify.nfandroidtv.markdown
index 3a91a7cba0e..0a7d1ba842a 100644
--- a/source/_components/notify.nfandroidtv.markdown
+++ b/source/_components/notify.nfandroidtv.markdown
@@ -14,9 +14,11 @@ ha_iot_class: "Local Polling"
---
-Notification platform for [Notifications for Android TV](https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google&hl=en) and [Notifications for FireTV](https://play.google.com/store/apps/details?id=de.cyberdream.firenotifications.google).
+Notification platform for [Notifications for Android TV](https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google) and [Notifications for FireTV](https://play.google.com/store/apps/details?id=de.cyberdream.firenotifications.google).
+
The notifications are in the global scope of your Android TV device. They will be displayed regardless of which application is running.
-The In-App purchases only apply to the client for Android smartphones, so there isn't any limit when pushing notifications from Home Assistant.
+
+When setting this up be aware, that there are two apps: one for your smartphone to send notifications (not required for this platform) and one for your Android TV device to receive the notifications. The app available in the store of your target device is the one that is needed to display notifications sent from Home Assistant. The In-App purchases only apply to the client for Android smartphones, so there isn't any limit when pushing notifications from Home Assistant.
To enable the notification platform, add the following to your `configuration.yaml` file:
@@ -37,6 +39,7 @@ Configuration variables:
- **color** (*Optional*): Has to be one of: grey (default), black, indigo, green, red, cyan, teal, amber, pink
- **transparency** (*Optional*): Has to be one of: 0%, 25% (default), 50%, 75%, 100%
- **interrupt** (*Optional*): If set to true, 1, on etc., the notification is interactive and can be dismissed or selected to display more details. Depending on the running app (e.g. Netflix), this may stop playback.
+- **icon** (*Optional*): Change the default icon to a custom icon by providing the full path to a PNG image.
The configuration will be used to configure the default values for the notification for the host specified by the IP. However, you can override most of the settings by passing them with the data-attribute when calling the service.
This is a fully customized JSON you can use to test how the final notification will look like:
@@ -50,7 +53,8 @@ This is a fully customized JSON you can use to test how the final notification w
"duration":2,
"transparency":"0%",
"color": "red",
- "interrupt": 1
+ "interrupt": 1,
+ "icon": "/path/to/image.png"
}
}
```
diff --git a/source/_components/notify.telegram.markdown b/source/_components/notify.telegram.markdown
index 7df967d6289..ac89f6f23c7 100644
--- a/source/_components/notify.telegram.markdown
+++ b/source/_components/notify.telegram.markdown
@@ -156,6 +156,35 @@ homeassistant:
```
+### {% linkable_title Video support %}
+
+```yaml
+...
+action:
+ service: notify.NOTIFIER_NAME
+ data:
+ title: Send a video
+ message: That's an example that sends a video.
+ data:
+ video:
+ - url: http://192.168.1.28/camera.mp4
+ username: admin
+ password: secrete
+ - file: /tmp/video.mp4
+ caption: Video Title xy
+ - url: http://somebla.ie/video.mp4
+ caption: I.e. for a Title
+```
+
+Configuration variables:
+
+- **url** or **file** (*Required*): For local or remote path to a video.
+- **caption** (*Optional*): The title of the video.
+- **username** (*Optional*): Username for a URL which require HTTP authentication.
+- **password** (*Optional*): Username for a URL which require HTTP authentication.
+- **authentication** (*Optional*): Set to 'digest' to use HTTP digest authentication, defaults to 'basic'.
+- **keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom keyboard.
+- **inline_keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.
### {% linkable_title Document support %}
diff --git a/source/_components/notify.telstra.markdown b/source/_components/notify.telstra.markdown
index e60260b6361..4297cfc69f1 100644
--- a/source/_components/notify.telstra.markdown
+++ b/source/_components/notify.telstra.markdown
@@ -15,7 +15,7 @@ ha_release: 0.31
The `telstra` notification platform allows you to deliver Home Assistant notifications to Australian phone numbers over the [Telstra SMS API](https://dev.telstra.com/content/sms-api-0).
-To enable the Telstra notifications in your installation, you must first create an account and API app over at [dev.telstra.com](https://dev.telstra.com/). The free tier allows for 1000 notifications to be sent per month.
+To enable the Telstra notifications in your installation, you must first create an account and API app over at [dev.telstra.com](https://dev.telstra.com/). The free tier allows for a maximum of 1000 free messages.
After your API app is approved, add the following to your `configuration.yaml` file:
diff --git a/source/_components/remote.apple_tv.markdown b/source/_components/remote.apple_tv.markdown
index 68e11de80dd..692de767fcd 100644
--- a/source/_components/remote.apple_tv.markdown
+++ b/source/_components/remote.apple_tv.markdown
@@ -37,7 +37,4 @@ data:
- left
- menu
- select
- device: ''
```
-
-Please note that `device` must be specified (because of validation) but is not used by this platform. So you may specify any value.
diff --git a/source/_components/remote.harmony.markdown b/source/_components/remote.harmony.markdown
index 03813d77cb8..ec7057a5a80 100755
--- a/source/_components/remote.harmony.markdown
+++ b/source/_components/remote.harmony.markdown
@@ -53,7 +53,7 @@ Configuration variables:
- **name** (*Required*): The hub's name to display in the frontend.
- **host** (*Optional*): The Harmony device's IP address. Leave empty for the IP to be discovered automatically.
- **port** (*Optional*): The Harmony device's port. Defaults to 5222.
-- **activity** (*Optional*): Activity to use when turnon service is called without any data.
+- **activity** (*Optional*): Activity to use when `turn_on` service is called without any data.
- **delay_secs** (*Optional*): Default duration in seconds between sending commands to a device.
Configuration file:
@@ -64,32 +64,58 @@ Upon startup one file will be written to your Home Assistant configuration direc
- List of all programmed device names and ID numbers
- List of all available commands per programmed device
-Supported services:
+### {% linkable_title Service `remote.turn_off` %}
-- **Turn Off**: Turn off all devices that were switched on from the start of the current activity.s
-- **Turn On**: Start an activity, will start the default activity from configuration.yaml if no activity is specified. The specified activity can either be the activity name or the activity ID from the configuration file written to your [Home Assistant configuration directory](/docs/configuration/).
-- **Send Command**: Send a single command or a set of commands to one device, device ID and available commands are written to the configuration file at startup. You can optionally specify the number of times you wish to repeat the command(s) and delay you want between repeated command(s).
-- **Sync**: Synchronizes the Harmony device with the Harmony web service if any changes are made from the web portal or app.
+Turn off all devices that were switched on from the start of the current activity.
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | yes | Only act on a specific remote, else target all.
-### {% linkable_title Examples %}
+### {% linkable_title Service `remote.turn_on` %}
-A template switch can be used to display and control the state of an activity in the frontend.
+Start an activity. Will start the default `activity` from configuration.yaml if no activity is specified. The specified activity can either be the activity name or the activity ID from the configuration file written to your [Home Assistant configuration directory](/docs/configuration/).
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | yes | Only act on a specific remote, else target all.
+| `activity` | yes | Activity ID or Activity Name to start.
+
+### {% linkable_title Service `remote.send_command` %}
+
+Send a single command or a set of commands to one device, device ID and available commands are written to the configuration file at startup. You can optionally specify the number of times you wish to repeat the command(s) and delay you want between repeated command(s).
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | yes | Only act on a specific remote, else target all.
+| `device` | no | Device ID to send the command to.
+| `command` | no | A single command or a list of commands to send.
+| `num_repeats` | yes | The number of times to repeat the command(s).
+| `delay_secs` | yes | The number of seconds between sending each command.
+
+A typical service call for sending several button presses looks like this:
```yaml
-switch:
- - platform: template
- switches:
- tv:
- value_template: "{% raw %}{% if is_state('remote.family_room', 'on') %}on{% else %}off{% endif %}{% endraw %}"
- turn_on:
- service: remote.turn_on
- entity_id: remote.family_room
- turn_off:
- service: remote.turn_off
- entity_id: remote.family_room
+service: remote.send_command
+data:
+ entity_id: remote.tv_room
+ command:
+ - home
+ - 1
+ - 2
+ delay_secs: 0.6
```
+### {% linkable_title Service `remote.harmony_sync` %}
+
+Synchronize the Harmony device with the Harmony web service if any changes are made from the web portal or app.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | yes | Only act on a specific remote, else target all.
+
+### {% linkable_title Examples %}
+
Template sensors can be utilized to display current activity in the frontend.
```yaml
@@ -104,7 +130,6 @@ sensor:
friendly_name: 'bedroom'
```
-
The example below shows how to control an `input_boolean` switch using the Harmony remote's current activity. The switch will turn on when the remote's state changes and the Kodi activity is started and off when the remote's state changes and the current activity is PowerOff.
```yaml
@@ -130,39 +155,3 @@ automation:
service: input_boolean.turn_off
entity_id: input_boolean.notify
````
-
-The automation example below shows how to send a command via the harmony remote using the `send_command` service to send the 'Pause' command to the hub, which is already defined as an IR code for each device to be used via the Harmony app. It is checking for the activity name as exposed through the sensor in the harmony remote component using Jinja if statements to set the device_id, sending the correct Pause command for the given activity. This requires checking your activity list and device_id from the `harmony_REMOTENAME.conf` file created when you start the component. In this example, the harmony hub is named bedroom.
-
-```yaml
-automation:
- - alias: Harmony Pause contextual for activity
- trigger:
- # trigger happens to be from a flic button - could be any valid event
- platform: event
- event_type: flic_click
- event_data:
- button_name: flic_80e4da70bbb1
- click_type: double
- action:
- service: remote.send_command
- data_template:
- # using a data template to have if brances for relevant device
- # Always the same entity_id - the harmony hub
- entity_id: remote.bedroom
- # Always the same command - the Pause key
- command: Pause
- # select device based upon the activity being undertaken.
- device: >
- # when in WATCH TV activity, the pause key relates to a TiVo, which is device 22987101
- {% raw %}{% if is_state("sensor.bedroom", "WATCH TV") %}{% raw %}
- 22987101
- # when in WATCH APPLE TV activity, the pause key relates to an Apple TV, which is device 23002316
- {% raw %}{% elif is_state("sensor.bedroom", "WATCH APPLE TV") %}{% endraw %}
- 23002316
- {% raw %}{% elif is_state("sensor.bedroom", "PLEX") %}{% endraw %}
- 23048786
- {% raw %}{% elif is_state("sensor.bedroom", "WATCH BLU RAY") %}{% endraw %}
- 23043122
- {% raw %}{% endif %}{% endraw %}
-
-````
diff --git a/source/_components/remote.itach.markdown b/source/_components/remote.itach.markdown
index 97234c7516f..35e14d18524 100755
--- a/source/_components/remote.itach.markdown
+++ b/source/_components/remote.itach.markdown
@@ -48,7 +48,7 @@ Configuration variables:
- **name** (*Required*): Command name.
- **data** (*Required*): Hex command data.
-An example to call the component from developer tools using the remote, send_command service `{ "entity_id":"remote.tv", "device":"0", "command":"menu" }`
+An example to call the component from developer tools using the `remote.send_command` service: `{ "entity_id":"remote.tv", "command":"menu" }`
Note: Global Cache devices expect data in their own format of "sendir...". This component converts hex code to Global Cache IR form.
diff --git a/source/_components/remote.markdown b/source/_components/remote.markdown
index 327797ebbc8..fada23fde39 100755
--- a/source/_components/remote.markdown
+++ b/source/_components/remote.markdown
@@ -13,7 +13,7 @@ ha_release: "0.34"
Keeps track which remotes are in your environment, their state and allows you to control them.
* Maintains a state per remote and a combined state `all_remotes`.
- * Registers services `remote/turn_on`, `remote/turn_off`, `remote/toggle`, `remote/sync`, and `remote/send_command` to control remotes.
+ * Registers services `remote/turn_on`, `remote/turn_off`, `remote/toggle`, and `remote/send_command` to control remotes.
### {% linkable_title Use the services %}
@@ -25,5 +25,6 @@ Go to the **Developer Tools**, then to **Call Service** in the frontend, and cho
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
-| `entity_id` | yes | Only act on specific remote. Else targets all.
+| `entity_id` | yes | Only act on a specific remote, else target all.
+See the platform documentation for each type of remote for more detailed examples.
diff --git a/source/_components/rss_feed_template.markdown b/source/_components/rss_feed_template.markdown
index 804c3bbe4aa..70c3bbd7f32 100644
--- a/source/_components/rss_feed_template.markdown
+++ b/source/_components/rss_feed_template.markdown
@@ -17,7 +17,7 @@ The `rss_feed_template` component can export any information from Home Assistant
For example, on Android, the app "Simple RSS Widget" can be used to display temperatures on the home screen.
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
rss_feed_template:
# Accessible on /api/rss_template/garden
# Example: https://localhost:8123/api/rss_template/garden
diff --git a/source/_components/satel_integra.markdown b/source/_components/satel_integra.markdown
index c882e71c626..4cbe5957bfd 100644
--- a/source/_components/satel_integra.markdown
+++ b/source/_components/satel_integra.markdown
@@ -13,7 +13,7 @@ ha_release: 0.54
ha_iot_class: "Local Push"
---
-The `satel_integra` component will allow Home Assistant users who own a Satel Integra alarm panel to leverage their alarm system and its sensors to provide Home Assistant with information about their homes. Connectivity between Home Assistant and the alarm is accomplished through a ETHM extension module that must be installed in the alarm.
+The `satel_integra` component will allow Home Assistant users who own a Satel Integra alarm panel to leverage their alarm system and its sensors to provide Home Assistant with information about their homes. Connectivity between Home Assistant and the alarm is accomplished through a ETHM extension module that must be installed in the alarm. Compatible with ETHM-1 Plus module with firmware version > 2.00 (version 2.04 confirmed).
There is currently support for the following device types within Home Assistant:
diff --git a/source/_components/sensor.ads.markdown b/source/_components/sensor.ads.markdown
new file mode 100644
index 00000000000..0e65a67bb60
--- /dev/null
+++ b/source/_components/sensor.ads.markdown
@@ -0,0 +1,51 @@
+---
+layout: page
+title: "ADS Sensor"
+description: "Instructions how to integrate ADS numeric values into Home Assistant."
+date: 2017-10-25 10:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: beckhoff.png
+ha_category: Sensor
+ha_release: "0.60"
+ha_iot_class: "Local Push"
+---
+
+The `ads` sensor platform allows reading the value of a numeric variable on your ADS device. The variable can be of type *INT*, *UINT* or *BYTE*.
+
+To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml`
+file:
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: ads
+ adsvar: GVL.temperature
+ unit_of_measurement: '°C'
+ adstype: int
+```
+
+{% configuration %}
+ adsvar:
+ required: true
+ description: The name of the variable which you want to access.
+ type: string
+ adstype:
+ required: false
+ description: The datatype of the ADS variable, possible values are int, uint, byte.
+ default: int
+ type: string
+ name:
+ required: false
+ description: An identifier for the sensor.
+ type: string
+ factor:
+ required: false
+ description: A factor that divides the stored value before displaying in Home Assistant.
+ default: 1
+ type: integer
+{% endconfiguration %}
+
+The *factor* can be used to implement fixed decimals. E.g., set *factor* to 100 if you want to display a fixed decimal value with two decimals. A variable value of `123` will be displayed as `1.23`.
diff --git a/source/_components/sensor.alpha_vantage.markdown b/source/_components/sensor.alpha_vantage.markdown
new file mode 100644
index 00000000000..9fb5b85a569
--- /dev/null
+++ b/source/_components/sensor.alpha_vantage.markdown
@@ -0,0 +1,53 @@
+---
+layout: page
+title: "Alpha Vantage"
+description: "Instructions how to setup Alpha Vantage within Home Assistant."
+date: 2017-12-02 12:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: alpha_vantage.png
+ha_category: Finance
+ha_iot_class: "Cloud Polling"
+featured: false
+ha_release: "0.60"
+---
+
+The `alpha_vantage` sensor platform uses [Alpha Vantage](https://www.alphavantage.co) to monitor the stock market.
+
+To enable the `yahoo_finance` platform, add the following lines to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: alpha_vantage
+ api_key: YOUR_API_KEY
+```
+
+{% configuration %}
+api_key:
+ description: "The API Key from [Alpha Vantage](https://www.alphavantage.co)."
+ required: true
+ type: string
+symbols:
+ description: List of stock market symbols for given companies.
+ required: false
+ type: string, list
+ default: GOOGL
+{% endconfiguration %}
+
+## {% linkable_title Examples %}
+
+In this section you find some real life examples of how to use this sensor.
+
+### {% linkable_title Red Hat and Google %}
+
+```yaml
+sensor:
+ - platform: yahoo_finance
+ symbols:
+ - RHT
+ - GOOGL
+```
+
diff --git a/source/_components/sensor.arlo.markdown b/source/_components/sensor.arlo.markdown
index 72fc0ae36bb..309795f7952 100644
--- a/source/_components/sensor.arlo.markdown
+++ b/source/_components/sensor.arlo.markdown
@@ -26,6 +26,7 @@ sensor:
- last_capture
- total_cameras
- battery_level
+ - signal_strength
```
Configuration variables:
@@ -35,5 +36,6 @@ Configuration variables:
- **last_capture**: Return the timestamp from the last video captured by your Arlo camera.
- **total_cameras**: Return the number of recognized and active cameras linked on your Arlo account.
- **battery_level**: Return the battery level of your Arlo camera.
+ - **signal_strength**: Return the wireless signal strength of your Arlo camera.
If no **monitored_conditions** are specified, all of above will be enabled by default.
diff --git a/source/_components/sensor.bitcoin.markdown b/source/_components/sensor.bitcoin.markdown
index f2475e71038..85173adc725 100644
--- a/source/_components/sensor.bitcoin.markdown
+++ b/source/_components/sensor.bitcoin.markdown
@@ -27,29 +27,58 @@ sensor:
- trade_volume_btc
```
-Configuration variables:
-
-- **currency** (*Optional*): The currency to exchange to, eg. CHF, USD, EUR, etc. Default is USD.
-- **display_options** array (*Required*): Options to display in the frontend.
- - **exchangerate**: Exchange rate of 1 BTC
- - **trade_volume_btc**: Trade volume
- - **miners_revenue_usd**: Miners revenue
- - **btc_mined**: BTC mined
- - **trade_volume_usd**: Trade volume in USD
- - **difficulty**: Difficulty
- - **minutes_between_blocks**: Time between blocks in minutes
- - **number_of_transactions**: Number of transactions
- - **hash_rate**: Hash rate in PH/s
- - **timestamp**: Timestamp
- - **mined_blocks**: Minded Blocks
- - **blocks_size**: Block size
- - **total_fees_btc**: Total fees in BTC
- - **total_btc_sent**: Total sent in BTC
- - **estimated_btc_sent**: Estimated sent in BTC
- - **total_btc**: Total of BTC
- - **total_blocks**: Total Blocks
- - **next_retarget**: Next retarget
- - **estimated_transaction_volume_usd**: Estimated transaction volume in BTC
- - **miners_revenue_btc**: Miners revenue in BTC
- - **market_price_usd**: Market price in USD
+{% configuration %}
+currency:
+ description: The currency to exchange to, eg. CHF, USD, EUR, etc.
+ required: false
+ type: string
+ default: USD
+display_options:
+ description: Options to display in the frontend.
+ required: true
+ type: map
+ keys:
+ exchangerate:
+ description: Exchange rate of 1 BTC
+ trade_volume_btc:
+ description: Trade volume
+ miners_revenue_usd:
+ description: Miners revenue
+ btc_mined:
+ description: BTC mined
+ trade_volume_usd:
+ description: Trade volume in USD
+ difficulty:
+ description: Difficulty
+ minutes_between_blocks:
+ description: Time between blocks in minutes
+ number_of_transactions:
+ description: Number of transactions
+ hash_rate:
+ description: Hash rate in PH/s
+ timestamp:
+ description: Timestamp
+ mined_blocks:
+ description: Minded Blocks
+ blocks_size:
+ description: Block size
+ total_fees_btc:
+ description: Total fees in BTC
+ total_btc_sent:
+ description: Total sent in BTC
+ estimated_btc_sent:
+ description: Estimated sent in BTC
+ total_btc:
+ description: Total of BTC
+ total_blocks:
+ description: Total Blocks
+ next_retarget:
+ description: Next retarget
+ estimated_transaction_volume_usd:
+ description: Estimated transaction volume in BTC
+ miners_revenue_btc:
+ description: Miners revenue in BTC
+ market_price_usd:
+ description: Market price in USD
+{% endconfiguration %}
diff --git a/source/_components/sensor.blockchain.markdown b/source/_components/sensor.blockchain.markdown
index 26e5b590eda..21da2883379 100644
--- a/source/_components/sensor.blockchain.markdown
+++ b/source/_components/sensor.blockchain.markdown
@@ -27,7 +27,10 @@ sensor:
- '183J5pXWqYYsxZ7inTVw9tEpejDXyMFroe'
```
-Configuration variables:
-
-- **addresses** (*Required*): List of bitcoin wallet addresses to watch.
+{% configuration %}
+addresses:
+ description: List of bitcoin wallet addresses to watch.
+ required: true
+ type: string, list
+{% endconfiguration %}
diff --git a/source/_components/sensor.coinmarketcap.markdown b/source/_components/sensor.coinmarketcap.markdown
index e8ab719c944..f0d20afb171 100644
--- a/source/_components/sensor.coinmarketcap.markdown
+++ b/source/_components/sensor.coinmarketcap.markdown
@@ -24,7 +24,18 @@ sensor:
- platform: coinmarketcap
```
-Configuration variables:
+{% configuration %}
+currency:
+ description: The cryptocurrency to use.
+ required: false
+ type: string, list
+ default: Bitcoin
+display_currency:
+ description: The currency to display.
+ required: false
+ type: string, list
+ default: USD
+{% endconfiguration %}
+
+All supported currencies can be found [here](https://coinmarketcap.com/api/).
-- **currency** (*Optional*): The cryptocurrency to use, eg. `bitcoin`, `litecoin`, `steem`, etc. Default is `bitcoin`.
-- **display_currency** (*Optional*): The currency to display, eg. `USD`, `EUR`, `GBP`, etc. Default is `USD`. All supported currencies can be found [here](https://coinmarketcap.com/api/).
diff --git a/source/_components/sensor.cups.markdown b/source/_components/sensor.cups.markdown
index 6ccaf7f3879..eb9f43e9dde 100644
--- a/source/_components/sensor.cups.markdown
+++ b/source/_components/sensor.cups.markdown
@@ -33,12 +33,22 @@ sensor:
- C430
```
-Configuration variables:
-
-- **printers** array (*Required*): List of printers to add.
-- **host** (*Optional*): IP address of the CUPS print server.
-- **port** (*Optional*): Port address of the CUPS print server. Defaults to 631.
-
+{% configuration %}
+printers:
+ description: List of printers to add.
+ required: true
+ type: list
+host:
+ description: IP address of the CUPS print server.
+ required: false
+ type: string
+ default: 127.0.0.1
+port:
+ description: Port of the CUPS print server.
+ required: false
+ type: int
+ default: 631
+{% endconfiguration %}
You will need to install the `python3-dev` or `python3-devel` and the development files for CUPS (`libcups2-dev` or`cups-devel`) package on your system manually (eg. `sudo apt-get install python3-dev libcups2-dev` or `sudo dnf -y install python3-devel cups-devel`) along with a compiler (`gcc`).
diff --git a/source/_components/sensor.currencylayer.markdown b/source/_components/sensor.currencylayer.markdown
index d26955ba01d..2c59a2a8b9b 100644
--- a/source/_components/sensor.currencylayer.markdown
+++ b/source/_components/sensor.currencylayer.markdown
@@ -31,8 +31,20 @@ sensor:
- INR
```
-Configuration variables:
+{% configuration %}
+api_key:
+ description: "The API Key from [Currencylayer](https://currencylayer.com/)."
+ required: true
+ type: string
+quote:
+ description: The symbol(s) of the quote or target currencies.
+ required: false
+ type: string, list
+ default: Exchange rate
+base:
+ description: The symbol of the base currency.
+ required: false
+ type: string
+ default: USD
+{% endconfiguration %}
-- **api_key** (*Required*): API Key from [Currencylayer](https://currencylayer.com/).
-- **base** (*Optional*): The symbol of the base currency. Defaults to USD.
-- **quote** (*Required*): The symbol(s) of the quote or target currencies.
diff --git a/source/_components/sensor.dsmr.markdown b/source/_components/sensor.dsmr.markdown
index 326057c7996..a83d5a8ac0e 100644
--- a/source/_components/sensor.dsmr.markdown
+++ b/source/_components/sensor.dsmr.markdown
@@ -107,6 +107,11 @@ Optional configuration example for ser2net:
# Example /etc/ser2net.conf for proxying USB/serial connections to DSMRv4 smart meters
2001:raw:600:/dev/ttyUSB0:115200 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS
```
+or
+```sh
+# Example /etc/ser2net.conf for proxying USB/serial connections to DSMRv2.2 smart meters
+2001:raw:600:/dev/ttyUSB0:9600 EVEN 1STOPBIT 7DATABITS XONXOFF LOCAL -RTSCTS
+```
[HASSbian](/getting-started/installation-raspberry-pi-image/) users have to give dialout permission to the user `homeassistant`:
diff --git a/source/_components/sensor.eliqonline.markdown b/source/_components/sensor.eliqonline.markdown
index cfa071e3079..7d8452595fc 100644
--- a/source/_components/sensor.eliqonline.markdown
+++ b/source/_components/sensor.eliqonline.markdown
@@ -28,7 +28,7 @@ sensor:
Configuration variables:
- **access_token** (*Required*): The Access Token for your account.
-- **channel_id** (*Optional*): Channel ID (as integer) of your device. Needed if you have more than one device.
+- **channel_id** (*Required*): Channel ID (as integer) of your device.
- **name** (*Optional*): The name of the sensor, eg. the city.
For details please check the [API documentation](https://my.eliq.se/knowledge/sv-SE/49-eliq-online/299-eliq-online-api).
diff --git a/source/_components/sensor.etherscan.markdown b/source/_components/sensor.etherscan.markdown
index 8200f531779..fcdc5387059 100644
--- a/source/_components/sensor.etherscan.markdown
+++ b/source/_components/sensor.etherscan.markdown
@@ -25,7 +25,15 @@ sensor:
address: '0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359'
```
-Configuration variables:
+{% configuration %}
+address:
+ description: Ethereum wallet address to watch.
+ required: true
+ type: string
+name:
+ description: The name of the sensor used in the frontend.
+ required: false
+ type: string
+ default: Ethereum Balance
+{% endconfiguration %}
-- **address** (*Required*): Ethereum wallet address to watch.
-- **name** (*Optional*): The name of the sensor used in the frontend.
diff --git a/source/_components/sensor.fail2ban.markdown b/source/_components/sensor.fail2ban.markdown
index c96b3109910..5fb8c141f4a 100644
--- a/source/_components/sensor.fail2ban.markdown
+++ b/source/_components/sensor.fail2ban.markdown
@@ -14,10 +14,10 @@ ha_release: 0.57
---
-The `fail2ban` sensor allows for IPs banned by [fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page) to be displayed in the Home Assistant front-end.
+The `fail2ban` sensor allows for IPs banned by [fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page) to be displayed in the Home Assistant frontend.
-Your system must have fail2ban installed and correctly configured for this sensor to work. In addition, Home Assistant must be able to read the fail2ban log file.
+Your system must have `fail2ban` installed and correctly configured for this sensor to work. In addition, Home Assistant must be able to read the `fail2ban` log file.
To enable this sensor, add the following lines to your `configuration.yaml`:
@@ -29,29 +29,38 @@ sensor:
jails:
- ssh
- hass-iptables
- file_path: /var/log/fail2ban.log
```
-Configuration variables:
-
-- **jails** (*Required*): List of configured jails you want to display (each jail is its own sensor).
-- **name** (*Optional*): Name of the sensor. Defaults to `fail2ban`.
-- **file_path** (*Optional*): Path to the fail2ban log. Defaults to `/var/log/fail2ban.log`.
-- **scan_interval** (*Optional*): Used to limit how often log file is read and must be a positive integer (representing number of seconds to wait). Defaults to 120.
+{% configuration %}
+jails:
+ description: List of configured jails you want to display.
+ required: true
+ type: list
+name:
+ description: Name of the sensor.
+ required: false
+ type: string
+ default: fail2ban
+file_path:
+ description: Path to the fail2ban log.
+ required: false
+ type: string
+ default: /var/log/fail2ban.log
+{% endconfiguration %}
### {% linkable_title Set up Fail2Ban %}
-For most set-ups, you can follow [this tutorial](https://home-assistant.io/cookbook/fail2ban/) to set up fail2ban on your system. It will walk you through creating jails and filters, allowing you to monitor IPs that have been banned for too many failed ssh login attempts, as well as too many failed Home Assistant log in attempts.
+For most setups, you can follow [this tutorial](/cookbook/fail2ban/) to set up `fail2ban` on your system. It will walk you through creating jails and filters, allowing you to monitor IP addresses that have been banned for too many failed SSH login attempts, as well as too many failed Home Assistant login attempts.
### {% linkable_title Fail2Ban with Docker %}
-These steps assume you already have the Home Assistant docker running behind nginx and that it is externally accessible. It also assumes the docker is running with the `--net='host'` flag.
+These steps assume you already have the Home Assistant docker running behind NGINX and that it is externally accessible. It also assumes the docker is running with the `--net='host'` flag.
-For those of us using Docker, the above tutorial may not be sufficient. The following steps specifically outline how to set up `fail2ban` and Home Assistant when running Home Assistant within a Docker behind nginx. The setup this was tested on was an unRAID server using the [let's encrypt docker](https://github.com/linuxserver/docker-letsencrypt) from linuxserver.io.
+For those of us using Docker, the above tutorial may not be sufficient. The following steps specifically outline how to set up `fail2ban` and Home Assistant when running Home Assistant within a Docker behind NGINX. The setup this was tested on was an unRAID server using the [let's encrypt docker](https://github.com/linuxserver/docker-letsencrypt) from linuxserver.io.
-#### Set http logger
+#### {% linkable_title Set http logger %}
In your `configuration.yaml` file, add the following to the `logger` component to ensure that Home Assistant prints failed login attempts to the log.
@@ -61,7 +70,7 @@ logger:
homeassistant.components.http.ban: warning
```
-#### Edit the `jail.local` file
+#### {% linkable_title Edit the `jail.local` file %}
Next, we need to edit the `jail.local` file that is included with the Let's Encrypt docker linked above. Note, for this tutorial, we'll only be implementing the `[hass-iptables]` jail from the [previously linked tutorial](https://home-assistant.io/cookbook/fail2ban/).
@@ -76,7 +85,7 @@ logpath = /hass/home-assistant.log
maxretry = 5
```
-#### Create a filter for the Home Assistant jail
+#### {% linkable_title Create a filter for the Home Assistant jail %}
Now we need to create a filter for `fail2ban` so that it can properly parse the log. This is done with a `failregex`. Create a file called `hass.local` within the `filter.d` directory in `/mnt/user/appdata/letsencrypt/fail2ban` and add the following:
@@ -93,7 +102,7 @@ ignoreregex =
datepattern = ^%%Y-%%m-%%d %%H:%%M:%%S
```
-#### Map log file directories
+#### {% linkable_title Map log file directories %}
First, we need to make sure that fail2ban log can be passed to Home Assistant and that the Home Assistant log can be passed to fail2ban. When starting the Let's Encrypt docker, you need to add the following argument (adjust paths based on your setup):
@@ -110,20 +119,20 @@ Now do the same for the Home Assistant docker, but this time we'll be mapping th
```
-#### Send client IP to Home Assistant
+#### {% linkable_title Send client IP to Home Assistant %}
By default, the IP address that Home Assistant sees will be that of the container (something like `172.17.0.16`). What this means is that for any failed login attempt, assuming you have correctly configured `fail2ban`, the Docker IP will be logged as banned, but the originating IP is still allowed to make attempts. We need `fail2ban` to recognize the originating IP to properly ban it.
First, we have to add the following to the nginx configuration file located in `/mnt/user/appdata/letsencrypt/nginx/site-confs/default`.
-```
+```bash
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
```
This snippet should be added within your Home Assistant server config, so you have something like the following:
-```
+```bash
server {
...
location / {
@@ -158,7 +167,7 @@ http:
At this point, once the Let's Encrypt and Home Assistant dockers are restarted, Home Assistant should be correctly logging the originating IP of any failed login attempt. Once that's done and verified, we can move onto the final step.
-#### Add the fail2ban sensor
+#### {% linkable_title Add the fail2ban sensor %}
Now that we've correctly set everything up for Docker, we can add our sensors to `configuration.yaml` with the following:
@@ -174,7 +183,7 @@ Assuming you've followed all of the steps, you should have one fail2ban sensor,
### {% linkable_title Other debug tips %}
-If, after following these steps, you're unable to get the fail2ban sensor working, here are some other steps you can take that may help:
+If, after following these steps, you're unable to get the `fail2ban` sensor working, here are some other steps you can take that may help:
- Add `logencoding = utf-8` to the `[hass-iptables]` entry
- Ensure the `failregex` you added to `filter.d/hass.local` matches the output within `home-assistant.log`
diff --git a/source/_components/sensor.fixer.markdown b/source/_components/sensor.fixer.markdown
index 3a555f2c254..220619cf301 100644
--- a/source/_components/sensor.fixer.markdown
+++ b/source/_components/sensor.fixer.markdown
@@ -27,9 +27,19 @@ sensor:
target: CHF
```
-Configuration variables:
-
-- **target** (*Required*): The symbol of the target currency.
-- **name** (*Optional*): Name to use in the frontend.
-- **base** (*Optional*): The symbol of the base currency. Default to USD
-
+{% configuration %}
+target:
+ description: The symbol of the target currency.
+ required: true
+ type: string
+name:
+ description: Name to use in the frontend.
+ required: false
+ type: string
+ default: Exchange rate
+base:
+ description: The symbol of the base currency.
+ required: false
+ type: string
+ default: USD
+{% endconfiguration %}
diff --git a/source/_components/sensor.fritzbox_netmonitor.markdown b/source/_components/sensor.fritzbox_netmonitor.markdown
index d6c8a3e9842..9842499a1ac 100644
--- a/source/_components/sensor.fritzbox_netmonitor.markdown
+++ b/source/_components/sensor.fritzbox_netmonitor.markdown
@@ -34,16 +34,18 @@ Configuration variables:
The following statistics will be exposed as attributes.
-|Attribute |Description |
-|:-----------------|:------------------------------------------------------------|
-|is_linked |True if the FritzBox is physically linked to the provider |
-|is_connected |True if the FritzBox has established an internet-connection |
-|wan_access_type |Connection-type, can be `DSL` or `Cable` |
-|external_ip |External ip address |
-|uptime |Uptime in seconds |
-|bytes_sent |Bytes sent |
-|bytes_received |Bytes received |
-|max_byte_rate_up |Maximum upstream-rate in bytes/s |
-|max_byte_rate_down|Maximum downstream-rate in bytes/s |
+|Attribute |Description |
+|:----------------------|:------------------------------------------------------------|
+|is_linked |True if the FritzBox is physically linked to the provider |
+|is_connected |True if the FritzBox has established an internet-connection |
+|wan_access_type |Connection-type, can be `DSL` or `Cable` |
+|external_ip |External ip address |
+|uptime |Uptime in seconds |
+|bytes_sent |Bytes sent |
+|bytes_received |Bytes received |
+|transmission_rate_up |Current upstream speed in bytes/s |
+|transmission_rate_down |Current downstream speed in bytes/s |
+|max_byte_rate_up |Maximum upstream-rate in bytes/s |
+|max_byte_rate_down |Maximum downstream-rate in bytes/s |
The sensor's state corresponds to the `is_linked` attribute and is either `online`, `offline`, or `unavailable` (in case connection to the router is lost).
diff --git a/source/_components/sensor.hive.markdown b/source/_components/sensor.hive.markdown
new file mode 100644
index 00000000000..3e7350e147c
--- /dev/null
+++ b/source/_components/sensor.hive.markdown
@@ -0,0 +1,24 @@
+---
+layout: page
+title: "Hive Sensor"
+description: "Instructions on how to integrate Hive Sensors with Home Assistant."
+date: 2017-09-24 21:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: hive.png
+ha_category: Sensor
+ha_release: 0.59
+ha_iot_class: "Cloud Polling"
+---
+
+
+The 'hive' sensor component can expose as a sensor the current online status of your Hive Hub.
+
+
+
+Full configuration details can be found on the main [Hive component](/components/hive/) page.
+
+
+
diff --git a/source/_components/sensor.lacrosse.markdown b/source/_components/sensor.lacrosse.markdown
index d024d174403..3dc7a9f842e 100644
--- a/source/_components/sensor.lacrosse.markdown
+++ b/source/_components/sensor.lacrosse.markdown
@@ -25,7 +25,7 @@ The `lacrosse` sensor platform is using the data provided by a [Jeelink](https:/
Since the sensor change their ID after each powercycle/battery change you can check what sensor IDs are availble by using the command-line tool `pylacrosse` from the pylacrosse package.
```bash
-$ sudo pylacrosse -D /dev/ttyUSB0 scan
+$ sudo pylacrosse -d /dev/ttyUSB0 scan
```
To use your `lacrosse` compatible sensor in your installation, add the following to your `configuration.yaml` file:
diff --git a/source/_components/sensor.modbus.markdown b/source/_components/sensor.modbus.markdown
index fd3b7157560..70cbfb494c2 100644
--- a/source/_components/sensor.modbus.markdown
+++ b/source/_components/sensor.modbus.markdown
@@ -49,13 +49,15 @@ Configuration variables:
- **name** (*Required*): Name of the sensor.
- **slave** (*Required*): The number of the slave (Optional for tcp and upd Modbus).
- **register** (*Required*): Register number.
- - **register_type** (*Optional*): Modbus register type (holding, input), default holding
+ - **register_type** (*Optional*): Modbus register type (holding, input), default holding.
- **unit_of_measurement** (*Optional*): Unit to attach to value.
- **count** (*Optional*): Number of registers to read.
- - **scale** (*Optional*): Scale factor (output = scale * value + offset), default 1
- - **offset** (*Optional*): Final offset (output = scale * value + offset), default 0
- - **precision** (*Optional*): Number of valid decimals, default 0
- - **data_type** (*Optional*): Response representation (int, float). If float selected, value will be converted to IEEE 754 floating point format. default int
+ - **reverse_order** (*Optional*): Reverse the order of registers when count >1, default False.
+ - **scale** (*Optional*): Scale factor (output = scale * value + offset), default 1.
+ - **offset** (*Optional*): Final offset (output = scale * value + offset), default 0.
+ - **precision** (*Optional*): Number of valid decimals, default 0.
+ - **data_type** (*Optional*): Response representation (int, uint, float, custom). If float selected, value will be converted to IEEE 754 floating point format. Default int.
+ - **structure** (*Optional*): If data_type is custom specify here a double quoted python struct format string to unpack the value. See python documentation for details. Ex: ">i".
It's possible to change the default 30 seconds scan interval for the sensor updates as shown in the [Platform options](/docs/configuration/platform_options/#scan-interval) documentation.
@@ -72,7 +74,6 @@ sensor:
slave: 10
register: 0
register_type: holding
- update_interval: 2.5
unit_of_measurement: °C
count: 1
scale: 0.1
diff --git a/source/_components/sensor.openexchangerates.markdown b/source/_components/sensor.openexchangerates.markdown
index 63e94b74a85..14340a44711 100644
--- a/source/_components/sensor.openexchangerates.markdown
+++ b/source/_components/sensor.openexchangerates.markdown
@@ -28,9 +28,24 @@ sensor:
quote: EUR
```
-Configuration variables:
+{% configuration %}
+name:
+ description: The name of the sensor.
+ required: false
+ type: string
+ default: Exchange Rate Sensor
+api_key:
+ description: "The API Key for [Open Exchange Rates](https://openexchangerates.org)."
+ required: true
+ type: string
+quote:
+ description: The symbol of the quote or target currency.
+ required: true
+ type: string
+base:
+ description: The symbol of the base currency.
+ required: false
+ type: string
+ default: USD
+{% endconfiguration %}
-- **api_key** (*Required*): API Key for [Open Exchange Rates](https://openexchangerates.org).
-- **quote** (*Required*): The symbol of the quote or target currency.
-- **name** (*Optional*): Name to use in the frontend.
-- **base** (*Optional*): The symbol of the base currency. Defaults to USD.
diff --git a/source/_components/sensor.pyload.markdown b/source/_components/sensor.pyload.markdown
index 4ad24e38938..c4d7611edb4 100644
--- a/source/_components/sensor.pyload.markdown
+++ b/source/_components/sensor.pyload.markdown
@@ -24,16 +24,41 @@ sensor:
- platform: pyload
```
-Configuration variables:
+{% configuration %}
+host:
+ description: This is the IP address of your pyLoad download manager.
+ required: false
+ type: string
+ default: localhost
+port:
+ description: The port your pyLoad interface uses.
+ required: false
+ type: int
+ default: 8000
+name:
+ description: The name to use when displaying this pyLoad instance.
+ required: false
+ type: string
+ default: 20
+username:
+ description: Your pyLoad username.
+ required: false
+ type: string
+password:
+ description: Your pyLoad password.
+ required: false
+ type: string
+ssl:
+ description: Enable SSL/TLS for the host.
+ required: false
+ type: boolean
+ default: false
+{% endconfiguration %}
-- **host** (*Optional*): This is the IP address of your pyLoad download manager, eg. 192.168.0.100. Defaults to `localhost`.
-- **port** (*Optional*): The port your pyLoad interface uses. Defaults to 8000.
-- **name** (*Optional*): The name to use when displaying this pyLoad instance.
-- **username** (*Optional*): Your pyLoad username.
-- **password** (*Optional*): Your pyLoad password.
If everything is setup correctly, the download speed will show up in the frontend.
+
diff --git a/source/_components/sensor.random.markdown b/source/_components/sensor.random.markdown
index ac61331913b..d550d4b88d0 100644
--- a/source/_components/sensor.random.markdown
+++ b/source/_components/sensor.random.markdown
@@ -24,12 +24,27 @@ sensor:
- platform: random
```
-Configuration variables:
-
-- **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `Random Sensor`.
-- **minimum** (*Optional*): Lower limit for the values. Defaults to `0`.
-- **maximum** (*Optional*): Upper limit for the values. Defaults to `20`.
-- **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any.
+{% configuration %}
+name:
+ description: Name to use in the frontend.
+ required: false
+ type: string
+ default: Random Sensor
+minimum:
+ description: Lower limit for the values.
+ required: false
+ type: string
+ default: 0
+maximum:
+ description: Upper limit for the values.
+ required: false
+ type: int
+ default: 20
+unit_of_measurement:
+ description: Defines the units of measurement of the sensor, if any.
+ required: false
+ type: string
+{% endconfiguration %}
See the [entity component options][entity-docs] to control how often the main component polls the random sensor. The default is 30 seconds.
diff --git a/source/_components/sensor.rest.markdown b/source/_components/sensor.rest.markdown
index 9f3da04c7ca..aa34b219058 100644
--- a/source/_components/sensor.rest.markdown
+++ b/source/_components/sensor.rest.markdown
@@ -49,6 +49,7 @@ Configuration variables:
- **username** (*Optional*): The username for accessing the REST endpoint.
- **password** (*Optional*): The password for accessing the REST endpoint.
- **headers** (*Optional*): The headers for the requests.
+- **json_attributes** (*Optional*): A list of keys to extract values from a JSON dictionary result and then set as sensor attributes. Default is an empty list.
Make sure that the URL exactly matches your endpoint or resource.
@@ -67,9 +68,7 @@ In this section you find some real life examples of how to use this sensor.
### {% linkable_title External IP address %}
-You can find your external IP address using the service [JSON Test](http://www.jsontest.com) at their http://ip.jsontest.com/ endpoint.
-
-To display the IP address, the entry for a sensor in the `configuration.yaml` file will look like this.
+You can find your external IP address using the service [JSON Test](http://www.jsontest.com) at their [http://ip.jsontest.com/](http://ip.jsontest.com/) URL.
```yaml
sensor:
@@ -83,8 +82,6 @@ sensor:
The [glances](/components/sensor.glances/) sensor is doing the exact same thing for all exposed values.
-Add something similar to the entry below to your `configuration.yaml` file:
-
```yaml
sensor:
- platform: rest
@@ -154,3 +151,63 @@ sensor:
User-Agent: Home Assistant REST sensor
```
+### {% linkable_title Fetch multiple JSON values and present them as attibutes %}
+
+[JSON Test](http://www.jsontest.com) returns the current time, date and milliseconds since epoch from [http://date.jsontest.com/](http://date.jsontest.com/).
+
+{% raw %}
+```yaml
+sensor:
+ - platform: rest
+ name: JSON time
+ json_attributes:
+ - date
+ - milliseconds_since_epoch
+ resource: http://date.jsontest.com/
+ value_template: '{{ value_json.time }}'
+ - platform: template
+ sensors:
+ date:
+ friendly_name: 'Date'
+ value_template: '{{ states.sensor.json_time.attributes["date"] }}'
+ milliseconds:
+ friendly_name: 'milliseconds'
+ value_template: '{{ states.sensor.json_time.attributes["milliseconds_since_epoch"] }}'
+```
+{% endraw %}
+
+This sample fetches a weather report from [OpenWeatherMap](http://openweathermap.org/), maps the resulting data into attributes of the RESTful sensor and then creates a set of [template](/components/sensor.template/) sensors that monitor the attributes and present the values in a usable form.
+
+{% raw %}
+```yaml
+sensor:
+ - platform: rest
+ name: OWM_report
+ json_attributes:
+ - main
+ - weather
+ value_template: '{{ value_json["weather"][0]["description"].title() }}'
+ resource: http://api.openweathermap.org/data/2.5/weather?zip=80302,us&APPID=VERYSECRETAPIKEY
+ - platform: template
+ sensors:
+ owm_weather:
+ value_template: '{{ states.sensor.owm_report.attributes.weather[0]["description"].title() }}'
+ icon_template: '{{ "http://openweathermap.org/img/w/"+states.sensor.owm_report.attributes.weather[0]["icon"]+".png" }}'
+ entity_id: sensor.owm_report
+ owm_temp:
+ friendly_name: 'Outside temp'
+ value_template: '{{ states.sensor.owm_report.attributes.main["temp"]-273.15 }}'
+ unit_of_measurement: "°C"
+ entity_id: sensor.owm_report
+ owm_pressure:
+ friendly_name: 'Outside pressure'
+ value_template: '{{ states.sensor.owm_report.attributes.main["pressure"] }}'
+ unit_of_measurement: "hP"
+ entity_id: sensor.owm_report
+ owm_humidity:
+ friendly_name: 'Outside humidity'
+ value_template: '{{ states.sensor.owm_report.attributes.main["humidity"] }}'
+ unit_of_measurement: "%"
+ entity_id: sensor.owm_report
+```
+{% endraw %}
diff --git a/source/_components/sensor.ripple.markdown b/source/_components/sensor.ripple.markdown
index 1db3abc0979..ad960c30e53 100644
--- a/source/_components/sensor.ripple.markdown
+++ b/source/_components/sensor.ripple.markdown
@@ -25,7 +25,15 @@ sensor:
address: 'r3kmLJN5D28dHuH8vZNUZpMC43pEHpaocV'
```
-Configuration variables:
+{% configuration %}
+address:
+ description: Ripple wallet address to watch.
+ required: true
+ type: string
+name:
+ description: Name for the sensor to use in the frontend.
+ required: false
+ type: string
+ default: Ripple Balance
+{% endconfiguration %}
-- **address** (*Required*): Ripple wallet address to watch
-- **name** (*Optional*): Name for the sensor to use in the frontend.
diff --git a/source/_components/sensor.sabnzbd.markdown b/source/_components/sensor.sabnzbd.markdown
index ffa7310c2e1..47680c4e1af 100644
--- a/source/_components/sensor.sabnzbd.markdown
+++ b/source/_components/sensor.sabnzbd.markdown
@@ -40,6 +40,7 @@ sensor:
- 'queue_remaining'
- 'disk_size'
- 'disk_free'
+ - 'queue_count'
```
Configuration variables:
@@ -56,6 +57,7 @@ Configuration variables:
- **queue_remaining**: Remaining elements in the queue
- **disk_size**: Disk size of the storage location
- **disk_free**: Free disk space at the storage location
+ - **queue_count**: Number of items in the queue
Note that this will create the following sensors:
@@ -66,6 +68,7 @@ Note that this will create the following sensors:
- sensor.sabnzbd_left
- sensor.sabnzbd_disk
- sensor.sabnzbd_disk_free
+ - sensor.sabnzdb_queue_count
```
As always, you can determine the names of sensors by looking at the dev-state page `< >` in the web interface.
diff --git a/source/_components/sensor.speedtest.markdown b/source/_components/sensor.speedtest.markdown
index d9c25821a8a..bc1e8bf9884 100644
--- a/source/_components/sensor.speedtest.markdown
+++ b/source/_components/sensor.speedtest.markdown
@@ -113,3 +113,5 @@ automation:
- When running on Raspberry Pi, just note that the maximum speed is limited by its 100 Mbit/s LAN adapter.
- Entries under `monitored_conditions` only control what entities are available under home-assistant, it does not disable the condition from running.
+- If ran frequently, this component has the capability of using a very large amount of data. Frequent updates should be avoided on bandwidth capped connections.
+- While running, network usage is fully utilized. This may have a negative affect on other devices in use the network such as gaming consoles or streaming boxes.
diff --git a/source/_components/sensor.systemmonitor.markdown b/source/_components/sensor.systemmonitor.markdown
index 283e302217f..0cc01b8ade6 100644
--- a/source/_components/sensor.systemmonitor.markdown
+++ b/source/_components/sensor.systemmonitor.markdown
@@ -67,6 +67,7 @@ The table contains types and their argument to use in your `configuration.yaml`
| memory_free | sensor.ram_available |
| memory_use_percent | sensor.ram_used |
| processor_use | sensor.cpu_used |
+| disk_use | sensor.disk_used |
## {% linkable_title Linux specific %}
diff --git a/source/_components/sensor.tahoma.markdown b/source/_components/sensor.tahoma.markdown
new file mode 100644
index 00000000000..80cf6bc4ebb
--- /dev/null
+++ b/source/_components/sensor.tahoma.markdown
@@ -0,0 +1,21 @@
+---
+layout: page
+title: "Tahoma Sensor"
+description: "Instructions how to integrate Tahoma sensors into Home Assistant."
+date: 2017-07-18 12:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: tahoma.png
+ha_category: Cover
+ha_release: 0.59
+---
+
+To use your tahoma sensors in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yml entry
+sensor:
+ platform: tahoma
+```
diff --git a/source/_components/sensor.thethingsnetwork.markdown b/source/_components/sensor.thethingsnetwork.markdown
index 76870e368ec..6dac17958f2 100644
--- a/source/_components/sensor.thethingsnetwork.markdown
+++ b/source/_components/sensor.thethingsnetwork.markdown
@@ -62,7 +62,7 @@ sensor:
- platform: thethingsnetwork
device_id: ha-demo
values:
- sensor_value: unit of measurment
+ sensor_value: unit of measurement
voltage: V
```
diff --git a/source/_components/sensor.viaggiatreno.markdown b/source/_components/sensor.viaggiatreno.markdown
new file mode 100644
index 00000000000..d8ad4e16a00
--- /dev/null
+++ b/source/_components/sensor.viaggiatreno.markdown
@@ -0,0 +1,62 @@
+---
+layout: page
+title: "ViaggiaTreno Italian Railroads"
+description: "Instructions on how to integrate Italian Railroads data (from ViaggiaTreno API) into Home Assistant."
+date: 2017-11-07 14:35
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: train.png
+ha_category: Transport
+ha_iot_class: "Cloud Polling"
+ha_release: 0.58
+---
+
+The `viaggiatreno` sensor will give you information about configured train ids and stations using the public [ViaggiaTreno](http://viaggiatreno.it) API.
+
+To activate the sensor you need at least two parameters: the `train_id` and the `station_id`.
+
+The first is available just looking at the [ViaggiaTreno](http://viaggiatreno.it/) timetable, the latter can be obtained using the dedicated API endpoint:
+`http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/autocompletaStazione/`
+(e.g., `http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/autocompletaStazione/ROMA` will list all station names (with ids) that starts with *ROMA*).
+
+
+Note that the `station_id` is referred to the train's **departing station**. If a train number does not match with the station id, no data will be returned to the sensor.
+
+
+Then add the data to your `configuration.yaml` file as shown in the example:
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: viaggiatreno
+ train_id: 12279
+ station_id: S08409
+```
+
+{% configuration %}
+train_id:
+ description: The ID of the train.
+ required: true
+ type: int
+station_id:
+ description: The ID of the starting station.
+ required: true
+ type: int
+train_name:
+ description: The name of the sensor. Defaults to 'Train from '.
+ required: false
+ type: string
+{% endconfiguration %}
+
+
+In a future implementation, the station name could be used to automatically search best-matching station id, without the need to specify it.
+
+
+The public timetables are coming from [ViaggiaTreno](http://viaggiatreno.it).
+
+
+Instructions (in Italian) for the API are available at:
+https://github.com/bluviolin/TrainMonitor/wiki/API-del-sistema-Viaggiatreno
+
+ This sensor doesn't work anymore as [Yahoo!](https://yahoo.uservoice.com/forums/382977-finance/suggestions/32103877-yahoo-stock-quote-api-please-bring-back) decommissioned the service in early November 2017. A repleacement is the [`alpha_vantage` sensor](/components/sensor.alpha_vantage/).
+
+
The `yahoo_finance` platform uses [Yahoo Finance](https://finance.yahoo.com/) to monitor the stock market.
To enable the `yahoo_finance` platform, add the following lines to your `configuration.yaml` file:
@@ -24,10 +28,18 @@ sensor:
- platform: yahoo_finance
```
-Configuration variables:
-
-- **name** (*Optional*): The name of the sensor. If not specified, it defaults to *Yahoo Stock*.
-- **symbols** array (*Optional*): List of stock market symbols for given companies. If not specified, it defaults to *Yahoo (YHOO)*.
+{% configuration %}
+name:
+ description: The name of the sensor.
+ required: false
+ type: string
+ default: Yahoo Stock
+symbols:
+ description: List of stock market symbols for given companies.
+ required: false
+ type: string, list
+ default: YHOO
+{% endconfiguration %}
## {% linkable_title Examples %}
diff --git a/source/_components/skybell.markdown b/source/_components/skybell.markdown
index b160a879231..4a7a2cfdac6 100644
--- a/source/_components/skybell.markdown
+++ b/source/_components/skybell.markdown
@@ -13,11 +13,11 @@ ha_release: 0.56
ha_iot_class: "Cloud Polling"
---
-The `skybell` implementation allows you to integrate your [Skybell.com](https://skybell.com) doorbells in Home Assistant.
+The `skybell` implementation allows you to integrate your [Skybell.com](http://www.skybell.com/) doorbells in Home Assistant.
Currently only the Skybell HD is supported by this platform.
-To enable devices set up with your [Skybell.com](https://skybell.com/) account, add the following to your `configuration.yaml` file:
+To enable devices set up with your [Skybell.com](http://www.skybell.com/) account, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
@@ -26,9 +26,15 @@ skybell:
password: secret
```
-Configuration variables:
-
-- **username** (*Required*): The username for accessing your Skybell account.
-- **password** (*Required*): The password for accessing your Skybell account.
+{% configuration %}
+username:
+ description: The username for accessing your Skybell account.
+ required: true
+ type: string
+password:
+ description: The password for accessing your Skybell account.
+ required: true
+ type: string
+{% endconfiguration %}
Finish your configuration by visiting the [Skybell binary sensor](/components/binary_sensor.skybell/), [Skybell camera](/components/camera.skybell/), [Skybell light](/components/light.skybell/), [Skybell sensor](/components/sensor.skybell/), or [Skybell switch](/components/switch.skybell/) documentation.
diff --git a/source/_components/switch.ads.markdown b/source/_components/switch.ads.markdown
new file mode 100644
index 00000000000..28396413292
--- /dev/null
+++ b/source/_components/switch.ads.markdown
@@ -0,0 +1,37 @@
+---
+layout: page
+title: "ADS Switch"
+description: "Instructions on how to set up ADS switches within Home Assistant."
+date: 2017-10-25 10:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: beckhoff.png
+ha_category: Switch
+ha_release: "0.60"
+ha_iot_class: "Local Push"
+---
+
+The `ads` switch platform accesses a boolean variable on the connected ADS device. The variable is identified by its name.
+
+To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml`
+file:
+
+```yaml
+# Example configuration.yaml entry
+switch:
+ - platform: ads
+ adsvar: .global_bool
+```
+
+{% configuration %}
+ adsvar:
+ required: true
+ description: The name of the variable which you want to access on the ADS device.
+ type: string
+ name:
+ required: false
+ description: An identifier for the switch in the frontend.
+ type: string
+{% endconfiguration %}
diff --git a/source/_components/switch.digital_ocean.markdown b/source/_components/switch.digital_ocean.markdown
index 7eb640197d1..e17a74ab35c 100644
--- a/source/_components/switch.digital_ocean.markdown
+++ b/source/_components/switch.digital_ocean.markdown
@@ -26,7 +26,10 @@ switch:
- 'coreos-512mb-nyc3-01'
```
-Configuration variables:
-
-- **droplets** (*Required*): List of droplets you want to control.
+{% configuration %}
+droplets:
+ description: List of droplets you want to control.
+ required: true
+ type: list
+{% endconfiguration %}
diff --git a/source/_components/switch.flux.markdown b/source/_components/switch.flux.markdown
index d53a0714ff6..69d3e8671e2 100644
--- a/source/_components/switch.flux.markdown
+++ b/source/_components/switch.flux.markdown
@@ -16,9 +16,9 @@ The `flux` switch platform will change the temperature of your lights similar to
The component will update your lights based on the time of day. It will only affect lights that are turned on and listed in the flux configuration.
-During the day (in between `start time` and `sunset time`), it will fade the lights from the `start_colortemp` to the `sunset_colortemp`. After sunset (between `sunset_time` and `stop_time`), the lights will fade from the `sunset_colortemp` to the `stop_colortemp`. If the lights are still on after the `stop_time` it will continue to change the light to the `stop_colortemp` until the light is turned off. The fade effect is created by updating the lights every 30 seconds with a 30 second transition time.
+During the day (in between `start time` and `sunset time`), it will fade the lights from the `start_colortemp` to the `sunset_colortemp`. After sunset (between `sunset_time` and `stop_time`), the lights will fade from the `sunset_colortemp` to the `stop_colortemp`. If the lights are still on after the `stop_time` it will continue to change the light to the `stop_colortemp` until the light is turned off. The fade effect is created by updating the lights every periodically.
-If you don't wish to have flux update on 30 second intervals, you can leave the switch turned off and use automation rules that call the service `switch._update` whenever you want the lights updated, where `` equals the `name:` property in the switch configuration.
+If you want to update at variable intervals, you can leave the switch turned off and use automation rules that call the service `switch._update` whenever you want the lights updated, where `` equals the `name:` property in the switch configuration.
To use the Flux switch in your installation, add the following to your `configuration.yaml` file:
@@ -43,6 +43,8 @@ Configuration variables:
- **brightness** (*Optional*): The brightness of the lights. Calculated with `RGB_to_xy` by default.
- **disable_brightness_adjust** (*Optional*): If true, brightness will not be adjusted besides color temperature. Defaults to False.
- **mode** (*Optional*): Select how color temperature is passed to lights. Valid values are `xy`, `mired` and `rgb`. Defaults to `xy`.
+- **transition** (*Optional*): Transition time for the light changes (high values may not be supported by all light models). Defaults to 30.
+- **interval** (*Optional*): Frequency at which the lights should be updated. Defaults to 30.
Full example:
@@ -62,5 +64,7 @@ switch:
brightness: 200
disable_brightness_adjust: True
mode: xy
+ transition: 30
+ interval: 60
```
diff --git a/source/_components/switch.hikvision.markdown b/source/_components/switch.hikvisioncam.markdown
similarity index 100%
rename from source/_components/switch.hikvision.markdown
rename to source/_components/switch.hikvisioncam.markdown
diff --git a/source/_components/switch.hive.markdown b/source/_components/switch.hive.markdown
new file mode 100644
index 00000000000..8f7d8677221
--- /dev/null
+++ b/source/_components/switch.hive.markdown
@@ -0,0 +1,27 @@
+---
+layout: page
+title: "Hive Switch"
+description: "Instructions on how to integrate Hive Plugs with Home Assistant."
+date: 2017-09-24 21:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: hive.png
+ha_category: Switch
+ha_release: 0.59
+ha_iot_class: "Cloud Polling"
+---
+
+
+The 'hive' switch component integrates your Hive plugs into Home Assistant, enabling control of your devices.
+
+The Hive switch component supports the following Hive products:
+- **Hive Active Plug**
+
+
+
+Full configuration details can be found on the main [Hive component](/components/hive/) page.
+
+
+
diff --git a/source/_components/switch.modbus.markdown b/source/_components/switch.modbus.markdown
index d664731534e..bac21bbd812 100644
--- a/source/_components/switch.modbus.markdown
+++ b/source/_components/switch.modbus.markdown
@@ -14,7 +14,7 @@ ha_iot_class: "Local Push"
---
-The `modbus` switch platform allows you to control [Modbus](http://www.modbus.org/) coils.
+The `modbus` switch platform allows you to control [Modbus](http://www.modbus.org/) coils or registers.
To use your Modbus switches in your installation, add the following to your `configuration.yaml` file:
@@ -30,11 +30,28 @@ switch:
- name: Switch2
slave: 2
coil: 14
+ registers:
+ - name: Register1
+ slave: 1
+ register: 11
+ command_on: 1
+ command_off: 0
```
Configuration variables:
-- **coils** (*Optional*): A list of relevant coils to read from/write to
+- **coils** (*Optional*): A list of relevant coils to read from/write to.
- **slave** (*Required*): The number of the slave (can be omitted for tcp and udp Modbus).
- - **name** (*Required*): Name of the sensor
- - **coil** (*Required*): Coil number
+ - **name** (*Required*): Name of the switch.
+ - **coil** (*Required*): Coil number.
+- **registers** (*Optional*): A list of relevant registers to read from/write to.
+ - **slave** (*Required*): The number of the slave (can be omitted for tcp and udp Modbus).
+ - **name** (*Required*): Name of the switch.
+ - **register** (*Required*): Register number.
+ - **command_on** (*Required*): Value to write to turn on the switch.
+ - **command_off** (*Required*): Value to write to turn off the switch.
+ - **verify_state** (*Optional*): Define if is possible to readback the status of the switch. (default: True)
+ - **verify_register** (*Optional*): Register to readback. (default: same as register)
+ - **register_type** (*Optional*): Modbus register type: holding or input. (default: holding)
+ - **state_on** (*Optional*): Register value when switch is on. (default: same as command_on)
+ - **state_off** (*Optional*): Register value when switch is off. (default: same as command_off)
diff --git a/source/_components/switch.mystrom.markdown b/source/_components/switch.mystrom.markdown
index a9a4e3d7b0c..6fafcbbb783 100644
--- a/source/_components/switch.mystrom.markdown
+++ b/source/_components/switch.mystrom.markdown
@@ -25,10 +25,17 @@ switch:
host: IP_ADRRESS
```
-Configuration variables:
-
-- **host** (*Required*): The IP address of your myStrom switch, eg. `http://192.168.1.32`.
-- **name** (*Optional*): The name to use when displaying this switch.
+{% configuration %}
+host:
+ description: "The IP address of your myStrom switch, e.g., `http://192.168.1.32`."
+ required: true
+ type: string
+name:
+ description: The name to use when displaying this switch.
+ required: false
+ type: string
+ default: myStrom Switch
+{% endconfiguration %}
Check if you are able to access the device located at `http://IP_ADRRESS`. The details about your switch is provided as a JSON response.
@@ -46,3 +53,20 @@ or change its state:
$ curl -G -X GET http://IP_ADDRESS/relay -d 'state=1'
```
+### {% linkable_title Get the current power consumption %}
+
+The switch is measuring the current power consumption. To expose this as a sensor use a [`template` sensor](/components/sensor.template/).
+
+{% raw %}
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: template
+ sensors:
+ power:
+ friendly_name: "Current Power"
+ unit_of_measurement: "W"
+ value_template: "{{ states.switch.office.attributes.current_power_w }}"
+```
+{% endraw %}
+
diff --git a/source/_components/switch.rainbird.markdown b/source/_components/switch.rainbird.markdown
index 44134393a61..5a8598c3021 100644
--- a/source/_components/switch.rainbird.markdown
+++ b/source/_components/switch.rainbird.markdown
@@ -1,46 +1,46 @@
----
-layout: page
-title: "Rain Bird Switch"
-description: "Instructions on how to integrate your Rain Bird LNK WiFi Module as Switches within Home Assistant."
-date: 2017-08-25 12:00
-sidebar: true
-comments: false
-sharing: true
-footer: true
-logo: rainbird.png
-ha_category: Hub
-ha_release: 0.57
-ha_iot_class: "Local Polling"
----
-
-This `rainbird` switch platform allows interacting with [LNK WiFi](http://www.rainbird.com/landscape/products/controllers/LNK-WiFi.htm) module of the Rain Bird Irrigation system in Home Assistant.
-
-To enable stations as switches inside Home Assistant, add the following to your `configuration.yaml` file:
-
-```yaml
-switch:
- platform: rainbird
- host: '1.1.1.1'
- password: 'secretpassword'
- sprinkler_1:
- zone: 1
- friendly_name: "Front sprinklers"
- trigger_time: 20
- scan_interval: 10
- sprinkler_2:
- friendly_name: "Back sprinklers"
- zone: 2
- trigger_time: 20
- scan_interval: 10
-```
-
-Configuration variables:
-
-- **stickip** (*Required*): The IP address of your LNK WiFi Module.
-- **password** (*Required*): The password for accessing the module.
-- **zone** (*Required*): Station zone identifier.
-- **friendly_name** (*Optional*): Just a friendly name for the station.
-- **trigger_time** (*Required*): The default duration to sprinkle the zone.
-- **scan_interval** (*Optional*): How fast to refresh the switch.
-
-Please note that due to the implementation of the API within the LNK Module, there is a concurrency issue. For example, the Rain Bird app will give connection issues (like already a connection active).
+---
+layout: page
+title: "Rain Bird Switch"
+description: "Instructions on how to integrate your Rain Bird LNK WiFi Module as Switches within Home Assistant."
+date: 2017-08-25 12:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: rainbird.png
+ha_category: Hub
+ha_release: 0.57
+ha_iot_class: "Local Polling"
+---
+
+This `rainbird` switch platform allows interacting with [LNK WiFi](http://www.rainbird.com/landscape/products/controllers/LNK-WiFi.htm) module of the Rain Bird Irrigation system in Home Assistant.
+
+To enable stations as switches inside Home Assistant, add the following to your `configuration.yaml` file:
+
+```yaml
+switch:
+ platform: rainbird
+ host: '1.1.1.1'
+ password: 'secretpassword'
+ sprinkler_1:
+ zone: 1
+ friendly_name: "Front sprinklers"
+ trigger_time: 20
+ scan_interval: 10
+ sprinkler_2:
+ friendly_name: "Back sprinklers"
+ zone: 2
+ trigger_time: 20
+ scan_interval: 10
+```
+
+Configuration variables:
+
+- **stickip** (*Required*): The IP address of your LNK WiFi Module.
+- **password** (*Required*): The password for accessing the module.
+- **zone** (*Required*): Station zone identifier.
+- **friendly_name** (*Optional*): Just a friendly name for the station.
+- **trigger_time** (*Required*): The default duration to sprinkle the zone.
+- **scan_interval** (*Optional*): How fast to refresh the switch.
+
+Please note that due to the implementation of the API within the LNK Module, there is a concurrency issue. For example, the Rain Bird app will give connection issues (like already a connection active).
diff --git a/source/_components/switch.rfxtrx.markdown b/source/_components/switch.rfxtrx.markdown
index 73902df97f2..434a4c45639 100644
--- a/source/_components/switch.rfxtrx.markdown
+++ b/source/_components/switch.rfxtrx.markdown
@@ -51,7 +51,7 @@ Configuration variables:
- **fire_event** (*Optional*): Fires an event even if the state is the same as before, for example a doorbell switch. Can also be used for automations.
-This component and the [rfxtrx binary sensor](/components/binary_sensor/rfxtrx/) can steal each other's devices when setting the `automatic_add` configuration parameter to `true`. Set `automatic_add` only when you have some devices to add to your installation, otherwise leave it to `False`.
+This component and the [rfxtrx binary sensor](/components/binary_sensor.rfxtrx/) can steal each other's devices when setting the `automatic_add` configuration parameter to `true`. Set `automatic_add` only when you have some devices to add to your installation, otherwise leave it to `False`.
diff --git a/source/_components/system_log.markdown b/source/_components/system_log.markdown
new file mode 100644
index 00000000000..fae6692223e
--- /dev/null
+++ b/source/_components/system_log.markdown
@@ -0,0 +1,37 @@
+---
+layout: page
+title: "System Log"
+description: "Summary of errors and warnings in Home Assistant during runtime."
+date: 2017-11-11 18:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: home-assistant.png
+ha_category: Other
+ha_release: 0.58
+---
+
+The `system_log` component stores information about all logged errors and warnings in Home Assistant. All collected information is accessible directly in the frontend, just navigate to the `Info` section under `Developer Tools`. In order to not overload Home Assistant with log data, only the 50 last errors and warnings will be stored. Older entries are automatically discarded from the log. It is possible to change the amount of stored log entries using the parameter `max_entries`.
+
+This component is automatically loaded by the `frontend` (so no need to do anything if you are using the frontend). If you are not doing so, or if you wish to change a parameter, add the following section to your `configuration.yaml` file:
+
+```yaml
+system_log:
+ max_entries: MAX_ENTRIES
+```
+
+{% configuration %}
+max_entries:
+ description: Number of entries to store (older entries are discarded).
+ required: false
+ type: int
+ default: 50
+{% endconfiguration %}
+
+## {% linkable_title Services %}
+
+### {% linkable_title Service `clear` %}
+
+To manually clear the system log, call this service.
+
diff --git a/source/_components/tahoma.markdown b/source/_components/tahoma.markdown
new file mode 100644
index 00000000000..e6e272d8b48
--- /dev/null
+++ b/source/_components/tahoma.markdown
@@ -0,0 +1,41 @@
+---
+layout: page
+title: "Tahoma"
+description: "Instructions on how to integrate Somfy Tahoma devices with Home Assistant."
+date: 2017-07-18 12:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: tahoma.png
+ha_category: Hub
+ha_release: 0.59
+---
+
+
+The `Tahoma` component platform is used as an interface to the [tahomalink.com](https://www.tahomalink.com) website. It adds actually covers and the sun sensor from tahoma platform.
+
+To use your Tahoma devices in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+tahoma:
+ username: YOUR_USERNAME
+ password: YOUR_PASSWORD
+ exclude: [BridgeHUEComponent, HueLampHUEComponent, PodComponent]
+```
+
+{% configuration %}
+username:
+ description: Username for tahomalink.com
+ required: true
+ type: string
+password:
+ description: Password for tahomalink.com
+ required: true
+ type: string
+exclude:
+ description: Excludes devices
+ required: false
+ type: list
+{% endconfiguration %}
\ No newline at end of file
diff --git a/source/_components/telegram_bot.markdown b/source/_components/telegram_bot.markdown
index c4d93c43bc5..be2dcff5e5c 100644
--- a/source/_components/telegram_bot.markdown
+++ b/source/_components/telegram_bot.markdown
@@ -52,6 +52,23 @@ Send a photo.
| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` |
| `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` |
+
+#### {% linkable_title Service `telegram_bot/send_video` %}
+Send a video.
+
+| Service data attribute | Optional | Description |
+|---------------------------|----------|--------------------------------------------------|
+| `url` | no | Remote path to a video. |
+| `file` | no | Local path to a video. |
+| `caption` | yes | The title of the video. |
+| `username` | yes | Username for a URL which requires HTTP basic authentication. |
+| `password` | yes | Password for a URL which requires HTTP basic authentication. |
+| `authentication` | yes | Define which authentication method to use. Set to `digest` to use HTTP digest authentication. Defaults to `basic`. |
+| `target` | yes | An array of pre-authorized chat_ids to send the notification to. Defaults to the first allowed chat_id. |
+| `disable_notification` | yes | True/false to send the message silently. iOS users and web users will not receive a notification. Android users will receive a notification with no sound. Defaults to False. |
+| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` |
+| `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` |
+
#### {% linkable_title Service `telegram_bot/send_document` %}
Send a document.
diff --git a/source/_components/tellduslive.markdown b/source/_components/tellduslive.markdown
index f273af65e74..a93431825d2 100644
--- a/source/_components/tellduslive.markdown
+++ b/source/_components/tellduslive.markdown
@@ -13,25 +13,18 @@ featured: false
ha_release: 0.11
---
-The `tellduslive` component let you connect to [Telldus Live](https://live.telldus.com). It's cloud platform that connects to your Tellstick connected gear at home.
+The `tellduslive` component let you connect to [Telldus Live](https://live.telldus.com). It's cloud platform that connects to your Tellstick Net or Tellstick ZNet connected gear at home.
-To get started using Telldus Live, you will have to obtain developer keys from the [developer page](https://api.telldus.com/keys/index).
-
-To integrate your Telldus Live with Home Assistant, add the following section to your `configuration.yaml` file:
+Home Assistant will automatically discover the presence of a Tellstick Net or Tellstick ZNet on your local network if the [discovery]({{site_root}}/components/discovery/) component is enabled. To manually integrate your Telldus Live with Home Assistant, e.g. if your device is on another network or in another location, add the following section to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
tellduslive:
- public_key: ABCDEFGHJKLMNOPQRSTUVXYZ
- private_key: ABCDEFGHJKLMNOPQRSTUVXYZ
- token: ABCDEFGHJKLMNOPQRSTUVXYZ
- token_secret: ABCDEFGHJKLMNOPQRSTUVXYZ
```
Configuration variables:
-- **public_key** (*Required*): The public key for the Telldus Live service.
-- **private_key** (*Required*): The private key for the Telldus Live service.
-- **token** (*Required*): The token for the Telldus Live service.
-- **token_secret** (*Required*): The token secret for the Telldus Live service.
+- **host** (*Optional*): Host address to Tellstick Net or Tellstick ZNet for Local API, only useful when automatic discovery is not enabled.
+- **update_interval** (*Optional*): Interval (in seconds) for polling the Telldus Live server (or the local server).
+The component will offer configuration through the Home Assistant user interface where it will let you associate it with your Telldus Live account.
diff --git a/source/_components/timer.markdown b/source/_components/timer.markdown
index c3e35ab8fbe..505aeacdb22 100644
--- a/source/_components/timer.markdown
+++ b/source/_components/timer.markdown
@@ -14,7 +14,7 @@ ha_release: 0.57
The `timer` component aims to simplify automations based on (dynamic) durations.
-When a timer finishes or gets cancelled the corresponding events are fired. This allows you to diffferentiate if a timer has switched from `active` to `idle` because the given duration has elapsed or it has been cancelled. To control timers in your automations you can use the services mentioned below. When calling the `start` service on a timer that is already running, it resets the duration it will need to finish and restart the timer without triggering any events. This for example makes it easy to create timed lights that get triggered by motion.
+When a timer finishes or gets cancelled the corresponding events are fired. This allows you to differentiate if a timer has switched from `active` to `idle` because the given duration has elapsed or it has been cancelled. To control timers in your automations you can use the services mentioned below. When calling the `start` service on a timer that is already running, it resets the duration it will need to finish and restart the timer without triggering any events. This for example makes it easy to create timed lights that get triggered by motion.
With the current implementation timers don't persist over restarts. After a restart they will be idle again, together with their initial configuration.
@@ -92,3 +92,42 @@ Select
Do not use the `api_key` variable. The key is only needed once at initial setup.
+
+
+
+Please make sure you have `autoconf` installed (`apt-get install autoconf`) if you want to use this component. Also, installing some dependencies might take considerable time (>1h) on slow devices. You might have to use `sudo` when installing `autoconf`.
+
+
diff --git a/source/_components/tts.baidu.markdown b/source/_components/tts.baidu.markdown
new file mode 100644
index 00000000000..e8499742fd8
--- /dev/null
+++ b/source/_components/tts.baidu.markdown
@@ -0,0 +1,62 @@
+---
+layout: page
+title: "Baidu Text-to-Speech"
+description: "Instructions how to setup Baidu TTS with Home Assistant."
+date: 2017-11-21 09:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: baiducloud.png
+ha_category: Text-to-speech
+ha_release: 0.59
+---
+
+The `baidu` text-to-speech platform uses [Baidu TTS engine](https://cloud.baidu.com/product/speech/tts) to read a text with natural sounding voices.
+
+To get started, add the following lines to your `configuration.yaml`:
+
+```yaml
+#Example configuration.yaml entry
+tts:
+ - platform: baidu
+ app_id: YOUR_APPID
+ api_key: YOUR_APIKEY
+ secret_key: YOUR_SECRETKEY
+```
+
+{% configuration %}
+app_id:
+ description: The App ID for the use this service, must be already registered on Baidu.
+ required: true
+ type: string
+api_key:
+ description: The API key from Baidu.
+ required: true
+ type: string
+secret_key:
+ description: The secret key from Baidu.
+ required: true
+ type: string
+speed:
+ description: Audio speed from 0 to 9.
+ required: false
+ type: int
+ default: 5
+pitch:
+ description: Audio pitch from 0 to 9.
+ required: false
+ type: int
+ default: 5
+volume:
+ description: Audio volume from 0 to 15.
+ required: false
+ type: int
+ default: 5
+person:
+ description: Voice type. You choose one from 0, 1, 3 or 4.
+ required: false
+ type: int
+ default: 0
+{% endconfiguration %}
+
diff --git a/source/_components/tts.microsoft.markdown b/source/_components/tts.microsoft.markdown
index b55acbd0fac..dd0c6e419bf 100644
--- a/source/_components/tts.microsoft.markdown
+++ b/source/_components/tts.microsoft.markdown
@@ -2,7 +2,7 @@
layout: page
title: "Microsoft Text-to-Speech"
description: "Instructions how to setup Microsoft Text-to-Speech with Home Assistant."
-date: 2017-10-23 11:00
+date: 2017-11-07 12:00
sidebar: true
comments: false
sharing: true
@@ -27,10 +27,13 @@ tts:
Configuration variables:
- **api_key** (*Required*): Your API key.
-- **language** (*Optional*): The language to use. Defaults to `en-us`. Accepted values are listed in the documentation mentioned below.
+- **language** (*Optional*): The language to use. Defaults to `en-us`. Accepted values are listed in the documentation mentioned below. Note that if you set the language to anything other than the default of `en-us`, you will need to specify a matching voice type as well.
- **gender** (*Optional*): The gender you would like to use for the voice. Accepted values are `Female` and `Male`. Defaults to `Female`
- **type** (*Optional*): The voice type you want to use. Accepted values are listed in the service name mapping [in the documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/Speech/api-reference-rest/bingvoiceoutput). Defaults to `ZiraRUS`
-
+- **rate** (*Optional*): Change the rate of speaking. Example values: `-25%`, `+50%`. Defaults to `+0%` (no change)
+- **volume** (*Optional*): Change the volume of the output. Example values: `-20%`, `+70%`. Defaults to `+0%` (no change)
+- **pitch** (*Optional*): Change the pitch of the output. Example values: `high`. Defaults to `default` (no change)
+- **contour** (*Optional*): Change the contour of the output. This overrides the pitch setting. See the [W3 SSML specification](http://www.w3.org/TR/speech-synthesis/#pitch_contour) for what it does. Example value: `(0%,+0%) (100%,+100%)`
A full configuration sample including optional configuration variables:
@@ -39,7 +42,11 @@ A full configuration sample including optional configuration variables:
tts:
- platform: microsoft
api_key: XXXXXXXXX
- language: en-us
- gender: male
- type: BenjaminRUS
+ language: en-gb
+ gender: Male
+ type: George, Apollo
+ rate: +20%
+ volume: -50%
+ pitch: high
+ contour: (0%, +0%) (100%, +100%)
```
diff --git a/source/_components/updater.markdown b/source/_components/updater.markdown
index 86991b94d52..4a5b9777b35 100644
--- a/source/_components/updater.markdown
+++ b/source/_components/updater.markdown
@@ -11,7 +11,7 @@ logo: home-assistant.png
ha_category: Other
---
-The `updater` component will check daily for new releases. It will show a badge in the frontend if a new version is found.
+The `updater` component will check daily for new releases. It will show a badge in the frontend if a new version is found. As [Hass.io](/hassio/) has it's own schedule for release it doesn't make sense to use this component on Hass.io.
The updater component will also collect basic information about the running Home Assistant instance and its environment. The information includes the current Home Assistant version, the time zone, Python version and operating system information. No identifiable information (i.e., IP address, GPS coordinates, etc.) will ever be collected. If you are concerned about your privacy, you are welcome to scrutinize the Python [source code](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/updater.py#L91). For further information about the Updater's data, please check the [detailed overview](/docs/backend/updater/).
diff --git a/source/_components/vacuum.markdown b/source/_components/vacuum.markdown
index 0428eef3e7d..51b0adc667a 100644
--- a/source/_components/vacuum.markdown
+++ b/source/_components/vacuum.markdown
@@ -11,7 +11,7 @@ footer: true
The `vacuum` component enables the ability to control home cleaning robots within Home Assistant.
-To use this component in your installation, add a `vacuum` platform to your `configuration.yaml` file, like the [Xiaomi](/components/vacuum.xiaomi/).
+To use this component in your installation, add a `vacuum` platform to your `configuration.yaml` file, like the [Xiaomi](/components/vacuum.xiaomi_miio/).
```yaml
# Example configuration.yaml entry
diff --git a/source/_components/vacuum.xiaomi_miio.markdown b/source/_components/vacuum.xiaomi_miio.markdown
index 1528d5c5eec..e14e1506578 100644
--- a/source/_components/vacuum.xiaomi_miio.markdown
+++ b/source/_components/vacuum.xiaomi_miio.markdown
@@ -104,7 +104,7 @@ Enter remote control mode, make one move, stop, and exit remote control mode.
## {% linkable_title Attributes %}
In addition to [all of the attributes provided by the `vacuum` component](https://home-assistant.io/components/vacuum/#attributes),
-(`battery_icon`, `cleaned_area`, `fan_speed`, `fan_speed_list`, `status`, and
+(`battery_icon`, `cleaned_area`, `fan_speed`, `fan_speed_list`, `status`, and
`params`), the `xiaomi` platform introduces specific attributes. These are:
- `cleaning_time`
@@ -121,7 +121,7 @@ The following table shows the units of measurement for each attribute:
| Attribute | Unit of measurement | Description |
|---------------------------|---------------------|-------------------------------------------------------|
| `do_not_disturb` | | DND mode on / off |
-| `cleaning_time` | minutes | Last / actual cleaning time in minutes |
+| `cleaning_time` | minutes | Last / actual cleaning time in minutes |
| `cleaned_area` | square meter | Last / actual cleaned area in square meters |
| `main_brush_left` | hours | Hours left until a change of the main brush is needed |
| `side_brush_left` | hours | Hours left until a change of the side brush is needed |
@@ -141,6 +141,18 @@ easily via a hidden menu item at the Mi-Home app.
#### {% linkable_title Windows and Android %}
+To fetch the token follow these instructions depending on your mobile phone platform.
+
+1. Configure the robot with the Mi-Home app.
+2. Download and extract the [MiToolKit.zip](https://github.com/ultrara1n/MiToolkit/releases).
+3. Enable developer mode and USB debugging on the Android phone and plug it into the computer.
+4. Change the MiToolKit language to English if you need to.
+5. Click "Extract Token"
+6. On the phone, you must confirm the backup. DO NOT enter any password and press the button to make the backup.
+8. Once you have confirmed the backup the token extraction will begin, it should appear in the MiToolKit shortly.
+
+#### {% linkable_title Linux and Android (not rooted) %}
+
Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from a SQLite file inside your phone.
Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-mirobo` to be installed correctly.
@@ -159,12 +171,15 @@ $ source /srv/homeassistant/bin/activate
To fetch the token follow these instructions depending on your mobile phone platform.
1. Configure the robot with the Mi-Home app.
-2. Download and extract the [MiToolKit.zip](https://github.com/ultrara1n/MiToolkit/releases).
-3. Enable developer mode and USB debugging on the Android phone and plug it into the computer.
-4. Change the MiToolKit language to English if you need to.
-5. Click "Extract Token"
-6. On the phone, you must confirm the backup. DO NOT enter any password and press the button to make the backup.
-8. Once you have confirmed the backup the token extraction will begin, it should appear in the MiToolKit shortly.
+2. Enable developer mode, USB debugging and plug the Android phone into the computer.
+3. Get ADB e.g. `apt-get install android-tools-adb` or `apt-get install adb`
+4. `adb devices` should list your device. Consult ADB manual if necessary.
+5. Issue a backup command via adb: `adb backup -noapk com.xiaomi.smarthome -f backup.ab` (set a password if prompted on your phone)
+6. Download the 'ADB Backup Extractor' from [here](https://sourceforge.net/projects/adbextractor/files/latest/download)
+7. Extract the data from the backup: `java -jar Android\ Backup\ Utilities/Android\ Backup\ Extractor/android-backup-extractor-20171005-bin/abe.jar unpack backup.ab unpacked.tar` (enter the password, if prompted)
+8. Untar the unpacked data: `tar -xvf unpacked.tar`
+9. `sqlite3 apps/com.xiaomi.smarthome/db/miio2.db 'select token from devicerecord where name = "Mi Robot Vacuum";'` returns the token for your Xiaomi vacuum bot.
+
#### {% linkable_title Linux and Android (rooted!) %}
diff --git a/source/_components/verisure.markdown b/source/_components/verisure.markdown
index 1db2480cf9e..d73c9c9e490 100644
--- a/source/_components/verisure.markdown
+++ b/source/_components/verisure.markdown
@@ -45,4 +45,4 @@ Configuration variables:
- **mouse** (*Optional*): Set to 1 to show mouse detectors, 0 to disable. Default 1.
- **door_window** (*Optional*): Set to 1 to show door and window sensors, 0 to disable. Default 1.
- **code_digits** (*Optional*): Number of digits in PIN code. Default 4.
-
+- **giid** (*Optional*): The GIID of your installation (If you have more then one alarm system).
diff --git a/source/_components/volvooncall.markdown b/source/_components/volvooncall.markdown
index 24a6200f5f9..acd511a037c 100644
--- a/source/_components/volvooncall.markdown
+++ b/source/_components/volvooncall.markdown
@@ -25,21 +25,21 @@ volvooncall:
password: password
```
-Users registered with Volvo in North America or China will need to specify a service URL:
+Users registered with Volvo in North America or China will need to specify a region:
```yaml
# North America
volvooncall:
username: username
password: password
- service_url: 'https://vocapi-na.wirelesscar.net/customerapi/rest/v3.0/'
+ region: na
```
```yaml
# China
volvooncall:
username: username
password: password
- service_url: 'https://vocapi-cn.wirelesscar.net/customerapi/rest/v3.0/'
+ region: cn
```
A more advanced example for setting the vehicle name and selecting what resources to display:
@@ -61,7 +61,8 @@ Configuration variables:
- **username** (*Required*): The username associated with your Volvo On Call account.
- **password** (*Required*): The password for your given Volvo On Call account.
-- **service_url** (*Optional*): The service URL to use for Volvo On Call (defaults to https://vocapi.wirelesscar.net/customerapi/rest/v3.0/).
+- **region** (*Optional*): The region where the Volvo is registered. Needs to be set for users in North America or China.
+- **service_url** (*Optional*): The service URL to use for Volvo On Call. Normally not neccessary to specify.
- **name** (*Optional*): Make it possible to provide a name for the vehicles.
- **resources** (*Optional*): A list of resources to display (defaults to all available).
diff --git a/source/_components/weather.bom.markdown b/source/_components/weather.bom.markdown
index 03bc747f403..3a9d64c81a3 100644
--- a/source/_components/weather.bom.markdown
+++ b/source/_components/weather.bom.markdown
@@ -22,10 +22,17 @@ weather:
- platform: bom
```
-Configuration variables:
-
-- **name** (*Optional*): The name you would like to give to the weather station.
-- **station** (*Optional*): The station ID string; defaults to the closest station. See the [`sensor.bom` docs](/components/sensor.bom/) for details on how to find the ID of a station.
+{% configuration %}
+name:
+ description: The name you would like to give to the weather station.
+ required: optional
+ type: string
+station:
+ description: "The station ID string. See the [`sensor.bom` docs](/components/sensor.bom/) for details on how to find the ID of a station."
+ required: optional
+ default: The closest station
+ type: string
+{% endconfiguration %}
This platform is an alternative to the [`bom`](/components/sensor.bom/) sensor.
diff --git a/source/_components/weather.ecobee.markdown b/source/_components/weather.ecobee.markdown
new file mode 100644
index 00000000000..0f328309630
--- /dev/null
+++ b/source/_components/weather.ecobee.markdown
@@ -0,0 +1,16 @@
+---
+layout: page
+title: "Ecobee Weather"
+description: "Instructions how to setup the Ecobee weather within Home Assistant."
+date: 2017-11-29 21:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: ecobee.png
+ha_category: Weather
+ha_release: 0.59
+ha_iot_class: "Local Push"
+---
+
+To get your Ecobee weather component working with Home Assistant, follow the instructions for the general [Ecobee component](/components/ecobee/).
diff --git a/source/_components/xiaomi_aqara.markdown b/source/_components/xiaomi_aqara.markdown
index 61d3ed9231d..8c471681b9a 100644
--- a/source/_components/xiaomi_aqara.markdown
+++ b/source/_components/xiaomi_aqara.markdown
@@ -9,7 +9,7 @@ sharing: true
footer: true
logo: xiaomi.png
ha_category: Hub
-ha_release: "0.50"
+ha_release: "0.57"
ha_iot_class: "Local Push"
redirect_from: /components/xiaomi/
---
@@ -49,14 +49,14 @@ The `xiaomi_aqara` component allows you to integrate [Xiaomi](http://www.mi.com/
## {% linkable_title Setup %}
-Follow the setup process using your phone and Mi-Home app. From here you will be able to retrieve the key from within the app following [this tutorial](https://community.home-assistant.io/t/beta-xiaomi-gateway-integration/8213/1832).
+Follow the setup process using your phone and Mi-Home app. From here you will be able to retrieve the key (password) from within the app following [this tutorial](https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz).
To enable {{ page.title }} in your installation, add the following to your `configuration.yaml` file:
### {% linkable_title One Gateway %}
```yaml
-# You can leave mac empty if you only have one gateway.
+# You can leave MAC empty if you only have one gateway.
xiaomi_aqara:
discovery_retry: 5
gateways:
@@ -66,7 +66,7 @@ xiaomi_aqara:
### {% linkable_title Multiple Gateways %}
```yaml
-# 12 characters mac can be obtained from the gateway.
+# 12 characters MAC can be obtained from the gateway.
xiaomi_aqara:
gateways:
- mac: xxxxxxxxxxxx
@@ -106,7 +106,7 @@ xiaomi_aqara:
type: string
default: any
host:
- description: The host / ip address of the gateway. If this parameter is used the multicast discovery of the gateway is skipped.
+ description: The host/IP address of the gateway. If this parameter is used the multicast discovery of the gateway is skipped.
required: false
type: string
{% endconfiguration %}
@@ -115,7 +115,7 @@ xiaomi_aqara:
The gateway provides the following services:
-#### {% linkable_title Service xiaomi_aqara.play_ringtone %}
+#### {% linkable_title Service `xiaomi_aqara.play_ringtone` %}
Play a specific ringtone. The version of the gateway firmware must be `1.4.1_145` at least. Take a look at the examples below.
@@ -155,7 +155,7 @@ Allowed values of the `ringtone_id` are:
- 29 - Thinker
- Custom ringtones (uploaded by the Mi Home app) starting from 10001
-#### {% linkable_title Service xiaomi_aqara.stop_ringtone %}
+#### {% linkable_title Service `xiaomi_aqara.stop_ringtone` %}
Stops a playing ringtone immediately.
@@ -163,13 +163,13 @@ Stops a playing ringtone immediately.
|---------------------------|----------|-------------------------------------------------------|
| `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway |
-#### {% linkable_title Service xiaomi_aqara.add_device %}
+#### {% linkable_title Service `xiaomi_aqara.add_device` %}
| Service data attribute | Optional | Description |
|---------------------------|----------|-------------------------------------------------------|
| `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway |
-#### {% linkable_title Service xiaomi_aqara.add_device %}
+#### {% linkable_title Service `xiaomi_aqara.add_device` %}
Enables the join permission of the Xiaomi Aqara Gateway for 30 seconds. A new device can be added afterwards by pressing the pairing button once.
@@ -177,7 +177,7 @@ Enables the join permission of the Xiaomi Aqara Gateway for 30 seconds. A new de
|---------------------------|----------|-------------------------------------------------------|
| `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway |
-#### {% linkable_title Service xiaomi_aqara.remove_device %}
+#### {% linkable_title Service `xiaomi_aqara.remove_device` %}
Removes a specific device. The removal is required if a device shall be paired with another gateway.
@@ -190,7 +190,7 @@ Removes a specific device. The removal is required if a device shall be paired w
### {% linkable_title Long Press on Smart Button %}
-This example plays the sound of a dog barking when the button is held down, and stops the sound when the button is pressed once.
+This example plays the sound of a dog barking when the button is held down and stops the sound when the button is pressed once.
*Note: The sound will stop playing automatically when it has ended.*
@@ -226,7 +226,7 @@ This example plays the sound of a dog barking when the button is held down, and
### {% linkable_title Initial setup problem %}
-If you run into trouble initializing the gateway with your app, try another smartphone. I had trouble with the OnePlus 3, but it worked with a Nexus 5.
+If you run into trouble initializing the gateway with your app, try another smartphone. E.g., it didn't work on an OnePlus 3, but it worked with a Nexus 5.
### {% linkable_title Connection problem %}
@@ -236,12 +236,14 @@ If you run into trouble initializing the gateway with your app, try another smar
```
That means that Home Assistant is not getting any response from your Xiaomi gateway. Might be a local network problem or your firewall.
-- Make sure you have [enabled LAN access](https://community.home-assistant.io/t/beta-xiaomi-gateway-integration/8213/1832).
+- Make sure you have [enabled LAN access](https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz).
- Turn off the firewall on the system where Home Assistant is running.
-- Ensure your router supports multicast as this is a requirement of the Xiaomi GW
+- Ensure your router supports multicast as this is a requirement of the Xiaomi Gateway.
- Try to leave the MAC address `mac:` blank.
- Try to set `discovery_retry: 10`.
- Try to disable and then enable LAN access.
- Hard reset the gateway: Press the button of the gateway 30 seconds and start again from scratch.
- If you are using Home Assistant in [Docker](/docs/installation/docker/), make sure to use `--net=host`.
- If you receive an `{"error":"Invalid key"}` in your log while trying to control the gateway light, you should generate the key again using an Android Phone or alternativly an emulator such as [bluestacks](https://www.bluestacks.com). In some instances there is an issue with keys being generated using the iOS application.
+- If the required library "PyXiaomiGateway" cannot be installed you will need to install some missing system dependencies `python3-dev`, `libssl-dev`, `libffi-dev` manually (e.g., `$ sudo apt-get install python3-dev libssl-dev libffi-dev`).
+
diff --git a/source/_cookbook/configuration_yaml_by_aneisch b/source/_cookbook/configuration_yaml_by_aneisch.markdown
similarity index 100%
rename from source/_cookbook/configuration_yaml_by_aneisch
rename to source/_cookbook/configuration_yaml_by_aneisch.markdown
diff --git a/source/_cookbook/configuration_yaml_by_cy1701 b/source/_cookbook/configuration_yaml_by_cy1701.markdown
similarity index 100%
rename from source/_cookbook/configuration_yaml_by_cy1701
rename to source/_cookbook/configuration_yaml_by_cy1701.markdown
diff --git a/source/_cookbook/configuration_yaml_by_mf_social.markdown b/source/_cookbook/configuration_yaml_by_mf_social.markdown
new file mode 100644
index 00000000000..67eb9d16280
--- /dev/null
+++ b/source/_cookbook/configuration_yaml_by_mf_social.markdown
@@ -0,0 +1,12 @@
+---
+layout: page
+title: "Configuration.yaml by mf_social"
+description: ""
+date: 2017-10-11 11:45
+sidebar: true
+comments: false
+sharing: true
+footer: true
+ha_category: Example configuration.yaml
+ha_external_link: https://github.com/mf-social/Home-Assistant
+---
diff --git a/source/_cookbook/configuration_yaml_by_stanvx b/source/_cookbook/configuration_yaml_by_stanvx.markdown
similarity index 100%
rename from source/_cookbook/configuration_yaml_by_stanvx
rename to source/_cookbook/configuration_yaml_by_stanvx.markdown
diff --git a/source/_cookbook/custom_panel_using_react.markdown b/source/_cookbook/custom_panel_using_react.markdown
index b8f5f8d59b8..800f2f3378d 100644
--- a/source/_cookbook/custom_panel_using_react.markdown
+++ b/source/_cookbook/custom_panel_using_react.markdown
@@ -18,7 +18,7 @@ This is a [React](https://facebook.github.io/react/) implementation of [TodoMVC]
- It uses the user configuration for the component in the `configuration.yaml` file for rendering.
- It allows toggling the sidebar.
-All you need is available as a [custom panel](https://github.com/home-assistant/example-custom-config/blob/master/panels/react.html). Download the file and save it in `/panels/` (you might have to create the directory if it doesn't exist).
+Download the source [here](https://github.com/home-assistant/example-custom-config/blob/master/panels/react.html). Copy the file to `/panels/` (you might have to create the directory if it doesn't exist).
Create a entry for the panel in your `configuration.yaml` file to enable it.
diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml
index 7ee16d84fb3..e66face48b2 100644
--- a/source/_data/glossary.yml
+++ b/source/_data/glossary.yml
@@ -27,17 +27,17 @@
- topic: Template
description: "A [template](/docs/automation/templating/) is an automation definition that can include variables for the service or data from the trigger values. This allows automations to generate dynamic actions."
- topic: Script
- description: "[Scripts](/docs/scripts/) are components that allow users to specify a sequence of actions to be executed by Home Assistant when turned on"
+ description: "[Scripts](/docs/scripts/) are components that allow users to specify a sequence of actions to be executed by Home Assistant when turned on."
- topic: Scene
description: "[Scenes](/components/scene/) capture the states you want certain entities to be. For example a scene can specify that light A should be turned on and light B should be bright red."
- topic: HADashboard
description: "[HADashboard](/docs/ecosystem/hadashboard/) is a modular, skinnable dashboard for Home Assistant that is intended to be wall mounted, and is optimized for distance viewing."
- topic: hass
- description: "HASS or [hass](/docs/tools/hass/) is often used as an abbreviation for Home Assistant. It is aslo the comand line tool for accessing"
+ description: "HASS or [hass](/docs/tools/hass/) is often used as an abbreviation for Home Assistant. It is also the command line tool."
- topic: Hass.io
- description: "[Hass.io](/hassio/) is an operating system that will take care of installing and updating Home Assistant, is managed from the Home Assistant UI, allows creating/restoring snapshots of your configuration, and can easily be extended"
+ description: "[Hass.io](/hassio/) is an operating system that will take care of installing and updating Home Assistant, is managed from the Home Assistant UI, allows creating/restoring snapshots of your configuration, and can easily be extended."
- topic: Cookbook
- description: "The [Cookbook](/cookbook/) contains a set of configuration examples of Home Assistant from the community"
+ description: "The [Cookbook](/cookbook/) contains a set of configuration examples of Home Assistant from the community."
- topic: Packages
description: "[Packages](/docs/configuration/packages/) allow you to bundle different component configuations together."
- topic: Customize
diff --git a/source/_docs/automation/editor.markdown b/source/_docs/automation/editor.markdown
index d7f17072139..8db389733c4 100644
--- a/source/_docs/automation/editor.markdown
+++ b/source/_docs/automation/editor.markdown
@@ -62,6 +62,8 @@ automation old:
If you want to migrate your old automations to use the editor, you'll have to copy them to `automations.yaml`. Make sure that `automations.yaml` remains a list! For each automation that you copy over you'll have to add an `id`. This can be any string as long as it's unique.
+For example, the below automation will be triggered when the sun goes from below the horizon to above the horizon. Then, if the temperature is between 17 and 25 degrees, a light will be turned on.
+
```yaml
# Example automations.yaml entry
- id: my_unique_id # <-- Required for editor to work.
diff --git a/source/_docs/automation/examples.markdown b/source/_docs/automation/examples.markdown
index a1eb7ddfae7..9e28e0b3e76 100644
--- a/source/_docs/automation/examples.markdown
+++ b/source/_docs/automation/examples.markdown
@@ -12,6 +12,7 @@ redirect_from: /getting-started/automation-examples/
Just some sample automation rules to get you started.
+{% raw %}
```yaml
# Example of entry in configuration.yaml
automation:
@@ -64,4 +65,20 @@ automation:
service: notify.notify
data:
message: 'Paulus left the house'
+
+# Send a notification via Pushover with the event of a Xiaomi cube. Custom event from the Xiaomi component.
+ - alias: 'Xiaomi Cube Action'
+ hide_entity: false
+ initial_state: false
+ trigger:
+ platform: event
+ event_type: cube_action
+ event_data:
+ entity_id: binary_sensor.cube_158d000103a3de
+ action:
+ - service_template: notify.pushover
+ data_template:
+ title: "Cube event detected"
+ message: "Cube has triggered this event: {{ trigger.event }}"
```
+{% endraw %}
diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown
index a53912dc46c..7f721876bd9 100644
--- a/source/_docs/automation/templating.markdown
+++ b/source/_docs/automation/templating.markdown
@@ -51,6 +51,14 @@ There are a few very important rules to remember when writing automation templat
Remembering these simple rules will help save you from many headaches and endless hours of frustration when using automation templates.
+## {% linkable_title Trigger State Object %}
+
+Knowing how to access the [state object](/docs/configuration/state_object/) of a trigger entity could be one of the more common questions. Here are a few ways for the [`state`](#state), [`numeric_state`](#numeric_state) and [`template`](#template) triggers:
+
+* `trigger.from_state` will return the **previous** [state object](/docs/configuration/state_object/) of the entity.
+* `trigger.to_state` will return the **new** [state object](/docs/configuration/state_object/) that triggered trigger.
+* `states[trigger.to_state.domain][trigger.to_state.object_id]` will return the **current** [state object](/docs/configuration/state_object/) of the entity.
+
## {% linkable_title Available Trigger Data %}
The following tables show the available trigger data per platform.
diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown
index a54145e0956..c4b3ee2793a 100644
--- a/source/_docs/automation/trigger.markdown
+++ b/source/_docs/automation/trigger.markdown
@@ -138,6 +138,10 @@ The US Naval Observatory has a [tool](http://aa.usno.navy.mil/data/docs/AltAz.ph
### {% linkable_title Template trigger %}
+
+ If your template trigger has no `entity_id` listed, then it is evaluted on *every* state change for *every* entity. Instead you should create a [template sensor](/components/sensor.template/) or [template binary sensor](/components/binary_sensor.template/) and use that in your automation.
+
+
Template triggers work by evaluating a [template] on each state change. The trigger will fire if the state change caused the template to render 'true'. This is achieved by having the template result in a true boolean expression (`{% raw %}{{ is_state('device_tracker.paulus', 'home') }}{% endraw %}`) or by having the template render 'true' (example below).
With template triggers you can also evaluate attribute changes by using is_state_attr (`{% raw %}{{ is_state_attr('climate.living_room', 'away_mode', 'off') }}{% endraw %}`)
@@ -145,6 +149,7 @@ With template triggers you can also evaluate attribute changes by using is_state
automation:
trigger:
platform: template
+ entity_id: device_tracker.paulus
value_template: "{% raw %}{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}{% endraw %}"
```
diff --git a/source/_docs/autostart/systemd.markdown b/source/_docs/autostart/systemd.markdown
index f4d3b25ff83..4ea709440f8 100644
--- a/source/_docs/autostart/systemd.markdown
+++ b/source/_docs/autostart/systemd.markdown
@@ -28,7 +28,7 @@ A service file is needed to control Home Assistant with `systemd`. The template
```
[Unit]
Description=Home Assistant
-After=network.target
+After=network-online.target
[Service]
Type=simple
@@ -46,7 +46,7 @@ If you've setup Home Assistant in `virtualenv` following our [Python installatio
```
[Unit]
Description=Home Assistant
-After=network.target
+After=network-online.target
[Service]
Type=simple
diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown
index 43f6885f334..71b8a2f561a 100644
--- a/source/_docs/configuration/customizing-devices.markdown
+++ b/source/_docs/configuration/customizing-devices.markdown
@@ -63,7 +63,7 @@ homeassistant:
| `homebridge_hidden` | Set to `true` to hide the entity from `HomeBridge`.
| `emulated_hue_hidden` | Set to `true` to hide the entity from `emulated_hue`.
| `entity_picture` | Url to use as picture for entity.
-| `icon` | Any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com). Prefix name with `mdi:`, ie `mdi:home`.
+| `icon` | Any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com) ([Cheatsheet](https://materialdesignicons.com/cheatsheet)). Prefix name with `mdi:`, ie `mdi:home`.
| `assumed_state` | For switches with an assumed state two buttons are shown (turn off, turn on) instead of a switch. By setting `assumed_state` to `false` you will get the default switch icon.
| `device_class` | Sets the class of the device, changing the device state and icon that is displayed on the UI (see below).
| `initial_state` | Sets the initial state for automations. `on` or `off`.
diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown
index c02fbb7f2a2..40feade2473 100644
--- a/source/_docs/configuration/templating.markdown
+++ b/source/_docs/configuration/templating.markdown
@@ -78,6 +78,7 @@ Home Assistant adds extensions to allow templates to access all of the current s
- `relative_time(timestamp)` will format the date time as relative time vs now (ie 7 seconds)
- `float` will format the output as float.
- `strptime(string, format)` will parse a string to a datetime based on a [format][strp-format].
+- `log(value, base)` will take the logarithm of the input. When the base is omitted, it defaults to `e` - the natural logarithm. Can also be used as a filter.
- Filter `round(x)` will convert the input to a number and round it to `x` decimals.
- Filter `timestamp_local` will convert an UNIX timestamp to local time/data.
- Filter `timestamp_utc` will convert an UNIX timestamp to UTC time/data.
@@ -254,6 +255,8 @@ The following overview contains a couple of options to get the needed values:
# Math
{% raw %}{{ value_json | float * 1024 }}{% endraw %}
{% raw %}{{ float(value_json) * (2**10) }}{% endraw %}
+{% raw %}{{ value_json | log }}{% endraw %}
+{% raw %}{{ log(1000, 10) }}{% endraw %}
# Timestamps
{% raw %}{{ value_json.tst | timestamp_local }}{% endraw %}
diff --git a/source/_docs/ecosystem/hass-configurator.markdown b/source/_docs/ecosystem/hass-configurator.markdown
index bca0a948ee6..6e8c30f7d30 100644
--- a/source/_docs/ecosystem/hass-configurator.markdown
+++ b/source/_docs/ecosystem/hass-configurator.markdown
@@ -15,6 +15,11 @@ redirect_from: /ecosystem/hass-configurator/
Since there currently is no nice way to edit the yaml-files Home Assistant is using through the frontend, here is a small webapp that hopefully makes the configuration easier. It is a customized and embedded [Ace editor](https://ace.c9.io/), which has syntax highlighting for yaml, the format used for Home Assistants configuration files. There is an integrated file browser to select whatever file you want to edit. When you're done with editing the file, click the save-button and it will replace the original.
Essentially this is a browser-based alternative to modifying your configuration through SSH, Windows + SMB, Github etc..
+
+
+Screenshot of the HASS Configurator.
+
+
### {% linkable_title Feature list %}
- Web-Based editor to modify your files
@@ -64,6 +69,10 @@ Limit access to the configurator by adding allowed IP addresses / networks to th
List of statically banned IP addresses, e.g. `BANNED_IPS = ["1.1.1.1", "2.2.2.2"]`
#### BANLIMIT (integer)
Ban IPs after `n` failed login attempts. Restart the service to reset banning. The default of `0` disables this feature. `CREDENTIALS` has to be set for this to work.
+#### IGNORE_PATTERN (list)
+Files and folders to ignore in the UI, e.g. `IGNORE_PATTERN = [".*", "*.log", "__pycache__"]`.
+#### DIRSFIRST (bool)
+If set to `True`, directories will be displayed at the top of the filebrowser.
#### GIT (bool)
Set this variable to `True` to enable Git integration. This feature requires [GitPython](https://gitpython.readthedocs.io)
to be installed on the system that is running the configurator. For technical reasons this feature can not be enabled with the static settings file.
diff --git a/source/_docs/installation.markdown b/source/_docs/installation.markdown
index c5fe54e9ed8..632457f28a9 100644
--- a/source/_docs/installation.markdown
+++ b/source/_docs/installation.markdown
@@ -10,6 +10,10 @@ footer: true
redirect_from: /getting-started/installation/
---
+
+Beginners should check our [Getting started guide](/getting-started/) first. This is for users that require advanced installations.
+
+
Home Assistant provides multiple ways to be installed. A requirement is that you have [Python](https://www.python.org/downloads/) installed. For Windows, we require at least **Python 3.5** and for other operating systems at least **Python 3.4.2**.
diff --git a/source/_docs/installation/docker.markdown b/source/_docs/installation/docker.markdown
index 4b3d8de4633..cd8f8b26eef 100644
--- a/source/_docs/installation/docker.markdown
+++ b/source/_docs/installation/docker.markdown
@@ -54,9 +54,10 @@ The steps would be:
* Set "Enable auto-restart" if you like
* Within "Volume" click on "Add Folder" and choose either an existing folder or add a new folder. The "mount point" has to be "/config", so that Home Assistant will use it for the configs and logs.
* Within "Network" select "Use same network as Docker Host"
+* To ensure that Home Assistant displays the correct timezone go to the "Environment" tab and click the plus sign then add `variable` = `TZ` & `value` = `Europe/London` choosing [your correct timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
* Confirm the "Advanced Settings"
* Click on "Next" and then "Apply"
-* Your Home Assistant within Docker should now run
+* Your Home Assistant within Docker should now run and will serve the web interface from port 8123 on your Docker host (this will be your Synology NAS IP address - for example `http://192.168.1.10:8123`)
Remark: to update your Home Assistant on your Docker within Synology NAS, you just have to do the following:
* Go to the Docker-app and move to "Image"-section
@@ -64,9 +65,17 @@ Remark: to update your Home Assistant on your Docker within Synology NAS, you ju
* wait until the system-message/-notification comes up, that the download is finished (there is no progress bar)
* Move to "Container"-section
* Stop your container if it's running
-* Right-click on it and select "Action"->"Clear". You won't loose any data, as all files are stored in your config-directory
+* Right-click on it and select "Action"->"Clear". You won't lose any data, as all files are stored in your config-directory
* Start the container again - it will then boot up with the new Home Assistant image
+Remark: to restart your Home Assistant within Synology NAS, you just have to do the following:
+* Go to the Docker-app and move to "Container"-section
+* Right-click on it and select "Action"->"Restart".
+
+
+If you want to use a USB Bluetooth adapter or Z-Wave USB Stick with Home Assistant on Synology Docker these instructions do not correctly configure the container to access the USB devices. To configure these devices on your Synology Docker Home Assistant you can follow the instructions provided [here](https://philhawthorne.com/installing-home-assistant-io-on-a-synology-diskstation-nas/) by Phil Hawthorne.
+
+
### {% linkable_title Restart %}
This will launch Home Assistant and serve the web interface from port 8123 on your Docker host.
@@ -74,4 +83,4 @@ This will launch Home Assistant and serve the web interface from port 8123 on yo
If you change the configuration you have to restart the server. To do that you have 2 options.
1. You can go to the service developer tools, select the service `homeassistant/restart` and click "Call Service".
- 2. Or you can restart it from an terminal by running `docker restart home-assistant`
+ 2. Or you can restart it from a terminal by running `docker restart home-assistant`
diff --git a/source/_docs/installation/python.markdown b/source/_docs/installation/python.markdown
index e0603a076c1..a7dda882e25 100644
--- a/source/_docs/installation/python.markdown
+++ b/source/_docs/installation/python.markdown
@@ -22,7 +22,7 @@ Running these commands will:
- Install Home Assistant
- Launch Home Assistant and serve the web interface on [http://localhost:8123](http://localhost:8123)
-If you're running a Linux-based platform, we suggest you follow the [VirtualEnv instructions](/docs/installation/virtualenv/) to avoid using `root`.
+If you're running a Linux-based platform, we suggest you follow the instructions for a [virtual environment](/docs/installation/virtualenv/) to avoid using `root`.
Video tutorials of this process for various operating systems are available here:
@@ -30,3 +30,4 @@ Video tutorials of this process for various operating systems are available here
- [macOS](https://www.youtube.com/watch?v=hej6ipN86ls)
- [Ubuntu 14.04](https://www.youtube.com/watch?v=SXaAG1lGNH0)
+Keep in mind that the used operating systems and the shown software releases may be outdated.
diff --git a/source/_docs/installation/raspberry-pi-all-in-one.markdown b/source/_docs/installation/raspberry-pi-all-in-one.markdown
index 485fc64ffdb..6039ffed440 100644
--- a/source/_docs/installation/raspberry-pi-all-in-one.markdown
+++ b/source/_docs/installation/raspberry-pi-all-in-one.markdown
@@ -8,124 +8,6 @@ footer: true
redirect_from: /getting-started/installation-raspberry-pi-all-in-one/
---
-The [Raspberry Pi All-In-One Installer](https://github.com/home-assistant/fabric-home-assistant) deploys a complete Home Assistant server including support for MQTT with websockets, Z-Wave, and the OpenZWave Control Panel.
-
-
-Please remember to ensure you're using an [appropriate power supply](https://www.raspberrypi.org/help/faqs/#powerReqs) with your Pi. Mobile chargers may not be suitable, since some are designed to only provide the full power with that manufacturer's handsets.
-
-
-The only requirement is that you have a Raspberry Pi with a fresh installation of [Raspbian](https://www.raspberrypi.org/downloads/raspbian/) Jessie (Stretch is not supported at this time) connected to your network.
-
-
-Note that as of 2016-11-30 SSH is disabled by default in the official Raspbian images. Adding an empty file called `ssh` to `/boot/` on the FAT32 partition will enable it. More information is on the Raspberry Pi Foundation [Blog](https://www.raspberrypi.org/blog/page/2/?fish#a-security-update-for-raspbian-pixel).
-
-
-Irrespective of whether you use SSH to connect to the Pi from another computer or not, you need SSH to install Home Assistant. So go ahead and enable SSH.
-
-* Login to Raspberry Pi. For example with `ssh pi@your_raspberry_pi_ip`
-* Run the following command:
-
- This command is a one-liner and not run as sudo.
+ The All-In-One Installer is deprecated, you will have problems updating Home Assistant in 2018. Please move to another [installation method](https://home-assistant.io/getting-started/).
-
-```bash
-$ curl -O https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && sudo chown pi:pi hass_rpi_installer.sh && bash hass_rpi_installer.sh
-```
-
-Installation will take approx. 1-2 hours depending on the Raspberry Pi model the installer is being run against. The installer will identitfy what Raspberry Pi hardware revision you are using and adjust commands accordingly. A complete log of the install is located at: `/home/pi/fabric-home-assistant/installation_report.txt` The installer has been updated to simply log any errors encountered, but resume installing. Please consult the "installation report" if your install encountered issues.
-
-[BRUH automation](http://www.bruhautomation.com) has created [a tutorial video](https://www.youtube.com/watch?v=VGl3KTrYo6s) explaining how to install Raspbian on your Raspberry Pi and install Home Assistant using the All-In-One Installer.
-
-Once rebooted, your Raspberry Pi will be up and running with Home Assistant. You can access it at [http://your_raspberry_pi_ip:8123](http://your_raspberry_pi_ip:8123).
-
-The Home Assistant configuration is located at `/home/homeassistant/.homeassistant` (or `/home/hass/.homeassistant` if installed prior to December 2016). The [virtualenv](https://virtualenv.pypa.io/en/latest/) with the Home Assistant installation is located at `/srv/homeassistant/homeassistant_venv`. As part of the secure installation, a new user (**homeassistant**) is added to your Raspberry Pi to run Home Assistant. This is a system account and does not have login or other abilities by design. When editing your `configuration.yaml` files, you will need to run the commands with `sudo` or by switching user.
-
-
- *Windows users*: Setting up WinSCP to allow this seemlessly is at the end of this page.
-
-
-By default, installation makes use of a Python Virtualenv. If you wish to not follow this recommendation, you may add the flag `-n` to the end of the install command specified above.
-
-The All-In-One Installer script will do the following automatically:
-
-* Create all needed directories
-* Create needed service accounts
-* Install OS and Python dependencies
-* Setup a python virtualenv to run Home Assistant and components inside.
-* Run as `homeassistant` service account
-* Install Home Assistant in a virtualenv
-* Install Mosquitto with websocket support running on ports 1883 and 9001
-* Build and Install Python-openzwave in the Home Assistant virtualenv
-* Build OpenZWave Control Panel in `/srv/homeassistant/src/open-zwave-control-panel`
-* Add Home Assistant to systemd services to start at boot
-
-### {% linkable_title Upgrading %}
-
-To upgrade the All-In-One setup manually:
-
-* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip`
-* Change to homeassistant user `sudo su -s /bin/bash homeassistant`
-* Change to virtual environment `source /srv/homeassistant/homeassistant_venv/bin/activate`
-* Update Home Assistant `pip3 install --upgrade homeassistant`
-* Type `exit` to logout the hass user and return to the `pi` user.
-
-
-**If you deployed Home Assistant via the AiO installer prior to December 2016**
-* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip`
-* Change to homeassistant user `sudo su -s /bin/bash hass`
-* Change to virtual environment `source /srv/hass/hass_venv/bin/activate`
-* Update Home Assistant `pip3 install --upgrade homeassistant`
-* Type `exit` to logout the hass user and return to the `pi` user.
-
-
-After upgrading, you can restart Home Assistant a few different ways:
-
-* Restarting the Raspberry Pi `sudo reboot`
-* Restarting the Home-Assistant Service `sudo systemctl restart home-assistant.service`
-
-### {% linkable_title To change the MQTT default password %}
-
-* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip`
-* Change password `sudo mosquitto_passwd /etc/mosquitto/pwfile pi`
-* Restart mosquitto `sudo systemctl restart mosquitto.service`
-* Be sure to update your `configuration.yaml` to reflect the new password.
-
-### {% linkable_title Using the OZWCP web application %}
-
-To launch the OpenZWave Control Panel (OZWCP) web application:
-
-* Make sure Home Assistant is not running! So stop that first
-* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip`
-* Change to the OZWCP directory `cd /srv/homeassistant/src/open-zwave-control-panel/`
-* Launch the control panel `sudo ./ozwcp -p 8888`
-* Open a web browser to `http://your_pi_ip:8888`
-* Specify your Z-Wave controller, for example `/dev/ttyACM0` and hit initialize
-
-
- If OZWCP is running really slow verify that your not running Home Assistant or have another page running OZWCP open or strange errors might occur.
-
-
-
-**If you deployed Home Assistant via the AiO installer prior to December 2016**
-* Make sure Home Assistant is not running! So stop that first
-* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip`
-* Change to the OZWCP directory `cd /srv/hass/src/open-zwave-control-panel/`
-* Launch the control panel `sudo ./ozwcp -p 8888`
-* Open a web browser to `http://your_pi_ip:8888`
-* Specify your Z-Wave controller, for example `/dev/ttyACM0` and hit initialize
-
-
-
-Don't check the USB box regardless of using a USB based device.
-
-
-### {% linkable_title Using the GPIOs %}
-
-The (**homeassistant**) user is added to the GPIO group as part of the install now.
-
-### {% linkable_title WinSCP %}
-
-If you are Windows users who is using [WinSCP](https://winscp.net/), please note that after running the installer, you will need to modify settings allowing you to "switch users" to edit your configuration files.
-
-First create a new session on WinSCP using Protocol **SCP** pointing to your Pi IP address and port 22 and then modify the needed setting by click on **Advanced...** -> **Environment** -> **SCP/Shell** -> **Shell** and selecting `sudo su -`.
diff --git a/source/_docs/installation/troubleshooting.markdown b/source/_docs/installation/troubleshooting.markdown
index 5edabe046ae..29566bb36ec 100644
--- a/source/_docs/installation/troubleshooting.markdown
+++ b/source/_docs/installation/troubleshooting.markdown
@@ -14,7 +14,7 @@ It can happen that you run into trouble while installing Home Assistant. This pa
#### {% linkable_title pip3: command not found %}
-This utility should have been installed as part of the Python 3.4 installation. Check if Python 3.4 is installed by running `python3 --version`. If it is not installed, [download it here](https://www.python.org/getit/).
+This utility should have been installed as part of the Python installation. Check if Python is installed by running `python3 --version`. If it is not installed, [download it here](https://www.python.org/getit/).
If you are able to successfully run `python3 --version` but not `pip3`, install Home Assistant by running the following command instead:
@@ -72,3 +72,6 @@ After upgrading to a new version, you may notice your browser gets stuck at the
Android Chrome
chrome -> settings -> site settings -> storage -> search for your URL for Home Assistant-> "clear & reset"
+#### {% linkable_title Not initializing discovery because could not install dependency netdisco %}
+
+If you see `Not initializing discovery because could not install dependency netdisco==x.y.z` in the logs, you will need to install the `python3-dev` or `python3-devel` package on your system manually (eg. `sudo apt-get install python3-dev` or `sudo dnf -y install python3-devel`). On the next restart of Home Assistant, discovery should work. If you still get an error, check if you have a compiler (`gcc`) available on your system.
diff --git a/source/_docs/installation/updating.markdown b/source/_docs/installation/updating.markdown
index f5df3a9361b..a23aa31b27f 100644
--- a/source/_docs/installation/updating.markdown
+++ b/source/_docs/installation/updating.markdown
@@ -11,9 +11,11 @@ redirect_from: /getting-started/updating/
---
-The upgrade process differs depending on the installation you have, so please review the documentation that is specific to your install [Hass.io](/hassio/), [HASSbian](/docs/hassbian/common-tasks/#update-home-assistant), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/#upgrading), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant).
+The upgrade process differs depending on the installation you have, so please review the documentation that is specific to your install [Hass.io](/hassio/), [HASSbian](/docs/hassbian/common-tasks/#update-home-assistant), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant).
+View what's new in the latest version and potential impacts on your system [here](https://github.com/home-assistant/home-assistant/releases).
+
The default way to update Home Assistant to the latest release, when available, is:
```bash
@@ -23,7 +25,7 @@ $ pip3 install --upgrade homeassistant
After updating, you must restart Home Assistant for the changes to take effect. This means that you will have to restart `hass` itself or the [autostarting](/docs/autostart/) daemon (if applicable). Startup can take considerable amount of time (i.e. minutes) depending on your device. This is because all requirements are updated as well.
-To avoid permission errors, the upgrade must be run as the same user as the installation was completed, again review the documentation specific to your install [HASSIO](/hassio/), [HASSbian](/docs/hassbian/installation/), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv).
+To avoid permission errors, the upgrade must be run as the same user as the installation was completed, again review the documentation specific to your install [Hass.io](/hassio/), [HASSbian](/docs/hassbian/installation/), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv).
[BRUH automation](http://www.bruhautomation.com) has created [a tutorial video](https://www.youtube.com/watch?v=tuG2rs1Cl2Y) explaining how to upgrade Home Assistant.
diff --git a/source/_docs/installation/virtualenv.markdown b/source/_docs/installation/virtualenv.markdown
index 00e487c03f2..ffcfff5c9ab 100644
--- a/source/_docs/installation/virtualenv.markdown
+++ b/source/_docs/installation/virtualenv.markdown
@@ -1,7 +1,7 @@
---
layout: page
-title: "Installation in virtualenv"
-description: "Instructions how to install Home Assistant in a virtual environment."
+title: "Installation in Python virtual environment"
+description: "How to install Home Assistant in a Python virtual environment."
date: 2016-4-16 16:40
sidebar: true
comments: false
@@ -9,12 +9,19 @@ sharing: true
footer: true
redirect_from: /getting-started/installation-virtualenv/
---
+
+Beginners should check our [getting started guide](/getting-started/) first.
+
There are several reasons why it makes sense to run Home Assistant in a virtual environment. A [virtualenv](https://virtualenv.pypa.io/en/latest/) encapsulates all aspect of a Python environment within a single directory tree. That means the Python packages you install for Home Assistant won't interact with the rest of your system and vice-versa. It means a random upgrade for some other program on your computer won't break Home Assistant, and it means you don't need to install Python packages as root.
-Virtualenvs are pretty easy to setup. This example will walk through one method of setting one up (there are certainly others). We'll be using Debian in this example (as many Home Assistant users are running Raspbian on a Raspberry Pi), but all of the Python related steps should be the same on just about any platform.
+Virtualenvs are pretty easy to setup. We'll be using Debian in this example (as many Home Assistant users are running Raspbian on a Raspberry Pi), but all of the Python related steps should be the same on just about any platform.
-### {% linkable_title Step 0: Install some dependencies %}
+### {% linkable_title Basic guide %}
+
+The basic guide is for testing Home Assistant. Also check the advanced guide for instances used in production.
+
+## {% linkable_title Step 1: Install dependencies %}
```bash
$ sudo apt-get update
@@ -23,33 +30,54 @@ $ sudo apt-get install python3-pip python3-dev
$ sudo pip3 install --upgrade virtualenv
```
-### {% linkable_title Step 1: Create a Home Assistant user & group %}
+## {% linkable_title Step 2: Setup virtualenv %}
-This step is optional, but it's a good idea to give services like Home Assistant their own user. It gives you more granular control over permissions, and reduces the exposure to the rest of your system in the event there is a security related bug in Home Assistant. This is a reasonably Linux oriented step, and will look different on other operating systems (or even other Linux distributions).
+```bash
+$ python3 -m venv $HOME/homeassistant
+```
+
+## {% linkable_title Step 3: Install or update Home Assistant %}
+
+```bash
+$ source $HOME/homeassistant/bin/activate
+(homeassistant)$ pip3 install --upgrade homeassistant
+```
+
+## {% linkable_title Step 4: Run Home Assistant %}
+
+```bash
+$ $HOME/homeassistant/bin/hass
+```
+
+### {% linkable_title Advanced guide %}
+## {% linkable_title Separate user & group for Home Assistant (Basic guide step 2) %}
+
+It's a good idea to give services like Home Assistant their own user. It gives you more granular control over permissions, and reduces the exposure to the rest of your system in the event there is a security related bug in Home Assistant. This is a reasonably Linux oriented step, and will look different on other operating systems (or even other Linux distributions).
```bash
$ sudo adduser --system homeassistant
$ sudo addgroup homeassistant
```
-Home Assistant stores its configuration in `$HOME/.homeassistant` by default, so in this case, it would be in `/home/homeassistant/.homeassistant`
+Home Assistant stores its configuration in `$HOME/.homeassistant` by default, so in this case, it would be in `/home/homeassistant/.homeassistant`.
-If you plan to use a Z-Wave controller, you will need to add this user to the `dialout` group
+If you plan to use a Z-Wave controller, you will need to add this user to the `dialout` group:
```bash
$ sudo usermod -G dialout -a homeassistant
```
-### {% linkable_title Step 2: Create a directory for Home Assistant %}
+## {% linkable_title Custom installation directory for Home Assistant (Basic guide step 2) %}
-This can be anywhere you want. We chose to put it in `/srv`. You also need to change the ownership of the directory to the user you created above (if you created one).
+This can be anywhere you want. We chose to put it in `/srv`. You also need to change the ownership of the directory to the user you created above.
```bash
$ sudo mkdir /srv/homeassistant
$ sudo chown homeassistant:homeassistant /srv/homeassistant
+$ python3 -m venv /srv/homeassistant
```
-### {% linkable_title Step 3: Become the new user %}
+## {% linkable_title Install or update Home Assistant %}
This is obviously only necessary if you created a `homeassistant` user, but if you did, be sure to switch to that user whenever you install things in your virtualenv, otherwise you'll end up with mucked up permissions.
@@ -59,37 +87,14 @@ $ sudo su -s /bin/bash homeassistant
The `su` command means 'switch' user. We use the '-s' flag because the `homeassistant` user is a system user and doesn't have a default shell by default (to prevent attackers from being able to log in as that user).
-### {% linkable_title Step 4: Set up the virtualenv %}
-
-All this step does is stick a Python environment in the directory we're using. That's it. It's just a directory. There's nothing special about it, and it is entirely self-contained.
-
-It will include a `bin` directory, which will contain all the executables used in the virtualenv (including Home Assistant itself). It also includes a script called `activate` which we will use to activate the virtualenv.
-
-```bash
-$ virtualenv -p python3 /srv/homeassistant
-```
-
-### {% linkable_title Step 5: Activate the virtualenv %}
-
```bash
$ source /srv/homeassistant/bin/activate
-```
-
-After that, your prompt should include `(homeassistant)`.
-
-### {% linkable_title Step 6: Install Home Assistant %}
-
-Once your virtualenv has been activated, you don't need to `sudo` any of your `pip` commands. `pip` will be installing things in the virtualenv, which the `homeassistant` user has permission to modify.
-
-```bash
(homeassistant)$ pip3 install --upgrade homeassistant
```
-And that's it... you now have Home Assistant installed, and you can be sure that every bit of it is contained in `/srv/homeassistant`.
+## {% linkable_title Run Home Assistant (Basic guide step 4) %}
-### {% linkable_title Finally... Run Home Assistant %}
-
-There are two ways to launch Home Assistant. If you are **in** the virtualenv, you can just run `hass` and it will work as normal. If the virtualenv is not activated, you just use the `hass` executable in the `bin` directory mentioned earlier. There is one caveat... Because Home Assistant stores its configuration in the user's home directory, we need to be the user `homeassistant` user or specify the configuration with `-c`.
+There are two ways to launch Home Assistant. If you are **in** the virtualenv, you can just run `hass` and it will work as normal. If the virtualenv is not activated, you just use the `hass` executable in the `bin` directory mentioned earlier. There is one caveat... Because Home Assistant stores its configuration in the user's home directory, we need to be the user `homeassistant` or specify the configuration with `-c`.
```bash
$ sudo -u homeassistant -H /srv/homeassistant/bin/hass
@@ -97,10 +102,6 @@ $ sudo -u homeassistant -H /srv/homeassistant/bin/hass
The `-H` flag is important. It sets the `$HOME` environment variable to `/home/homeassistant` so `hass` can find its configuration.
-### {% linkable_title Upgrading Home Assistant %}
-
-Upgrading Home Assistant is simple, just repeat steps 3, 5 and 6.
-
-### {% linkable_title Starting Home Assistant on boot %}
+## {% linkable_title Starting Home Assistant on boot %}
The [autostart instructions](/getting-started/autostart/) will work just fine, just be sure to replace `/usr/bin/hass` with `/srv/homeassistant/bin/hass` and specify the `homeassistant` user where appropriate.
diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown
index 98daf5e74ea..e9139095d75 100644
--- a/source/_docs/mqtt/discovery.markdown
+++ b/source/_docs/mqtt/discovery.markdown
@@ -16,6 +16,7 @@ The discovery of MQTT devices will enable one to use MQTT devices with only mini
Supported by MQTT discovery:
- [Binary sensors](/components/binary_sensor.mqtt/)
+- [Covers](/components/cover.mqtt/)
- [Fans](/components/fan.mqtt/)
- [Lights](/components/light.mqtt/)
- [Sensors](/components/sensor.mqtt/)
diff --git a/source/_docs/scripts/conditions.markdown b/source/_docs/scripts/conditions.markdown
index 5763106da34..3314e0f4273 100644
--- a/source/_docs/scripts/conditions.markdown
+++ b/source/_docs/scripts/conditions.markdown
@@ -114,6 +114,23 @@ condition:
after_offset: "-1:00:00"
```
+Here is a truth table to clarify the parameters with and without offset:
+
+| command | night | at sunrise | daytime | at sunset |
+| ---------------------------------- | ------------ |:-----------:| ------- |:----------:|
+| `after: sunset` | True | ⇒ | False | ⇒ |
+| + `after_offset: "01:00:00"` | True | ⇒ | False | **+1h** |
+| + `after_offset: "-01:00:00"` | True | ⇒ | False | **-1h** |
+| `before: sunset` | False | ⇒ | True | ⇒ |
+| + `before_offset: "01:00:00"` | False | ⇒ | True | **+1h** |
+| + `before_offset: "-01:00:00"` | False | ⇒ | True | **-1h** |
+| `after: sunrise` | False | ⇒ | True | ⇒ |
+| + `after_offset: "01:00:00"` | False | **+1h** | True | ⇒ |
+| + `after_offset: "-01:00:00"` | False | **-1h** | True | ⇒ |
+| `before: sunrise` | True | ⇒ | False | ⇒ |
+| + `before_offset: "01:00:00"` | True | **+1h** | False | ⇒ |
+| + `before_offset: "-01:00:00"` | True | **-1h** | False | ⇒ |
+
### {% linkable_title Template condition %}
The template condition will test if the [given template][template] renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render 'true'.
@@ -146,7 +163,7 @@ condition:
```
Valid values for `weekday` are `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`.
-Time condition windows can span across the midnight threshold. In the example above, the condition window is from 3pm to 2am.
+Time condition windows can span across the midnight threshold. In the example above, the condition window is from 3pm to 2am.
### {% linkable_title Zone condition %}
diff --git a/source/_docs/z-wave/adding.markdown b/source/_docs/z-wave/adding.markdown
index 8c2e52017be..101fb4a6b27 100644
--- a/source/_docs/z-wave/adding.markdown
+++ b/source/_docs/z-wave/adding.markdown
@@ -2,7 +2,7 @@
layout: page
title: "Z-Wave Devices - Adding and Removing"
description: "How to add and remove Z-Wave devices."
-date: 2016-02-27 19:59
+date: 2017-11-08 19:06
sidebar: true
comments: false
sharing: true
@@ -11,17 +11,30 @@ footer: true
## {% linkable_title Adding Non-Secure Devices %}
-To add (include) a non-secure Z-Wave [device](/docs/z-wave/devices/) to your system, go to the [Z-Wave control panel](/docs/z-wave/control-panel/) in the Home Assistant frontend and click the **Add Node** button in the *Z-Wave Network Management* card. This will place the controller in inclusion mode, after which you should activate your device to be included by following the instructions provided with the device. Don't use this for secure devices, since this is likely to limit the features the device supports.
+To add (include) a non-secure Z-Wave [device](/docs/z-wave/devices/) to your system:
+
+1. Go to the [Z-Wave control panel](/docs/z-wave/control-panel/) in the Home Assistant frontend
+2. Click the **Add Node** button in the *Z-Wave Network Management* card - this will place the controller in inclusion mode
+3. Activate your device to be included by following the instructions provided with the device
+4. With the device in its final location, run a *Heal*
+
+Don't use this for [secure devices](https://home-assistant.io/docs/z-wave/adding/#adding-secure-devices), since this is likely to limit the features the device supports.
-Don't use the OpenZWave control panel (OZWCP), or the physical button on a controller, to add or remove devices. Many devices will only send the information about their capabilities at the time you include them. If you use the OpenZWave control panel, or the button on a device, then Home Assistant won't have that information. Using the physical button on a controller will also result in a non-security inclusion being performed, which may limit the features the device supports.
+Don't use the OpenZWave control panel (OZWCP), **or the physical button on a controller**, to add or remove devices. Many devices will only send the information about their capabilities at the time you include them. If you use the OpenZWave control panel, or the button on a device, then Home Assistant won't have that information. Using the physical button on a controller will also result in a non-security inclusion being performed, which may limit the features the device supports.
When you add a device, it may initially appear without a specific entity ID (eg `zwave.__`) and without other identifying information. Running a *Heal* should help speed this process up, and you'll need to run a *Heal* anyway so that all the devices in your Z-Wave network learn about the new device. You *might* need to restart Home Assistant (not reboot the system) to have the entity ID fully visible.
## {% linkable_title Adding Secure Devices %}
-Security Z-Wave devices require a network key before being added to the network using the **Add Secure Node** button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices. Some devices only expose their full capabilities when included this way, you should always read the manual for your device to find out the recommended inclusion method.
+Security Z-Wave devices require a network key. You must set the *network_key* configuration variable to use a network key before adding these devices. Some devices only expose their full capabilities when included this way, you should always read the manual for your device to find out the recommended inclusion method. Note, secure devices that had been connected to another hub/network in the past may have a "theft protection" feature which requires to first exclude the device successfully from the previous hub using the previous hub/Software setup before it can be enrolled in a new hub/network. To add (include) a secure Z-Wave device:
+
+1. Go to the [Z-Wave control panel](/docs/z-wave/control-panel/) in the Home Assistant frontend
+2. Click the **Add Node Secure** button in the *Z-Wave Network Management* card - this will place the controller in inclusion mode
+3. Activate your device to be included by following the instructions provided with the device
+
+### {% linkable_title Network Key %}
An easy script to generate a random key:
```bash
@@ -39,5 +52,9 @@ Ensure you keep a backup of this key. If you have to rebuild your system and don
## {% linkable_title Removing Devices %}
-To remove (exclude) a Z-Wave device from your system, go to the Z-Wave control panel in the Home Assistant frontend and click the **Remove Node** button in the *Z-Wave Network Management* card. This will place the controller in exclusion mode, after which you should activate your device to be excluded by following the instructions provided with the device.
+To remove (exclude) a Z-Wave device from your system:
+1. Go to the Z-Wave control panel in the Home Assistant frontend
+2. Click the **Remove Node** button in the *Z-Wave Network Management* card - this will place the controller in exclusion mode
+3. Activate your device to be excluded by following the instructions provided with the device
+4. With the device in its final location, run a *Heal*
diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown
index 2327e51117f..c33375f242b 100644
--- a/source/_docs/z-wave/control-panel.markdown
+++ b/source/_docs/z-wave/control-panel.markdown
@@ -36,7 +36,8 @@ Here is where you [include and exclude](/docs/z-wave/adding/) Z-Wave devices fro
* **Remove Failed Node** will remove a failed node from the network. The node needs to be on the controller's Failed Node List (marked as `is_failed: true`), otherwise this command will fail.
* **Replace Failed Node** will replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail.
* **Print Node** prints all state of Z-Wave node to the console log
-* **Rename Node** sets a node's name
+
+* **Rename Node** sets a node's name - this won't happen immediately, and requires you to restart Home Assistant (not reboot) to set the new name
* **Heal Node** starts healing of the node.(Update neighbour list and update return routes)
@@ -53,7 +54,9 @@ This is a dropdown where you can select all the entities of this node. Once sele
* **Refresh Entity** to refresh just that entity's values
* **Entity Attributes** to display the attributes of that entity (eg it's friendly name, the ID of the node, etc)
-Here you can mark a device as requiring polling (before 0.55 this was displayed at the top), so the controller is aware of changes because the device doesn't send updates itself. Do see the information on [polling here](/docs/z-wave/polling/), since excessive polling can break your Z-Wave network.
+Here you can mark a device as requiring polling so the controller is aware of changes because the device doesn't send updates itself. Do see the information on [polling here](/docs/z-wave/devices/#polling), since excessive polling can break your Z-Wave network.
+
+The **Polling intensity** says how many poll intervals does is this device polled on. For example, if you set 2 then it's polled on every second interval.
You can also exclude a Z-Wave devices from Home Assistant. You can do that if you have a device that you need to have on the Z-Wave network, but you don't want it to appear in Home Assistant, or if you've got a device that's failed and you're unable to exclude it.
@@ -109,6 +112,26 @@ You can set the *wakeup* interval (in seconds) of the device, this is shown for
Underneath that you can select any supported configuration parameter to see the current setting. You can then change this and select **Set Config Parameter** to updated it. Battery powered devices will be updated the next time they wake.
+## {% linkable_title Node user codes %}
+
+If your node has user codes, you can set and delete them. The format is raw hex Ascii code. Bellow the input you will see your actual code. For normal nodes this is as follows:
+```yaml
+\x30 = 0
+\x31 = 1
+\x32 = 2
+\x33 = 3
+\x34 = 4
+\x35 = 5
+\x36 = 6
+\x37 = 7
+\x38 = 8
+\x39 = 9
+```
+Some non compliant device like tag readers, have implemented to use raw hex code.
+Please refer to a hex ascii table to set your code. Example: http://www.asciitable.com/
+
+
## {% linkable_title OZW Log %}
+If you want to only retrieve some lines at the end of the log, you can specify that with the selection field. Max is the last 1000 lines and minimum is 0 which equals the whole log. If this is not specified, you will retrieve the whole log.
Select **Refresh** to display the log if you need it to check activities.
diff --git a/source/_docs/z-wave/device-specific.markdown b/source/_docs/z-wave/device-specific.markdown
index f7a219a2fc2..0aba503a710 100644
--- a/source/_docs/z-wave/device-specific.markdown
+++ b/source/_docs/z-wave/device-specific.markdown
@@ -47,12 +47,24 @@ $ echo -e -n "\x01\x08\x00\xF2\x51\x01\x01\x05\x01\x50" > /dev/serial/by-id/usb-
### {% linkable_title Razberry Board %}
-You need to disable the on-board Bluetooth since the board requires the use of the hardware UART (and there's only one on the Pi3). You do this by adding the following to the end of `/boot/config.txt`, then rebooting:
+You need to disable the on-board Bluetooth since the board requires the use of the hardware UART (and there's only one on the Pi3). You do this by adding the following to the end of `/boot/config.txt`:
```
dtoverlay=pi3-disable-bt
```
+Then disable the Bluetooth modem service:
+
+```bash
+$ sudo systemctl disable hciuart
+```
+
+Finally, reboot to make those changes active. It's been reported that this is also required on the Pi2.
+
+
+ If you've installed the Z-Way software, you'll need to ensure you disable it before you install Home Assistant or you won't be able to access the board. Do this with `sudo /etc/init.d/z-way-server stop; sudo update-rc.d z-way-server disable`.
+
+
### {% linkable_title Aeon Minimote %}
Here's a handy configuration for the Aeon Labs Minimote that defines all possible button presses. Put it into `automation.yaml`.
@@ -66,7 +78,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
event_data:
entity_id: zwave.aeon_labs_minimote_1
scene_id: 1
-
- id: mini_1_held
alias: 'Minimote Button 1 Held'
trigger:
@@ -75,7 +86,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
event_data:
entity_id: zwave.aeon_labs_minimote_1
scene_id: 2
-
- id: mini_2_pressed
alias: 'Minimote Button 2 Pressed'
trigger:
@@ -84,7 +94,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
event_data:
entity_id: zwave.aeon_labs_minimote_1
scene_id: 3
-
- id: mini_2_held
alias: 'Minimote Button 2 Held'
trigger:
@@ -93,7 +102,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
event_data:
entity_id: zwave.aeon_labs_minimote_1
scene_id: 4
-
- id: mini_3_pressed
alias: 'Minimote Button 3 Pressed'
trigger:
@@ -102,7 +110,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
event_data:
entity_id: zwave.aeon_labs_minimote_1
scene_id: 5
-
- id: mini_3_held
alias: 'Minimote Button 3 Held'
trigger:
@@ -111,7 +118,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
event_data:
entity_id: zwave.aeon_labs_minimote_1
scene_id: 6
-
- id: mini_4_pressed
alias: 'Minimote Button 4 Pressed'
trigger:
@@ -120,7 +126,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
event_data:
entity_id: zwave.aeon_labs_minimote_1
scene_id: 7
-
- id: mini_4_held
alias: 'Minimote Button 4 Held'
trigger:
@@ -156,3 +161,58 @@ Triple tap on|1|4
Triple tap off|2|4
Tap and hold on|1|2
Tap and hold off|2|2
+
+### {% linkable_title Fibaro Button FGPB-101-6 v3.2 %}
+
+
+
+For the Button, you may need to update the `COMMAND_CLASS_CENTRAL_SCENE` for each node in your `zwcfg` file with the following:
+
+```xml
+
+
+
+
+
+```
+
+Below is a table of the action/scenes for the Button (as a reference for other similar devices):
+
+**Action**|**scene\_id**|**scene\_data**
+:-----:|:-----:|:-----:
+Single tap on|1|0
+Double tap on|1|3
+Triple tap on|1|4
+
+Tap and hold wakes up the Button.
+
+### {% linkable_title Aeotec Wallmote %}
+
+
+
+For the Aeotec Wallmote, you may need to update the `COMMAND_CLASS_CENTRAL_SCENE` for each node in your `zwcfg` file with the following:
+
+```xml
+
+
+
+
+
+
+
+
+
+```
+
+Below is a table of the action/scenes for the Wallmote (as a reference for other similar devices):
+
+**Action**|**scene\_id**|**scene\_data**
+:-----:|:-----:|:-----:
+Button one single tap|1|TBC
+Button two single tap|2|TBC
+Button three single tap|3|TBC
+Button four single tap|4|TBC
+
+### {% linkable_title Zooz Toggle Switches %}
+
+Some models of the Zooz Toggle switches ship with an instruction manual with incorrect instruction for Z-Wave inclusion/exclusion. The instructions say that the switch should be quickly switched on-off-on for inclusion and off-on-off for exclusion. However, the correct method is on-on-on for inclusion and off-off-off for exclusion.
diff --git a/source/_docs/z-wave/entities.markdown b/source/_docs/z-wave/entities.markdown
index d18e7e39047..b5a597b4ebf 100644
--- a/source/_docs/z-wave/entities.markdown
+++ b/source/_docs/z-wave/entities.markdown
@@ -119,7 +119,7 @@ The meaning of the `alarm_level` entity depends on the nature of the alarm senso
- **254**: Deep sleep
- **255**: Case open
-If your device has an `access_control` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](omponents/binary_sensor.template/) to create one:
+If your device has an `access_control` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](/components/binary_sensor.template/) to create one:
```
binary_sensor:
@@ -128,10 +128,10 @@ binary_sensor:
YOUR_SENSOR:
friendly_name: "Friendly name here"
value_template: >-
- {% raw %}{%- if is_state('sensor.YOUR_SENSOR_access_control', '22') -%}
- on
+ {% raw %}{%- if is_state('sensor.YOUR_ORIGINAL_SENSOR_access_control', '22') -%}
+ true
{%- else -%}
- off
+ false
{%- endif -%}{% endraw %}
```
@@ -147,7 +147,7 @@ binary_sensor:
- **254**: Deep sleep
- **255**: Case open
-If your device has an `burglar` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](omponents/binary_sensor.template/) to create one:
+If your device has an `burglar` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](/components/binary_sensor.template/) to create one:
```
binary_sensor:
@@ -157,9 +157,9 @@ binary_sensor:
friendly_name: "Friendly name here"
value_template: >-
{% raw %}{%- if is_state('sensor.YOUR_SENSOR_burglar', '8') -%}
- on
+ true
{%- else -%}
- off
+ false
{%- endif -%}{% endraw %}
```
diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown
index 40ef9739c62..513028a96f0 100644
--- a/source/_docs/z-wave/installation.markdown
+++ b/source/_docs/z-wave/installation.markdown
@@ -25,7 +25,7 @@ $ sudo /Applications/Python\ x.x/Install\ Certificates.command
```
-The installation of python-openzwave can take half an hour or more on a Raspbery Pi.
+The installation of python-openzwave happens when you first enable the Z-Wave component, and can take half an hour or more on a Raspbery Pi.
## {% linkable_title Configuration %}
@@ -170,6 +170,15 @@ $ curl -d '{"devices": ["ttyAMA0"]}' http://hassio/homeassistant/options
After that, you need to change `usb_path` to `/dev/ttyAMA0`.
+### {% linkable_title RancherOS %}
+
+If you're using RancherOS for containers, you'll need to ensure you enable the kernel-extras service so that the `USB_ACM` module (also known as `cdc_acm`) is loaded:
+
+```bash
+$ sudo ros service enable kernel-extras
+$ sudo ros service up kernel-extras
+```
+
### {% linkable_title Network Key %}
Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices.
@@ -179,11 +188,19 @@ An easy script to generate a random key:
cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//'
```
+```yaml
+# Example configuration.yaml entry for network_key
+zwave:
+ network_key: "0x2e, 0xcc, 0xab, 0x1c, 0xa3, 0x7f, 0x0e, 0xb5, 0x70, 0x71, 0x2d, 0x98, 0x25, 0x43, 0xee, 0x0c"
+```
+
Ensure you keep a backup of this key. If you have to rebuild your system and don't have a backup of this key, you won't be able to reconnect to any security devices. This may mean you have to do a factory reset on those devices, and your controller, before rebuilding your Z-Wave network.
## {% linkable_title First Run %}
-Upon first run, the `zwave` component will take time to initialize entities and entities may appear with incomplete names. Running a network heal may speed up this process.
+The (compilation and) installation of python-openzwave happens when you first enable the Z-Wave component, and can take half an hour or more on a Raspbery Pi. When you upgrade Home Assistant and python-openzwave is also upgraded, this will also result in a delay while the new version is compiled and installed.
+
+The first run after adding a device is when the `zwave` component will take time to initialize the entities, some entities may appear with incomplete names. Running a network heal may speed up this process.
## {% linkable_title Troubleshooting %}
diff --git a/source/_posts/2019-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown b/source/_posts/2017-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown
similarity index 100%
rename from source/_posts/2019-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown
rename to source/_posts/2017-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown
diff --git a/source/_posts/2019-09-25-new-hassio-build-system.markdown b/source/_posts/2017-09-25-new-hassio-build-system.markdown
similarity index 100%
rename from source/_posts/2019-09-25-new-hassio-build-system.markdown
rename to source/_posts/2017-09-25-new-hassio-build-system.markdown
diff --git a/source/_posts/2017-11-04-release-57.markdown b/source/_posts/2017-11-04-release-57.markdown
index 0779d7b5a66..dc054b035ce 100644
--- a/source/_posts/2017-11-04-release-57.markdown
+++ b/source/_posts/2017-11-04-release-57.markdown
@@ -92,6 +92,11 @@ Okay, one more highlight before we'll let you check out the changelog. Contribut
- Update frontend with fixes for setting temperature on climate card ([@balloob])
- Fix setting max brightness for TRADFRI ([@ggravlingen] - [#10359])
+## {% linkable_title release 0.57.3 - november 11 %}
+
+- Tellstick Duo acync callback fix ([@stefan-jonasson] - [#10384]) ([tellstick docs])
+- Fixed update() method and removed `ding` feature from stickupcams/floodlight ([@tchellomello] - [#10428]) ([binary_sensor.ring docs]) ([camera.ring docs]) ([sensor.ring docs])
+
## {% linkable_title If you need help... %}
...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks.
@@ -643,4 +648,12 @@ Experiencing issues introduced by this release? Please report them in our [issue
[wink docs]: https://home-assistant.io/components/wink/
[xiaomi_aqara docs]: https://home-assistant.io/components/xiaomi_aqara/
[ikea email]: https://twitter.com/home_assistant/status/925373865802502144
-[wink-auth]: https://home-assistant.io/components/wink/#authenticate-using-developerwinkcomhttpsdeveloperwinkcom
\ No newline at end of file
+[wink-auth]: https://home-assistant.io/components/wink/#authenticate-using-developerwinkcomhttpsdeveloperwinkcom
+[#10384]: https://github.com/home-assistant/home-assistant/pull/10384
+[#10428]: https://github.com/home-assistant/home-assistant/pull/10428
+[@stefan-jonasson]: https://github.com/stefan-jonasson
+[@tchellomello]: https://github.com/tchellomello
+[binary_sensor.ring docs]: https://home-assistant.io/components/binary_sensor.ring/
+[camera.ring docs]: https://home-assistant.io/components/camera.ring/
+[sensor.ring docs]: https://home-assistant.io/components/sensor.ring/
+[tellstick docs]: https://home-assistant.io/components/tellstick/
diff --git a/source/_posts/2017-11-10-ttn-with-mqtt.markdown b/source/_posts/2017-11-10-ttn-with-mqtt.markdown
new file mode 100644
index 00000000000..d619623c020
--- /dev/null
+++ b/source/_posts/2017-11-10-ttn-with-mqtt.markdown
@@ -0,0 +1,198 @@
+---
+layout: post
+title: "Home Assistant and The Things Network (TTN)"
+description: "How to use transfer MQTT messages from The Things Network (TTN) to a local broker."
+date: 2017-11-10 14:00:00 +0200
+date_formatted: "November 10, 2017"
+author: Fabian Affolter
+author_twitter: fabaff
+comments: true
+categories: How-To
+og_image: /images/blog/2017-11-mqtt-ttn/social-ha-ttn.png
+---
+
+The Home Assistant integration for [The Things Network (TTN)](https://www.thethingsnetwork.org/) uses their [Storage](https://www.thethingsnetwork.org/docs/applications/storage/) feature to get the sensor data. The easiest way to observe TTN sensors would be [MQTT](https://www.thethingsnetwork.org/docs/applications/mqtt/) as it doesn't requires any additional configuration.
+
+At the moment Home Assistant only supports one [MQTT broker](/docs/mqtt/). This means that you can't subscribe to topics which are located on different brokers.
+
+
+
+## {% linkable_title Subscribe to the TTN Broker %}
+
+To check what your devices are sending, subscribe to the topic `+/devices/+/up` with a command-line tool like `mosquitto_sub`. The `` is the postfix of the **Handler** entry in your **Application overview**. `` is the **Application ID** and `` is your access key.
+
+```bash
+$ mosquitto_sub -v -h .thethings.network -t '+/devices/+/up' -u '' -P ''
+{
+ "app_id": "ha-demo",
+ "dev_id": "device01",
+ "hardware_serial": "AJDJENDNHRBFBBT",
+ "port": 1,
+ [...]
+```
+
+The payload contains details about the device itself and the sensor data. The sensor data is stored in `payload_fields`. Depending on the device configuration it may contain a single value or multiple values.
+
+## {% linkable_title The relay %}
+
+To be able to work locally with the MQTT data that is received from the devices connected to TTN, we need to transfer it to the local broker. With this simple script below all messages from a given device are re-published on your local MQTT broker after they are received. Modify the script with your details as outlined in the previous section.
+
+```python
+"""Relay MQTT messages from The Things Network to a local MQTT broker."""
+import paho.mqtt.client as mqtt
+import paho.mqtt.publish as publish
+
+DEVICE_NAME = ''
+
+TTN_BROKER = '.thethings.network'
+TTN_USERNAME = ''
+TTN_PASSWORD = ''
+TTN_TOPIC = '+/devices/{}/up'.format(DEVICE_NAME)
+
+LOCAL_BROKER = '192.168.0.2'
+LOCAL_TOPIC = 'home/ttn/garden_temp'
+
+
+def on_connect(client, userdata, flags, rc):
+ """Subscribe to topic after connection to broker is made."""
+ print("Connected with result code", str(rc))
+ client.subscribe(TTN_TOPIC)
+
+
+def on_message(client, userdata, msg):
+ """Relay message to a different broker."""
+ publish.single(
+ LOCAL_TOPIC, payload=msg.payload, qos=0, retain=False,
+ hostname=LOCAL_BROKER, port=1883, client_id='ttn-local',
+ keepalive=60, will=None, auth=None, tls=None, protocol=mqtt.MQTTv311)
+
+
+client = mqtt.Client()
+client.username_pw_set(TTN_USERNAME, password=TTN_PASSWORD)
+client.on_connect = on_connect
+client.on_message = on_message
+client.connect(TTN_BROKER, 1883, 60)
+
+client.loop_forever()
+```
+
+Save it and run it. As soon as a MQTT message is received from your device you should see it on your local broker (here 192.168.0.2) if you subscribe to `#` or the topic given in the script above `home/ttn/garden_temp`.
+
+```bash
+$ mosquitto_sub -h 192.168.0.2 -t "#" -d
+```
+
+## {% linkable_title The sensor %}
+
+All we would need now, is a [`mqtt` sensor](/components/sensor.mqtt/) with a `value_template`. With a sophisticated custom sensor it would be possible to displaying a little more than just the state. The device is only sending the temperature `{"temperature": 7.5}` but there are other details available which the sensor should show.
+
+```python
+"""Support for The Things Network MQTT sensors."""
+import asyncio
+from datetime import timedelta
+import json
+import logging
+
+import voluptuous as vol
+
+import homeassistant.components.mqtt as mqtt
+from homeassistant.components.mqtt import CONF_STATE_TOPIC
+from homeassistant.const import CONF_NAME, CONF_UNIT_OF_MEASUREMENT
+from homeassistant.core import callback
+import homeassistant.helpers.config_validation as cv
+from homeassistant.helpers.entity import Entity
+
+_LOGGER = logging.getLogger(__name__)
+
+DEFAULT_NAME = 'MQTT TTN Sensor'
+DEFAULT_FORCE_UPDATE = False
+DEPENDENCIES = ['mqtt']
+
+PLATFORM_SCHEMA = mqtt.MQTT_RO_PLATFORM_SCHEMA.extend({
+ vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
+ vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string,
+
+})
+
+
+@asyncio.coroutine
+def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
+ """Set up the TTN MQTT Sensor."""
+ async_add_devices([MqttTtnSensor(
+ config.get(CONF_NAME), config.get(CONF_STATE_TOPIC),
+ config.get(CONF_UNIT_OF_MEASUREMENT))
+ ])
+
+
+class MqttTtnSensor(Entity):
+ """Representation of a sensor."""
+
+ def __init__(self, name, state_topic, unit_of_measurement):
+ """Initialize the sensor."""
+ self._state = None
+ self._name = name
+ self._unit_of_measurement = unit_of_measurement
+ self._attributes = {}
+ self._state_topic = state_topic
+
+ def async_added_to_hass(self):
+ """Subscribe to MQTT events."""
+ @callback
+ def message_received(topic, payload, qos):
+ """Handle new MQTT messages."""
+
+ try:
+ data = json.loads(payload)
+ except json.JSONDecodeError:
+ _LOGGER.error("Invalid JSON data received: %s", data)
+
+ self._state = data['payload_fields'][next(
+ iter(data['payload_fields']))]
+ self._attributes = data
+ del self._attributes['payload_fields']
+ del self._attributes['metadata']
+ self.async_schedule_update_ha_state()
+
+ return mqtt.async_subscribe(
+ self.hass, self._state_topic, message_received, 0)
+
+ @property
+ def should_poll(self):
+ """No polling needed."""
+ return False
+
+ @property
+ def name(self):
+ """Return the name of the sensor."""
+ return self._name
+
+ @property
+ def unit_of_measurement(self):
+ """Return the unit this state is expressed in."""
+ return self._unit_of_measurement
+
+ @property
+ def state_attributes(self):
+ """Return the attributes of the entity."""
+ return self._attributes
+
+ @property
+ def state(self):
+ """Return the state of the entity."""
+ return self._state
+```
+
+Store it in `/custom_components/sensor/mqtt_ttn.py` and it will handle the messages.
+
+## {% linkable_title The configuration %}
+
+Now create the [`mqtt_ttn` sensor](/components/sensor.mqtt/) entry for your device.
+
+```
+sensor:
+ - platform: mqtt_ttn
+ name: TTN Sensor
+ state_topic: "home/ttn/garden_temp"
+```
+
+This solution is not production-ready, scalable or stable but it could fill the gape till Home Assistant is able to connect to multiple MQTT brokers. If you have multiple devices relay all messages to your local broker and add an configuration variable to `mqtt_ttn` sensor which allows you to select the device.
diff --git a/source/_posts/2017-11-12-tor.markdown b/source/_posts/2017-11-12-tor.markdown
new file mode 100644
index 00000000000..32b35415987
--- /dev/null
+++ b/source/_posts/2017-11-12-tor.markdown
@@ -0,0 +1,102 @@
+---
+layout: post
+title: "Secure remote access to Home Assistant using Tor"
+description: "Using Tor with Home Assistant and Hass.io."
+date: 2017-11-12 10:00:00 +0200
+date_formatted: "November 12, 2017"
+author: Franck Nijhof & Fabian Affolter
+author_twitter: frenck
+comments: true
+categories: How-To
+og_image: /images/blog/2017-11-tor/social.png
+---
+
+Routers and gateways provided by broadband internet providers are very often limited regarding features and configuration possibilities. Most of these limitations affect the opportunities that allow users to set up port-forwarding, DMZ, and DHCP reservations since the suppliers figured that average user does not want (or should not) deal with these. Making your Home Assistant instance available remotely (and securely), in this case, becomes more difficult. Are you one of those unlucky ones?
+
+There are a couple of options available to achieve a remote (and secure) accessible Home Assistant instance. However, almost all of them require you to: open one or more ports on your router, expose a public IP address, and require you to reserve a fixed IP in your DHCP server (or set up a static IP address). Examples of these are:
+
+- Combination of [DuckDNS](/components/duckdns/) (or similar), [Let's Encrypt](/docs/ecosystem/certificates/lets_encrypt/) (SSL), DHCP reservation, and forwarding a port to your device running Home Assistant.
+- Setup a VPN, which often requires more hardware and software. Additionally, it also requires port-forwarding, DHCP reservation and most likely [DuckDNS](/components/duckdns/) (or similar).
+- [SSH tunnel-ing](/blog/2017/11/02/secure-shell-tunnel/). Which still requires port-forwarding, DHCP reservation and most likely (yeah, you've guessed it) [DuckDNS](/components/duckdns/) (or similar).
+
+There is, however, another option available that most people do not realize: [Tor](https://www.torproject.org). [Tor](https://www.torproject.org) offers a capability that they refer to as [Tor's Hidden Services](https://www.torproject.org/docs/hidden-services.html.en), which allows you to securely access your Home Assistant installation *without* the need for all these things. No need to forward and open ports, no need to expose your public IP, no DNS entry, no need for SSL certificates, and you do not have to assign a fixed IP to the device running your Home Assistant.
+
+The most amazing part? It is super easy to set up!
+
+
+
+## {% linkable_title Setting up Tor %}
+
+Our [documentation](/docs/ecosystem/tor/) provides an detailled guide about seting up a [Tor's Hidden Service](https://www.torproject.org/docs/hidden-services.html.en). The setup is straight-forward:
+
+1. Install Tor. On a Debian-based system: `$ sudo apt-get install tor`. On Fedora: `$ sudo dnf install tor`
+2. Modify Tor's main configuration file `/etc/tor/torrc` to include the following lines:
+
+ ```bash
+ ############### This section is just for location-hidden services ###
+
+ ## Once you have configured a hidden service, you can look at the
+ ## contents of the file ".../hidden_service/hostname" for the address
+ ## to tell people.
+ ...
+ HiddenServiceDir /var/lib/tor/homeassistant/
+ HiddenServicePort 80 127.0.0.1:8123
+ ...
+ ```
+3. Restart Tor: `$ sudo systemctl restart tor`
+4. The Tor-generated hostname file contains the hostname you need to access your installation.
+
+ ```bash
+ $ sudo cat /var/lib/tor/homeassistant/hostname
+ abcdef1234567890.onion
+ ```
+
+## {% linkable_title Tor add-on for Hass.io %}
+
+[Franck Nijhof (@frenck)](https://github.com/frenck) created the [Tor add-on](https://github.com/hassio-addons/addon-tor) for [Hass.io](/hassio/). This add-on makes the installation and the setup extremely simple. Go to the **Hass.io** panel, then to the **Store**, copy `https://github.com/hassio-addons/repository` into the text box of **Add-On Repositories** and save it.
+
+A new entry **Tor** will show-up in the list of add-ons. Click on it to install it. The configuration is done in **Options**. Please refer to the [Configuration documentation](https://github.com/hassio-addons/addon-tor#configuration) for further details. A possible configuration could look like the sample below (which is the default configuration).
+
+```json
+{
+ "log_level": "info",
+ "socks": false,
+ "hidden_services": true,
+ "stealth": false,
+ "client_names": [],
+ "ports": [
+ "8123:80"
+ ]
+}
+```
+
+When you are done, press **Save** and then **Start**. In the **Logs** section, you can see what the add-on is doing. Watch out for an entry like the one below, which will tell you your hostname on the Tor network.
+
+```bash
+INFO: -----------------------------------------------------------
+INFO: Your Home Assistant instance is available on Tor!
+INFO: Address: abcdef1234567890.onion
+INFO: -----------------------------------------------------------
+```
+
+Don't worry if you missed it, restarting the add-on will display it again. The details are also stored and available in the `/ssl/tor/hidden_service/hostname` file.
+
+## {% linkable_title Tor clients %}
+
+To access you Home Assistant via the Tor Hidden Service, you will need a Tor client. There are multiple clients, for different devices and platforms, available. The [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en) is by far the simplest option, which is available for Windows, MacOS & Linux.
+
+Simply download and install the [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en), start it, and enter the "dot onion" address you've gained from the earlier steps (`abcdef1234567890.onion` in this case). Voila!
+
+Some other clients:
+
+- [Orbot](https://guardianproject.info/apps/orbot/) for Android
+- [Orfox](https://play.google.com/store/apps/details?id=info.guardianproject.orfox&hl=nl) for Android
+- [Onion Browser](https://mike.tig.as/onionbrowser/) for iOS
+
+## {% linkable_title Cranking up security %}
+
+The setup described in this blog post is easy and relatively secure, but anyone who knows your `.onion` address can still connect to your Home Assistant instance (Remember to use passwords!). With all of the [discussion](https://blog.torproject.org/quick-simple-guide-tor-and-internet-things-so-far) about putting your IoT on the Tor Network, maybe you want to add an extra layer of defense, especially if you’re going to be the only one that uses it. Tor offers an additional layer of security, called "Hidden Service Authentication", usually referred to as "Stealth"-mode.
+
+This "Stealth"-mode adds an extra layer of security to your Hidden Service by only responding to a client that passes a unique secret cookie as it connects. Obviously, this requires additional configuration on the Tor client applications.
+
+Additional information can be found in the [Tor documentation](/docs/ecosystem/tor/) and the [Tor add-on repository](https://github.com/hassio-addons/addon-tor), including how to setup the "Stealth"-mode. The Tor Project itself provides details about a variaty of topics in their [documentation](https://www.torproject.org/docs/documentation.html.en).
diff --git a/source/_posts/2017-11-18-release-58.markdown b/source/_posts/2017-11-18-release-58.markdown
new file mode 100644
index 00000000000..80d8a664c1a
--- /dev/null
+++ b/source/_posts/2017-11-18-release-58.markdown
@@ -0,0 +1,503 @@
+---
+layout: post
+title: "0.58: More translations, faster frontend, system log"
+description: "We now have 445 translators helping out and the frontend is receiving some polishing."
+date: 2017-11-18 04:00:00
+date_formatted: "November 18, 2017"
+author: Paulus Schoutsen
+author_twitter: balloob
+comments: true
+categories: Release-Notes
+og_image: /images/blog/2017-11-0.58/components.png
+---
+
+
+
+
+The Hass.io release of 0.58 will be delayed by a couple of days because Pascal is moving this weekend.
+
+
+## {% linkable_title Translation update %}
+
+Translations are up and running in full speed. Shortly after the last release we got our translation pipeline figured out. [@armills] and [@c727] are doing an amazing job managing this project. We've doubled the number of supported languages to 42 and the amount of keys to translate went from 8 to 130. Our translaters are on top of their game and 79% is already translated.
+
+Talking about our translators, we now have 445 people with an account to help with translations. Not bad for 3 weeks!
+
+And because more translations is more better, [@robbiet480] has added the iOS app to Lokalise, our translation management platform. The iOS app is currently supported in 7 different languages.
+
+[Learn more about how to help with translations](https://home-assistant.io/blog/2017/11/05/frontend-translations/)
+
+## {% linkable_title Frontend improvements continue %}
+
+Thanks to [@Andrey-git] we now are able to serve the frontend in modern JavaScript. Leveraging modern JavaScript makes the frontend faster to load and run. For now it's opt-in but we're looking into making it opt-out in the future. The ES5 version of the frontend will remain available for older devices.
+
+To try it once, add `?latest` to your Home Assistant bookmark. To make it the default on your installation, update your config to look like this:
+
+```
+frontend:
+ javascript_version: latest
+```
+
+
+For Custom UI users: your custom UI will need to be updated before it can work with the new version of the frontend.
+
+
+### {% linkable_title System log enhanced %}
+
+Our about screen that shows the error logs has gained a nice upgrade by [@postlund]. Now the 50 latest exceptions will be displayed with the option to get more information.
+
+
+
+ Screenshot of the about screen showing the system log.
+
+
+## {% linkable_title New Platforms %}
+
+- pyLoad download sensor ([@iMarkus] - [#10089]) ([sensor.pyload docs]) (new-platform)
+- Add LaCrosse sensor platform ([@hthiery] - [#10195]) ([sensor.lacrosse docs]) (new-platform)
+- Refactor Neato botvac components as a vacuum ([@jabesq] - [#9946]) ([neato docs]) ([sensor.neato docs]) ([switch.neato docs]) ([vacuum.neato docs]) (breaking change) (new-platform)
+- Add platform and sensors for Vultr VPS ([@GenericStudent] - [#9928]) ([vultr docs]) ([binary_sensor.vultr docs]) ([sensor.vultr docs]) (new-platform)
+- Adds support for Tile® Bluetooth trackers ([@bachya] - [#10478]) ([device_tracker.tile docs]) (new-platform)
+- Support presence detection using Hitron Coda router ([@arilotter] - [#9682]) ([device_tracker.hitron_coda docs]) (new-platform)
+- Add basic backend support for a system log ([@postlund] - [#10492]) ([system_log docs]) (new-platform)
+- New sensor viaggiatreno. ([@fabfurnari] - [#10522]) ([sensor.viaggiatreno docs]) (new-platform)
+
+## {% linkable_title Release 0.58.1 - November 21 %}
+
+- Fix yweather ([@tinloaf] - [#10661]) ([weather.yweather docs])
+- Properly initialize Harmony remote ([@amelchio] - [#10665]) ([remote.harmony docs])
+- Handle the new version of HydroQuebec website ([@titilambert] - [#10682]) ([sensor.hydroquebec docs])
+- Fix for time_date sensor ([@etsinko] - [#10694]) ([sensor.time_date docs])
+- Frontend fixes ([@andrey-git] [@armills] [@balloob])
+
+## {% linkable_title If you need help... %}
+
+...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks.
+
+## {% linkable_title Reporting Issues %}
+
+Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template.
+
+
+
+## {% linkable_title Breaking Changes %}
+
+ - `hass.states.is_state_attr(entity_id, attribute, value)` has been removed. The template version still exists. Unused method parameter `wait` has been removed from `hass.bus.async_fire` ([@balloob] - [#10305]) (breaking change)
+- Refactor Neato botvac components as a vacuum ([@jabesq] - [#9946]) ([neato docs]) ([switch.neato docs]) ([vacuum.neato docs]) (breaking change) (new-platform)
+- Lutron released a firmware updated for the Caseta system which removed our ability to connect to and control the bridge device over SSH, breaking compatibility with pylutron_caseta and Home Assistant. Component has been updated to work again, please see the docs on how to set it up. ([@mdonoughe] - [#10286]) ([lutron_caseta docs]) (breaking change)
+
+## {% linkable_title All changes %}
+
+- Bump python-miio for improved device support ([@syssi] - [#10294]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs])
+- pyLoad download sensor ([@iMarkus] - [#10089]) ([sensor.pyload docs]) (new-platform)
+- Add LaCrosse sensor platform ([@hthiery] - [#10195]) ([sensor.lacrosse docs]) (new-platform)
+- Clean up core ([@balloob] - [#10305]) (breaking change)
+- Refactor Neato botvac components as a vacuum ([@jabesq] - [#9946]) ([neato docs]) ([sensor.neato docs]) ([switch.neato docs]) ([vacuum.neato docs]) (breaking change) (new-platform)
+- Move constants to setup.py ([@fabaff] - [#10312]) ([no_ip docs])
+- Add option to overwrite file to the downloader component ([@arsaboo] - [#10298]) ([downloader docs])
+- Use constants for HTTP headers ([@fabaff] - [#10313]) ([binary_sensor.aurora docs]) ([device_tracker.tplink docs]) ([device_tracker.upc_connect docs]) ([media_player.bluesound docs]) ([sensor.haveibeenpwned docs]) ([sensor.zamg docs]) ([telegram_bot.polling docs])
+- fix a import in test causing vs code to fail to discover ([@perosb] - [#10358])
+- Upgrade sqlalchemy to 1.1.15 ([@fabaff] - [#10330])
+- Move counter component ([@fabaff] - [#10332]) ([counter docs])
+- Add platform and sensors for Vultr VPS ([@GenericStudent] - [#9928]) ([vultr docs]) ([binary_sensor.vultr docs]) ([sensor.vultr docs]) (new-platform)
+- Add heal_node and test_node services. ([@turbokongen] - [#10369]) ([zwave docs])
+- Addition of new binary sensor class 'plug' ([@echox] - [#10336]) ([binary_sensor docs])
+- Upgrae simplepush to 1.1.4 ([@fabaff] - [#10365]) ([notify.simplepush docs])
+- Update aiohttp to 2.3.1 ([@pvizeli] - [#10139])
+- Device model identification of the Xiaomi Philips Ceiling Lamp fixed. ([@syssi] - [#10401]) ([light.xiaomi_miio docs])
+- Zwave save cache to file now. ([@turbokongen] - [#10381])
+- Bump to 0.12.2 to fix urllib3 dependency ([@MisterWil] - [#10420]) ([abode docs])
+- Remove extra info from zwave entity states ([@armills] - [#10413]) ([zwave docs])
+- Fixes issue #10425 ([@robmarkcole] - [#10426]) ([sensor.london_air docs])
+- Add baudrate option to Serial sensor ([@dgomes] - [#10439]) ([sensor.serial docs]) (breaking change)
+- Remove model info from state ([@balloob] - [#10399]) ([light.tradfri docs])
+- update tibber library ([@danielhiversen] - [#10460]) ([sensor.tibber docs])
+- update pywebpush==1.3.0 ([@perosb] - [#10374]) ([notify.html5 docs])
+- Fix slow WOL switch test ([@balloob] - [#10455])
+- Fix recorder stop on SQLite vacuuming error ([@milanvo] - [#10405])
+- Add include/exclude filter to mqtt_statestream ([@mw-white] - [#10354]) ([mqtt_statestream docs])
+- Upgrade to 0.1.2 ([@TopdRob] - [#10348]) ([notify.free_mobile docs])
+- Upgrade pyatv to 0.3.6 ([@TopdRob] - [#10349]) ([apple_tv docs])
+- Remove useless temp converting ([@pvizeli] - [#10465]) ([climate.homematic docs])
+- Upgrade apns2 to 0.3.0 ([@TopdRob] - [#10347]) ([notify.apns docs])
+- Improvement of KNX climate component ([@Julius2342] - [#10388]) ([knx docs]) ([climate.knx docs])
+- Updated gc100 package requirement to 1.0.3a ([@davegravy] - [#10484]) ([gc100 docs])
+- Remove lag from Harmony remote platform ([@amelchio] - [#10218]) ([remote docs]) ([remote.harmony docs])
+- Improve error handling. ([@cgtobi] - [#10482]) ([influxdb docs])
+- Upgrade psutil to 5.4.1 ([@fabaff] - [#10490]) ([sensor.systemmonitor docs])
+- Upgrade youtube_dl to 2017.11.06 ([@fabaff] - [#10491]) ([media_extractor docs])
+- Fix for telegram polling. (added pausing when error occurs) ([@sander76] - [#10214]) ([telegram_bot.polling docs])
+- add JSON processing capabilities to sensor_serial ([@dgomes] - [#10476]) ([sensor.serial docs])
+- upgrade to new pylutron_caseta with TLS ([@mdonoughe] - [#10286]) ([lutron_caseta docs]) (breaking change)
+- Bump dev to 0.58.0.dev0 ([@fabaff] - [#10510])
+- OwnTracks Message Handling ([@ehagan] - [#10489]) ([device_tracker.owntracks docs])
+- Add support for Alexa intent slot synonyms. ([@kmdm] - [#10469])
+- Introduce media progress for Yamaha Musiccast devices ([@jalmeroth] - [#10256]) ([media_player.yamaha_musiccast docs])
+- Add an option to serve ES6 JS to clients ([@andrey-git] - [#10474])
+- Adapt to new yarl API ([@tinloaf] - [#10527]) ([tts.google docs])
+- Update nederlandse_spoorwegen.py to include platform information ([@hmmbob] - [#10494]) ([sensor.nederlandse_spoorwegen docs])
+- Pin yarl ([@tinloaf] - [#10528])
+- Support configuration of region (no service url neccessary ([@molobrakos] - [#10513]) ([volvooncall docs])
+- Fix import in tests ([@andrey-git] - [#10525])
+- Update axis.py ([@Kane610] - [#10412]) ([axis docs])
+- Add attribute to show who last un/set alarm (SPC) ([@mbrrg] - [#9906]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs])
+- Fixed Wink Quirky Aros bugs. ([@w1ll1am23] - [#10533]) ([climate.wink docs])
+- Adds support for Tile® Bluetooth trackers ([@bachya] - [#10478]) ([device_tracker.tile docs]) (new-platform)
+- telegram_bot: Support for sending videos ([@vickyg3] - [#10470]) ([telegram_bot docs]) ([notify.telegram docs])
+- Pre-construct frontend index.html ([@balloob] - [#10520])
+- notify.html5: use new json save and load functions ([@perosb] - [#10416]) ([notify.html5 docs])
+- Change to device state attributes ([@dgomes] - [#10536]) ([sensor.serial docs])
+- Google Assistant request sync service ([@r4nd0mbr1ck] - [#10165])
+- Optimize concurrent access to media player image cache ([@amelchio] - [#10345]) ([media_player docs])
+- webostv: set current source correctly ([@KapJI] - [#10548]) ([media_player.webostv docs])
+- Upgrade pysnmp to 4.4.2 ([@fabaff] - [#10539]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) ([switch.snmp docs])
+- Fix and clean lametric ([@MartinHjelmare] - [#10391]) ([lametric docs]) ([notify.lametric docs])
+- Support presence detection using Hitron Coda router ([@arilotter] - [#9682]) ([device_tracker.hitron_coda docs]) (new-platform)
+- Better support for int types ([@ziotibia81] - [#10409]) ([sensor.modbus docs])
+- Don't use the 'id' field since it can be autogenerated (fixes #10551). ([@kmdm] - [#10554])
+- pad packets to multiple of 4 characters ([@SteveEdson] - [#10560]) ([switch.broadlink docs])
+- Move temperature display helper from components to helpers ([@fabaff] - [#10555]) ([climate docs]) ([weather docs]) ([climate.eq3btsmart docs])
+- webostv: Reduce default timeout to prevent log spamming ([@abmantis] - [#10564]) ([media_player.webostv docs])
+- Fix lametric sound ([@MartinHjelmare] - [#10562]) ([lametric docs]) ([notify.lametric docs])
+- Use a template for the Universal media player state ([@azogue] - [#10395]) ([media_player.universal docs])
+- Verisure: Added option to set installation giid ([@abjorshammar] - [#10504]) ([verisure docs])
+- Bump ring_doorbell to 0.1.7 ([@tchellomello] - [#10566]) ([ring docs])
+- Add code to enable discovery for mqtt cover ([@marthoc] - [#10580]) ([cover.mqtt docs])
+- Google Assistant for climate entities: Support QUERY and respect system-wide unit_system setting. ([@emosenkis] - [#10346])
+- turn service call handler into coroutine ([@NovapaX] - [#10576]) ([configurator docs])
+- Add basic backend support for a system log ([@postlund] - [#10492]) ([system_log docs]) (new-platform)
+- Tradfri unique identities ([@NovapaX] - [#10414]) ([tradfri docs])
+- Add panel build type ([@balloob] - [#10589])
+- Cloud updates ([@balloob] - [#10567])
+- Upgrade youtube_dl to 2017.11.15 ([@fabaff] - [#10592]) ([media_extractor docs])
+- Fix Yahoo Weather icons over SSL ([@OnFreund] - [#10602]) ([sensor.yweather docs])
+- Arlo - Fixes for updated library ([@jwillaz] - [#9892]) ([arlo docs]) ([camera.arlo docs]) ([sensor.arlo docs])
+- Do not add panel from system_log ([@postlund] - [#10600]) ([system_log docs])
+- Fix ValueError exception ([@ziotibia81] - [#10596]) ([sensor.modbus docs])
+- Fix Hikvision (motion) switch bug ([@arsaboo] - [#10608]) ([switch.hikvisioncam docs])
+- Allow unicode when dumping yaml ([@andrey-git] - [#10607])
+- Support script execution for Alexa ([@micbase] - [#10517])
+- bump client version ([@wardcraigj] - [#10610]) ([alarm_control_panel.totalconnect docs])
+- New sensor viaggiatreno. ([@fabfurnari] - [#10522]) ([sensor.viaggiatreno docs]) (new-platform)
+- Modbus switch register support ([@ziotibia81] - [#10563]) ([switch.modbus docs])
+- Upgrade mypy to 0.550 ([@fabaff] - [#10591])
+- Small fix to be able to use mac and vendor in "device_tracker_new_device" event. ([@Boltgolt] - [#10537]) ([device_tracker docs])
+- add support for color temperature and color to Google Assistant ([@perosb] - [#10039])
+- Cleanup old stale restore feature ([@pvizeli] - [#10593]) ([light docs])
+- Correct input_datetime initial value parsing ([@colindunn] - [#10417]) ([input_datetime docs])
+- Change generic thermostat to control heating on mode change Off -> Auto ([@milanvo] - [#10601]) ([climate.generic_thermostat docs])
+- Improve WUnderground config validation ([@milanvo] - [#10573]) ([sensor.wunderground docs])
+- update hbmqtt to 0.9.1 ([@masarliev] - [#10611])
+- Allow to pass YandexTTS options via sevice call ([@andrey-git] - [#10578]) ([tts docs]) ([tts.yandextts docs])
+- Snapcast: bump version and enable reconnect. ([@janLo] - [#10626]) ([media_player.snapcast docs])
+- Fix async missing decorators ([@armills] - [#10628])
+- Alexa slot synonym fix ([@devspacenine] - [#10614])
+- Adjust logging in downloader component ([@amelchio] - [#10622]) ([downloader docs])
+- Added sorted() to python_script ([@etsinko] - [#10621]) ([python_script docs])
+- Add loglinefetch for frontend API call ([@turbokongen] - [#10579])
+- Fixes AirVisual bug regarding incorrect location data ([@bachya] - [#10054]) ([sensor.airvisual docs])
+- Make MQTT reconnection logic more resilient and fix race condition ([@cezarsa] - [#10133]) ([mqtt docs])
+- Alexa improvements ([@robbiet480] - [#10632])
+- Print entity type in "too slow" warnings ([@andrey-git] - [#10641])
+- Bump pyatv to 0.3.8 ([@postlund] - [#10643]) ([apple_tv docs])
+- Implement entity and domain exclude/include for Alexa ([@robbiet480] - [#10647])
+
+[#10039]: https://github.com/home-assistant/home-assistant/pull/10039
+[#10054]: https://github.com/home-assistant/home-assistant/pull/10054
+[#10089]: https://github.com/home-assistant/home-assistant/pull/10089
+[#10133]: https://github.com/home-assistant/home-assistant/pull/10133
+[#10139]: https://github.com/home-assistant/home-assistant/pull/10139
+[#10165]: https://github.com/home-assistant/home-assistant/pull/10165
+[#10195]: https://github.com/home-assistant/home-assistant/pull/10195
+[#10214]: https://github.com/home-assistant/home-assistant/pull/10214
+[#10218]: https://github.com/home-assistant/home-assistant/pull/10218
+[#10256]: https://github.com/home-assistant/home-assistant/pull/10256
+[#10286]: https://github.com/home-assistant/home-assistant/pull/10286
+[#10294]: https://github.com/home-assistant/home-assistant/pull/10294
+[#10298]: https://github.com/home-assistant/home-assistant/pull/10298
+[#10305]: https://github.com/home-assistant/home-assistant/pull/10305
+[#10312]: https://github.com/home-assistant/home-assistant/pull/10312
+[#10313]: https://github.com/home-assistant/home-assistant/pull/10313
+[#10330]: https://github.com/home-assistant/home-assistant/pull/10330
+[#10332]: https://github.com/home-assistant/home-assistant/pull/10332
+[#10336]: https://github.com/home-assistant/home-assistant/pull/10336
+[#10345]: https://github.com/home-assistant/home-assistant/pull/10345
+[#10346]: https://github.com/home-assistant/home-assistant/pull/10346
+[#10347]: https://github.com/home-assistant/home-assistant/pull/10347
+[#10348]: https://github.com/home-assistant/home-assistant/pull/10348
+[#10349]: https://github.com/home-assistant/home-assistant/pull/10349
+[#10354]: https://github.com/home-assistant/home-assistant/pull/10354
+[#10358]: https://github.com/home-assistant/home-assistant/pull/10358
+[#10365]: https://github.com/home-assistant/home-assistant/pull/10365
+[#10369]: https://github.com/home-assistant/home-assistant/pull/10369
+[#10374]: https://github.com/home-assistant/home-assistant/pull/10374
+[#10381]: https://github.com/home-assistant/home-assistant/pull/10381
+[#10388]: https://github.com/home-assistant/home-assistant/pull/10388
+[#10391]: https://github.com/home-assistant/home-assistant/pull/10391
+[#10395]: https://github.com/home-assistant/home-assistant/pull/10395
+[#10399]: https://github.com/home-assistant/home-assistant/pull/10399
+[#10401]: https://github.com/home-assistant/home-assistant/pull/10401
+[#10405]: https://github.com/home-assistant/home-assistant/pull/10405
+[#10409]: https://github.com/home-assistant/home-assistant/pull/10409
+[#10412]: https://github.com/home-assistant/home-assistant/pull/10412
+[#10413]: https://github.com/home-assistant/home-assistant/pull/10413
+[#10414]: https://github.com/home-assistant/home-assistant/pull/10414
+[#10416]: https://github.com/home-assistant/home-assistant/pull/10416
+[#10417]: https://github.com/home-assistant/home-assistant/pull/10417
+[#10420]: https://github.com/home-assistant/home-assistant/pull/10420
+[#10426]: https://github.com/home-assistant/home-assistant/pull/10426
+[#10439]: https://github.com/home-assistant/home-assistant/pull/10439
+[#10455]: https://github.com/home-assistant/home-assistant/pull/10455
+[#10460]: https://github.com/home-assistant/home-assistant/pull/10460
+[#10465]: https://github.com/home-assistant/home-assistant/pull/10465
+[#10469]: https://github.com/home-assistant/home-assistant/pull/10469
+[#10470]: https://github.com/home-assistant/home-assistant/pull/10470
+[#10474]: https://github.com/home-assistant/home-assistant/pull/10474
+[#10476]: https://github.com/home-assistant/home-assistant/pull/10476
+[#10478]: https://github.com/home-assistant/home-assistant/pull/10478
+[#10482]: https://github.com/home-assistant/home-assistant/pull/10482
+[#10484]: https://github.com/home-assistant/home-assistant/pull/10484
+[#10489]: https://github.com/home-assistant/home-assistant/pull/10489
+[#10490]: https://github.com/home-assistant/home-assistant/pull/10490
+[#10491]: https://github.com/home-assistant/home-assistant/pull/10491
+[#10492]: https://github.com/home-assistant/home-assistant/pull/10492
+[#10494]: https://github.com/home-assistant/home-assistant/pull/10494
+[#10504]: https://github.com/home-assistant/home-assistant/pull/10504
+[#10510]: https://github.com/home-assistant/home-assistant/pull/10510
+[#10513]: https://github.com/home-assistant/home-assistant/pull/10513
+[#10517]: https://github.com/home-assistant/home-assistant/pull/10517
+[#10520]: https://github.com/home-assistant/home-assistant/pull/10520
+[#10522]: https://github.com/home-assistant/home-assistant/pull/10522
+[#10525]: https://github.com/home-assistant/home-assistant/pull/10525
+[#10527]: https://github.com/home-assistant/home-assistant/pull/10527
+[#10528]: https://github.com/home-assistant/home-assistant/pull/10528
+[#10533]: https://github.com/home-assistant/home-assistant/pull/10533
+[#10536]: https://github.com/home-assistant/home-assistant/pull/10536
+[#10537]: https://github.com/home-assistant/home-assistant/pull/10537
+[#10539]: https://github.com/home-assistant/home-assistant/pull/10539
+[#10548]: https://github.com/home-assistant/home-assistant/pull/10548
+[#10554]: https://github.com/home-assistant/home-assistant/pull/10554
+[#10555]: https://github.com/home-assistant/home-assistant/pull/10555
+[#10560]: https://github.com/home-assistant/home-assistant/pull/10560
+[#10562]: https://github.com/home-assistant/home-assistant/pull/10562
+[#10563]: https://github.com/home-assistant/home-assistant/pull/10563
+[#10564]: https://github.com/home-assistant/home-assistant/pull/10564
+[#10566]: https://github.com/home-assistant/home-assistant/pull/10566
+[#10567]: https://github.com/home-assistant/home-assistant/pull/10567
+[#10573]: https://github.com/home-assistant/home-assistant/pull/10573
+[#10576]: https://github.com/home-assistant/home-assistant/pull/10576
+[#10578]: https://github.com/home-assistant/home-assistant/pull/10578
+[#10579]: https://github.com/home-assistant/home-assistant/pull/10579
+[#10580]: https://github.com/home-assistant/home-assistant/pull/10580
+[#10589]: https://github.com/home-assistant/home-assistant/pull/10589
+[#10591]: https://github.com/home-assistant/home-assistant/pull/10591
+[#10592]: https://github.com/home-assistant/home-assistant/pull/10592
+[#10593]: https://github.com/home-assistant/home-assistant/pull/10593
+[#10596]: https://github.com/home-assistant/home-assistant/pull/10596
+[#10600]: https://github.com/home-assistant/home-assistant/pull/10600
+[#10601]: https://github.com/home-assistant/home-assistant/pull/10601
+[#10602]: https://github.com/home-assistant/home-assistant/pull/10602
+[#10607]: https://github.com/home-assistant/home-assistant/pull/10607
+[#10608]: https://github.com/home-assistant/home-assistant/pull/10608
+[#10610]: https://github.com/home-assistant/home-assistant/pull/10610
+[#10611]: https://github.com/home-assistant/home-assistant/pull/10611
+[#10614]: https://github.com/home-assistant/home-assistant/pull/10614
+[#10621]: https://github.com/home-assistant/home-assistant/pull/10621
+[#10622]: https://github.com/home-assistant/home-assistant/pull/10622
+[#10626]: https://github.com/home-assistant/home-assistant/pull/10626
+[#10628]: https://github.com/home-assistant/home-assistant/pull/10628
+[#10632]: https://github.com/home-assistant/home-assistant/pull/10632
+[#10641]: https://github.com/home-assistant/home-assistant/pull/10641
+[#10643]: https://github.com/home-assistant/home-assistant/pull/10643
+[#10647]: https://github.com/home-assistant/home-assistant/pull/10647
+[#9682]: https://github.com/home-assistant/home-assistant/pull/9682
+[#9892]: https://github.com/home-assistant/home-assistant/pull/9892
+[#9906]: https://github.com/home-assistant/home-assistant/pull/9906
+[#9928]: https://github.com/home-assistant/home-assistant/pull/9928
+[#9946]: https://github.com/home-assistant/home-assistant/pull/9946
+[@Boltgolt]: https://github.com/Boltgolt
+[@GenericStudent]: https://github.com/GenericStudent
+[@Julius2342]: https://github.com/Julius2342
+[@Kane610]: https://github.com/Kane610
+[@KapJI]: https://github.com/KapJI
+[@MartinHjelmare]: https://github.com/MartinHjelmare
+[@MisterWil]: https://github.com/MisterWil
+[@NovapaX]: https://github.com/NovapaX
+[@OnFreund]: https://github.com/OnFreund
+[@SteveEdson]: https://github.com/SteveEdson
+[@TopdRob]: https://github.com/TopdRob
+[@abjorshammar]: https://github.com/abjorshammar
+[@abmantis]: https://github.com/abmantis
+[@amelchio]: https://github.com/amelchio
+[@andrey-git]: https://github.com/andrey-git
+[@arilotter]: https://github.com/arilotter
+[@armills]: https://github.com/armills
+[@arsaboo]: https://github.com/arsaboo
+[@azogue]: https://github.com/azogue
+[@bachya]: https://github.com/bachya
+[@balloob]: https://github.com/balloob
+[@cezarsa]: https://github.com/cezarsa
+[@cgtobi]: https://github.com/cgtobi
+[@colindunn]: https://github.com/colindunn
+[@danielhiversen]: https://github.com/danielhiversen
+[@davegravy]: https://github.com/davegravy
+[@devspacenine]: https://github.com/devspacenine
+[@dgomes]: https://github.com/dgomes
+[@echox]: https://github.com/echox
+[@ehagan]: https://github.com/ehagan
+[@emosenkis]: https://github.com/emosenkis
+[@etsinko]: https://github.com/etsinko
+[@fabaff]: https://github.com/fabaff
+[@fabfurnari]: https://github.com/fabfurnari
+[@hmmbob]: https://github.com/hmmbob
+[@hthiery]: https://github.com/hthiery
+[@iMarkus]: https://github.com/iMarkus
+[@jabesq]: https://github.com/jabesq
+[@jalmeroth]: https://github.com/jalmeroth
+[@janLo]: https://github.com/janLo
+[@jwillaz]: https://github.com/jwillaz
+[@kmdm]: https://github.com/kmdm
+[@marthoc]: https://github.com/marthoc
+[@masarliev]: https://github.com/masarliev
+[@mbrrg]: https://github.com/mbrrg
+[@mdonoughe]: https://github.com/mdonoughe
+[@micbase]: https://github.com/micbase
+[@milanvo]: https://github.com/milanvo
+[@molobrakos]: https://github.com/molobrakos
+[@mw-white]: https://github.com/mw-white
+[@perosb]: https://github.com/perosb
+[@postlund]: https://github.com/postlund
+[@pvizeli]: https://github.com/pvizeli
+[@r4nd0mbr1ck]: https://github.com/r4nd0mbr1ck
+[@robbiet480]: https://github.com/robbiet480
+[@c727]: https://github.com/c727
+[@robmarkcole]: https://github.com/robmarkcole
+[@sander76]: https://github.com/sander76
+[@syssi]: https://github.com/syssi
+[@tchellomello]: https://github.com/tchellomello
+[@tinloaf]: https://github.com/tinloaf
+[@turbokongen]: https://github.com/turbokongen
+[@vickyg3]: https://github.com/vickyg3
+[@w1ll1am23]: https://github.com/w1ll1am23
+[@wardcraigj]: https://github.com/wardcraigj
+[@ziotibia81]: https://github.com/ziotibia81
+[abode docs]: https://home-assistant.io/components/abode/
+[alarm_control_panel.spc docs]: https://home-assistant.io/components/alarm_control_panel.spc/
+[alarm_control_panel.totalconnect docs]: https://home-assistant.io/components/alarm_control_panel.totalconnect/
+[apple_tv docs]: https://home-assistant.io/components/apple_tv/
+[arlo docs]: https://home-assistant.io/components/arlo/
+[axis docs]: https://home-assistant.io/components/axis/
+[binary_sensor docs]: https://home-assistant.io/components/binary_sensor/
+[binary_sensor.aurora docs]: https://home-assistant.io/components/binary_sensor.aurora/
+[binary_sensor.spc docs]: https://home-assistant.io/components/binary_sensor.spc/
+[binary_sensor.vultr docs]: https://home-assistant.io/components/binary_sensor.vultr/
+[camera.arlo docs]: https://home-assistant.io/components/camera.arlo/
+[climate docs]: https://home-assistant.io/components/climate/
+[climate.eq3btsmart docs]: https://home-assistant.io/components/climate.eq3btsmart/
+[climate.generic_thermostat docs]: https://home-assistant.io/components/climate.generic_thermostat/
+[climate.homematic docs]: https://home-assistant.io/components/climate.homematic/
+[climate.knx docs]: https://home-assistant.io/components/climate.knx/
+[climate.wink docs]: https://home-assistant.io/components/climate.wink/
+[cloud docs]: https://home-assistant.io/components/cloud/
+[cloud.auth_api docs]: https://home-assistant.io/components/cloud.auth_api/
+[cloud.const docs]: https://home-assistant.io/components/cloud.const/
+[cloud.http_api docs]: https://home-assistant.io/components/cloud.http_api/
+[cloud.iot docs]: https://home-assistant.io/components/cloud.iot/
+[config.zwave docs]: https://home-assistant.io/components/config.zwave/
+[configurator docs]: https://home-assistant.io/components/configurator/
+[counter docs]: https://home-assistant.io/components/counter/
+[cover.mqtt docs]: https://home-assistant.io/components/cover.mqtt/
+[device_tracker docs]: https://home-assistant.io/components/device_tracker/
+[device_tracker.hitron_coda docs]: https://home-assistant.io/components/device_tracker.hitron_coda/
+[device_tracker.owntracks docs]: https://home-assistant.io/components/device_tracker.owntracks/
+[device_tracker.snmp docs]: https://home-assistant.io/components/device_tracker.snmp/
+[device_tracker.tile docs]: https://home-assistant.io/components/device_tracker.tile/
+[device_tracker.tplink docs]: https://home-assistant.io/components/device_tracker.tplink/
+[device_tracker.upc_connect docs]: https://home-assistant.io/components/device_tracker.upc_connect/
+[downloader docs]: https://home-assistant.io/components/downloader/
+[gc100 docs]: https://home-assistant.io/components/gc100/
+[google_assistant.smart_home docs]: https://home-assistant.io/components/google_assistant.smart_home/
+[hassio docs]: https://home-assistant.io/components/hassio/
+[influxdb docs]: https://home-assistant.io/components/influxdb/
+[input_datetime docs]: https://home-assistant.io/components/input_datetime/
+[knx docs]: https://home-assistant.io/components/knx/
+[lametric docs]: https://home-assistant.io/components/lametric/
+[light docs]: https://home-assistant.io/components/light/
+[light.tradfri docs]: https://home-assistant.io/components/light.tradfri/
+[light.xiaomi_miio docs]: https://home-assistant.io/components/light.xiaomi_miio/
+[lutron_caseta docs]: https://home-assistant.io/components/lutron_caseta/
+[media_extractor docs]: https://home-assistant.io/components/media_extractor/
+[media_player docs]: https://home-assistant.io/components/media_player/
+[media_player.bluesound docs]: https://home-assistant.io/components/media_player.bluesound/
+[media_player.snapcast docs]: https://home-assistant.io/components/media_player.snapcast/
+[media_player.universal docs]: https://home-assistant.io/components/media_player.universal/
+[media_player.webostv docs]: https://home-assistant.io/components/media_player.webostv/
+[media_player.yamaha_musiccast docs]: https://home-assistant.io/components/media_player.yamaha_musiccast/
+[mqtt docs]: https://home-assistant.io/components/mqtt/
+[mqtt.discovery docs]: https://home-assistant.io/components/mqtt.discovery/
+[mqtt.server docs]: https://home-assistant.io/components/mqtt.server/
+[mqtt_statestream docs]: https://home-assistant.io/components/mqtt_statestream/
+[neato docs]: https://home-assistant.io/components/neato/
+[no_ip docs]: https://home-assistant.io/components/no_ip/
+[notify.apns docs]: https://home-assistant.io/components/notify.apns/
+[notify.free_mobile docs]: https://home-assistant.io/components/notify.free_mobile/
+[notify.html5 docs]: https://home-assistant.io/components/notify.html5/
+[notify.lametric docs]: https://home-assistant.io/components/notify.lametric/
+[notify.simplepush docs]: https://home-assistant.io/components/notify.simplepush/
+[notify.telegram docs]: https://home-assistant.io/components/notify.telegram/
+[python_script docs]: https://home-assistant.io/components/python_script/
+[remote docs]: https://home-assistant.io/components/remote/
+[remote.harmony docs]: https://home-assistant.io/components/remote.harmony/
+[ring docs]: https://home-assistant.io/components/ring/
+[sensor.airvisual docs]: https://home-assistant.io/components/sensor.airvisual/
+[sensor.arlo docs]: https://home-assistant.io/components/sensor.arlo/
+[sensor.haveibeenpwned docs]: https://home-assistant.io/components/sensor.haveibeenpwned/
+[sensor.lacrosse docs]: https://home-assistant.io/components/sensor.lacrosse/
+[sensor.london_air docs]: https://home-assistant.io/components/sensor.london_air/
+[sensor.modbus docs]: https://home-assistant.io/components/sensor.modbus/
+[sensor.neato docs]: https://home-assistant.io/components/sensor.neato/
+[sensor.nederlandse_spoorwegen docs]: https://home-assistant.io/components/sensor.nederlandse_spoorwegen/
+[sensor.pyload docs]: https://home-assistant.io/components/sensor.pyload/
+[sensor.serial docs]: https://home-assistant.io/components/sensor.serial/
+[sensor.snmp docs]: https://home-assistant.io/components/sensor.snmp/
+[sensor.systemmonitor docs]: https://home-assistant.io/components/sensor.systemmonitor/
+[sensor.tibber docs]: https://home-assistant.io/components/sensor.tibber/
+[sensor.viaggiatreno docs]: https://home-assistant.io/components/sensor.viaggiatreno/
+[sensor.vultr docs]: https://home-assistant.io/components/sensor.vultr/
+[sensor.wunderground docs]: https://home-assistant.io/components/sensor.wunderground/
+[sensor.yweather docs]: https://home-assistant.io/components/sensor.yweather/
+[sensor.zamg docs]: https://home-assistant.io/components/sensor.zamg/
+[spc docs]: https://home-assistant.io/components/spc/
+[switch.broadlink docs]: https://home-assistant.io/components/switch.broadlink/
+[switch.hikvisioncam docs]: https://home-assistant.io/components/switch.hikvisioncam/
+[switch.modbus docs]: https://home-assistant.io/components/switch.modbus/
+[switch.neato docs]: https://home-assistant.io/components/switch.neato/
+[switch.snmp docs]: https://home-assistant.io/components/switch.snmp/
+[switch.xiaomi_miio docs]: https://home-assistant.io/components/switch.xiaomi_miio/
+[system_log docs]: https://home-assistant.io/components/system_log/
+[telegram_bot docs]: https://home-assistant.io/components/telegram_bot/
+[telegram_bot.polling docs]: https://home-assistant.io/components/telegram_bot.polling/
+[tradfri docs]: https://home-assistant.io/components/tradfri/
+[tts docs]: https://home-assistant.io/components/tts/
+[tts.google docs]: https://home-assistant.io/components/tts.google/
+[tts.yandextts docs]: https://home-assistant.io/components/tts.yandextts/
+[vacuum.neato docs]: https://home-assistant.io/components/vacuum.neato/
+[verisure docs]: https://home-assistant.io/components/verisure/
+[volvooncall docs]: https://home-assistant.io/components/volvooncall/
+[vultr docs]: https://home-assistant.io/components/vultr/
+[weather docs]: https://home-assistant.io/components/weather/
+[weather.demo docs]: https://home-assistant.io/components/weather.demo/
+[websocket_api docs]: https://home-assistant.io/components/websocket_api/
+[zwave docs]: https://home-assistant.io/components/zwave/
+[#10661]: https://github.com/home-assistant/home-assistant/pull/10661
+[#10665]: https://github.com/home-assistant/home-assistant/pull/10665
+[#10682]: https://github.com/home-assistant/home-assistant/pull/10682
+[#10694]: https://github.com/home-assistant/home-assistant/pull/10694
+[@amelchio]: https://github.com/amelchio
+[@etsinko]: https://github.com/etsinko
+[@tinloaf]: https://github.com/tinloaf
+[@titilambert]: https://github.com/titilambert
+[remote.harmony docs]: https://home-assistant.io/components/remote.harmony/
+[sensor.hydroquebec docs]: https://home-assistant.io/components/sensor.hydroquebec/
+[sensor.time_date docs]: https://home-assistant.io/components/sensor.time_date/
+[weather.yweather docs]: https://home-assistant.io/components/weather.yweather/
diff --git a/source/_posts/2017-11-29-hassio-virtual-machine.markdown b/source/_posts/2017-11-29-hassio-virtual-machine.markdown
new file mode 100644
index 00000000000..2f53ef97d9d
--- /dev/null
+++ b/source/_posts/2017-11-29-hassio-virtual-machine.markdown
@@ -0,0 +1,153 @@
+---
+layout: post
+title: "Set up Hass.io on top of a virtual machine"
+description: "A how-to about using Hass.io on x86_64 hardware in a virtualized way."
+date: 2017-11-29 06:00:00 +0000
+date_formatted: "November 29, 2017"
+author: Fabian Affolter
+author_twitter: fabaff
+comments: true
+categories: How-To
+og_image: /images/blog/2017-11-hassio-virtual/social.png
+---
+
+
+The images for the Raspberry Pi family and the Intel NUC are an easy way to get started with [Hass.io](/hassio/). For a test or if you have a system which is already hosting virtual machines then the [**Hass.io installer**](/hassio/installation/#alternative-install-on-generic-linux-server) is an option to use Hass.io in a virtualized environment. In this guide the host is a Fedora 27 system with [libvirt](https://libvirt.org/) support and the guest will be running Debian 9. Hass.io will be installed on the guest.
+
+
+
+Assuming that you already have setup `libvirtd`. You might need to install `virt-builder` and `virt-viewer` additionally.
+
+```bash
+$ sudo dnf -y install libguestfs-tools-c virt-install virt-viewer
+```
+
+We will create a virtual machine with Debian 9 and a 10 GB disk image in the QCOW format. Use `$ virt-builder --list` to get an overview about what's operating systems are available if you prefer to use a different system.
+
+```bash
+$ sudo virt-builder debian-9 \
+ --output /var/lib/libvirt/images/hassio.img \
+ --format qcow2 \
+ --size 10G \
+ --root-password password:test123 \
+ --hostname hassio \
+ --firstboot-command "dpkg-reconfigure openssh-server"
+[...]
+[ 147.6] Finishing off
+ Output file: /var/lib/libvirt/images/hassio.img
+ Output size: 10.0G
+ Output format: qcow2
+ Total usable space: 9.3G
+ Free space: 8.1G (87%)
+```
+
+Now, we are making our new virtual machine available for `libvirtd`. If you get an error that the OS is unknown, use `$ osinfo-query os` to get the name to use with `--os-variant`. To access the virtual machine is connected to the bridge `bridge0`.
+
+```bash
+$ sudo virt-install --name hassio --import --ram 1024 \
+ --os-variant debian9 -w bridge=bridge0 \
+ --autostart --disk /var/lib/libvirt/images/hassio.img
+```
+
+
+
+ Hass.io virtual machine in Virtual Machine Manager
+
+
+Depending on your preferences you can use the Virtual Machine Manager (`virt-manager`) or `virsh` to manage the created virtual machine. Log in and create an user with `# useradd ha` and set a password with `# passwd ha`. We will need that user to make a SSH connection to the virtual machine.
+
+Log in as `ha` with the given password. If your are using the default network of `libvirtd` then the DHCP range is defined in `/var/lib/libvirt/dnsmasq/default.conf`. In this guide the virtual machine is present at 192.168.0.109.
+
+```bash
+$ ssh ha@192.168.0.109
+ha@192.168.0.109's password:
+Linux hassio 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06) x86_64
+[...]
+$
+```
+
+Install the requirements after you switch the user to `root`.
+
+```bash
+$ su
+Password:
+root@hassio:/home/ha#
+root@hassio:/home/ha# apt-get update
+root@hassio:/home/ha# apt-get install bash socat jq curl avahi-daemon \
+ apt-transport-https ca-certificates
+```
+
+We want the latest Docker release. This requires additional steps to set it up as unlike other distributions Debian is lacking behind with current packages.
+
+```bash
+root@hassio:/home/ha# wget https://download.docker.com/linux/debian/gpg
+root@hassio:/home/ha# apt-key add gpg
+OK
+root@hassio:/home/ha# echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee -a /etc/apt/sources.list.d/docker.list
+root@hassio:/home/ha# apt-get update
+```
+
+Now, it's possible to install a current release of [Docker](https://www.docker.com/).
+
+```bash
+root@hassio:/home/ha# apt-get -y install docker-ce
+```
+
+Start `docker` and enable it.
+
+```bash
+root@hassio:/home/ha# systemctl start docker && systemctl enable docker
+```
+
+An [installation script](https://github.com/home-assistant/hassio-build/tree/master/install#install-hassio) will take care about the setup of all moving parts.
+
+```bash
+root@hassio:/home/ha# curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install | bash -
+[INFO] Install supervisor docker
+[INFO] Install generic HostControl
+[INFO] Install startup scripts
+[INFO] Init systemd
+Created symlink /etc/systemd/system/multi-user.target.wants/hassio-supervisor.service → /etc/systemd/system/hassio-supervisor.service.
+[INFO] Start services
+```
+
+If it's done, then there will be two new containers.
+
+```bash
+root@hassio:/home/ha# docker ps
+CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
+ada5bbfc74f0 homeassistant/qemux86-64-homeassistant "/usr/bin/entry.sh..." 4 minutes ago Up 4 minutes homeassistant
+5954ac452ffc homeassistant/amd64-hassio-supervisor "/usr/bin/entry.sh..." 7 minutes ago Up 7 minutes hassio_supervisor
+```
+
+After a connection to the container which is containing Home Assistant is made, you will see the log output.
+
+```bash
+root@hassio:/home/ha# docker attach --sig-proxy=false ada5bbfc74f0
+2017-11-28 19:24:30 INFO (MainThread) [homeassistant.core] Bus:Handling
+
+ Hass.io overview
+
+
+Keep in mind that there are limitations with this approach. Not all [add-ons](/addons/) will work and some don't make sense to use as the hardware is not present. E.g., use the [SSH community add-on](https://github.com/hassio-addons/addon-ssh) instead of the default [SSH add-on](/addons/ssh/).
+
diff --git a/source/_posts/2017-12-03-release-59.markdown b/source/_posts/2017-12-03-release-59.markdown
new file mode 100644
index 00000000000..38f1f744860
--- /dev/null
+++ b/source/_posts/2017-12-03-release-59.markdown
@@ -0,0 +1,405 @@
+---
+layout: post
+title: "0.59: Order pizza, Entity Picker, Color Wheel"
+description: "If you don't want to create items on our shopping list with HTTP requests, just order pizza!"
+date: 2017-12-03 02:00:00
+date_formatted: "December 3, 2017"
+author: Fabian Affolter
+author_twitter: fabaff
+comments: true
+categories: Release-Notes
+og_image: /images/blog/2017-12-0.59/components.png
+---
+
+
+
+We are proud to announce the availability of Home Assistant 0.59. To keep you in the loop: This is the second last release in 2017. We have stuck to our bi-weekly release cycle for another year but we decided that we will take a little break between Christmas and New Year.
+
+## {% linkable_title Dominos Pizza platform %}
+With the Dominos Pizza integration made by [@wardcraigj] your home is now taking care that you don't starve. In combination with a [Skybell](/components/skybell/) or a [DoorBird](/components/doorbird/) you will know exactly when the pizza is in front of your door.
+
+## {% linkable_title Color picker %}
+[@NovapaX] created a new color picker. While dragging the color badge with your finger, a badge will appear above your finger so you can see the current color.
+
+
+
+ Screenshot of the color wheel.
+
+
+## {% linkable_title Shopping list tweaks %}
+[@balloob] has refreshed the shopping list UI to make it more usable. It's now possible to add items by typing, instead of just voice. Also editting has been made easier.
+
+## {% linkable_title Entity picker %}
+[@balloob] improved the way if you want to pick an entity. In the automation editor, the script editor and the service section of the Developer Tools it's much easier to identify the right one! The automation editor will only suggest relevant entities.
+
+
+
+ Screenshot of the of the Enitity Picker.
+
+
+## {% linkable_title Hass.io Add-ons %}
+If you follow our [twitter feed](https://twitter.com/home_assistant) then you may already know that [@frenck](https://github.com/frenck) spent some time to bring new stuff to the [Community Hass.io Add-ons repository](https://github.com/hassio-addons/repository).
+
+- [Cloud9 IDE](https://github.com/hassio-addons/addon-ide)
+- [Terminal support](https://github.com/hassio-addons/addon-terminal)
+- New release of the [Tor add-on](https://github.com/hassio-addons/addon-tor)
+
+## {% linkable_title New Platforms %}
+
+- Support for Unifi direct access device tracker (No unifi controller software) ([@w1ll1am23] - [#10097]) ([device_tracker.unifi_direct docs]) (new-platform)
+- Tahoma platform for Somfy Covers and Sensors ([@philklei] - [#10652]) ([tahoma docs]) ([cover.tahoma docs]) ([sensor.tahoma docs]) (new-platform)
+- New Hive Component / Platforms ([@Rendili] - [#9804]) ([hive docs]) ([climate.hive docs]) ([light.hive docs]) ([sensor.hive docs]) ([switch.hive docs]) (new-platform)
+- Add Dominos Pizza platform ([@wardcraigj] - [#10379]) ([dominos docs]) (new-platform)
+- Add tts.baidu platform ([@zhujisheng] - [#10724]) ([tts.baidu docs]) (new-platform)
+- Create ecobee weather platform ([@PhracturedBlue] - [#10869]) ([ecobee docs]) ([weather.ecobee docs]) (new-platform)
+
+## {% linkable_title Release 0.59.1 - December 4 %}
+
+- Fix Notifications for Android TV ([@danielperna84] - [#10798]) ([notify.nfandroidtv docs])
+- fix iOS component config generation ([@wrboyce] - [#10923])
+- Fix color wheel in group more info dialogs ([@NovapaX] - [#10934])
+- Dominos no order fix ([@wardcraigj] - [#10935]) ([dominos docs])
+
+## {% linkable_title If you need help... %}
+
+...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks.
+
+## {% linkable_title Reporting Issues %}
+
+Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template.
+
+
+
+## {% linkable_title Breaking Changes %}
+
+- Added cycles config option to LaMetric notifications ([@frittes] - [#10656]) ([notify.lametric docs]) (breaking change)
+- Fix name collision when using multiple Hue bridges ([@zBart] - [#10486]) ([light.hue docs]) (breaking change)
+- Single LEDs in Blinkt support ([@matemaciek] - [#10581]) ([light.blinkt docs]) (breaking change)
+- Tellduslive update with support for auto config and Local api ([@fredrike] - [#10435]) ([tellduslive docs]) (breaking change)
+- Add useragent-based detection of JS version ([@andrey-git] - [#10776]) (breaking change)
+
+## {% linkable_title All changes %}
+
+- Added unit_of_measurement to Currencylayer ([@arsaboo] - [#10598]) ([sensor.currencylayer docs])
+- Change generic thermostat - any toggle device as heater switch ([@milanvo] - [#10597]) ([climate.generic_thermostat docs])
+- Add hddtemp sensor device even if unreachable. ([@cgtobi] - [#10623]) ([sensor.hddtemp docs])
+- Restore target temperature for generic thermostat ([@tinloaf] - [#10635]) ([climate.generic_thermostat docs])
+- Update lnetatmo ([@gieljnssns] - [#10631]) ([netatmo docs])
+- Support for Unifi direct access device tracker (No unifi controller software) ([@w1ll1am23] - [#10097]) ([device_tracker.unifi_direct docs]) (new-platform)
+- Add Facebook Notification tests ([@broox] - [#10642])
+- Change some warnings to info ([@cgarwood] - [#10386]) ([emulated_hue docs])
+- Added cycles config option to LaMetric notifications ([@frittes] - [#10656]) ([notify.lametric docs]) (breaking change)
+- Netatmo httperror403 fix ([@gieljnssns] - [#10659]) ([netatmo docs])
+- Bump dev to 0.59.0.dev0 ([@fabaff] - [#10675])
+- Include unit_of_measurement as InfluxDb field ([@PeteBa] - [#9790]) ([influxdb docs])
+- Tahoma platform for Somfy Covers and Sensors ([@philklei] - [#10652]) ([tahoma docs]) ([cover.tahoma docs]) ([sensor.tahoma docs]) (new-platform)
+- Populate measurement state field for HA states like home/not_home ([@PeteBa] - [#9833]) ([influxdb docs])
+- Reorganize lint travis builds ([@balloob] - [#10670])
+- Refactored to new global json saving and loading ([@mnigbur] - [#10677])
+- Convert configurator to use markdown ([@balloob] - [#10668]) ([configurator docs]) ([light.hue docs])
+- index.html improvements ([@balloob] - [#10696])
+- Add Arm Custom Bypass to alarm_control_panel ([@uchagani] - [#10697]) ([alarm_control_panel docs])
+- Fix conversation ([@balloob] - [#10686]) ([conversation docs])
+- Shopping list: add item HTTP API ([@balloob] - [#10674]) ([shopping_list docs])
+- Add presence device_class ([@arsaboo] - [#10705]) ([binary_sensor docs])
+- python-miio version bumped for improved device support. ([@syssi] - [#10720]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs])
+- Adding Queue count sensor ([@bigwoof] - [#10723]) ([sensor.sabnzbd docs])
+- Bump pychromecast to 1.0.2 ([@OttoWinter] - [#10728]) ([media_player.cast docs])
+- Fix unit conversion for Sensibo A/C units ([@bryanyork] - [#10692]) ([climate.sensibo docs])
+- Optimised images. Saved 80 KB out of 656 KB. 12.3% overall (up to 32.1% per file) ([@grischard] - [#10735])
+- Add transmission rate ([@svenstaro] - [#10740]) ([sensor.fritzbox_netmonitor docs])
+- Update pytradfri to 4.1.0 ([@lwis] - [#10521]) ([tradfri docs]) ([light.tradfri docs])
+- Use new DoorBirdPy (v0.1.0) ([@Klikini] - [#10734]) ([doorbird docs])
+- Add fan and reduce I/O calls in radiotherm ([@TD22057] - [#10437]) ([climate.radiotherm docs])
+- New Hive Component / Platforms ([@Rendili] - [#9804]) ([hive docs]) ([climate.hive docs]) ([light.hive docs]) ([sensor.hive docs]) ([switch.hive docs]) (new-platform)
+- Temporarily fix yahoo weather API issue and add unit test. ([@cgtobi] - [#10737]) ([sensor.yweather docs])
+- Google assistant climate mode fix ([@braddparker] - [#10726]) ([google_assistant.smart_home docs])
+- Protect sensitive information for Amcrest cameras ([@tchellomello] - [#10569]) ([amcrest docs]) ([camera.amcrest docs]) ([sensor.amcrest docs])
+- InfluxDB send retry after IOError ([@janLo] - [#10263]) ([influxdb docs])
+- Add Dominos Pizza platform ([@wardcraigj] - [#10379]) ([dominos docs]) (new-platform)
+- Fix name collision when using multiple Hue bridges ([@zBart] - [#10486]) ([light.hue docs]) (breaking change)
+- Make shell_command async ([@n8henrie] - [#10741]) ([shell_command docs])
+- Update CODEOWNERS with hive Component / Platforms ([@Rendili] - [#10775])
+- Bump total-connect-client version ([@uchagani] - [#10769]) ([alarm_control_panel.totalconnect docs])
+- Fix scene description formatting. ([@balloob] - [#10785])
+- Fixes #10773: Demo Alarm Broken ([@uchagani] - [#10777]) ([alarm_control_panel.demo docs])
+- Load Ring camera only with Ring Protect plan activated ([@tchellomello] - [#10739]) ([ring docs]) ([camera.ring docs])
+- system_log improvements ([@andrey-git] - [#10709]) ([system_log docs])
+- Fix WUnderground error handling, rework entity methods ([@milanvo] - [#10295]) ([sensor.wunderground docs])
+- Add away_mode_name to arlo alarm control panel ([@bcl1713] - [#10796]) ([alarm_control_panel.arlo docs])
+- Add missing docstring ([@fabaff] - [#10812]) ([notify.pushbullet docs])
+- Cloud cognito switch ([@balloob] - [#10823]) ([cloud docs]) ([cloud.auth_api docs]) ([cloud.iot docs])
+- Added sensor types from telldus server src ([@rasmusbe] - [#10787]) ([sensor.tellduslive docs])
+- Add tts.baidu platform ([@zhujisheng] - [#10724]) ([tts.baidu docs]) (new-platform)
+- make RGB values consistent as int. fixes #10766 ([@perosb] - [#10782])
+- Single LEDs in Blinkt support ([@matemaciek] - [#10581]) ([light.blinkt docs]) (breaking change)
+- Add debug ([@dgomes] - [#10828]) ([sensor.serial docs])
+- Fix "recently pair device" ([@stephenyeargin] - [#10832])
+- Fixed Yeelight's color temperature conversion to RGB ([@chocomega] - [#10831]) ([light.yeelight docs])
+- Fix for Sensibo with missing temperature ([@andrey-git] - [#10801]) ([climate.sensibo docs])
+- upgrade somecomfort to 0.5.0 ([@dferrante] - [#10834]) ([climate.honeywell docs])
+- Add support for logarithm in templates ([@odinuge] - [#10824])
+- Changing handling for google_assistant groups to treat them as lights. ([@snowzach] - [#10111])
+- Tellduslive update with support for auto config and Local api ([@fredrike] - [#10435]) ([tellduslive docs]) (breaking change)
+- KNX: Added config option for broadcasting current time to KNX bus. ([@Julius2342] - [#10654]) ([knx docs])
+- Ecobee set humidity level ([@cbulock] - [#10780]) ([ecobee docs]) ([climate.ecobee docs])
+- Add device class for low battery ([@schmittx] - [#10829]) ([binary_sensor docs])
+- Tellduslive: Use magic constants for battery level. Also, the previous formula for battery level was wrong. ([@molobrakos] - [#10788]) ([tellduslive docs])
+- Add useragent-based detection of JS version ([@andrey-git] - [#10776]) (breaking change)
+- add support for multiple execution per execute request ([@perosb] - [#10844]) ([google_assistant.http docs])
+- Upgrade HomeMatic, add devices ([@danielperna84] - [#10845]) ([homematic docs]) ([binary_sensor.homematic docs]) ([sensor.homematic docs])
+- Climate component: add supported_features ([@tinloaf] - [#10658]) ([climate docs]) ([climate.generic_thermostat docs]) ([climate.mqtt docs])
+- Upgrade mutagen to 1.39 ([@fabaff] - [#10851]) ([tts docs])
+- Updated codeowner for Tile device tracker ([@bachya] - [#10861])
+- Revert "KNX: Added config option for broadcasting current time to KNX bus. (#10654)" ([@Julius2342] - [#10874]) ([knx docs])
+- Upgrade distro to 1.1.0 ([@fabaff] - [#10850]) ([updater docs])
+- Bugfix trigger state with multible entities ([@pvizeli] - [#10857]) ([automation.state docs])
+- tellstick fix DEPENDENCIES and update tellcore-net ([@pvizeli] - [#10859]) ([tellstick docs]) ([sensor.tellstick docs])
+- Upgrade aiohttp to 2.3.5 ([@fabaff] - [#10889])
+- Upgrade fastdotcom to 0.0.3 ([@fabaff] - [#10886]) ([sensor.fastdotcom docs])
+- Upgrade schiene to 0.19 ([@fabaff] - [#10887]) ([sensor.deutsche_bahn docs])
+- Xiaomi Vacuum: remove deprecated calls ([@rytilahti] - [#10839]) ([vacuum.xiaomi_miio docs])
+- Create ecobee weather platform ([@PhracturedBlue] - [#10869]) ([ecobee docs]) ([weather.ecobee docs]) (new-platform)
+- Microsoft Text-to-speech: Fixing missing en-gb support bug ([@jeroenterheerdt] - [#10429]) ([tts.microsoft docs])
+- Upgrade youtube_dl to 2017.11.26 ([@fabaff] - [#10890]) ([media_extractor docs])
+- Upgrade yarl to 0.15.0 ([@fabaff] - [#10888])
+- Fix tests ([@pvizeli] - [#10891])
+- Refactored WHOIS sensor to resolve assumed key errors ([@GenericStudent] - [#10662]) ([sensor.whois docs])
+- Serve latest extra_html in dev mode ([@andrey-git] - [#10863])
+- Reload groups after saving a change via config API ([@andrey-git] - [#10877]) ([config.group docs])
+- Fix issues from review of ecobee weather component ([@PhracturedBlue] - [#10903]) ([weather.ecobee docs])
+- Bugfix #10902 ([@turbokongen] - [#10904]) ([zwave docs])
+
+[#10097]: https://github.com/home-assistant/home-assistant/pull/10097
+[#10111]: https://github.com/home-assistant/home-assistant/pull/10111
+[#10263]: https://github.com/home-assistant/home-assistant/pull/10263
+[#10295]: https://github.com/home-assistant/home-assistant/pull/10295
+[#10379]: https://github.com/home-assistant/home-assistant/pull/10379
+[#10386]: https://github.com/home-assistant/home-assistant/pull/10386
+[#10429]: https://github.com/home-assistant/home-assistant/pull/10429
+[#10435]: https://github.com/home-assistant/home-assistant/pull/10435
+[#10437]: https://github.com/home-assistant/home-assistant/pull/10437
+[#10486]: https://github.com/home-assistant/home-assistant/pull/10486
+[#10521]: https://github.com/home-assistant/home-assistant/pull/10521
+[#10569]: https://github.com/home-assistant/home-assistant/pull/10569
+[#10581]: https://github.com/home-assistant/home-assistant/pull/10581
+[#10597]: https://github.com/home-assistant/home-assistant/pull/10597
+[#10598]: https://github.com/home-assistant/home-assistant/pull/10598
+[#10623]: https://github.com/home-assistant/home-assistant/pull/10623
+[#10631]: https://github.com/home-assistant/home-assistant/pull/10631
+[#10635]: https://github.com/home-assistant/home-assistant/pull/10635
+[#10642]: https://github.com/home-assistant/home-assistant/pull/10642
+[#10652]: https://github.com/home-assistant/home-assistant/pull/10652
+[#10654]: https://github.com/home-assistant/home-assistant/pull/10654
+[#10656]: https://github.com/home-assistant/home-assistant/pull/10656
+[#10658]: https://github.com/home-assistant/home-assistant/pull/10658
+[#10659]: https://github.com/home-assistant/home-assistant/pull/10659
+[#10662]: https://github.com/home-assistant/home-assistant/pull/10662
+[#10668]: https://github.com/home-assistant/home-assistant/pull/10668
+[#10670]: https://github.com/home-assistant/home-assistant/pull/10670
+[#10674]: https://github.com/home-assistant/home-assistant/pull/10674
+[#10675]: https://github.com/home-assistant/home-assistant/pull/10675
+[#10677]: https://github.com/home-assistant/home-assistant/pull/10677
+[#10686]: https://github.com/home-assistant/home-assistant/pull/10686
+[#10692]: https://github.com/home-assistant/home-assistant/pull/10692
+[#10696]: https://github.com/home-assistant/home-assistant/pull/10696
+[#10697]: https://github.com/home-assistant/home-assistant/pull/10697
+[#10705]: https://github.com/home-assistant/home-assistant/pull/10705
+[#10709]: https://github.com/home-assistant/home-assistant/pull/10709
+[#10720]: https://github.com/home-assistant/home-assistant/pull/10720
+[#10723]: https://github.com/home-assistant/home-assistant/pull/10723
+[#10724]: https://github.com/home-assistant/home-assistant/pull/10724
+[#10726]: https://github.com/home-assistant/home-assistant/pull/10726
+[#10728]: https://github.com/home-assistant/home-assistant/pull/10728
+[#10734]: https://github.com/home-assistant/home-assistant/pull/10734
+[#10735]: https://github.com/home-assistant/home-assistant/pull/10735
+[#10737]: https://github.com/home-assistant/home-assistant/pull/10737
+[#10739]: https://github.com/home-assistant/home-assistant/pull/10739
+[#10740]: https://github.com/home-assistant/home-assistant/pull/10740
+[#10741]: https://github.com/home-assistant/home-assistant/pull/10741
+[#10769]: https://github.com/home-assistant/home-assistant/pull/10769
+[#10775]: https://github.com/home-assistant/home-assistant/pull/10775
+[#10776]: https://github.com/home-assistant/home-assistant/pull/10776
+[#10777]: https://github.com/home-assistant/home-assistant/pull/10777
+[#10780]: https://github.com/home-assistant/home-assistant/pull/10780
+[#10782]: https://github.com/home-assistant/home-assistant/pull/10782
+[#10785]: https://github.com/home-assistant/home-assistant/pull/10785
+[#10787]: https://github.com/home-assistant/home-assistant/pull/10787
+[#10788]: https://github.com/home-assistant/home-assistant/pull/10788
+[#10796]: https://github.com/home-assistant/home-assistant/pull/10796
+[#10801]: https://github.com/home-assistant/home-assistant/pull/10801
+[#10812]: https://github.com/home-assistant/home-assistant/pull/10812
+[#10823]: https://github.com/home-assistant/home-assistant/pull/10823
+[#10824]: https://github.com/home-assistant/home-assistant/pull/10824
+[#10828]: https://github.com/home-assistant/home-assistant/pull/10828
+[#10829]: https://github.com/home-assistant/home-assistant/pull/10829
+[#10831]: https://github.com/home-assistant/home-assistant/pull/10831
+[#10832]: https://github.com/home-assistant/home-assistant/pull/10832
+[#10834]: https://github.com/home-assistant/home-assistant/pull/10834
+[#10839]: https://github.com/home-assistant/home-assistant/pull/10839
+[#10844]: https://github.com/home-assistant/home-assistant/pull/10844
+[#10845]: https://github.com/home-assistant/home-assistant/pull/10845
+[#10850]: https://github.com/home-assistant/home-assistant/pull/10850
+[#10851]: https://github.com/home-assistant/home-assistant/pull/10851
+[#10857]: https://github.com/home-assistant/home-assistant/pull/10857
+[#10859]: https://github.com/home-assistant/home-assistant/pull/10859
+[#10861]: https://github.com/home-assistant/home-assistant/pull/10861
+[#10863]: https://github.com/home-assistant/home-assistant/pull/10863
+[#10869]: https://github.com/home-assistant/home-assistant/pull/10869
+[#10874]: https://github.com/home-assistant/home-assistant/pull/10874
+[#10877]: https://github.com/home-assistant/home-assistant/pull/10877
+[#10886]: https://github.com/home-assistant/home-assistant/pull/10886
+[#10887]: https://github.com/home-assistant/home-assistant/pull/10887
+[#10888]: https://github.com/home-assistant/home-assistant/pull/10888
+[#10889]: https://github.com/home-assistant/home-assistant/pull/10889
+[#10890]: https://github.com/home-assistant/home-assistant/pull/10890
+[#10891]: https://github.com/home-assistant/home-assistant/pull/10891
+[#10903]: https://github.com/home-assistant/home-assistant/pull/10903
+[#10904]: https://github.com/home-assistant/home-assistant/pull/10904
+[#9790]: https://github.com/home-assistant/home-assistant/pull/9790
+[#9804]: https://github.com/home-assistant/home-assistant/pull/9804
+[#9833]: https://github.com/home-assistant/home-assistant/pull/9833
+[@GenericStudent]: https://github.com/GenericStudent
+[@Julius2342]: https://github.com/Julius2342
+[@Klikini]: https://github.com/Klikini
+[@OttoWinter]: https://github.com/OttoWinter
+[@PeteBa]: https://github.com/PeteBa
+[@PhracturedBlue]: https://github.com/PhracturedBlue
+[@Rendili]: https://github.com/Rendili
+[@TD22057]: https://github.com/TD22057
+[@andrey-git]: https://github.com/andrey-git
+[@arsaboo]: https://github.com/arsaboo
+[@bachya]: https://github.com/bachya
+[@balloob]: https://github.com/balloob
+[@bcl1713]: https://github.com/bcl1713
+[@bigwoof]: https://github.com/bigwoof
+[@braddparker]: https://github.com/braddparker
+[@broox]: https://github.com/broox
+[@bryanyork]: https://github.com/bryanyork
+[@cbulock]: https://github.com/cbulock
+[@cgarwood]: https://github.com/cgarwood
+[@cgtobi]: https://github.com/cgtobi
+[@chocomega]: https://github.com/chocomega
+[@danielperna84]: https://github.com/danielperna84
+[@dferrante]: https://github.com/dferrante
+[@dgomes]: https://github.com/dgomes
+[@fabaff]: https://github.com/fabaff
+[@fredrike]: https://github.com/fredrike
+[@frittes]: https://github.com/frittes
+[@gieljnssns]: https://github.com/gieljnssns
+[@grischard]: https://github.com/grischard
+[@janLo]: https://github.com/janLo
+[@jeroenterheerdt]: https://github.com/jeroenterheerdt
+[@lwis]: https://github.com/lwis
+[@matemaciek]: https://github.com/matemaciek
+[@milanvo]: https://github.com/milanvo
+[@mnigbur]: https://github.com/mnigbur
+[@molobrakos]: https://github.com/molobrakos
+[@n8henrie]: https://github.com/n8henrie
+[@odinuge]: https://github.com/odinuge
+[@perosb]: https://github.com/perosb
+[@philklei]: https://github.com/philklei
+[@pvizeli]: https://github.com/pvizeli
+[@rasmusbe]: https://github.com/rasmusbe
+[@rytilahti]: https://github.com/rytilahti
+[@schmittx]: https://github.com/schmittx
+[@snowzach]: https://github.com/snowzach
+[@stephenyeargin]: https://github.com/stephenyeargin
+[@svenstaro]: https://github.com/svenstaro
+[@syssi]: https://github.com/syssi
+[@tchellomello]: https://github.com/tchellomello
+[@tinloaf]: https://github.com/tinloaf
+[@turbokongen]: https://github.com/turbokongen
+[@uchagani]: https://github.com/uchagani
+[@w1ll1am23]: https://github.com/w1ll1am23
+[@wardcraigj]: https://github.com/wardcraigj
+[@zBart]: https://github.com/zBart
+[@zhujisheng]: https://github.com/zhujisheng
+[alarm_control_panel docs]: https://home-assistant.io/components/alarm_control_panel/
+[alarm_control_panel.arlo docs]: https://home-assistant.io/components/alarm_control_panel.arlo/
+[alarm_control_panel.demo docs]: https://home-assistant.io/components/alarm_control_panel.demo/
+[alarm_control_panel.totalconnect docs]: https://home-assistant.io/components/alarm_control_panel.totalconnect/
+[amcrest docs]: https://home-assistant.io/components/amcrest/
+[automation.state docs]: https://home-assistant.io/docs/automation/trigger/#state-trigger
+[binary_sensor docs]: https://home-assistant.io/components/binary_sensor/
+[binary_sensor.homematic docs]: https://home-assistant.io/components/binary_sensor.homematic/
+[camera.amcrest docs]: https://home-assistant.io/components/camera.amcrest/
+[camera.ring docs]: https://home-assistant.io/components/camera.ring/
+[climate docs]: https://home-assistant.io/components/climate/
+[climate.ecobee docs]: https://home-assistant.io/components/climate.ecobee/
+[climate.generic_thermostat docs]: https://home-assistant.io/components/climate.generic_thermostat/
+[climate.hive docs]: https://home-assistant.io/components/climate.hive/
+[climate.honeywell docs]: https://home-assistant.io/components/climate.honeywell/
+[climate.mqtt docs]: https://home-assistant.io/components/climate.mqtt/
+[climate.radiotherm docs]: https://home-assistant.io/components/climate.radiotherm/
+[climate.sensibo docs]: https://home-assistant.io/components/climate.sensibo/
+[cloud docs]: https://home-assistant.io/components/cloud/
+[cloud.auth_api docs]: https://home-assistant.io/components/cloud.auth_api/
+[cloud.iot docs]: https://home-assistant.io/components/cloud.iot/
+[config.group docs]: https://home-assistant.io/components/config.group/
+[configurator docs]: https://home-assistant.io/components/configurator/
+[conversation docs]: https://home-assistant.io/components/conversation/
+[cover.tahoma docs]: https://home-assistant.io/components/cover.tahoma/
+[device_tracker.unifi_direct docs]: https://home-assistant.io/components/device_tracker.unifi_direct/
+[dominos docs]: https://home-assistant.io/components/dominos/
+[doorbird docs]: https://home-assistant.io/components/doorbird/
+[ecobee docs]: https://home-assistant.io/components/ecobee/
+[emulated_hue docs]: https://home-assistant.io/components/emulated_hue/
+[fan.xiaomi_miio docs]: https://home-assistant.io/components/fan.xiaomi_miio/
+[google_assistant.http docs]: https://home-assistant.io/components/google_assistant.http/
+[google_assistant.smart_home docs]: https://home-assistant.io/components/google_assistant.smart_home/
+[hive docs]: https://home-assistant.io/components/hive/
+[homematic docs]: https://home-assistant.io/components/homematic/
+[influxdb docs]: https://home-assistant.io/components/influxdb/
+[knx docs]: https://home-assistant.io/components/knx/
+[light.blinkt docs]: https://home-assistant.io/components/light.blinkt/
+[light.hive docs]: https://home-assistant.io/components/light.hive/
+[light.hue docs]: https://home-assistant.io/components/light.hue/
+[light.tradfri docs]: https://home-assistant.io/components/light.tradfri/
+[light.xiaomi_miio docs]: https://home-assistant.io/components/light.xiaomi_miio/
+[light.yeelight docs]: https://home-assistant.io/components/light.yeelight/
+[media_extractor docs]: https://home-assistant.io/components/media_extractor/
+[media_player.cast docs]: https://home-assistant.io/components/media_player.cast/
+[netatmo docs]: https://home-assistant.io/components/netatmo/
+[notify.lametric docs]: https://home-assistant.io/components/notify.lametric/
+[notify.pushbullet docs]: https://home-assistant.io/components/notify.pushbullet/
+[ring docs]: https://home-assistant.io/components/ring/
+[sensor.amcrest docs]: https://home-assistant.io/components/sensor.amcrest/
+[sensor.currencylayer docs]: https://home-assistant.io/components/sensor.currencylayer/
+[sensor.deutsche_bahn docs]: https://home-assistant.io/components/sensor.deutsche_bahn/
+[sensor.fastdotcom docs]: https://home-assistant.io/components/sensor.fastdotcom/
+[sensor.fritzbox_netmonitor docs]: https://home-assistant.io/components/sensor.fritzbox_netmonitor/
+[sensor.hddtemp docs]: https://home-assistant.io/components/sensor.hddtemp/
+[sensor.hive docs]: https://home-assistant.io/components/sensor.hive/
+[sensor.homematic docs]: https://home-assistant.io/components/sensor.homematic/
+[sensor.sabnzbd docs]: https://home-assistant.io/components/sensor.sabnzbd/
+[sensor.serial docs]: https://home-assistant.io/components/sensor.serial/
+[sensor.tahoma docs]: https://home-assistant.io/components/sensor.tahoma/
+[sensor.tellduslive docs]: https://home-assistant.io/components/sensor.tellduslive/
+[sensor.tellstick docs]: https://home-assistant.io/components/sensor.tellstick/
+[sensor.whois docs]: https://home-assistant.io/components/sensor.whois/
+[sensor.wunderground docs]: https://home-assistant.io/components/sensor.wunderground/
+[sensor.yweather docs]: https://home-assistant.io/components/sensor.yweather/
+[shell_command docs]: https://home-assistant.io/components/shell_command/
+[shopping_list docs]: https://home-assistant.io/components/shopping_list/
+[switch.hive docs]: https://home-assistant.io/components/switch.hive/
+[switch.xiaomi_miio docs]: https://home-assistant.io/components/switch.xiaomi_miio/
+[system_log docs]: https://home-assistant.io/components/system_log/
+[tahoma docs]: https://home-assistant.io/components/tahoma/
+[tellduslive docs]: https://home-assistant.io/components/tellduslive/
+[tellstick docs]: https://home-assistant.io/components/tellstick/
+[tradfri docs]: https://home-assistant.io/components/tradfri/
+[tts docs]: https://home-assistant.io/components/tts/
+[tts.baidu docs]: https://home-assistant.io/components/tts.baidu/
+[tts.microsoft docs]: https://home-assistant.io/components/tts.microsoft/
+[updater docs]: https://home-assistant.io/components/updater/
+[vacuum.xiaomi_miio docs]: https://home-assistant.io/components/vacuum.xiaomi_miio/
+[weather.ecobee docs]: https://home-assistant.io/components/weather.ecobee/
+[zwave docs]: https://home-assistant.io/components/zwave/
+[#10798]: https://github.com/home-assistant/home-assistant/pull/10798
+[#10923]: https://github.com/home-assistant/home-assistant/pull/10923
+[#10934]: https://github.com/home-assistant/home-assistant/pull/10934
+[#10935]: https://github.com/home-assistant/home-assistant/pull/10935
+[@NovapaX]: https://github.com/NovapaX
+[@wrboyce]: https://github.com/wrboyce
+[notify.nfandroidtv docs]: https://home-assistant.io/components/notify.nfandroidtv/
diff --git a/source/assets/get_lutron_cert.zip b/source/assets/get_lutron_cert.zip
new file mode 100644
index 00000000000..b3849e8a412
Binary files /dev/null and b/source/assets/get_lutron_cert.zip differ
diff --git a/source/assets/jwplayer/glow/controlbar/background.png b/source/assets/jwplayer/glow/controlbar/background.png
index c2824cc432c..e932cb09a99 100644
Binary files a/source/assets/jwplayer/glow/controlbar/background.png and b/source/assets/jwplayer/glow/controlbar/background.png differ
diff --git a/source/assets/jwplayer/glow/controlbar/divider.png b/source/assets/jwplayer/glow/controlbar/divider.png
index 77cd829a4b5..021685f4b0a 100644
Binary files a/source/assets/jwplayer/glow/controlbar/divider.png and b/source/assets/jwplayer/glow/controlbar/divider.png differ
diff --git a/source/assets/jwplayer/glow/controlbar/fullscreenButton.png b/source/assets/jwplayer/glow/controlbar/fullscreenButton.png
index e06aa50ca29..9d3291e8e59 100644
Binary files a/source/assets/jwplayer/glow/controlbar/fullscreenButton.png and b/source/assets/jwplayer/glow/controlbar/fullscreenButton.png differ
diff --git a/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png b/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png
index d2bc4fc75a8..ef55acc7ca4 100644
Binary files a/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png and b/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png differ
diff --git a/source/assets/jwplayer/glow/controlbar/muteButtonOver.png b/source/assets/jwplayer/glow/controlbar/muteButtonOver.png
index 96fe7bb0242..091cc054a2a 100644
Binary files a/source/assets/jwplayer/glow/controlbar/muteButtonOver.png and b/source/assets/jwplayer/glow/controlbar/muteButtonOver.png differ
diff --git a/source/assets/jwplayer/glow/controlbar/normalscreenButton.png b/source/assets/jwplayer/glow/controlbar/normalscreenButton.png
index 22295074029..f7c23cd5ba1 100644
Binary files a/source/assets/jwplayer/glow/controlbar/normalscreenButton.png and b/source/assets/jwplayer/glow/controlbar/normalscreenButton.png differ
diff --git a/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png b/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png
index 15db44d4e66..1f6aebd73ae 100644
Binary files a/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png and b/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png differ
diff --git a/source/assets/jwplayer/glow/controlbar/pauseButton.png b/source/assets/jwplayer/glow/controlbar/pauseButton.png
index e399bf34cb9..e6ab8aa55a3 100644
Binary files a/source/assets/jwplayer/glow/controlbar/pauseButton.png and b/source/assets/jwplayer/glow/controlbar/pauseButton.png differ
diff --git a/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png b/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png
index 409d89d29a3..8dcf0c5bfcc 100644
Binary files a/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png and b/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png differ
diff --git a/source/assets/jwplayer/glow/controlbar/playButtonOver.png b/source/assets/jwplayer/glow/controlbar/playButtonOver.png
index 3fe284845fa..6898116a3b7 100644
Binary files a/source/assets/jwplayer/glow/controlbar/playButtonOver.png and b/source/assets/jwplayer/glow/controlbar/playButtonOver.png differ
diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png b/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png
index 73b371abbca..5e151d69c8c 100644
Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png and b/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png differ
diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png b/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png
index 72322171bd5..e89fc5c6afc 100644
Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png and b/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png differ
diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png b/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png
index 626444a66a7..ae47e9018b3 100644
Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png and b/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png differ
diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderRail.png b/source/assets/jwplayer/glow/controlbar/timeSliderRail.png
index 27851dfdf36..63692be0b75 100644
Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderRail.png and b/source/assets/jwplayer/glow/controlbar/timeSliderRail.png differ
diff --git a/source/assets/jwplayer/glow/controlbar/unmuteButton.png b/source/assets/jwplayer/glow/controlbar/unmuteButton.png
index 3658453cfc1..6433b4d476a 100644
Binary files a/source/assets/jwplayer/glow/controlbar/unmuteButton.png and b/source/assets/jwplayer/glow/controlbar/unmuteButton.png differ
diff --git a/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png b/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png
index 138ebb35ba8..206be887e0a 100644
Binary files a/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png and b/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png differ
diff --git a/source/assets/jwplayer/glow/display/background.png b/source/assets/jwplayer/glow/display/background.png
index 391152f5e2f..eb7c709d39b 100644
Binary files a/source/assets/jwplayer/glow/display/background.png and b/source/assets/jwplayer/glow/display/background.png differ
diff --git a/source/assets/jwplayer/glow/display/bufferIcon.png b/source/assets/jwplayer/glow/display/bufferIcon.png
index a3819c1ef19..10ae39736ad 100644
Binary files a/source/assets/jwplayer/glow/display/bufferIcon.png and b/source/assets/jwplayer/glow/display/bufferIcon.png differ
diff --git a/source/assets/jwplayer/glow/display/muteIcon.png b/source/assets/jwplayer/glow/display/muteIcon.png
index e0408bbda5e..8e078ae4387 100644
Binary files a/source/assets/jwplayer/glow/display/muteIcon.png and b/source/assets/jwplayer/glow/display/muteIcon.png differ
diff --git a/source/assets/jwplayer/glow/display/playIcon.png b/source/assets/jwplayer/glow/display/playIcon.png
index cb384278722..269e4311bcb 100644
Binary files a/source/assets/jwplayer/glow/display/playIcon.png and b/source/assets/jwplayer/glow/display/playIcon.png differ
diff --git a/source/assets/jwplayer/glow/dock/button.png b/source/assets/jwplayer/glow/dock/button.png
index 391152f5e2f..eb7c709d39b 100644
Binary files a/source/assets/jwplayer/glow/dock/button.png and b/source/assets/jwplayer/glow/dock/button.png differ
diff --git a/source/assets/jwplayer/glow/playlist/item.png b/source/assets/jwplayer/glow/playlist/item.png
index 812592c3ce5..825911836fb 100644
Binary files a/source/assets/jwplayer/glow/playlist/item.png and b/source/assets/jwplayer/glow/playlist/item.png differ
diff --git a/source/assets/jwplayer/glow/playlist/itemOver.png b/source/assets/jwplayer/glow/playlist/itemOver.png
index 549f3721d6b..cbb7e34d85f 100644
Binary files a/source/assets/jwplayer/glow/playlist/itemOver.png and b/source/assets/jwplayer/glow/playlist/itemOver.png differ
diff --git a/source/assets/jwplayer/glow/playlist/sliderCapBottom.png b/source/assets/jwplayer/glow/playlist/sliderCapBottom.png
index 048cc623be9..61c6dfbbba0 100644
Binary files a/source/assets/jwplayer/glow/playlist/sliderCapBottom.png and b/source/assets/jwplayer/glow/playlist/sliderCapBottom.png differ
diff --git a/source/assets/jwplayer/glow/playlist/sliderCapTop.png b/source/assets/jwplayer/glow/playlist/sliderCapTop.png
index 65c463a0c04..4d6dae6290f 100644
Binary files a/source/assets/jwplayer/glow/playlist/sliderCapTop.png and b/source/assets/jwplayer/glow/playlist/sliderCapTop.png differ
diff --git a/source/assets/jwplayer/glow/playlist/sliderRail.png b/source/assets/jwplayer/glow/playlist/sliderRail.png
index 121778affdc..2b455a6ff85 100644
Binary files a/source/assets/jwplayer/glow/playlist/sliderRail.png and b/source/assets/jwplayer/glow/playlist/sliderRail.png differ
diff --git a/source/assets/jwplayer/glow/sharing/embedScreen.png b/source/assets/jwplayer/glow/sharing/embedScreen.png
index b4059754baf..dabce156c23 100644
Binary files a/source/assets/jwplayer/glow/sharing/embedScreen.png and b/source/assets/jwplayer/glow/sharing/embedScreen.png differ
diff --git a/source/assets/jwplayer/glow/sharing/shareIcon.png b/source/assets/jwplayer/glow/sharing/shareIcon.png
index eae1d4e7559..b659a20c3b5 100644
Binary files a/source/assets/jwplayer/glow/sharing/shareIcon.png and b/source/assets/jwplayer/glow/sharing/shareIcon.png differ
diff --git a/source/assets/jwplayer/glow/sharing/shareScreen.png b/source/assets/jwplayer/glow/sharing/shareScreen.png
index 695ec949f86..2435d3777eb 100644
Binary files a/source/assets/jwplayer/glow/sharing/shareScreen.png and b/source/assets/jwplayer/glow/sharing/shareScreen.png differ
diff --git a/source/demo/favicon-192x192.png b/source/demo/favicon-192x192.png
index 2959efdf89d..3cd8005a166 100644
Binary files a/source/demo/favicon-192x192.png and b/source/demo/favicon-192x192.png differ
diff --git a/source/demo/favicon-apple-180x180.png b/source/demo/favicon-apple-180x180.png
index 20117d00f22..03b5dd7780c 100644
Binary files a/source/demo/favicon-apple-180x180.png and b/source/demo/favicon-apple-180x180.png differ
diff --git a/source/demo/images/config_philips_hue.jpg b/source/demo/images/config_philips_hue.jpg
index f10d258bf34..fd31dc7bbbf 100644
Binary files a/source/demo/images/config_philips_hue.jpg and b/source/demo/images/config_philips_hue.jpg differ
diff --git a/source/demo/images/thrones.jpg b/source/demo/images/thrones.jpg
index 227a9955380..0c57c03db5d 100644
Binary files a/source/demo/images/thrones.jpg and b/source/demo/images/thrones.jpg differ
diff --git a/source/demo/webcam.jpg b/source/demo/webcam.jpg
index 4d6b94348c4..215a4da7b06 100644
Binary files a/source/demo/webcam.jpg and b/source/demo/webcam.jpg differ
diff --git a/source/developers/code_review_platform.markdown b/source/developers/code_review_platform.markdown
index 0361d4bfc70..1475234123b 100644
--- a/source/developers/code_review_platform.markdown
+++ b/source/developers/code_review_platform.markdown
@@ -61,6 +61,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
1. Extend entity from component, e.g. `class HueLight(Light)`
2. Do not call `update()` in constructor, use `add_devices(devices, True)` instead.
3. Do not do any I/O inside properties. Cache values inside `update()` instead.
+ 4. The state and/or attributes should not contain relative time since something happened. Instead it should store UTC timestamps.
### {% linkable_title 6. Communication with devices/services %}
diff --git a/source/developers/credits.markdown b/source/developers/credits.markdown
index 9d447d5b141..b9ccc04b948 100644
--- a/source/developers/credits.markdown
+++ b/source/developers/credits.markdown
@@ -2,7 +2,7 @@
layout: page
title: "Credits"
description: "Credits for the developers who contributed to Home Assistant."
-date: 2017-10-31 19:14:47 +0000
+date: 2017-11-24 23:17:36 +0000
sidebar: true
comments: false
sharing: true
@@ -13,25 +13,25 @@ This page contains a list of people who have contributed in one way or another t
### {% linkable_title Author %}
-- [Paulus Schoutsen (@balloob)](https://github.com/balloob "5895 total commits to the home-assistant organization, 3516 commits to home-assistant, 1279 commits to home-assistant.github.io, 619 commits to home-assistant-polymer, 244 commits to home-assistant-js, 117 commits to netdisco, 44 commits to home-assistant-js-websocket, 24 commits to hass-release, 14 commits to home-assistant-assets, 8 commits to example-custom-config, 7 commits to micropython-home-assistant, 5 commits to LabelBot, 4 commits to hassio, 3 commits to hassio-addons, 2 commits to issue-bot, 2 commits to hassio-addons-example, 2 commits to python-hassbian, 2 commits to lambda-home-assistant-github, 1 commit to hassio-build, 1 commit to home-assistant-notebooks, 1 commit to home-assistant-iOS")
+- [Paulus Schoutsen (@balloob)](https://github.com/balloob "6012 total commits to the home-assistant organization, 3571 commits to home-assistant, 1305 commits to home-assistant.github.io, 649 commits to home-assistant-polymer, 244 commits to home-assistant-js, 118 commits to netdisco, 44 commits to home-assistant-js-websocket, 26 commits to hass-release, 14 commits to home-assistant-assets, 8 commits to example-custom-config, 7 commits to micropython-home-assistant, 6 commits to LabelBot, 5 commits to hassio, 3 commits to hassio-addons, 2 commits to issue-bot, 2 commits to lambda-home-assistant-github, 2 commits to hassio-addons-example, 2 commits to hassio-build, 2 commits to python-hassbian, 1 commit to home-assistant-notebooks, 1 commit to home-assistant-iOS")
### {% linkable_title Contributors %}
(in alphabetical order)
- [7even (@hwikene)](https://github.com/hwikene "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
-- [Aaron Bach (@bachya)](https://github.com/bachya "28 total commits to the home-assistant organization, 18 commits to home-assistant, 10 commits to home-assistant.github.io")
+- [Aaron Bach (@bachya)](https://github.com/bachya "33 total commits to the home-assistant organization, 21 commits to home-assistant, 12 commits to home-assistant.github.io")
- [Aaron Linville (@linville)](https://github.com/linville "2 total commits to the home-assistant organization, 2 commits to appdaemon")
- [Aaron Morris (@Morrisai)](https://github.com/Morrisai "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Aaron Polley (@xarnze)](https://github.com/xarnze "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Abhishek Anand (@aa755)](https://github.com/aa755 "1 total commits to the home-assistant organization, 1 commit to home-assistant")
-- [Abílio Costa (@abmantis)](https://github.com/abmantis "18 total commits to the home-assistant organization, 11 commits to home-assistant, 4 commits to home-assistant.github.io, 1 commit to home-assistant-js-websocket, 1 commit to home-assistant-polymer, 1 commit to netdisco")
+- [Abílio Costa (@abmantis)](https://github.com/abmantis "20 total commits to the home-assistant organization, 12 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to netdisco, 1 commit to home-assistant-js-websocket, 1 commit to home-assistant-polymer")
- [Adam (@SilvrrGIT)](https://github.com/SilvrrGIT "9 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 1 commit to home-assistant")
- [Adam Baxter (@voltagex)](https://github.com/voltagex "2 total commits to the home-assistant organization, 1 commit to home-assistant-polymer, 1 commit to home-assistant")
-- [Adam Cooper (@GenericStudent)](https://github.com/GenericStudent "6 total commits to the home-assistant organization, 6 commits to home-assistant")
+- [Adam Cooper (@GenericStudent)](https://github.com/GenericStudent "10 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Adam Dullage (@Dullage)](https://github.com/Dullage "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Adam Garcia (@pancho-villa)](https://github.com/pancho-villa "1 total commits to the home-assistant organization, 1 commit to home-assistant")
-- [Adam Mills (@armills)](https://github.com/armills "228 total commits to the home-assistant organization, 141 commits to home-assistant, 42 commits to home-assistant.github.io, 41 commits to home-assistant-polymer, 3 commits to home-assistant-js, 1 commit to homebridge-homeassistant")
+- [Adam Mills (@armills)](https://github.com/armills "260 total commits to the home-assistant organization, 144 commits to home-assistant, 63 commits to home-assistant-polymer, 49 commits to home-assistant.github.io, 3 commits to home-assistant-js, 1 commit to homebridge-homeassistant")
- [Adam Stone (@astone123)](https://github.com/astone123 "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Adrian Popa (@mad-ady)](https://github.com/mad-ady "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Adrien Ball (@adrienball)](https://github.com/adrienball "2 total commits to the home-assistant organization, 2 commits to home-assistant")
@@ -46,9 +46,9 @@ This page contains a list of people who have contributed in one way or another t
- [Albert Lee (@trisk)](https://github.com/trisk "13 total commits to the home-assistant organization, 8 commits to home-assistant, 5 commits to home-assistant.github.io")
- [Alberto Arias Maestro (@albertoarias)](https://github.com/albertoarias "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Alessandro Mogavero (@alexmogavero)](https://github.com/alexmogavero "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [Alex (@alexrockt)](https://github.com/alexrockt "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Alex (@MungoRae)](https://github.com/MungoRae "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Alex (@asbach)](https://github.com/asbach "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant")
+- [Alex (@alexrockt)](https://github.com/alexrockt "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Alex Barcelo (@alexbarcelo)](https://github.com/alexbarcelo "2 total commits to the home-assistant organization, 2 commits to hassio-addons")
- [Alex Harvey (@infamy)](https://github.com/infamy "25 total commits to the home-assistant organization, 14 commits to home-assistant, 11 commits to home-assistant.github.io")
- [Alex Mekkering (@AlexMekkering)](https://github.com/AlexMekkering "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant")
@@ -61,12 +61,13 @@ This page contains a list of people who have contributed in one way or another t
- [Alfie Day (@Azelphur)](https://github.com/Azelphur "12 total commits to the home-assistant organization, 12 commits to home-assistant")
- [Aliaksandr (@minchik)](https://github.com/minchik "7 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to appdaemon, 2 commits to home-assistant")
- [Allan Glen (@allanglen)](https://github.com/allanglen "1 total commits to the home-assistant organization, 1 commit to home-assistant")
-- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "102 total commits to the home-assistant organization, 59 commits to home-assistant.github.io, 41 commits to home-assistant, 1 commit to hassio-addons, 1 commit to pi-gen")
+- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "115 total commits to the home-assistant organization, 67 commits to home-assistant.github.io, 45 commits to home-assistant, 1 commit to pi-gen, 1 commit to home-assistant-polymer, 1 commit to hassio-addons")
- [amigian74 (@amigian74)](https://github.com/amigian74 "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [amorsillo (@AndrewMorsillo)](https://github.com/AndrewMorsillo "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Anders Fogh Eriksen (@Fogh)](https://github.com/Fogh "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "107 total commits to the home-assistant organization, 78 commits to home-assistant, 27 commits to home-assistant.github.io, 2 commits to home-assistant-polymer")
+- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "117 total commits to the home-assistant organization, 84 commits to home-assistant, 31 commits to home-assistant.github.io, 2 commits to home-assistant-polymer")
- [Andrea Falcone (@asfalcone)](https://github.com/asfalcone "5 total commits to the home-assistant organization, 5 commits to issue-bot")
+- [Andreas Björshammar (@abjorshammar)](https://github.com/abjorshammar "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Andreas Cambitsis (@acambitsis)](https://github.com/acambitsis "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Andreas Jacobsen (@andreasjacobsen93)](https://github.com/andreasjacobsen93 "9 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to hassio-addons, 1 commit to home-assistant")
- [Andreas Rammhold (@andir)](https://github.com/andir "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
@@ -75,20 +76,21 @@ This page contains a list of people who have contributed in one way or another t
- [Andrej Friesen (@ajfriesen)](https://github.com/ajfriesen "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Andrew (@aoakeson)](https://github.com/aoakeson "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant")
- [Andrew (@aneisch)](https://github.com/aneisch "5 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 1 commit to home-assistant")
-- [Andrew Cockburn (@acockburn)](https://github.com/acockburn "625 total commits to the home-assistant organization, 494 commits to appdaemon, 88 commits to hadashboard, 25 commits to scenegen, 18 commits to home-assistant.github.io")
+- [Andrew Cockburn (@acockburn)](https://github.com/acockburn "626 total commits to the home-assistant organization, 494 commits to appdaemon, 88 commits to hadashboard, 25 commits to scenegen, 19 commits to home-assistant.github.io")
- [Andrew LeCody (@aceat64)](https://github.com/aceat64 "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Andrew Smith (@andrewmichaelsmith)](https://github.com/andrewmichaelsmith "2 total commits to the home-assistant organization, 2 commits to pi-gen")
- [Andrew Stock (@watchforstock)](https://github.com/watchforstock "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Andrew Thigpen (@andythigpen)](https://github.com/andythigpen "33 total commits to the home-assistant organization, 32 commits to home-assistant, 1 commit to home-assistant-js")
- [Andrew Williams (@nikdoof)](https://github.com/nikdoof "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [andrew-curtis (@andrew-curtis)](https://github.com/andrew-curtis "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
-- [Andrey (@andrey-git)](https://github.com/andrey-git "195 total commits to the home-assistant organization, 91 commits to home-assistant, 73 commits to home-assistant-polymer, 31 commits to home-assistant.github.io")
+- [Andrey (@andrey-git)](https://github.com/andrey-git "227 total commits to the home-assistant organization, 97 commits to home-assistant, 96 commits to home-assistant-polymer, 34 commits to home-assistant.github.io")
- [Andrey Kupreychik (@foxel)](https://github.com/foxel "4 total commits to the home-assistant organization, 4 commits to home-assistant")
- [Andrzej (@andriej)](https://github.com/andriej "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant")
- [Andréas Lundgren (@adevade)](https://github.com/adevade "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Andy Castille (@Klikini)](https://github.com/Klikini "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io")
+- [Andy Castille (@Klikini)](https://github.com/Klikini "9 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Andy Loughran (@andylockran)](https://github.com/andylockran "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [andyat (@andyat)](https://github.com/andyat "2 total commits to the home-assistant organization, 2 commits to home-assistant")
+- [anotherthomas (@anotherthomas)](https://github.com/anotherthomas "1 total commits to the home-assistant organization, 1 commit to hassio-addons")
- [Anthony Hughes (@tony2nite)](https://github.com/tony2nite "2 total commits to the home-assistant organization, 1 commit to netdisco, 1 commit to home-assistant")
- [Antoine Bertin (@Diaoul)](https://github.com/Diaoul "5 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [Anton Glukhov (@toxxin)](https://github.com/toxxin "1 total commits to the home-assistant organization, 1 commit to libcoap")
@@ -100,10 +102,10 @@ This page contains a list of people who have contributed in one way or another t
- [apo-mak (@apo-mak)](https://github.com/apo-mak "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Ardetus (@Ardetus)](https://github.com/Ardetus "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io")
- [Ardi Mehist (@omgapuppy)](https://github.com/omgapuppy "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant")
+- [Ari Lotter (@arilotter)](https://github.com/arilotter "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant")
- [arjenfvellinga (@arjenfvellinga)](https://github.com/arjenfvellinga "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Arno (@aetjansen)](https://github.com/aetjansen "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [ArrayLabs (@arraylabs)](https://github.com/arraylabs "5 total commits to the home-assistant organization, 5 commits to home-assistant")
-- [arretx (@arretx)](https://github.com/arretx "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Arthur Leonard Andersen (@leoc)](https://github.com/leoc "9 total commits to the home-assistant organization, 9 commits to home-assistant")
- [Arttu mahlakaarto (@amahlaka)](https://github.com/amahlaka "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io")
- [Ashton Campbell (@AshtonCampbell)](https://github.com/AshtonCampbell "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
@@ -116,6 +118,7 @@ This page contains a list of people who have contributed in one way or another t
- [azeroth12 (@azeroth12)](https://github.com/azeroth12 "1 total commits to the home-assistant organization, 1 commit to appdaemon")
- [Baran Kaynak (@barankaynak)](https://github.com/barankaynak "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Barry Williams (@bazwilliams)](https://github.com/bazwilliams "10 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to netdisco, 2 commits to home-assistant.github.io")
+- [Bart S. (@zBart)](https://github.com/zBart "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Bart274 (@Bart274)](https://github.com/Bart274 "26 total commits to the home-assistant organization, 17 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [Bas Schipper (@basschipper)](https://github.com/basschipper "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io")
- [bastshoes (@bastshoes)](https://github.com/bastshoes "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
@@ -127,7 +130,6 @@ This page contains a list of people who have contributed in one way or another t
- [Ben Origas (@borigas)](https://github.com/borigas "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Ben Thomas (@wazoo)](https://github.com/wazoo "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Ben Van Mechelen (@benvm)](https://github.com/benvm "1 total commits to the home-assistant organization, 1 commit to home-assistant")
-- [Benjamin Affolter (@bliemli)](https://github.com/bliemli "31 total commits to the home-assistant organization, 31 commits to home-assistant-ansible")
- [Benjamin Parzella (@bparzella)](https://github.com/bparzella "1 total commits to the home-assistant organization, 1 commit to pi-gen")
- [Benoit BESSET (@bbesset)](https://github.com/bbesset "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [bestlibre (@bestlibre)](https://github.com/bestlibre "16 total commits to the home-assistant organization, 8 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to hassio, 1 commit to hassio-build, 1 commit to home-assistant-polymer")
@@ -135,9 +137,11 @@ This page contains a list of people who have contributed in one way or another t
- [Bill Nelson (@xhostplus)](https://github.com/xhostplus "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [BioSehnsucht (@BioSehnsucht)](https://github.com/BioSehnsucht "12 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 3 commits to home-assistant, 2 commits to home-assistant-polymer")
- [Bjarni Ivarsson (@bjarniivarsson)](https://github.com/bjarniivarsson "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant-polymer")
+- [Björn Ramberg (@bjorne)](https://github.com/bjorne "1 total commits to the home-assistant organization, 1 commit to hassio-build")
- [Blanyal D'Souza (@blanyal)](https://github.com/blanyal "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Blender3D (@Blender3D)](https://github.com/Blender3D "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Boced66 (@boced66)](https://github.com/boced66 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
+- [boltgolt (@Boltgolt)](https://github.com/Boltgolt "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [boojew (@boojew)](https://github.com/boojew "8 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to home-assistant")
- [Boris K (@bokub)](https://github.com/bokub "11 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 5 commits to home-assistant")
- [Boyi C (@fanthos)](https://github.com/fanthos "9 total commits to the home-assistant organization, 4 commits to home-assistant-polymer, 3 commits to home-assistant, 2 commits to home-assistant.github.io")
@@ -158,66 +162,59 @@ This page contains a list of people who have contributed in one way or another t
- [Brian Gehrich (@bgehrich)](https://github.com/bgehrich "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Brian Hopkins (@btotharye)](https://github.com/btotharye "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant")
- [Brian J King (@brianjking)](https://github.com/brianjking "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io")
-- [Brian Karani Ndwiga (@rayrayndwiga)](https://github.com/rayrayndwiga "1 total commits to the home-assistant organization, 1 commit to home-assistant")
-- [Brian Torres-Gil (@btorresgil)](https://github.com/btorresgil "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Britton Clapp (@britton-clapp)](https://github.com/britton-clapp "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [BRUH Automation (@bruhautomation)](https://github.com/bruhautomation "3 total commits to the home-assistant organization, 3 commits to hassbian-scripts")
- [Bruno Adele (@badele)](https://github.com/badele "22 total commits to the home-assistant organization, 22 commits to home-assistant")
- [Bruno Binet (@bbinet)](https://github.com/bbinet "1 total commits to the home-assistant organization, 1 commit to hassio-build")
- [Bryce Edwards (@hoopty)](https://github.com/hoopty "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io")
-- [c727 (@c727)](https://github.com/c727 "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
+- [c727 (@c727)](https://github.com/c727 "13 total commits to the home-assistant organization, 9 commits to home-assistant-polymer, 4 commits to home-assistant.github.io")
- [Caius Cioran (@caiuspb)](https://github.com/caiuspb "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Caleb (@finish06)](https://github.com/finish06 "7 total commits to the home-assistant organization, 7 commits to home-assistant")
-- [Cameron Bulock (@cbulock)](https://github.com/cbulock "4 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to netdisco, 1 commit to home-assistant")
-- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "89 total commits to the home-assistant organization, 81 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to fabric-home-assistant, 1 commit to homebridge-homeassistant, 1 commit to hassbian-scripts")
+- [Cameron Bulock (@cbulock)](https://github.com/cbulock "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to netdisco")
+- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "89 total commits to the home-assistant organization, 81 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to fabric-home-assistant, 1 commit to hassbian-scripts, 1 commit to homebridge-homeassistant")
- [carlosmgr (@carlosmgr)](https://github.com/carlosmgr "6 total commits to the home-assistant organization, 6 commits to home-assistant")
-- [Carter (@BluGeni)](https://github.com/BluGeni "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant")
-- [Casper Weiss Bang (@C0DK)](https://github.com/C0DK "1 total commits to the home-assistant organization, 1 commit to home-assistant")
-- [cdce8p (@cdce8p)](https://github.com/cdce8p "12 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 2 commits to home-assistant-polymer, 2 commits to home-assistant")
+- [Carter (@BluGeni)](https://github.com/BluGeni "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
+- [cdce8p (@cdce8p)](https://github.com/cdce8p "14 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 2 commits to home-assistant-polymer, 2 commits to home-assistant")
- [Cecron (@Cecron)](https://github.com/Cecron "1 total commits to the home-assistant organization, 1 commit to appdaemon")
- [Cenk Gündoğan (@cgundogan)](https://github.com/cgundogan "1 total commits to the home-assistant organization, 1 commit to libcoap")
-- [cgtobi (@cgtobi)](https://github.com/cgtobi "11 total commits to the home-assistant organization, 6 commits to home-assistant, 5 commits to home-assistant.github.io")
+- [Cezar Sá Espinola (@cezarsa)](https://github.com/cezarsa "2 total commits to the home-assistant organization, 2 commits to home-assistant")
+- [cgtobi (@cgtobi)](https://github.com/cgtobi "20 total commits to the home-assistant organization, 12 commits to home-assistant, 8 commits to home-assistant.github.io")
- [chanders (@chanders)](https://github.com/chanders "2 total commits to the home-assistant organization, 2 commits to hadashboard")
- [Charles Blonde (@CharlesBlonde)](https://github.com/CharlesBlonde "19 total commits to the home-assistant organization, 12 commits to home-assistant, 7 commits to home-assistant.github.io")
-- [Charles Garwood (@cgarwood)](https://github.com/cgarwood "15 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 4 commits to home-assistant")
+- [Charles Garwood (@cgarwood)](https://github.com/cgarwood "16 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 5 commits to home-assistant")
- [Charles Spirakis (@srcLurker)](https://github.com/srcLurker "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Chayoung You (@yous)](https://github.com/yous "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Check your git settings! (@invalid-email-address)](https://github.com/invalid-email-address "1 total commits to the home-assistant organization, 1 commit to libcoap")
-- [Chema García (@sch3m4)](https://github.com/sch3m4 "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Chia-liang Kao (@clkao)](https://github.com/clkao "2 total commits to the home-assistant organization, 2 commits to home-assistant")
-- [Chris (@firstof9)](https://github.com/firstof9 "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Chris (@chennin)](https://github.com/chennin "15 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 4 commits to home-assistant")
- [Chris Aloi (@ctaloi)](https://github.com/ctaloi "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Chris Baumgartner (@mchrisb03)](https://github.com/mchrisb03 "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Chris Huegle (@chuegle)](https://github.com/chuegle "1 total commits to the home-assistant organization, 1 commit to netdisco")
-- [Chris Kacerguis (@chriskacerguis)](https://github.com/chriskacerguis "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Chris Monteiro (@cmonteiro128)](https://github.com/cmonteiro128 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Chris Mulder (@chrisvis)](https://github.com/chrisvis "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Chris Smolen (@smolz)](https://github.com/smolz "10 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 4 commits to appdaemon")
-- [Chris Thorn (@chris-thorn)](https://github.com/chris-thorn "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io")
+- [Chris Thorn (@chris-thorn)](https://github.com/chris-thorn "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
- [ChrisS85 (@ChrisS85)](https://github.com/ChrisS85 "1 total commits to the home-assistant organization, 1 commit to hassio-build")
-- [Christiaan Blom (@Deinara)](https://github.com/Deinara "7 total commits to the home-assistant organization, 7 commits to home-assistant")
+- [Christiaan Blom (@Deinara)](https://github.com/Deinara "6 total commits to the home-assistant organization, 6 commits to home-assistant")
- [Christian Brædstrup (@LinuxChristian)](https://github.com/LinuxChristian "8 total commits to the home-assistant organization, 8 commits to home-assistant")
- [Christian Lasarczyk (@ChrisLasar)](https://github.com/ChrisLasar "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Christian Studer (@cstuder)](https://github.com/cstuder "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [ChristianKuehnel (@ChristianKuehnel)](https://github.com/ChristianKuehnel "6 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 3 commits to home-assistant")
-- [Christoph Wagner (@Christoph-Wagner)](https://github.com/Christoph-Wagner "5 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 1 commit to home-assistant")
-- [Christopher Viel (@Chris-V)](https://github.com/Chris-V "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant")
+- [Christian Studer (@cstuder)](https://github.com/cstuder "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
+- [ChristianKuehnel (@ChristianKuehnel)](https://github.com/ChristianKuehnel "10 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 4 commits to home-assistant")
+- [Christoffer Kylvåg (@christoe)](https://github.com/christoe "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
+- [Christoph Wagner (@Christoph-Wagner)](https://github.com/Christoph-Wagner "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
+- [Christopher Viel (@Chris-V)](https://github.com/Chris-V "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [chrysn (@chrysn)](https://github.com/chrysn "65 total commits to the home-assistant organization, 65 commits to libcoap")
- [chz^3 (@chzchzchz)](https://github.com/chzchzchz "1 total commits to the home-assistant organization, 1 commit to pi-gen")
- [Ciquattro (@CiquattroFPV)](https://github.com/CiquattroFPV "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [clach04 (@clach04)](https://github.com/clach04 "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant")
- [Claus F. Strasburger (@cfstras)](https://github.com/cfstras "1 total commits to the home-assistant organization, 1 commit to pi-gen")
-- [Clemens Wolff (@c-w)](https://github.com/c-w "1 total commits to the home-assistant organization, 1 commit to home-assistant")
-- [Colin Dunn (@colindunn)](https://github.com/colindunn "1 total commits to the home-assistant organization, 1 commit to home-assistant")
+- [Colin Dunn (@colindunn)](https://github.com/colindunn "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Colin O'Dell (@colinodell)](https://github.com/colinodell "24 total commits to the home-assistant organization, 13 commits to home-assistant, 11 commits to home-assistant.github.io")
-- [Conrad Juhl Andersen (@cnrd)](https://github.com/cnrd "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [Constantine Grantcharov (@conz27)](https://github.com/conz27 "1 total commits to the home-assistant organization, 1 commit to libcoap")
- [Constantine Poltyrev (@shprota)](https://github.com/shprota "1 total commits to the home-assistant organization, 1 commit to appdaemon")
-- [Corban Mailloux (@corbanmailloux)](https://github.com/corbanmailloux "19 total commits to the home-assistant organization, 18 commits to home-assistant.github.io, 1 commit to home-assistant")
+- [Corban Mailloux (@corbanmailloux)](https://github.com/corbanmailloux "18 total commits to the home-assistant organization, 18 commits to home-assistant.github.io")
+- [Corey Pauley (@devspacenine)](https://github.com/devspacenine "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant")
- [corneyl (@corneyl)](https://github.com/corneyl "2 total commits to the home-assistant organization, 2 commits to home-assistant")
-- [Craig J. Ward (@wardcraigj)](https://github.com/wardcraigj "14 total commits to the home-assistant organization, 9 commits to home-assistant, 5 commits to home-assistant.github.io")
-- [CTLS (@CTLS)](https://github.com/CTLS "1 total commits to the home-assistant organization, 1 commit to home-assistant")
+- [Craig J. Ward (@wardcraigj)](https://github.com/wardcraigj "18 total commits to the home-assistant organization, 13 commits to home-assistant, 5 commits to home-assistant.github.io")
- [cxlwill (@cxlwill)](https://github.com/cxlwill "2 total commits to the home-assistant organization, 2 commits to home-assistant-polymer")
- [Dale Higgs (@dale3h)](https://github.com/dale3h "33 total commits to the home-assistant organization, 21 commits to home-assistant.github.io, 10 commits to home-assistant, 1 commit to hassbot, 1 commit to homebridge-homeassistant")
- [Dan (@danieljkemp)](https://github.com/danieljkemp "23 total commits to the home-assistant organization, 16 commits to home-assistant, 7 commits to home-assistant.github.io")
@@ -229,13 +226,12 @@ This page contains a list of people who have contributed in one way or another t
- [Dan Sullivan (@dansullivan86)](https://github.com/dansullivan86 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Dani (@danichispa)](https://github.com/danichispa "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io")
- [Daniel Escoz (@Darkhogg)](https://github.com/Darkhogg "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [Daniel Høyer Iversen (@Danielhiversen)](https://github.com/Danielhiversen "362 total commits to the home-assistant organization, 241 commits to home-assistant, 119 commits to home-assistant.github.io, 2 commits to home-assistant-polymer")
-- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "65 total commits to the home-assistant organization, 34 commits to home-assistant.github.io, 29 commits to home-assistant, 2 commits to hassio-addons")
+- [Daniel Høyer Iversen (@Danielhiversen)](https://github.com/Danielhiversen "364 total commits to the home-assistant organization, 242 commits to home-assistant, 119 commits to home-assistant.github.io, 3 commits to home-assistant-polymer")
+- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "69 total commits to the home-assistant organization, 36 commits to home-assistant.github.io, 30 commits to home-assistant, 3 commits to hassio-addons")
- [Daniel Peukert (@dpeukert)](https://github.com/dpeukert "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [Daniel Schaal (@schaal)](https://github.com/schaal "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Daniel Stone (@daniel-stoneuk)](https://github.com/daniel-stoneuk "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Daniel Trnka (@trnila)](https://github.com/trnila "2 total commits to the home-assistant organization, 2 commits to appdaemon")
-- [Daniel Watkins (@OddBloke)](https://github.com/OddBloke "4 total commits to the home-assistant organization, 4 commits to home-assistant-ansible")
- [Daniel Welch (@danielwelch)](https://github.com/danielwelch "2 total commits to the home-assistant organization, 2 commits to homebridge-homeassistant")
- [DanielXYZ2000 (@DanielXYZ2000)](https://github.com/DanielXYZ2000 "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to hassio-addons")
- [Daniyar Yeralin (@yeralin)](https://github.com/yeralin "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant")
@@ -247,7 +243,7 @@ This page contains a list of people who have contributed in one way or another t
- [DaveSergeant (@dethpickle)](https://github.com/dethpickle "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [David (@fanaticDavid)](https://github.com/fanaticDavid "12 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 2 commits to home-assistant")
- [David De Sloovere (@DavidDeSloovere)](https://github.com/DavidDeSloovere "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
-- [David Grant (@davegravy)](https://github.com/davegravy "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
+- [David Grant (@davegravy)](https://github.com/davegravy "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant")
- [David Jackson (@David-Jackson)](https://github.com/David-Jackson "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [David McNett (@nugget)](https://github.com/nugget "10 total commits to the home-assistant organization, 5 commits to home-assistant, 5 commits to home-assistant.github.io")
- [David Ohayon (@ohayon)](https://github.com/ohayon "3 total commits to the home-assistant organization, 3 commits to issue-bot")
@@ -258,46 +254,52 @@ This page contains a list of people who have contributed in one way or another t
- [Dawid Wróbel (@wrobelda)](https://github.com/wrobelda "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
- [Dean Camera (@abcminiuser)](https://github.com/abcminiuser "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io")
- [deisi (@deisi)](https://github.com/deisi "10 total commits to the home-assistant organization, 10 commits to home-assistant")
+- [Delio Castillo (@jangeador)](https://github.com/jangeador "2 total commits to the home-assistant organization, 2 commits to hassio-addons")
+- [Demid Lupin (@lupin-de-mid)](https://github.com/lupin-de-mid "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant")
- [Denix (@denics)](https://github.com/denics "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Dennis de Greef (@dennisdegreef)](https://github.com/dennisdegreef "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Dennis Karpienski (@TheRealLink)](https://github.com/TheRealLink "24 total commits to the home-assistant organization, 15 commits to home-assistant-polymer, 6 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to netdisco")
- [Dennis Sutch (@sutch)](https://github.com/sutch "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Derek (@itchaboy)](https://github.com/itchaboy "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
+- [Derek (@itchaboy)](https://github.com/itchaboy "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
- [dersger (@dersger)](https://github.com/dersger "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to home-assistant-polymer")
- [devdelay (@devdelay)](https://github.com/devdelay "16 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 5 commits to home-assistant, 4 commits to homebridge-homeassistant")
-- [Diogo Gomes (@dgomes)](https://github.com/dgomes "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io")
+- [Devon Peet (@dpeet)](https://github.com/dpeet "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
+- [Diogo Gomes (@dgomes)](https://github.com/dgomes "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io")
- [Domantas (@Dohxis)](https://github.com/Dohxis "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
-- [Dougal Matthews (@d0ugal)](https://github.com/d0ugal "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io")
+- [Dougal Matthews (@d0ugal)](https://github.com/d0ugal "4 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 2 commits to home-assistant")
- [dramamoose (@dramamoose)](https://github.com/dramamoose "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant")
- [DrewSK (@dzsquared)](https://github.com/dzsquared "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io")
-- [DubhAd (@DubhAd)](https://github.com/DubhAd "47 total commits to the home-assistant organization, 47 commits to home-assistant.github.io")
+- [DubhAd (@DubhAd)](https://github.com/DubhAd "74 total commits to the home-assistant organization, 74 commits to home-assistant.github.io")
- [Duoxilian (@Duoxilian)](https://github.com/Duoxilian "11 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 5 commits to home-assistant")
-- [Edwin Smulders (@Dutchy-)](https://github.com/Dutchy- "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io")
-- [Egor Tsinko (@etsinko)](https://github.com/etsinko "7 total commits to the home-assistant organization, 5 commits to home-assistant, 2 commits to home-assistant.github.io")
+- [Edwin Smulders (@Dutchy-)](https://github.com/Dutchy- "4 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 2 commits to home-assistant")
+- [Egor Tsinko (@etsinko)](https://github.com/etsinko "10 total commits to the home-assistant organization, 8 commits to home-assistant, 2 commits to home-assistant.github.io")
+- [Eitan Mosenkis (@emosenkis)](https://github.com/emosenkis "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to netdisco")
- [Eleftherios Chamakiotis (@lexam79)](https://github.com/lexam79 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Ellis Percival (@flyte)](https://github.com/flyte "31 total commits to the home-assistant organization, 25 commits to home-assistant, 6 commits to home-assistant.github.io")
- [Emil Horpen Hetty (@emilhetty)](https://github.com/emilhetty "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [emlt (@emlt)](https://github.com/emlt "2 total commits to the home-assistant organization, 2 commits to home-assistant")
+- [endor-force (@endor-force)](https://github.com/endor-force "2 total commits to the home-assistant organization, 1 commit to hassio-build, 1 commit to hassio-addons")
- [engrbm87 (@engrbm87)](https://github.com/engrbm87 "3 total commits to the home-assistant organization, 3 commits to appdaemon")
-- [Eric Hagan (@ehagan)](https://github.com/ehagan "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to home-assistant-polymer")
+- [Eric Hagan (@ehagan)](https://github.com/ehagan "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer")
- [Eric Oosting (@eoosting)](https://github.com/eoosting "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Eric Rolf (@xrolfex)](https://github.com/xrolfex "13 total commits to the home-assistant organization, 13 commits to home-assistant")
- [Eric Thompson (@er0ck)](https://github.com/er0ck "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Erik Eriksson (@molobrakos)](https://github.com/molobrakos "98 total commits to the home-assistant organization, 90 commits to home-assistant, 5 commits to home-assistant.github.io, 3 commits to netdisco")
+- [Erik Eriksson (@molobrakos)](https://github.com/molobrakos "101 total commits to the home-assistant organization, 92 commits to home-assistant, 6 commits to home-assistant.github.io, 3 commits to netdisco")
- [Erik-jan Riemers (@riemers)](https://github.com/riemers "13 total commits to the home-assistant organization, 13 commits to home-assistant.github.io")
- [ettisan (@ettisan)](https://github.com/ettisan "8 total commits to the home-assistant organization, 8 commits to home-assistant")
-- [Eugenio Panadero (@azogue)](https://github.com/azogue "73 total commits to the home-assistant organization, 44 commits to home-assistant, 23 commits to home-assistant.github.io, 3 commits to homebridge-homeassistant, 3 commits to home-assistant-polymer")
-- [Fabian Affolter (@fabaff)](https://github.com/fabaff "4325 total commits to the home-assistant organization, 2710 commits to home-assistant.github.io, 1411 commits to home-assistant, 61 commits to home-assistant-ansible, 29 commits to home-assistant-dev-helper, 29 commits to home-assistant-notebooks, 24 commits to home-assistant-assets, 24 commits to home-assistant-cli, 11 commits to hassio-build, 10 commits to home-assistant-polymer, 8 commits to netdisco, 5 commits to hassio-addons, 2 commits to hassio, 1 commit to home-assistant-js-websocket")
+- [Eugenio Panadero (@azogue)](https://github.com/azogue "76 total commits to the home-assistant organization, 45 commits to home-assistant, 25 commits to home-assistant.github.io, 3 commits to homebridge-homeassistant, 3 commits to home-assistant-polymer")
+- [Fabian Affolter (@fabaff)](https://github.com/fabaff "4298 total commits to the home-assistant organization, 2777 commits to home-assistant.github.io, 1431 commits to home-assistant, 29 commits to home-assistant-notebooks, 24 commits to home-assistant-assets, 11 commits to hassio-build, 10 commits to home-assistant-polymer, 8 commits to netdisco, 5 commits to hassio-addons, 2 commits to hassio, 1 commit to home-assistant-js-websocket")
- [Fabian Heredia Montiel (@fabianhjr)](https://github.com/fabianhjr "4 total commits to the home-assistant organization, 4 commits to home-assistant")
+- [Fabrizio Furnari (@fabfurnari)](https://github.com/fabfurnari "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant")
- [fakezeta (@fakezeta)](https://github.com/fakezeta "7 total commits to the home-assistant organization, 7 commits to home-assistant")
- [Fares Rihani (@anchepiece)](https://github.com/anchepiece "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Felix (@xifle)](https://github.com/xifle "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Felix Krause (@KrauseFx)](https://github.com/KrauseFx "48 total commits to the home-assistant organization, 48 commits to issue-bot")
- [Ferry van Zeelst (@StaticCube)](https://github.com/StaticCube "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant")
- [Finbarr Brady (@fbradyirl)](https://github.com/fbradyirl "8 total commits to the home-assistant organization, 8 commits to home-assistant")
-- [Florian Holzapfel (@florianholzapfel)](https://github.com/florianholzapfel "11 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 4 commits to home-assistant, 3 commits to netdisco")
-- [Florian Klien (@flowolf)](https://github.com/flowolf "11 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 3 commits to home-assistant")
-- [florincosta (@florincosta)](https://github.com/florincosta "6 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 3 commits to home-assistant")
+- [Florian Holzapfel (@florianholzapfel)](https://github.com/florianholzapfel "11 total commits to the home-assistant organization, 4 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits to netdisco")
+- [Florian Klien (@flowolf)](https://github.com/flowolf "15 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 3 commits to home-assistant")
+- [florincosta (@florincosta)](https://github.com/florincosta "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Fonta (@f0nt4)](https://github.com/f0nt4 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [Franck Nijhof (@frenck)](https://github.com/frenck "13 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 1 commit to hassio")
- [Frank (@syphernl)](https://github.com/syphernl "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
@@ -315,13 +317,13 @@ This page contains a list of people who have contributed in one way or another t
- [Gavin Mogan (@halkeye)](https://github.com/halkeye "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Geoff Norton (@kangaroo)](https://github.com/kangaroo "14 total commits to the home-assistant organization, 14 commits to home-assistant")
- [George.M (@nodinosaur)](https://github.com/nodinosaur "8 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to home-assistant")
-- [Georgi Kirichkov (@kirichkov)](https://github.com/kirichkov "16 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to appdaemon")
-- [Georgi Yanev (@jumpalottahigh)](https://github.com/jumpalottahigh "4 total commits to the home-assistant organization, 2 commits to home-assistant-polymer, 2 commits to home-assistant.github.io")
+- [Georgi Kirichkov (@kirichkov)](https://github.com/kirichkov "17 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to appdaemon")
+- [Georgi Yanev (@jumpalottahigh)](https://github.com/jumpalottahigh "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant-polymer")
- [Georgii Staroselskii (@staroselskii)](https://github.com/staroselskii "1 total commits to the home-assistant organization, 1 commit to pi-gen")
- [Gergely Imreh (@imrehg)](https://github.com/imrehg "16 total commits to the home-assistant organization, 11 commits to home-assistant, 5 commits to home-assistant.github.io")
- [Gianluca Barbaro (@MrMep)](https://github.com/MrMep "24 total commits to the home-assistant organization, 16 commits to home-assistant, 8 commits to home-assistant.github.io")
- [Gianpaolo Macario (@gmacario)](https://github.com/gmacario "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Giel Janssens (@gieljnssns)](https://github.com/gieljnssns "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io")
+- [Giel Janssens (@gieljnssns)](https://github.com/gieljnssns "6 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io")
- [githubbuh (@githubbuh)](https://github.com/githubbuh "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
- [gitmopp (@gitmopp)](https://github.com/gitmopp "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [GMFalka (@GMFalka)](https://github.com/GMFalka "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
@@ -358,15 +360,15 @@ This page contains a list of people who have contributed in one way or another t
- [heytcass (@heytcass)](https://github.com/heytcass "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
- [Hillary Fraley (@hillaryfraley)](https://github.com/hillaryfraley "12 total commits to the home-assistant organization, 12 commits to home-assistant.github.io")
- [honcheng (@honcheng)](https://github.com/honcheng "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant")
-- [Hugo Dupras (@jabesq)](https://github.com/jabesq "27 total commits to the home-assistant organization, 19 commits to home-assistant, 8 commits to home-assistant.github.io")
+- [Hugo Dupras (@jabesq)](https://github.com/jabesq "28 total commits to the home-assistant organization, 20 commits to home-assistant, 8 commits to home-assistant.github.io")
- [Hugo Gresse (@HugoGresse)](https://github.com/HugoGresse "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
- [Hung Le (@hungle)](https://github.com/hungle "1 total commits to the home-assistant organization, 1 commit to libcoap")
- [Huw Davies (@beardedgeek)](https://github.com/beardedgeek "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Hydreliox (@HydrelioxGitHub)](https://github.com/HydrelioxGitHub "45 total commits to the home-assistant organization, 34 commits to home-assistant, 11 commits to home-assistant.github.io")
+- [Hydreliox (@HydrelioxGitHub)](https://github.com/HydrelioxGitHub "46 total commits to the home-assistant organization, 34 commits to home-assistant, 12 commits to home-assistant.github.io")
- [Iain Matchett (@matchett808)](https://github.com/matchett808 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Ian Copp (@icopp)](https://github.com/icopp "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [ianj001 (@ianj001)](https://github.com/ianj001 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
-- [icovada (@icovada)](https://github.com/icovada "6 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 3 commits to home-assistant")
+- [icovada (@icovada)](https://github.com/icovada "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Igor Shults (@ishults)](https://github.com/ishults "11 total commits to the home-assistant organization, 6 commits to home-assistant, 4 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [Ioan Loosley (@ioangogo)](https://github.com/ioangogo "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
- [IoTmessenger (@IoTmessenger)](https://github.com/IoTmessenger "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
@@ -385,19 +387,18 @@ This page contains a list of people who have contributed in one way or another t
- [James Cole (@jamespcole)](https://github.com/jamespcole "94 total commits to the home-assistant organization, 93 commits to home-assistant, 1 commit to home-assistant-js")
- [Jamie van Dyke (@fearoffish)](https://github.com/fearoffish "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant-iOS")
- [JammyDodger231 (@JammyDodger231)](https://github.com/JammyDodger231 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
-- [Jan Almeroth (@jalmeroth)](https://github.com/jalmeroth "6 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
+- [Jan Almeroth (@jalmeroth)](https://github.com/jalmeroth "7 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [Jan Harkes (@jaharkes)](https://github.com/jaharkes "110 total commits to the home-assistant organization, 100 commits to home-assistant, 10 commits to netdisco")
-- [Jan Losinski (@janLo)](https://github.com/janLo "18 total commits to the home-assistant organization, 14 commits to home-assistant, 4 commits to home-assistant.github.io")
+- [Jan Losinski (@janLo)](https://github.com/janLo "20 total commits to the home-assistant organization, 16 commits to home-assistant, 4 commits to home-assistant.github.io")
- [Jan Pobořil (@iBobik)](https://github.com/iBobik "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Jan Wh (@janwh)](https://github.com/janwh "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Janne Grunau (@jannau)](https://github.com/jannau "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Jared Beckham (@jtbeckha)](https://github.com/jtbeckha "4 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 2 commits to home-assistant")
+- [Jared Beckham (@jtbeckha)](https://github.com/jtbeckha "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io")
- [Jared J. (@jjensn)](https://github.com/jjensn "1 total commits to the home-assistant organization, 1 commit to netdisco")
- [Jason Carter (@JasonCarter80)](https://github.com/JasonCarter80 "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Jason Hite (@jasonmhite)](https://github.com/jasonmhite "6 total commits to the home-assistant organization, 6 commits to appdaemon")
- [Javier González Calleja (@gonzalezcalleja)](https://github.com/gonzalezcalleja "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Jay Stevens (@Jay2645)](https://github.com/Jay2645 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [jbarrancos (@jbarrancos)](https://github.com/jbarrancos "39 total commits to the home-assistant organization, 39 commits to home-assistant")
- [Jean Regisser (@jeanregisser)](https://github.com/jeanregisser "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Jean-Michel Julien (@KurdyMalloy)](https://github.com/KurdyMalloy "1 total commits to the home-assistant organization, 1 commit to libcoap")
- [Jean-Philippe Bouillot (@Jypy)](https://github.com/Jypy "2 total commits to the home-assistant organization, 2 commits to home-assistant")
@@ -408,32 +409,35 @@ This page contains a list of people who have contributed in one way or another t
- [Jens (@jhoepken)](https://github.com/jhoepken "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Jeremiah Wuenschel (@jer)](https://github.com/jer "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Jeremy (@Wutname1)](https://github.com/Wutname1 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Jeremy Williams (@jwillaz)](https://github.com/jwillaz "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
+- [Jeremy Williams (@jwillaz)](https://github.com/jwillaz "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
- [jeremysv (@jeremysv)](https://github.com/jeremysv "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [Jeroen ter Heerdt (@jeroenterheerdt)](https://github.com/jeroenterheerdt "19 total commits to the home-assistant organization, 12 commits to home-assistant, 7 commits to home-assistant.github.io")
+- [Jeroen ter Heerdt (@jeroenterheerdt)](https://github.com/jeroenterheerdt "20 total commits to the home-assistant organization, 12 commits to home-assistant, 8 commits to home-assistant.github.io")
- [Jerold Albertson (@jeroldalbertson-wf)](https://github.com/jeroldalbertson-wf "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
+- [Jerry Workman (@JerryWorkman)](https://github.com/JerryWorkman "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Jesse Hills (@jesserockz)](https://github.com/jesserockz "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Jesse Newland (@jnewland)](https://github.com/jnewland "14 total commits to the home-assistant organization, 11 commits to home-assistant, 3 commits to hubot-home-assistant")
-- [JesseWebDotCom (@JesseWebDotCom)](https://github.com/JesseWebDotCom "16 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 8 commits to home-assistant")
+- [JesseWebDotCom (@JesseWebDotCom)](https://github.com/JesseWebDotCom "16 total commits to the home-assistant organization, 8 commits to home-assistant, 8 commits to home-assistant.github.io")
- [jgrieger1 (@jgrieger1)](https://github.com/jgrieger1 "1 total commits to the home-assistant organization, 1 commit to appdaemon")
- [jgriff2 (@jgriff2)](https://github.com/jgriff2 "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Jim Rollenhagen (@jimrollenhagen)](https://github.com/jimrollenhagen "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
+- [jimbob1001 (@jimbob1001)](https://github.com/jimbob1001 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Joakim Nohlgård (@gebart)](https://github.com/gebart "2 total commits to the home-assistant organization, 2 commits to libcoap")
- [Joakim Sørensen (@ludeeus)](https://github.com/ludeeus "27 total commits to the home-assistant organization, 14 commits to hassbian-scripts, 13 commits to home-assistant.github.io")
- [Job (@jmvermeulen)](https://github.com/jmvermeulen "2 total commits to the home-assistant organization, 2 commits to home-assistant")
+- [jodur (@jodur)](https://github.com/jodur "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Joe Lee (@xnoodle)](https://github.com/xnoodle "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Joe Lu (@snjoetw)](https://github.com/snjoetw "10 total commits to the home-assistant organization, 8 commits to home-assistant, 2 commits to home-assistant.github.io")
- [joe248 (@joe248)](https://github.com/joe248 "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Joeboyc2 (@Joeboyc2)](https://github.com/Joeboyc2 "15 total commits to the home-assistant organization, 15 commits to home-assistant.github.io")
- [joemcmonagle (@joemcmonagle)](https://github.com/joemcmonagle "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io")
- [Johan Bloemberg (@aequitas)](https://github.com/aequitas "43 total commits to the home-assistant organization, 35 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to netdisco")
-- [Johan Haals (@jhaals)](https://github.com/jhaals "1 total commits to the home-assistant organization, 1 commit to appdaemon")
+- [Johan Haals (@jhaals)](https://github.com/jhaals "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to appdaemon")
- [Johan Klintberg (@moogblob)](https://github.com/moogblob "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Johan van der Kuijl (@Rubyan)](https://github.com/Rubyan "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to appdaemon")
+- [Johan van der Kuijl (@Rubyan)](https://github.com/Rubyan "4 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 1 commit to appdaemon")
- [Johann Kellerman (@kellerza)](https://github.com/kellerza "144 total commits to the home-assistant organization, 114 commits to home-assistant, 30 commits to home-assistant.github.io")
- [Johannes K. (@roadrash2108)](https://github.com/roadrash2108 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [John (@J-C-B)](https://github.com/J-C-B "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
-- [John Arild Berentsen (@turbokongen)](https://github.com/turbokongen "185 total commits to the home-assistant organization, 143 commits to home-assistant, 33 commits to home-assistant.github.io, 9 commits to home-assistant-polymer")
+- [John Arild Berentsen (@turbokongen)](https://github.com/turbokongen "194 total commits to the home-assistant organization, 146 commits to home-assistant, 36 commits to home-assistant.github.io, 12 commits to home-assistant-polymer")
- [John Coggeshall (@coogle)](https://github.com/coogle "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [John Lindley (@jwl17330536)](https://github.com/jwl17330536 "1 total commits to the home-assistant organization, 1 commit to appdaemon")
- [John McLaughlin (@loghound)](https://github.com/loghound "2 total commits to the home-assistant organization, 2 commits to home-assistant")
@@ -441,24 +445,26 @@ This page contains a list of people who have contributed in one way or another t
- [Johnny Chadda (@joch)](https://github.com/joch "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [Jon (@JonMurphy)](https://github.com/JonMurphy "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Jon Caruana (@joncar)](https://github.com/joncar "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io")
+- [Jon Griffith (@arretx)](https://github.com/arretx "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io")
- [Jon Maddox (@maddox)](https://github.com/maddox "102 total commits to the home-assistant organization, 78 commits to home-assistant, 16 commits to homebridge-homeassistant, 8 commits to home-assistant.github.io")
- [Jonas Pedersen (@JonasPed)](https://github.com/JonasPed "1 total commits to the home-assistant organization, 1 commit to appdaemon")
- [Jonatan Castro (@jcastro)](https://github.com/jcastro "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
- [Jonathan Baginski (@patchedsoul)](https://github.com/patchedsoul "115 total commits to the home-assistant organization, 87 commits to fabric-home-assistant, 28 commits to home-assistant.github.io")
- [joopert (@joopert)](https://github.com/joopert "6 total commits to the home-assistant organization, 6 commits to home-assistant")
- [Jordi (@hokus15)](https://github.com/hokus15 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
+- [Jordy (@jbarrancos)](https://github.com/jbarrancos "39 total commits to the home-assistant organization, 39 commits to home-assistant")
- [Jose Juan Montes (@jjmontesl)](https://github.com/jjmontesl "9 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Joseph Carter (@iKarith)](https://github.com/iKarith "9 total commits to the home-assistant organization, 9 commits to pi-gen")
- [Joseph Piron (@eagleamon)](https://github.com/eagleamon "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Josh (@karlw00t)](https://github.com/karlw00t "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Josh Anderson (@andersonshatch)](https://github.com/andersonshatch "6 total commits to the home-assistant organization, 3 commits to homebridge-homeassistant, 3 commits to home-assistant")
-- [Josh Nichols (@technicalpickles)](https://github.com/technicalpickles "24 total commits to the home-assistant organization, 15 commits to home-assistant, 9 commits to home-assistant.github.io")
+- [Josh Nichols (@technicalpickles)](https://github.com/technicalpickles "26 total commits to the home-assistant organization, 15 commits to home-assistant, 11 commits to home-assistant.github.io")
- [Josh Wright (@JshWright)](https://github.com/JshWright "28 total commits to the home-assistant organization, 20 commits to home-assistant, 8 commits to home-assistant.github.io")
- [jpcomtois (@jpcomtois)](https://github.com/jpcomtois "1 total commits to the home-assistant organization, 1 commit to libcoap")
- [JudgeDredd (@JudgeDreddKLC)](https://github.com/JudgeDreddKLC "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io")
- [Juggels (@Juggels)](https://github.com/Juggels "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Julian Kahnert (@JulianKahnert)](https://github.com/JulianKahnert "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [Julius Mittenzwei (@Julius2342)](https://github.com/Julius2342 "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io")
+- [Julius Mittenzwei (@Julius2342)](https://github.com/Julius2342 "14 total commits to the home-assistant organization, 9 commits to home-assistant, 5 commits to home-assistant.github.io")
- [jumpkick (@jumpkick)](https://github.com/jumpkick "15 total commits to the home-assistant organization, 12 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Justin Dray (@justin8)](https://github.com/justin8 "9 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 2 commits to home-assistant")
- [Justin Hayes (@GussyH)](https://github.com/GussyH "7 total commits to the home-assistant organization, 7 commits to hadashboard")
@@ -466,7 +472,7 @@ This page contains a list of people who have contributed in one way or another t
- [Justyn Shull (@justyns)](https://github.com/justyns "5 total commits to the home-assistant organization, 5 commits to home-assistant")
- [Jürgen W (@jurgenweber)](https://github.com/jurgenweber "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Kai (@luxus)](https://github.com/luxus "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Kane610 (@Kane610)](https://github.com/Kane610 "13 total commits to the home-assistant organization, 6 commits to home-assistant, 6 commits to home-assistant.github.io, 1 commit to netdisco")
+- [Kane610 (@Kane610)](https://github.com/Kane610 "15 total commits to the home-assistant organization, 7 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to netdisco")
- [Karen Goode (@kfgoode)](https://github.com/kfgoode "4 total commits to the home-assistant organization, 4 commits to home-assistant")
- [karlkar (@karlkar)](https://github.com/karlkar "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Keaton Taylor (@keatontaylor)](https://github.com/keatontaylor "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io")
@@ -474,9 +480,11 @@ This page contains a list of people who have contributed in one way or another t
- [Keith Lamprecht (@Nixon506E)](https://github.com/Nixon506E "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Ken Bannister (@kb2ma)](https://github.com/kb2ma "1 total commits to the home-assistant organization, 1 commit to libcoap")
- [Ken Davidson (@kwdavidson)](https://github.com/kwdavidson "13 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 2 commits to appdaemon")
+- [Kenny Millington (@kmdm)](https://github.com/kmdm "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Kevin (@Mister-Espria)](https://github.com/Mister-Espria "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Kevin Christensen (@nivekmai)](https://github.com/nivekmai "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Kevin Fronczak (@fronzbot)](https://github.com/fronzbot "18 total commits to the home-assistant organization, 11 commits to home-assistant, 7 commits to home-assistant.github.io")
+- [Kevin Delaney (@kevindelaney)](https://github.com/kevindelaney "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
+- [Kevin Fronczak (@fronzbot)](https://github.com/fronzbot "19 total commits to the home-assistant organization, 11 commits to home-assistant, 8 commits to home-assistant.github.io")
- [Kevin Gisi (@gisikw)](https://github.com/gisikw "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
- [Kevin Gottsman (@gottsman)](https://github.com/gottsman "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io")
- [Kevin Panaro (@kevinpanaro)](https://github.com/kevinpanaro "2 total commits to the home-assistant organization, 2 commits to home-assistant")
@@ -484,10 +492,11 @@ This page contains a list of people who have contributed in one way or another t
- [Keyasha Brothern (@KMBrothern)](https://github.com/KMBrothern "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [kfcook (@kfcook)](https://github.com/kfcook "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [kireyeu (@kireyeu)](https://github.com/kireyeu "4 total commits to the home-assistant organization, 4 commits to home-assistant-notebooks")
-- [Klaas Hoekema (@KlaasH)](https://github.com/KlaasH "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io")
+- [Klaas Hoekema (@KlaasH)](https://github.com/KlaasH "12 total commits to the home-assistant organization, 5 commits to home-assistant, 5 commits to home-assistant.github.io, 2 commits to home-assistant-polymer")
- [Klaus (@k-laus)](https://github.com/k-laus "1 total commits to the home-assistant organization, 1 commit to appdaemon")
- [Krasimir Chariyski (@Chariyski)](https://github.com/Chariyski "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [Krasimir Zhelev (@zhelev)](https://github.com/zhelev "1 total commits to the home-assistant organization, 1 commit to netdisco")
+- [kroimon (@kroimon)](https://github.com/kroimon "1 total commits to the home-assistant organization, 1 commit to netdisco")
- [Kyle Decot (@kyledecot)](https://github.com/kyledecot "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Kyle Gordon (@kylegordon)](https://github.com/kylegordon "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Kyle Hendricks (@kylehendricks)](https://github.com/kylehendricks "6 total commits to the home-assistant organization, 6 commits to home-assistant")
@@ -497,9 +506,11 @@ This page contains a list of people who have contributed in one way or another t
- [Leon99 (@Leon99)](https://github.com/Leon99 "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to appdaemon")
- [Leonardo Saraiva (@vyper)](https://github.com/vyper "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Lev Aronsky (@aronsky)](https://github.com/aronsky "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io")
-- [Lewis Juggins (@lwis)](https://github.com/lwis "61 total commits to the home-assistant organization, 48 commits to home-assistant, 12 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
+- [Lewis Juggins (@lwis)](https://github.com/lwis "63 total commits to the home-assistant organization, 50 commits to home-assistant, 12 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
+- [lichtteil (@lichtteil)](https://github.com/lichtteil "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Lindsay Ward (@lindsaymarkward)](https://github.com/lindsaymarkward "17 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 4 commits to home-assistant")
- [linuxlurak (@linuxlurak)](https://github.com/linuxlurak "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to hadashboard")
+- [linvinus (@linvinus)](https://github.com/linvinus "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [lrmate (@lrmate)](https://github.com/lrmate "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Luar Roji (@cyberplant)](https://github.com/cyberplant "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant")
- [luca-angemi (@luca-angemi)](https://github.com/luca-angemi "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
@@ -507,52 +518,54 @@ This page contains a list of people who have contributed in one way or another t
- [Lucien Guimier (@guimier)](https://github.com/guimier "1 total commits to the home-assistant organization, 1 commit to libcoap")
- [Ludovic (@ldvc)](https://github.com/ldvc "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Lukas (@lukas-hetzenecker)](https://github.com/lukas-hetzenecker "14 total commits to the home-assistant organization, 10 commits to home-assistant, 4 commits to home-assistant.github.io")
-- [Lukas Barth (@tinloaf)](https://github.com/tinloaf "15 total commits to the home-assistant organization, 7 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
+- [Lukas Barth (@tinloaf)](https://github.com/tinloaf "22 total commits to the home-assistant organization, 12 commits to home-assistant, 9 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
+- [Lukas Ecklmayr (@outrun0506)](https://github.com/outrun0506 "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Luke Armstrong (@lukearmstrong)](https://github.com/lukearmstrong "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [Lupin Demid (@lupin-de-mid)](https://github.com/lupin-de-mid "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant")
- [Luuk (@Maharball1)](https://github.com/Maharball1 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [LvivEchoes (@LvivEchoes)](https://github.com/LvivEchoes "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io")
-- [Maciej Bieniek (@bieniu)](https://github.com/bieniu "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to home-assistant-polymer")
-- [Maciej Sokołowski (@matemaciek)](https://github.com/matemaciek "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to hassio-build")
+- [Maciej Bieniek (@bieniu)](https://github.com/bieniu "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer")
+- [Maciej Sokołowski (@matemaciek)](https://github.com/matemaciek "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to hassio-build")
- [Maciej Wasilak (@mwasilak)](https://github.com/mwasilak "1 total commits to the home-assistant organization, 1 commit to libcoap")
- [Magnus Ihse Bursie (@magicus)](https://github.com/magicus "16 total commits to the home-assistant organization, 9 commits to home-assistant, 4 commits to netdisco, 3 commits to home-assistant.github.io")
- [Magnus Lyckå (@magnus-lycka)](https://github.com/magnus-lycka "1 total commits to the home-assistant organization, 1 commit to netdisco")
- [MagnusKnutas (@MagnusKnutas)](https://github.com/MagnusKnutas "29 total commits to the home-assistant organization, 29 commits to home-assistant")
-- [Mahasri Kalavala (@skalavala)](https://github.com/skalavala "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
+- [Mahasri Kalavala (@skalavala)](https://github.com/skalavala "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io")
- [Maikel Wever (@maikelwever)](https://github.com/maikelwever "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Malte Franken (@exxamalte)](https://github.com/exxamalte "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Manu (@matrixagent)](https://github.com/matrixagent "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Marc Egli (@frog32)](https://github.com/frog32 "9 total commits to the home-assistant organization, 7 commits to home-assistant, 2 commits to home-assistant.github.io")
-- [Marc Forth (@mf-social)](https://github.com/mf-social "11 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 1 commit to fabric-home-assistant")
+- [Marc Forth (@mf-social)](https://github.com/mf-social "13 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 1 commit to fabric-home-assistant")
- [Marc Pabst (@mxtra)](https://github.com/mxtra "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Marc Plano-Lesay (@Kernald)](https://github.com/Kernald "12 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 2 commits to home-assistant")
- [Marcel030nl (@Marcel030nl)](https://github.com/Marcel030nl "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
-- [Marcelo Moreira de Mello (@tchellomello)](https://github.com/tchellomello "132 total commits to the home-assistant organization, 72 commits to home-assistant, 58 commits to home-assistant.github.io, 1 commit to home-assistant-assets, 1 commit to home-assistant-polymer")
+- [Marcelo Moreira de Mello (@tchellomello)](https://github.com/tchellomello "139 total commits to the home-assistant organization, 76 commits to home-assistant, 61 commits to home-assistant.github.io, 1 commit to home-assistant-assets, 1 commit to home-assistant-polymer")
- [Marcin Jaworski (@yawor)](https://github.com/yawor "12 total commits to the home-assistant organization, 12 commits to appdaemon")
- [Marijn Giesen (@marijngiesen)](https://github.com/marijngiesen "7 total commits to the home-assistant organization, 5 commits to hadashboard, 2 commits to home-assistant.github.io")
+- [Mark Coombes (@marthoc)](https://github.com/marthoc "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Mark Grosen (@mgsb)](https://github.com/mgsb "1 total commits to the home-assistant organization, 1 commit to netdisco")
- [Mark Huson (@mehuman)](https://github.com/mehuman "11 total commits to the home-assistant organization, 11 commits to home-assistant.github.io")
- [Mark Oude Veldhuis (@markoudev)](https://github.com/markoudev "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
+- [Markus (@iMarkus)](https://github.com/iMarkus "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to hassio")
- [Markus Becker (@markushx)](https://github.com/markushx "6 total commits to the home-assistant organization, 6 commits to libcoap")
- [Markus Lipp (@LightIsLife)](https://github.com/LightIsLife "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Markus Peter (@bimbar)](https://github.com/bimbar "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io")
- [Markus Stenberg (@fingon)](https://github.com/fingon "6 total commits to the home-assistant organization, 6 commits to home-assistant")
-- [marthoc (@marthoc)](https://github.com/marthoc "2 total commits to the home-assistant organization, 2 commits to home-assistant")
-- [Martin Berg (@mbrrg)](https://github.com/mbrrg "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io")
+- [Martin Berg (@mbrrg)](https://github.com/mbrrg "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Martin Donlon (@wickerwaka)](https://github.com/wickerwaka "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io")
-- [Martin Eberhardt (@DarkFox)](https://github.com/DarkFox "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Martin Hjelmare (@MartinHjelmare)](https://github.com/MartinHjelmare "138 total commits to the home-assistant organization, 112 commits to home-assistant, 26 commits to home-assistant.github.io")
+- [Martin Eberhardt (@DarkFox)](https://github.com/DarkFox "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
+- [Martin Hjelmare (@MartinHjelmare)](https://github.com/MartinHjelmare "143 total commits to the home-assistant organization, 114 commits to home-assistant, 29 commits to home-assistant.github.io")
- [Martin Rowan (@shortbloke)](https://github.com/shortbloke "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Martin Vacula (@MatoKafkac)](https://github.com/MatoKafkac "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Martokk (@martokk)](https://github.com/martokk "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Mathew Peterson (@mathewpeterson)](https://github.com/mathewpeterson "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to homebridge-homeassistant")
-- [Matt N. (@mnoorenberghe)](https://github.com/mnoorenberghe "47 total commits to the home-assistant organization, 23 commits to home-assistant-iOS, 16 commits to home-assistant.github.io, 7 commits to home-assistant, 1 commit to home-assistant-polymer")
+- [Matt N. (@mnoorenberghe)](https://github.com/mnoorenberghe "48 total commits to the home-assistant organization, 24 commits to home-assistant-iOS, 16 commits to home-assistant.github.io, 7 commits to home-assistant, 1 commit to home-assistant-polymer")
- [Matt Rogers (@rogersmj)](https://github.com/rogersmj "20 total commits to the home-assistant organization, 20 commits to hadashboard")
-- [Matt Schmitt (@schmittx)](https://github.com/schmittx "26 total commits to the home-assistant organization, 19 commits to homebridge-homeassistant, 5 commits to home-assistant, 2 commits to home-assistant.github.io")
-- [Matt White (@mw-white)](https://github.com/mw-white "6 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 3 commits to home-assistant")
+- [Matt Schmitt (@schmittx)](https://github.com/schmittx "27 total commits to the home-assistant organization, 20 commits to homebridge-homeassistant, 5 commits to home-assistant, 2 commits to home-assistant.github.io")
+- [Matt White (@mw-white)](https://github.com/mw-white "10 total commits to the home-assistant organization, 5 commits to home-assistant, 5 commits to home-assistant.github.io")
- [matt2005 (@matt2005)](https://github.com/matt2005 "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Matteo Lampugnani (@t30)](https://github.com/t30 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
- [Matthew Bowen (@mgbowen)](https://github.com/mgbowen "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
+- [Matthew Donoughe (@mdonoughe)](https://github.com/mdonoughe "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Matthew Garrett (@mjg59)](https://github.com/mjg59 "10 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Matthew Schick (@mattsch)](https://github.com/mattsch "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Matthew Treinish (@mtreinish)](https://github.com/mtreinish "16 total commits to the home-assistant organization, 10 commits to home-assistant, 6 commits to home-assistant.github.io")
@@ -560,6 +573,7 @@ This page contains a list of people who have contributed in one way or another t
- [mauriciobonani (@mauriciobonani)](https://github.com/mauriciobonani "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io")
- [Max Rumpf (@Maxr1998)](https://github.com/Maxr1998 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [mboeru (@mboeru)](https://github.com/mboeru "1 total commits to the home-assistant organization, 1 commit to home-assistant-iOS")
+- [Menno Blom (@b10m)](https://github.com/b10m "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to netdisco")
- [mertenats (@mertenats)](https://github.com/mertenats "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [Micha LaQua (@milaq)](https://github.com/milaq "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Michael (@hartmms)](https://github.com/hartmms "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant")
@@ -568,13 +582,13 @@ This page contains a list of people who have contributed in one way or another t
- [Michael Fester (@michaelfester)](https://github.com/michaelfester "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant")
- [Michael Furtak (@mfurtak)](https://github.com/mfurtak "5 total commits to the home-assistant organization, 5 commits to issue-bot")
- [Michael Gilbert (@Zyell)](https://github.com/Zyell "8 total commits to the home-assistant organization, 8 commits to home-assistant")
-- [Michael Heinemann (@heinemml)](https://github.com/heinemml "2 total commits to the home-assistant organization, 2 commits to home-assistant")
+- [Michael Heinemann (@heinemml)](https://github.com/heinemml "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io")
- [Michael Luggen (@l00mi)](https://github.com/l00mi "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [Michael Prokop (@mika)](https://github.com/mika "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Michael Requeny (@requenym)](https://github.com/requenym "14 total commits to the home-assistant organization, 14 commits to home-assistant.github.io")
- [Michael Shim (@shimeez)](https://github.com/shimeez "1 total commits to the home-assistant organization, 1 commit to fabric-home-assistant")
- [Michaël Arnauts (@michaelarnauts)](https://github.com/michaelarnauts "61 total commits to the home-assistant organization, 31 commits to home-assistant, 26 commits to home-assistant.github.io, 3 commits to home-assistant-polymer, 1 commit to netdisco")
-- [Michel Settembrino (@MS-Informatique)](https://github.com/MS-Informatique "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
+- [Michel Settembrino (@Michel-Settembrino)](https://github.com/Michel-Settembrino "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [micw (@micw)](https://github.com/micw "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Miha Lunar (@SmilyOrg)](https://github.com/SmilyOrg "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Mikael Bergemalm (@bergemalm)](https://github.com/bergemalm "2 total commits to the home-assistant organization, 2 commits to home-assistant")
@@ -586,38 +600,38 @@ This page contains a list of people who have contributed in one way or another t
- [Mike Roberts (@m-roberts)](https://github.com/m-roberts "1 total commits to the home-assistant organization, 1 commit to pi-gen")
- [mikey (@pfista)](https://github.com/pfista "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Mikkel Høgh (@mikl)](https://github.com/mikl "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [Milan V. (@milanvo)](https://github.com/milanvo "11 total commits to the home-assistant organization, 5 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
+- [Milan V. (@milanvo)](https://github.com/milanvo "17 total commits to the home-assistant organization, 9 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [MinchinWeb (@MinchinWeb)](https://github.com/MinchinWeb "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [miniconfig (@miniconfig)](https://github.com/miniconfig "27 total commits to the home-assistant organization, 20 commits to home-assistant, 7 commits to home-assistant.github.io")
- [Minims (@Minims)](https://github.com/Minims "3 total commits to the home-assistant organization, 3 commits to homebridge-homeassistant")
-- [Mister Wil (@MisterWil)](https://github.com/MisterWil "16 total commits to the home-assistant organization, 10 commits to home-assistant, 6 commits to home-assistant.github.io")
+- [Mister Wil (@MisterWil)](https://github.com/MisterWil "17 total commits to the home-assistant organization, 11 commits to home-assistant, 6 commits to home-assistant.github.io")
- [Mitchell Cash (@mitchellcash)](https://github.com/mitchellcash "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Mitesh Patel (@gurumitts)](https://github.com/gurumitts "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io")
-- [Mitko Masarliev (@masarliev)](https://github.com/masarliev "2 total commits to the home-assistant organization, 2 commits to home-assistant")
+- [Mitko Masarliev (@masarliev)](https://github.com/masarliev "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [mje-nz (@mje-nz)](https://github.com/mje-nz "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [mjj4791 (@mjj4791)](https://github.com/mjj4791 "22 total commits to the home-assistant organization, 15 commits to home-assistant.github.io, 7 commits to home-assistant")
- [Molodax (@Molodax)](https://github.com/Molodax "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
- [Moon Shot (@moonshot)](https://github.com/moonshot "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [moose51789 (@moose51789)](https://github.com/moose51789 "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
-- [moskovskiy82 (@moskovskiy82)](https://github.com/moskovskiy82 "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
+- [moskovskiy82 (@moskovskiy82)](https://github.com/moskovskiy82 "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io")
- [motir (@motir)](https://github.com/motir "1 total commits to the home-assistant organization, 1 commit to appdaemon")
- [mtl010957 (@mtl010957)](https://github.com/mtl010957 "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Mārtiņš Grunskis (@grunskis)](https://github.com/grunskis "1 total commits to the home-assistant organization, 1 commit to netdisco")
- [Naren Salem (@naren8642)](https://github.com/naren8642 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Nate (@BillyNate)](https://github.com/BillyNate "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Nathan Flynn (@eperdeme)](https://github.com/eperdeme "1 total commits to the home-assistant organization, 1 commit to hassio-addons")
-- [Nathan Henrie (@n8henrie)](https://github.com/n8henrie "18 total commits to the home-assistant organization, 8 commits to home-assistant, 6 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant, 1 commit to appdaemon, 1 commit to home-assistant-polymer")
+- [Nathan Henrie (@n8henrie)](https://github.com/n8henrie "19 total commits to the home-assistant organization, 9 commits to home-assistant, 6 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant, 1 commit to appdaemon, 1 commit to home-assistant-polymer")
- [Neil Lathwood (@laf)](https://github.com/laf "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant")
- [Nelis Willers (@NelisW)](https://github.com/NelisW "1 total commits to the home-assistant organization, 1 commit to fabric-home-assistant")
-- [NeLLyMerC (@NeLLyMerC)](https://github.com/NeLLyMerC "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
+- [NeLLyMerC (@NeLLyMerC)](https://github.com/NeLLyMerC "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [Nemanja Stefanovic (@nemik)](https://github.com/nemik "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [neonbunny (@neonbunny)](https://github.com/neonbunny "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Nicholas Amadori (@namadori)](https://github.com/namadori "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Nicholas Griffin (@nicholasgriffintn)](https://github.com/nicholasgriffintn "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io")
- [Nicholas Sielicki (@sielicki)](https://github.com/sielicki "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io")
- [Nick (@quadportnick)](https://github.com/quadportnick "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io")
-- [Nick Vella (@nvella)](https://github.com/nvella "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to homebridge-homeassistant")
- [Nick Waring (@nickwaring)](https://github.com/nickwaring "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io")
+- [Nicolae Vlădescu (@nicolaevladescu)](https://github.com/nicolaevladescu "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Nicolas Graziano (@ngraziano)](https://github.com/ngraziano "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Nicolas Martignoni (@martignoni)](https://github.com/martignoni "1 total commits to the home-assistant organization, 1 commit to pi-gen")
- [Niklas (@niklaswa)](https://github.com/niklaswa "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
@@ -628,7 +642,8 @@ This page contains a list of people who have contributed in one way or another t
- [nodomain (@nodomain)](https://github.com/nodomain "9 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant")
- [Nolan Gilley (@nkgilley)](https://github.com/nkgilley "116 total commits to the home-assistant organization, 91 commits to home-assistant, 25 commits to home-assistant.github.io")
- [NotoriousBDG (@notoriousbdg)](https://github.com/notoriousbdg "3 total commits to the home-assistant organization, 3 commits to hassio-addons")
-- [ntalekt (@ntalekt)](https://github.com/ntalekt "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
+- [NovapaX (@NovapaX)](https://github.com/NovapaX "7 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant-polymer, 1 commit to home-assistant-assets")
+- [ntalekt (@ntalekt)](https://github.com/ntalekt "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io")
- [Nuno Sousa (@nunofgs)](https://github.com/nunofgs "7 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to homebridge-homeassistant")
- [obgm (@obgm)](https://github.com/obgm "480 total commits to the home-assistant organization, 480 commits to libcoap")
- [Olav Alexander Mjelde (@olavxxx)](https://github.com/olavxxx "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
@@ -638,101 +653,91 @@ This page contains a list of people who have contributed in one way or another t
- [Oliv3rDog (@Oliv3rDog)](https://github.com/Oliv3rDog "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Oliver (@scarface-4711)](https://github.com/scarface-4711 "23 total commits to the home-assistant organization, 13 commits to home-assistant, 9 commits to home-assistant.github.io, 1 commit to netdisco")
- [Oliver van Porten (@mcdeck)](https://github.com/mcdeck "10 total commits to the home-assistant organization, 10 commits to home-assistant")
-- [olskar (@olskar)](https://github.com/olskar "5 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 1 commit to hassbian-scripts")
- [Omar Usman (@omarusman)](https://github.com/omarusman "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Open Home Automation (@open-homeautomation)](https://github.com/open-homeautomation "41 total commits to the home-assistant organization, 29 commits to home-assistant, 12 commits to home-assistant.github.io")
+- [Otto Winter (@OttoWinter)](https://github.com/OttoWinter "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [oznu (@oznu)](https://github.com/oznu "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant")
- [Parker Moore (@parkr)](https://github.com/parkr "62 total commits to the home-assistant organization, 62 commits to home-assistant.github.io")
- [pascal (@passie)](https://github.com/passie "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer")
- [Pascal Bach (@bachp)](https://github.com/bachp "10 total commits to the home-assistant organization, 9 commits to home-assistant, 1 commit to netdisco")
-- [Pascal Vizeli (@pvizeli)](https://github.com/pvizeli "2154 total commits to the home-assistant organization, 840 commits to hassio, 411 commits to home-assistant, 300 commits to hassio-addons, 298 commits to hassio-build, 287 commits to home-assistant.github.io, 16 commits to hassio-addons-example, 1 commit to home-assistant-js-websocket, 1 commit to netdisco")
+- [Pascal Vizeli (@pvizeli)](https://github.com/pvizeli "2199 total commits to the home-assistant organization, 859 commits to hassio, 426 commits to home-assistant, 306 commits to hassio-build, 300 commits to hassio-addons, 290 commits to home-assistant.github.io, 16 commits to hassio-addons-example, 1 commit to netdisco, 1 commit to home-assistant-js-websocket")
- [patkap (@patkap)](https://github.com/patkap "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Patrick Aikens (@duckpuppy)](https://github.com/duckpuppy "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Patrick Easters (@patrickeasters)](https://github.com/patrickeasters "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
- [Patrick White (@pw)](https://github.com/pw "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Patrik (@ggravlingen)](https://github.com/ggravlingen "3 total commits to the home-assistant organization, 3 commits to home-assistant")
+- [Patrik (@ggravlingen)](https://github.com/ggravlingen "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io")
+- [Patrik Hermansson (@bphermansson)](https://github.com/bphermansson "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Paul Jimenez (@pjz)](https://github.com/pjz "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Paul Sokolovsky (@pfalcon)](https://github.com/pfalcon "6 total commits to the home-assistant organization, 3 commits to netdisco, 3 commits to home-assistant")
- [Pavel Ponomarev (@awsum)](https://github.com/awsum "2 total commits to the home-assistant organization, 2 commits to home-assistant-polymer")
- [PawelWMS (@PawelWMS)](https://github.com/PawelWMS "12 total commits to the home-assistant organization, 12 commits to libcoap")
- [Pedro Navarro (@pedronavf)](https://github.com/pedronavf "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Pedro Pombeiro (@PombeirP)](https://github.com/PombeirP "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [Per Osbäck (@perosb)](https://github.com/perosb "5 total commits to the home-assistant organization, 5 commits to home-assistant")
+- [Per Osbäck (@perosb)](https://github.com/perosb "12 total commits to the home-assistant organization, 10 commits to home-assistant, 2 commits to home-assistant.github.io")
- [Per Sandström (@persandstrom)](https://github.com/persandstrom "124 total commits to the home-assistant organization, 98 commits to home-assistant, 14 commits to home-assistant.github.io, 12 commits to home-assistant-polymer")
+- [Petar Petrov (@MindFreeze)](https://github.com/MindFreeze "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Pete Peterson (@petey)](https://github.com/petey "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
-- [PetePriority (@PetePriority)](https://github.com/PetePriority "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Peter Epley (@epleypa)](https://github.com/epleypa "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
+- [PeteBa (@PeteBa)](https://github.com/PeteBa "8 total commits to the home-assistant organization, 5 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
+- [Peter Epley (@epleypa)](https://github.com/epleypa "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io")
- [Petr Vraník (@konikvranik)](https://github.com/konikvranik "11 total commits to the home-assistant organization, 6 commits to home-assistant, 5 commits to home-assistant.github.io")
- [pezinek (@pezinek)](https://github.com/pezinek "8 total commits to the home-assistant organization, 8 commits to home-assistant")
- [Phil (@godloth)](https://github.com/godloth "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io")
- [Phil Cole (@filcole)](https://github.com/filcole "8 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 3 commits to home-assistant")
- [Phil Haack (@Haacked)](https://github.com/Haacked "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [Phil Hawthorne (@philhawthorne)](https://github.com/philhawthorne "23 total commits to the home-assistant organization, 17 commits to home-assistant.github.io, 6 commits to home-assistant")
-- [Phil Kates (@philk)](https://github.com/philk "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io")
-- [Phileep (@Phileep)](https://github.com/Phileep "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
+- [Phil Hawthorne (@philhawthorne)](https://github.com/philhawthorne "24 total commits to the home-assistant organization, 18 commits to home-assistant.github.io, 6 commits to home-assistant")
+- [Phil Kates (@philk)](https://github.com/philk "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Philip Hofstetter (@pilif)](https://github.com/pilif "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io")
- [Philip Lundrigan (@philipbl)](https://github.com/philipbl "65 total commits to the home-assistant organization, 56 commits to home-assistant, 9 commits to home-assistant.github.io")
-- [Philipp Schmitt (@pschmitt)](https://github.com/pschmitt "36 total commits to the home-assistant organization, 23 commits to home-assistant, 11 commits to home-assistant.github.io, 1 commit to appdaemon, 1 commit to hassio-build")
-- [Phill Price (@phillprice)](https://github.com/phillprice "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io")
+- [Philipp Schmitt (@pschmitt)](https://github.com/pschmitt "36 total commits to the home-assistant organization, 23 commits to home-assistant, 11 commits to home-assistant.github.io, 1 commit to hassio-build, 1 commit to appdaemon")
+- [Phill Price (@phillprice)](https://github.com/phillprice "11 total commits to the home-assistant organization, 11 commits to home-assistant.github.io")
- [PhracturedBlue (@PhracturedBlue)](https://github.com/PhracturedBlue "15 total commits to the home-assistant organization, 7 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
-- [Pierre Ståhl (@postlund)](https://github.com/postlund "37 total commits to the home-assistant organization, 25 commits to home-assistant, 8 commits to home-assistant.github.io, 4 commits to netdisco")
+- [Pierre Ståhl (@postlund)](https://github.com/postlund "44 total commits to the home-assistant organization, 29 commits to home-assistant, 9 commits to home-assistant.github.io, 4 commits to netdisco, 2 commits to home-assistant-polymer")
- [Piratonym (@Piratonym)](https://github.com/Piratonym "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [PuckStar (@PuckStar)](https://github.com/PuckStar "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
-- [R Huish (@Genestealer)](https://github.com/Genestealer "19 total commits to the home-assistant organization, 19 commits to home-assistant.github.io")
+- [R Huish (@Genestealer)](https://github.com/Genestealer "20 total commits to the home-assistant organization, 20 commits to home-assistant.github.io")
- [rbflurry (@rbflurry)](https://github.com/rbflurry "14 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 3 commits to home-assistant")
-- [RBHR (@rbhr)](https://github.com/rbhr "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Reed Riley (@reedriley)](https://github.com/reedriley "2 total commits to the home-assistant organization, 2 commits to home-assistant")
+- [Rendili (@Rendili)](https://github.com/Rendili "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Rene Tode (@ReneTode)](https://github.com/ReneTode "25 total commits to the home-assistant organization, 25 commits to appdaemon")
- [René Kliment (@renekliment)](https://github.com/renekliment "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Rev Michael Greb (@mikegrb)](https://github.com/mikegrb "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Reza Moallemi (@moallemi)](https://github.com/moallemi "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
-- [rhooper (@rhooper)](https://github.com/rhooper "30 total commits to the home-assistant organization, 25 commits to home-assistant, 3 commits to home-assistant.github.io, 2 commits to hadashboard")
+- [rhooper (@rhooper)](https://github.com/rhooper "27 total commits to the home-assistant organization, 25 commits to home-assistant, 2 commits to hadashboard")
- [Riccardo Canta (@commento)](https://github.com/commento "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Richard Arends (@Mosibi)](https://github.com/Mosibi "8 total commits to the home-assistant organization, 8 commits to home-assistant")
- [Richard Cox (@Khabi)](https://github.com/Khabi "15 total commits to the home-assistant organization, 9 commits to home-assistant, 6 commits to home-assistant.github.io")
-- [Richard Cunningham (@rythie)](https://github.com/rythie "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Richard Leurs (@R1chardTM)](https://github.com/R1chardTM "13 total commits to the home-assistant organization, 7 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
+- [Richard Leurs (@R1chardTM)](https://github.com/R1chardTM "14 total commits to the home-assistant organization, 7 commits to home-assistant, 6 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [rkabadi (@rkabadi)](https://github.com/rkabadi "17 total commits to the home-assistant organization, 17 commits to home-assistant")
- [Rob Capellini (@capellini)](https://github.com/capellini "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Rob Slifka (@rslifka)](https://github.com/rslifka "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
-- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "1223 total commits to the home-assistant organization, 553 commits to home-assistant-iOS, 255 commits to home-assistant, 247 commits to home-assistant.github.io, 90 commits to homebridge-homeassistant, 15 commits to home-assistant-polymer, 9 commits to hubot-home-assistant, 8 commits to Analytics-Receiver, 6 commits to netdisco, 3 commits to hadashboard, 3 commits to hassbot, 3 commits to scenegen, 3 commits to home-assistant-cli, 3 commits to home-assistant-js, 3 commits to appdaemon, 3 commits to home-assistant-js-websocket, 3 commits to organization, 2 commits to home-assistant-ansible, 2 commits to home-assistant-dev-helper, 2 commits to home-assistant-notebooks, 2 commits to lambda-home-assistant-github, 2 commits to fabric-home-assistant, 2 commits to home-assistant-assets, 2 commits to micropython-home-assistant, 2 commits to LabelBot")
+- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "1315 total commits to the home-assistant organization, 646 commits to home-assistant-iOS, 259 commits to home-assistant, 248 commits to home-assistant.github.io, 91 commits to homebridge-homeassistant, 15 commits to home-assistant-polymer, 9 commits to hubot-home-assistant, 8 commits to Analytics-Receiver, 6 commits to netdisco, 3 commits to home-assistant-js, 3 commits to scenegen, 3 commits to appdaemon, 3 commits to hadashboard, 3 commits to hassbot, 3 commits to home-assistant-js-websocket, 3 commits to organization, 2 commits to LabelBot, 2 commits to lambda-home-assistant-github, 2 commits to fabric-home-assistant, 2 commits to home-assistant-assets, 2 commits to micropython-home-assistant, 2 commits to home-assistant-notebooks")
- [Robby Grossman (@freerobby)](https://github.com/freerobby "2 total commits to the home-assistant organization, 2 commits to home-assistant")
-- [Robin (@robmarkcole)](https://github.com/robmarkcole "13 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 5 commits to home-assistant")
+- [Robin (@robmarkcole)](https://github.com/robmarkcole "15 total commits to the home-assistant organization, 9 commits to home-assistant.github.io, 6 commits to home-assistant")
- [Robin Laurén (@llauren)](https://github.com/llauren "1 total commits to the home-assistant organization, 1 commit to appdaemon")
- [Roddie Hasan (@eiddor)](https://github.com/eiddor "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io")
- [Roi Dayan (@roidayan)](https://github.com/roidayan "6 total commits to the home-assistant organization, 6 commits to home-assistant")
- [roiff (@roiff)](https://github.com/roiff "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant")
- [Ron Klinkien (@cyberjunky)](https://github.com/cyberjunky "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant")
-- [Ronald Dehuysser (@rdehuyss)](https://github.com/rdehuyss "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [roqeer (@roqeer)](https://github.com/roqeer "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [Ross Dargan (@rossdargan)](https://github.com/rossdargan "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Ross Schulman (@rschulman)](https://github.com/rschulman "1 total commits to the home-assistant organization, 1 commit to pi-gen")
- [rpitera (@rpitera)](https://github.com/rpitera "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
- [rubund (@rubund)](https://github.com/rubund "4 total commits to the home-assistant organization, 4 commits to home-assistant")
- [runningman84 (@runningman84)](https://github.com/runningman84 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
-- [RunOnGitHub (@RunOnGitHub)](https://github.com/RunOnGitHub "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Ruslan Kiianchuk (@zoresvit)](https://github.com/zoresvit "1 total commits to the home-assistant organization, 1 commit to pi-gen")
-- [Russell Cloran (@rcloran)](https://github.com/rcloran "21 total commits to the home-assistant organization, 15 commits to home-assistant, 4 commits to homebridge-homeassistant, 2 commits to home-assistant.github.io")
+- [Russell Cloran (@rcloran)](https://github.com/rcloran "19 total commits to the home-assistant organization, 15 commits to home-assistant, 4 commits to homebridge-homeassistant")
- [Ryan Bahm (@rdbahm)](https://github.com/rdbahm "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Ryan Borstelmann (@SlothCroissant)](https://github.com/SlothCroissant "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [Ryan Bray (@rbray89)](https://github.com/rbray89 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Ryan Daigle (@rwdaigle)](https://github.com/rwdaigle "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [Ryan Kraus (@rmkraus)](https://github.com/rmkraus "195 total commits to the home-assistant organization, 163 commits to home-assistant, 17 commits to home-assistant.github.io, 14 commits to home-assistant-polymer, 1 commit to home-assistant-notebooks")
-- [Ryan McLean (@ryanm101)](https://github.com/ryanm101 "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io")
-- [Ryan Parrish (@stickystyle)](https://github.com/stickystyle "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
+- [Ryan Kraus (@rmkraus)](https://github.com/rmkraus "193 total commits to the home-assistant organization, 163 commits to home-assistant, 15 commits to home-assistant.github.io, 14 commits to home-assistant-polymer, 1 commit to home-assistant-notebooks")
+- [Ryan McLean (@ryanm101)](https://github.com/ryanm101 "7 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant")
- [Ryan Turner (@turnrye)](https://github.com/turnrye "6 total commits to the home-assistant organization, 6 commits to home-assistant")
- [Sabesto (@Sabesto)](https://github.com/Sabesto "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [Sacha Telgenhof (@stelgenhof)](https://github.com/stelgenhof "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Sam Birch (@hotplot)](https://github.com/hotplot "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Sam Holmes (@sam3d)](https://github.com/sam3d "4 total commits to the home-assistant organization, 4 commits to pi-gen")
-- [Sam Jongenelen (@SamJongenelen)](https://github.com/SamJongenelen "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Sam Whited (@SamWhited)](https://github.com/SamWhited "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [sam-io (@sam-io)](https://github.com/sam-io "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [Samuel Bétrisey (@betrisey)](https://github.com/betrisey "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [sander76 (@sander76)](https://github.com/sander76 "40 total commits to the home-assistant organization, 36 commits to home-assistant, 4 commits to home-assistant.github.io")
-- [Schmackos (@Schmackos)](https://github.com/Schmackos "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
+- [sander76 (@sander76)](https://github.com/sander76 "41 total commits to the home-assistant organization, 37 commits to home-assistant, 4 commits to home-assistant.github.io")
- [schneefux (@schneefux)](https://github.com/schneefux "2 total commits to the home-assistant organization, 2 commits to home-assistant")
-- [Scott Bradshaw (@swbradshaw)](https://github.com/swbradshaw "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io")
+- [Scott Bradshaw (@swbradshaw)](https://github.com/swbradshaw "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Scott Griffin (@scottocs11)](https://github.com/scottocs11 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
- [Scott O'Neil (@americanwookie)](https://github.com/americanwookie "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Scott Reston (@ih8gates)](https://github.com/ih8gates "9 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
@@ -740,49 +745,49 @@ This page contains a list of people who have contributed in one way or another t
- [Sean Gollschewsky (@gollo)](https://github.com/gollo "17 total commits to the home-assistant organization, 10 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits to hassio-build")
- [Sebastian (@sebk-666)](https://github.com/sebk-666 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Sebastian (@sgso)](https://github.com/sgso "3 total commits to the home-assistant organization, 3 commits to libcoap")
-- [Sebastian Muszynski (@syssi)](https://github.com/syssi "32 total commits to the home-assistant organization, 16 commits to home-assistant, 14 commits to home-assistant.github.io, 2 commits to home-assistant-polymer")
+- [Sebastian Muszynski (@syssi)](https://github.com/syssi "42 total commits to the home-assistant organization, 21 commits to home-assistant, 19 commits to home-assistant.github.io, 2 commits to home-assistant-polymer")
- [Sebastian von Minckwitz (@teodoc)](https://github.com/teodoc "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Semir Patel (@analogue)](https://github.com/analogue "2 total commits to the home-assistant organization, 2 commits to appdaemon")
-- [Sergey Isachenko (@zabuldon)](https://github.com/zabuldon "8 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to home-assistant.github.io")
-- [sfam (@sfam)](https://github.com/sfam "65 total commits to the home-assistant organization, 58 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to home-assistant-polymer, 1 commit to netdisco")
+- [Sergey Isachenko (@zabuldon)](https://github.com/zabuldon "6 total commits to the home-assistant organization, 6 commits to home-assistant")
+- [sfam (@sfam)](https://github.com/sfam "65 total commits to the home-assistant organization, 58 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to netdisco, 1 commit to home-assistant-polymer")
- [sharukins (@sharukins)](https://github.com/sharukins "2 total commits to the home-assistant organization, 2 commits to hassio-build")
-- [Shawna O'Neal (@cherrykoda)](https://github.com/cherrykoda "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Shiny (@Br3nda)](https://github.com/Br3nda "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [siebert (@siebert)](https://github.com/siebert "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [Simon Elsbrock (@else)](https://github.com/else "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
+- [Simon (@echox)](https://github.com/echox "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Simon Szustkowski (@simonszu)](https://github.com/simonszu "7 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant")
- [Sjors Spoorendonk (@sjorsjes)](https://github.com/sjorsjes "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [snizzleorg (@snizzleorg)](https://github.com/snizzleorg "5 total commits to the home-assistant organization, 5 commits to hadashboard")
- [St. John Johnson (@stjohnjohnson)](https://github.com/stjohnjohnson "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io")
-- [Stefan Jonasson (@stefan-jonasson)](https://github.com/stefan-jonasson "10 total commits to the home-assistant organization, 6 commits to home-assistant, 4 commits to home-assistant.github.io")
+- [Stefan Jonasson (@stefan-jonasson)](https://github.com/stefan-jonasson "12 total commits to the home-assistant organization, 8 commits to home-assistant, 4 commits to home-assistant.github.io")
- [Stefano Scipioni (@scipioni)](https://github.com/scipioni "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Stephen Edgar (@ntwb)](https://github.com/ntwb "1 total commits to the home-assistant organization, 1 commit to fabric-home-assistant")
- [Stephen Hoekstra (@shoekstra)](https://github.com/shoekstra "2 total commits to the home-assistant organization, 2 commits to home-assistant")
+- [Stephen Yeargin (@stephenyeargin)](https://github.com/stephenyeargin "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Steven Looman (@StevenLooman)](https://github.com/StevenLooman "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Stu Gott (@stu-gott)](https://github.com/stu-gott "9 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 4 commits to home-assistant")
- [Stuart Mumford (@Cadair)](https://github.com/Cadair "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [swanwila (@swanwila)](https://github.com/swanwila "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [System Tester (@systemtester)](https://github.com/systemtester "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [Sytone (@sytone)](https://github.com/sytone "11 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to home-assistant-cli, 2 commits to home-assistant, 1 commit to hassio-build")
+- [Sytone (@sytone)](https://github.com/sytone "9 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to home-assistant, 1 commit to hassio-build")
- [Sébastien RAMAGE (@doudz)](https://github.com/doudz "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Sören Oldag (@soldag)](https://github.com/soldag "15 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 7 commits to home-assistant")
-- [Taylor Peet (@RePeet13)](https://github.com/RePeet13 "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io")
+- [Taylor Peet (@RePeet13)](https://github.com/RePeet13 "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io")
- [Teagan Glenn (@Teagan42)](https://github.com/Teagan42 "59 total commits to the home-assistant organization, 49 commits to home-assistant, 9 commits to home-assistant.github.io, 1 commit to home-assistant-js")
-- [Ted Drain (@TD22057)](https://github.com/TD22057 "2 total commits to the home-assistant organization, 2 commits to home-assistant")
+- [Ted Drain (@TD22057)](https://github.com/TD22057 "4 total commits to the home-assistant organization, 4 commits to home-assistant")
- [tedstriker (@tedstriker)](https://github.com/tedstriker "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Teemu Mikkonen (@T3m3z)](https://github.com/T3m3z "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Teemu Patja (@tpatja)](https://github.com/tpatja "2 total commits to the home-assistant organization, 2 commits to home-assistant")
-- [Teemu R. (@rytilahti)](https://github.com/rytilahti "42 total commits to the home-assistant organization, 33 commits to home-assistant, 7 commits to home-assistant.github.io, 2 commits to netdisco")
+- [Teemu R. (@rytilahti)](https://github.com/rytilahti "43 total commits to the home-assistant organization, 34 commits to home-assistant, 7 commits to home-assistant.github.io, 2 commits to netdisco")
- [Teguh Sobirin (@tjstyle)](https://github.com/tjstyle "2 total commits to the home-assistant organization, 2 commits to pi-gen")
- [Tentoe (@Tentoe)](https://github.com/Tentoe "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Theb-1 (@Theb-1)](https://github.com/Theb-1 "5 total commits to the home-assistant organization, 5 commits to home-assistant")
- [thecynic (@thecynic)](https://github.com/thecynic "4 total commits to the home-assistant organization, 4 commits to home-assistant")
- [Theodor Lindquist (@theolind)](https://github.com/theolind "25 total commits to the home-assistant organization, 25 commits to home-assistant")
- [Thiago Oliveira (@chilicheech)](https://github.com/chilicheech "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [Thibault Cohen (@titilambert)](https://github.com/titilambert "36 total commits to the home-assistant organization, 23 commits to home-assistant, 13 commits to home-assistant.github.io")
+- [Thibault Cohen (@titilambert)](https://github.com/titilambert "38 total commits to the home-assistant organization, 25 commits to home-assistant, 13 commits to home-assistant.github.io")
- [Thibault Maekelbergh (@thibmaek)](https://github.com/thibmaek "1 total commits to the home-assistant organization, 1 commit to hassio-addons")
- [ThinkPadNL (@ThinkPadNL)](https://github.com/ThinkPadNL "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
-- [Thom Troy (@ttroy50)](https://github.com/ttroy50 "6 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 3 commits to home-assistant")
+- [Thom Troy (@ttroy50)](https://github.com/ttroy50 "10 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 3 commits to home-assistant")
- [Thomas Friedel (@tfriedel)](https://github.com/tfriedel "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Thomas Petazzoni (@tpetazzoni)](https://github.com/tpetazzoni "1 total commits to the home-assistant organization, 1 commit to libcoap")
- [Thomas Phillips (@thomas-teknique)](https://github.com/thomas-teknique "2 total commits to the home-assistant organization, 2 commits to pi-gen")
@@ -805,24 +810,25 @@ This page contains a list of people who have contributed in one way or another t
- [Tom Usher (@tomusher)](https://github.com/tomusher "1 total commits to the home-assistant organization, 1 commit to netdisco")
- [Tomi Salmi (@tomppasalmi)](https://github.com/tomppasalmi "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Tomi Tuhkanen (@ttu)](https://github.com/ttu "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [TopdRob (@TopdRob)](https://github.com/TopdRob "4 total commits to the home-assistant organization, 4 commits to home-assistant")
+- [TopdRob (@TopdRob)](https://github.com/TopdRob "7 total commits to the home-assistant organization, 7 commits to home-assistant")
- [Torkild Retvedt (@torkildr)](https://github.com/torkildr "2 total commits to the home-assistant organization, 2 commits to appdaemon")
- [Toshik (@Toshik)](https://github.com/Toshik "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant")
- [tradiuz (@tradiuz)](https://github.com/tradiuz "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
- [trbs (@trbs)](https://github.com/trbs "1 total commits to the home-assistant organization, 1 commit to netdisco")
-- [Trevor (@tboyce021)](https://github.com/tboyce021 "14 total commits to the home-assistant organization, 10 commits to home-assistant, 4 commits to home-assistant.github.io")
+- [Trevor (@tboyce021)](https://github.com/tboyce021 "15 total commits to the home-assistant organization, 10 commits to home-assistant, 5 commits to home-assistant.github.io")
- [Trey Hunner (@treyhunner)](https://github.com/treyhunner "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Tristan Caulfield (@Bahnburner)](https://github.com/Bahnburner "1 total commits to the home-assistant organization, 1 commit to home-assistant")
- [trollkarlen (@trollkarlen)](https://github.com/trollkarlen "5 total commits to the home-assistant organization, 5 commits to home-assistant")
- [Tsvi Mostovicz (@tsvi)](https://github.com/tsvi "9 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 4 commits to home-assistant")
- [Tyler Page (@iamtpage)](https://github.com/iamtpage "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Tõnis Tobre (@tobre6)](https://github.com/tobre6 "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant")
-- [Uli (@uehler)](https://github.com/uehler "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
+- [Uli (@uehler)](https://github.com/uehler "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
+- [UnrealKazu (@UnrealKazu)](https://github.com/UnrealKazu "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [upsert (@upsert)](https://github.com/upsert "1 total commits to the home-assistant organization, 1 commit to netdisco")
- [User5981 (@User5981)](https://github.com/User5981 "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Valentin Alexeev (@valentinalexeev)](https://github.com/valentinalexeev "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Viet Dzung (@dzungpv)](https://github.com/dzungpv "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
-- [Vignesh Venkat (@vickyg3)](https://github.com/vickyg3 "4 total commits to the home-assistant organization, 4 commits to home-assistant")
+- [Vignesh Venkat (@vickyg3)](https://github.com/vickyg3 "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io")
- [viswa-swami (@viswa-swami)](https://github.com/viswa-swami "9 total commits to the home-assistant organization, 9 commits to home-assistant")
- [Vlad Korniev (@vkorn)](https://github.com/vkorn "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to hassio-build")
- [vllungu (@vllungu)](https://github.com/vllungu "3 total commits to the home-assistant organization, 3 commits to libcoap")
@@ -833,23 +839,24 @@ This page contains a list of people who have contributed in one way or another t
- [Will W. (@tiktok7)](https://github.com/tiktok7 "4 total commits to the home-assistant organization, 4 commits to home-assistant")
- [Willems Davy (@joyrider3774)](https://github.com/joyrider3774 "7 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant")
- [William Johansson (@radhus)](https://github.com/radhus "1 total commits to the home-assistant organization, 1 commit to hassio")
-- [William Scanlon (@w1ll1am23)](https://github.com/w1ll1am23 "92 total commits to the home-assistant organization, 63 commits to home-assistant, 27 commits to home-assistant.github.io, 2 commits to netdisco")
+- [William Scanlon (@w1ll1am23)](https://github.com/w1ll1am23 "102 total commits to the home-assistant organization, 68 commits to home-assistant, 32 commits to home-assistant.github.io, 2 commits to netdisco")
- [williamlehman (@williamlehman)](https://github.com/williamlehman "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [wind-rider (@wind-rider)](https://github.com/wind-rider "5 total commits to the home-assistant organization, 5 commits to home-assistant")
- [wokar (@wokar)](https://github.com/wokar "12 total commits to the home-assistant organization, 8 commits to home-assistant, 4 commits to home-assistant.github.io")
-- [Wolf-Bastian Pöttner (@BastianPoe)](https://github.com/BastianPoe "6 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 3 commits to home-assistant")
+- [Wolf-Bastian Pöttner (@BastianPoe)](https://github.com/BastianPoe "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Wolfgang Malgadey (@wmalgadey)](https://github.com/wmalgadey "4 total commits to the home-assistant organization, 4 commits to home-assistant")
- [XECDesign (@XECDesign)](https://github.com/XECDesign "97 total commits to the home-assistant organization, 97 commits to pi-gen")
- [Xorso (@Xorso)](https://github.com/Xorso "22 total commits to the home-assistant organization, 21 commits to home-assistant, 1 commit to hassio-addons")
-- [Yannick POLLART (@ypollart)](https://github.com/ypollart "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io")
+- [Yannick POLLART (@ypollart)](https://github.com/ypollart "8 total commits to the home-assistant organization, 4 commits to home-assistant, 4 commits to home-assistant.github.io")
- [Yasin Soliman (@yasinS)](https://github.com/yasinS "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [Yum (@goofz)](https://github.com/goofz "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Zac Hatfield Dodds (@Zac-HD)](https://github.com/Zac-HD "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Zen Tormey (@xehn)](https://github.com/xehn "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [Zhao Lu (@zlu)](https://github.com/zlu "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
-- [ziotibia81 (@ziotibia81)](https://github.com/ziotibia81 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
+- [ziotibia81 (@ziotibia81)](https://github.com/ziotibia81 "10 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 4 commits to home-assistant")
+- [Åskar Andersson (@olskar)](https://github.com/olskar "5 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 1 commit to hassbian-scripts")
This page is irregularly updated using the [`credits_generator` tool](https://github.com/home-assistant/home-assistant.github.io/tree/next/credits_generator). If you think that you are missing, please let us know.
-This page was last updated Tuesday, October 31st 2017, 7:14:47 pm UTC.
+This page was last updated Friday, November 24th 2017, 11:17:36 pm UTC.
diff --git a/source/developers/documentation/create_page.markdown b/source/developers/documentation/create_page.markdown
index db3ca834c6a..f2bf29dcef1 100644
--- a/source/developers/documentation/create_page.markdown
+++ b/source/developers/documentation/create_page.markdown
@@ -86,7 +86,7 @@ required: inclusive #=> Inclusive
required: exclusive #=> Exclusive
required: any string here #=> Any string here
```
-- **`type:`**: The type of the variable. Allowed entries: `string`, `int` or `map`. For multiple possibilities use `[string, int]`. If you use `map` then you need to define `keys:` (see the [`template` sensor](/components/sensor.template/) for an example).
+- **`type:`**: The type of the variable. Allowed entries: `string`, `int`, `time`, `template` or `map`. For multiple possibilities use `[string, int]`. If you use `map` then you need to define `keys:` (see the [`template` sensor](/components/sensor.template/) for an example).
- **`default:`**: The default value for the variable.
### {% linkable_title Embedding Code %}
diff --git a/source/developers/documentation/index.markdown b/source/developers/documentation/index.markdown
index f2306b2b5aa..33dd22d859f 100644
--- a/source/developers/documentation/index.markdown
+++ b/source/developers/documentation/index.markdown
@@ -20,7 +20,7 @@ For larger changes, we suggest that you clone the website repository. This way,
To test your changes locally, you need to install **Ruby** and its dependencies (gems):
-- [Install Ruby](https://www.ruby-lang.org/en/documentation/installation/) if you don't have it already.
+- [Install Ruby](https://www.ruby-lang.org/en/documentation/installation/) if you don't have it already. Ruby version 2.3.0 or higher is required.
- Install `bundler`, a dependency manager for Ruby: `$ gem install bundler`
- In your home-assistant.github.io root directory, run `$ bundle` to install the gems you need.
diff --git a/source/developers/frontend.markdown b/source/developers/frontend.markdown
index 98e88c7f26d..0fb71208d9a 100755
--- a/source/developers/frontend.markdown
+++ b/source/developers/frontend.markdown
@@ -27,7 +27,7 @@ First step is to configure Home Assistant to use the development mode for the fr
```yaml
frontend:
- development_repo: ../home-assistant-polymer
+ development_repo:
```
Next step is to git clone the [home-assistant-polymer repository][hass-polymer]. You can place the repository anywhere on your system but to keep these instructions simple we're cloning the home-assistant-polymer repository as a sibling to the Home Assistant repo.
diff --git a/source/developers/frontend_creating_custom_panels.markdown b/source/developers/frontend_creating_custom_panels.markdown
index 87bfc3442a5..4066e6062a6 100644
--- a/source/developers/frontend_creating_custom_panels.markdown
+++ b/source/developers/frontend_creating_custom_panels.markdown
@@ -9,13 +9,28 @@ sharing: true
footer: true
---
-Any component has the possibility to add a panel to the frontend. Panels will be rendered full screen and have real-time access to the Home Assistant object via JavaScript. Examples of this in the app are map, logbook and history.
+Panels are pages within Home Assistant that show information within Home Assistant and can allow controlling it. Panels are linked from the sidebar and rendered full screen. The have have real-time access to the Home Assistant object via JavaScript. Examples of panels in the app are map, logbook and history.
+
+Besides components registering panels, users can also register panels using the `panel_custom` component. This allows users to quickly build their own custom interfaces for Home Assistant.
+
+### {% linkable_title Before you get started %}
+
+The Home Assistant user interface is currently served to browsers in modern JavaScript and older JavaScript (ES5). The older version has a wider browser support but that comes at a cost of size, performance and more difficult to get started building panels for authors.
+
+We therefore advice to set up the frontend to serve the modern version of the frontend so that you won't need any build tools while developing. If you realize that your audience requires both, you can add a transpilation step in the future. To set up your frontend to always serve the latest version, add this to your config:
+
+```
+frontend:
+ javascript_version: latest
+```
+
+### {% linkable_title Building your first panel %}
Create a file called `hello.html` in your /panels/.
The `hello.html` contains the needed building blocks to create the elements inside the view.
-```javascript
+```html
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/source/images/supported_brands/hyperion.png b/source/images/supported_brands/hyperion.png
index 36c3bf3c624..a9de0bf8a1b 100644
Binary files a/source/images/supported_brands/hyperion.png and b/source/images/supported_brands/hyperion.png differ
diff --git a/source/images/supported_brands/icann.png b/source/images/supported_brands/icann.png
index 47c422601d4..d326df3f3e6 100644
Binary files a/source/images/supported_brands/icann.png and b/source/images/supported_brands/icann.png differ
diff --git a/source/images/supported_brands/icloud.png b/source/images/supported_brands/icloud.png
index 2058986018b..dca4229c455 100644
Binary files a/source/images/supported_brands/icloud.png and b/source/images/supported_brands/icloud.png differ
diff --git a/source/images/supported_brands/ifttt.png b/source/images/supported_brands/ifttt.png
index f986bf76db4..072b5aac88f 100644
Binary files a/source/images/supported_brands/ifttt.png and b/source/images/supported_brands/ifttt.png differ
diff --git a/source/images/supported_brands/ikea.svg b/source/images/supported_brands/ikea.svg
index e9a23b81693..49dc10b8398 100644
--- a/source/images/supported_brands/ikea.svg
+++ b/source/images/supported_brands/ikea.svg
@@ -1,260 +1 @@
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/source/images/supported_brands/influxdb.png b/source/images/supported_brands/influxdb.png
index 209adc41015..a4e24973c95 100644
Binary files a/source/images/supported_brands/influxdb.png and b/source/images/supported_brands/influxdb.png differ
diff --git a/source/images/supported_brands/instapush.png b/source/images/supported_brands/instapush.png
index abb26c4ac35..8ac906fae04 100644
Binary files a/source/images/supported_brands/instapush.png and b/source/images/supported_brands/instapush.png differ
diff --git a/source/images/supported_brands/insteon.png b/source/images/supported_brands/insteon.png
index 350885f316d..2d9779742b5 100644
Binary files a/source/images/supported_brands/insteon.png and b/source/images/supported_brands/insteon.png differ
diff --git a/source/images/supported_brands/interlogix.png b/source/images/supported_brands/interlogix.png
index e8abf587bdb..4f3ba1395ef 100644
Binary files a/source/images/supported_brands/interlogix.png and b/source/images/supported_brands/interlogix.png differ
diff --git a/source/images/supported_brands/irishrail.png b/source/images/supported_brands/irishrail.png
index 204e1c2f899..8eaaf9ac8ad 100644
Binary files a/source/images/supported_brands/irishrail.png and b/source/images/supported_brands/irishrail.png differ
diff --git a/source/images/supported_brands/irobot_roomba.png b/source/images/supported_brands/irobot_roomba.png
index aeabd8c459d..9bcfe2f2806 100644
Binary files a/source/images/supported_brands/irobot_roomba.png and b/source/images/supported_brands/irobot_roomba.png differ
diff --git a/source/images/supported_brands/iss.png b/source/images/supported_brands/iss.png
index 69a167003db..ac0e34bf20e 100644
Binary files a/source/images/supported_brands/iss.png and b/source/images/supported_brands/iss.png differ
diff --git a/source/images/supported_brands/itunes.png b/source/images/supported_brands/itunes.png
index f61681b0d1e..e4358c19b19 100644
Binary files a/source/images/supported_brands/itunes.png and b/source/images/supported_brands/itunes.png differ
diff --git a/source/images/supported_brands/joaoapps_join.png b/source/images/supported_brands/joaoapps_join.png
index 28fa7c48b29..a4e219d3b55 100644
Binary files a/source/images/supported_brands/joaoapps_join.png and b/source/images/supported_brands/joaoapps_join.png differ
diff --git a/source/images/supported_brands/juicenet.png b/source/images/supported_brands/juicenet.png
index 688ae6d1b49..42fe3862f61 100644
Binary files a/source/images/supported_brands/juicenet.png and b/source/images/supported_brands/juicenet.png differ
diff --git a/source/images/supported_brands/jupyter.png b/source/images/supported_brands/jupyter.png
index cf333016466..001edf6afb1 100644
Binary files a/source/images/supported_brands/jupyter.png and b/source/images/supported_brands/jupyter.png differ
diff --git a/source/images/supported_brands/keene.png b/source/images/supported_brands/keene.png
index f75dde78485..1682aa52a2c 100644
Binary files a/source/images/supported_brands/keene.png and b/source/images/supported_brands/keene.png differ
diff --git a/source/images/supported_brands/keenetic.png b/source/images/supported_brands/keenetic.png
index 4a5b720018b..3149ffe24f5 100644
Binary files a/source/images/supported_brands/keenetic.png and b/source/images/supported_brands/keenetic.png differ
diff --git a/source/images/supported_brands/keyboard.png b/source/images/supported_brands/keyboard.png
index de8ad1a1cb2..1ed50f32c27 100644
Binary files a/source/images/supported_brands/keyboard.png and b/source/images/supported_brands/keyboard.png differ
diff --git a/source/images/supported_brands/knx.png b/source/images/supported_brands/knx.png
index 960513c6208..1a558f01c20 100644
Binary files a/source/images/supported_brands/knx.png and b/source/images/supported_brands/knx.png differ
diff --git a/source/images/supported_brands/kodi.png b/source/images/supported_brands/kodi.png
index dfc527269a5..9bec5c9d04d 100644
Binary files a/source/images/supported_brands/kodi.png and b/source/images/supported_brands/kodi.png differ
diff --git a/source/images/supported_brands/kwb.png b/source/images/supported_brands/kwb.png
index dabb8fab11a..ce106123749 100644
Binary files a/source/images/supported_brands/kwb.png and b/source/images/supported_brands/kwb.png differ
diff --git a/source/images/supported_brands/lametric.png b/source/images/supported_brands/lametric.png
index 5e8e319a6bf..9e1c2e58fc0 100644
Binary files a/source/images/supported_brands/lametric.png and b/source/images/supported_brands/lametric.png differ
diff --git a/source/images/supported_brands/lannouncer.png b/source/images/supported_brands/lannouncer.png
index 167d819e781..06a9d4e154e 100644
Binary files a/source/images/supported_brands/lannouncer.png and b/source/images/supported_brands/lannouncer.png differ
diff --git a/source/images/supported_brands/lastfm.png b/source/images/supported_brands/lastfm.png
index 4fde99f3713..1b374bf0aa0 100644
Binary files a/source/images/supported_brands/lastfm.png and b/source/images/supported_brands/lastfm.png differ
diff --git a/source/images/supported_brands/letsencrypt.png b/source/images/supported_brands/letsencrypt.png
index f3443680a04..935f16f6c35 100644
Binary files a/source/images/supported_brands/letsencrypt.png and b/source/images/supported_brands/letsencrypt.png differ
diff --git a/source/images/supported_brands/leviton.png b/source/images/supported_brands/leviton.png
index e3876ee9070..e709e097712 100644
Binary files a/source/images/supported_brands/leviton.png and b/source/images/supported_brands/leviton.png differ
diff --git a/source/images/supported_brands/lg.png b/source/images/supported_brands/lg.png
index 214f57a230e..a46b7623580 100644
Binary files a/source/images/supported_brands/lg.png and b/source/images/supported_brands/lg.png differ
diff --git a/source/images/supported_brands/lifx.png b/source/images/supported_brands/lifx.png
index d6175dbf987..ac9cdf6b2d8 100644
Binary files a/source/images/supported_brands/lifx.png and b/source/images/supported_brands/lifx.png differ
diff --git a/source/images/supported_brands/limitlessled_logo.png b/source/images/supported_brands/limitlessled_logo.png
index f08a8c34db1..d16b1cf09ad 100644
Binary files a/source/images/supported_brands/limitlessled_logo.png and b/source/images/supported_brands/limitlessled_logo.png differ
diff --git a/source/images/supported_brands/linksys.png b/source/images/supported_brands/linksys.png
index fe7aa78c654..1e92c98f9e2 100644
Binary files a/source/images/supported_brands/linksys.png and b/source/images/supported_brands/linksys.png differ
diff --git a/source/images/supported_brands/linn.png b/source/images/supported_brands/linn.png
index bb16242f3a4..5d85d7abd7f 100644
Binary files a/source/images/supported_brands/linn.png and b/source/images/supported_brands/linn.png differ
diff --git a/source/images/supported_brands/linode.png b/source/images/supported_brands/linode.png
index c776faa744b..103ff9e404d 100644
Binary files a/source/images/supported_brands/linode.png and b/source/images/supported_brands/linode.png differ
diff --git a/source/images/supported_brands/linux_battery.png b/source/images/supported_brands/linux_battery.png
index da79e7e1d75..c568cbf8789 100644
Binary files a/source/images/supported_brands/linux_battery.png and b/source/images/supported_brands/linux_battery.png differ
diff --git a/source/images/supported_brands/lirc.gif b/source/images/supported_brands/lirc.gif
index ada4c1578e2..420cb874efc 100644
Binary files a/source/images/supported_brands/lirc.gif and b/source/images/supported_brands/lirc.gif differ
diff --git a/source/images/supported_brands/llamalab_automate.png b/source/images/supported_brands/llamalab_automate.png
index 5a79d5bccb4..7adef8ccd0c 100644
Binary files a/source/images/supported_brands/llamalab_automate.png and b/source/images/supported_brands/llamalab_automate.png differ
diff --git a/source/images/supported_brands/locative.png b/source/images/supported_brands/locative.png
index 88a65a176ac..3cb842105d4 100644
Binary files a/source/images/supported_brands/locative.png and b/source/images/supported_brands/locative.png differ
diff --git a/source/images/supported_brands/lockitron.png b/source/images/supported_brands/lockitron.png
index 93237dbf131..906fa7422a9 100644
Binary files a/source/images/supported_brands/lockitron.png and b/source/images/supported_brands/lockitron.png differ
diff --git a/source/images/supported_brands/logbook.png b/source/images/supported_brands/logbook.png
index d177bfef5ca..f8fa57db004 100644
Binary files a/source/images/supported_brands/logbook.png and b/source/images/supported_brands/logbook.png differ
diff --git a/source/images/supported_brands/logentries.png b/source/images/supported_brands/logentries.png
index 65e5adbde80..41f9e6a2f7a 100644
Binary files a/source/images/supported_brands/logentries.png and b/source/images/supported_brands/logentries.png differ
diff --git a/source/images/supported_brands/logitech.png b/source/images/supported_brands/logitech.png
index 788b701c655..a9ee9366164 100644
Binary files a/source/images/supported_brands/logitech.png and b/source/images/supported_brands/logitech.png differ
diff --git a/source/images/supported_brands/london_underground.png b/source/images/supported_brands/london_underground.png
index 8c4528ccbfd..3aeba599d38 100644
Binary files a/source/images/supported_brands/london_underground.png and b/source/images/supported_brands/london_underground.png differ
diff --git a/source/images/supported_brands/loop.png b/source/images/supported_brands/loop.png
index a96a4099f89..007cf168bb6 100644
Binary files a/source/images/supported_brands/loop.png and b/source/images/supported_brands/loop.png differ
diff --git a/source/images/supported_brands/luftdaten.png b/source/images/supported_brands/luftdaten.png
index 16218ae6a76..3909c9aa884 100644
Binary files a/source/images/supported_brands/luftdaten.png and b/source/images/supported_brands/luftdaten.png differ
diff --git a/source/images/supported_brands/lutron.png b/source/images/supported_brands/lutron.png
index c62feb80d47..b0b70aff97c 100644
Binary files a/source/images/supported_brands/lutron.png and b/source/images/supported_brands/lutron.png differ
diff --git a/source/images/supported_brands/lyft.png b/source/images/supported_brands/lyft.png
index b4fcb7367db..10d7824928e 100644
Binary files a/source/images/supported_brands/lyft.png and b/source/images/supported_brands/lyft.png differ
diff --git a/source/images/supported_brands/magic_light.png b/source/images/supported_brands/magic_light.png
index d298f57691b..8a3f26dc23a 100644
Binary files a/source/images/supported_brands/magic_light.png and b/source/images/supported_brands/magic_light.png differ
diff --git a/source/images/supported_brands/mailgun.png b/source/images/supported_brands/mailgun.png
index 46126e7d30f..4cb621f5491 100644
Binary files a/source/images/supported_brands/mailgun.png and b/source/images/supported_brands/mailgun.png differ
diff --git a/source/images/supported_brands/manything.png b/source/images/supported_brands/manything.png
index c5fc8decb81..c43a9ea125d 100644
Binary files a/source/images/supported_brands/manything.png and b/source/images/supported_brands/manything.png differ
diff --git a/source/images/supported_brands/marytts.png b/source/images/supported_brands/marytts.png
index 39f450d41d8..2f2d4dd16d0 100644
Binary files a/source/images/supported_brands/marytts.png and b/source/images/supported_brands/marytts.png differ
diff --git a/source/images/supported_brands/matrix.png b/source/images/supported_brands/matrix.png
index 807049fd075..1cfeb6e2721 100644
Binary files a/source/images/supported_brands/matrix.png and b/source/images/supported_brands/matrix.png differ
diff --git a/source/images/supported_brands/maxcube.png b/source/images/supported_brands/maxcube.png
index b1a0afbb8c4..05990fbdbb8 100644
Binary files a/source/images/supported_brands/maxcube.png and b/source/images/supported_brands/maxcube.png differ
diff --git a/source/images/supported_brands/message_bird.png b/source/images/supported_brands/message_bird.png
index 1beab0c385c..88b5a2152e8 100644
Binary files a/source/images/supported_brands/message_bird.png and b/source/images/supported_brands/message_bird.png differ
diff --git a/source/images/supported_brands/metoffice.jpg b/source/images/supported_brands/metoffice.jpg
index eadb9954b9a..5928b11bf3f 100644
Binary files a/source/images/supported_brands/metoffice.jpg and b/source/images/supported_brands/metoffice.jpg differ
diff --git a/source/images/supported_brands/mhz19_logo.png b/source/images/supported_brands/mhz19_logo.png
index 150c5a028c6..d614a7a242d 100644
Binary files a/source/images/supported_brands/mhz19_logo.png and b/source/images/supported_brands/mhz19_logo.png differ
diff --git a/source/images/supported_brands/microsoft.png b/source/images/supported_brands/microsoft.png
index 494f15cecb0..d145ee15fc7 100644
Binary files a/source/images/supported_brands/microsoft.png and b/source/images/supported_brands/microsoft.png differ
diff --git a/source/images/supported_brands/miflora.png b/source/images/supported_brands/miflora.png
index 01c6f24a4d2..263aa634ccb 100644
Binary files a/source/images/supported_brands/miflora.png and b/source/images/supported_brands/miflora.png differ
diff --git a/source/images/supported_brands/mikrotik.png b/source/images/supported_brands/mikrotik.png
index 0c301e4f4b7..57dd906122b 100644
Binary files a/source/images/supported_brands/mikrotik.png and b/source/images/supported_brands/mikrotik.png differ
diff --git a/source/images/supported_brands/modbus.png b/source/images/supported_brands/modbus.png
index a6881178ff3..54f6eef57d5 100644
Binary files a/source/images/supported_brands/modbus.png and b/source/images/supported_brands/modbus.png differ
diff --git a/source/images/supported_brands/monoprice.svg b/source/images/supported_brands/monoprice.svg
index c65cabf1877..48c5c910699 100644
--- a/source/images/supported_brands/monoprice.svg
+++ b/source/images/supported_brands/monoprice.svg
@@ -1,105 +1 @@
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/source/images/supported_brands/mopar.png b/source/images/supported_brands/mopar.png
index 3e3b411d8ef..8a526d882e5 100644
Binary files a/source/images/supported_brands/mopar.png and b/source/images/supported_brands/mopar.png differ
diff --git a/source/images/supported_brands/mpd.png b/source/images/supported_brands/mpd.png
index d8b6d96145e..6a828b64341 100644
Binary files a/source/images/supported_brands/mpd.png and b/source/images/supported_brands/mpd.png differ
diff --git a/source/images/supported_brands/mqtt.png b/source/images/supported_brands/mqtt.png
index 1e649faf345..78d182e3202 100644
Binary files a/source/images/supported_brands/mqtt.png and b/source/images/supported_brands/mqtt.png differ
diff --git a/source/images/supported_brands/mvg.png b/source/images/supported_brands/mvg.png
index 8d9edec78d4..529609383dc 100644
Binary files a/source/images/supported_brands/mvg.png and b/source/images/supported_brands/mvg.png differ
diff --git a/source/images/supported_brands/mycroft.png b/source/images/supported_brands/mycroft.png
index b1febebe866..f20b9033ace 100644
Binary files a/source/images/supported_brands/mycroft.png and b/source/images/supported_brands/mycroft.png differ
diff --git a/source/images/supported_brands/myq.png b/source/images/supported_brands/myq.png
index 70c7d37b07c..eec41a7f01c 100644
Binary files a/source/images/supported_brands/myq.png and b/source/images/supported_brands/myq.png differ
diff --git a/source/images/supported_brands/mysensors.png b/source/images/supported_brands/mysensors.png
index d352c920b8b..ae7fe5a0d24 100644
Binary files a/source/images/supported_brands/mysensors.png and b/source/images/supported_brands/mysensors.png differ
diff --git a/source/images/supported_brands/mystrom.png b/source/images/supported_brands/mystrom.png
index b2f1b5285f6..b63cf0ac508 100644
Binary files a/source/images/supported_brands/mystrom.png and b/source/images/supported_brands/mystrom.png differ
diff --git a/source/images/supported_brands/nad.png b/source/images/supported_brands/nad.png
index d25ee1606d0..bcd2e711545 100644
Binary files a/source/images/supported_brands/nad.png and b/source/images/supported_brands/nad.png differ
diff --git a/source/images/supported_brands/namecheap.png b/source/images/supported_brands/namecheap.png
index d700d390ad8..2e72ae7a942 100644
Binary files a/source/images/supported_brands/namecheap.png and b/source/images/supported_brands/namecheap.png differ
diff --git a/source/images/supported_brands/nasa.png b/source/images/supported_brands/nasa.png
index 640e5cdfb4d..07df14823d4 100644
Binary files a/source/images/supported_brands/nasa.png and b/source/images/supported_brands/nasa.png differ
diff --git a/source/images/supported_brands/neato.png b/source/images/supported_brands/neato.png
index 0a69a6fb002..0255cc8e60e 100644
Binary files a/source/images/supported_brands/neato.png and b/source/images/supported_brands/neato.png differ
diff --git a/source/images/supported_brands/nederlandse_spoorwegen.png b/source/images/supported_brands/nederlandse_spoorwegen.png
index f18ddb15ed7..4326a33e0d4 100644
Binary files a/source/images/supported_brands/nederlandse_spoorwegen.png and b/source/images/supported_brands/nederlandse_spoorwegen.png differ
diff --git a/source/images/supported_brands/nello.png b/source/images/supported_brands/nello.png
index a815d8730cb..39c62f7da52 100644
Binary files a/source/images/supported_brands/nello.png and b/source/images/supported_brands/nello.png differ
diff --git a/source/images/supported_brands/nest.png b/source/images/supported_brands/nest.png
index 5e94dbf4052..dea65a74c1a 100644
Binary files a/source/images/supported_brands/nest.png and b/source/images/supported_brands/nest.png differ
diff --git a/source/images/supported_brands/netatmo.png b/source/images/supported_brands/netatmo.png
index 847beaec527..cd9098ae8ec 100644
Binary files a/source/images/supported_brands/netatmo.png and b/source/images/supported_brands/netatmo.png differ
diff --git a/source/images/supported_brands/netbeheernederland.jpg b/source/images/supported_brands/netbeheernederland.jpg
index d897f67c19b..cab529d4b5a 100644
Binary files a/source/images/supported_brands/netbeheernederland.jpg and b/source/images/supported_brands/netbeheernederland.jpg differ
diff --git a/source/images/supported_brands/netdata.png b/source/images/supported_brands/netdata.png
index 43b65703db4..a10767008df 100644
Binary files a/source/images/supported_brands/netdata.png and b/source/images/supported_brands/netdata.png differ
diff --git a/source/images/supported_brands/netgear.png b/source/images/supported_brands/netgear.png
index 130ee39119f..519d12ab843 100644
Binary files a/source/images/supported_brands/netgear.png and b/source/images/supported_brands/netgear.png differ
diff --git a/source/images/supported_brands/netio.png b/source/images/supported_brands/netio.png
index 1cd239537b2..0ccf9bccfa2 100644
Binary files a/source/images/supported_brands/netio.png and b/source/images/supported_brands/netio.png differ
diff --git a/source/images/supported_brands/network-snmp.png b/source/images/supported_brands/network-snmp.png
index d48e8dec4f4..dbb709eeea2 100644
Binary files a/source/images/supported_brands/network-snmp.png and b/source/images/supported_brands/network-snmp.png differ
diff --git a/source/images/supported_brands/networx.png b/source/images/supported_brands/networx.png
index 560e4c96062..48728ed9871 100644
Binary files a/source/images/supported_brands/networx.png and b/source/images/supported_brands/networx.png differ
diff --git a/source/images/supported_brands/neurio.png b/source/images/supported_brands/neurio.png
index 5531c7eee42..f8243caf22f 100644
Binary files a/source/images/supported_brands/neurio.png and b/source/images/supported_brands/neurio.png differ
diff --git a/source/images/supported_brands/nfandroidtv.png b/source/images/supported_brands/nfandroidtv.png
index 043aa2d5e56..66a0ca99b5d 100644
Binary files a/source/images/supported_brands/nfandroidtv.png and b/source/images/supported_brands/nfandroidtv.png differ
diff --git a/source/images/supported_brands/nma.png b/source/images/supported_brands/nma.png
index 103f14d6eab..9e587d005e0 100644
Binary files a/source/images/supported_brands/nma.png and b/source/images/supported_brands/nma.png differ
diff --git a/source/images/supported_brands/nmap.png b/source/images/supported_brands/nmap.png
index 9b85e0d1a29..ba5ab90cfea 100644
Binary files a/source/images/supported_brands/nmap.png and b/source/images/supported_brands/nmap.png differ
diff --git a/source/images/supported_brands/noaa.png b/source/images/supported_brands/noaa.png
index a0248bef254..3f9cb0f37ab 100644
Binary files a/source/images/supported_brands/noaa.png and b/source/images/supported_brands/noaa.png differ
diff --git a/source/images/supported_brands/noip.png b/source/images/supported_brands/noip.png
index 862b4fcaa59..ee948b3d410 100644
Binary files a/source/images/supported_brands/noip.png and b/source/images/supported_brands/noip.png differ
diff --git a/source/images/supported_brands/nuimo.png b/source/images/supported_brands/nuimo.png
index 1bc4549b424..340a44dc919 100644
Binary files a/source/images/supported_brands/nuimo.png and b/source/images/supported_brands/nuimo.png differ
diff --git a/source/images/supported_brands/nuki.png b/source/images/supported_brands/nuki.png
index 3008fb1dc56..51ccb042414 100644
Binary files a/source/images/supported_brands/nuki.png and b/source/images/supported_brands/nuki.png differ
diff --git a/source/images/supported_brands/nut.png b/source/images/supported_brands/nut.png
index 4c36debd944..518278f8eb0 100644
Binary files a/source/images/supported_brands/nut.png and b/source/images/supported_brands/nut.png differ
diff --git a/source/images/supported_brands/nzbget.png b/source/images/supported_brands/nzbget.png
index 8f1166d559f..7f959ce7b4b 100644
Binary files a/source/images/supported_brands/nzbget.png and b/source/images/supported_brands/nzbget.png differ
diff --git a/source/images/supported_brands/octoprint.png b/source/images/supported_brands/octoprint.png
index bf5286f423d..dcfd344bd6b 100644
Binary files a/source/images/supported_brands/octoprint.png and b/source/images/supported_brands/octoprint.png differ
diff --git a/source/images/supported_brands/oem.png b/source/images/supported_brands/oem.png
index 844655aea26..4c69067a2e2 100644
Binary files a/source/images/supported_brands/oem.png and b/source/images/supported_brands/oem.png differ
diff --git a/source/images/supported_brands/ohmconnect.png b/source/images/supported_brands/ohmconnect.png
index e3aaf1b38bd..2bc38a70ae5 100644
Binary files a/source/images/supported_brands/ohmconnect.png and b/source/images/supported_brands/ohmconnect.png differ
diff --git a/source/images/supported_brands/onewire.png b/source/images/supported_brands/onewire.png
index 86358b01bf0..46530d3e958 100644
Binary files a/source/images/supported_brands/onewire.png and b/source/images/supported_brands/onewire.png differ
diff --git a/source/images/supported_brands/onkyo.png b/source/images/supported_brands/onkyo.png
index eaca37abcf5..4fdb590e1a9 100644
Binary files a/source/images/supported_brands/onkyo.png and b/source/images/supported_brands/onkyo.png differ
diff --git a/source/images/supported_brands/onvif.png b/source/images/supported_brands/onvif.png
index 4030b2fe273..b1b27611709 100644
Binary files a/source/images/supported_brands/onvif.png and b/source/images/supported_brands/onvif.png differ
diff --git a/source/images/supported_brands/openalpr.png b/source/images/supported_brands/openalpr.png
index b4370eb9315..a8f846fe3f8 100644
Binary files a/source/images/supported_brands/openalpr.png and b/source/images/supported_brands/openalpr.png differ
diff --git a/source/images/supported_brands/opencv.png b/source/images/supported_brands/opencv.png
index 521a0dcee0c..29950111018 100644
Binary files a/source/images/supported_brands/opencv.png and b/source/images/supported_brands/opencv.png differ
diff --git a/source/images/supported_brands/openevse.png b/source/images/supported_brands/openevse.png
index 0c3eb00f5d3..619ed579447 100644
Binary files a/source/images/supported_brands/openevse.png and b/source/images/supported_brands/openevse.png differ
diff --git a/source/images/supported_brands/openexchangerates.png b/source/images/supported_brands/openexchangerates.png
index dbcf719dc45..e126a06185e 100644
Binary files a/source/images/supported_brands/openexchangerates.png and b/source/images/supported_brands/openexchangerates.png differ
diff --git a/source/images/supported_brands/opengarage.png b/source/images/supported_brands/opengarage.png
index d07bd6b85ce..9b83e8c5555 100644
Binary files a/source/images/supported_brands/opengarage.png and b/source/images/supported_brands/opengarage.png differ
diff --git a/source/images/supported_brands/openhardwaremonitor.png b/source/images/supported_brands/openhardwaremonitor.png
index 1d34eda76f8..1764adb4185 100644
Binary files a/source/images/supported_brands/openhardwaremonitor.png and b/source/images/supported_brands/openhardwaremonitor.png differ
diff --git a/source/images/supported_brands/opensky.png b/source/images/supported_brands/opensky.png
index d586a4f43f9..4fc072a7c2a 100644
Binary files a/source/images/supported_brands/opensky.png and b/source/images/supported_brands/opensky.png differ
diff --git a/source/images/supported_brands/openweathermap.png b/source/images/supported_brands/openweathermap.png
index 376e31c30a3..43ce0562d76 100644
Binary files a/source/images/supported_brands/openweathermap.png and b/source/images/supported_brands/openweathermap.png differ
diff --git a/source/images/supported_brands/openwrt.png b/source/images/supported_brands/openwrt.png
index 5d9a5e53702..957d3d3a539 100644
Binary files a/source/images/supported_brands/openwrt.png and b/source/images/supported_brands/openwrt.png differ
diff --git a/source/images/supported_brands/orange.png b/source/images/supported_brands/orange.png
index 69ac6fab341..e2031268096 100644
Binary files a/source/images/supported_brands/orange.png and b/source/images/supported_brands/orange.png differ
diff --git a/source/images/supported_brands/orvibo.png b/source/images/supported_brands/orvibo.png
index 1badaa2f13f..7e3c7fbd208 100644
Binary files a/source/images/supported_brands/orvibo.png and b/source/images/supported_brands/orvibo.png differ
diff --git a/source/images/supported_brands/osramlightify.png b/source/images/supported_brands/osramlightify.png
index e4a66bed637..aa2c8bfa9b8 100644
Binary files a/source/images/supported_brands/osramlightify.png and b/source/images/supported_brands/osramlightify.png differ
diff --git a/source/images/supported_brands/owntracks.png b/source/images/supported_brands/owntracks.png
index 8dcc8edff96..6cbad6aaf41 100644
Binary files a/source/images/supported_brands/owntracks.png and b/source/images/supported_brands/owntracks.png differ
diff --git a/source/images/supported_brands/panasonic.png b/source/images/supported_brands/panasonic.png
index 67c008e0dda..42bbeb90474 100644
Binary files a/source/images/supported_brands/panasonic.png and b/source/images/supported_brands/panasonic.png differ
diff --git a/source/images/supported_brands/pandora.png b/source/images/supported_brands/pandora.png
index c9c1e2f9f50..e1fa6bc1bde 100644
Binary files a/source/images/supported_brands/pandora.png and b/source/images/supported_brands/pandora.png differ
diff --git a/source/images/supported_brands/pencil.png b/source/images/supported_brands/pencil.png
index 0d17c08ee46..71519e4a6b7 100644
Binary files a/source/images/supported_brands/pencil.png and b/source/images/supported_brands/pencil.png differ
diff --git a/source/images/supported_brands/philips.png b/source/images/supported_brands/philips.png
index 5bb29fee30c..6148e62bac9 100644
Binary files a/source/images/supported_brands/philips.png and b/source/images/supported_brands/philips.png differ
diff --git a/source/images/supported_brands/philips_hue.png b/source/images/supported_brands/philips_hue.png
index 5f5f801273a..53d9be8d88a 100644
Binary files a/source/images/supported_brands/philips_hue.png and b/source/images/supported_brands/philips_hue.png differ
diff --git a/source/images/supported_brands/pi_hole.png b/source/images/supported_brands/pi_hole.png
index 7d2c70b3c1b..60b0a78dc01 100644
Binary files a/source/images/supported_brands/pi_hole.png and b/source/images/supported_brands/pi_hole.png differ
diff --git a/source/images/supported_brands/pilight.png b/source/images/supported_brands/pilight.png
index a95bf310011..2a5decae30e 100644
Binary files a/source/images/supported_brands/pilight.png and b/source/images/supported_brands/pilight.png differ
diff --git a/source/images/supported_brands/pioneer.png b/source/images/supported_brands/pioneer.png
index 50574207a82..243806a7860 100644
Binary files a/source/images/supported_brands/pioneer.png and b/source/images/supported_brands/pioneer.png differ
diff --git a/source/images/supported_brands/plex.png b/source/images/supported_brands/plex.png
index fd71d9246d0..b7fc5c8f76c 100644
Binary files a/source/images/supported_brands/plex.png and b/source/images/supported_brands/plex.png differ
diff --git a/source/images/supported_brands/pocketcasts.png b/source/images/supported_brands/pocketcasts.png
index abc0c786603..ce78f191999 100644
Binary files a/source/images/supported_brands/pocketcasts.png and b/source/images/supported_brands/pocketcasts.png differ
diff --git a/source/images/supported_brands/polly.png b/source/images/supported_brands/polly.png
index 850ccb14068..68b29134cd0 100644
Binary files a/source/images/supported_brands/polly.png and b/source/images/supported_brands/polly.png differ
diff --git a/source/images/supported_brands/proliphix.png b/source/images/supported_brands/proliphix.png
index d370d0b3222..332464374b6 100644
Binary files a/source/images/supported_brands/proliphix.png and b/source/images/supported_brands/proliphix.png differ
diff --git a/source/images/supported_brands/prowl.png b/source/images/supported_brands/prowl.png
index c913e8dfe85..b3c7c5d53da 100644
Binary files a/source/images/supported_brands/prowl.png and b/source/images/supported_brands/prowl.png differ
diff --git a/source/images/supported_brands/pulseaudio.png b/source/images/supported_brands/pulseaudio.png
index f90a8ad76d2..75d99335abd 100644
Binary files a/source/images/supported_brands/pulseaudio.png and b/source/images/supported_brands/pulseaudio.png differ
diff --git a/source/images/supported_brands/pushbullet.png b/source/images/supported_brands/pushbullet.png
index 0ed8566e4ce..553642398b7 100644
Binary files a/source/images/supported_brands/pushbullet.png and b/source/images/supported_brands/pushbullet.png differ
diff --git a/source/images/supported_brands/pushetta.png b/source/images/supported_brands/pushetta.png
index 29e0fb5d31c..d2c5715676d 100644
Binary files a/source/images/supported_brands/pushetta.png and b/source/images/supported_brands/pushetta.png differ
diff --git a/source/images/supported_brands/pushover.png b/source/images/supported_brands/pushover.png
index e8fc4125c0a..092cf702ff6 100644
Binary files a/source/images/supported_brands/pushover.png and b/source/images/supported_brands/pushover.png differ
diff --git a/source/images/supported_brands/pushsafer.png b/source/images/supported_brands/pushsafer.png
index 622a68eeda7..aedc8421321 100644
Binary files a/source/images/supported_brands/pushsafer.png and b/source/images/supported_brands/pushsafer.png differ
diff --git a/source/images/supported_brands/pvoutput.png b/source/images/supported_brands/pvoutput.png
index 281f369b632..f5a6e4aee28 100644
Binary files a/source/images/supported_brands/pvoutput.png and b/source/images/supported_brands/pvoutput.png differ
diff --git a/source/images/supported_brands/pyload.png b/source/images/supported_brands/pyload.png
index d7740588ae7..effe219bc3f 100644
Binary files a/source/images/supported_brands/pyload.png and b/source/images/supported_brands/pyload.png differ
diff --git a/source/images/supported_brands/python.svg b/source/images/supported_brands/python.svg
index 938831f7ed7..5b333e80039 100644
--- a/source/images/supported_brands/python.svg
+++ b/source/images/supported_brands/python.svg
@@ -1,288 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/source/images/supported_brands/qnap.png b/source/images/supported_brands/qnap.png
index 2ffae64462c..2b394234b47 100644
Binary files a/source/images/supported_brands/qnap.png and b/source/images/supported_brands/qnap.png differ
diff --git a/source/images/supported_brands/qwikswitch.png b/source/images/supported_brands/qwikswitch.png
index 5c310ad4fda..ada6158b54d 100644
Binary files a/source/images/supported_brands/qwikswitch.png and b/source/images/supported_brands/qwikswitch.png differ
diff --git a/source/images/supported_brands/rachio.png b/source/images/supported_brands/rachio.png
index 340105ff824..0b8a9d97113 100644
Binary files a/source/images/supported_brands/rachio.png and b/source/images/supported_brands/rachio.png differ
diff --git a/source/images/supported_brands/radarr.png b/source/images/supported_brands/radarr.png
index c053975a41f..c731e94afcc 100644
Binary files a/source/images/supported_brands/radarr.png and b/source/images/supported_brands/radarr.png differ
diff --git a/source/images/supported_brands/radiotherm.png b/source/images/supported_brands/radiotherm.png
index 67f2fe6df50..8d179646829 100644
Binary files a/source/images/supported_brands/radiotherm.png and b/source/images/supported_brands/radiotherm.png differ
diff --git a/source/images/supported_brands/rainbird.png b/source/images/supported_brands/rainbird.png
index fee1def08e8..c5e02246e3b 100644
Binary files a/source/images/supported_brands/rainbird.png and b/source/images/supported_brands/rainbird.png differ
diff --git a/source/images/supported_brands/raincloud.jpg b/source/images/supported_brands/raincloud.jpg
index 81957811fb7..71902e3d21d 100644
Binary files a/source/images/supported_brands/raincloud.jpg and b/source/images/supported_brands/raincloud.jpg differ
diff --git a/source/images/supported_brands/rainmachine.png b/source/images/supported_brands/rainmachine.png
index 15fd5faaa64..629eab8382b 100644
Binary files a/source/images/supported_brands/rainmachine.png and b/source/images/supported_brands/rainmachine.png differ
diff --git a/source/images/supported_brands/raspberry-pi.png b/source/images/supported_brands/raspberry-pi.png
index 36439abc0d7..f7440be36d8 100644
Binary files a/source/images/supported_brands/raspberry-pi.png and b/source/images/supported_brands/raspberry-pi.png differ
diff --git a/source/images/supported_brands/raspihats.png b/source/images/supported_brands/raspihats.png
index 18274351a6e..4439cbc7b83 100644
Binary files a/source/images/supported_brands/raspihats.png and b/source/images/supported_brands/raspihats.png differ
diff --git a/source/images/supported_brands/rest.png b/source/images/supported_brands/rest.png
index ac274451465..059d5bc7645 100644
Binary files a/source/images/supported_brands/rest.png and b/source/images/supported_brands/rest.png differ
diff --git a/source/images/supported_brands/restful.png b/source/images/supported_brands/restful.png
index d302eed4f11..dd5bf0cc803 100644
Binary files a/source/images/supported_brands/restful.png and b/source/images/supported_brands/restful.png differ
diff --git a/source/images/supported_brands/rflink.png b/source/images/supported_brands/rflink.png
index e044a89afdb..b597bba1c29 100644
Binary files a/source/images/supported_brands/rflink.png and b/source/images/supported_brands/rflink.png differ
diff --git a/source/images/supported_brands/rfxtrx.png b/source/images/supported_brands/rfxtrx.png
index 647dd1bf249..1264937fb85 100644
Binary files a/source/images/supported_brands/rfxtrx.png and b/source/images/supported_brands/rfxtrx.png differ
diff --git a/source/images/supported_brands/ring.png b/source/images/supported_brands/ring.png
index f4be1a4c709..52f746e4dcc 100644
Binary files a/source/images/supported_brands/ring.png and b/source/images/supported_brands/ring.png differ
diff --git a/source/images/supported_brands/ripple.png b/source/images/supported_brands/ripple.png
index 806eff8cca1..02559dfd361 100644
Binary files a/source/images/supported_brands/ripple.png and b/source/images/supported_brands/ripple.png differ
diff --git a/source/images/supported_brands/rocketchat.png b/source/images/supported_brands/rocketchat.png
index 912112d2c97..90d802ceba0 100644
Binary files a/source/images/supported_brands/rocketchat.png and b/source/images/supported_brands/rocketchat.png differ
diff --git a/source/images/supported_brands/roku.png b/source/images/supported_brands/roku.png
index b91be81dfec..0a86a60e8d1 100644
Binary files a/source/images/supported_brands/roku.png and b/source/images/supported_brands/roku.png differ
diff --git a/source/images/supported_brands/rss.png b/source/images/supported_brands/rss.png
index 7a6881c3319..26ede7114a6 100644
Binary files a/source/images/supported_brands/rss.png and b/source/images/supported_brands/rss.png differ
diff --git a/source/images/supported_brands/russound.png b/source/images/supported_brands/russound.png
index 6dc6e8b7151..4461fff8403 100644
Binary files a/source/images/supported_brands/russound.png and b/source/images/supported_brands/russound.png differ
diff --git a/source/images/supported_brands/sabnzbd.png b/source/images/supported_brands/sabnzbd.png
index 1078e7e3e94..48056574977 100644
Binary files a/source/images/supported_brands/sabnzbd.png and b/source/images/supported_brands/sabnzbd.png differ
diff --git a/source/images/supported_brands/samsung.png b/source/images/supported_brands/samsung.png
index fe36a9500b0..59faac2b17b 100644
Binary files a/source/images/supported_brands/samsung.png and b/source/images/supported_brands/samsung.png differ
diff --git a/source/images/supported_brands/satel.jpg b/source/images/supported_brands/satel.jpg
index 2c47cdcc0e9..4285254ca39 100644
Binary files a/source/images/supported_brands/satel.jpg and b/source/images/supported_brands/satel.jpg differ
diff --git a/source/images/supported_brands/sendgrid.png b/source/images/supported_brands/sendgrid.png
index 49a379ae5b8..7d24c38491a 100644
Binary files a/source/images/supported_brands/sendgrid.png and b/source/images/supported_brands/sendgrid.png differ
diff --git a/source/images/supported_brands/sense-hat.png b/source/images/supported_brands/sense-hat.png
index de049bfa7e9..e6dda07bb0e 100644
Binary files a/source/images/supported_brands/sense-hat.png and b/source/images/supported_brands/sense-hat.png differ
diff --git a/source/images/supported_brands/sensibo.png b/source/images/supported_brands/sensibo.png
index 11ad1fef6c6..8cf1c33afa4 100644
Binary files a/source/images/supported_brands/sensibo.png and b/source/images/supported_brands/sensibo.png differ
diff --git a/source/images/supported_brands/serial_pm.png b/source/images/supported_brands/serial_pm.png
index 5af4916107a..78a5d7f67b5 100644
Binary files a/source/images/supported_brands/serial_pm.png and b/source/images/supported_brands/serial_pm.png differ
diff --git a/source/images/supported_brands/sesame.png b/source/images/supported_brands/sesame.png
index 0c60a2737ae..a99834a4b6b 100644
Binary files a/source/images/supported_brands/sesame.png and b/source/images/supported_brands/sesame.png differ
diff --git a/source/images/supported_brands/sharp_aquos.png b/source/images/supported_brands/sharp_aquos.png
index da18b1bfb81..dd9dd7ec3ed 100644
Binary files a/source/images/supported_brands/sharp_aquos.png and b/source/images/supported_brands/sharp_aquos.png differ
diff --git a/source/images/supported_brands/shiftr.png b/source/images/supported_brands/shiftr.png
index 795a144372e..438cbf76fda 100644
Binary files a/source/images/supported_brands/shiftr.png and b/source/images/supported_brands/shiftr.png differ
diff --git a/source/images/supported_brands/shodan.png b/source/images/supported_brands/shodan.png
index 2df58bcd660..7de15d9eac6 100644
Binary files a/source/images/supported_brands/shodan.png and b/source/images/supported_brands/shodan.png differ
diff --git a/source/images/supported_brands/simplepush.png b/source/images/supported_brands/simplepush.png
index ae38a7ed4c6..fa44e1c8bee 100644
Binary files a/source/images/supported_brands/simplepush.png and b/source/images/supported_brands/simplepush.png differ
diff --git a/source/images/supported_brands/simplisafe.png b/source/images/supported_brands/simplisafe.png
index 4b8c529bd4e..86b22137972 100644
Binary files a/source/images/supported_brands/simplisafe.png and b/source/images/supported_brands/simplisafe.png differ
diff --git a/source/images/supported_brands/sky.png b/source/images/supported_brands/sky.png
index 6352268460b..1c5b8d90269 100644
Binary files a/source/images/supported_brands/sky.png and b/source/images/supported_brands/sky.png differ
diff --git a/source/images/supported_brands/skybell.png b/source/images/supported_brands/skybell.png
index 98ee75fbc66..3eac85b677e 100644
Binary files a/source/images/supported_brands/skybell.png and b/source/images/supported_brands/skybell.png differ
diff --git a/source/images/supported_brands/slack.png b/source/images/supported_brands/slack.png
index 90c8c17a41b..d48d683f059 100644
Binary files a/source/images/supported_brands/slack.png and b/source/images/supported_brands/slack.png differ
diff --git a/source/images/supported_brands/sleepiq.png b/source/images/supported_brands/sleepiq.png
index 4c822ab5eca..2ef992997fd 100644
Binary files a/source/images/supported_brands/sleepiq.png and b/source/images/supported_brands/sleepiq.png differ
diff --git a/source/images/supported_brands/sma.png b/source/images/supported_brands/sma.png
index 65eaa03dbba..cdef0f732e8 100644
Binary files a/source/images/supported_brands/sma.png and b/source/images/supported_brands/sma.png differ
diff --git a/source/images/supported_brands/smartthings.png b/source/images/supported_brands/smartthings.png
index b036d3bc496..96c2cedfc82 100644
Binary files a/source/images/supported_brands/smartthings.png and b/source/images/supported_brands/smartthings.png differ
diff --git a/source/images/supported_brands/smtp.png b/source/images/supported_brands/smtp.png
index 25ac6a0b16a..2c3df6cfd92 100644
Binary files a/source/images/supported_brands/smtp.png and b/source/images/supported_brands/smtp.png differ
diff --git a/source/images/supported_brands/snapcast.png b/source/images/supported_brands/snapcast.png
index 8baa14fa102..5d10505e282 100644
Binary files a/source/images/supported_brands/snapcast.png and b/source/images/supported_brands/snapcast.png differ
diff --git a/source/images/supported_brands/snips.png b/source/images/supported_brands/snips.png
index ec98a5f2a6f..4c5bbd7218f 100644
Binary files a/source/images/supported_brands/snips.png and b/source/images/supported_brands/snips.png differ
diff --git a/source/images/supported_brands/sonarr.png b/source/images/supported_brands/sonarr.png
index 815750aa063..83190d9b642 100644
Binary files a/source/images/supported_brands/sonarr.png and b/source/images/supported_brands/sonarr.png differ
diff --git a/source/images/supported_brands/sonos.png b/source/images/supported_brands/sonos.png
index 47d1ebc0205..2980b9d9b27 100644
Binary files a/source/images/supported_brands/sonos.png and b/source/images/supported_brands/sonos.png differ
diff --git a/source/images/supported_brands/soundtouch.png b/source/images/supported_brands/soundtouch.png
index 0833b16a175..d5323ec31f7 100644
Binary files a/source/images/supported_brands/soundtouch.png and b/source/images/supported_brands/soundtouch.png differ
diff --git a/source/images/supported_brands/speedtest.png b/source/images/supported_brands/speedtest.png
index ceb4712a970..d9bd06b6f9b 100644
Binary files a/source/images/supported_brands/speedtest.png and b/source/images/supported_brands/speedtest.png differ
diff --git a/source/images/supported_brands/splunk.png b/source/images/supported_brands/splunk.png
index 062ae1503ee..9c324f82ef4 100644
Binary files a/source/images/supported_brands/splunk.png and b/source/images/supported_brands/splunk.png differ
diff --git a/source/images/supported_brands/spotify.png b/source/images/supported_brands/spotify.png
index 3542e5ec38c..b4da680d1ac 100644
Binary files a/source/images/supported_brands/spotify.png and b/source/images/supported_brands/spotify.png differ
diff --git a/source/images/supported_brands/squeezebox.png b/source/images/supported_brands/squeezebox.png
index a26774418ae..86ab4f290bc 100644
Binary files a/source/images/supported_brands/squeezebox.png and b/source/images/supported_brands/squeezebox.png differ
diff --git a/source/images/supported_brands/statsd.png b/source/images/supported_brands/statsd.png
index e20ef5e2ecd..6f6d33dfb01 100644
Binary files a/source/images/supported_brands/statsd.png and b/source/images/supported_brands/statsd.png differ
diff --git a/source/images/supported_brands/steam.png b/source/images/supported_brands/steam.png
index 7b3750b85b1..05e082c991c 100644
Binary files a/source/images/supported_brands/steam.png and b/source/images/supported_brands/steam.png differ
diff --git a/source/images/supported_brands/supervisord.png b/source/images/supported_brands/supervisord.png
index a0d8447727d..6905d5870bc 100644
Binary files a/source/images/supported_brands/supervisord.png and b/source/images/supported_brands/supervisord.png differ
diff --git a/source/images/supported_brands/swiss-hydrological-data.png b/source/images/supported_brands/swiss-hydrological-data.png
index d7b1784945c..d4101c41648 100644
Binary files a/source/images/supported_brands/swiss-hydrological-data.png and b/source/images/supported_brands/swiss-hydrological-data.png differ
diff --git a/source/images/supported_brands/swisscom.png b/source/images/supported_brands/swisscom.png
index 4d6fea1b783..512c755fbc4 100644
Binary files a/source/images/supported_brands/swisscom.png and b/source/images/supported_brands/swisscom.png differ
diff --git a/source/images/supported_brands/synology.png b/source/images/supported_brands/synology.png
index 25fd9f3b05c..66c524488f9 100644
Binary files a/source/images/supported_brands/synology.png and b/source/images/supported_brands/synology.png differ
diff --git a/source/images/supported_brands/syslog.png b/source/images/supported_brands/syslog.png
index 019920428a4..ba0c0f25302 100644
Binary files a/source/images/supported_brands/syslog.png and b/source/images/supported_brands/syslog.png differ
diff --git a/source/images/supported_brands/system_monitor.png b/source/images/supported_brands/system_monitor.png
index 5a2fd9a9915..0a57ddecb4c 100644
Binary files a/source/images/supported_brands/system_monitor.png and b/source/images/supported_brands/system_monitor.png differ
diff --git a/source/images/supported_brands/sytadin.png b/source/images/supported_brands/sytadin.png
index 407749e4546..e79d6ccaf36 100644
Binary files a/source/images/supported_brands/sytadin.png and b/source/images/supported_brands/sytadin.png differ
diff --git a/source/images/supported_brands/tado.png b/source/images/supported_brands/tado.png
index d39d84c297f..36845732b11 100644
Binary files a/source/images/supported_brands/tado.png and b/source/images/supported_brands/tado.png differ
diff --git a/source/images/supported_brands/tahoma.png b/source/images/supported_brands/tahoma.png
new file mode 100644
index 00000000000..5c74c58b073
Binary files /dev/null and b/source/images/supported_brands/tahoma.png differ
diff --git a/source/images/supported_brands/tank_utility.png b/source/images/supported_brands/tank_utility.png
index 2dbdf66f182..165ca069dd8 100644
Binary files a/source/images/supported_brands/tank_utility.png and b/source/images/supported_brands/tank_utility.png differ
diff --git a/source/images/supported_brands/tapsaff.png b/source/images/supported_brands/tapsaff.png
index 54af8883f85..41ff2cf369f 100644
Binary files a/source/images/supported_brands/tapsaff.png and b/source/images/supported_brands/tapsaff.png differ
diff --git a/source/images/supported_brands/tcp_ip.png b/source/images/supported_brands/tcp_ip.png
index 91153a248a5..c675c816127 100644
Binary files a/source/images/supported_brands/tcp_ip.png and b/source/images/supported_brands/tcp_ip.png differ
diff --git a/source/images/supported_brands/technicolor.png b/source/images/supported_brands/technicolor.png
index 203bbc59272..c6ec9feff49 100644
Binary files a/source/images/supported_brands/technicolor.png and b/source/images/supported_brands/technicolor.png differ
diff --git a/source/images/supported_brands/ted.png b/source/images/supported_brands/ted.png
index fe196f3dacd..f686d6a83bb 100644
Binary files a/source/images/supported_brands/ted.png and b/source/images/supported_brands/ted.png differ
diff --git a/source/images/supported_brands/telegram.png b/source/images/supported_brands/telegram.png
index 2ced08f4415..aa31a734eeb 100644
Binary files a/source/images/supported_brands/telegram.png and b/source/images/supported_brands/telegram.png differ
diff --git a/source/images/supported_brands/telldus.png b/source/images/supported_brands/telldus.png
index c3c42c51198..06fa9ccc324 100644
Binary files a/source/images/supported_brands/telldus.png and b/source/images/supported_brands/telldus.png differ
diff --git a/source/images/supported_brands/telldus_tellstick.png b/source/images/supported_brands/telldus_tellstick.png
index b698c0b058e..b5256123e84 100644
Binary files a/source/images/supported_brands/telldus_tellstick.png and b/source/images/supported_brands/telldus_tellstick.png differ
diff --git a/source/images/supported_brands/telstra.png b/source/images/supported_brands/telstra.png
index c86d95af6b2..2f34cae1a91 100644
Binary files a/source/images/supported_brands/telstra.png and b/source/images/supported_brands/telstra.png differ
diff --git a/source/images/supported_brands/tesla.png b/source/images/supported_brands/tesla.png
index 947cd01e813..44db488cf2c 100644
Binary files a/source/images/supported_brands/tesla.png and b/source/images/supported_brands/tesla.png differ
diff --git a/source/images/supported_brands/thethingsnetwork.png b/source/images/supported_brands/thethingsnetwork.png
index 5fff0d35a40..5f39f7dbbfd 100644
Binary files a/source/images/supported_brands/thethingsnetwork.png and b/source/images/supported_brands/thethingsnetwork.png differ
diff --git a/source/images/supported_brands/thingspeak.png b/source/images/supported_brands/thingspeak.png
index d5f72d6c9f3..f71ccd3bea0 100644
Binary files a/source/images/supported_brands/thingspeak.png and b/source/images/supported_brands/thingspeak.png differ
diff --git a/source/images/supported_brands/thinkingcleaner.png b/source/images/supported_brands/thinkingcleaner.png
index 77dcd69963b..0ea93811ba8 100644
Binary files a/source/images/supported_brands/thinkingcleaner.png and b/source/images/supported_brands/thinkingcleaner.png differ
diff --git a/source/images/supported_brands/tibber.png b/source/images/supported_brands/tibber.png
index 68825065a04..2b8ec3ed3a8 100644
Binary files a/source/images/supported_brands/tibber.png and b/source/images/supported_brands/tibber.png differ
diff --git a/source/images/supported_brands/tikteck.png b/source/images/supported_brands/tikteck.png
index 0f6d5203bc5..4e40e16a9ef 100644
Binary files a/source/images/supported_brands/tikteck.png and b/source/images/supported_brands/tikteck.png differ
diff --git a/source/images/supported_brands/tile.png b/source/images/supported_brands/tile.png
new file mode 100644
index 00000000000..8b8e559fcf7
Binary files /dev/null and b/source/images/supported_brands/tile.png differ
diff --git a/source/images/supported_brands/todoist.png b/source/images/supported_brands/todoist.png
index f48db3d8e29..08d4b38e4f1 100755
Binary files a/source/images/supported_brands/todoist.png and b/source/images/supported_brands/todoist.png differ
diff --git a/source/images/supported_brands/tomato.png b/source/images/supported_brands/tomato.png
index 8bf0d70d942..a4e0f37fcfe 100644
Binary files a/source/images/supported_brands/tomato.png and b/source/images/supported_brands/tomato.png differ
diff --git a/source/images/supported_brands/toon.png b/source/images/supported_brands/toon.png
index a0661cad885..b10a6fb9768 100644
Binary files a/source/images/supported_brands/toon.png and b/source/images/supported_brands/toon.png differ
diff --git a/source/images/supported_brands/tor.png b/source/images/supported_brands/tor.png
new file mode 100644
index 00000000000..10f787fcb80
Binary files /dev/null and b/source/images/supported_brands/tor.png differ
diff --git a/source/images/supported_brands/torque.png b/source/images/supported_brands/torque.png
index 3a343849378..408b934ad94 100644
Binary files a/source/images/supported_brands/torque.png and b/source/images/supported_brands/torque.png differ
diff --git a/source/images/supported_brands/tp-link.png b/source/images/supported_brands/tp-link.png
index bffb38c9707..1eced933fdc 100644
Binary files a/source/images/supported_brands/tp-link.png and b/source/images/supported_brands/tp-link.png differ
diff --git a/source/images/supported_brands/trackr.png b/source/images/supported_brands/trackr.png
index 659944b3db9..0dcc1045224 100644
Binary files a/source/images/supported_brands/trackr.png and b/source/images/supported_brands/trackr.png differ
diff --git a/source/images/supported_brands/train.png b/source/images/supported_brands/train.png
index 45f39d707fc..6976e191beb 100644
Binary files a/source/images/supported_brands/train.png and b/source/images/supported_brands/train.png differ
diff --git a/source/images/supported_brands/transmission.png b/source/images/supported_brands/transmission.png
index 7981018ede9..13759b5eb43 100644
Binary files a/source/images/supported_brands/transmission.png and b/source/images/supported_brands/transmission.png differ
diff --git a/source/images/supported_brands/travisci.svg b/source/images/supported_brands/travisci.svg
index 338571a7c43..ae791ed9f25 100644
--- a/source/images/supported_brands/travisci.svg
+++ b/source/images/supported_brands/travisci.svg
@@ -1,309 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/source/images/supported_brands/twilio.png b/source/images/supported_brands/twilio.png
index 9e9ea721e1e..ae02c87378c 100644
Binary files a/source/images/supported_brands/twilio.png and b/source/images/supported_brands/twilio.png differ
diff --git a/source/images/supported_brands/twitch.png b/source/images/supported_brands/twitch.png
index 1a034f39527..da759dd14b4 100644
Binary files a/source/images/supported_brands/twitch.png and b/source/images/supported_brands/twitch.png differ
diff --git a/source/images/supported_brands/twitter.png b/source/images/supported_brands/twitter.png
index 58a43c64218..312ec93d6c0 100644
Binary files a/source/images/supported_brands/twitter.png and b/source/images/supported_brands/twitter.png differ
diff --git a/source/images/supported_brands/uber.png b/source/images/supported_brands/uber.png
index 75dccc056e6..e7f9c7ca6ab 100644
Binary files a/source/images/supported_brands/uber.png and b/source/images/supported_brands/uber.png differ
diff --git a/source/images/supported_brands/ubiquiti.png b/source/images/supported_brands/ubiquiti.png
index 363b4a617ae..cd754aabd8d 100644
Binary files a/source/images/supported_brands/ubiquiti.png and b/source/images/supported_brands/ubiquiti.png differ
diff --git a/source/images/supported_brands/universal_devices.png b/source/images/supported_brands/universal_devices.png
index d779c63d206..9e5d5205ed3 100644
Binary files a/source/images/supported_brands/universal_devices.png and b/source/images/supported_brands/universal_devices.png differ
diff --git a/source/images/supported_brands/upc.png b/source/images/supported_brands/upc.png
index c8158689004..6c9e01d6472 100644
Binary files a/source/images/supported_brands/upc.png and b/source/images/supported_brands/upc.png differ
diff --git a/source/images/supported_brands/upnp.png b/source/images/supported_brands/upnp.png
index 52b175f6bcf..940919bd8c0 100644
Binary files a/source/images/supported_brands/upnp.png and b/source/images/supported_brands/upnp.png differ
diff --git a/source/images/supported_brands/ups.png b/source/images/supported_brands/ups.png
index c00d4fc36d8..c423dea2dde 100644
Binary files a/source/images/supported_brands/ups.png and b/source/images/supported_brands/ups.png differ
diff --git a/source/images/supported_brands/usps.png b/source/images/supported_brands/usps.png
index 457668d07f9..b3857ac13fa 100644
Binary files a/source/images/supported_brands/usps.png and b/source/images/supported_brands/usps.png differ
diff --git a/source/images/supported_brands/vagrant.png b/source/images/supported_brands/vagrant.png
index af2cd9ebb3d..362e379fc5c 100644
Binary files a/source/images/supported_brands/vagrant.png and b/source/images/supported_brands/vagrant.png differ
diff --git a/source/images/supported_brands/vasttrafik.png b/source/images/supported_brands/vasttrafik.png
index c59c0364f03..2d6428c2daa 100644
Binary files a/source/images/supported_brands/vasttrafik.png and b/source/images/supported_brands/vasttrafik.png differ
diff --git a/source/images/supported_brands/velbus.png b/source/images/supported_brands/velbus.png
index ce95d1308a3..ebb143ae612 100644
Binary files a/source/images/supported_brands/velbus.png and b/source/images/supported_brands/velbus.png differ
diff --git a/source/images/supported_brands/velux.png b/source/images/supported_brands/velux.png
index fd5a1fa183b..2e5f35b2fe0 100644
Binary files a/source/images/supported_brands/velux.png and b/source/images/supported_brands/velux.png differ
diff --git a/source/images/supported_brands/vera.png b/source/images/supported_brands/vera.png
index 0643c398a13..a3023a20a54 100644
Binary files a/source/images/supported_brands/vera.png and b/source/images/supported_brands/vera.png differ
diff --git a/source/images/supported_brands/verisure.png b/source/images/supported_brands/verisure.png
index 017faf31c41..639c2d6c649 100644
Binary files a/source/images/supported_brands/verisure.png and b/source/images/supported_brands/verisure.png differ
diff --git a/source/images/supported_brands/verizon.png b/source/images/supported_brands/verizon.png
index ba2c40f873b..c84464cf343 100644
Binary files a/source/images/supported_brands/verizon.png and b/source/images/supported_brands/verizon.png differ
diff --git a/source/images/supported_brands/videolan.png b/source/images/supported_brands/videolan.png
index 0bb9ef91f5e..ab284313d67 100644
Binary files a/source/images/supported_brands/videolan.png and b/source/images/supported_brands/videolan.png differ
diff --git a/source/images/supported_brands/view-dashboard.png b/source/images/supported_brands/view-dashboard.png
index 33c23e2e515..c8e420f6e25 100644
Binary files a/source/images/supported_brands/view-dashboard.png and b/source/images/supported_brands/view-dashboard.png differ
diff --git a/source/images/supported_brands/vizio-smartcast.png b/source/images/supported_brands/vizio-smartcast.png
index a4b78ca45bf..d48d972062f 100644
Binary files a/source/images/supported_brands/vizio-smartcast.png and b/source/images/supported_brands/vizio-smartcast.png differ
diff --git a/source/images/supported_brands/voicerss.png b/source/images/supported_brands/voicerss.png
index 1c3a7ae6920..9e54daab9b4 100644
Binary files a/source/images/supported_brands/voicerss.png and b/source/images/supported_brands/voicerss.png differ
diff --git a/source/images/supported_brands/volumio.png b/source/images/supported_brands/volumio.png
index d38ce632e8f..1625ff0becb 100644
Binary files a/source/images/supported_brands/volumio.png and b/source/images/supported_brands/volumio.png differ
diff --git a/source/images/supported_brands/volvo.png b/source/images/supported_brands/volvo.png
index f29c360921a..d5ade641ac9 100644
Binary files a/source/images/supported_brands/volvo.png and b/source/images/supported_brands/volvo.png differ
diff --git a/source/images/supported_brands/vultr.png b/source/images/supported_brands/vultr.png
index 86595f312c1..17c9f74aaa7 100644
Binary files a/source/images/supported_brands/vultr.png and b/source/images/supported_brands/vultr.png differ
diff --git a/source/images/supported_brands/waqi.png b/source/images/supported_brands/waqi.png
index 913aedf1137..7b48ff52c44 100644
Binary files a/source/images/supported_brands/waqi.png and b/source/images/supported_brands/waqi.png differ
diff --git a/source/images/supported_brands/webos.png b/source/images/supported_brands/webos.png
index 4cbd9877217..11c3685c87e 100644
Binary files a/source/images/supported_brands/webos.png and b/source/images/supported_brands/webos.png differ
diff --git a/source/images/supported_brands/windows.png b/source/images/supported_brands/windows.png
index fe1317b45eb..9ff997483bd 100644
Binary files a/source/images/supported_brands/windows.png and b/source/images/supported_brands/windows.png differ
diff --git a/source/images/supported_brands/wink.png b/source/images/supported_brands/wink.png
index 81163313b8f..a8ffdb232a9 100644
Binary files a/source/images/supported_brands/wink.png and b/source/images/supported_brands/wink.png differ
diff --git a/source/images/supported_brands/woonveilig.png b/source/images/supported_brands/woonveilig.png
index 727de7b31f9..8d7e776c984 100644
Binary files a/source/images/supported_brands/woonveilig.png and b/source/images/supported_brands/woonveilig.png differ
diff --git a/source/images/supported_brands/worldtidesinfo.png b/source/images/supported_brands/worldtidesinfo.png
index 79ae85527ae..5e49de79406 100644
Binary files a/source/images/supported_brands/worldtidesinfo.png and b/source/images/supported_brands/worldtidesinfo.png differ
diff --git a/source/images/supported_brands/worx.png b/source/images/supported_brands/worx.png
index 884fb79be77..dfc0f49da22 100644
Binary files a/source/images/supported_brands/worx.png and b/source/images/supported_brands/worx.png differ
diff --git a/source/images/supported_brands/wsdot.png b/source/images/supported_brands/wsdot.png
index 48bc2060161..bfe04f11388 100644
Binary files a/source/images/supported_brands/wsdot.png and b/source/images/supported_brands/wsdot.png differ
diff --git a/source/images/supported_brands/wunderground.png b/source/images/supported_brands/wunderground.png
index 66fba240e6d..02d1dddc53f 100644
Binary files a/source/images/supported_brands/wunderground.png and b/source/images/supported_brands/wunderground.png differ
diff --git a/source/images/supported_brands/x10.gif b/source/images/supported_brands/x10.gif
index 84a8e94fe5e..0c0e80dbc8b 100644
Binary files a/source/images/supported_brands/x10.gif and b/source/images/supported_brands/x10.gif differ
diff --git a/source/images/supported_brands/xbox-live.png b/source/images/supported_brands/xbox-live.png
index f606acd9824..2d930dc3765 100644
Binary files a/source/images/supported_brands/xbox-live.png and b/source/images/supported_brands/xbox-live.png differ
diff --git a/source/images/supported_brands/xiaomi.png b/source/images/supported_brands/xiaomi.png
index fffc268c385..167b1419a01 100644
Binary files a/source/images/supported_brands/xiaomi.png and b/source/images/supported_brands/xiaomi.png differ
diff --git a/source/images/supported_brands/xmpp.png b/source/images/supported_brands/xmpp.png
index c753f0d9565..102a945639c 100644
Binary files a/source/images/supported_brands/xmpp.png and b/source/images/supported_brands/xmpp.png differ
diff --git a/source/images/supported_brands/yahoo_finance.png b/source/images/supported_brands/yahoo_finance.png
index 6b3d40bff08..41a60c547be 100644
Binary files a/source/images/supported_brands/yahoo_finance.png and b/source/images/supported_brands/yahoo_finance.png differ
diff --git a/source/images/supported_brands/yahooweather.png b/source/images/supported_brands/yahooweather.png
index 479ffb06ec3..4b275368f00 100644
Binary files a/source/images/supported_brands/yahooweather.png and b/source/images/supported_brands/yahooweather.png differ
diff --git a/source/images/supported_brands/yamaha.png b/source/images/supported_brands/yamaha.png
index 6ae38e57fed..f9682281025 100644
Binary files a/source/images/supported_brands/yamaha.png and b/source/images/supported_brands/yamaha.png differ
diff --git a/source/images/supported_brands/yandex.png b/source/images/supported_brands/yandex.png
index 73f1132ac90..e1160dad73d 100644
Binary files a/source/images/supported_brands/yandex.png and b/source/images/supported_brands/yandex.png differ
diff --git a/source/images/supported_brands/yeelight.png b/source/images/supported_brands/yeelight.png
index 9469552c65d..32036cce6d0 100644
Binary files a/source/images/supported_brands/yeelight.png and b/source/images/supported_brands/yeelight.png differ
diff --git a/source/images/supported_brands/yesssat.png b/source/images/supported_brands/yesssat.png
index 76da7a8b0a7..4e44694bd34 100644
Binary files a/source/images/supported_brands/yesssat.png and b/source/images/supported_brands/yesssat.png differ
diff --git a/source/images/supported_brands/yi.png b/source/images/supported_brands/yi.png
index c7029bea791..06f02bc9b09 100644
Binary files a/source/images/supported_brands/yi.png and b/source/images/supported_brands/yi.png differ
diff --git a/source/images/supported_brands/yr.png b/source/images/supported_brands/yr.png
index ac3ebb8a27a..fba7173b3db 100644
Binary files a/source/images/supported_brands/yr.png and b/source/images/supported_brands/yr.png differ
diff --git a/source/images/supported_brands/z-wave.png b/source/images/supported_brands/z-wave.png
index 26e7ae10937..3abd5ee7f15 100644
Binary files a/source/images/supported_brands/z-wave.png and b/source/images/supported_brands/z-wave.png differ
diff --git a/source/images/supported_brands/zabbix.png b/source/images/supported_brands/zabbix.png
index 0a62d6df936..de8c6324aee 100644
Binary files a/source/images/supported_brands/zabbix.png and b/source/images/supported_brands/zabbix.png differ
diff --git a/source/images/supported_brands/zamg.png b/source/images/supported_brands/zamg.png
index e16d5d75881..181a7bf877a 100644
Binary files a/source/images/supported_brands/zamg.png and b/source/images/supported_brands/zamg.png differ
diff --git a/source/images/supported_brands/zehnder.png b/source/images/supported_brands/zehnder.png
index fd910207c19..27dab1c4d31 100644
Binary files a/source/images/supported_brands/zehnder.png and b/source/images/supported_brands/zehnder.png differ
diff --git a/source/images/supported_brands/zengge.png b/source/images/supported_brands/zengge.png
index cdfbba2587a..3cec99c9319 100644
Binary files a/source/images/supported_brands/zengge.png and b/source/images/supported_brands/zengge.png differ
diff --git a/source/images/supported_brands/zigbee.png b/source/images/supported_brands/zigbee.png
index 444407c349e..e547e71b1dd 100644
Binary files a/source/images/supported_brands/zigbee.png and b/source/images/supported_brands/zigbee.png differ
diff --git a/source/images/supported_brands/zoneminder.png b/source/images/supported_brands/zoneminder.png
index 0fefee67988..7e8e234bde8 100644
Binary files a/source/images/supported_brands/zoneminder.png and b/source/images/supported_brands/zoneminder.png differ
diff --git a/source/static/favicon-192x192.png b/source/static/favicon-192x192.png
index 2959efdf89d..3cd8005a166 100644
Binary files a/source/static/favicon-192x192.png and b/source/static/favicon-192x192.png differ
diff --git a/source/static/icons/favicon-192x192.png b/source/static/icons/favicon-192x192.png
index 2959efdf89d..3cd8005a166 100644
Binary files a/source/static/icons/favicon-192x192.png and b/source/static/icons/favicon-192x192.png differ
diff --git a/source/static/images/card_media_player_bg.png b/source/static/images/card_media_player_bg.png
index 6c97dd2f511..2de4b255878 100644
Binary files a/source/static/images/card_media_player_bg.png and b/source/static/images/card_media_player_bg.png differ