diff --git a/Gemfile b/Gemfile
index 1b5ab49ea5a..5f502f1a39a 100644
--- a/Gemfile
+++ b/Gemfile
@@ -4,7 +4,9 @@ ruby "> 2.3.0"
group :development do
gem 'rake', '~> 10.0'
- gem 'jekyll', '~> 3.0'
+ # 3.8.5 throws errors on unfinished liquid tags in excerpts
+ # Wait with upgrade until release https://github.com/jekyll/jekyll/pull/7382
+ gem 'jekyll', '3.8.4'
gem 'compass', '~> 0.12'
gem 'sass-globbing', '~> 1.0'
gem 'stringex', '~> 1.4'
diff --git a/Gemfile.lock b/Gemfile.lock
index 051fb09fdb5..48440eeee35 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -10,19 +10,29 @@ GEM
chunky_png (~> 1.2)
fssm (>= 0.2.7)
sass (~> 3.2.19)
- ffi (1.9.18)
+ concurrent-ruby (1.1.3)
+ em-websocket (0.5.1)
+ eventmachine (>= 0.12.9)
+ http_parser.rb (~> 0.6.0)
+ eventmachine (1.2.7)
+ ffi (1.9.25)
forwardable-extended (2.6.0)
fssm (0.2.10)
- jekyll (3.5.2)
+ http_parser.rb (0.6.0)
+ i18n (0.9.5)
+ concurrent-ruby (~> 1.0)
+ jekyll (3.8.4)
addressable (~> 2.4)
colorator (~> 1.0)
+ em-websocket (~> 0.5)
+ i18n (~> 0.7)
jekyll-sass-converter (~> 1.0)
- jekyll-watch (~> 1.1)
- kramdown (~> 1.3)
+ jekyll-watch (~> 2.0)
+ kramdown (~> 1.14)
liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
- rouge (~> 1.7)
+ rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
jekyll-paginate (1.1.0)
jekyll-redirect-from (0.12.1)
@@ -33,18 +43,19 @@ GEM
jekyll (~> 3.3)
jekyll-time-to-read (0.1.2)
jekyll
- jekyll-watch (1.5.0)
- listen (~> 3.0, < 3.1)
- kramdown (1.14.0)
- liquid (4.0.0)
- listen (3.0.8)
+ jekyll-watch (2.1.2)
+ listen (~> 3.0)
+ kramdown (1.17.0)
+ liquid (4.0.1)
+ listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
+ ruby_dep (~> 1.2)
mercenary (0.3.6)
method_source (0.8.2)
- mini_portile2 (2.3.0)
- nokogiri (1.8.2)
- mini_portile2 (~> 2.3.0)
+ mini_portile2 (2.4.0)
+ nokogiri (1.10.1)
+ mini_portile2 (~> 2.4.0)
octopress (3.0.11)
jekyll (>= 2.0)
mercenary (~> 0.3.2)
@@ -64,22 +75,23 @@ GEM
octopress-tag-helpers (~> 1.0)
octopress-tag-helpers (1.0.8)
jekyll (>= 2.0)
- pathutil (0.14.0)
+ pathutil (0.16.2)
forwardable-extended (~> 2.6)
pry (0.10.4)
coderay (~> 1.1.0)
method_source (~> 0.8.1)
slop (~> 3.4)
- public_suffix (3.0.0)
+ public_suffix (3.0.3)
rack (1.6.9)
rack-protection (1.5.5)
rack
rake (10.5.0)
- rb-fsevent (0.10.2)
+ rb-fsevent (0.10.3)
rb-inotify (0.9.8)
ffi (>= 0.5.0)
redcarpet (3.4.0)
- rouge (1.11.1)
+ rouge (3.3.0)
+ ruby_dep (1.5.0)
safe_yaml (1.0.4)
sass (3.2.19)
sass-globbing (1.1.5)
@@ -98,7 +110,7 @@ PLATFORMS
DEPENDENCIES
compass (~> 0.12)
- jekyll (~> 3.0)
+ jekyll (= 3.8.4)
jekyll-paginate
jekyll-redirect-from
jekyll-sitemap
@@ -117,4 +129,4 @@ RUBY VERSION
ruby 2.4.1p111
BUNDLED WITH
- 1.16.1
+ 1.17.1
diff --git a/_config.yml b/_config.yml
index ca5fd6f7ee1..a664cf4ab37 100644
--- a/_config.yml
+++ b/_config.yml
@@ -32,8 +32,12 @@ destination: public/
plugins_dir: plugins
code_dir: downloads/code
category_dir: blog/categories
+
markdown: kramdown
+highlighter: rouge
timezone: UTC
+liquid:
+ error_mode: strict
kramdown:
input: GFM
@@ -44,8 +48,6 @@ kramdown:
smart_quotes: lsquo,rsquo,ldquo,rdquo
parse_block_html: true
-highlighter: rouge
-
plugins:
- jekyll-redirect-from
- jekyll-time-to-read
@@ -141,14 +143,14 @@ social:
# Home Assistant release details
current_major_version: 0
-current_minor_version: 81
+current_minor_version: 85
current_patch_version: 1
-date_released: 2018-10-28
+date_released: 2019-01-11
# 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-0811---october-28"
+patch_version_notes: ""
# Minor release (Example #release-0431---april-25):
# Date we moved to Discourse for comments
diff --git a/credits_generator/.gitignore b/credits_generator/.gitignore
deleted file mode 100644
index 20efa436b5c..00000000000
--- a/credits_generator/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-.token
diff --git a/credits_generator/README.md b/credits_generator/README.md
deleted file mode 100644
index e441f9917bb..00000000000
--- a/credits_generator/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-credits_generator
-=================
-
-This tool can be used to update the [Credits page for Home Assistant](https://home-assistant.io/developers/credits/).
-
-Setup
------
-
-Fetch the dependencies with `npm`.
-```bash
-$ cd credits_generator
-$ npm install
-```
-
-Usage
------
-Go to https://github.com/settings/tokens/new and generate a new GitHub personal access token.
-
-Give the token any name and select the `public_repo` and `read:user` scopes.
-
-Put the token in this repo in a file named `.token`.
-
-Run the script.
-
-```bash
-$ node update_credits.js
-```
-
-Commit the changes (depending on our setup).
-
-```bash
-$ git commit ../source/developers/credits.markdown
-$ git push upstream
-```
-
diff --git a/credits_generator/credits.mustache b/credits_generator/credits.mustache
deleted file mode 100644
index c2419f1c321..00000000000
--- a/credits_generator/credits.mustache
+++ /dev/null
@@ -1,27 +0,0 @@
----
-layout: page
-title: "Credits"
-description: "Credits for the developers who contributed to Home Assistant."
-date: {{ headerDate }}
-sidebar: true
-comments: false
-sharing: true
-footer: true
----
-
-This page contains a list of people who have contributed in one way or another to Home Assistant. Hover over a username to see their contributions.
-
-### {% linkable_title Author %}
-
-- [{{fearlessLeader.info.name}} (@{{fearlessLeader.info.username}})](https://github.com/{{fearlessLeader.info.login}} "{{fearlessLeader.countString}}")
-
-### {% linkable_title Contributors %}
-
-(in alphabetical order)
-
-{{#allUsers}}- [{{info.name}} (@{{info.username}})](https://github.com/{{info.username}} "{{countString}}")
-{{/allUsers}}
-
-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 {{ footerDate }}.
diff --git a/credits_generator/package-lock.json b/credits_generator/package-lock.json
deleted file mode 100644
index 51cc2098715..00000000000
--- a/credits_generator/package-lock.json
+++ /dev/null
@@ -1,116 +0,0 @@
-{
- "name": "credits_generator",
- "version": "1.0.0",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "agent-base": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz",
- "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=",
- "requires": {
- "extend": "3.0.2",
- "semver": "5.0.3"
- }
- },
- "async": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
- "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
- "requires": {
- "lodash": "4.17.10"
- }
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "follow-redirects": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz",
- "integrity": "sha1-NLkLqyqRGqNHVx2pDyK9NuzYqRk=",
- "requires": {
- "debug": "2.6.9",
- "stream-consume": "0.1.1"
- }
- },
- "github": {
- "version": "8.2.1",
- "resolved": "https://registry.npmjs.org/github/-/github-8.2.1.tgz",
- "integrity": "sha1-YWsiEfvNHMhjFmmu1nZT5i61OBY=",
- "requires": {
- "follow-redirects": "0.0.7",
- "https-proxy-agent": "1.0.0",
- "mime": "1.6.0",
- "netrc": "0.1.4"
- }
- },
- "https-proxy-agent": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz",
- "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=",
- "requires": {
- "agent-base": "2.1.1",
- "debug": "2.6.9",
- "extend": "3.0.2"
- }
- },
- "lodash": {
- "version": "4.17.10",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
- "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
- },
- "mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
- },
- "moment": {
- "version": "2.22.2",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz",
- "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y="
- },
- "moment-timezone": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.21.tgz",
- "integrity": "sha512-j96bAh4otsgj3lKydm3K7kdtA3iKf2m6MY2iSYCzCm5a1zmHo1g+aK3068dDEeocLZQIS9kU8bsdQHLqEvgW0A==",
- "requires": {
- "moment": "2.22.2"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "mu2": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/mu2/-/mu2-0.5.21.tgz",
- "integrity": "sha1-iIqPD9kOsc/anbgUdvbhmcyeWNM="
- },
- "netrc": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz",
- "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ="
- },
- "semver": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz",
- "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no="
- },
- "stream-consume": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz",
- "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg=="
- }
- }
-}
diff --git a/credits_generator/package.json b/credits_generator/package.json
deleted file mode 100644
index a7d7b76fe53..00000000000
--- a/credits_generator/package.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "credits_generator",
- "version": "1.0.0",
- "private": true,
- "description": "A tool to generate the Home Assistant credits page",
- "main": "update_credits.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "Home Assistant Community",
- "license": "Apache-2.0",
- "dependencies": {
- "async": "^2.1.4",
- "github": "^8.1.0",
- "moment-timezone": "^0.5.11",
- "mu2": "^0.5.21"
- }
-}
diff --git a/credits_generator/update_credits.js b/credits_generator/update_credits.js
deleted file mode 100644
index 99e71743c0c..00000000000
--- a/credits_generator/update_credits.js
+++ /dev/null
@@ -1,164 +0,0 @@
-var fs = require('fs')
- , async = require('async')
- , GitHubApi = require('github')
- , mu = require('mu2')
- , moment = require('moment-timezone');
-
-let token;
-
-try {
- token = fs.readFileSync('.token', 'utf-8').trim();
-} catch (err) {
- console.error('You must create a .token file that contains a GitHub token.');
- return;
-}
-
-var organizationName = process.env.GITHUB_ORGANIZATION_NAME || 'home-assistant';
-
-mu.root = __dirname;
-
-var github = new GitHubApi({
- headers: { 'user-agent': 'Home Assistant Contributors List Updater
-It's recommended that you only open your firewall to the SSL/TLS port (8883) and only use the insecure port (1883) for local devices. Also, disable `anonymous:` and set `logins:`. -
+Remove the ports from the add-on page network card (set them as blank) to disable them. ### {% linkable_title Access Control Lists (ACLs) %} diff --git a/source/_addons/nginx_proxy.markdown b/source/_addons/nginx_proxy.markdown index 3e2a546cb14..471ec08c5f8 100644 --- a/source/_addons/nginx_proxy.markdown +++ b/source/_addons/nginx_proxy.markdown @@ -52,5 +52,5 @@ customize: {% endconfiguration %}-It is possible to deactivate port 80 if you need this for things like `emulate_hue`. Remove the host port from Network option of this add-on. +It is possible to deactivate port 80 if you need this for things like `emulated_hue`. Remove the host port from Network option of this add-on.
diff --git a/source/_addons/samba.markdown b/source/_addons/samba.markdown index 42519d3cfed..8d0b57c9207 100644 --- a/source/_addons/samba.markdown +++ b/source/_addons/samba.markdown @@ -12,18 +12,13 @@ featured: true This add-on allows you to set up a [Samba](https://samba.org/) server to access Hass.io folders using Windows network shares. ++Be careful when setting up port forwarding for remote access. If you don't restrict access by setting a username and strong password, your configuration could be exposed to the entire Internet! +
+ ```json { - "name": "hassio", "workgroup": "WORKGROUP", - "guest": true, - "map": { - "config": true, - "addons": true, - "share": true, - "backup": true, - "ssl": false - }, "username": "", "password": "", "interface": "eth0", @@ -35,17 +30,27 @@ This add-on allows you to set up a [Samba](https://samba.org/) server to access } ``` -Configuration variables: - -- **name** (*Optional*): Set netbios name of Hass.io device. Default is `hassio`. -- **workgroup** (*Optional*): Set network workgroup name. Default is `WORKGROUP`. -- **guest** (*Optional*): Allow login without a username or password. Default is `true`. -- **map** (*Optional*): Control which folders will be exposed. `config` shares the Home Assistant configuration folder. `addons` shares the local custom repository. `share` shares a folder that can be accessed by add-ons and Home Assistant. `backup` shares access to snapshot files. `ssl` shares certificate storage. Be careful with the `ssl` option! Defaults are all set to `true`, except for `ssl`. -- **username** (*Optional*): Username for logging in if guest login is not used. -- **password** (*Optional*): Password for `username`. An empty password is not supported. -- **interface** (*Optional*): Interface that will start the share. Normally this is `eth0` for ethernet wired connection and `wlan0` for wireless connection. If you are running on an Intel NUC this could also be `enp3s0` for ethernet or `wlp5s0` for wireless connection. -- **allow_hosts** (*Optional*): The hosts that are allowed to connect to your Samba server. By default it is limited to people within the same local network. - --Be careful when setting up port forwarding to the remote access. If you don't restrict access by requiring authentication and guest access is enabled, your configuration could be exposed to the internet! -
+{% configuration %} +workgroup: + description: Set network workgroup name. + required: false + default: "`WORKGROUP`" + type: string +username: + description: Username for logging in. + required: true + type: string +password: + description: Password for `username`. An empty password is not supported. + required: true + type: string +interface: + description: Interface that will start the share. Normally this is `eth0` for ethernet wired connection and `wlan0` for wireless connection. If you are running on an Intel NUC this could also be `enp3s0` for ethernet or `wlp5s0` for wireless connection. + required: false + type: string +allow_hosts: + description: The hosts that are allowed to connect to your Samba server. By default it is limited to people within the same local network. + required: false + default: '`["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]`' + type: list +{% endconfiguration %} diff --git a/source/_addons/snips.markdown b/source/_addons/snips.markdown index b002ff1a4a1..d8d1255bfe1 100644 --- a/source/_addons/snips.markdown +++ b/source/_addons/snips.markdown @@ -11,7 +11,9 @@ footer: true [Snips.ai](https://snips.ai/) is an AI-powered voice assistant that runs on the Raspberry Pi 3 and x86 platforms. It runs on-device and is Private by Design. +The Snips add-on depends on the Mosquitto add on to bridge to Home Assistant, so make sure that is installed. +
Home Assistant comes with certain Intents builtin to handle common tasks. A complete list of Intents can be found in this wiki [Hass Snips Bundle](https://github.com/tschmidty69/hass-snips-bundle-intents/wiki). @@ -25,7 +27,7 @@ Open garage door What is on my shopping list ``` -To get started creating your own configuration, follow [their tutorial](https://snips.gitbook.io/documentation/console) to create an assistant and download the training data. You can also add the Home Assistant Skill to your assistant to enable the built-in intents, and add or create your own intents to do more complex tasks. +To get started creating your own configuration, follow [their tutorial](https://docs.snips.ai/getting-started/quick-start-console) to create an assistant and download the training data. You can also add the Home Assistant Skill to your assistant to enable the built-in intents, and add or create your own intents to do more complex tasks. Now install and activate the [Samba](/addons/samba/) add-on so you can upload your training data. Connect to the "share" Samba share and copy your assistant over. Name the file `assistant.zip` or whatever you have configured in the configuration options. @@ -49,13 +51,20 @@ Now it's time to start Snips for the first time. You can configure the microphon } ``` -Configuration variables: - -- **mqtt_bridge**: Snips uses MQTT to communicate and defaults to their own broker. Use this config option to bridge their broker to your the Mosquitto add-on. -- **assistant**: The name of your custom assistant in `/share`. If no assistant is found then a default assistant will be used. -- **language**: Language. This is used to select the default custom assistant, Currently `en`, `de` and `fr` are supported. -- **custom_tts**: Whether to use a TTS provider from Home Assistant for a variety of voices. -- **tts_platform**: Which TTS platform to use. +{% configuration %} +assistant: + description: The name of your custom assistant in `/share`. If no assistant is found then a default assistant will be used. + type: string +language: + description: Language. This is used to select the default custom assistant, Currently `en`, `de` and `fr` are supported. + type: string +custom_tts: + description: Whether to use a TTS provider from Home Assistant for a variety of voices. + type: boolean +tts_platform: + description: Which TTS platform to use. + type: string +{% endconfiguration %} ### {% linkable_title Home Assistant configuration %} @@ -88,6 +97,7 @@ Next create a weather sensor, e.g., one for (Dark Sky)[/components/sensor.darksk - temperature_max - temperature_min ``` + Next add this to your `configuration.yaml` file to reference a new `intent_script` component. This is a good practice to [split your configuration files](/docs/configuration/splitting_configuration/) up. ```yaml @@ -97,6 +107,7 @@ intent_script: !include intent_script.yaml Finally, create this `intent_script.yaml` file in your configuration directory. {% raw %} + ```yaml searchWeatherForecast: speech: @@ -109,6 +120,7 @@ searchWeatherForecast: {{ states('sensor.dark_sky_weather_daily_high_temperature') | round(0)}} and {{ states('sensor.dark_sky_weather_hourly_summary') }} ``` + {% endraw %} Now just restart HassIO and ask it what the weather is like. diff --git a/source/_addons/ssh.markdown b/source/_addons/ssh.markdown index 0fa91e88684..ad50f2d3176 100644 --- a/source/_addons/ssh.markdown +++ b/source/_addons/ssh.markdown @@ -22,7 +22,7 @@ This add-on will not enable you to install packages or do anything as root. This To use this add-on, you must have a private/public key to log in. To generate them, follow the [instructions for Windows][win] and [these for other platforms][other]. It is possible to set a password for login since version 2.0 but for high security use private/public keys. You can not run both variants at the same time. -To start this add-on for the first time, you either need to include a key (enclosed in quotation marks, on a single line without line breaks) or set a password in the options section. +To start this add-on for the first time, you either need to include a key (enclosed in quotation marks, on a single line without line breaks) or set a password in the options section. ```json { @@ -37,11 +37,16 @@ The username for login over SSH is `root`. The complete login command is `ssh ro After logging in, you will find yourself in this add-on's container. The Home Assistant configuration directory is mounted on the path `/config`. -Configuration variables: - -- **authorized_keys** (*Optional*): Your public keys for the authorized key file. Every element will be a line inside that file. -- **password** (*Optional*): Set a password for login. We do **NOT** recommend this variant. - +{% configuration %} +authorized_keys: + description: Your public keys for the authorized key file. Every element will be a line inside that file. + required: false + type: string +password: + description: Set a password for login. We do **NOT** recommend this variant. + required: false + type: string +{% endconfiguration %}- Use [Home Assistant Cloud](/components/cloud/) to integrate with Alexa without any effort. -
+## {% linkable_title Automatic setup via Home Assistant Cloud %} + +With [Home Assistant Cloud](/cloud/), you can connect your Home Assistant instance in a few simple clicks to Amazon Alexa. With Home Assistant Cloud you don't have to deal with dynamic DNS, SSL certificates or opening ports on your router. Just log in via the user interface and a secure connection with the cloud will be established. Home Assistant Cloud requires a paid subscription after a 30-day free trial. + +For Home Assistant Cloud Users, documentation can be found [here](https://www.nabucasa.com/config/amazon_alexa/). + +## {% linkable_title Manual setup %} There are a few ways that you can use Amazon Echo and Home Assistant together. @@ -50,16 +54,16 @@ Additionally, note that at the time of this writing, your Alexa skill endpoint * To get started with Alexa skills: - - Log in to [Amazon developer console][amazon-dev-console] - - Click the Alexa button at the top of the console - - Click the yellow "Add a new skill" button in the top right - - Skill Type: Custom Interaction Model (default) - - Name: Home Assistant - - Invocation name: home assistant (or be creative, up to you) - - Version: 1.0 - - Endpoint: - - https - - `https://YOUR_HOST/api/alexa?api_password=YOUR_API_PASSWORD` +- Log in to [Amazon developer console][amazon-dev-console] +- Click the Alexa button at the top of the console +- Click the yellow "Add a new skill" button in the top right + - Skill Type: Custom Interaction Model (default) + - Name: Home Assistant + - Invocation name: home assistant (or be creative, up to you) + - Version: 1.0 + - Endpoint: + - https + - `https://YOUR_HOST/api/alexa?api_password=YOUR_API_PASSWORD` You can use this [specially sized Home Assistant logo][large-icon] as the large icon and [this one][small-icon] as the small one. @@ -99,14 +103,14 @@ WhereAreWeIntent where we are This means that we can now ask Alexa things like: - - Alexa, ask Home Assistant where Paul is - - Alexa, ask Home Assistant where we are +- Alexa, ask Home Assistant where Paul is +- Alexa, ask Home Assistant where we are ## {% linkable_title Configuring Home Assistant %} When activated, the Alexa component will have Home Assistant's native intent support handle the incoming intents. If you want to run actions based on intents, use the [`intent_script`](/components/intent_script) component. -To enable Alexa add the following entry to your `configuration.yaml` file: +To enable Alexa, add the following entry to your `configuration.yaml` file: ```yaml alexa: @@ -218,15 +222,16 @@ intent_script: Now say `Alexa ask Home Assistant to run+If you get `ConnectionRefusedError: Connection refused` errors in the Home assistant logs, ensure the [APCUPSd](http://www.apcupsd.org/) configuration directives used by its Network Information Server is set to permit connections from all addresses [NISIP 0.0.0.0](http://www.apcupsd.org/manual/manual.html#configuration-directives-used-by-the-network-information-server), else non-local addesses will not connect. This includes Hass.io running in Docker, even when hosted on the same machine or a virtual machine. +
diff --git a/source/_components/asuswrt.markdown b/source/_components/asuswrt.markdown new file mode 100644 index 00000000000..486ec51086a --- /dev/null +++ b/source/_components/asuswrt.markdown @@ -0,0 +1,70 @@ +--- +layout: page +title: "Asuswrt" +description: "Instructions on how to integrate Asuswrt into Home Assistant." +date: 2017-01-05 17:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: asus.png +ha_category: Hub +ha_release: 0.83 +ha_iot_class: "Local Polling" +--- + +The `asuswrt` component is the main component to connect to a [ASUSWRT](http://event.asus.com/2013/nw/ASUSWRT/) based router. + +## {% linkable_title Configuration %} + +To use an ASUSWRT router in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +asuswrt: + host: YOUR_ROUTER_IP + username: YOUR_ADMIN_USERNAME +``` + +{% configuration %} +host: + description: "The IP address of your router, eg. `192.168.1.1`." + required: true + type: string +username: + description: "The username of a user with administrative privileges, usually `admin`." + required: true + type: string +password: + description: "The password for your given admin account (use this if no SSH key is given)." + required: false + type: string +protocol: + description: "The protocol (`ssh` or `telnet`) to use." + required: false + type: string + default: ssh +port: + description: SSH port to use. + required: false + type: integer + default: 22 +mode: + description: "The operating mode of the router (`router` or `ap`)." + required: false + type: string + default: router +ssh_key: + description: The path to your SSH private key file associated with your given admin account (instead of password). + required: false + type: string +require_ip: + description: If the router is in access point mode. + required: false + type: boolean + default: true +{% endconfiguration %} + ++You need to [enable telnet](https://www.asus.com/support/faq/1005449/) on your router if you choose to use `protocol: telnet`. +
\ No newline at end of file diff --git a/source/_components/binary_sensor.command_line.markdown b/source/_components/binary_sensor.command_line.markdown index 8f499766a42..da5435b7d9f 100644 --- a/source/_components/binary_sensor.command_line.markdown +++ b/source/_components/binary_sensor.command_line.markdown @@ -23,9 +23,11 @@ To use your Command binary sensor in your installation, add the following to you # Example configuration.yaml entry binary_sensor: - platform: command_line - command: cat /proc/sys/net/ipv4/ip_forward + command: 'cat /proc/sys/net/ipv4/ip_forward' ``` - ++It's highly recommended to enclose the command in single quotes `'` as it ensures all characters can be used in the command and reduces the risk of unintentional escaping. To include a single quote in a command enclosed in single quotes, double it: `''`. +
{% configuration %} command: description: The action to take to get the value. @@ -78,7 +80,7 @@ Check the state of an [SickRage](https://github.com/sickragetv/sickrage) instanc # Example configuration.yaml entry binary_sensor: - platform: command_line - command: netstat -na | find "33322" | find /c "LISTENING" > nul && (echo "Running") || (echo "Not running") + command: 'netstat -na | find "33322" | find /c "LISTENING" > nul && (echo "Running") || (echo "Not running")' name: 'sickragerunning' device_class: moving payload_on: "Running" @@ -105,7 +107,7 @@ An alternative solution could look like this: binary_sensor: - platform: command_line name: Printer - command: ping -W 1 -c 1 192.168.1.10 > /dev/null 2>&1 && echo success || echo fail + command: 'ping -W 1 -c 1 192.168.1.10 > /dev/null 2>&1 && echo success || echo fail' device_class: connectivity payload_on: "success" payload_off: "fail" @@ -134,5 +136,3 @@ binary_sensor: payload_on: 'active' payload_off: 'inactive' ``` - -Note: Use single quotes! diff --git a/source/_components/binary_sensor.fibaro.markdown b/source/_components/binary_sensor.fibaro.markdown new file mode 100644 index 00000000000..56c0e7086e2 --- /dev/null +++ b/source/_components/binary_sensor.fibaro.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "Fibaro Binary Sensor" +description: "Instructions on how to integrate Fibaro binary sensors into Home Assistant." +date: 2018-11-14 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: fibaro.png +ha_category: Binary Sensor +ha_iot_class: "Local Push" +ha_release: 0.83 +--- + +The `fibaro` platform allows you to get data from your [Fibaro](http://fibaro.com/) binary sensors connected to your Fibaro HCL or HC2 from within Home Assistant. + +They will be automatically discovered if the `fibaro` component is loaded. diff --git a/source/_components/binary_sensor.flic.markdown b/source/_components/binary_sensor.flic.markdown index dd70d2eb4cd..ef22b9b5e8e 100644 --- a/source/_components/binary_sensor.flic.markdown +++ b/source/_components/binary_sensor.flic.markdown @@ -19,7 +19,7 @@ The platform does not directly interact with the buttons, *but communicates with #### {% linkable_title Service setup %} -If you are using Hass.io, you can run the service locally by [installing](https://www.home-assistant.io/hassio/installing_third_party_addons/) the flicd add-on from [pschmitt's repository](https://github.com/pschmitt/hassio-addons). On a Hass.io installation that's not yet based on HassOS, you also need to install the [bluetooth add-on](/addons/bluetooth_bcm43xx/). +If you are using Hass.io, you can run the service locally by [installing](/hassio/installing_third_party_addons/) the flicd add-on from [pschmitt's repository](https://github.com/pschmitt/hassio-addons). On a Hass.io installation that's not yet based on HassOS, you also need to install the [bluetooth add-on](/addons/bluetooth_bcm43xx/). For instructions on how to install the service manually, visit the GitHub repository of the service for [Linux](https://github.com/50ButtonsEach/fliclib-linux-hci), [OS X](https://github.com/50ButtonsEach/flic-service-osx) or [Windows](https://github.com/50ButtonsEach/fliclib-windows). diff --git a/source/_components/binary_sensor.http.markdown b/source/_components/binary_sensor.http.markdown index 779cafb95e2..36ee7eba9e0 100644 --- a/source/_components/binary_sensor.http.markdown +++ b/source/_components/binary_sensor.http.markdown @@ -10,6 +10,7 @@ footer: true logo: http.png ha_category: Binary Sensor ha_release: pre 0.7 +ha_qa_scale: internal --- The HTTP binary sensor is dynamically created with the first request that is made to its URL. You don't have to define it in the configuration first. diff --git a/source/_components/binary_sensor.ihc.markdown b/source/_components/binary_sensor.ihc.markdown index b05f2e3e8e1..215b0d1bd64 100644 --- a/source/_components/binary_sensor.ihc.markdown +++ b/source/_components/binary_sensor.ihc.markdown @@ -29,23 +29,26 @@ be found in the IHC project and setup as binary sensors: ## {% linkable_title Manual configuration %} -To manually configure IHC Binary Sensors -insert this section in your configuration: +To manually configure IHC Binary Sensors insert the "binary_sensor" section in your IHC configuration: ```yaml -binary_sensor: - - platform: ihc - binary_sensors: +# Example configuration.yaml entry +ihc: + - url: 'http://192.168.1.3' + username: YOUR_USERNAME + password: YOUR_PASSWORD + info: true + binary_sensor: - id: 12345 - name: mysensor - type: opening - inverting: True - - id: 12346 - ... + name: switch_front_door + inverting: false + note: Magnet contact + position: Switch in door + type: door ``` {% configuration %} -binary_sensors: +binary_sensor: description: List of binary sensors to setup manually. required: false type: map @@ -60,7 +63,7 @@ binary_sensors: type: boolean default: false name: - description: The name of the component + description: The name of the sensor. required: false type: string type: @@ -70,6 +73,14 @@ binary_sensors: for available types. required: false type: string + note: + description: Descriptive note + required: false + type: string + position: + description: Where is it placed + required: false + type: string {% endconfiguration %} The resource id should be an id of a boolean IHC resource. For more information diff --git a/source/_components/binary_sensor.iss.markdown b/source/_components/binary_sensor.iss.markdown index 4e57b55a20f..e87fbccf8ba 100644 --- a/source/_components/binary_sensor.iss.markdown +++ b/source/_components/binary_sensor.iss.markdown @@ -53,7 +53,7 @@ The default name of the location attributes is `lat` and `long` to avoid showing ### {% linkable_title Show position on map with camera platform %} The [generic camera platform](/components/camera.mjpeg/) offers -the possibility to show the location of the ISS on Google Maps. +the possibility to show the location of the ISS on OpenStreetMap. {% raw %} ```yaml diff --git a/source/_components/binary_sensor.lupusec.markdown b/source/_components/binary_sensor.lupusec.markdown new file mode 100644 index 00000000000..60ab3e5da88 --- /dev/null +++ b/source/_components/binary_sensor.lupusec.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Lupusec Binary Sensor" +description: "Instructions on how to integrate Lupusec binary sensors into Home Assistant." +date: 2018-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lupusec.png +ha_category: Binary Sensor +ha_release: 0.83 +ha_iot_class: "Local Polling" +--- + +The `lupusec` security control panel platform allows you to control your [Lupusec](https://www.lupus-electronics.de) devices. + +This platform will add `door contacts` and `window contacts` to your Home Assistant setup. + +For the sensors to work you have to setup your [`lupusec` component](/components/lupusec/). diff --git a/source/_components/binary_sensor.mqtt.markdown b/source/_components/binary_sensor.mqtt.markdown index 132c59298e0..d972e37862c 100644 --- a/source/_components/binary_sensor.mqtt.markdown +++ b/source/_components/binary_sensor.mqtt.markdown @@ -13,28 +13,15 @@ ha_release: 0.9 ha_iot_class: "depends" --- -The `mqtt` binary sensor platform uses an MQTT message payload -to set the binary sensor to one of two states: `on` or `off`. +The `mqtt` binary sensor platform uses an MQTT message payload to set the binary sensor to one of two states: `on` or `off`. -The binary sensor state will be updated only after a new message is published on -`state_topic` matching `payload_on` or `payload_off`. -If these messages are published with the `retain` flag set, -the binary sensor will receive an instant state update after subscription and -Home Assistant will display the correct state on startup. +The binary sensor state will be updated only after a new message is published on `state_topic` matching `payload_on` or `payload_off`. If these messages are published with the `retain` flag set, +the binary sensor will receive an instant state update after subscription and Home Assistant will display the correct state on startup. Otherwise, the initial state displayed in Home Assistant will be `unknown`. ## {% linkable_title Configuration %} -The `mqtt` binary sensor platform optionally supports an `availability_topic` to -receive online and offline messages (birth and LWT messages) from the MQTT -device. During normal operation, if the MQTT cover device goes offline -(i.e., publishes `payload_not_available` to `availability_topic`), Home -Assistant will display the binary sensor as `unavailable`. If these messages are -published with the `retain` flag set, the binary sensor will receive an instant -update after subscription and Home Assistant will display the correct -availability state of the binary sensor when Home Assistant starts up. -If the `retain` flag is not set, Home Assistant will display the binary sensor -as `unavailable` when Home Assistant starts up. If no `availability_topic` +The `mqtt` binary sensor platform optionally supports an `availability_topic` to receive online and offline messages (birth and LWT messages) from the MQTT device. During normal operation, if the MQTT sensor device goes offline (i.e., publishes `payload_not_available` to `availability_topic`), Home Assistant will display the binary sensor as `unavailable`. If these messages are published with the `retain` flag set, the binary sensor will receive an instant update after subscription and Home Assistant will display the correct availability state of the binary sensor when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the binary sensor as `unavailable` when Home Assistant starts up. If no `availability_topic` is defined, Home Assistant will consider the MQTT device to be available. To use an MQTT binary sensor in your installation, @@ -48,15 +35,15 @@ binary_sensor: ``` {% configuration %} +state_topic: + description: The MQTT topic subscribed to receive sensor values. + required: true + type: string name: description: The name of the binary sensor. required: false type: string default: MQTT Binary Sensor -state_topic: - description: The MQTT topic subscribed to receive sensor values. - required: true - type: string payload_on: description: The payload that represents the on state. required: false @@ -68,11 +55,7 @@ payload_off: type: string default: "OFF" availability_topic: - description: > - The MQTT topic subscribed to receive birth and LWT messages from the MQTT - device. If `availability_topic` is not defined, the binary sensor availability - state will always be `available`. If `availability_topic` is defined, - the binary sensor availability state will be `unavailable` by default. + description: "The MQTT topic subscribed to receive birth and LWT messages from the MQTT device. If `availability_topic` is not defined, the binary sensor availability state will always be `available`. If `availability_topic` is defined, the binary sensor availability state will be `unavailable` by default." required: false type: string payload_available: @@ -85,65 +68,63 @@ payload_not_available: required: false type: string default: offline +json_attributes_topic: + description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. + reqired: false + type: string qos: description: The maximum QoS level to be used when receiving messages. required: false type: integer default: 0 unique_id: - description: > - An ID that uniquely identifies this sensor. If two sensors have - the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this sensor. If two sensors have the same unique ID, Home Assistant will raise an exception. required: false type: string device_class: - description: > - The [type/class](/components/binary_sensor/) of - the sensor to set the icon in the frontend. + description: The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. required: false type: string value_template: - description: > - Defines a [template](/docs/configuration/templating/#processing-incoming-data) - to extract a value from the payload. + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. Available variables: `entity_id`." required: false type: string force_update: description: Sends update events even if the value hasn't changed. Useful if you want to have meaningful value graphs in history. required: false type: boolean - default: False + default: false off_delay: - description: For sensors that only sends ‘On’ state updates, this variable sets a delay in seconds after which the sensor state will be updated back to ‘Off’. + description: "For sensors that only sends `On` state updates, this variable sets a delay in seconds after which the sensor state will be updated back to `Off`." required: false type: integer device: - description: 'Information about the device this binary sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + description: "Information about the device this binary sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set." required: false type: map keys: identifiers: - description: 'A list of IDs that uniquely identify the device. For example a serial number.' + description: A list of IDs that uniquely identify the device. For example a serial number. required: false type: list, string connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + description: "A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `'connections': ['mac', '02:5b:26:a8:dc:12']`." required: false type: list, tuple manufacturer: - description: 'The manufacturer of the device.' + description: The manufacturer of the device. required: false type: string model: - description: 'The model of the device.' + description: The model of the device. required: false type: string name: - description: 'The name of the device.' + description: The name of the device. required: false type: string sw_version: - description: 'The firmware version of the device.' + description: The firmware version of the device. required: false type: string {% endconfiguration %} @@ -154,8 +135,8 @@ In this section, you will find some real-life examples of how to use this sensor ### {% linkable_title Full configuration %} -To test, you can use the command line tool `mosquitto_pub` shipped with -`mosquitto` or the `mosquitto-clients` package to send MQTT messages. +To test, you can use the command line tool `mosquitto_pub` shipped with `mosquitto` or the `mosquitto-clients` package to send MQTT messages. + To set the state of the binary sensor manually: ```bash @@ -182,20 +163,24 @@ binary_sensor: ``` {% endraw %} +### {% linkable_title Toggle the binary sensor each time a message is received on state_topic %} +{% raw %} +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: mqtt + state_topic: "lab_button/cmnd/POWER" + value_template: "{%if is_state(entity_id,\"on\")-%}OFF{%-else-%}ON{%-endif%}" +``` +{% endraw %} + ### {% linkable_title Get the state of a device with ESPEasy %} -Assuming that you have flashed your ESP8266 unit with -[ESPEasy](https://github.com/letscontrolit/ESPEasy). -Under "Config" is a name ("Unit Name:") set for your device -(here it's "bathroom"). A configuration for a "Controller" for MQTT with the -protocol "OpenHAB MQTT" is present and the entries ("Controller Subscribe:" and -"Controller Publish:") are adjusted to match your needs. -In this example, the topics are prefixed with "home". Also, add a "Switch Input" -in the "Devices" tap with the name "switch" and "button" as value. +Assuming that you have flashed your ESP8266 unit with [ESPEasy](https://github.com/letscontrolit/ESPEasy). Under "Config" is a name ("Unit Name:") set for your device (here it's "bathroom"). A configuration for a "Controller" for MQTT with the protocol "OpenHAB MQTT" is present and the entries ("Controller Subscribe:" and "Controller Publish:") are adjusted to match your needs. In this example, the topics are prefixed with "home". Also, add a "Switch Input" in the "Devices" tap with the name "switch" and "button" as value. As soon as the unit is online, you will get the state of the attached button. -```bash +``` home/bathroom/status Connected ... home/bathroom/switch/button 1 @@ -203,7 +188,6 @@ home/bathroom/switch/button 1 The configuration will look like the example below: -{% raw %} ```yaml # Example configuration.yaml entry binary_sensor: @@ -213,4 +197,3 @@ binary_sensor: payload_on: "1" payload_off: "0" ``` -{% endraw %} diff --git a/source/_components/binary_sensor.ness_alarm.markdown b/source/_components/binary_sensor.ness_alarm.markdown new file mode 100644 index 00000000000..cc07923491b --- /dev/null +++ b/source/_components/binary_sensor.ness_alarm.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "Ness Alarm Binary Sensor" +description: "Instructions on how to setup the Ness alarm zones within Home Assistant." +date: 2018-11-25 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ness.png +ha_category: Binary Sensor +ha_release: 0.85 +ha_iot_class: "Local Push" +--- + +The `ness_alarm` binary sensor allows you to monitor your [Ness](http://nesscorporation.com/) D8x and D16x alarm zones. + +Zone binary sensors are automatically added by configuring the [Ness alarm](/components/ness_alarm/) component. diff --git a/source/_components/binary_sensor.pilight.markdown b/source/_components/binary_sensor.pilight.markdown index b8ac54c1e97..b539a5b2778 100644 --- a/source/_components/binary_sensor.pilight.markdown +++ b/source/_components/binary_sensor.pilight.markdown @@ -49,11 +49,11 @@ name: payload_on: description: "Variable `on` value. The component will recognize this as logical '1'." required: false - type: string + type: [string, float, integer] payload_off: description: "Variable `off` value. The component will recognize this as logical '0'." required: false - type: string + type: [string, float, integer] disarm_after_trigger: description: Configure sensor as trigger type. required: false @@ -80,6 +80,6 @@ binary_sensor: payload: unitcode: 371399 payload_on: 'closed' - disarm_after_trigger: True + disarm_after_trigger: true reset_delay_sec: 30 ``` diff --git a/source/_components/binary_sensor.ping.markdown b/source/_components/binary_sensor.ping.markdown index 0a8d1390908..3121bf86333 100644 --- a/source/_components/binary_sensor.ping.markdown +++ b/source/_components/binary_sensor.ping.markdown @@ -13,7 +13,7 @@ ha_release: 0.43 ha_qa_scale: internal --- -The `ping` binary sensor platform allows you to using `ping` to send ICMP echo requests. This way you can check if a given host is online and determine the round trip times from your Home Assistant instance to that system. +The `ping` binary sensor platform allows you to use `ping` to send ICMP echo requests. This way you can check if a given host is online and determine the round trip times from your Home Assistant instance to that system. ## {% linkable_title Configuration %} diff --git a/source/_components/binary_sensor.point.markdown b/source/_components/binary_sensor.point.markdown new file mode 100644 index 00000000000..f12d9275172 --- /dev/null +++ b/source/_components/binary_sensor.point.markdown @@ -0,0 +1,35 @@ +--- +layout: page +title: "Minut Point Binary Sensor" +description: "Access your Minut Point Events as binary sensors." +date: 2018-11-19 +sidebar: true +comments: false +sharing: true +footer: true +logo: minut.svg +ha_category: Binary Sensor +ha_release: "0.83" +ha_iot_class: "Cloud Push" +ha_qa_scale: silver +--- + +Each Point exposes the following binary sensors: + +- **battery**: `On` means low, `Off` means normal +- **button_press**: `On` means the button was pressed, `Off` means normal +- **cold**: `On` means cold, `Off` means normal +- **connectivity**: `On` means connected, `Off` means disconnected +- **dry**: `On` means too dry, `Off` means normal +- **heat**: `On` means hot, `Off` means normal +- **light**: `On` means light detected, `Off` means no light +- **moisture**: `On` means moisture detected (wet), `Off` means no moisture (dry) +- **motion**: `On` means motion detected, `Off` means no motion (clear) +- **sound**: `On` means sound detected, `Off` means no sound (clear) +- **tamper**: `On` means the point was removed or attached + +For installation instructions, see [the Point component](/components/point/). + ++The events sent from the Point is also sent as a webhook back to Home Assistant with `event_type` as `point_webhook_received`, please consider the documentation for the [IFTT](/components/ifttt/) component on how to write automations for webhooks. +
diff --git a/source/_components/binary_sensor.rainmachine.markdown b/source/_components/binary_sensor.rainmachine.markdown index 0a3072ad0b6..1cf2b676306 100644 --- a/source/_components/binary_sensor.rainmachine.markdown +++ b/source/_components/binary_sensor.rainmachine.markdown @@ -17,7 +17,7 @@ The `rainmachine` binary sensor platform allows you to view crucial sensor data within a [RainMachine smart Wi-Fi sprinkler controller](http://www.rainmachine.com/).-You must have the [RainMachine component](https://www.home-assistant.io/components/rainmachine/) +You must have the [RainMachine component](/components/rainmachine/) configured to use this platform. After configuring that component, binary sensors automatically appear.
diff --git a/source/_components/binary_sensor.sense.markdown b/source/_components/binary_sensor.sense.markdown new file mode 100644 index 00000000000..f6639056748 --- /dev/null +++ b/source/_components/binary_sensor.sense.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "Sense binary sensors" +description: "Instructions on how to integrate Sense binary sensors into Home Assistant." +date: 2018-11-14 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: sense.png +ha_category: Energy +ha_iot_class: "Cloud Polling" +ha_release: 0.82 +--- + +The `Sense` platform allows you to get data from your [Sense](http://Sense.com/). + +They will be automatically discovered if the `sense` component is loaded. diff --git a/source/_components/binary_sensor.template.markdown b/source/_components/binary_sensor.template.markdown index 4462349926f..5fe812ac1e4 100644 --- a/source/_components/binary_sensor.template.markdown +++ b/source/_components/binary_sensor.template.markdown @@ -14,14 +14,13 @@ logo: home-assistant.png ha_qa_scale: internal --- -The `template` platform supports sensors which break out the `state` and -`state_attributes` from other entities. The state of a Template Binary Sensor -can only be `on` or `off`. +The `template` platform supports binary sensors which get their values from +other entities. The state of a Template Binary Sensor can only be `on` or +`off`. ## {% linkable_title Configuration %} -To enable Template Binary Sensors in your installation, add the following to -your `configuration.yaml` file: +Here is an example of adding a Template Binary Sensor to the `configuration.yaml` file: {% raw %} ```yaml @@ -84,6 +83,8 @@ sensors: ## {% linkable_title Considerations %} +### Startup + If you are using the state of a platform that takes extra time to load, the Template Binary Sensor may get an `unknown` state during startup. This results in error messages in your log file until that platform has completed loading. @@ -94,6 +95,14 @@ with this equivalent that returns `true`/`false` and never gives an unknown result: {% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %} +### Entity IDs + +The template engine will attempt to work out what entities should trigger an +update of the sensor. This can fail, for example if your template loops over +the contents of a group. In this case you can use `entity_id` to provide a +list of entity IDs that will cause the sensor to update or you can run the +service `homeassistant.update_entity` to update the sensor at will. + ## {% linkable_title Examples %} In this section you find some real-life examples of how to use this sensor. @@ -106,7 +115,7 @@ determine if the furnace is running by checking that it is over some threshold: {% raw %} ```yaml -sensor: +binary_sensor: - platform: template sensors: furnace_on: diff --git a/source/_components/binary_sensor.trend.markdown b/source/_components/binary_sensor.trend.markdown index f110c9ca04c..564d444f45f 100644 --- a/source/_components/binary_sensor.trend.markdown +++ b/source/_components/binary_sensor.trend.markdown @@ -52,7 +52,7 @@ sensors: type: string device_class: description: > - The [type/class](/components/binary_sensor/) of + The [type/class](/components/binary_sensor/#device-class) of the sensor to set the icon in the frontend. required: false type: string diff --git a/source/_components/binary_sensor.w800rf32.markdown b/source/_components/binary_sensor.w800rf32.markdown new file mode 100644 index 00000000000..b4cdfae4176 --- /dev/null +++ b/source/_components/binary_sensor.w800rf32.markdown @@ -0,0 +1,69 @@ +--- +layout: page +title: "W800rf32 Binary Sensor" +description: "Instructions on how to integrate W800rf32 binary sensors into Home Assistant." +date: 2018-10-16 12:45 +sidebar: true +comments: false +sharing: true +footer: true +logo: w800rf32.png +ha_category: Binary Sensor +ha_release: 0.83 +ha_iot_class: "Local Push" +--- + +The `w800rf32` platform supports X10 RF binary sensors such as Palm Pad +remotes, key chain remotes, Hawkeye motion detectors, and many, many other X10 RF devices. +Some that have specifically been used with this are the KR19A keychain, MS16A motion detector +and the RSS18 four button wall mount keypad. + +# Setting up your devices + +Once you have set up your [w800rf32 hub](/components/w800rf32/), add the +binary sensors to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: w800rf32 + devices: + a1: + name: motion_hall + a2: + name: motion_kitchen +``` + +{% configuration %} +devices: + description: A list of devices. + required: true + type: map + keys: + name: + description: Override the name to use in the frontend. + required: false + type: string + device_class: + description: "The [type or class of the sensor](/components/binary_sensor/) to set the icon in the frontend." + required: false + type: device_class + off_delay: + description: For sensors that only sends 'On' state updates, this variable sets a delay after which the sensor state will be updated back to 'Off'. + required: false + type: integer +{% endconfiguration %} + + +Binary sensors have only two states - "on" and "off". Many door or window +opening sensors will send a signal each time the door/window is open or closed. +However, depending on their hardware or on their purpose, +some sensors are only able to signal their "on" state: + +- Most motion sensors send a signal each time they detect motion. They stay "on" for a few seconds and go back to sleep, ready to signal other motion events. Usually, they do not send a signal when they go back to sleep. + +For those devices, use the *off_delay* parameter. +It defines a delay after which a device will go back to an "Off" state. +That "Off" state will be fired internally by Home Assistant, just as if +the device fired it by itself. If a motion sensor can only send signals +once every 5 seconds, sets the *off_delay* parameter to *seconds: 5*. diff --git a/source/_components/binary_sensor.wemo.markdown b/source/_components/binary_sensor.wemo.markdown index 48fd97bc842..0af2fc06c20 100644 --- a/source/_components/binary_sensor.wemo.markdown +++ b/source/_components/binary_sensor.wemo.markdown @@ -13,8 +13,6 @@ ha_iot_class: "Local Push" ha_release: 0.14 --- -The `wemo` platform allows you to integrate your Belkin WeMo Binary Sensor from within Home Assistant. +The `wemo` platform allows you to monitor your Belkin WeMo Binary Sensor from within Home Assistant. -They will be automatically discovered if the discovery component is enabled. - -For more configuration information see the [WeMo component](/components/wemo/) documentation. +WeMo devices are automatically discovered if the `discovery` component is enabled. For more configuration information, see the [WeMo component](/components/wemo/) documentation. diff --git a/source/_components/binary_sensor.workday.markdown b/source/_components/binary_sensor.workday.markdown index 1427b7e0ad4..75cd8c6e271 100644 --- a/source/_components/binary_sensor.workday.markdown +++ b/source/_components/binary_sensor.workday.markdown @@ -14,19 +14,16 @@ ha_release: 0.41 ha_qa_scale: internal --- -The `workday` binary sensor indicates, whether the current day is a workday or -not. It allows specifying, which days of the week counts as workdays and also -uses the python module [holidays](https://pypi.python.org/pypi/holidays) -to incorporate information about region-specific public holidays. +The `workday` binary sensor indicates, whether the current day is a workday or not. It allows specifying, which days of the week counts as workdays and also +uses the python module [holidays](https://pypi.python.org/pypi/holidays) to incorporate information about region-specific public holidays. + +## {% linkable_title Setup %} + +Check the [country list](https://github.com/dr-prodigy/python-holidays#available-countries) for available province. ## {% linkable_title Configuration %} -Check the -[country list](https://github.com/dr-prodigy/python-holidays#available-countries) -for available province. - -To enable the `workday` sensor in your installation, -add the following to your `configuration.yaml` file: +To enable the `workday` sensor in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -44,14 +41,11 @@ name: default: Workday Sensor country: description: > - Country code according to - [holidays](https://pypi.org/project/holidays/) notation. + Country code according to [holidays](https://pypi.org/project/holidays/) notation. required: true type: string province: - description: > - Province code according to - [holidays](https://pypi.org/project/holidays/) notation. + description: Province code according to [holidays](https://pypi.org/project/holidays/) notation. required: false type: string workdays: @@ -65,7 +59,7 @@ excludes: type: list default: "[sat, sun, holiday]" days_offset: - description: Set days offset. + description: Set days offset (e.g., -1 for yesterday, 1 for tomorrow). required: false type: integer default: 0 @@ -102,7 +96,6 @@ automation: ```-Please remember that [as explained here][devices] you can only have a single `automation:` entry. Add the automation to your existing automations. +Please remember that [as explained here](/docs/configuration/devices/) you can only have a single `automation:` entry. Add the automation to your existing automations.
-[devices]: https://www.home-assistant.io/docs/configuration/devices/ diff --git a/source/_components/binary_sensor.xiaomi_aqara.markdown b/source/_components/binary_sensor.xiaomi_aqara.markdown index 688cbf1a15d..048611866db 100644 --- a/source/_components/binary_sensor.xiaomi_aqara.markdown +++ b/source/_components/binary_sensor.xiaomi_aqara.markdown @@ -21,18 +21,20 @@ The requirement is that you have setup the [`xiaomi aqara` component](/component | Name | Zigbee entity | Model no. | States | Event | Event key | Event values | | ---- | ------------- | --------- | ------ | ----- | --------- | ------------ | -| Motion Sensor (1st gen) | motion | RTCGQ01LM | on, off | `motion` | | | -| Motion Sensor (2nd gen) | sensor_motion.aq2 | RTCGQ11LM | on, off | `motion` | | | +| Motion Sensor (1st gen) | motion | RTCGQ01LM | on, off | `xiaomi_aqara.motion` | | | +| Motion Sensor (2nd gen) | sensor_motion.aq2 | RTCGQ11LM | on, off | `xiaomi_aqara.motion` | | | | Door and Window Sensor (1st gen) | magnet | WSDCGQ01LM | on, off | | | | | Door and Window Sensor (2nd gen) | sensor_magnet.aq2 | MCCGQ11LM | on, off | | | | | Smoke Detector | smoke | JTYJ-GD-01LM/BW | on, off | | | | | Gas Leak Detector | natgas | JTQJ-BF-01LM/BW | on, off | | | | | Water Leak Sensor | sensor_wleak.aq1 | SJCGQ11LM | on, off | | | | -| Button (1st gen) | switch | WXKG01LM | on (through long_click_press), off | `click`| `click_type`| `long_click_press`, `long_click_release`, `hold`, `single`, `double` | -| Button (2nd gen) | sensor_switch.aq2, remote.b1acn01 | WXKG11LM | off (always) | `click` | `click_type` | `single`, `double` | -| Aqara Wireless Switch (Single) | 86sw1 | WXKG03LM | off (always) | `click` | `click_type` | `single` | -| Aqara Wireless Switch (Double) | 86sw2 | WXKG02LM | off (always) | `click` | `click_type` | `single`, `both` | -| Cube | cube | MFKZQ01LM | off (always) | `cube_action` | `action_type`, `action_value` (rotate) | `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swing`, `alert`, `free_fall`, `rotate` (degrees at action_value) | +| Button (1st gen) | switch | WXKG01LM | on (through long_click_press), off | `xiaomi_aqara.click`| `click_type`| `long_click_press`, `long_click_release`, `hold`, `single`, `double` | +| Button (2nd gen) | sensor_switch.aq2, remote.b1acn01 | WXKG11LM | off (always) | `xiaomi_aqara.click` | `click_type` | `single`, `double` | +| Aqara Wireless Switch (Single) | 86sw1 | WXKG03LM | off (always) | `xiaomi_aqara.click` | `click_type` | `single` | +| Aqara Wireless Switch (Double) | 86sw2 | WXKG02LM | off (always) | `xiaomi_aqara.click` | `click_type` | `single`, `both` | +| Aqara Wireless Switch (Single) (2nd gen) | remote.b186acn01 | WXKG03LM | off (always) | `xiaomi_aqara.click` | `click_type` | `single`, `double`, `long` | +| Aqara Wireless Switch (Double) (2nd gen) | remote.b286acn01 | WXKG02LM | off (always) | `xiaomi_aqara.click` | `click_type` | `single`, `double`, `long`, `both`, `double_both`, `long_both` | +| Cube | cube | MFKZQ01LM | off (always) | `xiaomi_aqara.cube_action` | `action_type`, `action_value` (rotate) | `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swing`, `alert`, `free_fall`, `rotate` (degrees at action_value) | | Vibration Sensor | vibration | DJT11LM | off (always) | `xiaomi_aqara.movement` | `movement_type` | `vibrate`, `tilt`, `free_fall` | ### {% linkable_title Automation examples %} @@ -148,7 +150,7 @@ Available events are `single`, `double`, `hold`, `long_click_press` and `long_cl - alias: Toggle dining light on single press trigger: platform: event - event_type: click + event_type: xiaomi_aqara.click event_data: entity_id: binary_sensor.switch_158d000xxxxxc2 click_type: single @@ -158,7 +160,7 @@ Available events are `single`, `double`, `hold`, `long_click_press` and `long_cl - alias: Toggle couch light on double click trigger: platform: event - event_type: click + event_type: xiaomi_aqara.click event_data: entity_id: binary_sensor.switch_158d000xxxxxc2 click_type: double @@ -168,7 +170,7 @@ Available events are `single`, `double`, `hold`, `long_click_press` and `long_cl - alias: Let a dog bark on long press trigger: platform: event - event_type: click + event_type: xiaomi_aqara.click event_data: entity_id: binary_sensor.switch_158d000xxxxxc2 click_type: long_click_press @@ -188,7 +190,7 @@ Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swi - alias: Cube event flip90 trigger: platform: event - event_type: cube_action + event_type: xiaomi_aqara.cube_action event_data: entity_id: binary_sensor.cube_15xxxxxxxxxxxx action_type: flip90 @@ -200,7 +202,7 @@ Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swi - alias: Cube event flip180 trigger: platform: event - event_type: cube_action + event_type: xiaomi_aqara.cube_action event_data: entity_id: binary_sensor.cube_15xxxxxxxxxxxx action_type: flip180 @@ -212,7 +214,7 @@ Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swi - alias: Cube event move trigger: platform: event - event_type: cube_action + event_type: xiaomi_aqara.cube_action event_data: entity_id: binary_sensor.cube_15xxxxxxxxxxxx action_type: move @@ -224,7 +226,7 @@ Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swi - alias: Cube event tap_twice trigger: platform: event - event_type: cube_action + event_type: xiaomi_aqara.cube_action event_data: entity_id: binary_sensor.cube_15xxxxxxxxxxxx action_type: tap_twice @@ -236,7 +238,7 @@ Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swi - alias: Cube event shake_air trigger: platform: event - event_type: cube_action + event_type: xiaomi_aqara.cube_action event_data: entity_id: binary_sensor.cube_15xxxxxxxxxxxx action_type: shake_air @@ -255,7 +257,7 @@ The Aqara Wireless Switch is available as single-key and double-key version. Eac - alias: Decrease brightness of the gateway light trigger: platform: event - event_type: click + event_type: xiaomi_aqara.click event_data: entity_id: binary_sensor.wall_switch_left_158xxxxxxxxx12 click_type: single @@ -277,7 +279,7 @@ The Aqara Wireless Switch is available as single-key and double-key version. Eac - alias: Increase brightness of the gateway light trigger: platform: event - event_type: click + event_type: xiaomi_aqara.click event_data: entity_id: binary_sensor.wall_switch_right_158xxxxxxxxx12 click_type: single @@ -299,7 +301,7 @@ The Aqara Wireless Switch is available as single-key and double-key version. Eac - alias: Turn off the gateway light trigger: platform: event - event_type: click + event_type: xiaomi_aqara.click event_data: entity_id: binary_sensor.wall_switch_both_158xxxxxxxxx12 click_type: both diff --git a/source/_components/bmw_connected_drive.markdown b/source/_components/bmw_connected_drive.markdown index 221e893d27e..67002468a92 100644 --- a/source/_components/bmw_connected_drive.markdown +++ b/source/_components/bmw_connected_drive.markdown @@ -22,8 +22,9 @@ This component provides the following platforms: - Device tracker: The location of your car. - Lock: Control the lock of your car. - Sensors: Mileage, remaining range, remaining fuel, charging time remaining (electric cars), charging status (electric cars), remaining range electric (electric cars). + - Services: Turn on air condition, sound the horn, flash the lights and update the state. More details can be found [here](/components/bmw_connected_drive/#services). - ## {% linkable_title Configuration %} +## {% linkable_title Configuration %} To enable this component in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/calendar.google.markdown b/source/_components/calendar.google.markdown index f47ee421ac3..cfb94721485 100644 --- a/source/_components/calendar.google.markdown +++ b/source/_components/calendar.google.markdown @@ -129,7 +129,8 @@ entities: offset: description: > A set of characters that precede a number in the event title - for designating a pre-trigger state change on the sensor. + for designating a pre-trigger state change on the sensor. + This should be in the format of HH:MM or MM. required: false type: string default: "!!" diff --git a/source/_components/calendar.todoist.markdown b/source/_components/calendar.todoist.markdown index 36c6e844b78..d738b4b0914 100644 --- a/source/_components/calendar.todoist.markdown +++ b/source/_components/calendar.todoist.markdown @@ -94,7 +94,7 @@ As you can see, there are 4 custom projects here: You can mix-and-match these attributes to create all sorts of custom projects. You can even use [IFTTT](https://ifttt.com/todoist) to create a task with a certain label, then have Home Assistant do some kind of automation when a task with that label comes due. -Home Assistant does its best to determine what task in each project is "most" important, and it's that task which has its state reported. You can access the other tasks you have due soon via the `all_tasks` array (see below). +Home Assistant does its best to [determine what task in each project is "most" important](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/calendar/todoist.py#L432), and it's that task which has its state reported. You can access the other tasks you have due soon via the `all_tasks` array (see below). ### {% linkable_title Sensor attributes %} diff --git a/source/_components/camera.doorbird.markdown b/source/_components/camera.doorbird.markdown index 4c0734e2695..86e7c3c5f01 100644 --- a/source/_components/camera.doorbird.markdown +++ b/source/_components/camera.doorbird.markdown @@ -13,7 +13,7 @@ ha_release: "0.54" ha_iot_class: "Local Polling" --- -The `doorbird` implementation allows you to view the live video and previous images from your [DoorBird](http://www.doorbird.com/) device in Home Assistant. +The `doorbird` implementation allows you to view the live video, the last doorbell ring image, and the last motion sensor image from your [DoorBird](http://www.doorbird.com/) device in Home Assistant.You must have the [DoorBird component](/components/doorbird/) configured to use this camera. diff --git a/source/_components/camera.ffmpeg.markdown b/source/_components/camera.ffmpeg.markdown index 86f1c261f05..09f2cffc814 100644 --- a/source/_components/camera.ffmpeg.markdown +++ b/source/_components/camera.ffmpeg.markdown @@ -17,7 +17,7 @@ The `ffmpeg` platform allows you to use any video feed as a camera in Home Assis ## {% linkable_title Configuration %} -To enable your FFmpeg feed in your installation, add the following to your `configuration.yaml` file: +To enable your FFmpeg feed in your installation you must first configure the [ffmpeg component](/components/ffmpeg/), then add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_components/camera.generic.markdown b/source/_components/camera.generic.markdown index 013a6bb8c06..f7598dd79f5 100644 --- a/source/_components/camera.generic.markdown +++ b/source/_components/camera.generic.markdown @@ -51,7 +51,7 @@ authentication: default: basic type: string limit_refetch_to_url_change: - description: True/false value. Limits re-fetching of the remote image to when the URL changes. Only relevant if using a template to fetch the remote image. + description: Limits re-fetching of the remote image to when the URL changes. Only relevant if using a template to fetch the remote image. required: false default: false type: boolean diff --git a/source/_components/camera.mjpeg.markdown b/source/_components/camera.mjpeg.markdown index 48ef4767b18..1768ed4a84f 100644 --- a/source/_components/camera.mjpeg.markdown +++ b/source/_components/camera.mjpeg.markdown @@ -54,6 +54,11 @@ authentication: required: false type: string default: basic +verify_ssl: + description: Validate the ssl certificate for this camera. + required: false + type: boolean + default: true {% endconfiguration %} ## {% linkable_title Examples %} @@ -67,3 +72,15 @@ camera: still_image_url: http://IP/image.jpg mjpeg_url: http://IP/video/mjpg.cgi ``` + +Example of integrating Blue Iris Cameras from a Blue Iris server. + +```yaml +camera: + - platform: mjpeg + name: Livingroom Camera + mjpeg_url: http://IP:PORT/mjpg/CAMERASHORTNAME/video.mjpeg + username: BLUE_IRIS_USERNAME + password: BLUE_IRIS_PASSWORD + authentication: basic +``` diff --git a/source/_components/camera.mqtt.markdown b/source/_components/camera.mqtt.markdown index 177e89f8924..1f79e16cc7c 100644 --- a/source/_components/camera.mqtt.markdown +++ b/source/_components/camera.mqtt.markdown @@ -30,17 +30,15 @@ camera: {% configuration %} topic: - description: MQTT topic to subscribe to. + description: The MQTT topic to subscribe to. required: true type: string name: - description: Name of the camera. + description: The name of the camera. required: false type: string unique_id: - description: > - An ID that uniquely identifies this camera. If two cameras - have the same unique ID Home Assistant will raise an exception. + description: An ID that uniquely identifies this camera. If two cameras have the same unique ID Home Assistant will raise an exception. required: false type: string {% endconfiguration %} diff --git a/source/_components/camera.nest.markdown b/source/_components/camera.nest.markdown index 20c616e9c19..9a9cd737f4c 100644 --- a/source/_components/camera.nest.markdown +++ b/source/_components/camera.nest.markdown @@ -19,4 +19,4 @@ The `nest` platform allows you to watch still frames from a video stream (not li You must have the [Nest component](/components/nest/) configured to use this camera. The `nest` camera will automatically be setup when you do.
-Nest Camera supports `camera.turn_on` and `camera.turn_off` service since 0.75 release. +Nest Camera supports the `camera.turn_on` and `camera.turn_off` services since the 0.75 release. diff --git a/source/_components/camera.onvif.markdown b/source/_components/camera.onvif.markdown index 3a695d30fe6..f9ed2644e86 100644 --- a/source/_components/camera.onvif.markdown +++ b/source/_components/camera.onvif.markdown @@ -12,7 +12,7 @@ ha_category: Camera ha_release: 0.47 --- -The `onvif` camera platform allows you to use an ONVIF camera in Home Assistant. This requires the [`ffmpeg` component](/components/ffmpeg/) to be already configured. +The `onvif` camera platform allows you to use an [ONVIF](https://www.onvif.org/) camera in Home Assistant. This requires the [`ffmpeg` component](/components/ffmpeg/) to be already configured. ## {% linkable_title Configuration %} @@ -27,21 +27,24 @@ camera: {% configuration %} host: - description: An IP or hostname of the camera. + description: The IP address or hostname of the camera. required: true type: string name: description: Override the name of your camera. required: false type: string + default: ONVIF Camera username: description: The username for the camera. required: false type: string + default: admin password: description: The password for the camera. required: false type: string + default: 888888 port: description: The port for the camera. required: false @@ -53,12 +56,13 @@ profile: type: integer default: 0 extra_arguments: - description: "Extra options to pass to `ffmpeg`, e.g., image quality or video filter options. More details in [FFmpeg component](/components/ffmpeg)." + description: "Extra options to pass to `ffmpeg`, e.g., image quality or video filter options. More details in [`ffmpeg` component](/components/ffmpeg)." required: false type: string + default: -q:v 2 {% endconfiguration %} -Most of the Onvif cameras support more than one audio/video Profile. Each profile provides different image quality. Usually, the first profile has the highest quality, and it is the profile used by default. However, you may want to use a lower quality image. One of the reasons may be that your hardware isn't able to render the highest quality image in real-time - especially when running on Raspberry Pi. Therefore you can choose which profile do you want to use by setting in config `profile` variable. +Most of the ONVIF cameras support more than one audio/video profile. Each profile provides different image quality. Usually, the first profile has the highest quality and it is the profile used by default. However, you may want to use a lower quality image. One of the reasons may be that your hardware isn't able to render the highest quality image in real-time, especially when running on Raspberry Pi. Therefore you can choose which profile do you want to use by setting in config `profile` variable. ### {% linkable_title Service `camera.onvif_ptz` %} diff --git a/source/_components/camera.proxy.markdown b/source/_components/camera.proxy.markdown index d1c92138edf..7f5f8773360 100644 --- a/source/_components/camera.proxy.markdown +++ b/source/_components/camera.proxy.markdown @@ -13,7 +13,7 @@ ha_release: 0.65 The `proxy` camera platform allows you to pass another camera's output through post-processing routines and generate a new camera with the post-processed output. -The current post-processing supports resizing the image/MJPEG as well as limiting the maximum refresh rate. +The current post-processing supports resizing and/or cropping the image/MJPEG as well as limiting the maximum refresh rate. The current proxy capabilities are intended to reduce the camera bandwidth for slower internet connections. @@ -39,14 +39,37 @@ name: description: This parameter allows you to override the name of your camera. required: false type: string +mode: + description: The operating mode, either `resize` or `crop`. + required: false + type: string + default: resize max_image_width: - description: The maximum width of single images taken from the camera (aspect ratio will be maintained). + description: The maximum width of single images taken from the camera (aspect ratio will be maintained on resize processing). + required: false + type: integer +max_image_height: + description: The maximum height of single images taken from the camera, only used for crop operations. If not provided, the original height is assumed by default. required: false type: integer max_stream_width: - description: The maximum width of the MJPEG stream from the camera (aspect ratio will be maintained). + description: The maximum width of the MJPEG stream from the camera (aspect ratio will be maintained on resize processing). required: false type: integer +max_stream_height: + description: The maximum height of the MJPEG stream from the camera, only used for crop operations. If not provided, the original height is assumed by default. + required: false + type: integer +image_top: + description: The top (y) coordinate to be used as a starting point for crop operations. + required: false + type: integer + default: 0 +image_left: + description: The left (x) coordinate to be used as a starting point for crop operations. + required: false + type: integer + default: 0 image_quality: description: The quality level used for resulting JPEG for snapshots. required: false @@ -73,7 +96,7 @@ cache_images: ## {% linkable_title Examples %} -Example of using a Camera proxy along with a Foscam camera: +Example of using two Camera proxies along with a Foscam camera: ```yaml camera: @@ -87,4 +110,11 @@ camera: max_stream_width: 360 max_image_width: 480 image_refresh_rate: 5.0 + - platform: proxy + entity_id: camera.mycamera + name: My cropped camera + mode: crop + max_image_width: 480 + max_image_height: 320 + image_left: 100 ``` diff --git a/source/_components/camera.push.markdown b/source/_components/camera.push.markdown index 9794c37fbc7..d6053682dbb 100644 --- a/source/_components/camera.push.markdown +++ b/source/_components/camera.push.markdown @@ -25,7 +25,7 @@ The `push` camera can as an example be used with [motionEye](https://github.com/ In motionEye, under **File Storage -> Run A Command** type in: ```bash -curl -X POST -F "image=@%f" http://my.hass.server.com:8123/api/camera_push/camera.push_camera?token=12345678 +curl -X POST -F "image=@%f" http://my.hass.server.com:8123/api/webhook/my_custom_webhook_id ``` Optionally configure motionEye to save only motion triggered images by going into **Still Images -> Capture Mode** and setting **Motion Triggered**. Tune your preferences under **Motion Detection**. @@ -38,7 +38,7 @@ camera: name: MotionEye Outdoor buffer: 3 timeout: 5 - token: 12345678 + webhook_id: my_custom_webhook_id ``` ## {% linkable_title Configuration %} @@ -50,7 +50,7 @@ To enable this camera in your installation, add the following to your `configura camera: - platform: push name: My Push Camera - token: 12345678 + webhook_id: my_custom_webhook_id ``` {% configuration %} @@ -69,9 +69,9 @@ timeout: required: false type: time default: 5 seconds -token: - description: User provided token acting as access control, should be a large string (more then 8 chars). Required if you can't use HA new auth system (0.77). - required: false +webhook_id: + description: User provided string acting as camera identifier and access control, should be a large string (more then 8 chars). + required: true type: string field: description: HTTP POST field containing the image file diff --git a/source/_components/camera.skybell.markdown b/source/_components/camera.skybell.markdown index 61df1aeeaba..4bbc2db934d 100644 --- a/source/_components/camera.skybell.markdown +++ b/source/_components/camera.skybell.markdown @@ -24,3 +24,45 @@ Once you have enabled the [Skybell component](/components/skybell), add the foll camera: - platform: skybell ``` + +{% configuration %} +monitored_conditions: + description: The camera images to display. Default is `avatar`. The full list is `avatar`, `activity`. + required: false + type: list +avatar_name: + description: Name to append to the device name for the avatar image. Default is empty string. + required: false + type: string +activity_name: + description: Name to append to the device name for the last activity image. Default is empty string. + required: false + type: string +{% endconfiguration %} + +## {% linkable_title Camera Types %} + +There are two available camera types "Avatar", which is the default, displays the Skybell avatar image. +It is periodically updated with a fresh image. The other type is "Activity", which displays a snapshot from +the latest event (motion, bell, or on demand) captured by the camera. You may show either camera, or both, by +specifying its name under monitored_condtions. It's recommended, but not required, to set either avatar_name or activity_name +if you are showing both cameras so you can tell them apart. The name will be appended to the skybell device name. + + +```yaml +# Example configuration.yaml with both images +camera: + - platform: skybell + monitored_conditions: + - avatar + - activity + activity_name: "Last Activity" +``` + +```yaml +# Example configuration.yaml with just last activity image +camera: + - platform: skybell + monitored_conditions: + - activity +``` \ No newline at end of file diff --git a/source/_components/camera.synology.markdown b/source/_components/camera.synology.markdown index 2e0e232a0cb..8cfe0ca8ce3 100644 --- a/source/_components/camera.synology.markdown +++ b/source/_components/camera.synology.markdown @@ -74,7 +74,7 @@ camera: username: YOUR_USERNAME password: YOUR_PASSWORD timeout: 15 - verify_ssl: False + verify_ssl: false ```diff --git a/source/_components/camera.uvc.markdown b/source/_components/camera.uvc.markdown index cd86a1214cf..a0f8ef896c1 100644 --- a/source/_components/camera.uvc.markdown +++ b/source/_components/camera.uvc.markdown @@ -34,6 +34,7 @@ camera: - platform: uvc nvr: IP_ADDRESS key: API_KEY + ssl: USE_SSL ``` {% configuration %} @@ -55,4 +56,14 @@ password: required: false type: string default: ubnt +ssl: + description: Should use SSL/TLS to connect to the NVR. + required: false + type: boolean + default: false {% endconfiguration %} + +
+When using an API_KEY to access cameras controlled by Ubiquiti's NVR Software, the associated user account MUST have at least Administrator privileges within the NVR Software in order for new cameras to be added into Home Assistant. Once the entities have been created in Home Assistant, privileges for the user account can be lowered. +
+ diff --git a/source/_components/cast.markdown b/source/_components/cast.markdown index 1bd86aef388..7b67fe98aa8 100644 --- a/source/_components/cast.markdown +++ b/source/_components/cast.markdown @@ -34,9 +34,13 @@ you want to configure the IP address of the Cast device directly: # Example configuration.yaml entry cast: media_player: - - host: 192.168.1.10 + - host: 192.168.1.10 ``` ++You may need to enable Multicast DNS (MDNS) on your router if you are on a different subnet or VLAN. +
+ {% configuration %} media_player: description: A list that contains all Cast devices. @@ -62,6 +66,6 @@ those as follows: # Example configuration.yaml entry for multiple devices cast: media_player: - - host: IP_ADDRESS_DEVICE_1 - - host: IP_ADDRESS_DEVICE_2 + - host: IP_ADDRESS_DEVICE_1 + - host: IP_ADDRESS_DEVICE_2 ``` diff --git a/source/_components/climate.daikin.markdown b/source/_components/climate.daikin.markdown index 904b3e5fa13..098e9a444db 100644 --- a/source/_components/climate.daikin.markdown +++ b/source/_components/climate.daikin.markdown @@ -23,25 +23,4 @@ The `daikin` climate platform integrates Daikin air conditioning systems into Ho Current temperature is displayed. -## {% linkable_title Configuration %} - -To enable the platform, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -climate: - - platform: daikin - host: 10.0.0.1 -``` - -{% configuration %} -host: - description: IP or hostname of the device. - required: true - type: string -name: - description: If the device has a name previously set by the user than that name will be used. - required: false - type: string -{% endconfiguration %} - +For configuration instructions, see [the Daikin component](/components/daikin/). diff --git a/source/_components/climate.eq3btsmart.markdown b/source/_components/climate.eq3btsmart.markdown index ce833566ff4..292b58fdbf7 100644 --- a/source/_components/climate.eq3btsmart.markdown +++ b/source/_components/climate.eq3btsmart.markdown @@ -18,7 +18,8 @@ The current functionality allows setting the temperature as well as controlling As the device doesn't contain a temperature sensor ([read more](https://forum.fhem.de/index.php/topic,39308.15.html)), we report target temperature also as current one. -### Testing the connectivity ### +### {% linkable_title Testing the connectivity %} + Before configuring Home Assistant you should check that connectivity with the thermostat is working, which can be done with the eq3cli tool: ```bash @@ -32,9 +33,9 @@ Boost: False Current target temp: 21.0 Current mode: auto dst Valve: 0 -``` +``` -### Configuration ### +### {% linkable_title Configuration %} ```yaml # Example configuration.yaml entry @@ -45,9 +46,19 @@ climate: mac: '00:11:22:33:44:55' ``` -Configuration variables: - -- **devices** array (*Required*): List of thermostats. - - **[device-name]** (*Required*): The name to use for the thermostat. - - **mac** (*Required*): MAC address of the thermostat. - +{% configuration %} +devices: + description: List of thermostats. + required: true + type: list + keys: + name: + description: The name to use for the thermostat. + required: true + type: string + keys: + mac: + description: MAC address of the thermostat. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/climate.evohome.markdown b/source/_components/climate.evohome.markdown index a6c2444f2d6..68b42151b67 100644 --- a/source/_components/climate.evohome.markdown +++ b/source/_components/climate.evohome.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Honeywell evohome CH/DHW Controller" -description: "Instructions on how to integrate a Honeywell evohome controller with Home Assistant." +title: "Honeywell evohome/TCC Climate devices" +description: "Instructions on how to utilize a Honeywell evohome/TCC system within Home Assistant." date: 2018-09-25 12:00 sidebar: true comments: false @@ -13,15 +13,39 @@ ha_release: 0.80 ha_iot_class: "Cloud Polling" --- -The `evohome` climate platform integrates your _EU-based_ [Honeywell Connect Comfort](https://international.mytotalconnectcomfort.com/Account/Login) CH/DHW controller into Home Assistant, enabling control of its operating mode. +The `evohome` climate platform integrates your _non-US_ [Honeywell Total Connect Comfort (TCC)](https://international.mytotalconnectcomfort.com/Account/Login) system into Home Assistant. It has been tested with the Honeywell evohome multi-zone CH/DHW system, but other systems may also work. -It is related to the honeywell climate component](/components/climate.honeywell/), which allows limited integration with evohome Heating zones. These two components should be usuable side-by-side, but YMMV. +It is distinct from - but related to - the [`honeywell`](/components/climate.honeywell/) climate platform, which also allows (limited) integration with Honeywell Connected thermostats; these two components may well be usable side-by-side, but YMMV. -The evohome evotouch controller supports seven distict modes: Auto, AutoWithEco, Away, DayOff, HeatingOff, and Custom; AutoWithReset is a 7th, hidden, mode. +The evohome evotouch Controller supports seven distict operating modes: Auto, AutoWithEco, Away, DayOff, HeatingOff, and Custom; AutoWithReset is a 7th, hidden, mode. -Currently, only the standard HA operating modes are supported: 'Eco' (AutoWithEco), and 'Off' (HeatingOff), and 'Auto' (all other evohome modes). 'Away' (Away) mode is supported separately. +Currently, only the standard HA operating modes are supported; the evohome modes are mapped thus: 'Eco' (AutoWithEco), 'Off' (HeatingOff), and 'Auto' (all other evohome modes). 'Away' mode is supported separately, in the HA fashion. -The actual operating modes are tracked/reported via `device_state_attributes`. +The evohome Heating zones support only three operating modes: FollowSchedule, TemporaryOverride, and PermanentOverride. If the zone is in FollowSchedule mode, it inherits its `operating_mode` from the controller; the other modes are mapped to 'Manual' or 'Off'. + +A device's actual operating mode can be tracked via its `device_state_attributes`, which includes a JSON data structure for current state called `status`. For example: +```json +{ + 'zoneId': '999999', + 'temperatureStatus': { + 'temperature': 21.5, + 'isAvailable': true + }, + 'activeFaults': [], + 'setpointStatus': { + 'targetHeatTemperature': 17.5, + 'setpointMode': 'FollowSchedule' + }, + 'name': 'Main Room' +} +``` + +This data can be accessed in automations, etc., via a value template: +{% raw %} +``` +value_template: "{{ state_attr('climate.main_room', 'status').setpointStatus.setpointMode }}" +``` +{% endraw %}Full configuration details can be found on the main [evohome component](/components/evohome/) page. diff --git a/source/_components/climate.generic_thermostat.markdown b/source/_components/climate.generic_thermostat.markdown index ee522ae27ed..15207b93552 100644 --- a/source/_components/climate.generic_thermostat.markdown +++ b/source/_components/climate.generic_thermostat.markdown @@ -13,7 +13,7 @@ ha_release: pre 0.7 ha_iot_class: "Local Polling" --- -The `generic_thermostat` climate platform is a thermostat implemented in Home Assistant. It uses a sensor and a switch connected to a heater or air conditioning under the hood. When in heater mode, if the measured temperature is cooler then the target temperature, the heater will be turned on and turned off when the required temperature is reached. When in air conditioning mode, if the measured temperature is hotter then the target temperature, the air conditioning will be turned on and turned off when required temperature is reached. One Generic Thermostat entity can only control one switch. If you need to activate two switches, one for a heater and one for an air conditioner, you will need two Generic Thermostat entities. +The `generic_thermostat` climate platform is a thermostat implemented in Home Assistant. It uses a sensor and a switch connected to a heater or air conditioning under the hood. When in heater mode, if the measured temperature is cooler than the target temperature, the heater will be turned on and turned off when the required temperature is reached. When in air conditioning mode, if the measured temperature is hotter than the target temperature, the air conditioning will be turned on and turned off when required temperature is reached. One Generic Thermostat entity can only control one switch. If you need to activate two switches, one for a heater and one for an air conditioner, you will need two Generic Thermostat entities. ```yaml # Example configuration.yaml entry @@ -82,6 +82,11 @@ away_temp: description: Set the temperature used by "away_mode". If this is not specified, away_mode feature will not get activated. required: false type: float +precision: + description: "The desired precision for this device. Can be used to match your actual thermostat's precision. Supported values are `0.1`, `0.5` and `1.0`." + required: false + type: float + default: "`0.5` for Celsius and `1.0` for Fahrenheit." {% endconfiguration %} A full configuration example looks like the one below. `min_cycle_duration` and `keep_alive` must contain at least one of the following entries: `days:`, `hours:`, `minutes:`, `seconds:` or `milliseconds:`. @@ -99,7 +104,7 @@ climate: target_sensor: sensor.study_temperature min_temp: 15 max_temp: 21 - ac_mode: False + ac_mode: false target_temp: 17 cold_tolerance: 0.3 hot_tolerance: 0 @@ -109,4 +114,5 @@ climate: minutes: 3 initial_operation_mode: "off" away_temp: 16 + precision: 0.1 ``` diff --git a/source/_components/climate.heatmiser.markdown b/source/_components/climate.heatmiser.markdown index d55c605019f..15aa2b99fe2 100644 --- a/source/_components/climate.heatmiser.markdown +++ b/source/_components/climate.heatmiser.markdown @@ -13,7 +13,7 @@ ha_release: "0.10" ha_iot_class: "Local Polling" --- -The `heatmiser` climate platform let you control [Heatmiser DT/DT-E/PRT/PRT-E](http://www.heatmisershop.co.uk/heatmiser-slimline-programmable-room-thermostat/) thermostats from Heatmiser. The module itself is currently setup to work over a RS232 -> RS485 converter, therefore it connects over IP. +The `heatmiser` climate platform let you control [Heatmiser DT/DT-E/PRT/PRT-E](https://www.heatmisershop.co.uk/thermostats) thermostats from Heatmiser. The module itself is currently setup to work over a RS232 -> RS485 converter, therefore it connects over IP. Further work would be required to get this setup to connect over Wifi, but the HeatmiserV3 python module being used is a full implementation of the V3 protocol. diff --git a/source/_components/climate.honeywell.markdown b/source/_components/climate.honeywell.markdown index bb174d8f5c8..844bfceed27 100644 --- a/source/_components/climate.honeywell.markdown +++ b/source/_components/climate.honeywell.markdown @@ -14,11 +14,7 @@ ha_iot_class: "Cloud Polling" --- -The `honeywell` climate platform let you control [Honeywell Connected](http://getconnected.honeywell.com/en/) thermostats from Home Assistant. - -
-This platform does NOT connect to MyTotalConnectComfort.com. If you have a Honeywell WIFI thermostat that is connected through MyTotalConnectComfort.com, you may might to take a look at the IFTTT component which can bridge the gap between Home Assistant and MyTotalConnectComfort.com WIFI thermostats on a limited basis. -
+The `honeywell` climate platform let you control Honeywell Connected thermostats from Home Assistant. To set it up, add the following information to your `configuration.yaml` file: @@ -30,7 +26,7 @@ climate: scan_interval: 600 ```-Scan interval is expressed in seconds. Omitting scan_interval may result in too-frequent polling and cause you to rate-limited by Honeywell. +Scan interval is expressed in seconds. Omitting or mis-configuring `scan_interval` may result in too-frequent polling and cause you to be rate-limited by Honeywell.
{% configuration %} @@ -43,7 +39,7 @@ password: required: true type: string region: - description: Region identifier (either 'eu' or 'us'). + description: Region identifier (either 'eu' or 'us'). Use the `somecomfort` client library for `us`, and evohome-client for `eu`. required: false default: eu type: string diff --git a/source/_components/climate.knx.markdown b/source/_components/climate.knx.markdown index 839be524398..d121ed48283 100644 --- a/source/_components/climate.knx.markdown +++ b/source/_components/climate.knx.markdown @@ -47,6 +47,20 @@ climate: operation_mode_comfort_address: '5/1/7' ``` +`operation_mode_frost_protection_address` / `operation_mode_night_address` / `operation_mode_comfort_address` are not necessary if `operation_mode_address` is specified. + +If your device doesn't support setpoint_shift calculations (i.e. if you don't provide a `setpoint_shift_address` value) please set the `min_temp` and `max_temp` +attributes of the climate device to avoid issues with increasing the temperature in the frontend. + +The following values are valid for the `operation_modes` attribute: + +- Comfort (maps internally to STATE_HEAT within Home Assistant) +- Standby (maps internally to STATE_ECO within Home Assistant) +- Night (maps internally to STATE_IDLE within Home Assistant) +- Frost Protection (maps internally to STATE_MANUAL within Home Assistant) +- Fan only (maps internally to STATE_FAN_ONLY within Home Assistant) +- Dehumidification (maps internally to STATE_DRY within Home Assistant) + {% configuration %} name: description: A name for this device used within Home Assistant. @@ -100,6 +114,14 @@ controller_status_state_address: description: Explicit KNX address for reading HVAC controller status. required: false type: string +controller_mode_address: + description: KNX address for handling controller modes. + required: false + type: string +controller_mode_state_address: + description: Explicit KNX address for reading HVAC Control Mode. + required: false + type: string operation_mode_frost_protection_address: description: KNX address for switching on/off frost/heat protection mode. required: false @@ -112,6 +134,24 @@ operation_mode_comfort_address: description: KNX address for switching on/off comfort mode. required: false type: string +operation_modes: + description: Overrides the supported operation modes. + required: false + type: array +on_off_address: + description: KNX address for switching the climate device on/off. + required: false + type: string +on_off_state_address: + description: KNX address for gathering the current state (on/off) of the climate device. + required: false + type: string +min_temp: + description: Override the minimum temperature. + required: false + type: float +max_temp: + description: Override the maximum temperature. + required: false + type: float {% endconfiguration %} - -`operation_mode_frost_protection_address` / `operation_mode_night_address` / `operation_mode_comfort_address` are not necessary if `operation_mode_address` is specified. diff --git a/source/_components/climate.mill.markdown b/source/_components/climate.mill.markdown index aa13ac75be1..6f92a0a3443 100644 --- a/source/_components/climate.mill.markdown +++ b/source/_components/climate.mill.markdown @@ -15,16 +15,15 @@ ha_iot_class: "Cloud Polling" Integrates Mill heater into Home Assistant. -The component requires that the heater is set as an [independent device](https://millheat.zendesk.com/hc/en-us/articles/115001123491-What-is-an-Independent-device-) in the Mill app. - +## {% linkable_title Configuration %} To enable this platform, add the following lines to your `configuration.yaml` file: ```yaml climate: - platform: mill - username: email@gmail.com - password: pswd + username: YOUR_EMAIL_ADDRESS + password: YOUR_PASSWORD ``` {% configuration %} @@ -37,3 +36,17 @@ password: required: true type: string {% endconfiguration %} + +## {% linkable_title Component services %} + +This platform supports a service to set the temperature for the room connected to heater in the Mill app: + +`climate.mill_set_room_temperature` + + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `room_name` | no | String with room name. +| `away_temp` | yes | Integer with temperature +| `comfort_temp` | yes | Integer with temperature +| `sleep_temp` | yes | Integer with temperature diff --git a/source/_components/climate.mqtt.markdown b/source/_components/climate.mqtt.markdown index 66cd9a2ccdd..3ee30125d18 100644 --- a/source/_components/climate.mqtt.markdown +++ b/source/_components/climate.mqtt.markdown @@ -19,13 +19,14 @@ The platform currently works in optimistic mode, which means it does not obtain It uses a sensor under the hood to obtain the current temperature. +## {% linkable_title Configuration %} + +To enable this climate platform in your installation, first add the following to your `configuration.yaml` file: + ```yaml # Example configuration.yaml entry climate: - platform: mqtt - name: Study - current_temperature_topic: sensors/hvac_study/current_temp - temperature_command_topic: sensors/hvac_study/target_temp ``` {% configuration %} @@ -34,6 +35,10 @@ name: required: false type: string default: MQTT HVAC +unique_id: + description: An ID that uniquely identifies this HVAC device. If two HVAC devices have the same unique ID, Home Assistant will raise an exception. + required: false + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -194,18 +199,47 @@ aux_state_template: required: false type: template min_temp: - description: Minimum set point available + description: Minimum set point available. type: number required: false max_temp: - description: Maximum set point available + description: Maximum set point available. type: number required: false temp_step: - description: Step size for temperature set point + description: Step size for temperature set point. type: number required: false default: 1 +device: + description: 'Information about the device this HVAC device is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + required: false + type: map + keys: + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: list, string + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list + manufacturer: + description: 'The manufacturer of the device.' + required: false + type: string + model: + description: 'The model of the device.' + required: false + type: string + name: + description: 'The name of the device.' + required: false + type: string + sw_version: + description: 'The firmware version of the device.' + required: false + type: string {% endconfiguration %} #### {% linkable_title Optimistic mode %} diff --git a/source/_components/climate.nest.markdown b/source/_components/climate.nest.markdown index 80ba8505f33..70201a0444d 100644 --- a/source/_components/climate.nest.markdown +++ b/source/_components/climate.nest.markdown @@ -12,14 +12,12 @@ ha_category: Climate ha_iot_class: "Cloud Push" --- - -The `nest` climate platform let you control a thermostat from [Nest](https://nest.com). +The `nest` climate platform lets you control a thermostat from [Nest](https://nest.com).-You must have the [Nest component](/components/nest/) configured to use these sensors. The `nest` climate component will automatically be setup when you do. +You must have the [Nest component](/components/nest/) configured to use these sensors. The `nest` climate component will automatically be setup when you do. Please note due to limitations with the European Nest Thermostat E, integration with Home Assistant for that thermostat is not possible.
-Thermostats with support for fan modes or different operating modes, will be handled like a HVAC device and will also be detected as one. +Thermostats with support for fan modes or different operating modes, will be handled like a HVAC device and will also be detected as one. -If the thermostat support different operating modes, you will get one thermostat entity for each mode. These can be hidden with settings using the customize setting in the `configuration.yaml` file. +If the thermostat supports different operating modes, you will get one thermostat entity for each mode. These can be hidden with settings using the customize setting in the `configuration.yaml` file.
To enable the climate component for your Z-Wave network, add the following to your `configuration.yaml` file. @@ -31,10 +30,10 @@ climate: Once enabled, any Z-Wave climate devices will be available to Home Assistant. Multiple entities may be created. The following entities are created for a Remotec ZXT-120. -- **climate.remotec_zxt120_heating_1_id** Allows you to control the connected device. See below for examples. -- **sensor.remotec_zxt120_temperature_38** A sensor which returns the current temperature set on the attached device. +- `climate.remotec_zxt120_heating_1_id`: Allows you to control the connected device. See below for examples. +- `sensor.remotec_zxt120_temperature_38`: A sensor which returns the current temperature set on the attached device. -### {% linkable_title Automating Z-Wave Climate Devices %} +## {% linkable_title Automating Z-Wave Climate Devices %} The following examples will instruct a Remotec ZXT-120 to turn the attached device mode to Heating, and set the temperature at 24 degrees after 8pm. Add it to `automation.yaml`. @@ -55,7 +54,7 @@ automation: temperature: 24 ``` -Generally in Home Assistant you can use the `homeassistant/turn_off` service to turn devices off. For the Remotec ZXT-120, you must instead make a service call like the following. +Generally, in Home Assistant, you can use the `homeassistant/turn_off` service to turn devices off. For the Remotec ZXT-120, you must instead make a service call like the following. ```yaml automation: @@ -72,9 +71,9 @@ automation: **Note:** In the example above, the word `Off` is encased in single quotes to be valid YAML. -### {% linkable_title Test if it works %} +## {% linkable_title Test if it works %} -A simple way to test if your Z-Wave climate device is working is to use-This platform is **NOT** available for [Microsoft Windows installations](http://pexpect.readthedocs.io/en/stable/overview.html#pexpect-on-windows). -
+The platform will be automatically configured if Asuswrt component is configured. -### {% linkable_title Configuration %} +For more configuration information see the [Asuswrt component](/components/asuswrt/) documentation. -To use an ASUSWRT router in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: asuswrt - host: YOUR_ROUTER_IP - username: YOUR_ADMIN_USERNAME -``` - -{% configuration %} -host: - description: "The IP address of your router, eg. `192.168.1.1`." - required: true - type: string -username: - description: "The username of an user with administrative privileges, usually `admin`." - required: true - type: string -password: - description: "The password for your given admin account (use this if no SSH key is given)." - required: false - type: string -protocol: - description: "The protocol (`ssh` or `telnet`) to use." - required: false - type: string - default: ssh -port: - description: SSH port to use. - required: false - type: integer - default: 22 -mode: - description: "The operating mode of the router (`router` or `ap`)." - required: false - type: string - default: router -ssh_key: - description: The path to your SSH private key file associated with your given admin account (instead of password). - required: false - type: string -require_ip: - description: If the router is in access point mode. - required: false - type: boolean - default: true -{% endconfiguration %} - --You need to [enable telnet](https://www.asus.com/support/faq/1005449/) on your router if you choose to use `protocol: telnet`. -
- -See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. +See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. \ No newline at end of file diff --git a/source/_components/device_tracker.bluetooth_tracker.markdown b/source/_components/device_tracker.bluetooth_tracker.markdown index fd79f3c3f04..4811c61729b 100644 --- a/source/_components/device_tracker.bluetooth_tracker.markdown +++ b/source/_components/device_tracker.bluetooth_tracker.markdown @@ -25,10 +25,15 @@ device_tracker: {% configuration %} request_rssi: - description: Performs a request for the "Received signal strength indication" (RSSI) of each tracked device + description: Performs a request for the "Received signal strength indication" (RSSI) of each tracked device. required: false type: boolean - default: False + default: false +device_id: + description: The ID of the bluetooth adapter to be used by the tracker, e.g., use `0` for `hci0`, `1` for `hci1`, and so on. + required: false + type: integer + default: "`-1` (The first available bluetooth adapter)" {% endconfiguration %} In some cases it can be that your device is not discovered. In that case let your phone scan for Bluetooth devices while you restart Home Assistant. Just hit `Scan` on your phone all the time until Home Assistant is fully restarted and the device should appear in `known_devices.yaml`. diff --git a/source/_components/device_tracker.bt_smarthub.markdown b/source/_components/device_tracker.bt_smarthub.markdown new file mode 100644 index 00000000000..1f6f4f77f21 --- /dev/null +++ b/source/_components/device_tracker.bt_smarthub.markdown @@ -0,0 +1,37 @@ +--- +layout: page +title: "BT Smart Hub" +description: "Instructions on how to integrate BT Smart Hub router into Home Assistant." +date: 2018-10-05 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: bt.png +ha_category: Presence Detection +ha_release: "0.82" +ha_iot_class: "Local Polling" +--- + +This platform offers presence detection by looking at connected devices to a [BT Smart Hub](https://en.wikipedia.org/wiki/BT_Smart_Hub) based router. +This router is sometimes referred to as the BT Home Hub 6. + +## {% linkable_title Configuration %} + +To use a BT Smart Hub router in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: bt_smarthub +``` + +{% configuration %} +host: + description: The IP address of your router + default: 192.168.1.254 + required: false + type: string +{% endconfiguration %} + +See the [device tracker component page](/components/device_tracker/) for instructions on how to configure the people to be tracked. diff --git a/source/_components/device_tracker.freebox.markdown b/source/_components/device_tracker.freebox.markdown index fa2a2dd6181..633a5043baa 100644 --- a/source/_components/device_tracker.freebox.markdown +++ b/source/_components/device_tracker.freebox.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Freebox" -description: "Instructions on how to integrate Freebox routers into Home Assistant." +title: "Freebox Device Tracker" +description: "Instructions on how to track devices connected to a Freebox router in Home Assistant." date: 2018-05-16 23:00 sidebar: true comments: false @@ -14,42 +14,10 @@ ha_iot_class: "Local Polling" --- -The `freebox` platform offers presence detection by keeping track of the +This platform offers presence detection by keeping track of the devices connected to a [Freebox](http://www.free.fr/) router. -### {% linkable_title Configuration %} - -If you have enabled the [discovery component](/components/discovery/), -your Freebox should be detected automatically. Otherwise, you can set it -up manually in your `configuration.yaml` file: - -```yaml -device_tracker: - - platform: freebox - host: foobar.fbox.fr - port: 1234 -``` - -{% configuration %} -host: - description: The url of the Freebox. - required: true - type: string -port: - description: The https port the Freebox is listening on. - required: true - type: string -{% endconfiguration %} - -You can find out your Freebox host and port by opening -[this address](http://mafreebox.freebox.fr/api_version) in your browser. The -returned json should contain an api_domain (`host`) and a https_port (`port`). - -### {% linkable_title Initial setup %} - -The first time Home Assistant will connect to your Freebox, you will need to -authorize it by pressing the right button on the facade of the Freebox when -prompted to do so. +This requires you to have set up the [Freebox component](/components/freebox/) ### {% linkable_title Notes %} diff --git a/source/_components/device_tracker.fritz.markdown b/source/_components/device_tracker.fritz.markdown index f478fdea748..4bb281c39fb 100644 --- a/source/_components/device_tracker.fritz.markdown +++ b/source/_components/device_tracker.fritz.markdown @@ -18,8 +18,8 @@ The `fritz` platform offers presence detection by looking at connected devices t ## {% linkable_title Setup %}
-It might be necessary to install additional packages: $ sudo apt-get install python3-lxml
-If you installed Home Assistant in a virtualenv, run the following commands inside it: $ sudo apt-get install libxslt-dev libxml2-dev zlib1g-dev; pip3 install lxml
; be patient this will take a while.
$ sudo apt-get install python3-lxml libxslt-dev libxml2-dev zlib1g-dev
+If you installed Home Assistant in a virtualenv, run the following commands inside it: $ pip3 install lxml
; be patient this will take a while.
## {% linkable_title Configuration %}
@@ -47,7 +47,7 @@ password:
{% endconfiguration %}
-It seems that it is not necessary to use it in current generation Fritz!Box routers because the necessary data can be retrieved anonymously. +It seems that it is not necessary to use the password in current generation Fritz!Box routers because the necessary data can be retrieved anonymously.
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.geofency.markdown b/source/_components/device_tracker.geofency.markdown index e6f68b9efa8..13f4a773e50 100644 --- a/source/_components/device_tracker.geofency.markdown +++ b/source/_components/device_tracker.geofency.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Geofency" +title: "Geofency Device Tracker" description: "Instructions for how to use Geofency to track devices in Home Assistant." date: 2017-08-22 19:00 sidebar: true @@ -10,37 +10,14 @@ footer: true logo: geofency.png ha_category: Presence Detection ha_release: 0.53 +ha_iot_class: "Cloud Push" --- -This platform allows you to detect presence using [Geofency](http://www.geofency.com/). Geofency is a [paid app](https://itunes.apple.com/app/id615538630) for iOS that lets users to configure a request that will be sent when a geofence or iBeacon region is entered or exited. This can be configured with Home Assistant to update your location. +This platform allows you to detect presence using [Geofency](http://www.geofency.com/). -To integrate Geofency in Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: geofency -``` - -{% configuration %} -mobile_beacons: - description: List of beacon names that are to be treated as *mobile*. The name must match the name you configure in Geofency. By default, beacons will be treated as *stationary*. - required: false - type: list -{% endconfiguration %} - -A full sample configuration for the `geofency` platform is shown below: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: geofency - mobile_beacons: - - car - - keys -``` - -To configure Geofency, you must configure (via the Webhook feature) to send a POST request to your Home Assistant server at `http://+You must have the [Geofency component](/components/geofency/) configured to use this device tracker. +
Geofency will automatically generate the device tracker name used for geofences, and you will find it in `known_devices.yaml` after the first request. For beacons, the device name will be `beacon_
diff --git a/source/_components/device_tracker.luci.markdown b/source/_components/device_tracker.luci.markdown
index 3e74b5ed972..c159afeb875 100644
--- a/source/_components/device_tracker.luci.markdown
+++ b/source/_components/device_tracker.luci.markdown
@@ -59,6 +59,9 @@ ssl:
See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.
+This device tracker provides a number of additional attributes for each tracked device (if it is at home): `flags`, `ip`, `device`, and `host`. The first three attributes are taken from the ARP table returned by the luci RPC. The `host` attribute is taken from the platform configuration and can be used to distinguish in which router a device is logged in, if you are using multiple OpenWRT routers.
+
-Some installations have [a small bug](https://github.com/openwrt/luci/issues/576). The timeout for luci RPC calls is not set and this makes the call fail. +Some installations have [a small bug](https://github.com/openwrt/luci/issues/576). The timeout for luci RPC calls is not set and this makes the call fail. +If you want to locally fix your OpenWRT installation, you can apply the change manually to `/usr/lib/lua/luci/controller/rpc.lua`, or simply set a fixed timeout. The default is 3600.
diff --git a/source/_components/device_tracker.markdown b/source/_components/device_tracker.markdown index 8f0d46cfc84..d0841b10a90 100644 --- a/source/_components/device_tracker.markdown +++ b/source/_components/device_tracker.markdown @@ -27,20 +27,24 @@ device_tracker: username: admin password: YOUR_PASSWORD new_device_defaults: - track_new_devices: True - hide_if_away: False + 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: +The following optional parameters can be used with any platform: + ++ Device tracker will only look for global settings under the configuration of the first configured platform. +
| Parameter | Default | Description | |----------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `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`) | +| `new_device_defaults`| | Default values for new discovered devices. Available options `track_new_devices` (default: `true`), `hide_if_away` (default: `false`) |- Note that setting `track_new_devices: False` will still result in new devices being recorded in `known_devices.yaml`, but they won't be tracked (`track: no`). + Note that setting `track_new_devices: false` will still result in new devices being recorded in `known_devices.yaml`, but they won't be tracked (`track: false`).
The extended example from above would look like the following sample: @@ -53,7 +57,8 @@ device_tracker: username: admin interval_seconds: 10 consider_home: 180 - track_new_devices: yes + new_device_defaults: + track_new_devices: true ``` Multiple device trackers can be used in parallel, such as [Owntracks](/components/device_tracker.owntracks/#using-owntracks-with-other-device-trackers) and [Nmap](/components/device_tracker.nmap_tracker/). The state of the device will be determined by the source that reported last. @@ -69,8 +74,8 @@ devicename: name: Friendly Name mac: EA:AA:55:E7:C6:94 picture: https://www.home-assistant.io/images/favicon-192x192.png - track: yes - hide_if_away: no + track: true + hide_if_away: false ```@@ -85,7 +90,7 @@ devicename: | `icon` | mdi:account | An icon for this device (use as an alternative to `picture`). | | `gravatar` | None | An email address for the device's owner. If provided, it will override `picture`. | | `track` | [uses platform setting] | If `yes`/`on`/`true` then the device will be tracked. Otherwise its location and state will not update. | -| `hide_if_away` | False | If `yes`/`on`/`true` then the device will be hidden if it is not at home. | +| `hide_if_away` | false | If `yes`/`on`/`true` then the device will be hidden if it is not at home. | | `consider_home` | [uses platform setting] | Seconds to wait till marking someone as not home after not being seen. Allows you to override the global `consider_home` setting from the platform configuration on a per device level. | ## {% linkable_title Using GPS device trackers with local network device trackers %} @@ -100,8 +105,8 @@ USERNAME_DEVICE_ID: mac: EA:AA:55:E7:C6:94 picture: https://www.home-assistant.io/images/favicon-192x192.png gravatar: test@example.com - track: yes - hide_if_away: no + track: true + hide_if_away: false ``` If you want to track whether either your GPS based tracker or your local network tracker, identify you as being at home, use [a group](/components/group/) instead. diff --git a/source/_components/device_tracker.mikrotik.markdown b/source/_components/device_tracker.mikrotik.markdown index 5476d7902bc..dcad31664af 100644 --- a/source/_components/device_tracker.mikrotik.markdown +++ b/source/_components/device_tracker.mikrotik.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Mikrotik" -description: "Instructions on how to integrate Mikrotik/Routerboard based routers into Home Assistant." +title: "MikroTik" +description: "Instructions on how to integrate MikroTik/RouterOS based devices into Home Assistant." date: 2017-04-28 16:03 sidebar: true comments: false @@ -12,10 +12,11 @@ ha_category: Presence Detection ha_release: 0.44 --- +The `mikrotik` platform offers presence detection by looking at connected devices to a [MikroTik RouterOS](http://mikrotik.com) based router. -The `mikrotik` platform offers presence detection by looking at connected devices to a [Mikrotik Routerboard](http://routerboard.com) based router. +## {% linkable_title Configuring `mikrotik` device tracker %} -You need to enable the RouterOS API to use this platform. +You have to enable accessing the RouterOS API on your router to use this platform. Terminal: @@ -26,39 +27,91 @@ set api disabled=no port=8728 Web Frontend: -Go to **IP** -> **Services** -> **API** and enable it. +Go to **IP** -> **Services** -> **api** and enable it. Make sure that port 8728 or the port you choose is accessible from your network. -To use an Mikrotik router in your installation, add the following to your `configuration.yaml` file: + +To use a MikroTik router in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry device_tracker: - platform: mikrotik host: IP_ADDRESS - username: ADMIN_USERNAME - password: ADMIN_PASSWORD + username: ROUTEROS_USERNAME + password: ROUTEROS_PASSWORD ``` {% configuration %} host: - description: The IP address of your router. + description: The IP address of your MikroTik device. required: true type: string username: - description: The username of an user with administrative privileges. + description: The username of a user on the MikroTik device. required: true type: string password: - description: The password for your given admin account. + description: The password of the given user account on the MikroTik device. required: true type: string port: - description: Mikrotik API port. + description: RouterOS API port. required: false - default: 8728 + default: 8728 (or 8729 if SSL is enabled) type: integer +ssl: + description: Use SSL to connect to the API. + required: false + default: false + type: boolean +method: + description: Override autodetection of device scanning method. Can be `wireless` to use local wireless registration, `capsman` for capsman wireless registration, or `ip` for DHCP leases. + required: false + type: string {% endconfiguration %} -See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. +## {% linkable_title Use a certificate %} + +To use SSL to connect to the API (via `api-ssl` instead of `api` service) further configuration is required at RouterOS side. You have to upload or generate a certificate and configure `api-ssl` service to use it. Here is an example of a self-signed certificate: + +```bash +/certificate add common-name="Self signed demo certificate for API" days-valid=3650 name="Self signed demo certificate for API" key-usage=digital-signature,key-encipherment,tls-server,key-cert-sign,crl-sign +/certificate sign "Self signed demo certificate for API" +/ip service set api-ssl certificate="Self signed demo certificate for API" +/ip service enable api-ssl +``` + +Then add `ssl: true` to `mikrotik` device tracker entry in your `configuration.yaml` file. + +If everything is working fine you can disable the pure `api` service in RouterOS: + +```bash +/ip service disable api +``` + +## {% linkable_title The user privileges in RouterOS %} + +To use this device tracker you need restricted privileges only. To enhance the security of your MikroTik device create a "read only" user who is able to connect to API only: + +```bash +/user group add name=homeassistant policy=read,api,!local,!telnet,!ssh,!ftp,!reboot,!write,!policy,!test,!winbox,!password,!web,!sniff,!sensitive on,!dude,!tikapp +/user add group=homeassistant name=homeassistant +/user set password="YOUR_PASSWORD" homeassistant +``` + +## {% linkable_title Using the additional configuration to the `mikrotik` device tracker entry in your `configuration.yaml` file: %} + +```yaml +device_tracker: + - platform: mikrotik + host: 192.168.88.1 + username: homeassistant + password: YOUR_PASSWORD + ssl: true + port: 8729 + method: capsman +``` + +See the [device tracker component page](/components/device_tracker/) for instructions on how to configure the people to be tracked. diff --git a/source/_components/device_tracker.mqtt.markdown b/source/_components/device_tracker.mqtt.markdown index bb40d07ea51..ca3415eafdd 100644 --- a/source/_components/device_tracker.mqtt.markdown +++ b/source/_components/device_tracker.mqtt.markdown @@ -15,6 +15,8 @@ ha_iot_class: depends The `mqtt` device tracker platform allows you to detect presence by monitoring an MQTT topic for new locations. To use this platform, you specify a unique topic for each device. +## {% linkable_title Configuration %} + To use this device tracker in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -37,6 +39,8 @@ qos: type: integer {% endconfiguration %} +## {% linkable_title Usage %} + Example JSON you can publish to the topic (e.g., via mqtt.publish service): ```json diff --git a/source/_components/device_tracker.mqtt_json.markdown b/source/_components/device_tracker.mqtt_json.markdown index cc0e4783ec3..3ebee387274 100644 --- a/source/_components/device_tracker.mqtt_json.markdown +++ b/source/_components/device_tracker.mqtt_json.markdown @@ -15,6 +15,8 @@ ha_release: 0.44 The `mqtt_json` device tracker platform allows you to detect presence by monitoring an MQTT topic for new locations. To use this platform, you specify a unique topic for each device. +## {% linkable_title Configuration %} + To use this device tracker in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -37,6 +39,8 @@ qos: type: string {% endconfiguration %} +## {% linkable_title Usage %} + This platform receives JSON formatted payloads containing GPS information, for example: ```json diff --git a/source/_components/device_tracker.netgear.markdown b/source/_components/device_tracker.netgear.markdown index 78f05695e00..0f27e78ac1b 100644 --- a/source/_components/device_tracker.netgear.markdown +++ b/source/_components/device_tracker.netgear.markdown @@ -21,8 +21,6 @@ To use this device tracker in your installation, add the following to your `conf # Example configuration.yaml entry device_tracker: - platform: netgear - host: YOUR_ROUTER_IP - username: YOUR_ADMIN_USERNAME password: YOUR_ADMIN_PASSWORD ``` diff --git a/source/_components/device_tracker.owntracks_http.markdown b/source/_components/device_tracker.owntracks_http.markdown deleted file mode 100644 index 64df68dd04e..00000000000 --- a/source/_components/device_tracker.owntracks_http.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "OwnTracks (via HTTP)" -description: "Instructions on how to use Owntracks via HTTP to track devices in Home Assistant." -date: 2017-09-28 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: owntracks.png -ha_category: Presence Detection -featured: true -ha_release: 0.55 ---- - -OwnTracks is a free and open source application that allows you to track your location in Home Assistant. This is a platform that supports OwnTracks via their HTTP publishing method. - -To integrate Owntracks tracking via HTTP in Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: owntracks_http -``` - -For configuration options and usage instructions, read the documentation for the [OwnTracks platform](/components/device_tracker.owntracks/). - -## {% linkable_title Configuring OwnTracks to submit data via HTTP %} - -Open OwnTracks and go to Connection preferences: - - - Mode: Select **Private HTTP** - - Host: [Home Assistant URL]:[port]/api/owntracks/[your name]/[device name] - - Identification: Turn **Authentication** on, username `homeassistant` and password is your API password that you use to login to Home Assistant. - -Host example: If I host my Home Assistant at `https://example.duckdns.org`, my name is Paulus and my phone is a Pixel I would set the host to be `https://example.duckdns.org/api/owntracks/paulus/pixel`. This will result in an entity with an ID of `device_tracker.paulus_pixel`. You can pick any name for the user and the device. - -Since the battery data is available as an attribute of the device tracker entity, it can be tracked with a [`template` sensor](/components/sensor.template/). - -{% raw %} -```yaml -# Example configuration.yaml entry -sensor: - - platform: template - sensors: - pixel_battery: - friendly_name: Pixel of Paulus - unit_of_measurement: "%" - value_template: '{{ states.device_tracker.paulus_pixel.attributes.battery|int }}' - device_class: battery -``` -{% endraw %} diff --git a/source/_components/device_tracker.tado.markdown b/source/_components/device_tracker.tado.markdown index db808501a58..06e7df3c472 100644 --- a/source/_components/device_tracker.tado.markdown +++ b/source/_components/device_tracker.tado.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Tado" -description: "Instructions on how to integrate Tado into Home Assistant." +title: "Tado Device Tracker" +description: "Instructions on how to integrate Tado device tracker into Home Assistant." date: 2017-01-17 12:00 sidebar: true comments: false diff --git a/source/_components/device_tracker.tomato.markdown b/source/_components/device_tracker.tomato.markdown index 0c080449b64..2fd6c26ad59 100644 --- a/source/_components/device_tracker.tomato.markdown +++ b/source/_components/device_tracker.tomato.markdown @@ -16,11 +16,6 @@ The `tomato` platform requires an extra config variable called `http_id`. The value can be obtained by logging in to the Tomato admin interface and search for `http_id` in the page source code. -Because of a limitation in Tomato's API, this platform will only track wireless -devices. If tracking wired devices like a Philips Hue Hub is necessary, it is -possible to use another platform like -[NMAP](/components/device_tracker.nmap_tracker/). - Because of a limitation in Tomato's API, this platform will only track wireless devices. If tracking wired devices like a Philips Hue Hub is necessary, it is possible to use another platform like [Nmap](/components/device_tracker.nmap_tracker/). @@ -54,7 +49,7 @@ ssl: type: boolean default: false verify_ssl: - description: "If SSL verification for https resources needs to be turned off (for self-signed certs, etc.) this can take on boolean values `False` or `True` or you can pass a location on the device where a certificate can be used for verification e.g., `/mnt/NAS/router_cert.pem`." + description: "If SSL verification for https resources needs to be turned off (for self-signed certs, etc.) this can take on boolean values `false` or `true` or you can pass a location on the device where a certificate can be used for verification e.g., `/mnt/NAS/router_cert.pem`." required: false type: [string, boolean] default: true diff --git a/source/_components/device_tracker.tplink.markdown b/source/_components/device_tracker.tplink.markdown index 29a969f4aa7..0e8a14dc09f 100644 --- a/source/_components/device_tracker.tplink.markdown +++ b/source/_components/device_tracker.tplink.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "TP-Link" +title: "TP-Link Router" description: "Instructions on how to integrate TP-Link routers into Home Assistant." date: 2015-06-22 10:30 sidebar: true @@ -13,7 +13,7 @@ ha_release: pre 0.7 --- -The `tplink` platform allows you to detect presence by looking at connected devices to a [TP-Link](https://www.tp-link.com) device. +The `tplink` platform allows you to detect presence by looking at connected devices to a [TP-Link](https://www.tp-link.com) router. Currently supported devices includes the following: @@ -26,6 +26,9 @@ Currently supported devices includes the following: TP-Link devices typically only allow one login at a time to the admin console. This component will count towards your one allowed login. Depending on how aggressively you configure device_tracker you may not be able to access the admin console of your TP-Link device without first stopping Home Assistant. Home Assistant takes a few seconds to login, collect data, and log out. If you log into the admin console manually, remember to log out so that Home Assistant can log in again.
+## {% linkable_title Configuration %} + +To enable this device tracker, add the following lines to your `configuration.yaml`: ```yaml # Example configuration.yaml entry diff --git a/source/_components/device_tracker.traccar.markdown b/source/_components/device_tracker.traccar.markdown new file mode 100644 index 00000000000..688d02d036e --- /dev/null +++ b/source/_components/device_tracker.traccar.markdown @@ -0,0 +1,63 @@ +--- +layout: page +title: "Traccar GPS tracker" +description: "Instructions how to use Traccar GPS tracker to track devices in Home Assistant." +date: 2018-11-04 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: traccar.png +ha_release: 0.83 +ha_category: Presence Detection +ha_iot_class: "Local Polling" +--- + +`Traccar` uses GPS for tracking and has support for over 1500 different types of devices. + +## {% linkable_title Configuration %} + +To integrate Traccar GPS tracker in Home Assistant, add the following section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: traccar + host: IP_ADDRESS + username: USERNAME + password: PASSWORD +``` + +{% configuration %} +host: + description: The DNS name or IP Address of the server running Traccar. + required: true + type: string +username: + description: The username for the Traccar server. + required: true + type: string +password: + description: The password for your given account on the Traccar server. + required: true + type: string +host: + description: The DNS name or IP Address of the server running Traccar. + required: true + type: string +port: + description: The port of your Traccar server. + required: false + default: 8082 + type: integer +ssl: + description: Use HTTPS to connect to Traccar server. *NOTE* A host *cannot* be an IP address when this option is enabled. + required: false + default: false + type: boolean +verify_ssl: + description: Verify the certification of the system. + required: false + type: boolean + default: true +{% endconfiguration %} \ No newline at end of file diff --git a/source/_components/device_tracker.volvooncall.markdown b/source/_components/device_tracker.volvooncall.markdown deleted file mode 100644 index 26ad808ce08..00000000000 --- a/source/_components/device_tracker.volvooncall.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Volvo On Call Device Tracker" -description: "Instructions for how to integrate Volvo On Call into Home Assistant." -date: 2016-10-02 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: volvo.png -ha_category: Car -ha_release: "0.30" ---- - - -Integrates Volvo on Call device tracker into Home Assistant. See the [main component](/components/volvooncall/) for configuration instructions. diff --git a/source/_components/dialogflow.markdown b/source/_components/dialogflow.markdown index bf2cc4b4e61..b90f327c7d3 100644 --- a/source/_components/dialogflow.markdown +++ b/source/_components/dialogflow.markdown @@ -14,13 +14,9 @@ ha_release: 0.56 redirect_from: /components/apiai/ --- --Before 0.56 this component was named `apiai`. -
- The `dialogflow` component is designed to be used with the [webhook](https://dialogflow.com/docs/fulfillment#webhook) integration of [Dialogflow](https://dialogflow.com/). When a conversation ends with a user, Dialogflow sends an action and parameters to the webhook. -Dialogflow requires a public endpoint (HTTPS recommended), so your Home Assistant should be exposed to the Internet. Dialogflow will return fallback answers if your server does not answer or takes too long (more than 5 seconds). +To be able to receive messages from DialogFlow, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](/addons/duckdns/)) and you need to have the `base_url` configured for the HTTP component ([docs](/components/http/#base_url)). Dialogflow will return fallback answers if your server does not answer or takes too long (more than 5 seconds). Dialogflow could be [integrated](https://dialogflow.com/docs/integrations/) with many popular messaging, virtual assistant and IoT platforms. @@ -42,12 +38,14 @@ To use this integration, you should define a conversation (intent) in Dialogflow ### {% linkable_title Configuring your Dialogflow account %} +To get the webhook URL, go to the integrations page in the configuration screen and find "Dialogflow". Click on "configure". Follow the instructions on the screen. + - [Login](https://console.dialogflow.com/) with your Google account - Click on "Create Agent" - Select name, language (if you are planning to use Google Actions check their [supported languages](https://support.google.com/assistant/answer/7108196?hl=en)) and time zone - Click "Save" - Go to "Fulfillment" (in the left menu) -- Enable Webhook and set your Home Assistant URL with the Dialogflow endpoint, e.g., `https://myhome.duckdns.org/api/dialogflow?api_password=HA_PASSWORD` +- Enable Webhook and set your Dialogflow webhook url as the endpoint, e.g., `https://myhome.duckdns.org/api/webhook/800b4cb4d27d078a8871656a90854a292651b20635685f8ea23ddb7a09e8b417` - Click "Save" - Create a new intent - Below "User says" write one phrase that you, the user, will tell Dialogflow, e.g., `What is the temperature at home?` @@ -60,7 +58,6 @@ To use this integration, you should define a conversation (intent) in Dialogflow Take a look to "Integrations", in the left menu, to configure third parties. - ### {% linkable_title Configuring Home Assistant %} When activated, the [`alexa` component](/components/alexa/) will have Home Assistant's native intent support handle the incoming intents. If you want to run actions based on intents, use the [`intent_script`](/components/intent_script) component. diff --git a/source/_components/discoverable.markdown b/source/_components/discoverable.markdown index 12c170a1eee..03e2880a408 100644 --- a/source/_components/discoverable.markdown +++ b/source/_components/discoverable.markdown @@ -25,11 +25,13 @@ To enable `discovery` in your installation, add the following to your `configura ```yaml # Example configuration.yaml entry discoverable: - expose_password: yes + expose_password: true ``` - -Configuration variables: - -- **expose_password** (*Optional*): It is up to the user to expose the password in the discovery response (Default: off). If password not exposed, uHA instances will have to provide it (`get_instance('my password')`). - +{% configuration %} +expose_password: + description: It is up to the user to expose the password in the discovery response. If password not exposed, uHA instances will have to provide it (`get_instance('my password')`). + required: false + default: false + type: boolean +{% endconfiguration %} diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown index ab790508017..4f9900020b4 100644 --- a/source/_components/discovery.markdown +++ b/source/_components/discovery.markdown @@ -82,9 +82,11 @@ Valid values for ignore are: * `frontier_silicon`: Frontier Silicon internet radios * `google_cast`: Google Cast * `harmony`: Logitech Harmony Hub + * `igd`: Internet Gateway Device * `ikea_tradfri`: IKEA Trådfri (Tradfri) * `logitech_mediaserver`: Logitech media server (Squeezebox) * `netgear_router`: Netgear routers + * `octoprint`: Octoprint * `openhome`: Linn / Openhome * `panasonic_viera`: Panasonic Viera * `philips_hue`: Philips Hue diff --git a/source/_components/doorbird.markdown b/source/_components/doorbird.markdown index 839a77a2e91..b8b3050ae9e 100644 --- a/source/_components/doorbird.markdown +++ b/source/_components/doorbird.markdown @@ -10,11 +10,15 @@ footer: true logo: doorbird.png ha_category: Doorbell ha_release: "0.54" -ha_iot_class: "Local Polling" +ha_iot_class: "Local Push" --- The `doorbird` implementation allows you to integrate your [DoorBird](http://www.doorbird.com/) device in Home Assistant. +## {% linkable_title Setup %} + +The user, which you are going to use with Home Assistant, needs the "API-Operator" permission enabled. + ## {% linkable_title Configuration %} To connect your device, add the following to your `configuration.yaml` file: @@ -22,24 +26,20 @@ To connect your device, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry doorbird: + token: YOUR_DOORBIRD_TOKEN devices: - host: DOORBIRD_IP_OR_HOSTNAME username: YOUR_USERNAME password: YOUR_PASSWORD - hass_url_override: HASS_URL - name: Front Door - - host: DOORBIRD_IP_OR_HOSTNAME - username: YOUR_USERNAME - password: YOUR_PASSWORD - name: Driveway Gate - monitored_conditions: - - doorbell - - motion ``` {% configuration %} +token: + description: Token to be used to authenticate Doorbird calls to Home Assistant. This can be obtained from your "Digital Passport" document provided with your Doorbird. + required: true + type: string devices: - description: List of doorbird devices. + description: List of Doorbird devices. required: true type: list keys: @@ -48,7 +48,7 @@ devices: required: true type: string username: - description: The username of a non-administrator user account on the device. + description: The username of a non-administrator user account on the device. This user needs the "API-Operator" permission enabled on Doorbird. It is recommended to set up a new account on your Doorbird for use with Home Assistant. This can be added via the Doorbird App by choosing Administration -> (User) Add. When the new account is created, you will need to enable the permission "API-Operator" in the "permissions" option. required: true type: string password: @@ -69,25 +69,60 @@ devices: type: string keys: doorbell: - description: Monitor doorbell events + description: Monitor doorbell events. motion: - description: Monitor motion events (Motion monitoring must be enabled on the doorstation via DoorBird app) - + description: Monitor motion events (Motion monitoring must be enabled on the doorstation via DoorBird app). {% endconfiguration %} -The configuration above is also used by the following components: -- [Camera](../camera.doorbird) - View live and historical event based images -- [Switch](../switch.doorbird) - Enable control of relays and camera night vision +The configuration above is also used by the following platforms: + +- [Camera](/components/camera.doorbird): View live and historical event based images. +- [Switch](/components/switch.doorbird): Enable control of relays and camera night vision. + + +## {% linkable_title Full example %} + + +```yaml +doorbird: + token: YOUR_DOORBIRD_TOKEN + devices: + - host: DOORBIRD_IP_OR_HOSTNAME + username: YOUR_USERNAME + password: YOUR_PASSWORD + hass_url_override: HASS_URL + name: Front Door + - host: DOORBIRD_IP_OR_HOSTNAME + username: YOUR_USERNAME + password: YOUR_PASSWORD + name: Driveway Gate + monitored_conditions: + - doorbell + - motion +``` ## {% linkable_title Motion and Doorbell Events %} Home Assistant will fire an event any time a `monitored_condition` happens on a doorstation. Event names are created using the format `doorbird_{station}_{event}` (Examples: `doorbird_side_entry_button`, `doorbird_side_entry_motion`). You can verify the assigned event names in the Home Assistant log file. --Enabling any monitored condition will delete all registered notification services on the doorstation every time Home Assistant starts. This will not affect notifications delivered by the DoorBird mobile app. +
+Home Assistant will register the monitored conditions with the device as schedule entries that correspond to favorites on startup. If you remove monitored conditions from your configuration, Home Assistant will attempt to remove these items from the device. However, in some cases, such as if the IP address of the machine running Home Assistant changes or if the device is renamed in your configuration, this will not work correctly and some data will be left in device storage.
+
+This should not cause any problems, but if you would like to remove it, open a new browser window and navigate to `{Home Assistant URL}/api/doorbird/clear/{DoorBird name}`. Replace `{Home Assistant URL}` with the full path to your running instance, such as `http://localhost:8123`. Replace `{DoorBird name}` with the name specified in your configuration for the device you would like to clear, or how it appears in the Home Assistant UI if you have not specified one, such as `DoorBird 1`. Then use the mobile app to reschedule push notifications.
+
+Please note that clearing device registrations will prevent the device from sending pushes to Home Assistant until you restart your instance with the component enabled. It could also affect other third-party applications you may use with your DoorBird device. It will not break the official mobile app in any way, so mobile push notifications will still work.
+
+The URLs on the event will be based on the configuration used to connect to your Doorbird device. Ability to connect from outside your network will depend on your configuration.
### {% linkable_title Automation Example %} + ```yaml - alias: Doorbird Ring trigger: diff --git a/source/_components/ecobee.markdown b/source/_components/ecobee.markdown index 9edb7356213..7940b41e73c 100644 --- a/source/_components/ecobee.markdown +++ b/source/_components/ecobee.markdown @@ -57,9 +57,9 @@ api_key: required: true type: string hold_temp: - description: True/False whether or not to hold changes indefinitely (True) or until the next scheduled event. + description: Whether or not to hold changes indefinitely (`true`) or until the next scheduled event. required: false - default: "`false`" + default: false type: boolean {% endconfiguration %} diff --git a/source/_components/egardia.markdown b/source/_components/egardia.markdown index b8f0b75396a..648b9d500e1 100644 --- a/source/_components/egardia.markdown +++ b/source/_components/egardia.markdown @@ -106,7 +106,7 @@ There seem to be multiple versions of software running on GATE-02 devices; we ha host: YOUR_HOST username: YOUR_USERNAME password: YOUR_PASSWORD - report_server_enabled: True + report_server_enabled: true report_server_port: PORT_OF_EGARDIASERVER (optional, defaults to 52010) report_server_codes: arm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX diff --git a/source/_components/eight_sleep.markdown b/source/_components/eight_sleep.markdown index 74df0d234eb..a014716a649 100644 --- a/source/_components/eight_sleep.markdown +++ b/source/_components/eight_sleep.markdown @@ -43,7 +43,7 @@ password: description: Defines if you'd like to fetch data for both sides of the bed. required: false type: string - default: False + default: false {% endconfiguration %} ### {% linkable_title Supported features %} diff --git a/source/_components/envisalink.markdown b/source/_components/envisalink.markdown index 15c3283d38a..729853343fc 100644 --- a/source/_components/envisalink.markdown +++ b/source/_components/envisalink.markdown @@ -41,6 +41,7 @@ envisalink: evl_version: 3 keepalive_interval: 60 zonedump_interval: 30 + timeout: 10 panic_type: Police zones: 11: @@ -72,8 +73,8 @@ password: required: true type: string code: - description: Your alarm panel's code, for authenticating user input during arm/disarm. - required: true + description: Your alarm panel's code, for authenticating user input during arm/disarm. If you do not provide this value, the component will prompt the user to enter the code at runtime. + required: false type: string port: description: Which network port to connect with. @@ -95,6 +96,11 @@ zonedump_interval: required: false default: 30 type: integer +timeout: + description: A network connectivity timeout when communicating with the envisalink. If connection is not obtained by this time (in seconds) the component will stop trying to connect. + required: false + default: 10 + type: integer panic_type: description: "Both DSC and Honeywell boards support a panic alarm. This is used when the alarm_trigger service is called in Home Assistant. This determines which type of panic alarm to raise. Valid values are: Police, Fire, Ambulance." required: false @@ -134,3 +140,4 @@ The following services are supported by Envisalink and can be used to script or - **alarm_arm_away**: Arms the alarm in standard away mode. - **alarm_trigger**: Trigger an alarm on the Envisalink connected alarm system. For example, a newer zwave/zigbee sensor can now be integrated into a legacy alarm system using a Home Assistant automation. - **envisalink_alarm_keypress**: Sends a string of up to 6 characters to the alarm. *DSC alarms only* +- **invoke_custom_function**: Invokes a custom PGM function. *DSC alarms only* diff --git a/source/_components/esphome.markdown b/source/_components/esphome.markdown new file mode 100644 index 00000000000..bf2bcab37f0 --- /dev/null +++ b/source/_components/esphome.markdown @@ -0,0 +1,33 @@ +--- +layout: page +title: "ESPHome" +description: "Support for ESPHome devices using the native ESPHome API." +date: 2018-12-16 14:20 +sidebar: true +comments: false +sharing: true +footer: true +logo: esphome.png +ha_category: DIY +ha_release: 0.85 +ha_iot_class: "Local Push" +redirect_from: + - /components/binary_sensor.esphome/ + - /components/cover.esphome/ + - /components/fan.esphome/ + - /components/light.esphome/ + - /components/switch.esphome/ +--- + +This component allows you to connect your [ESPHome](https://esphomelib.com/esphomeyaml/index.html) devices directly into Home Assistant with the [native ESPHome API](https://esphomelib.com/esphomeyaml/components/api.html). + +## {% linkable_title Setup the component via the integrations screen %} + +Menu: *Configuration* -> *Integrations* + +Press on **ESPHome** and configure the integration: + +* Enter the address and port of your ESP. For example if the node is called `livingroom`, the address would be `livingroom.local` and the port number `6053` (default). +* Then Home Assistant will try to connect to the device. If you have a password set Home Assistant will additionally ask you for the password. + +After that, all the entities you have configured on your ESPHome node will automatically show up in Home Assistant. diff --git a/source/_components/eufy.markdown b/source/_components/eufy.markdown index e2c00424fd5..1780b3e4b5e 100644 --- a/source/_components/eufy.markdown +++ b/source/_components/eufy.markdown @@ -43,15 +43,14 @@ eufy: ```bash $ curl -H "Content-Type: application/json" \ -d '{"client_id":"eufyhome-app", "client_Secret":"GQCpr9dSp3uQpsOMgJ4xQ", "email":"USERNAME", "password":"PASSWORD"}' \ - https://home-api.eufylife.com/v1/user/email/login \ - | jq + https://home-api.eufylife.com/v1/user/email/login ``` replacing USERNAME and PASSWORD with the Eufy username and password. This will give an `access_token`. Then run: ```bash $ curl -H token:TOKEN -H category:Home \ - https://home-api.eufylife.com/v1/device/list/devices-and-groups | jq + https://home-api.eufylife.com/v1/device/list/devices-and-groups ``` replacing TOKEN with the `access_token` from the previous command. This will provide the local_code for each device. diff --git a/source/_components/evohome.markdown b/source/_components/evohome.markdown index eaa1706bb5a..c789e2bda5d 100644 --- a/source/_components/evohome.markdown +++ b/source/_components/evohome.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Honeywell evohome" -description: "Instructions on how to integrate Honeywell evohome devices with Home Assistant." +title: "Honeywell evohome/TCC systems" +description: "Instructions on how to integrate a Honeywell evohome/TCC system with Home Assistant." date: 2018-09-25 12:00 sidebar: true comments: false @@ -13,14 +13,11 @@ ha_release: 0.80 ha_iot_class: "Cloud Polling" --- -The `evohome` platform is the main component to set up and integrate all supported evohome devices. +The `evohome` component is the main component to set up and integrate all _non-US_ [Honeywell Total Connect Comfort (TCC)](https://international.mytotalconnectcomfort.com/Account/Login) CH/DHW systems, primarily the Honeywell evohome multi-zone CH/DHW system. It does not support the home security functionality of TCC. -It uses the [evohomeclient](https://pypi.org/project/evohomeclient/) client library and so will let you control (only) _EU-based_ [Honeywell Connect Comfort](https://international.mytotalconnectcomfort.com/Account/Login) systems. - -Currently, only Controllers are supported; support for Heating zones and DHW controllers will be added at a later time. - -It is related to the [honeywell](/components/climate.honeywell/) climate component, which allows limited integration with evohome Heating zones. These two components should be usuable side-by-side, but YMMV. +It uses v2 of the [evohome-client](https://github.com/watchforstock/evohome-client) client library and so will let you control (only) EU/international systems. It _does not_ leverage the [somecomfort](https://github.com/kk7ds/somecomfort) client library as used by US-based systems; for those, you may find what you need at the [honeywell climate platform](/components/climate.honeywell/). +Currently, only Controllers and Heating zones are supported; support for DHW controllers will be added at a later time. More information is available on the [evohome climate platform](/components/climate.evohome/) page. ## {% linkable_title Configuration %} @@ -31,16 +28,11 @@ To use this component in your installation, add the following to your `configura evohome: username: YOUR_USERNAME password: YOUR_PASSWORD - location_idx: 0 ``` -This is a IoT cloud-polling device, and the `scan_interval` is currently fixed at 3 minutes. Testing has indicated that this is a safe interval that - by itself - shouldn't cause you to be rate-limited by Honeywell. - - -### {% linkable_title Configuration variables %} {% configuration %} username: - description: The username (email address) that has access to [Honeywell Connect Comfort](https://international.mytotalconnectcomfort.com/Account/Login) web site. + description: The username (email address) that has access to [Honeywell TCC](https://international.mytotalconnectcomfort.com/Account/Login) web site. required: true type: string password: @@ -48,8 +40,16 @@ password: required: true type: string location_idx: - description: Used to select which location to use, if your login has access to more than one location. Multiple locations are not supported. + description: Used to select which location to use, if your login has access to more than one location. Multiple locations at one time are not supported. required: false type: int default: 0 +scan_interval: + description: How often updates are retreived from Honeywell's web servers. The minimum value is 180 seconds, rounded up to the nearest minute. + required: false + type: int + default: 300 {% endconfiguration %} + +This is an IoT cloud-polling device, and the recommended minimum `scan_interval` is 300 seconds. Testing has indicated that this is a safe interval that - by itself - shouldn't cause you to be rate-limited by Honeywell. + diff --git a/source/_components/fan.mqtt.markdown b/source/_components/fan.mqtt.markdown index 2a726f19e46..13f79898ce0 100644 --- a/source/_components/fan.mqtt.markdown +++ b/source/_components/fan.mqtt.markdown @@ -33,15 +33,15 @@ fan: ``` {% configuration %} +command_topic: + description: The MQTT topic to publish commands to change the fan state. + required: true + type: string name: description: The name of the fan. required: false type: string default: MQTT Fan -command_topic: - description: The MQTT topic to publish commands to change the fan state. - required: true - type: string state_topic: description: The MQTT topic subscribed to receive state updates. required: false @@ -125,7 +125,7 @@ speed_value_template: required: false type: string speeds: - description: "List of speeds this fan is capable of running at. Valid entries are `off`, `low`, `medium`, and `high`." + description: "List of speeds this fan is capable of running at. Valid entries are `off`, `low`, `medium` and `high`." required: false type: string list availability_topic: @@ -147,12 +147,12 @@ unique_id: required: false type: string device: - description: 'Information about the device this fan is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + description: "Information about the device this fan is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set." required: false type: map keys: identifiers: - description: 'A list of IDs that uniquely identify the device. For example a serial number.' + description: A list of IDs that uniquely identify the device. For example a serial number. required: false type: list, string connections: @@ -160,19 +160,19 @@ device: required: false type: list, tuple manufacturer: - description: 'The manufacturer of the device.' + description: The manufacturer of the device. required: false type: string model: - description: 'The model of the device.' + description: The model of the device. required: false type: string name: - description: 'The name of the device.' + description: The name of the device. required: false type: string sw_version: - description: 'The firmware version of the device.' + description: The firmware version of the device. required: false type: string {% endconfiguration %} diff --git a/source/_components/fan.template.markdown b/source/_components/fan.template.markdown index 189cad7ad79..a9f2420ec07 100644 --- a/source/_components/fan.template.markdown +++ b/source/_components/fan.template.markdown @@ -75,7 +75,7 @@ fan: required: false type: template oscillating_template: - description: "Defines a template to get the osc state of the fan. Valid value: True/False" + description: "Defines a template to get the osc state of the fan. Valid value: true/false" required: false type: template direction_template: diff --git a/source/_components/fan.wemo.markdown b/source/_components/fan.wemo.markdown new file mode 100644 index 00000000000..47dc8962340 --- /dev/null +++ b/source/_components/fan.wemo.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "Belkin WeMo (Holmes) Smart Humidifier" +description: "Instructions on how to integrate Belkin WeMo humidifiers into Home Assistant." +date: 2018-10-29 19:58 +sidebar: true +comments: false +sharing: true +footer: true +logo: belkin_wemo.png +ha_category: Fan +ha_iot_class: "Local Push" +ha_release: 0.82 +--- + + +The `wemo` platform allows you to control your [Belkin WeMo](http://www.belkin.com/us/p/P-F7C027/) humidifiers from within Home Assistant. This includes support for the [Holmes Smart Humidifier](https://www.holmesproducts.com/wemo-humidifier.html). + +WeMo devices are automatically discovered if the `discovery` component is enabled. For more configuration information, see the [WeMo component](/components/wemo/) documentation. + +### {% linkable_title Attributes %} + +There are several attributes which can be used for automations and templates: + +| Attribute | Description | +| --------- | ----------- | +| `current_humidity` | An integer that indicates the current relative humidity percentage of the room, as determined by the device's onboard humidity sensor. +| `fan_mode` | String that indicates the current fan speed setting, as reported by the WeMo humidifier. +| `filter_expired` | A boolean that indicates whether the filter has expired and needs to be replaced. +| `filter_life` | The used life of the filter (as a percentage). +| `target_humidity` | An integer that indicates the desired relative humidity percentage (this is constrained to the humidity settings of the device, which are 45, 50, 55, 60, and 100). +| `water level` | String that indicates whether the water level is Good, Low, or Empty. + +### {% linkable_title Services %} + +There are several services which can be used for automations and control of the humidifier: + +| Service | Description | +| --------- | ----------- | +| `set_speed` | Calling this service sets the fan speed (entity_id and speed are required parameters, and speed must be one of the following: off, low, medium, or high). When selecting low for the speed, this will map to the WeMo humidifier speed of minimum. When selecting high for the speed, this will map to the WeMo humidifier speed of maximum. The WeMo humidifier speeds of low and high are unused due to constraints on which fan speeds Home Assistant supports. +| `toggle` | Calling this service will toggle the humidifier between on and off states. +| `turn_off` | Calling this service will turn the humidifier off (entity_id is required). +| `turn_on` | Calling this service will turn the humidifier on and set the speed to the last used speed (defaults to medium, entity_id is required). +| `wemo_set_humidity` | Calling this service will set the desired relative humidity setting on the device (entity_id is a required list of 1 or more entities to set humidity on, and target_humidity is a required float value between 0 and 100 (this value will be rounded down and mapped to one of the valid desired humidity settings of 45, 50, 55, 60, or 100 that are supported by the WeMo humidifier)). +| `wemo_reset_filter_life` | Calling this service will reset the humdifier's filter life back to 100% (entity_id is a required list of 1 or more entities to reset the filter life on). Call this service when you change the filter on your humidifier. diff --git a/source/_components/fan.xiaomi_miio.markdown b/source/_components/fan.xiaomi_miio.markdown index de4a07316da..56b29b2e085 100644 --- a/source/_components/fan.xiaomi_miio.markdown +++ b/source/_components/fan.xiaomi_miio.markdown @@ -122,7 +122,7 @@ The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier and ### Air Humidifier (zhimi.humidifier.v1) - On, Off -- Operation modes (silent, medium, high) +- Operation modes (silent, medium, high, strong) - Buzzer (on, off) - Child lock (on, off) - LED brightness (bright, dim, off) diff --git a/source/_components/ffmpeg.markdown b/source/_components/ffmpeg.markdown index 24f4f30de98..c7d2bf7028b 100644 --- a/source/_components/ffmpeg.markdown +++ b/source/_components/ffmpeg.markdown @@ -14,7 +14,7 @@ ha_category: Image Processing The `ffmpeg` component allows other Home Assistant components to process video and audio streams. This component supports all FFmpeg versions since 3.0.0; if you have an older version, please update.-You need the `ffmpeg` binary in your system path. On Debian 8 or Raspbian (Jessie) you can install it from [debian-backports](https://backports.debian.org/Instructions/). If you want [hardware acceleration](https://trac.ffmpeg.org/wiki/HWAccelIntro) support on a Raspberry Pi, you will need to build from source by yourself. Windows binaries are available on the [FFmpeg](http://www.ffmpeg.org/) website. +You need the `ffmpeg` binary in your system path. On Hassbian you will need to login as the `pi` user and `sudo apt install ffmpeg`. On Debian 8 or Raspbian (Jessie) you can install it from [debian-backports](https://backports.debian.org/Instructions/). If you want [hardware acceleration](https://trac.ffmpeg.org/wiki/HWAccelIntro) support on a Raspberry Pi, you will need to build from source by yourself. Windows binaries are available on the [FFmpeg](http://www.ffmpeg.org/) website.
@@ -35,11 +35,6 @@ ffmpeg_bin: required: false default: ffmpeg type: string -run_test: - description: Check if `input` is usable by ffmpeg. - required: false - default: True - type: boolean {% endconfiguration %} ### {% linkable_title Raspbian Debian Jessie Lite Installations %} diff --git a/source/_components/fibaro.markdown b/source/_components/fibaro.markdown new file mode 100644 index 00000000000..1e503e324d9 --- /dev/null +++ b/source/_components/fibaro.markdown @@ -0,0 +1,59 @@ +--- +layout: page +title: "Fibaro" +description: "Instructions on how to setup Fibaro Z-Wave hubs (HCL and HC2) and configure devices within Home Assistant." +date: 2018-11-14 20:04 +sidebar: true +comments: false +sharing: true +footer: true +logo: fibaro.png +ha_category: Hub +ha_release: 0.83 +ha_iot_class: "Local Push" +redirect_from: + - /components/scene.fibaro/ +--- + +The [Fibaro](http://fibaro.com) hub is a controller mainly connecting to Z-Wave devices. + +Binary sensors, switches, lights (including Dimmers), locks, sensors and covers are supported and will be automatically added when Home Assistant connects to your Fibaro controller. + +## {% linkable_title Configuration %} + +To use Fibaro devices in your installation, add the following to your `configuration.yaml` file using the IP and port number of your Fibaro controller: + +```yaml +fibaro: + url: http://192.168.1.161/api/ + username: your_username + password: your_password +``` + +{% configuration %} +url: + description: The URL for your Fibaro HomeCenter device. + required: true + type: url +username: + description: The username for your Fibaro account. + required: true + type: string +password: + description: The password for your Fibaro account. + required: true + type: string +plugins: + description: Whether to import plugin-generated devices from Fibaro HomeCenter, such as Netatmo and Sonos devices, etc. + required: false + type: bool + default: false +{% endconfiguration %} + +
+ It is recommended to assign a static IP address to your Fibaro controller. This ensures that it won't change its IP address, so you won't have to change the `url` if the controller reboots and comes up with a different IP address. See your router's manual for details on how to set this up. If you need the MAC address of your Fibaro, check the label on the bottom. +
+ +### {% linkable_title Using Z-Wave devices in automation %} + +If you want to use a Z-Wave device from the Fibaro controller in Home Assistant automation, you'll need the entity id. In the Home Assistant UI you'll find all entities listed under the+You must have set a password for your Freebox router web administration page and enabled the option "Permettre les nouvelles demandes d'associations". +
+ +The first time Home Assistant will connect to your Freebox, you will need to +authorize it by pressing the right arrow on the facade of the Freebox when +prompted to do so. + +### {% linkable_title Supported routers %} + +Only the routers with Freebox OS are supported: +* Freebox V7 also known as Freebox Delta +* Freebox V6 also known as Freebox Revolution +* Freebox mini 4k diff --git a/source/_components/freedns.markdown b/source/_components/freedns.markdown index 226c64dfb3d..0f128208110 100644 --- a/source/_components/freedns.markdown +++ b/source/_components/freedns.markdown @@ -6,6 +6,7 @@ date: 2018-03-27 21:30 sidebar: true comments: false sharing: true +logo: afraid_freedns.png footer: true ha_category: Network ha_release: 0.67 diff --git a/source/_components/fritzbox.markdown b/source/_components/fritzbox.markdown index a5ca0a5f68b..e49c19c4245 100644 --- a/source/_components/fritzbox.markdown +++ b/source/_components/fritzbox.markdown @@ -20,7 +20,7 @@ The [AVM](https://en.avm.de) Fritzbox component for Home Assistant allows you to - [FRITZ!Box 6490 Cable](https://en.avm.de/products/fritzbox/fritzbox-6490-cable/) - [FRITZ!Box 7590](https://en.avm.de/products/fritzbox/fritzbox-7590/) - [FRITZ!DECT 200](https://en.avm.de/products/fritzdect/fritzdect-200/) -- [Eurotronic Comet DECT](https://www.eurotronic.org/en/products/comet-dect.html) +- [Eurotronic Comet DECT](https://eurotronic.org/produkte/elektronische-heizkoerperthermostate/sparmatic-comet/) ## {% linkable_title Setup %} @@ -43,7 +43,7 @@ devices: host: description: The hostname or IP address of the Fritzbox. required: true - type: optional + type: string username: description: The username for Smart Home access. required: true diff --git a/source/_components/frontend.markdown b/source/_components/frontend.markdown index 09941498172..5edb773e4b7 100644 --- a/source/_components/frontend.markdown +++ b/source/_components/frontend.markdown @@ -68,7 +68,7 @@ frontend: primary-color: blue ``` -The example above defined two themes named `happy` and `sad`. For each theme you can set values for CSS variables. For a partial list of variables used by the main frontend see [ha-style.js](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/resources/ha-style.js). +The example above defined two themes named `happy` and `sad`. For each theme you can set values for CSS variables. For a partial list of variables used by the main frontend see [ha-style.ts](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/resources/ha-style.ts). Check our [community forums](https://community.home-assistant.io/c/projects/themes) to find themes to use. @@ -101,7 +101,7 @@ To enable "night mode": ```yaml automation: - alias: 'Set dark theme for the night' - initial_state: True + initial_state: true trigger: - platform: time at: '21:00' diff --git a/source/_components/geo_location.geo_json_events.markdown b/source/_components/geo_location.geo_json_events.markdown index 3be0ccc2fb2..2144a0c6bcd 100644 --- a/source/_components/geo_location.geo_json_events.markdown +++ b/source/_components/geo_location.geo_json_events.markdown @@ -41,6 +41,16 @@ radius: required: false type: string default: 20km +latitude: + description: Latitude of the coordinates around which events are considered. + required: false + type: string + default: Latitude defined in your `configuration.yaml` +longitude: + description: Longitude of the coordinates around which events are considered. + required: false + type: string + default: Longitude defined in your `configuration.yaml` {% endconfiguration %} ## {% linkable_title Advanced Configuration Example %} diff --git a/source/_components/geo_location.markdown b/source/_components/geo_location.markdown index c77243971a8..6540d5d2000 100644 --- a/source/_components/geo_location.markdown +++ b/source/_components/geo_location.markdown @@ -14,3 +14,53 @@ ha_release: "0.78" Geo Location aware entities are typically related to events in the real world in the vicinity of Home Assistant's location, like for example weather events, bush fires or earthquakes. Entities can have associated geo location coordinates (latitude and longitude) so that they are displayed on the map. The distance from the entity's coordinates to Home Assistant's location can be used for filtering. + +## {% linkable_title Geo Location trigger %} + +The [Geo Location trigger](/docs/automation/trigger/#geo-location-trigger) can be used in automations triggered by Geo Location entities appearing in or disappearing from zones. The following value must be used as `source` of the trigger depending on which platform is managing the entities: + +| Platform | Source | +|---------------------------------------------------|-------------------------------| +| GeoJSON Events | `geo_json_events` | +| NSW Rural Fire Service Incidents | `nsw_rural_fire_service_feed` | +| U.S. Geological Survey Earthquake Hazards Program | `usgs_earthquakes_feed` | + +Conditions can be used to further filter entities, for example by inspecting their state attributes. + +## {% linkable_title Geo Location notification example %} + +The following example automation creates a notification on the screen when a fire classified as 'Bush Fire' is reported within a predefined bush fire alert zone: + +{% raw %} +```yaml +geo_location: + - platform: nsw_rural_fire_service_feed + categories: + - 'Emergency Warning' + - 'Watch and Act' + - 'Advice' + +zone: + - name: Bush Fire Alert Zone + latitude: -36.666667 + longitude: 149.833333 + radius: 15000 + passive: true + +automation: + - alias: 'Bush Fire Alert' + trigger: + platform: geo_location + source: nsw_rural_fire_service_feed + zone: zone.bush_fire_alert_zone + event: enter + condition: + condition: template + value_template: "{{ trigger.to_state.attributes.type == 'Bush Fire' }}" + action: + - service: persistent_notification.create + data_template: + message: "{{ trigger.to_state.name }} - {{ trigger.to_state.attributes.status }}" + title: "Bush Fire Alert" +``` +{% endraw %} diff --git a/source/_components/geo_location.nsw_rural_fire_service_feed.markdown b/source/_components/geo_location.nsw_rural_fire_service_feed.markdown index 4bae0d66a2a..5879a583c04 100644 --- a/source/_components/geo_location.nsw_rural_fire_service_feed.markdown +++ b/source/_components/geo_location.nsw_rural_fire_service_feed.markdown @@ -50,6 +50,16 @@ categories: required: false type: list default: None. Any incident regardless of its category will be included. +latitude: + description: Latitude of the coordinates around which events are considered. + required: false + type: string + default: Latitude defined in your `configuration.yaml` +longitude: + description: Longitude of the coordinates around which events are considered. + required: false + type: string + default: Longitude defined in your `configuration.yaml` {% endconfiguration %} ## {% linkable_title State Attributes %} diff --git a/source/_components/geo_location.usgs_earthquakes_feed.markdown b/source/_components/geo_location.usgs_earthquakes_feed.markdown new file mode 100644 index 00000000000..c101a2f6697 --- /dev/null +++ b/source/_components/geo_location.usgs_earthquakes_feed.markdown @@ -0,0 +1,123 @@ +--- +layout: page +title: "USGS Earthquakes" +description: "Instructions on how to integrate the U.S. Geological Survey Earthquake Hazards Program Feed feed into Home Assistant." +date: 2018-11-05 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: us-geological-survey.png +ha_category: Geo Location +ha_iot_class: "Cloud Polling" +ha_release: 0.84 +--- + +The `usgs_earthquakes_feed` platform lets you integrate a GeoJSON feed provided by the [U.S. Geological Survey](https://earthquake.usgs.gov/) with information about seismic events like earthquakes. It retrieves incidents from a feed and shows information of those incidents filtered by distance to Home Assistant's location. + +
+
+
+
+
If you've added Home Assistant to the home screen, you have to first remove it from home screen, otherwise, this HTML5 app will show up instead of a browser. Using it would prevent Home Assistant to redirect back to the `Google Assistant` app. + +If you're still having trouble, make sure that you're not connected to the same network Home Assistant is running on, e.g., use 4G/LTE instead.
## {% linkable_title First time setup %} @@ -60,7 +64,7 @@ You need to create an API Key with the [Google Cloud API Console](https://consol 1. Create a new project in the [Actions on Google console](https://console.actions.google.com/). 1. Add/Import a project and give it a name. 2. Click on the `Home Control` card, select the `Smart home` recommendation. - 3. Create an Action, under the build section. Add your Home Assistant URL: `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant`, replace the `[YOUR HOME ASSISTANT URL:PORT]` with the domain / IP address and the port under which your Home Assistant is reachable. + 3. Click `Build your Action`, select `Add Action(s)`, and click `Add your first action`. Add your Home Assistant URL: `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant`, replace the `[YOUR HOME ASSISTANT URL:PORT]` with the domain / IP address and the port under which your Home Assistant is reachable. 4. Click `Done`. Then click on `Overview`, which will lead you back to the app details screen. 2. `Account linking` is required for your app to interact with Home Assistant. Set this up under the `Quick Setup` section. 1. Leave it at the default `No, I only want to allow account creation on my website` and select Next. @@ -69,16 +73,16 @@ You need to create an API Key with the [Google Cloud API Console](https://consol 4. Client Secret: Anything you like, Home Assistant doesn't need this field. 5. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize`. 6. Token URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL:PORT]/auth/token`. - 7. Configure your client. Add scopes for `email` and `name`. + 7. Configure your client: Type `email` and click `Add scope`, then type `name` and click `Add scope` again. 8. Do **NOT** check `Google to transmit clientID and secret via HTTP basic auth header`. 9. Testing instructions: Enter anything. It doesn't matter since you won't submit this app.If you've added Home Assistant to the home screen, you have to first remove it from home screen, otherwise, this HTML5 app will show up instead of a browser. Using it would prevent Home Assistant to redirect back to the `Google Assistant` app.
@@ -87,7 +91,7 @@ If you've added Home Assistant to the home screen, you have to first remove it f 2. Click `Test -> Simulator`, then click `Share` icon in the right top corner. Follow the on-screen instruction: 1. Add team members: Got to `Settings -> Permission`, click `Add`, type the new user's e-mail address and choose `Project -> Viewer` role. 2. Copy and share the link with the new user. - 3. New user clicks the link with their own Google account, it will enable our draft test app under their account. + 3. When the new user opens the link with their own Google account, it will enable your draft test app under their account. 3. Have the new user go to their `Google Assistant` app to add `[test] your app name` to their account. 8. If you want to use the `google_assistant.request_sync` service, to update devices without unlinking and relinking, in Home Assistant, then enable Homegraph API for your project: 1. Go to the [Google API Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview). @@ -105,9 +109,9 @@ google_assistant: project_id: YOUR_PROJECT_ID api_key: YOUR_API_KEY exposed_domains: - - SWITCH - - LIGHT - - GROUP + - switch + - light + - group entity_config: switch.kitchen: name: CUSTOM_NAME_FOR_GOOGLE_ASSISTANT @@ -124,14 +128,19 @@ project_id: description: Project ID from the Actions on Google console (looks like `words-2ab12`) required: true type: string +allow_unlock: + description: "When True, allows Google Assistant to unlock locks." + required: false + type: boolean + default: false api_key: - description: Your API key. + description: Your Homegraph API key (for the `google_assistant.request_sync` service) required: false type: string expose_by_default: description: "Expose devices in all supported domains by default. If set to false, you need to either expose domains or add the expose configuration option to each entity in `entity_config` and set it to true." required: false - default: True + default: true type: boolean exposed_domains: description: List of entity domains to expose to Google Assistant. @@ -170,15 +179,40 @@ entity_config: Currently, the following domains are available to be used with Google Assistant, listed with their default types: - group (on/off) -- input boolean (on/off) +- input_boolean (on/off) - scene (on) - script (on) - switch (on/off) -- fan (on/off) +- fan (on/off/speed) - light (on/off/brightness/rgb color/color temp) +- lock (lock/unlock (to allow assistant to unlock, set the `allow_unlock` key in configuration)) - cover (on/off/set position (via set brightness)) -- media_player (on/off/set volume (via set brightness)) -- climate (temperature setting) +- media_player (on/off/set volume (via set brightness)/source (via set input source)) +- climate (temperature setting, operation_mode) +- vacuum (dock/start/stop/pause) + +### {% linkable_title Media Player Sources %} + +Media Player sources are sent via the Modes trait in Google Assistant. +There is currently a limitation with this feature that requires a hard-coded set of settings. Because of this, the only sources that will be usable by this feature are listed here: +https://developers.google.com/actions/reference/smarthome/traits/modes + +#### Example Command: + +"Hey Google, change input source to TV on Living Room Receiver" + +### {% linkable_title Climate Operation Modes %} + +There is not an exact 1-1 match between Home Assistant and Google Assistant for the available operation modes. +Here are the modes that are currently available: + +- off +- heat +- cool +- heatcool (auto) +- fan-only +- dry +- eco ### {% linkable_title Troubleshooting the request_sync service %} diff --git a/source/_components/greeneye_monitor.markdown b/source/_components/greeneye_monitor.markdown new file mode 100644 index 00000000000..596751358d5 --- /dev/null +++ b/source/_components/greeneye_monitor.markdown @@ -0,0 +1,126 @@ +--- +layout: page +title: "GreenEye Monitor" +description: "Instructions on how to integrate your GreenEye Monitor within Home Assistant." +date: 2018-09-02 11:15 +sidebar: true +comments: false +sharing: true +footer: true +logo: brultech.png +ha_category: Hub +ha_release: 0.82 +ha_iot_class: "Local Push" +--- + +The [GreenEye Monitor (GEM)](http://www.brultech.com/greeneye/) integration for Home Assistant allows you to create sensors for the various data channels of the GEM. Each current transformer (CT) channel, pulse counter, and temperature sensor appears in Home Assistant as a sensor, and can be used in automations. + +Configure your GEM(s) to produce binary-format packets (for example, "Bin32 NET" for a 32-channel GEM with some channels configured for net metering) and send them to an unused port on your Home Assistant machine. (These settings are in the "Packet Send" and "Network" pages of the GEM UI.) Then specify that port and information about your monitor(s) and the data channels you wish to monitor in your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +greeneye_monitor: + port: 8000 + monitors: + - serial_number: YOUR_SERIAL_NUMBER + channels: + - number: 1 + name: total_power + - number: 2 + name: solar_panels_power + net_metering: true + pulse_counters: + - number: 1 + name: sprinklers_water_usage + counted_quantity: "gal" + counted_quantity_per_pulse: 1 + time_unit: "min" + temperature_sensors: + - number: 1 + name: back_porch_temperature +``` + +By default, GEM will send updates every 5 seconds. That's a lot of data, and the databases used by the [`recorder`](/components/recorder) component for history don't do well with that much data, so it is recommended to configure the [`influxdb`](/components/influxdb) component and exclude the GEM sensors from `recorder`. + +{% configuration %} +port: + description: The port on which Home Assistant should listen for packets from your GEM. Must match the port set in the "Network" tab of the GEM setup UI. + required: true + type: string +monitors: + description: The list of monitors that should appear in Home Assistant. Data from other monitors will be ignored. + required: false + type: list + keys: + serial_number: + description: The last five digits (omitting leading zeroes) of your GEM serial number. + required: true + type: integer + channels: + description: The list of channels that should appear in Home Assistant for this monitor. Data from other channels will be ignored. + required: false + type: list + keys: + number: + description: The channel number as it appears in the GEM UI. + required: true + type: integer + name: + description: The name that should be used for this channel's sensor in Home Assistant. + required: true + type: string + net_metering: + description: Set to `true` if the channel is configured for net metering in the GEM, otherwise `false`. + required: false + type: bool + default: false + temperature_sensors: + description: Configuration for temperature sensors + required: false + keys: + temperature_unit: + description: The unit of measure to use for the temperature (F or C) + type: string + required: true + sensors: + description: The list of temperature sensors that should appear in Home Assistant for this monitor. Data from other sensors will be ignored. + required: true + type: list + keys: + number: + description: The sensor number as it appears in the GEM UI. + required: true + type: integer + name: + description: The name that should be used for this sensor in Home Assistant. + required: true + type: string + pulse_counters: + description: The list of pulse counters that should appear in Home Assistant for this monitor. Data from other pulse counters will be ignored. + required: false + type: list + keys: + number: + description: The pulse counter's number as it appears in the GEM UI. + required: true + type: integer + name: + description: The name that should be used for this pulse counter in Home Assistant. + required: true + type: string + counted_quantity: + description: The unit being counted by this pulse counter (e.g., gal, L) + required: true + type: string + counted_quantity_per_pulse: + description: The number of the counted quantity represented by each pulse. + required: false + type: float + default: 1.0 + time_unit: + description: The time unit to use when computing rates (s, min, or h) + required: false + type: string + default: s +{% endconfiguration %} + diff --git a/source/_components/group.markdown b/source/_components/group.markdown index 81098bd5765..e52617c002b 100644 --- a/source/_components/group.markdown +++ b/source/_components/group.markdown @@ -12,7 +12,7 @@ ha_category: Organization ha_qa_scale: internal --- -Groups allow the user to combine multiple entities into one. A group can be promoted to a **view** by setting `view: yes` under the group definition. This will make the group available as a new tab in the frontend. +Groups allow the user to combine multiple entities into one. A group can be promoted to a **view** by setting `view: true` under the group definition. This will make the group available as a new tab in the frontend. Check the **Set State**If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. @@ -32,7 +35,7 @@ If you are using [Hass.io](/hassio/) then just move forward to the configuration #### {% linkable_title Symlinking into virtual environment %} Create a symlink to the `cec` installation including the _cec.so file. Keep in mind different installation methods will result in different locations of cec. - + ```bash $ ln -s /path/to/your/installation/of/cec /path/to/your/venv/lib/python*/site-packages $ ln -s /path/to/your/installation/of/_cec.so /path/to/your/venv/lib/python*/site-packages @@ -41,7 +44,7 @@ $ ln -s /path/to/your/installation/of/_cec.so /path/to/your/venv/lib/python*/sit ##### {% linkable_title Symlinking examples: %} -For the default virtual environment of a [HASSbian Image for Raspberry Pi](/getting-started/installation-raspberry-pi-image/) the command would be as follows. +For the default virtual environment of a [HASSbian Image for Raspberry Pi](/docs/installation/raspberry-pi/) the command would be as follows. ```bash $ ln -s /usr/local/lib/python*/dist-packages/cec /srv/homeassistant/lib/python*/site-packages @@ -49,19 +52,19 @@ $ ln -s /usr/local/lib/python*/dist-packages/_cec.so /srv/homeassistant/lib/pyth ``` -
If after symlinking and adding `hdmi_cec:` to your configuration you are getting the following error in your logs, +
If after symlinking and adding `hdmi_cec:` to your configuration you are getting the following error in your logs,
`* failed to open vchiq instance` you will also need to add the user account Home Assistant runs under, to the `video` group. To add the Home Assistant user account to the `video` group, run the following command. `$ usermod -a -G video
If you want to control `HomeKit` only devices with Home Assistant, check out the [HomeKit controller](/components/homekit_controller/) component. @@ -73,8 +73,13 @@ homekit: description: The local network IP address. Only necessary if the default from Home Assistant does not work. required: false type: string + safe_mode: + description: Only set this parameter if you encounter issues during pairing. ([Safe Mode](#safe-mode)) + required: false + type: boolean + default: false filter: - description: Filters for entities to be included / excluded from HomeKit. ([Configure Filter](#configure-filter)) + description: Filters for entities to be included/excluded from HomeKit. ([Configure Filter](#configure-filter)) required: false type: map keys: @@ -105,7 +110,7 @@ homekit: type: map keys: name: - description: Name of entity to show in HomeKit. HomeKit will cache the name on the first run so a device must be removed and then re-added for any change to take effect. + description: Name of the entity to show in HomeKit. HomeKit will cache the name on the first run so a device must be removed and then re-added for any change to take effect. required: false type: string code: @@ -132,30 +137,36 @@ homekit: ## {% linkable_title Setup %} -To enable the `HomeKit` component in Home Assistant, add the following to your configuration file: +To enable the HomeKit component in Home Assistant, add the following to your configuration file: ```yaml # Example for HomeKit setup homekit: ``` -After Home Assistant has started, the entities specified by the filter are exposed to `HomeKit` if they are [supported](#supported-components). To add them: +After Home Assistant has started, the entities specified by the filter are exposed to HomeKit if they are [supported](#supported-components). To add them: + 1. Open the Home Assistant frontend. A new card will display the `pin code`. 1. Open the `Home` app. -2. Click `Add Accessory`, than select `Don't Have a Code or Can't Scan?` and choose the `Home Assistant Bridge`. +2. Click `Add Accessory`, then select `Don't Have a Code or Can't Scan?` and choose the `Home Assistant Bridge`. 4. Confirm that you are adding an `Uncertified Accessory` by clicking on `Add Anyway`. 5. Enter the `PIN` code. -6. Follow the setup be clicking on `Next` and lastly `Done` in the top right hand corner. +6. Follow the setup by clicking on `Next` and lastly `Done` in the top right-hand corner. 7. The `Home Assistant` Bridge and the Accessories should now be listed in the `Home` app. -After the setup is completed you should be able to control your Home Assistant components through `Home` and `Siri`. +After the setup is completed, you should be able to control your Home Assistant components through Apple's Home and Siri. +## {% linkable_title Move Home Assistant install %} + +If you like to retain your HomeKit pairing through a move to a new Home Assistant device or installation, besides copying the configurations files you need to copy the `.homekit.state` file inside your configurations directory. Keep in mind though that the file is usually hidden by default, depending on your operating system. + +Before you copy it, make sure to stop the old and new Home Assistant instances first entirely, otherwise it won't work. ## {% linkable_title Considerations %} ### {% linkable_title Accessory ID %} -Currently this component uses the `entity_id` to generate a unique `accessory id (aid)` for `HomeKit`. The `aid` is used to identify a device and save all configurations made for it. This however means that if you decide to change an `entity_id` all configurations for this accessory made in the `Home` app will be lost. +Currently, this component uses the `entity_id` to generate a unique `accessory id (aid)` for `HomeKit`. The `aid` is used to identify a device and save all configurations made for it. This, however, means that if you decide to change an `entity_id` all configurations for this accessory made in the `Home` app will be lost. ### {% linkable_title Device Limit %} @@ -163,26 +174,25 @@ The HomeKit guidelines only allow a maximum of 100 unique accessories (`aid`) pe ### {% linkable_title Persistence Storage %} -Unfortunately `HomeKit` doesn't support any kind of persistent storage - only the configuration for accessories that are added to the `Home Assistant Bridge` are kept. To avoid problems it is recommended to use an automation to always start `HomeKit` with at least the same entities setup. If for some reason some entities are not setup, their config will be deleted. (State unknown or similar will not cause any issues.) +Unfortunately `HomeKit` doesn't support any persistent storage - only the configuration for accessories that are added to the `Home Assistant Bridge` are kept. To avoid problems, it is recommended to use an automation to always start `HomeKit` with at least the same entities setup. If for some reason some entities are not set up, their config will be deleted. (State unknown or similar will not cause any issues.) A common situation might be if you decide to disable parts of the configuration for testing. Please make sure to disable `auto start` and `turn off` the `Start HomeKit` automation (if you have one). - ## {% linkable_title Disable Auto Start %} -Depending on your individual setup, it might be necessary to disable `Auto Start` for all accessories to be available for `HomeKit`. Only those entities that are fully setup when the `HomeKit` component is started, can be added. To start `HomeKit` when `auto_start: False`, you can call the service `homekit.start`. +Depending on your setup, it might be necessary to disable `Auto Start` for all accessories to be available for `HomeKit`. Only those entities that are fully set up when the `HomeKit` component is started, can be added. To start `HomeKit` when `auto_start: false`, you can call the service `homekit.start`. -If you have Z-Wave entities you want exposed to HomeKit then you'll need to disable auto start and then start it after the Z-Wave mesh is ready. This is because the Z-Wave entities won't be fully set up until then. This can be automated using an automation. +If you have Z-Wave entities you want to be exposed to HomeKit, then you'll need to disable auto start and then start it after the Z-Wave mesh is ready. This is because the Z-Wave entities won't be fully set up until then. This can be automated using an automation. -
+Please remember that you can only have a single `automation` entry. Add the automation to your existing automations.
{% raw %} ```yaml # Example for Z-Wave homekit: - auto_start: False + auto_start: false automation: - alias: 'Start HomeKit' @@ -202,9 +212,9 @@ For a general delay where your component doesn't generate an event, you can also {% raw %} ```yaml -# Example using a delay after start of Home Assistant +# Example using a delay after the start of Home Assistant homekit: - auto_start: False + auto_start: false automation: - alias: 'Start HomeKit' @@ -217,10 +227,38 @@ automation: ``` {% endraw %} +In some cases it might be desirable to check that all entities are available before starting `HomeKit`. This can be accomplished by adding and additional `binary_sensor` as follows: + +{% raw %} +```yaml +# Example checking specific entities to be available before start +homekit: + auto_start: False + +automation: + - alias: 'Start HomeKit' + trigger: + - platform: homeassistant + event: start + action: + - wait_template: >- + {% if not states.light.kitchen_lights %} + false + {% elif not states.sensor.outside_temperature %} + false + # Repeat for every entity + {% else %} + true + {% endif %} + timeout: 00:15 # Waits 15 minutes + continue_on_timeout: false + - service: homekit.start +``` +{% endraw %} ## {% linkable_title Configure Filter %} -By default no entity will be excluded. To limit which entities are being exposed to `HomeKit`, you can use the `filter` parameter. Keep in mind only [supported components](#supported-components) can be added. +By default, no entity will be excluded. To limit which entities are being exposed to `HomeKit`, you can use the `filter` parameter. Keep in mind only [supported components](#supported-components) can be added. {% raw %} ```yaml @@ -252,6 +290,22 @@ Filters are applied as follows: - if entity is included, pass (as #2 above) - if entity include and exclude, the entity exclude is ignored +## {% linkable_title Safe Mode %} + +The `safe_mode` option should only be used (and only works) if you encounter issues during the pairing. ([Paring hangs - zeroconf error](#pairing-hangs---zeroconf-error)). + +To use `safe_mode`, add the option to your `homekit` config: + +```yaml +homekit: + safe_mode: true +``` + +Restart your Home Assistant instance. If you don't see a `pincode`, follow the [guide](#deleting-the-homekitstate-file) here. Now you should be able to pair normally. + ++To avoid any errors, after you have successfully paired your Home Assistant Bridge, remove the `safe_mode` option from your config and restart Home Assistant. +
## {% linkable_title Supported Components %} @@ -260,7 +314,7 @@ The following components are currently supported: | Component | Type Name | Description | | --------- | --------- | ----------- | | alarm_control_panel | SecuritySystem | All security systems. | -| automation / input_boolean / remote / script | Switch | All represented as switches. | +| automation / input_boolean / remote / scene / script | Switch | All represented as switches. | | binary_sensor | Sensor | Support for `co2`, `door`, `garage_door`, `gas`, `moisture`, `motion`, `occupancy`, `opening`, `smoke` and `window` device classes. Defaults to the `occupancy` device class for everything else. | | climate | Thermostat | All climate devices. | | cover | GarageDoorOpener | All covers that support `open` and `close` and have `garage` as their `device_class`. | @@ -281,19 +335,20 @@ The following components are currently supported: | switch | Switch | Represented as a switch by default but can be changed by using `type` within `entity_config`. | | water_heater | WaterHeater | All water_heater devices. | - ## {% linkable_title Troubleshooting %} ### {% linkable_title Deleting the `.homekit.state` file %} The `.homekit.state` file can be found in the configurations directory. You might need to enable `view hidden files` to see it. + 1. **Stop** Home Assistant 2. Delete the `.homekit.state` file 3. **Start** Home Assistant ### {% linkable_title Errors during pairing %} -If you encounter any issues during pairing, make sure to +If you encounter any issues during pairing, make sure to: + 1. **Stop** Home Assistant 2. Delete the `.homekit.state` file 3. Edit your configuration (see below) @@ -313,48 +368,73 @@ homekit: ``` #### {% linkable_title PIN doesn't appear as persistent status %} + You might have paired the `Home Assistant Bridge` already. If not, delete the `.homekit.state` file ([guide](#deleting-the-homekitstate-file)). #### {% linkable_title `Home Assistant Bridge` doesn't appear in the Home App (for pairing) %} -For `Docker` users: make sure to set `network_mode: host`. Other reasons could be network related. Make sure to check your router configuration. For some it helped when the Home Assistant device was using WIFI, not LAN. Remember that the iOS device needs to be in the same local network as the Home Assistant device for paring. + +This is often setup and network related. Make sure to check the other issues below as well, but things that might work include: +- Check your router configuration +- Try with WIFI **and** LAN +- Change the default [port](#port) + +Remember that the iOS device needs to be in the same local network as the Home Assistant device for paring. + +#### {% linkable_title `Home Assistant Bridge` doesn't appear in the Home App (for pairing) - Docker %} + +Set `network_mode: host`. If you have further problems this [issue](https://github.com/home-assistant/home-assistant/issues/15692) might help. + +#### {% linkable_title `Home Assistant Bridge` doesn't appear in the Home App (for pairing) - VirtualBox %} + +Configure the network mode as `networkbridge`. Otherwise the Home Assistant Bridge won't be exposed to the network. #### {% linkable_title Pairing hangs - zeroconf error %} -Paining eventually fails, you might see and an error message `NonUniqueNameException`. To resolve this, you need to replace a specific file. See the following git issues for more details: [home-assistant#14567](https://github.com/home-assistant/home-assistant/issues/14567) and [home-assistant#17181](https://github.com/home-assistant/home-assistant/issues/17181) + +Pairing eventually fails, you might see and an error message `NonUniqueNameException`. Add the `safe_mode` option to your config, see [safe_mode](#safe-mode). #### {% linkable_title Pairing hangs - only works with debug config %} + Pairing works fine when the filter is set to only include `demo.demo`, but fails with normal config. See [specific entity doesn't work](#specific-entity-doesnt-work) -#### {% linkable_title Duplicate AID found when attempting to add accessory %} -Two of your entities share the same `entity_id`. Either resolve this or configure the [filter](#configure-filter) to exclude them. +#### {% linkable_title Pairing hangs - no error %} +1. Make sure that you don't try to add more than 100 accessories, see [device limit](#device-limit). In rare cases, one of your entities doesn't work with the HomeKit component. Use the [filter](#configure-filter) to find out which one. Feel free to open a new issue in the `home-assistant` repo, so we can resolve it. +2. Check logs, and search for `Starting accessory Home Assistant Bridge on address`. Make sure Home Assistant Bridge hook ups to a correct interface. If it did not, explicitly set `homekit.ip_address` configuration variable. + +#### {% linkable_title Duplicate AID found when attempting to add accessory %} + +Two of your entities share the same `entity_id`. Either resolve this or configure the [filter](#configure-filter) to exclude them. ### {% linkable_title Issues during normal use %} -#### {% linkable_title Pairing hangs - no error %} -Make sure that you don't try to add more then 100 accessories, see [device limit](#device-limit). In rare cases one of your entities doesn't work with the HomeKit component. Use the [filter](#configure-filter) to find out which one. Feel free to open a new issue in the `home-assistant` repo, so we can resolve it. - #### {% linkable_title Some of my devices don't show up - Z-Wave / Discovery %} + See [disable auto start](#disable-auto-start) #### {% linkable_title My entity doesn't show up %} + Check if the domain of your entity is [supported](#supported-components). If it is, check your [filter](#configure-filter) settings. Make sure the spelling is correct, especially if you use `include_entities`. #### {% linkable_title HomeKit doesn't work on second Home Assistant instance %} + To use the HomeKit component with to different Home Assistant instances on the same local network, you need to set a custom name for at least one of them. [config/name](#name) #### {% linkable_title Specific entity doesn't work %} + Although we try our best, some entities don't work with the HomeKit component yet. The result will be that either pairing fails completely or all Home Assistant accessories will stop working. Use the filter to identify which entity is causing the issue. It's best to try pairing and step by step including more entities. If it works unpair and repeat until you find the one that is causing the issues. To help others and the developers, please open a new issue here: [home-assistant/issues/new](https://github.com/home-assistant/home-assistant/issues/new?labels=component: homekit) #### {% linkable_title Accessories are all listed as not responding %} + See [specific entity doesn't work](#specific-entity-doesnt-work) #### {% linkable_title Accessory not responding - after restart or update %} + See [device limit](#device-limit) #### {% linkable_title Accessory not responding - randomly %} -Unfortunately that sometimes happens at the moment. It might help to close the `Home` App and delete it from the cache. Usually the accessory should get back to responding after a few minutes at most. + +Unfortunately, that sometimes happens at the moment. It might help to close the `Home` App and delete it from the cache. Usually, the accessory should get back to responding after a few minutes at most. #### {% linkable_title Accessories not responding / behaving unusual - Upgrade from `0.65.x` %} -To fix this, you need to unpair the `Home Assistant Bridge`, delete the `.homekit.state` file ([guide](#deleting-the-homekitstate-file)) and pair it again. This should only be an issue if you're upgrading from `0.65.x` or below. -[devices]: https://www.home-assistant.io/docs/configuration/devices/ +To fix this, you need to unpair the `Home Assistant Bridge`, delete the `.homekit.state` file ([guide](#deleting-the-homekitstate-file)) and pair it again. This should only be an issue if you're upgrading from `0.65.x` or below. diff --git a/source/_components/homematic.markdown b/source/_components/homematic.markdown index 86ff3df552e..d10b708a7e5 100644 --- a/source/_components/homematic.markdown +++ b/source/_components/homematic.markdown @@ -10,18 +10,19 @@ footer: true logo: homematic.png ha_category: Hub ha_iot_class: "Local Push" +ha_release: 0.23 featured: false --- The [Homematic](http://www.homematic.com/) component provides bi-directional communication with your CCU/Homegear. It uses a XML-RPC connection to set values on devices and subscribes to receive events the devices and the CCU emit. If you are using Homegear with paired [Intertechno](http://intertechno.at/) devices, uni-directional communication is possible as well. -Device support is available for most of the wired and wireless devices, as well as a few IP devices. If you have a setup with mixed protocols, you have to configure additional hosts with the appropriate ports. The default is using port 2001, which are wireless devices. Wired devices usually are available through port 2000 and IP devices through port 2010. The virtual thermostatgroups the CCU provides use port 9292 **and** require you to set the `path` setting to `/groups`. +Device support is available for most of the wired and wireless devices, as well as a lot of IP devices. If you have a setup with mixed protocols, you have to configure additional [interfaces](/components/homematic#interfaces) with the appropriate ports. The default is using port 2001, which are wireless devices. Wired devices usually are available through port 2000 and IP devices through port 2010. The virtual thermostatgroups the CCU provides use port 9292 **and** require you to set the `path` setting to `/groups`. When using SSL on a CCU3, by default the same ports as usual with a prepended 4 are available. So 2001 becomes 42001, 2010 becomes 42010 etc.. If you want to see if a specific device you have is supported, head over to the [pyhomematic](https://github.com/danielperna84/pyhomematic/tree/master/pyhomematic/devicetypes) repository and browse through the source code. A dictionary with the device identifiers (e.g., HM-Sec-SC-2) can be found within the relevant modules near the bottom. If your device is not supported, feel free to contribute. We automatically detect all devices we currently support and try to generate useful names. If you enable name-resolving, we try to fetch names from Metadata (Homegear), via JSON-RPC or the XML-API you may have installed on your CCU. Since this may fail this is disabled by default. -You can manually rename the created entities by using Home Assistant's [Customizing](/docs/configuration/customizing-devices/) feature. With it you are also able to hide entities you don't want to see in the UI. +You can manually rename the created entities by using Home Assistant's [Customizing](/docs/configuration/customizing-devices/) feature. With it you are also able to hide entities you don't want to see in the UI. The HomeMatic component is also supported by the [Entity Registry](https://developers.home-assistant.io/docs/en/entity_registry_index.html), which allows you to change the friendly name and the entity ID directly in the Home Assistant UI. To set up the component, add the following information to your `configuration.yaml` file: @@ -61,9 +62,19 @@ host: required: true type: string port: - description: "Port of CCU/Homegear XML-RPC Server. Wireless: 2001, wired: 2000, IP: 2010, thermostatgroups: 9292." + description: "Port of CCU/Homegear XML-RPC Server. Wireless: 2001, wired: 2000, IP: 2010, thermostatgroups: 9292. With enabled SSL on the CCU3 usually a 4 is prepended to the Port. e.g., 2001 becomes 42001 with enabled SSL." required: false type: integer +ssl: + default: false + description: Set to `true` if SSL support is enabled on the CCU3. + required: false + type: boolean +verify_ssl: + default: false + description: Set to `true` if a valid certificate is being used. The default is `false` as usually a self-signed certificate is configured. + required: false + type: boolean callback_ip: description: Set this, if Home Assistant is reachable under a different IP from the CCU (NAT, Docker etc.). required: false @@ -78,11 +89,11 @@ resolvenames: type: string default: false jsonport: - description: Port of CCU JSON-RPC Server. The default is 80, but it may be different when running CCU virtually via Docker. + description: Port of CCU JSON-RPC Server. The default is 80, but it may be different when running CCU virtually via Docker or with enabled SSL. required: false type: integer username: - description: When fetching names via JSON-RPC, you need to specify a user with guest-access to the CCU. + description: When fetching names via JSON-RPC, you need to specify a user with guest-access to the CCU. Admin-access is required if you work with variables on the CCU. required: false type: string password: @@ -151,7 +162,7 @@ homematic: We use three approaches to fetch the names of devices. Each assumes you have properly named your devices in your existing Homematic setup. As a general advice: Use ASCII for your devices names. Home Assistant won't include non-ASCII characters in entity-names. 1. `json`: The CCU allows to fetch details of the paired devices via JSON-RPC. For this to work you need to add valid credentials to your component-configuration. Guest-access is sufficient to query for device names. -2. `xml`: If you use a CCU, there is an add-on called the "XML-API". With it installed, you are able to fetch all kinds of information from you CCU using XML-RPC. We can leverage this and fetch the names of devices set within the CCU. We don't support authentication with this method. +2. `xml`: If you use a CCU, there is an add-on called the "XML-API". With it installed, you are able to fetch all kinds of information from you CCU using XML-RPC. We can leverage this and fetch the names of devices set within the CCU. We don't support authentication with this method. The `json` method should be preferred over `xml`. Support for the XML-API is only available for downwards compatibility and may be disabled in a future release. 3. `metadata`: Homegear provides device-names through the metadata devices internally have. When using an HM-CFG-LAN interface, you typically use a configuration software ("HomeMatic-Komponenten konfigurieren" is the name of the shortcut on your desktop by default) to pair and configure your devices. If you have paired devices, you'll see them listed in a table. The leftmost column (Name) is prefilled with default names. You can click such a name and enter whatever you like. Resolving names can take some time. So when you start Home Assistant you won't see you devices at first. For a setup with 20+ devices it can take up to a minute until all devices show up in the UI. @@ -178,7 +189,7 @@ sensor: ### {% linkable_title Variables %} -It is possible to read and set values of system variables you have setup on the CCU/Homegear. The supported types for setting values are float- and bool-variables. +It is possible to read and set values of system variables you have setup on the CCU/Homegear. The supported types for setting values are float- and bool-variables. With the CCU a user with Admin-access is required. The states of the variables are available through the attributes of your hub entity (e.g., `homematic.ccu2`). Use templates (as mentioned above) to make your variables available to automations or as entities. The values of variables are polled from the CCU/Homegear in an interval of 30 seconds. Setting the value of a variable happens instantly and is directly pushed. @@ -226,15 +237,17 @@ It may happen that "your_nice_name" is not resolved correctly; the according mes #### {% linkable_title `homematic.keypress` events for HomeMatic IP devices %} -To get the `homematic.keypress` event for some HomeMatic IP devices like WRC2 / WRC6 (wall switch) or SPDR (passage sensor) you have to temporary create an empty program for each channel in the CCU: +To get the `homematic.keypress` event for some HomeMatic IP devices like WRC2 / WRC6 (wall switch) or SPDR (passage sensor) or the KRC4 (key ring remote control) you have to temporary create an empty program for each channel in the CCU: 1. In the menu of your CCU's admin panel go to `Programs and connections` > `Programs & CCU connection` 2. Go to `New` in the footer menu 3. Click the plus icon below `Condition: If...` and press the button `Device selection` 4. Select one of the device's channels you need (1-2 / 1-6 for WRC2 / WRC6 and 2-3 for SPDR) -5. Save the program with the `OK` button -6. When your channel is working now, you can edit it to select the other channels one by one -7. At the end, you can delete this program from the CCU +5. Select short or long key press +6. Save the program with the `OK` button +7. Trigger the program by pressing the button as configured in step 5. Your device might indicate success via a green LED or similar. When you select the device in `Status and control` > `Devices` on the CCU, the `Last Modified` field should no longer be empty +8. When your channel is working now, you can edit it to select the other channels one by one +9. At the end, you can delete this program from the CCU ### {% linkable_title Services %} diff --git a/source/_components/homeworks.markdown b/source/_components/homeworks.markdown new file mode 100644 index 00000000000..239df5790c6 --- /dev/null +++ b/source/_components/homeworks.markdown @@ -0,0 +1,88 @@ +--- +layout: page +title: "Homeworks Hub" +description: "How to use Lutron Homeworks Series 4 & 8 with Home Assistant." +date: 2018-10-05 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lutron.png +ha_category: Hub +featured: false +ha_release: 0.85 +ha_iot_class: "Local Push" +redirect_from: + - /components/binary_sensor.homeworks/ +--- + +[Lutron](http://www.lutron.com/) is an American lighting control company. The Lutron Homeworks Series 4 & 8 systems are relatively old (~2003), and use RS-232 connections to communicate with home automation systems. The `homeworks` component in Home Assistant is responsible for communicating with the main controller for these systems. Communication is through an ethernet to serial converter (NPort, for example). + +Only a subset of the Homeworks system is supported - lights and keypads. + +Lutron has created many systems over the years, each with their own unique interfacing protocol. There are three Homeworks systems - QS, Series 4 & 8, and original. This platform is only for Series 4 & 8. There is another component [lutron](/components/lutron/) which handles Lutron RadioRA 2 systems. + +Homeworks keypad buttons are momentary switches. The button is pressed and released, meaning that there is no "state". Buttons generate `homeworks_button_press` and `homeworks_button_release` events. These events contain the "id", "name", and "button" of the button that was pressed. "id" is derived from "name", and "button" is the number of the button on the keypad (starting at 1). + +## {% linkable_title Configuration %} + +The protocol for automatically extracting device information from the controller isn't documented, so the `homeworks` component must be configured manually. To use Lutron Homeworks devices in your installation, add the following to your `configuration.yaml` file: + +``` yaml +# Example configuration.yaml entry +homeworks: + host: IP_ADDRESS + port: 4001 + dimmers: + - addr: "[02:08:01:01]" + name: "Foyer Sconces" + - addr: "[02:08:01:02]" + name: "Foyer Downlights" + rate: 2 + + keypads: + - addr: "[02:08:02:01]" + name: "Foyer Keypad" +``` + +{% configuration %} +host: + description: The IP address of the ethernet to serial adapter. It is assumed that the adaptor has been preconfigured. + required: true + type: string +port: + description: The port of the ethernet to serial adapter. + required: true + type: port +dimmers: + description: List of dimmers. + required: false + type: list + keys: + addr: + description: The unique address of the dimmer on the controller. The quotes, brackets, and number formatting must be of the form `"[##:##:##:##]"`. + required: true + type: string + name: + description: The name of the sensor will be the title of the button +`"_"` + the name of the keypad/ + required: true + type: string + rate: + description: The amount of time (in seconds) for the light to transition to a new brightness level. + required: false + type: float + default: 1 +keypads: + description: List of keypads. + required: false + type: list + keys: + addr: + description: The unique address of the keypad on the controller. The quotes, brackets, and number formatting must be of the form `"[##:##:##:##]"`. + required: true + type: string + name: + description: The name of the keypad. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/http.markdown b/source/_components/http.markdown index c80fbf4c31c..1e280f8c2be 100644 --- a/source/_components/http.markdown +++ b/source/_components/http.markdown @@ -27,7 +27,7 @@ http: {% configuration %} api_password: - description: Protect the Home Assistant API with a password - this password can also be used to log in to the frontend. Where possible you should use a long lasting access token instead of this. + description: Protect the Home Assistant API with a password - this password can also be used to log in to the frontend. Where your client or other software supports it, you should use [long lasting access token](/docs/authentication/#your-account-profile) instead, as [shown in the REST API](https://developers.home-assistant.io/docs/en/external_api_rest.html) and [websocket API](https://developers.home-assistant.io/docs/en/external_api_websocket.html) documentation. required: false type: string server_host: @@ -41,7 +41,7 @@ server_port: type: integer default: 8123 base_url: - description: "The URL that Home Assistant is available on the internet. For example: `hass-example.duckdns.org:8123`. The iOS app finds local installations, if you have an outside URL use this so that you can auto-fill when discovered in the app." + description: "The URL that Home Assistant is available on the internet. For example: `https://hass-example.duckdns.org:8123`. The iOS app finds local installations, if you have an outside URL use this so that you can auto-fill when discovered in the app." required: false type: string default: Your local IP address @@ -137,7 +137,7 @@ terminology used around Home Assistant. Home Assistant's ## {% linkable_title HTTP sensors %} To use those kind of [sensors](/components/sensor.http/) or -[binary sensors](components/binary_sensor.http/) in your installation no +[binary sensors](/components/binary_sensor.http/) in your installation no configuration in Home Assistant is needed. All configuration is done on the devices themselves. This means that you must be able to edit the target URL or endpoint and the payload. diff --git a/source/_components/hue.markdown b/source/_components/hue.markdown index d9832903b1f..46182598590 100644 --- a/source/_components/hue.markdown +++ b/source/_components/hue.markdown @@ -47,7 +47,7 @@ filename: required: false type: string allow_hue_groups: - description: Enable this to stop Home Assistant from importing the groups defined on the Hue bridge. + description: Disable this to stop Home Assistant from importing the groups defined on the Hue bridge. required: false type: boolean {% endconfiguration %} diff --git a/source/_components/idteck_prox.markdown b/source/_components/idteck_prox.markdown new file mode 100644 index 00000000000..36c8c2541f6 --- /dev/null +++ b/source/_components/idteck_prox.markdown @@ -0,0 +1,47 @@ +--- +layout: page +title: "IDTECK Prox Card Reader" +description: "How to use IDTECK proximity card readers." +date: 2018-11-14 13:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: idteck.jpg +ha_category: Other +featured: false +ha_release: 0.85 +ha_iot_class: "Local Push" +--- + +[IDTECK](http://www.idteck.com) makes ID systems used to control access and identify users. This component works with [Proximity Readers](http://www.idteck.com/en/products/proximity-reader-__-card-%26-tag-__125khz) (RFID card readers). The device is connected to Home Assistant through a serial to ethernet converter (NPort). + +An `idteck_prox_keycard` event is fired whenever a card or key sequence has been entered. The event contains 'card' - the card/key sequence, and the 'name' of the card reader. Checking 'card' against known card numbers can be used as the basis of an entry control system, or as part of a check-in/check-out system. + +## {% linkable_title Configuration %} + +``` yaml +# Example configuration.yaml entry +idteck_prox: + - host: host1.domain.com + port: 4001 + name: "Lower Door" + - host: host2.domain.com + port: 4001 + name: "Upper Door" +``` + +{% configuration %} +host: + description: The hostname or IP address of the ethernet to serial adapter that is connected to the proximity reader. It is assumed that the adapter has been preconfigured. + required: true + type: string +port: + description: The port of the ethernet to serial adapter + required: true + type: port +name: + description: The name of the prox card reader + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/ifttt.markdown b/source/_components/ifttt.markdown index f2b83c028d8..09b762f8772 100644 --- a/source/_components/ifttt.markdown +++ b/source/_components/ifttt.markdown @@ -17,7 +17,7 @@ ha_iot_class: "Cloud Push" ## {% linkable_title Sending events from IFTTT to Home Assistant %} -To be able to receive events from IFTTT, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](/addons/duckdns/)) and you need to have the `base_url` configured for the HTTP component ([docs](https://www.home-assistant.io/components/http/#base_url)). +To be able to receive events from IFTTT, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](/addons/duckdns/)) and you need to have the `base_url` configured for the HTTP component ([docs](/components/http/#base_url)). To set it up, go to the integrations page in the configuration screen and find IFTTT. Click on configure. Follow the instructions on the screen to configure IFTTT. @@ -29,7 +29,7 @@ For example, set the body of the IFTTT webhook to: { "action": "call_service", "service": "light.turn_on", "entity_id": "light.living_room" } ``` -You can then consume that information with the following automation: +You then need to consume that incoming information with the following automation: ```yaml automation: diff --git a/source/_components/ihc.markdown b/source/_components/ihc.markdown index 5fca84708fe..2ec4eaaabbb 100644 --- a/source/_components/ihc.markdown +++ b/source/_components/ihc.markdown @@ -21,12 +21,16 @@ An `ihc` section must be present in the `configuration.yaml` file and contain the following options: ```yaml -# Example configuration.yaml entry +# Example configuration.yaml entry for two IHC controllers ihc: - url: http://192.168.1.3 - username: YOUR_USERNAME - password: YOUR_PASSWORD - info: true + - url: 'http://192.168.1.3' + username: YOUR_USERNAME + password: YOUR_PASSWORD + info: true + - url: 'http://192.168.1.4' + username: YOUR_USERNAME2 + password: YOUR_PASSWORD2 + info: true ``` {% configuration %} diff --git a/source/_components/image_processing.dlib_face_identify.markdown b/source/_components/image_processing.dlib_face_identify.markdown index 34690d6b8fd..2a4752914d4 100644 --- a/source/_components/image_processing.dlib_face_identify.markdown +++ b/source/_components/image_processing.dlib_face_identify.markdown @@ -30,13 +30,26 @@ image_processing: Bob: /home/hass/bob.jpg ``` -Configuration variables: - -- **source** array (*Required*): List of image sources. - - **entity_id** (*Required*): A camera entity id to get picture from. - - **name** (*Optional*): This parameter allows you to override the name of your `image_processing` entity. -- **faces** array (*Required*): List of faces sources. +{% configuration %} +source: + description: List of image sources. + required: true + type: list + keys: + entity_id: + description: A camera entity id to get picture from. + required: true + type: string + name: + description: This parameter allows you to override the name of your `image_processing` entity. + required: false + type: string +faces: + description: List of faces sources. + required: true + type: list +{% endconfiguration %}-If the platform fails to load because it could not install its requirement, install cmake: `sudo apt-get install cmake`. +If the platform fails to load because it could not install its requirement, install cmake: `sudo apt-get install cmake`.
diff --git a/source/_components/image_processing.facebox.markdown b/source/_components/image_processing.facebox.markdown index f2aa6353685..d8253cc0408 100644 --- a/source/_components/image_processing.facebox.markdown +++ b/source/_components/image_processing.facebox.markdown @@ -77,7 +77,7 @@ source: ## {% linkable_title Automations %} -Use the `image_processing.detect_face` events to trigger automations, and breakout the `trigger.event.data` using a [data_template](https://www.home-assistant.io/docs/automation/templating/). The following example automation sends a notification when Ringo Star is recognized: +Use the `image_processing.detect_face` events to trigger automations, and breakout the `trigger.event.data` using a [data_template](/docs/automation/templating/). The following example automation sends a notification when Ringo Star is recognized: {% raw %} ```yaml @@ -139,7 +139,7 @@ You can use an automation to receive a notification when you train a face: ``` {% endraw %} -Any errors on teaching will be reported in the logs. If you enable [system_log](https://www.home-assistant.io/components/system_log/) events: +Any errors on teaching will be reported in the logs. If you enable [system_log](/components/system_log/) events: ```yaml system_log: diff --git a/source/_components/image_processing.seven_segments.markdown b/source/_components/image_processing.seven_segments.markdown index a5944d821b5..fade0f0e082 100644 --- a/source/_components/image_processing.seven_segments.markdown +++ b/source/_components/image_processing.seven_segments.markdown @@ -44,21 +44,65 @@ image_processing: - entity_id: camera.seven_segments ``` -Configuration variables: - -- **ssocr_bin** (*Optional*): The command line tool `ssocr`. Set it if you use a different name for the executable. Defaults to `ssocr`. -- **x_position** (*Optional*): X coordinate of the upper left corner of the area to crop. Defaults to `0`. -- **y_position** (*Optional*): Y coordinate of the upper left corner of the area to crop. Defaults to `0`. -- **height** (*Optional*): Height of the area to crop. Defaults to `0`. -- **width** (*Optional*): Width of the area to crop. Defaults to `0`. -- **rotate** (*Optional*): Rotation of the image. Defaults to `0`. -- **threshold** (*Optional*): Threshold for the difference between the digits and the background. Defaults to `0`. -- **digits** (*Optional*): Number of digits in the display. Defaults to `-1`. -- **extra_arguments** (*Optional*): Other arguments to use. Like `-D`, `dilation`, `erosion`, `greyscale`, `make_mono`, etc. -- **source** array (*Required*): List of image sources. - - **entity_id** (*Required*): A camera entity id to get picture from. - - **name** (*Optional*): This parameter allows you to override the name of your `image_processing` entity. - +{% configuration %} +ssocr_bin: + description: The command line tool `ssocr`. Set it if you use a different name for the executable. + required: false + default: ssocr + type: string +x_position: + description: X coordinate of the upper left corner of the area to crop. + required: false + default: 0 + type: integer +y_position: + description: Y coordinate of the upper left corner of the area to crop. + required: false + default: 0 + type: integer +height: + description: Height of the area to crop. + required: false + default: 0 + type: integer +width: + description: Width of the area to crop. + required: false + default: 0 + type: integer +rotate: + description: Rotation of the image. + required: false + default: 0 + type: integer +threshold: + description: Threshold for the difference between the digits and the background. + required: false + default: 0 + type: integer +digits: + description: Number of digits in the display. + required: false + default: -1 + type: integer +extra_arguments: + description: Other arguments to use. Like `-D`, `dilation`, `erosion`, `greyscale`, `make_mono`, etc. + required: false + type: string +source: + description: List of image sources. + required: true + type: list + keys: + entity_id: + description: A camera entity id to get picture from. + required: true + type: string + name: + description: This parameter allows you to override the name of your `image_processing` entity. + required: false + type: string +{% endconfiguration %} ### {% linkable_title Setup process %} @@ -94,6 +138,7 @@ image_processing: With the help of a [template sensor](/components/sensor.template/), the value can be shown as badge. {% raw %} + ```yaml sensor: - platform: template @@ -103,4 +148,5 @@ sensor: friendly_name: 'Ampere' unit_of_measurement: 'A' ``` + {% endraw %} diff --git a/source/_components/image_processing.tensorflow.markdown b/source/_components/image_processing.tensorflow.markdown new file mode 100644 index 00000000000..96821aa6b78 --- /dev/null +++ b/source/_components/image_processing.tensorflow.markdown @@ -0,0 +1,163 @@ +--- +layout: page +title: "TensorFlow" +description: "Detect and recognize objects with TensorFlow." +date: 2018-10-24 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: tensorflow.png +ha_category: Image Processing +ha_iot_class: "Local Polling" +ha_release: 0.82 +--- + +The `tensorflow` image processing platform allows you to detect and recognize objects in a camera image using [TensorFlow](https://www.tensorflow.org/). The state of the entity is the number of objects detected, and recognized objects are listed in the `summary` attribute along with quantity. The `matches` attribute provides the confidence `score` for recognition and the bounding `box` of the object for each detection category. + ++ The following packages must be installed on Hassbian/Raspbian before following the setup for the component to work: + `$ sudo apt-get install libatlas-base-dev libopenjp2-7 libtiff5` +
+ +## {% linkable_title Setup %} + +You need to install the `tensorflow` Python packages with: `$ pip3 install tensorflow==1.11.0`. The wheel is not available for all platforms. See [the official install guide](https://www.tensorflow.org/install/) for other options. Hass.io is not yet supported but an addon is under development. + +This component requires files to be downloaded, compiled on your computer, and added to the Home Assistant configuration directory. These steps can be performed using the sample script at [this gist](https://gist.github.com/hunterjm/6f9332f92b60c3d5e448ad936d7353c3). Alternatively, if you wish to perform the process manually, the process is as follows: + +- Clone [tensorflow/models](https://github.com/tensorflow/models/tree/master/research/object_detection) +- Compile protobuf models located in `research/object_detection/protos` with `protoc` +- Create the following directory structure inside your config directory: + +```bash + |- {config_dir} + | - tensorflow/ + |- object_detection/ + |- __init__.py +``` + +- Copy required object_detection dependancies to the `object_detection` folder inside of the `tensorflow` folder: + + - `research/object_detection/data` + - `research/object_detection/utils` + - `research/object_detection/protos` + +## {% linkable_title Model Selection %} + +Lastly, it is time to pick a model. It is recommended to start with one of the COCO models available in the [Model Detection Zoo](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md). + +The trade-off between the different models is accuracy vs speed. Users with a decent CPU should start with the `faster_rcnn_inception_v2_coco` model. If you are running on an ARM device like a Raspberry Pi, start with the `ssd_mobilenet_v2_coco` model. + +Whichever model you choose, download it and place the `frozen_inference_graph.pb` file in the `tensorflow` folder in your configuration directory. + +## {% linkable_title Configuration %} + +To enable this platform in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +image_processing: + - platform: tensorflow + source: + - entity_id: camera.local_file + model: + graph: /home/homeassistant/.homeassistant/tensorflow/frozen_inference_graph.pb +``` + +{% configuration %} +source: + description: The list of image sources. + required: true + type: map + keys: + entity_id: + description: A camera entity id to get picture from. + required: true + type: string + name: + description: This parameter allows you to override the name of your `image_processing` entity. + required: false + type: string +file_out: + description: A [template](/docs/configuration/templating/#processing-incoming-data) for the component to save processed images including bounding boxes. `camera_entity` is available as the `entity_id` string of the triggered source camera. + required: false + type: list +model: + description: Information about the TensorFlow model. + required: true + type: map + keys: + graph: + description: Full path to `frozen_inference_graph.pb`. + required: true + type: string + labels: + description: Full path to a `*label_map.pbtext`. + required: false + type: string + default: tensorflow/object_detection/data/mscoco_label_map.pbtxt + model_dir: + description: Full path to tensorflow models directory. + required: false + type: string + default: /tensorflow inside config + area: + description: Custom detection area. Only objects fully in this box will be reported. Top of image is 0, bottom is 1. Same left to right. + required: false + type: map + keys: + top: + description: Top line defined as % from top of image. + required: false + type: float + default: 0 + left: + description: Left line defined as % from left of image. + required: false + type: float + default: 0 + bottom: + description: Bottom line defined as % from top of image. + required: false + type: float + default: 1 + right: + description: Right line defined as % from left of image. + required: false + type: float + default: 1 + categories: + description: List of categories to include in object detection. Can be seen in the file provided to `labels`. + type: list + required: false +{% endconfiguration %} + +`categories` can also be defined as dictionary providing an `area` for each category as seen in the advanced configuration below: + +```yaml +# Example advanced configuration.yaml entry +image_processing: + - platform: tensorflow + source: + - entity_id: camera.driveway + - entity_id: camera.backyard + file_out: + - "/tmp/{% raw %}{{ camera_entity.split('.')[1] }}{% endraw %}_latest.jpg" + - "/tmp/{% raw %}{{ camera_entity.split('.')[1] }}_{{ now().strftime('%Y%m%d_%H%M%S') }}{% endraw %}.jpg" + model: + graph: /home/homeassistant/.homeassistant/tensorflow/frozen_inference_graph.pb + categories: + - category: person + area: + # Exclude top 10% of image + top: 0.1 + # Exclude right 15% of image + right: 0.85 + - car + - truck +``` + +## {% linkable_title Optimising resources %} + +[Image processing components](/components/image_processing/) process the image from a camera at a fixed period given by the `scan_interval`. This leads to excessive processing if the image on the camera hasn't changed, as the default `scan_interval` is 10 seconds. You can override this by adding to your config `scan_interval: 10000` (setting the interval to 10,000 seconds), and then call the `image_processing.scan` service when you actually want to perform processing. diff --git a/source/_components/influxdb.markdown b/source/_components/influxdb.markdown index 4052506b526..d40bdd63642 100644 --- a/source/_components/influxdb.markdown +++ b/source/_components/influxdb.markdown @@ -12,7 +12,11 @@ ha_category: History ha_release: 0.9 --- -The `influxdb` component makes it possible to transfer all state changes to an external [InfluxDB](https://influxdb.com/) database. See the [official installation documentation](https://docs.influxdata.com/influxdb/v1.6/introduction/installation/) for how to set up an InfluxDB database, or if you're using Hass.io, [there is a community add-on](https://community.home-assistant.io/t/community-hass-io-add-on-influxdb/54491) available. +The `influxdb` component makes it possible to transfer all state changes to an external [InfluxDB](https://influxdb.com/) database. See the [official installation documentation](https://docs.influxdata.com/influxdb/v1.7/introduction/installation/) for how to set up an InfluxDB database, or if you're using Hass.io, [there is a community add-on](https://community.home-assistant.io/t/community-hass-io-add-on-influxdb/54491) available. + ++The `influxdb` database component runs parallel to the Home Assistant database. It does not replace it. +
## {% linkable_title Configuration %} @@ -137,11 +141,6 @@ component_config_glob: required: false {% endconfiguration %} -## {% linkable_title Helper scripts %} - -- [Helper script `influxdb_import`](/docs/tools/influxdb_import/) -- [Helper script `db_migrator`](/docs/tools/db_migrator/) (only used for [Home Assistant 0.36](/blog/2017/01/14/iss-usps-images-packages/#influxdb-export)) - ## {% linkable_title Examples %} ### {% linkable_title Full configuration %} diff --git a/source/_components/input_boolean.markdown b/source/_components/input_boolean.markdown index f3ada16039b..8093371b037 100644 --- a/source/_components/input_boolean.markdown +++ b/source/_components/input_boolean.markdown @@ -48,7 +48,7 @@ input_boolean: ### {% linkable_title Restore State %} -This component will automatically restore the state it had prior to Home Assistant stopping as long as you have the `recorder` component enabled and your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. Additional information can be found in the [Restore state](/components/recorder/#restore-state) section of the [`recorder`](/components/recorder/) component documentation. +This component will automatically restore the state it had prior to Home Assistant stopping as long as your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. ## {% linkable_title Automation Examples %} diff --git a/source/_components/input_datetime.markdown b/source/_components/input_datetime.markdown index b7a45611eff..ae403e12759 100644 --- a/source/_components/input_datetime.markdown +++ b/source/_components/input_datetime.markdown @@ -81,11 +81,8 @@ automations and templates. ### {% linkable_title Restore State %} This component will automatically restore the state it had prior to Home -Assistant stopping as long as you have the `recorder` component enabled and your -entity does **not** have a set value for `initial`. To disable this feature, set -a valid value for `initial`. Additional information can be found in the -[Restore state](/components/recorder/#restore-state) section of the -[`recorder`](/components/recorder/) component documentation. +Assistant stopping as long as your entity does **not** have a set value for +`initial`. To disable this feature, set a valid value for `initial`. ### {% linkable_title Services %} diff --git a/source/_components/input_number.markdown b/source/_components/input_number.markdown index 21028b5b904..840803033f3 100644 --- a/source/_components/input_number.markdown +++ b/source/_components/input_number.markdown @@ -85,7 +85,7 @@ input_number: ### {% linkable_title Restore State %} -This component will automatically restore the state it had prior to Home Assistant stopping as long as you have the `recorder` component enabled and your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. Additional information can be found in the [Restore state](/components/recorder/#restore-state) section of the [`recorder`](/components/recorder/) component documentation. +This component will automatically restore the state it had prior to Home Assistant stopping as long as your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. ## {% linkable_title Automation Examples %} diff --git a/source/_components/input_select.markdown b/source/_components/input_select.markdown index ad54719e9b6..826ddb9f7c7 100644 --- a/source/_components/input_select.markdown +++ b/source/_components/input_select.markdown @@ -40,18 +40,18 @@ input_select: required: true type: map keys: - name: - description: Friendly name of the input. - required: false - type: String options: description: List of options to choose from. required: true - type: Array + type: list + name: + description: Friendly name of the input. + required: false + type: string initial: description: Initial value when Home Assistant starts. required: false - type: Element of options + type: map default: First element of options icon: description: Icon to display for the component. @@ -65,7 +65,7 @@ Because YAML defines [booleans](http://yaml.org/type/bool.html) as equivalent, a ### {% linkable_title Restore State %} -This component will automatically restore the state it had prior to Home Assistant stopping as long as you have the `recorder` component enabled and your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. Additional information can be found in the [Restore state](/components/recorder/#restore-state) section of the [`recorder`](/components/recorder/) component documentation. +This component will automatically restore the state it had prior to Home Assistant stopping as long as your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. ### {% linkable_title Services %} diff --git a/source/_components/input_text.markdown b/source/_components/input_text.markdown index fc1247988ba..4907e82659a 100644 --- a/source/_components/input_text.markdown +++ b/source/_components/input_text.markdown @@ -70,6 +70,50 @@ input_text: default: text {% endconfiguration %} +### {% linkable_title Services %} + +This components provide three services to modify the state of the `input_text`. + +| Service | Data | Description | +| ------- | ---- | ----------- | +| `set_value` | `value`+You must have the [homeworks component](/components/homeworks/) configured to use this light. +
diff --git a/source/_components/light.ihc.markdown b/source/_components/light.ihc.markdown index 22a7b2cf60b..c977b9a1c5b 100644 --- a/source/_components/light.ihc.markdown +++ b/source/_components/light.ihc.markdown @@ -27,28 +27,29 @@ project and setup as light devices: - Wireless mobile dimmer - Dataline lamp outlet -To manually configure IHC lights insert this section in your configuration: +To manually configure IHC lights insert the "light" section in +your IHC configuration: ```yaml -light: - - platform: ihc - lights: +ihc: + - url: 'http://192.168.1.3' + username: YOUR_USERNAME2 + password: YOUR_PASSWORD2 + info: true + light: - id: 12345 name: tablelight - dimmable: True - - id: 12346 - name: anotherlight - ... + - id: 23432 ``` {% configuration %} -lights: +light: description: List of lights to setup manually required: false type: map keys: dimmable: - description: Set to True if the IHC resource is a light level + description: Set to True if the IHC resource is a light level. required: false type: boolean default: false @@ -60,6 +61,14 @@ lights: description: The name of the component required: false type: string + note: + description: Descriptive note. + required: false + type: string + position: + description: Where it is placed. + required: false + type: string {% endconfiguration %} In the example above 12345 is ihc resource id and "tablelight" is the name. diff --git a/source/_components/light.lcn.markdown b/source/_components/light.lcn.markdown new file mode 100644 index 00000000000..501b20091b2 --- /dev/null +++ b/source/_components/light.lcn.markdown @@ -0,0 +1,23 @@ +--- +layout: page +title: "LCN Light" +description: "Instructions on how to setup LCN lights within Home Assistant." +date: 2018-11-01 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lcn.png +ha_category: Light +ha_release: 0.85 +ha_iot_class: "Local Push" +--- + +The `lcn` light platform allows the control of the following [LCN](http://www.lcn.eu) ports: + +- (Dimmable) output ports + +## {% linkable_title Configuration %} + +The `lcn` component must be configured correctly, see [LCN component](/components/lcn). +This platform is configured within the `lcn` component. \ No newline at end of file diff --git a/source/_components/light.lifx.markdown b/source/_components/light.lifx.markdown deleted file mode 100644 index 511306f4aec..00000000000 --- a/source/_components/light.lifx.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "LIFX" -description: "Instructions on how to integrate LIFX into Home Assistant." -date: 2016-01-27 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: lifx.png -ha_category: Light -ha_iot_class: "Local Polling" -ha_release: 0.12 ---- - -For installation instructions, see [the LIFX component](/components/lifx/). diff --git a/source/_components/light.lightwave.markdown b/source/_components/light.lightwave.markdown new file mode 100644 index 00000000000..234a04d8273 --- /dev/null +++ b/source/_components/light.lightwave.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "Lightwave Light" +description: "Instructions on how to integrate Lightwave lights with Home Assistant." +date: 2018-12-05 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lightwave.png +ha_category: Light +ha_release: 0.84 +ha_iot_class: "Assumed State" +--- +The `lightwave` light platform integrates your Lightwave lights into Home Assistant. ++Configuration details for the Lightwave platform can be found on the main [Lightwave component](/components/lightwave/) page. +
\ No newline at end of file diff --git a/source/_components/light.limitlessled.markdown b/source/_components/light.limitlessled.markdown index 426ea1e0569..9d6e3d8d8ed 100644 --- a/source/_components/light.limitlessled.markdown +++ b/source/_components/light.limitlessled.markdown @@ -14,9 +14,9 @@ ha_iot_class: "Assumed State" ha_release: pre 0.7 --- -`limitlessled` can control your LimitlessLED lights from within Home Assistant. The lights are also known as EasyBulb, AppLight, AppLamp, [MiLight](http://www.milight.com/), LEDme, dekolight, or iLight. +`limitlessled` can control your LimitlessLED lights from within Home Assistant. The lights are also known as EasyBulb, AppLight, AppLamp, [MiLight](http://www.milight.com/), LEDme, dekolight, or iLight. -LimitlessLED bulbs are controlled via groups, so you can only control an individual bulb via the bridge if it is in a group by itself. +LimitlessLED bulbs are controlled via groups, so you can only control an individual bulb via the bridge if it is in a group by itself. Note: you can assign an `rgbw`, `rgbww`, `white` and `dimmer` group to the same group number, effectively allowing up to 16 groups (4 `rgbww`, 4 `rgbw`, 4 `white` and 4 `dimmer`) per bridge. @@ -24,7 +24,7 @@ An archive of the extensive API can be found [here](https://github.com/Fantasmos ### {% linkable_title Setup %} -Before configuring Home Assistant, make sure you can control your bulbs or LEDs with the MiLight mobile application. Next, discover your bridge(s) IP address. You can do this via your router or a mobile application like Fing ([android](https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=en) or [iTunes](https://itunes.apple.com/us/app/fing-network-scanner/id430921107?mt=8)). +Before configuring Home Assistant, make sure you can control your bulbs or LEDs with the MiLight mobile application. Next, discover your bridge(s) IP address. You can do this via your router or a mobile application like Fing ([android](https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=en) or [iTunes](https://itunes.apple.com/us/app/fing-network-scanner/id430921107?mt=8)). To add `limitlessled` to your installation, add the following to your `configuration.yaml` file: @@ -43,7 +43,7 @@ light: - number: 3 type: rgbw name: Kitchen - fade: on + fade: true - number: 4 type: dimmer name: Livingroom @@ -56,17 +56,50 @@ light: name: Bridge Light ``` -Configuration variables: - -- **bridges** array (*Required*): - - **host** (*Required*): IP address of the device, eg. `192.168.1.32` - - **version** (*Optional*): Bridge version (default is `6`). - - **port** (*Optional*): Bridge port. Defaults to `5987`. For older bridges than `v6` choose `8899`. - - **groups** array (*Required*): The list of available groups. - - **number** (*Required*): Group number (`1`-`4`). Corresponds to the group number on the remote. These numbers may overlap only if the type is different. - - **name** (*Required*): Any name you'd like. Must be unique among all configured groups. - - **type** (*Optional*): Type of group. Choose either `rgbww`, `rgbw`, `white`, `bridge-led` or `dimmer`. `rgbw` is the default if you don't specify this entry. Use `bridge-led` to control the built-in LED of newer WiFi bridges. - - **fade** (*Optional*): Fade behavior. Defaults to `off`. If turned on, the group is faded out before being turned off. This makes for a more pleasing transition at the expense of wall switch usability since the light will turn back on at the lowest brightness if it is power cycled. +{% configuration %} +bridges: + description: A list of bridges. + required: true + type: list + keys: + host: + description: IP address of the device, e.g., `192.168.1.32`. + required: true + type: string + version: + description: Bridge version. + required: false + default: 6 + type: integer + port: + description: Bridge port. For older bridges than `v6` choose `8899`. + required: false + default: 5987 + type: integer + groups: + description: The list of available groups. + required: true + type: list + keys: + number: + description: Group number (`1`-`4`). Corresponds to the group number on the remote. These numbers may overlap only if the type is different. + required: true + type: integer + name: + description: Any name you'd like. Must be unique among all configured groups. + required: true + type: string + type: + description: Type of group. Choose either `rgbww`, `rgbw`, `white`, `bridge-led` or `dimmer`. Use `bridge-led` to control the built-in LED of newer WiFi bridges. + required: false + default: rgbw + type: string + fade: + description: Fade behavior. If turned on (true), the group is faded out before being turned off. This makes for a more pleasing transition at the expense of wall switch usability since the light will turn back on at the lowest brightness if it is power cycled. + required: false + default: false + type: boolean +{% endconfiguration %} ### {% linkable_title Night Effect %} @@ -102,8 +135,8 @@ Refer to the [light]({{site_root}}/components/light/) documentation for general - *Temperature*: Wifi bridge v6 supports 101 temperature steps; older versions only 10. - *Brightness*: Wifi bridge v6 supports 101 brightness steps; older versions only 10. - **Dimmer** (Only supported on v6 bridges) - - This type is for a single color LED dimmer like the 1CH MiLight dimmer module or similar. This type is only supported by the version 6 Wifi bridges. - - *Brightness*: Wifi bridge v6 supports 101 brightness steps. + - This type is for a single color LED dimmer like the 1CH MiLight dimmer module or similar. This type is only supported by the version 6 Wifi bridges. + - *Brightness*: Wifi bridge v6 supports 101 brightness steps. - **Transitions** - If a transition time is set, the group will transition between the current settings and the target settings for the duration specified. Transitions from or to white are not possible - the color will change immediately. diff --git a/source/_components/light.markdown b/source/_components/light.markdown index cf7a4413e1b..0b6ffb23f5b 100644 --- a/source/_components/light.markdown +++ b/source/_components/light.markdown @@ -39,7 +39,7 @@ Most lights do not support all attributes. You can check the platform documentat | `color_temp` | yes | An integer in mireds representing the color temperature you want the light to be. | `kelvin` | yes | Alternatively, you can specify the color temperature in Kelvin. | `color_name` | yes | A human-readable string of a color name, such as `blue` or `goldenrod`. All [CSS3 color names](https://www.w3.org/TR/css-color-3/#svg-color) are supported. -| `brightness` | yes | Integer between 0 and 255 for how bright the color should be. +| `brightness` | yes | Integer between 0 and 255 for how bright the light should be. | `brightness_pct`| yes | Alternatively, you can specify brightness in percent (a number between 0 and 100). | `flash` | yes | Tell light to flash, can be either value `short` or `long`. | `effect`| yes | Applies an effect such as `colorloop` or `random`. diff --git a/source/_components/light.mqtt.markdown b/source/_components/light.mqtt.markdown index 10604217165..6ad68f8e898 100644 --- a/source/_components/light.mqtt.markdown +++ b/source/_components/light.mqtt.markdown @@ -1,7 +1,7 @@ --- layout: page title: "MQTT Light" -description: "Instructions on how to setup MQTT lights within Home Assistant." +description: "Instructions on how to setup MQTT lights using default schema within Home Assistant." date: 2015-11-13 08:30 sidebar: true comments: false @@ -10,11 +10,33 @@ footer: true logo: mqtt.png ha_category: Light ha_iot_class: depends +redirect_from: + - /components/light.mqtt_json/ + - /components/light.mqtt_template/ --- -The `mqtt` light platform lets you control your MQTT enabled lights. It supports setting brightness, color temperature, effects, flashing, on/off, RGB colors, transitions, XY colors and white values. +The `mqtt` light platform with lets you control your MQTT enabled lights through one of the supported message schemas. -## {% linkable_title Configuration %} +## {% linkable_title Comparison of light MQTT schemas %} + +| Function | [`default`](#default-schema) | [`json`](#json-schema) | [`template`](#template-schema) | +|-------------------|------------------------------------------------------------|----------------------------------------------------------------------|------------------------------------------------------------------------------| +| Brightness | ✔ | ✔ | ✔ | +| Color temperature | ✔ | ✔ | ✔ | +| Effects | ✔ | ✔ | ✔ | +| Flashing | ✘ | ✔ | ✔ | +| RGB Color | ✔ | ✔ | ✔ | +| Transitions | ✘ | ✔ | ✔ | +| XY Color | ✔ | ✔ | ✘ | +| HS Color | ✔ | ✔ | ✘ | +| White Value | ✔ | ✔ | ✔ | + + +## {% linkable_title Default schema %} + +The `mqtt` light platform with default schema lets you control your MQTT enabled lights. It supports setting brightness, color temperature, effects, flashing, on/off, RGB colors, transitions, XY colors and white values. + +## {% linkable_title Default schema - Configuration %} In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with a `RETAIN` flag, the MQTT light will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the switch will be `false` / `off`. @@ -60,6 +82,10 @@ brightness_value_template: description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the brightness value." required: false type: string +color_temp_command_template: + description: "Defines a [template](/docs/configuration/templating/) to compose message which will be sent to `color_temp_command_topic`. Available variables: `value`." + required: false + type: string color_temp_command_topic: description: The MQTT topic to publish commands to change the light’s color temperature state. The color temperature command slider has a range of 153 to 500 mireds (micro reciprocal degrees). required: false @@ -69,7 +95,7 @@ color_temp_state_topic: required: false type: string color_temp_value_template: - description: "Defines a [template](/topics/templating/) to extract the color temperature value." + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the color temperature value." required: false type: string effect_command_topic: @@ -133,7 +159,7 @@ retain: type: boolean default: false rgb_command_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to compose message which will be sent to `rgb_command_topic`. Available variables: `red`, `green` and `blue`." + description: "Defines a [template](/docs/configuration/templating/) to compose message which will be sent to `rgb_command_topic`. Available variables: `red`, `green` and `blue`." required: false type: string rgb_command_topic: @@ -160,6 +186,11 @@ white_value_command_topic: description: "The MQTT topic to publish commands to change the light's white value." required: false type: string +white_value_scale: + description: "Defines the maximum white value (i.e. 100%) of the MQTT device." + required: false + type: integer + default: 255 white_value_state_topic: description: The MQTT topic subscribed to receive white value updates. required: false @@ -194,6 +225,35 @@ payload_not_available: required: false type: string default: offline +device: + description: 'Information about the device this light is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + required: false + type: map + keys: + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: list, string + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list + manufacturer: + description: 'The manufacturer of the device.' + required: false + type: string + model: + description: 'The model of the device.' + required: false + type: string + name: + description: 'The name of the device.' + required: false + type: string + sw_version: + description: 'The firmware version of the device.' + required: false + type: string {% endconfiguration %}@@ -204,21 +264,7 @@ payload_not_available: XY and RGB can not be used at the same time. If both are provided, XY overrides RGB.
-## {% linkable_title Comparison of light MQTT platforms %} - -| Function | [`mqtt`](/components/light.mqtt/) | [`mqtt_json`](/components/light.mqtt_json/) | [`mqtt_template`](/components/light.mqtt_template/) | -|-------------------|------------------------------------------------------------|----------------------------------------------------------------------|------------------------------------------------------------------------------| -| Brightness | ✔ | ✔ | ✔ | -| Color temperature | ✔ | ✔ | ✔ | -| Effects | ✔ | ✔ | ✔ | -| Flashing | ✘ | ✔ | ✔ | -| RGB Color | ✔ | ✔ | ✔ | -| Transitions | ✘ | ✔ | ✔ | -| XY Color | ✔ | ✔ | ✘ | -| HS Color | ✔ | ✔ | ✘ | -| White Value | ✔ | ✔ | ✔ | - -## {% linkable_title Examples %} +## {% linkable_title Default schema - Examples %} In this section you will find some real-life examples of how to use this sensor. @@ -284,8 +330,516 @@ light: on_command_type: 'brightness' ``` -### {% linkable_title Implementations %} +## {% linkable_title Default schema - Implementations %} - A [basic example](https://github.com/mertenats/open-home-automation/tree/master/ha_mqtt_light) using a nodeMCU board (ESP8266) to control its built-in LED (on/off). - Another [example](https://github.com/mertenats/open-home-automation/tree/master/ha_mqtt_rgb_light) to control a RGB LED (on/off, brightness, and colors). - [Integration guide](https://github.com/xoseperez/espurna/wiki/HomeAssistant) for the ESPUrna firmware (ESP8285/ESP8266). + +## {% linkable_title JSON schema %} + +The `mqtt` light platform with JSON schema lets you control a MQTT-enabled light that can receive [JSON](https://en.wikipedia.org/wiki/JSON) messages. + +This schema supports on/off, brightness, RGB colors, XY colors, color temperature, transitions, short/long flashing and white values. The messages sent to/from the lights look similar to this, omitting fields when they aren't needed: + +```json +{ + "brightness": 255, + "color_temp": 155, + "color": { + "r": 255, + "g": 180, + "b": 200, + "x": 0.406, + "y": 0.301, + "h": 344.0, + "s": 29.412 + }, + "effect": "colorloop", + "state": "ON", + "transition": 2, + "white_value": 150 +} +``` + +## {% linkable_title JSON schema - Configuration %} + +In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with the RETAIN flag, the MQTT light will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the light will be off. + +When a state topic is not available, the light will work in optimistic mode. In this mode, the light will immediately change state after every command. Otherwise, the light will wait for state confirmation from the device (message from `state_topic`). + +Optimistic mode can be forced, even if state topic is available. Try enabling it if the light is operating incorrectly. + +```yaml +# Example configuration.yaml entry +light: + - platform: mqtt + schema: json + command_topic: "home/rgb1/set" +``` + +{% configuration %} +name: + description: The name of the light. + required: false + type: string + default: MQTT JSON Light +unique_id: + description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. + required: false + type: string +command_topic: + description: The MQTT topic to publish commands to change the light’s state. + required: true + type: string +brightness: + description: Flag that defines if the light supports brightness. + required: false + type: boolean + default: false +brightness_scale: + description: "Defines the maximum brightness value (i.e. 100%) of the MQTT device." + required: false + type: integer + default: 255 +color_temp: + description: Flag that defines if the light supports color temperature. + required: false + type: boolean + default: false +effect: + description: Flag that defines if the light supports effects. + required: false + type: boolean + default: false +effect_list: + description: The list of effects the light supports. + required: false + type: string list +flash_time_long: + description: The duration, in seconds, of a “long” flash. + required: false + type: integer + default: 10 +flash_time_short: + description: The duration, in seconds, of a “short” flash. + required: false + type: integer + default: 2 +optimistic: + description: Flag that defines if the light works in optimistic mode. + required: false + type: boolean + default: "`true` if no state topic defined, else `false`." +qos: + description: The maximum QoS level of the state topic. + required: false + type: integer + default: 0 +retain: + description: If the published message should have the retain flag on or not. + required: false + type: boolean + default: false +rgb: + description: Flag that defines if the light supports RGB colors. + required: false + type: boolean + default: false +state_topic: + description: The MQTT topic subscribed to receive state updates. + required: false + type: string +white_value: + description: Flag that defines if the light supports white values. + required: false + type: boolean + default: false +xy: + description: Flag that defines if the light supports XY colors. + required: false + type: boolean + default: false +hs: + description: Flag that defines if the light supports HS colors. + required: false + type: boolean + default: false +availability_topic: + description: The MQTT topic subscribed to receive availability (online/offline) updates. + required: false + type: string +payload_available: + description: The payload that represents the available state. + required: false + type: string + default: online +payload_not_available: + description: The payload that represents the unavailable state. + required: false + type: string + default: offline +device: + description: 'Information about the device this light is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + required: false + type: map + keys: + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: list, string + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list + manufacturer: + description: 'The manufacturer of the device.' + required: false + type: string + model: + description: 'The model of the device.' + required: false + type: string + name: + description: 'The name of the device.' + required: false + type: string + sw_version: + description: 'The firmware version of the device.' + required: false + type: string +{% endconfiguration %} + ++ Make sure that your topics match exact. `some-topic/` and `some-topic` are different topics. +
+ ++ RGB, XY and HSV can not be used at the same time in `state_topic` messages. Make sure that only one of the color models is in the "color" section of the state MQTT payload. +
+ +## {% linkable_title JSON schema - Examples %} + +In this section you find some real-life examples of how to use this sensor. + +### {% linkable_title Brightness and RGB support %} + +To enable a light with brightness and RGB support in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - platform: mqtt + schema: json + name: mqtt_json_light_1 + state_topic: "home/rgb1" + command_topic: "home/rgb1/set" + brightness: true + rgb: true +``` + +### {% linkable_title Brightness and no RGB support %} + +To enable a light with brightness (but no color support) in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - platform: mqtt + schema: json + name: mqtt_json_light_1 + state_topic: "home/rgb1" + command_topic: "home/rgb1/set" + brightness: true +``` + +### {% linkable_title Brightness Scaled %} + +To enable a light using a brightness scale other than 8bit the `brightness_scale` option may be added to denote the "fully on" value: +```yaml +# Example configuration.yaml entry +light: + - platform: mqtt + schema: json + name: mqtt_json_light_1 + state_topic: "home/light" + command_topic: "home/light/set" + brightness: true + brightness_scale: 4095 +``` + +Home Assistant will then convert its 8bit value in the message to and from the device: + +```json +{ + "brightness": 4095, + "state": "ON" +} +``` + +### {% linkable_title HS Color %} + +To use a light with hue+saturation as the color model, set `hs` to `true` in the platform configuration: + +```yaml +light: + - platform: mqtt + schema: json + name: mqtt_json_hs_light + state_topic: "home/light" + command_topic: "home/light/set" + hs: true +``` + +Home Assistant expects the hue values to be in the range 0 to 360 and the saturation values to be scaled from 0 to 100. For example, the following is a blue color shade: + +```json +{ + "state": "ON", + "color": { + "h": 24.0, + "s": 100.0 + } +} +``` + +### {% linkable_title Brightness and RGBW support %} + +To enable a light with brightness, RGB support and a separate white channel (RGBW) in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - platform: mqtt + schema: json + name: mqtt_json_light_1 + state_topic: "home/rgbw1" + command_topic: "home/rgbw1/set" + brightness: true + rgb: true + white_value: true +``` + + +## {% linkable_title Implementations %} + +- A full example of custom lighting using this platform and an ESP8266 microcontroller can be found [here](https://github.com/corbanmailloux/esp-mqtt-rgb-led). It supports on/off, brightness, transitions, RGB colors, and flashing. + +- There is also another implementation forked from the above repo, it supports all the same features but is made for addressable LED strips using FastLED on a NodeMCU V3 it can be found [here](https://github.com/JammyDodger231/nodemcu-mqtt-rgb-led). + +- [McLighting](https://github.com/toblum/McLighting) is another ESP8266 firmware for WS2812 addressable LEDs. + +- [MQTT JSON Light](https://github.com/mertenats/Open-Home-Automation/tree/master/ha_mqtt_rgbw_light_with_discovery) is another implementation for ESP8266 including [MQTT discovery](/docs/mqtt/discovery/). + +- [esphomelib](https://github.com/OttoWinter/esphomelib) is a library for ESP8266 and ESP32 boards that has many of Home Assistant's MQTT features (like [discovery](/docs/mqtt/discovery/)) pre-implemented and provides high-level abstractions for components such as lights or sensors. + +- [AiLight](https://github.com/stelgenhof/AiLight) is a custom firmware for the Ai-Thinker (and equivalent) RGBW WiFi light bulbs that has an ESP8266 onboard and controlled by the MY9291 LED driver. It implements the [MQTT JSON light](/components/light.mqtt_json/) platform and supports ON/OFF, RGBW colours, brightness, colour temperature, flashing and transitions. Also it includes [MQTT Auto Discovery](/docs/mqtt/discovery/)) and the MQTT Last Will and Testament is enabled as well. + +## {% linkable_title Template schema %} + +The `mqtt` light platform with template schema lets you control a MQTT-enabled light that receive commands on a command topic and optionally sends status update on a state topic. +It is format-agnostic so you can use any data format you want (i.e. string, JSON), just configure it with templating. + +This schema supports on/off, brightness, RGB colors, XY colors, color temperature, transitions, short/long flashing, effects and white values. + +## {% linkable_title Template schema - Configuration %} + +In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with the RETAIN flag, the MQTT light will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the light will be off. + +When a state topic is not available, the light will work in optimistic mode. In this mode, the light will immediately change state after every command. Otherwise, the light will wait for state confirmation from the device (message from `state_topic`). + +Optimistic mode can be forced, even if state topic is available. Try enabling it if the light is operating incorrectly. + +```yaml +# Example configuration.yaml entry +light: + - platform: mqtt + schema: template + command_topic: "home/rgb1/set" + command_on_template: "on" + command_off_template: "off" +``` + +{% configuration %} +name: + description: The name of the light. + required: false + type: string + default: MQTT Template Light +unique_id: + description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. + required: false + type: string +effect_list: + description: List of possible effects. + required: false + type: string list +command_topic: + description: The MQTT topic to publish commands to change the light’s state. + required: true + type: string +state_topic: + description: The MQTT topic subscribed to receive state updates. + required: false + type: string +command_on_template: + description: "The [template](/docs/configuration/templating/#processing-incoming-data) for *on* state changes. Available variables: `state`, `brightness`, `red`, `green`, `blue`, `white_value`, `flash`, `transition` and `effect`." + required: true + type: string +command_off_template: + description: "The [template](/docs/configuration/templating/#processing-incoming-data) for *off* state changes. Available variables: `state` and `transition`." + required: true + type: string +state_template: + description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract state from the state payload value." + required: false + type: string +brightness_template: + description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract brightness from the state payload value." + required: false + type: string +red_template: + description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract red color from the state payload value." + required: false + type: string +green_template: + description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract green color from the state payload value." + required: false + type: string +blue_template: + description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract blue color from the state payload value." + required: false + type: string +color_temp_template: + description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract color temperature from the state payload value." + required: false + type: string +effect_template: + description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract effect from the state payload value." + required: false + type: string +white_value_template: + description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract white value from the state payload value." + required: false + type: string +optimistic: + description: Flag that defines if the light works in optimistic mode. + required: false + type: string + default: "`true` if no state topic or state template is defined, else `false`." +qos: + description: The maximum QoS level of the state topic. + required: false + type: integer + default: 0 +availability_topic: + description: The MQTT topic subscribed to receive availability (online/offline) updates. + required: false + type: string +payload_available: + description: The payload that represents the available state. + required: false + type: string + default: online +payload_not_available: + description: The payload that represents the unavailable state. + required: false + type: string + default: offline +device: + description: 'Information about the device this light is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + required: false + type: map + keys: + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: list, string + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list + manufacturer: + description: 'The manufacturer of the device.' + required: false + type: string + model: + description: 'The model of the device.' + required: false + type: string + name: + description: 'The name of the device.' + required: false + type: string + sw_version: + description: 'The firmware version of the device.' + required: false + type: string +{% endconfiguration %} + ++ Make sure that your topics match exact. `some-topic/` and `some-topic` are different topics. +
+ +## {% linkable_title Template schema - Examples %} + +In this section you find some real-life examples of how to use this light. + +### {% linkable_title Simple string payload %} + +For a simple string payload with the format `state,brightness,r-g-b` (e.g., `on,255,255-255-255`), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - platform: mqtt + schema: template + command_topic: "home/rgb1/set" + state_topic: "home/rgb1/status" + command_on_template: "{% raw %}on,{{ brightness|d }},{{ red|d }}-{{ green|d }}-{{ blue|d }}{% endraw %}" + command_off_template: "off" + state_template: "{% raw %}{{ value.split(',')[0] }}{% endraw %}" # must return `on` or `off` + brightness_template: "{% raw %}{{ value.split(',')[1] }}{% endraw %}" + red_template: "{% raw %}{{ value.split(',')[2].split('-')[0] }}{% endraw %}" + green_template: "{% raw %}{{ value.split(',')[2].split('-')[1] }}{% endraw %}" + blue_template: "{% raw %}{{ value.split(',')[2].split('-')[2] }}{% endraw %}" +``` + +### {% linkable_title JSON payload %} + +For a JSON payload with the format `{"state": "on", "brightness": 255, "color": [255, 255, 255], "effect": "rainbow"}`, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - platform: mqtt + schema: template + effect_list: + - rainbow + - colorloop + command_topic: "home/rgb1/set" + state_topic: "home/rgb1/status" + command_on_template: >{% raw %} + {"state": "on" + {%- if brightness is defined -%} + , "brightness": {{ brightness }} + {%- endif -%} + {%- if red is defined and green is defined and blue is defined -%} + , "color": [{{ red }}, {{ green }}, {{ blue }}] + {%- endif -%} + {%- if effect is defined -%} + , "effect": "{{ effect }}" + {%- endif -%} + }{% endraw %} + command_off_template: '{"state": "off"}' + state_template: '{% raw %}{{ value_json.state }}{% endraw %}' + brightness_template: '{% raw %}{{ value_json.brightness }}{% endraw %}' + red_template: '{% raw %}{{ value_json.color[0] }}{% endraw %}' + green_template: '{% raw %}{{ value_json.color[1] }}{% endraw %}' + blue_template: '{% raw %}{{ value_json.color[2] }}{% endraw %}' + effect_template: '{% raw %}{{ value_json.effect }}{% endraw %}' +``` + +### {% linkable_title Template schema - No brightness or color support %} + +If you don't want brightness, color or effect support, just omit the corresponding configuration sections. diff --git a/source/_components/light.mqtt_json.markdown b/source/_components/light.mqtt_json.markdown deleted file mode 100644 index b5b4099a276..00000000000 --- a/source/_components/light.mqtt_json.markdown +++ /dev/null @@ -1,288 +0,0 @@ ---- -layout: page -title: "MQTT JSON Light" -description: "Instructions for how to setup MQTT JSON lights within Home Assistant." -date: 2016-08-09 08:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Light -ha_iot_class: depends -ha_release: 0.26 ---- - -The `mqtt_json` light platform lets you control a MQTT-enabled light that can receive [JSON](https://en.wikipedia.org/wiki/JSON) messages. - -This platform supports on/off, brightness, RGB colors, XY colors, color temperature, transitions, short/long flashing and white values. The messages sent to/from the lights look similar to this, omitting fields when they aren't needed: - -```json -{ - "brightness": 255, - "color_temp": 155, - "color": { - "r": 255, - "g": 180, - "b": 200, - "x": 0.406, - "y": 0.301, - "h": 344.0, - "s": 29.412 - }, - "effect": "colorloop", - "state": "ON", - "transition": 2, - "white_value": 150 -} -``` - -In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with the RETAIN flag, the MQTT light will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the light will be off. - -When a state topic is not available, the light will work in optimistic mode. In this mode, the light will immediately change state after every command. Otherwise, the light will wait for state confirmation from the device (message from `state_topic`). - -Optimistic mode can be forced, even if state topic is available. Try enabling it if the light is operating incorrectly. - -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt_json - command_topic: "home/rgb1/set" -``` - -{% configuration %} -name: - description: The name of the light. - required: false - type: string - default: MQTT JSON Light -unique_id: - description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. - required: false - type: string -command_topic: - description: The MQTT topic to publish commands to change the light’s state. - required: true - type: string -brightness: - description: Flag that defines if the light supports brightness. - required: false - type: boolean - default: false -brightness_scale: - description: "Defines the maximum brightness value (i.e. 100%) of the MQTT device." - required: false - type: integer - default: 255 -color_temp: - description: Flag that defines if the light supports color temperature. - required: false - type: boolean - default: false -effect: - description: Flag that defines if the light supports effects. - required: false - type: boolean - default: false -effect_list: - description: The list of effects the light supports. - required: false - type: string list -flash_time_long: - description: The duration, in seconds, of a “long” flash. - required: false - type: integer - default: 10 -flash_time_short: - description: The duration, in seconds, of a “short” flash. - required: false - type: integer - default: 2 -optimistic: - description: Flag that defines if the light works in optimistic mode. - required: false - type: boolean - default: "`true` if no state topic defined, else `false`." -qos: - description: The maximum QoS level of the state topic. - required: false - type: integer - default: 0 -retain: - description: If the published message should have the retain flag on or not. - required: false - type: boolean - default: false -rgb: - description: Flag that defines if the light supports RGB colors. - required: false - type: boolean - default: false -state_topic: - description: The MQTT topic subscribed to receive state updates. - required: false - type: string -white_value: - description: Flag that defines if the light supports white values. - required: false - type: boolean - default: false -xy: - description: Flag that defines if the light supports XY colors. - required: false - type: boolean - default: false -hs: - description: Flag that defines if the light supports HS colors. - required: false - type: boolean - default: false -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline -{% endconfiguration %} - -- Make sure that your topics match exact. `some-topic/` and `some-topic` are different topics. -
- -- RGB, XY and HSV can not be used at the same time in `state_topic` messages. Make sure that only one of the color models is in the "color" section of the state MQTT payload. -
- -## {% linkable_title Comparison of light MQTT platforms %} - -| Function | [`mqtt`](/components/light.mqtt/) | [`mqtt_json`](/components/light.mqtt_json/) | [`mqtt_template`](/components/light.mqtt_template/) | -|-------------------|------------------------------------------------------------|----------------------------------------------------------------------|------------------------------------------------------------------------------| -| Brightness | ✔ | ✔ | ✔ | -| Color temperature | ✔ | ✔ | ✔ | -| Effects | ✔ | ✔ | ✔ | -| Flashing | ✘ | ✔ | ✔ | -| RGB Color | ✔ | ✔ | ✔ | -| Transitions | ✘ | ✔ | ✔ | -| XY Color | ✔ | ✔ | ✘ | -| HS Color | ✘ | ✔ | ✘ | -| White Value | ✔ | ✔ | ✔ | - -## {% linkable_title Examples %} - -In this section you find some real-life examples of how to use this sensor. - -### {% linkable_title Brightness and RGB support %} - -To enable a light with brightness and RGB support in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt_json - name: mqtt_json_light_1 - state_topic: "home/rgb1" - command_topic: "home/rgb1/set" - brightness: true - rgb: true -``` - -### {% linkable_title Brightness and no RGB support %} - -To enable a light with brightness (but no color support) in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt_json - name: mqtt_json_light_1 - state_topic: "home/rgb1" - command_topic: "home/rgb1/set" - brightness: true -``` - -### {% linkable_title Brightness Scaled %} - -To enable a light using a brightness scale other than 8bit the `brightness_scale` option may be added to denote the "fully on" value: -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt_json - name: mqtt_json_light_1 - state_topic: "home/light" - command_topic: "home/light/set" - brightness: true - brightness_scale: 4095 -``` - -Home Assistant will then convert its 8bit value in the message to and from the device: - -```json -{ - "brightness": 4095, - "state": "ON" -} -``` - -### {% linkable_title HS Color %} - -To use a light with hue+saturation as the color model, set `hs` to `true` in the platform configuration: - -```yaml -light: - - platform: mqtt_json - name: mqtt_json_hs_light - state_topic: "home/light" - command_topic: "home/light/set" - hs: True -``` - -Home Assistant expects the hue values to be in the range 0 to 360 and the saturation values to be scaled from 0 to 100. For example, the following is a blue color shade: - -```json -{ - "state": "ON", - "color": { - "h": 24.0, - "s": 100.0 - } -} -``` - -### {% linkable_title Brightness and RGBW support %} - -To enable a light with brightness, RGB support and a separate white channel (RGBW) in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt_json - name: mqtt_json_light_1 - state_topic: "home/rgbw1" - command_topic: "home/rgbw1/set" - brightness: true - rgb: true - white_value: true -``` - - -### {% linkable_title Implementations %} - -- A full example of custom lighting using this platform and an ESP8266 microcontroller can be found [here](https://github.com/corbanmailloux/esp-mqtt-rgb-led). It supports on/off, brightness, transitions, RGB colors, and flashing. - -- There is also another implementation forked from the above repo, it supports all the same features but is made for addressable LED strips using FastLED on a NodeMCU V3 it can be found [here](https://github.com/JammyDodger231/nodemcu-mqtt-rgb-led). - -- [McLighting](https://github.com/toblum/McLighting) is another ESP8266 firmware for WS2812 addressable LEDs. - -- [MQTT JSON Light](https://github.com/mertenats/Open-Home-Automation/tree/master/ha_mqtt_rgbw_light_with_discovery) is another implementation for ESP8266 including [MQTT discovery](/docs/mqtt/discovery/). - -- [esphomelib](https://github.com/OttoWinter/esphomelib) is a library for ESP8266 and ESP32 boards that has many of Home Assistant's MQTT features (like [discovery](/docs/mqtt/discovery/)) pre-implemented and provides high-level abstractions for components such as lights or sensors. - -- [AiLight](https://github.com/stelgenhof/AiLight) is a custom firmware for the Ai-Thinker (and equivalent) RGBW WiFi light bulbs that has an ESP8266 onboard and controlled by the MY9291 LED driver. It implements the [MQTT JSON light](/components/light.mqtt_json/) platform and supports ON/OFF, RGBW colours, brightness, colour temperature, flashing and transitions. Also it includes [MQTT Auto Discovery](/docs/mqtt/discovery/)) and the MQTT Last Will and Testament is enabled as well. diff --git a/source/_components/light.mqtt_template.markdown b/source/_components/light.mqtt_template.markdown deleted file mode 100644 index adf44a2a92e..00000000000 --- a/source/_components/light.mqtt_template.markdown +++ /dev/null @@ -1,198 +0,0 @@ ---- -layout: page -title: "MQTT Template Light" -description: "Instructions for how to setup MQTT Template lights within Home Assistant." -date: 2016-11-06 21:16 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Light -ha_iot_class: depends -ha_release: 0.33 ---- - -The `mqtt_template` light platform lets you control a MQTT-enabled light that receive commands on a command topic and optionally sends status update on a state topic. -It is format-agnostic so you can use any data format you want (i.e. string, JSON), just configure it with templating. - -This platform supports on/off, brightness, RGB colors, XY colors, color temperature, transitions, short/long flashing, effects and white values. - -In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with the RETAIN flag, the MQTT light will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the light will be off. - -When a state topic is not available, the light will work in optimistic mode. In this mode, the light will immediately change state after every command. Otherwise, the light will wait for state confirmation from the device (message from `state_topic`). - -Optimistic mode can be forced, even if state topic is available. Try enabling it if the light is operating incorrectly. - -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt_template - command_topic: "home/rgb1/set" - command_on_template: "on" - command_off_template: "off" -``` - -{% configuration %} -name: - description: The name of the light. - required: false - type: string - default: MQTT Template Light -effect_list: - description: List of possible effects. - required: false - type: string list -command_topic: - description: The MQTT topic to publish commands to change the light’s state. - required: true - type: string -state_topic: - description: The MQTT topic subscribed to receive state updates. - required: false - type: string -command_on_template: - description: "The [template](/docs/configuration/templating/#processing-incoming-data) for *on* state changes. Available variables: `state`, `brightness`, `red`, `green`, `blue`, `white_value`, `flash`, `transition` and `effect`." - required: true - type: string -command_off_template: - description: "The [template](/docs/configuration/templating/#processing-incoming-data) for *off* state changes. Available variables: `state` and `transition`." - required: true - type: string -state_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract state from the state payload value." - required: false - type: string -brightness_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract brightness from the state payload value." - required: false - type: string -red_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract red color from the state payload value." - required: false - type: string -green_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract green color from the state payload value." - required: false - type: string -blue_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract blue color from the state payload value." - required: false - type: string -color_temp_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract color temperature from the state payload value." - required: false - type: string -effect_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract effect from the state payload value." - required: false - type: string -white_value_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract white value from the state payload value." - required: false - type: string -optimistic: - description: Flag that defines if the light works in optimistic mode. - required: false - type: string - default: "`true` if no state topic or state template is defined, else `false`." -qos: - description: The maximum QoS level of the state topic. - required: false - type: integer - default: 0 -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline -{% endconfiguration %} - -- Make sure that your topics match exact. `some-topic/` and `some-topic` are different topics. -
- -## {% linkable_title Comparison of light MQTT platforms %} - -| Function | [`mqtt`](/components/light.mqtt/) | [`mqtt_json`](/components/light.mqtt_json/) | [`mqtt_template`](/components/light.mqtt_template/) | -|-------------------|------------------------------------------------------------|----------------------------------------------------------------------|------------------------------------------------------------------------------| -| Brightness | ✔ | ✔ | ✔ | -| Color temperature | ✔ | ✔ | ✔ | -| Effects | ✔ | ✔ | ✔ | -| Flashing | ✘ | ✔ | ✔ | -| RGB Color | ✔ | ✔ | ✔ | -| Transitions | ✘ | ✔ | ✔ | -| XY Color | ✔ | ✔ | ✘ | -| HS Color | ✘ | ✔ | ✘ | -| White Value | ✔ | ✔ | ✔ | - -## {% linkable_title Examples %} - -In this section you find some real-life examples of how to use this light. - -### {% linkable_title Simple string payload %} - -For a simple string payload with the format `state,brightness,r-g-b` (e.g., `on,255,255-255-255`), add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt_template - command_topic: "home/rgb1/set" - state_topic: "home/rgb1/status" - command_on_template: "{% raw %}on,{{ brightness|d }},{{ red|d }}-{{ green|d }}-{{ blue|d }}{% endraw %}" - command_off_template: "off" - state_template: "{% raw %}{{ value.split(',')[0] }}{% endraw %}" # must return `on` or `off` - brightness_template: "{% raw %}{{ value.split(',')[1] }}{% endraw %}" - red_template: "{% raw %}{{ value.split(',')[2].split('-')[0] }}{% endraw %}" - green_template: "{% raw %}{{ value.split(',')[2].split('-')[1] }}{% endraw %}" - blue_template: "{% raw %}{{ value.split(',')[2].split('-')[2] }}{% endraw %}" -``` - -### {% linkable_title JSON payload %} - -For a JSON payload with the format `{"state": "on", "brightness": 255, "color": [255, 255, 255], "effect": "rainbow"}`, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt_template - effect_list: - - rainbow - - colorloop - command_topic: "home/rgb1/set" - state_topic: "home/rgb1/status" - command_on_template: >{% raw %} - {"state": "on" - {%- if brightness is defined -%} - , "brightness": {{ brightness }} - {%- endif -%} - {%- if red is defined and green is defined and blue is defined -%} - , "color": [{{ red }}, {{ green }}, {{ blue }}] - {%- endif -%} - {%- if effect is defined -%} - , "effect": "{{ effect }}" - {%- endif -%} - }{% endraw %} - command_off_template: '{"state": "off"}' - state_template: '{% raw %}{{ value_json.state }}{% endraw %}' - brightness_template: '{% raw %}{{ value_json.brightness }}{% endraw %}' - red_template: '{% raw %}{{ value_json.color[0] }}{% endraw %}' - green_template: '{% raw %}{{ value_json.color[1] }}{% endraw %}' - blue_template: '{% raw %}{{ value_json.color[2] }}{% endraw %}' - effect_template: '{% raw %}{{ value_json.effect }}{% endraw %}' -``` - -### {% linkable_title No brightness or color support %} - -If you don't want brightness, color or effect support, just omit the corresponding configuration sections. - diff --git a/source/_components/light.nanoleaf_aurora.markdown b/source/_components/light.nanoleaf_aurora.markdown index 9127387e298..dc0805ffeb0 100644 --- a/source/_components/light.nanoleaf_aurora.markdown +++ b/source/_components/light.nanoleaf_aurora.markdown @@ -18,7 +18,7 @@ ha_release: 0.67 The `nanoleaf_aurora` platform allows you to control [Nanoleaf Aurora Light Panels](https://nanoleaf.me) from Home Assistant. -The preferred way to set up this platform is by enabling the [discovery component](https://www.home-assistant.io/components/discovery/). Make sure to press and hold the *ON* button for 5 seconds (the LED will start flashing) on your Nanoleaf Aurora Panel while Home Assistant is starting. +The preferred way to set up this platform is by enabling the [discovery component](/components/discovery/). Make sure to press and hold the *ON* button for 5 seconds (the LED will start flashing) on your Nanoleaf Aurora Panel while Home Assistant is starting. To configure the Aurora lights manually, add the following lines to your `configuration.yaml` file: diff --git a/source/_components/light.niko_home_control.markdown b/source/_components/light.niko_home_control.markdown new file mode 100644 index 00000000000..6a513b90ac0 --- /dev/null +++ b/source/_components/light.niko_home_control.markdown @@ -0,0 +1,33 @@ +--- +layout: page +title: "Niko Home Control Light" +description: "Instructions on how to integrate Niko Home Control lights into Home Assistant." +date: 2018-04-08 08:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Light +ha_iot_class: "Local Polling" +ha_release: 0.82 +--- + +The `niko_home_control` platform allows you to integrate your [Niko Home Control](https://www.niko.eu/enus/products/niko-home-control) into Home Assistant. + +## {% linkable_title Configuration %} + +To enable this lights, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +light: + - platform: niko_home_control + host: IP_ADDRESS +``` + +{% configuration %} +host: + description: The IP address of the Niko Home light. + required: false + type: string +{% endconfiguration %} diff --git a/source/_components/light.rfxtrx.markdown b/source/_components/light.rfxtrx.markdown index 6795a5a2e25..553ba93be33 100644 --- a/source/_components/light.rfxtrx.markdown +++ b/source/_components/light.rfxtrx.markdown @@ -22,7 +22,7 @@ The easiest way to find your lights is to add this to your `configuration.yaml`: ```yaml light: - platform: rfxtrx - automatic_add: True + automatic_add: true ``` Launch your Home Assistant and go the website. Push your remote and your device should be added: diff --git a/source/_components/light.rpi_gpio_pwm.markdown b/source/_components/light.rpi_gpio_pwm.markdown index d292b213a54..6d0fe793249 100644 --- a/source/_components/light.rpi_gpio_pwm.markdown +++ b/source/_components/light.rpi_gpio_pwm.markdown @@ -33,15 +33,39 @@ light: type: simple ``` -Configuration variables: - -- **leds** array (*Required*): Can contain multiple LEDs. - - **name** (*Required*): The name of the LED. - - **driver** (*Required*): The driver which controls the LED. Choose either `gpio` or `pca9685`. - - **pins** (*Required*): The pins connected to the LED as a list.. The order of pins is determined by the specified type. - - **type** (*Required*): The type of LED. Choose either `rgb`, `rgbw` or `simple`. - - **freq** (*Optional*): The PWM frequency. (Default: `200`) - - **address** (*Optional*): The address of the PCA9685 driver. (Default: `0x40`) +{% configuration %} +leds: + description: Can contain multiple LEDs. + required: true + type: list + keys: + name: + description: The name of the LED. + required: true + type: string + driver: + description: The driver which controls the LED. Choose either `gpio` or `pca9685`. + required: true + type: string + pins: + description: The pins connected to the LED as a list. The order of pins is determined by the specified type. + required: true + type: [list, integer] + type: + description: The type of LED. Choose either `rgb`, `rgbw` or `simple`. + required: true + type: string + freq: + description: The PWM frequency. + required: false + default: 200 + type: integer + address: + description: The address of the PCA9685 driver. + required: false + default: 0x40 + type: string +{% endconfiguration %} ## {% linkable_title Examples %} diff --git a/source/_components/light.scsgate.markdown b/source/_components/light.scsgate.markdown index 07df0ca0f7e..7a5030ffc40 100644 --- a/source/_components/light.scsgate.markdown +++ b/source/_components/light.scsgate.markdown @@ -27,6 +27,9 @@ light: scs_id: XXXXX ``` -Configuration variables: - -- **devices** (*Required*): A list of devices with their name to use in the frontend. +{% configuration %} +devices: + description: A list of devices with their name to use in the frontend. + required: true + type: list +{% endconfiguration %} diff --git a/source/_components/light.switch.markdown b/source/_components/light.switch.markdown new file mode 100644 index 00000000000..4e1eeb2135e --- /dev/null +++ b/source/_components/light.switch.markdown @@ -0,0 +1,46 @@ +--- +layout: page +title: "Light Switch" +description: "Instructions on how to set up a light switch within Home Assistant." +date: 2018-11-18 19:59 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Light +ha_release: 0.83 +ha_iot_class: "Local Push" +logo: home-assistant.png +ha_qa_scale: internal +--- + +The light switch platform lets you control an existing switch, allowing you +to use a switch like a light in Home Assistant. + +In Home Assistant's world, a wall plug is a switch. This platform allows you +to expose this switch as a light source, allowing you to add, e.g., the wall +plug controlling your Christmas Tree, to be part of a light group. + +To enable this platform in your installation, add the following to your +`configuration.yaml` file: + +```yaml +light: + - platform: switch + name: Christmas Tree Lights + entity_id: switch.christmas_tree_lights +``` + +{% configuration %} + name: + description: The name of the light switch. + required: false + type: string + default: Light Switch + entity_id: + description: "The `entity_id` of a switch entity to control as a light source." + required: true + type: string +{% endconfiguration %} + +A light switch only supports turning on/off a light. diff --git a/source/_components/light.tellduslive.markdown b/source/_components/light.tellduslive.markdown new file mode 100644 index 00000000000..5a923d1566a --- /dev/null +++ b/source/_components/light.tellduslive.markdown @@ -0,0 +1,16 @@ +--- +layout: page +title: "Telldus Live Light" +description: "Instructions on how to integrate Telldus Live Lights into Home Assistant." +date: 2016-01-17 15:49 +sidebar: true +comments: false +sharing: true +footer: true +logo: telldus.png +ha_category: Light +featured: false +--- + +Integrates Telldus Live Lights into Home Assistant. See the [main component](/components/tellduslive/) for configuration instructions. + diff --git a/source/_components/light.tplink.markdown b/source/_components/light.tplink.markdown index 158504bcae0..608e748066d 100644 --- a/source/_components/light.tplink.markdown +++ b/source/_components/light.tplink.markdown @@ -13,7 +13,6 @@ ha_iot_class: "Local Polling" ha_release: "0.50" --- - The `tplink` light platform allows you to control the state of your [TP-Link smart bulb](http://www.tp-link.com/en/products/list-5609.html). Supported units: @@ -22,6 +21,10 @@ Supported units: - LB110 - LB120 - LB130 +- LB230 +- KL110 +- KL120 +- KL130 To use your TP-Link light in your installation, add the following to your `configuration.yaml` file: @@ -44,3 +47,15 @@ host: type: string {% endconfiguration %} +## {% linkable_title Adding multiple lights %} + +You may need to add [multiple lights](https://community.home-assistant.io/t/multiple-tp-link-switches/6935) and the config would need to include multiple lights separately. + +```yaml +# Example configuration.yaml entry +light: + - platform: tplink + host: FIRST_IP_ADDRESS + - platform: tplink + host: SECOND_IP_ADDRESS +``` diff --git a/source/_components/light.wemo.markdown b/source/_components/light.wemo.markdown index 1ae147ef864..d141c45abbc 100644 --- a/source/_components/light.wemo.markdown +++ b/source/_components/light.wemo.markdown @@ -9,14 +9,11 @@ sharing: true footer: true logo: belkin_wemo.png ha_category: Light -ha_iot_class: "Local Polling" +ha_iot_class: "Local Push" ha_release: 0.14 --- The `wemo` platform allows you to control your Belkin WeMo [LED lights](http://www.belkin.com/us/p/P-F5Z0489/) and [Smart Dimmer Switch](http://www.belkin.com/us/F7C059-Belkin/p/P-F7C059/) from within Home Assistant. -They will be automatically discovered if the discovery component is enabled. - -For more configuration information see the [WeMo component](/components/wemo/) documentation. - +WeMo devices are automatically discovered if the `discovery` component is enabled. For more configuration information, see the [WeMo component](/components/wemo/) documentation. diff --git a/source/_components/light.x10.markdown b/source/_components/light.x10.markdown index 6b89fd85c29..caa789f5632 100644 --- a/source/_components/light.x10.markdown +++ b/source/_components/light.x10.markdown @@ -15,7 +15,7 @@ ha_release: 0.25 The `x10` light platform allows you to control your X10 based lights with Home Assistant. -Requires [Heyu x10](http://www.heyu.org) and a CM11A interface; the CM17A "FireCracker" interface is not supported. +Requires [Heyu x10](http://www.heyu.org) and a CM11A or a CM17A "FireCracker" interface. To enable those lights, add the following lines to your `configuration.yaml` file: diff --git a/source/_components/light.xiaomi_miio.markdown b/source/_components/light.xiaomi_miio.markdown index 79f5a9b36c1..a4e95c3d424 100644 --- a/source/_components/light.xiaomi_miio.markdown +++ b/source/_components/light.xiaomi_miio.markdown @@ -13,11 +13,13 @@ ha_iot_class: "Local Polling" ha_release: 0.53 --- -The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philips LED Ball Lamp, Xiaomi Philips Zhirui LED Bulb E14 Candle Lamp, Xiaomi Philips LED Ceiling Lamp, Xiaomi Philips Eyecare Lamp 2 and Philips Zhirui Desk Lamp. +The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philips LED Ball Lamp, Xiaomi Philips Zhirui LED Bulb E14 Candle Lamp, Xiaomi Philips Zhirui Downlight, Xiaomi Philips LED Ceiling Lamp, Xiaomi Philips Eyecare Lamp 2, Xiaomi Philips Moonlight Bedside Lamp and Philips Zhirui Desk Lamp. ## Features -### Philips LED Ball Lamp and Philips Zhirui LED Candle Lamp +### Philips LED Ball Lamp, Philips Zhirui LED Candle Lamp and Philips Zhirui Downlight + +Supported models: `philips.light.bulb`, `philips.light.candle`, `philips.light.candle2`, `philips.light.downlight` * Power (on, off) * Brightness @@ -31,6 +33,8 @@ The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philip ### Philips LED Ceiling Lamp +Supported models: `philips.light.ceiling`, `philips.light.zyceiling` + * Power (on, off) * Brightness * Color temperature (175...370 mireds) @@ -46,6 +50,8 @@ The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philip ### Philips Eyecare Smart Lamp 2 +Supported models: `philips.light.sread1` + * Eyecare light (on, off) * Ambient light (on, off) * Brightness (of each light) @@ -64,6 +70,8 @@ The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philip ### Philips Zhirui Desk Lamp +Supported models: `philips.light.mono1` + * Power (on, off) * Brightness * Scene (1, 2, 3, 4) @@ -73,6 +81,26 @@ The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philip - scene - delayed_turn_off +### Philips Moonlight Bedside Lamp + +Supported models: `philips.light.moonlight` + +* Power (on, off) +* Brightness +* Color (not implemented) +* Color temperature (153...588 mireds) +* Scene (1, 2, 3, 4) +* Attributes + - model + - scene + - sleep_assistant + - sleep_off_time + - total_assistant_sleep_time + - brand_sleep + - brand + + + Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. To add a Xiaomi Philips Light to your installation, add the following to your configuration.yaml file: @@ -102,7 +130,7 @@ name: type: string default: Xiaomi Philips Light model: - description: The model of your miio light. Valid values are `philips.light.bulb`, `philips.light.candle`, `philips.light.candle2`, `philips.light.sread1`, `philips.light.ceiling`, `philips.light.zyceiling` and `philips.light.mono1`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available. + description: The model of your light. Valid values are `philips.light.sread1`, `philips.light.ceiling`, `philips.light.zyceiling`, `philips.light.moonlight`, `philips.light.bulb`, `philips.light.candle`, `philips.light.candle2`, `philips.light.mono1` and `philips.light.downlight`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available. required: false type: string {% endconfiguration %} diff --git a/source/_components/light.yeelight.markdown b/source/_components/light.yeelight.markdown index ac8b651e0f2..2de5f6f171b 100644 --- a/source/_components/light.yeelight.markdown +++ b/source/_components/light.yeelight.markdown @@ -13,14 +13,28 @@ ha_release: 0.32 ha_iot_class: "Local Polling" --- -The `yeelight` light platform allows you to control your Yeelight Wifi bulbs with Home Assistant. +The `yeelight` light platform allows you to control your Yeelight Wifi bulbs with Home Assistant. There are two possible methods for configuration of the Yeelight: Manual or Automatic. -### {% linkable_title Example configuration %} +### {% linkable_title Example configuration (Automatic) %} +After the lights are connected to the WiFi network and have been detected in Home Assistant, the discovered names will be shown in the `Light` section of the `Overview` view. Add the following lines to your `customize.yaml` file: + +```yaml +# Example customize.yaml entry +light.yeelight_rgb_XXXXXXXXXXXX: + friendly_name: Living Room +light.yeelight_color2_XXXXXXXXXXXX: + friendly_name: Downstairs Toilet +``` + +### {% linkable_title Example configuration (Manual) %} To enable those lights, add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry +discovery: + ignore: + - yeelight light: - platform: yeelight devices: @@ -52,14 +66,14 @@ devices: description: Enable music mode. required: false type: boolean - default: False + default: false save_on_change: description: Saves the bulb state in its nonvolatile memory when changed from Home Assistant. required: false type: boolean - default: False + default: false model: - description: "Yeelight model. Possible values are `mono1`, `color1`, `strip1`, `bslamp1`, `ceiling1`, `ceiling2`, `ceiling3`, `ceiling4`. The setting is used to enable model specific features f.e. a particular color temperature range." + description: "Yeelight model. Possible values are `mono1`, `color1`, `color2`, `strip1`, `bslamp1`, `ceiling1`, `ceiling2`, `ceiling3`, `ceiling4`. The setting is used to enable model specific features f.e. a particular color temperature range." required: false type: string {% endconfiguration %} @@ -91,6 +105,7 @@ This component is tested to work with the following models. If you have a differ | `color2` | YLDP06YL | LED Bulb (Color) - 2nd generation | | `strip1` | YLDD01YL | Lightstrip (Color) | | `strip1` | YLDD02YL | Lightstrip (Color) | +| ? | YLDD04YL | Lightstrip (Color) | `bslamp1` | MJCTD01YL | Xiaomi Mijia Bedside Lamp - WIFI Version! | | `lamp1` | MJTD01YL | Xiaomi Mijia Smart LED Desk Lamp (autodiscovery isn't possible because the device doesn't support mDNS due to the small amount of RAM) | | `ceiling1` | YLXD01YL | Yeelight Ceiling Light | @@ -126,8 +141,8 @@ light: 192.168.1.25: name: Living Room transition: 1000 - use_music_mode: True - save_on_change: True + use_music_mode: true + save_on_change: true ``` ### {% linkable_title Multiple bulbs %} diff --git a/source/_components/lightwave.markdown b/source/_components/lightwave.markdown new file mode 100644 index 00000000000..84c10c35a41 --- /dev/null +++ b/source/_components/lightwave.markdown @@ -0,0 +1,49 @@ +--- +layout: page +title: "Lightwave" +description: "Instructions on how to integrate Lightwave devices with Home Assistant." +date: 2018-12-03 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lightwave.png +ha_category: Hub +ha_release: 0.84 +ha_iot_class: "Assumed State" +--- +The `lightwave` component links Home Assistant with your Lightwave WiFi link for controlling Lightwave lights and switches. +This component uses the official API published by Lightwave on their website [https://api.lightwaverf.com/](https://api.lightwaverf.com/). +To add your Lightwave devices into your Home Assistant installation, add the following to your `configuration.yaml` file: +```yaml +# Example configuration.yaml entry +lightwave: + host: 192.168.1.2 + lights: + R1D3: + name: Wall lights + R1D4: + name: Ceiling lights + switches: + R1D2: + name: Tree socket + R2D1: + name: Radio socket + R2D2: + name: Light socket + R2D3: + name: Phone socket + R2D4: + name: Torch socket +``` + +Where `192.168.1.2` is the ip address of your Lightwave hub. +Each `switch` or `light` requires an `id` and a `name`. The `id` takes the form `R#D#` where `R#` is the room number and `D#` is the device number. + +`lights` and `switches` are optional but one of these must be present. + +The first use of a light or switch will try to register with your Lightwave WiFi Link hub. If the hub has not been registered a message on your hub will be displayed asking you to pair the device. You have 12 seconds to push the button on your hub to accept this. Once done, you should be able to control your lights and switches via Home Assistant. This only needs to be done if the hub has not been registered. + +The Lightwave Home Assistant component currently supports the following Lightwave devices: +- Lightwave lights +- Lightwave switches \ No newline at end of file diff --git a/source/_components/litejet.markdown b/source/_components/litejet.markdown index fb334089530..ae6b94a24a9 100644 --- a/source/_components/litejet.markdown +++ b/source/_components/litejet.markdown @@ -27,11 +27,21 @@ Your LiteJet MCP should be configured for 19.2 K baud, 8 data bits, 1 stop bit, You can also configure the Home Assistant to ignore lights, scenes, and switches via their name. This is highly recommended since LiteJet has a fixed number of each of these and with most systems many will be unused. -Configuration variables: - -- **port** (*Required*): The path to the serial port connected to the LiteJet. -- **exclude_names** (*Optional*): A list of light or switch names that should be ignored. -- **include_switches** (*Optional*): Cause entities to be created for all the LiteJet switches. Default is `false`. This can be useful when debugging your lighting as you can press/release switches remotely. +{% configuration %} +port: + description: The path to the serial port connected to the LiteJet. + required: true + type: string +exclude_names: + description: A list of light or switch names that should be ignored. + required: false + type: [list, string] +include_switches: + description: Cause entities to be created for all the LiteJet switches. This can be useful when debugging your lighting as you can press/release switches remotely. + required: false + default: false + type: boolean +{% endconfiguration %} ```yaml litejet: @@ -64,5 +74,4 @@ automation: milliseconds: 1000 held_less_than: milliseconds: 2000 - ... ``` diff --git a/source/_components/lock.markdown b/source/_components/lock.markdown index 89d504093a3..898a3fdc16b 100644 --- a/source/_components/lock.markdown +++ b/source/_components/lock.markdown @@ -12,7 +12,7 @@ footer: true Keeps track which locks are in your environment, their state and allows you to control them. * Maintains a state per lock and a combined state `all_locks`. - * Registers services `lock.lock` and `lock.unlock` to control locks. + * Registers services `lock.lock`, `lock.unlock` and `lock.open` (unlatch) to control locks. ### {% linkable_title Services %} @@ -54,7 +54,7 @@ action: ### {% linkable_title Use the services %} -Go to the **Developer Tools**, then to **Call Service** in the frontend, and choose `lock.lock` or `lock.unlock` from the list of available services (**Services:** on the left). Enter something like the sample below into the **Service Data** field and hit **CALL SERVICE**. +Go to the **Developer Tools**, then to **Call Service** in the frontend, and choose `lock.lock`, `lock.unlock` or `lock.open` from the list of available services (**Services:** on the left). Enter something like the sample below into the **Service Data** field and hit **CALL SERVICE**. ```json {"entity_id":"lock.front_door"} diff --git a/source/_components/lock.mqtt.markdown b/source/_components/lock.mqtt.markdown index 7009e9224e9..1b33b55495d 100644 --- a/source/_components/lock.mqtt.markdown +++ b/source/_components/lock.mqtt.markdown @@ -15,6 +15,8 @@ ha_iot_class: depends The `mqtt` lock platform lets you control your MQTT enabled locks. +## {% linkable_title Configuration %} + In an ideal scenario, the MQTT device will have a `state_topic` to publish state changes. If these messages are published with a `RETAIN` flag, the MQTT lock will receive an instant state update after subscription and will start with correct state. Otherwise, the initial state of the lock will be `false` / unlocked. When a `state_topic` is not available, the lock will work in optimistic mode. In this mode, the lock will immediately change state after every command. Otherwise, the lock will wait for state confirmation from the device (message from `state_topic`). @@ -31,11 +33,6 @@ lock: ``` {% configuration %} -name: - description: The name of the lock. - required: false - type: string - default: MQTT Lock command_topic: description: The MQTT topic to publish commands to change the lock state. required: true @@ -44,6 +41,11 @@ state_topic: description: The MQTT topic subscribed to receive state updates. required: false type: string +name: + description: The name of the lock. + required: false + type: string + default: MQTT Lock payload_lock: description: The payload that represents enabled/locked state. required: false @@ -87,6 +89,39 @@ payload_not_available: required: false type: string default: offline +unique_id: + description: An ID that uniquely identifies this lock. If two locks have the same unique ID, Home Assistant will raise an exception. + required: false + type: string +device: + description: 'Information about the device this lock is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.' + required: false + type: map + keys: + identifiers: + description: 'A list of IDs that uniquely identify the device. For example a serial number.' + required: false + type: list, string + connections: + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' + required: false + type: list + manufacturer: + description: 'The manufacturer of the device.' + required: false + type: string + model: + description: 'The model of the device.' + required: false + type: string + name: + description: 'The name of the device.' + required: false + type: string + sw_version: + description: 'The firmware version of the device.' + required: false + type: string {% endconfiguration %}diff --git a/source/_components/logger.markdown b/source/_components/logger.markdown index 9fa7c1b3e12..a8ddfb70650 100644 --- a/source/_components/logger.markdown +++ b/source/_components/logger.markdown @@ -67,7 +67,7 @@ logger: ### {% linkable_title Log Levels %} -Possible log severity levels are: +Possible log severity levels, listed in order from most severe to least severe, are: - critical - fatal diff --git a/source/_components/luftdaten.markdown b/source/_components/luftdaten.markdown new file mode 100644 index 00000000000..fd42e5f77a3 --- /dev/null +++ b/source/_components/luftdaten.markdown @@ -0,0 +1,103 @@ +--- +layout: page +title: "Luftdaten" +description: "Instructions on how to setup Luftdaten sensors in Home Assistant." +date: 2018-11-05 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: luftdaten.png +ha_category: Health +ha_release: 0.82 +ha_iot_class: "Cloud Polling" +ha_qa_scale: gold +--- + +The `luftdaten` component will query the open data API of [luftdaten.info](http://luftdaten.info) to monitor air quality and other weather data from a specific (self build) sensor station. + +## {% linkable_title Setup %} + +- To get the ID of a particle sensor you need to select it on the [Feinstaub map](http://deutschland.maps.luftdaten.info/) and find it in the sidebar (Column "Sensor ID"). +- To get the ID of a temperature/humidity sensor you need to find it on the map hosted on [Madavi](https://www.madavi.de/sensor/feinstaub-map-dht/). + + +## {% linkable_title COnfiguration via the frontend %} + +Menu: **Configuration** -> **Integrations** + +Configure the integration: + +* Enter the **Sensor ID** +* Choose if you want to show the sensor's location on the map. + +## {% linkable_title Manual Configuration %} + +To enable this sensor, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +luftdaten: +``` + +{% configuration %} +sensor_id: + description: The ID of the sensor. + required: true + type: string +show_on_map: + description: Option to show the position of the sensor on the map. + required: optional + default: false + type: boolean +scan_interval: + description: the frequency (in seconds) between data updates. + required: false + type: integer + default: 1800 +sensors: + description: The sensor-related configuration options. + required: false + type: map + keys: + monitored_conditions: + description: A list of conditions you want to monitor. + required: true + type: list + keys: + P1: + description: Show the particle sensors (particles 10 microns and below). + P2: + description: Show the particle sensors (particles 2.5 microns and below). + temperature: + description: Display the temperature from the sensor. + humidity: + description: Display the humidity from the sensor. + pressure: + description: Display the pressure from the sensor. +{% endconfiguration %} + +
+If you set `show_on_map` to `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. +
+ +Not all sensors provide all conditions. Also, it's possible that the sensor values are not available all the time. To check what a sensor is publishing use `curl`: + +```bash +$ curl https://api.luftdaten.info/v1/sensor/[sensorid]/ +``` + +## {% linkable_title Full example %} + +This example would use the sensor with the ID 155, show it on the `map` and would monitor `temperature` and `humidity`. + +```yaml +# Example configuration.yaml entry +luftdaten: + sensor_id: 155 + show_on_map: true + sensors: + monitored_conditions: + - temperature + - humidity +``` diff --git a/source/_components/lupusec.markdown b/source/_components/lupusec.markdown new file mode 100644 index 00000000000..fbbc273c613 --- /dev/null +++ b/source/_components/lupusec.markdown @@ -0,0 +1,57 @@ +--- +layout: page +title: "Lupus Electronics Home Security" +description: "Instructions on integrating Lupusec home security with Home Assistant." +date: 2018-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lupusec.png +ha_category: Hub +ha_release: 0.83 +ha_iot_class: "Local Polling" +--- + +The `lupusec` component allows the user to integrate their Lupusec alarm control panel and ultimately all connected sensors and other devices. For more information about the LUPUS-Electronics security system please visit their [website](https://www.lupus-electronics.de). + +Supported units: + +- Lupusec XT1 + +The following devices are supported by the underlying `lupupy` Python library and integrated into Home Assistant. + +- [Alarm Control Panel](/components/alarm_control_panel.lupusec/): Displays the alarm status and controls arming, disarming and home modus. +- [Binary Sensor](/components/binary_sensor.lupusec/): Displays the status of binary sensors. Currently only Door and window sensors are supported. +- [Switch](/components/switch.lupusec/): Turn off and on your Lupus power switches. + +## {% linkable_title Configuration %} + +To use Lupusec devices in your installation, add the following `lupusec` section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +lupusec: + username: YOUR_USERNAME + password: YOUR_PASSWORD + ip_address: YOUR_IP_ADDRESS +``` + +{% configuration %} +username: + description: The login username of your Lupusec alarm panel. + required: true + type: string +password: + description: The login password of your Lupusec alarm panel. + required: true + type: string +ip_address: + description: The IP address of your Lupusec alarm panel. + required: true + type: string +name: + description: Name for your Lupusec panel. + required: false + type: string +{% endconfiguration %} diff --git a/source/_components/lutron.markdown b/source/_components/lutron.markdown index 66960face43..3dbd590cb5c 100644 --- a/source/_components/lutron.markdown +++ b/source/_components/lutron.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: lutron.png ha_category: Hub -featured: False +featured: false ha_release: 0.37 ha_iot_class: "Local Polling" --- diff --git a/source/_components/lutron_caseta.markdown b/source/_components/lutron_caseta.markdown index 4a42d97b16f..64fc354a4f3 100644 --- a/source/_components/lutron_caseta.markdown +++ b/source/_components/lutron_caseta.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: lutron.png ha_category: Hub -featured: False +featured: false ha_release: 0.41 ha_iot_class: "Local Polling" --- diff --git a/source/_components/mailgun.markdown b/source/_components/mailgun.markdown index da274fe0a5b..db3085cc1fc 100644 --- a/source/_components/mailgun.markdown +++ b/source/_components/mailgun.markdown @@ -12,7 +12,27 @@ ha_category: Notifications ha_release: 0.38 --- -The component supports push messages and generates events based on inbound data. To generate inbound events, add a Route set to Store and Notify with a URL of the following form: `https://
@@ -27,10 +26,17 @@ To use the media extractor service in your installation, add the following to yo
media_extractor:
```
-Configuration variables:
-
-- **default_query** (*Optional*): Set default stream query for all devices ('best' by default).
-- **customize** (*Optional*): Set entity specific values. For example:
+{% configuration %}
+default_query:
+ description: Set default stream query for all devices.
+ required: false
+ default: best
+ type: string
+customize:
+ description: Set entity specific values.
+ required: false
+ type: list
+{% endconfiguration %}
```yaml
# Example configuration.yaml entry
diff --git a/source/_components/media_player.aquostv.markdown b/source/_components/media_player.aquostv.markdown
index 9535efee1ac..f2d57ff5148 100644
--- a/source/_components/media_player.aquostv.markdown
+++ b/source/_components/media_player.aquostv.markdown
@@ -72,6 +72,7 @@ Currently known supported models:
- LC-46LE830U
- LC-52LE830U
- LC-60LE830U
+- LC-60LE635 (no volume control)
- LC-52LE925UN
- LC-60LE925UN
- LC-60LE857U
diff --git a/source/_components/media_player.denonavr.markdown b/source/_components/media_player.denonavr.markdown
index 6c4d2d81957..5d5c95ead98 100644
--- a/source/_components/media_player.denonavr.markdown
+++ b/source/_components/media_player.denonavr.markdown
@@ -21,14 +21,16 @@ Supported devices:
- Denon AVR-X2000
- Denon AVR-X2100W
- Denon AVR-X4100W
+- Denon AVR-X4300H
- Denon AVR-1912
- Denon AVR-2312CI
- Denon AVR-3311CI
- Denon AVR-4810
+- Marantz M-CR510
- Marantz M-CR603
- Marantz M-RC610
- Marantz SR5008
-- Marantz SR6007 - SR6010
+- Marantz SR6007 - SR6010
- Marantz NR1506
- Marantz NR1604
- Other Denon AVR receivers (untested)
@@ -46,22 +48,46 @@ media_player:
- platform: denonavr
host: IP_ADDRESS
name: NAME
- show_all_sources: True / False
+ show_all_sources: true
timeout: POSITIVE INTEGER
zones:
- zone: Zone2 / Zone3
name: NAME
```
-Configuration variables:
-
-- **host** (*Optional*): IP address of the device. Example: 192.168.1.32. If not set, auto-discovery is used.
-- **name** (*Optional*): Name of the device. If not set, friendlyName of the receiver is used.
-- **show_all_sources** (*Optional*): If True all sources are displayed in sources list even if they are marked as deleted in the receiver. If False deleted sources are not displayed (default). Some receivers have a bug that marks all sources as deleted in the interface. In this case, this option could help.
-- **timeout** (*Optional*): Timeout for HTTP requests to the receiver. Defaults to 2 seconds if not provided.
-- **zones** (*Optional*): List of additional zones to be activated. They are displayed as additional media players with the same functionality Main Zone of the device supports
- - **zone**: Zone which should be activated. Valid options are Zone2 and Zone3
- - **name** (*Optional*): Name of the zone. If not set the name of the main device + zone as a suffix is taken.
+{% configuration %}
+host:
+ description: IP address of the device, e.g., 192.168.1.32. If not set, auto-discovery is used.
+ required: false
+ type: string
+name:
+ description: Name of the device. If not set, friendlyName of the receiver is used.
+ required: false
+ type: string
+show_all_sources:
+ description: If True all sources are displayed in sources list even if they are marked as deleted in the receiver. If False deleted sources are not displayed. Some receivers have a bug that marks all sources as deleted in the interface. In this case, this option could help.
+ required: false
+ default: false
+ type: boolean
+timeout:
+ description: Timeout in seconds for HTTP requests to the receiver.
+ required: false
+ default: 2
+ type: integer
+zones:
+ description: List of additional zones to be activated. They are displayed as additional media players with the same functionality Main Zone of the device supports.
+ required: false
+ type: list
+ keys:
+ zone:
+ description: Zone which should be activated. Valid options are `Zone2` and `Zone3`.
+ required: true
+ type: string
+ name:
+ description: Name of the zone. If not set the name of the main device + zone as a suffix is taken.
+ required: false
+ type: string
+{% endconfiguration %}
A few notes:
diff --git a/source/_components/media_player.directv.markdown b/source/_components/media_player.directv.markdown
index d27b10e1101..e7b82e80650 100644
--- a/source/_components/media_player.directv.markdown
+++ b/source/_components/media_player.directv.markdown
@@ -87,3 +87,17 @@ media_player:
```
It is important to notice that the host and port variables for slave/Genie receivers are the same as the master receiver.
+
+## {% linkable_title Services %}
+
+### {% linkable_title Media control services %}
+
+Available services: turn_on, turn_off, media_play, media_pause, media_stop, media_next_track, media_previous_track, play_media
+
+#### {% linkable_title Service `media_player.play_media` %}
+
+| Service data attribute | Optional | Description |
+| -----------------------| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `entity_id` | yes | Target a specific media player. Defaults to all. |
+| `media_content_id` | no | The channel number to change to. |
+| `media_content_type` | no | A media type. Has to be `channel`.
diff --git a/source/_components/media_player.dlna_dmr.markdown b/source/_components/media_player.dlna_dmr.markdown
index 23c692ce04f..605e0028902 100644
--- a/source/_components/media_player.dlna_dmr.markdown
+++ b/source/_components/media_player.dlna_dmr.markdown
@@ -26,12 +26,12 @@ To add a DLNA DMR device to your installation, add the following to your `config
# Example configuration.yaml entry
media_player:
- platform: dlna_dmr
- url: http://192.168.0.10:9197/dmr
+ url: http://192.168.0.10:9197/description.xml
```
{% configuration %}
url:
- description: The URL to the device description, e.g., `http://192.168.0.10:9197/dmr`.
+ description: The URL to the device description .xml file, e.g., `http://192.168.0.10:9197/description.xml`.
required: true
type: string
listen_ip:
diff --git a/source/_components/media_player.emby.markdown b/source/_components/media_player.emby.markdown
index 5e1716de191..bb10654c680 100644
--- a/source/_components/media_player.emby.markdown
+++ b/source/_components/media_player.emby.markdown
@@ -37,7 +37,7 @@ api_key:
required: true
type: string
ssl:
- description: True if you want to connect with HTTPS/WSS. Your SSL certificate must be valid.
+ description: Connect with HTTPS/WSS. Your SSL certificate must be valid.
required: false
default: false
type: boolean
@@ -47,7 +47,7 @@ port:
default: 8096 (No SSL), 8920 (SSL)
type: integer
auto_hide:
- description: True if you want to automatically hide devices that are unavailable from the Home Assistant Interface.
+ description: Automatically hide devices that are unavailable from the Home Assistant Interface.
required: false
default: false
type: boolean
diff --git a/source/_components/media_player.firetv.markdown b/source/_components/media_player.firetv.markdown
index b2abdca1113..69b77283d2f 100644
--- a/source/_components/media_player.firetv.markdown
+++ b/source/_components/media_player.firetv.markdown
@@ -14,9 +14,7 @@ ha_iot_class: "Local Polling"
---
-The `firetv` platform allows you to control a [Amazon Fire TV/stick](https://www.amazon.com/b/?node=8521791011).
-
-The python-firetv Python 2.x module with its helper script that exposes an HTTP server to fetch state and perform actions is used.
+The `firetv` platform allows you to control an [Amazon Fire TV/stick](https://www.amazon.com/b/?node=8521791011).
Steps to configure your Amazon Fire TV stick with Home Assistant:
@@ -27,59 +25,85 @@ Steps to configure your Amazon Fire TV stick with Home Assistant:
- Find Amazon Fire TV device IP:
- From the main (Launcher) screen, select Settings.
- Select System > About > Network.
-- The following commands must be run in a Python 2.x environment. They will allow the component to function in an Ubuntu 16.04/Hassbian environment.
- - `apt-get install swig libssl-dev python-dev libusb-1.0-0 python-yaml`
- - `pip install flask`
- - `pip install https://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-0.24.0.tar.gz`
- - `pip install firetv[firetv-server]`
-- `firetv-server -d
-Note that python-firetv has support for multiple Amazon Fire TV devices. If you have more than one configured, be sure to specify the device ID in `device`. Run `firetv-server -h` and/or view the source for complete capabilities.
+ In the dialog appearing on your Fire TV, you must check the box that says "always allow connections from this device." ADB authentication in Home Assistant will only work using a trusted key.
-Controlling the Spotify component (pause, play, next, etc) requires a Premium account. If you do not have a Premium account, the component in the frontend will not show the controls.
+Controlling the Spotify component (pause, play, next, etc.) requires a Premium account. If you do not have a Premium account, the component in the frontend will not show the controls.
HTML5 push notifications **do not** work on iOS.
-
Don't forget to [whitelist external directories](/docs/configuration/basic/), so Home Assistant has access to them.
+Be aware that images are uploaded onto the Jabber server of your provider. They reside there un-encrypted and could be accessed by the server admins. Usually images are deleted after a few days.
+
+Improper use of this service may continuously keep your central heating system active, resulting in an overheated house and a significant increase in gas and/or electricity consumption.
+
+Please read [this information](http://otgw.tclcode.com/standalone.html) from the designer of the OpenTherm Gateway before considering to write your own software thermostat.
+
+Improper use of this service may impair the performance of your central heating system.
+
+Please read [this information](http://otgw.tclcode.com/standalone.html) from the designer of the OpenTherm Gateway before considering to write your own software thermostat.
+
-The "Limited" plan (which is what new users are given by default) is limited to 500 API requests per day. In order to leave a buffer, the `openuv` component queries the API every 30 minutes by default. This value can be modifed (via the `scan_interval` key), but please note that over-running the API will require you to upgrade to a paid plan (and may disable your access in the meantime).
+The "Limited" plan (which is what new users are given by default) is limited to 50 API requests per day. In order to leave a buffer, the `openuv` component queries the API every 30 minutes by default. This value can be modifed (via the `scan_interval` key), but please note that over-running the API will require you to upgrade to a paid plan (and may disable your access in the meantime).
diff --git a/source/_components/device_tracker.owntracks.markdown b/source/_components/owntracks.markdown
similarity index 71%
rename from source/_components/device_tracker.owntracks.markdown
rename to source/_components/owntracks.markdown
index 9a2e98158de..1b2f07dd3f5 100644
--- a/source/_components/device_tracker.owntracks.markdown
+++ b/source/_components/owntracks.markdown
@@ -11,18 +11,61 @@ logo: owntracks.png
ha_category: Presence Detection
featured: false
ha_release: 0.7.4
+redirect_from:
+ - /components/device_tracker.owntracks/
+ - /components/device_tracker.owntracks_http/
---
-This platform allows you to detect presence using [Owntracks](http://owntracks.org/). OwnTracks allows users to track their location on iOS and Android phones and publish it to an MQTT broker. This platform will connect to the broker and monitor for new locations.
+OwnTracks is a free and open source application for iOS and Android that allow you to track your location and send it directly to Home Assistant. It can be set up via the integrations panel in the configuration screen.
-This component requires [the MQTT component](/components/mqtt/) to be set up and works very well together with [the zone component](/components/zone/).
+By default the integration will listen for incoming messages from OwnTracks via HTTP. It will also listen for MQTT messages if Home Assistant is configured to use MQTT.
-To integrate Owntracks in Home Assistant, add the following section to your `configuration.yaml` file:
+### {% linkable_title Configuring the component %}
+
+1. Open the Home Assistant frontend
+1. Open Settings -> integrations
+1. If you see an Owntracks component under 'Configured', delete it.
+ - CLick on it.
+ - Click o the trashcan icon in the upper right corner.
+1. Now, look for Owntracks in 'Setup new integration' and click on CONFIGURE.
+1. The login credentials and configuration for owntracks will be presented to you.
+ in a popup window. You will need these in the configuration for the app as mentioned below.
+1. Save these credentials somewhere, as there is no way to get it back at a later point in time if it is lost, besides repeating step 1-5
+
+### {% linkable_title Configuring the app - Android %}
+
+[Install the OwnTracks application for Android.](https://play.google.com/store/apps/details?id=org.owntracks.android)
+
+In the OwnTracks app, open sidebar and click on preferences, then on connection. Change the following settings:
+
+ - Mode: Private HTTP
+ - Host: `
-Owntracks v2.0.0 removes support for iBecons on Android.
+Owntracks v2.0.0 removes support for iBeacons on Android.
+The Point is just active occasionally so the sensors are only updated every hour or so.
+The events sent from the Point is sent as a webhook back to Home Assistant with `event_type` as `point_webhook_received`, please consider the documentation for the [IFTT](/components/ifttt/) component on how to write automations for webhooks.
+
+Purging does not necessarily remove all entries before a given date. For example, to be able to recover after startup, the last known state for each entry is never purged. This is true even if the entry is already removed from your configuration.
+
If you use MariaDB 10 you need to add port 3307 (or another port depending on which port is used by, for example: your hosting provider.) to the SERVER_IP, e.g., `mysql://user:password@SERVER_IP:3307/DB_NAME?charset=utf8`.
diff --git a/source/_components/remember_the_milk.markdown b/source/_components/remember_the_milk.markdown
index 96840dc1cba..f27a0bbcc99 100644
--- a/source/_components/remember_the_milk.markdown
+++ b/source/_components/remember_the_milk.markdown
@@ -32,8 +32,6 @@ remember_the_milk:
```
-Configuration variables:
-
{% configuration %}
name:
description: Name of the RTM account, as you can have several accounts in RTM. The name must be unique.
@@ -70,7 +68,7 @@ The task creation supports the "smart syntax", so to create a task with the tag
**Note:**
At the moment, smart syntax is *not* supported when updating tasks. All smart syntax commands are ignored during the update and will end up as normal text in the name of the task.
-|Service data attribute | Optional | Description | Example |
+|Service data attribute | Optional | Description | Example |
|-----------------------|----------|-------------|---------|
| name | no | Name of the new task, you can use the smart syntax here. | "do this ^today #from_hass" |
| id | yes | Identifier for the task you're creating, can be used to update or complete the task later on | "myid" |
@@ -79,9 +77,9 @@ At the moment, smart syntax is *not* supported when updating tasks. All smart sy
Complete a tasks that was privously created from Home Assistant. You can not complete tasks that were created outside of Home Assistant.
-If you have created your task with an ```id```, calling ```
- Note: Versions later than R44 add support for Ikea Ansluta, Philips Living Colors Gen1 and MySensors devices.
-
+Note: Versions later than R44 add support for Ikea Ansluta, Philips Living Colors Gen1 and MySensors devices.
+
-Script names (e.g., `message_temperature` in the example above) are not allowed to contain dash (minus) characters, i.e. `-`.
-The preferred way to separate words for better readability is to use underscore (`_`) characters.
+Script names (e.g., `message_temperature` in the example above) are not allowed to contain capital letters, or dash (minus) characters, i.e. `-`. The preferred way to separate words for better readability is to use underscore (`_`) characters.
+AfterShip recently started requiring having a credit card on file even if you are only using the free plan. That does not change the functionality of the platform, just something to be aware of.
+
+This component retrieves data from AfterShip public REST API, but the component is not affiliated with AfterShip.
+
[Dark Sky](https://darksky.net/dev/) will charge you $0.0001 per API call if you enter your credit card details and create more than 1000 calls per day.
While the platform is called "darksky" the sensors will show up in Home Assistant as "dark_sky" (eg: sensor.dark_sky_summary).
@@ -37,13 +37,13 @@ This component is known to work for:
USB serial converters:
- Cheap (Banggood/ebay) Generic PL2303
-- https://sites.google.com/site/nta8130p1smartmeter/webshop
-- https://www.sossolutions.nl/slimme-meter-kabel
-- https://tweakers.net/gallery/269738/aanbod/
+-
+As it suggests the region name is not the city or nearest city you want to get the warnings for but the next higher level of the governmental district called "Kreis" in German.
-The warning level is between 0 (no danger) and 4 (extreme weather conditions):
-- Warnungen vor extremem Unwetter (Stufe 4)
-- Unwetterwarnungen (Stufe 3)
-- Warnungen vor markantem Wetter (Stufe 2)
-- Wetterwarnungen (Stufe 1)
+Be aware, to get the region name you need to use the following link by replacing `Hamburg` with your city:
+- Find your region here: `https://www.dwd.de/DE/wetter/warnungen_landkreise/warnWetter_node.html?ort=Hamburg`
+- On the page that is loaded in your browser you will find the correct region ("Kreis") below the map as a headding.
+- Verify if you find any warning for your region here. Your region ("Kreis") will appear only if warnings exist: `https://www.dwd.de/DWD/warnungen/warnapp_landkreise/json/warnings.json?jsonp=loadWarnings`
+
+In the attribute name `x` is the counter of the warning starting from `1`.
+ Note that the underlying API is rate limited and to avoid getting your instance blocked from entur the sensor is only fetching new information once a minute. It's recommended to only define one platform in the configuration at one time to not hit the rate limiting.
+
+This component does not support "Fritz!Box 6490 Cable" with FritzOS 6.87 installed.
+
You have to provide **exactly 2** of `start`, `end` and `duration`.
@@ -74,7 +98,6 @@ The `history_stats` component will execute a measure within a precise time perio
As `start` and `end` variables can be either datetimes or timestamps, you can configure almost any period you want.
-
### {% linkable_title Duration %}
The duration variable is used when the time period is fixed. Different syntaxes for the duration are supported, as shown below.
@@ -103,49 +126,62 @@ Here are some examples of periods you could work with, and what to write in your
**Today**: starts at 00:00 of the current day and ends right now.
+{% raw %}
```yaml
- start: '{% raw %}{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}{% endraw %}'
- end: '{% raw %}{{ now() }}{% endraw %}'
+ start: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
+ end: '{{ now() }}'
```
+{% endraw %}
**Yesterday**: ends today at 00:00, lasts 24 hours.
+{% raw %}
```yaml
- end: '{% raw %}{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}{% endraw %}'
+ end: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
duration:
hours: 24
```
+{% endraw %}
**This morning (6AM - 11AM)**: starts today at 6, lasts 5 hours.
+{% raw %}
```yaml
- start: '{% raw %}{{ now().replace(hour=6).replace(minute=0).replace(second=0) }}{% endraw %}'
+ start: '{{ now().replace(hour=6).replace(minute=0).replace(second=0) }}'
duration:
hours: 5
```
+{% endraw %}
**Current week**: starts last Monday at 00:00, ends right now.
Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekday (86400 is the number of seconds in one day, the weekday is 0 on Monday, 6 on Sunday).
+
+{% raw %}
```yaml
- start: '{% raw %}{{ as_timestamp( now().replace(hour=0).replace(minute=0).replace(second=0) ) - now().weekday() * 86400 }}{% endraw %}'
- end: '{% raw %}{{ now() }}{% endraw %}'
+ start: '{{ as_timestamp( now().replace(hour=0).replace(minute=0).replace(second=0) ) - now().weekday() * 86400 }}'
+ end: '{{ now() }}'
```
+{% endraw %}
**Last 30 days**: ends today at 00:00, lasts 30 days. Easy one.
+{% raw %}
```yaml
- end: '{% raw %}{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}{% endraw %}'
+ end: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
duration:
days: 30
```
+{% endraw %}
**All your history** starts at timestamp = 0, and ends right now.
+{% raw %}
```yaml
- start: '{% raw %}{{ 0 }}{% endraw %}'
- end: '{% raw %}{{ now() }}{% endraw %}'
+ start: '{{ 0 }}'
+ end: '{{ now() }}'
```
+{% endraw %}
The `/dev-template` page of your home-assistant UI can help you check if the values for `start`, `end` or `duration` are correct. If you want to check if your period is right, just click on your component, the `from` and `to` attributes will show the start and end of the period, nicely formatted.
diff --git a/source/_components/sensor.http.markdown b/source/_components/sensor.http.markdown
index 9b0ec80fe16..e01041b1a46 100644
--- a/source/_components/sensor.http.markdown
+++ b/source/_components/sensor.http.markdown
@@ -11,6 +11,7 @@ logo: http.png
ha_category: Sensor
ha_release: pre 0.7
ha_iot_class: "Local Push"
+ha_qa_scale: internal
---
diff --git a/source/_components/sensor.ihc.markdown b/source/_components/sensor.ihc.markdown
index 6e2c2885fb4..e5fe8027ee0 100644
--- a/source/_components/sensor.ihc.markdown
+++ b/source/_components/sensor.ihc.markdown
@@ -23,22 +23,28 @@ project and setup as sensors:
- Dataline Humidity - Will insert 1 humidity and 2 temperature sensors (calculated dewpoint)
- Dataline Lux - will insert 1 light and 1 temperature sensor
-To manually configure IHC sensors insert this section:
+To manually configure IHC sensors insert the "sensor"
+section in your IHC configuration:
```yaml
-sensor:
- - platform: ihc
- sensors:
+ihc:
+ - url: 'http://192.168.1.3'
+ username: YOUR_USERNAME2
+ password: YOUR_PASSWORD2
+ info: true
+ sensor:
- id: 12345
- name: 'mysensor'
+ name: Temperatur_living_room
unit_of_measurement: '°C'
- - id: 12346
+ note: Floor and wall temp.
+ position: On wall between windows
+ - id: 23456
...
```
{% configuration %}
-sensors:
- description: List of sensors to setup manually
+sensor:
+ description: List of sensors to setup manually.
required: false
type: map
keys:
@@ -47,13 +53,21 @@ sensors:
required: true
type: integer
name:
- description: The name of the component
+ description: The name of the sensor.
required: false
type: string
unit_of_measurement:
description: Defines the unit of measurement of the sensor, if any.
required: false
type: string
+ note:
+ description: Descriptive note.
+ required: false
+ type: string
+ position:
+ description: Where it is placed.
+ required: false
+ type: string
{% endconfiguration %}
The resource id should be a IHC float resource. For more information about IHC
diff --git a/source/_components/sensor.ios.markdown b/source/_components/sensor.ios.markdown
index a1fce7f74f8..213ccafa87c 100644
--- a/source/_components/sensor.ios.markdown
+++ b/source/_components/sensor.ios.markdown
@@ -1,6 +1,6 @@
---
layout: page
-title: "iOS"
+title: "iOS Sensor"
description: "Instructions on how to use the iOS sensors with Home Assistant."
date: 2018-04-06 08:00
sidebar: true
@@ -14,4 +14,4 @@ ha_release: 0.31
ha_iot_class: push
---
-The `ios` component is the Home Assistant part for using the iOS companion app. For further details please check the [iOS section](/docs/ecosystem/ios/) in the documentation for further details.
+The `ios` sensor platform is the Home Assistant part for using the iOS companion app. For further details please check the [iOS section](/docs/ecosystem/ios/) in the documentation for further details.
diff --git a/source/_components/sensor.islamic_prayer_times.markdown b/source/_components/sensor.islamic_prayer_times.markdown
new file mode 100644
index 00000000000..0bed6f3d636
--- /dev/null
+++ b/source/_components/sensor.islamic_prayer_times.markdown
@@ -0,0 +1,75 @@
+---
+layout: page
+title: "Islamic Prayer Times"
+description: "Instructions on how to integrate the Islamic Prayer Times sensor within Home Assistant."
+date: 2018-12-09 00:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+ha_category: Sensor
+ha_iot_class: "Cloud Polling"
+ha_release: "0.85"
+---
+
+The Islamic Prayer Times (`islamic_prayer_times`) sensor platform displays the various prayer times for Muslims as sensors.
+
+This platform calculates prayer times using the following calculation methods:
+
+- University of Islamic Sciences in Karachi
+- Islamic Society of North America
+- Muslim World League
+- Umm Al-Qura University in Makkah
+
+## {% linkable_title Configuration %}
+
+To enable this sensor in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: islamic_prayer_times
+```
+
+{% configuration %}
+sensors:
+ required: false
+ default: "['fajr', 'dhuhr', 'asr', 'maghrib', 'isha']"
+ type: list
+ description: List of available sensors.
+ keys:
+ fajr:
+ description: Show the fajr prayer time for today.
+ sunrise:
+ description: Show the sunrise for today which is the end of fajr prayer. This is a calculated field and may not necessarily be the same as the astronomical sunrise.
+ dhuhr:
+ description: Show the dhuhr prayer time for today.
+ asr:
+ description: Show the asr prayer time for today.
+ maghrib:
+ description: Show the maghrib prayer time for today.
+ isha:
+ description: Show the isha prayer time for today.
+ midnight:
+ description: Show the midnight for today which is the end of isha prayer. This is a calculated field and is not the same as 12AM.
+calculation_method:
+ required: false
+ default: 'isna'
+ type: string
+ description: "The calculation method used for prayer times. Must be one of: `karachi`, `isna`, `mwl`, `makkah`."
+{% endconfiguration %}
+
+```yaml
+# Example configuration.yaml entry for all available sensors using a non-default calculation method
+sensor:
+ - platform: islamic_prayer_times
+ calculation_method: makkah
+ sensors:
+ - fajr
+ - sunrise
+ - dhuhr
+ - asr
+ - maghrib
+ - isha
+ - midnight
+```
diff --git a/source/_components/sensor.jewish_calendar.markdown b/source/_components/sensor.jewish_calendar.markdown
index 49eccc7da36..f90ed14a2e9 100644
--- a/source/_components/sensor.jewish_calendar.markdown
+++ b/source/_components/sensor.jewish_calendar.markdown
@@ -27,7 +27,7 @@ sensor:
{% configuration %}
language:
required: false
- default: hebrew
+ default: english
description: Whether to represent the sensors in Hebrew (א' תשרי תשע"ט) or English characters (1 Tishri 5779).
type: string
latitude:
@@ -43,7 +43,7 @@ longitude:
diaspora:
required: false
description: Consider the location as diaspora or not for calculation of the weekly portion and holidays.
- default: False
+ default: false
type: string
sensors:
required: false
@@ -53,7 +53,7 @@ sensors:
date:
description: Show the hebrew date for today.
weekly_portion:
- description: Show the weekly portion (parshat hashavu'a) - _At the moment only shows up on Saturday's_.
+ description: Show the weekly portion (parshat hashavu'a).
holiday_name:
description: If it is a holiday, show the name of the holiday.
holyness:
diff --git a/source/_components/sensor.kwb.markdown b/source/_components/sensor.kwb.markdown
index e47d36488f0..5ed109dff6a 100644
--- a/source/_components/sensor.kwb.markdown
+++ b/source/_components/sensor.kwb.markdown
@@ -27,7 +27,7 @@ Direct connection via serial port:
name: kwb
device: "/dev/ttyUSB0"
type: serial
- raw: False
+ raw: false
```
Telnet terminal server with a serial-ethernet converter:
@@ -39,23 +39,36 @@ Telnet terminal server with a serial-ethernet converter:
host:
-If you set `show_on_map` to `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.
-
+ The 1 hour rain forecast is supported for more than 75% of metropolitan France.
+The Point is just active occasionally so the sensors are only updated every hour or so.
+
-You must have the [RainMachine component](https://www.home-assistant.io/components/rainmachine/)
+You must have the [RainMachine component](/components/rainmachine/)
configured to use this platform. After configuring that component, sensors
automatically appear.
diff --git a/source/_components/sensor.rfxtrx.markdown b/source/_components/sensor.rfxtrx.markdown
index 6f12abc4173..2fbb9dbaf24 100644
--- a/source/_components/sensor.rfxtrx.markdown
+++ b/source/_components/sensor.rfxtrx.markdown
@@ -21,7 +21,7 @@ The easiest way to find your sensors is to add this to your `configuration.yaml`
# Example configuration.yaml entry
sensor:
platform: rfxtrx
- automatic_add: True
+ automatic_add: true
```
Then when the sensor emits a signal it will be automatically added:
@@ -76,11 +76,11 @@ Example configuration:
# Example configuration.yaml entry
sensor:
platform: rfxtrx
- automatic_add: True
+ automatic_add: true
devices:
0a52080705020095220269:
name: Lving
- fire_event: True
+ fire_event: true
0a520802060100ff0e0269:
name: Bath
data_type:
diff --git a/source/_components/sensor.rmvtransport.markdown b/source/_components/sensor.rmvtransport.markdown
index 0ecb8212fd6..0f96c7bfb69 100644
--- a/source/_components/sensor.rmvtransport.markdown
+++ b/source/_components/sensor.rmvtransport.markdown
@@ -98,7 +98,7 @@ sensor:
- 'RB'
- 'RE'
- 'Bus'
- - 'S'
+ - 'S-Bahn'
- station: 3006907
products: 'Bus'
destinations: ['Wiesbaden Dernsches Gelände', 'Mainz Hauptbahnhof']
@@ -106,7 +106,7 @@ sensor:
- station: 3006904
lines: 'S8'
max_journeys: 5
- products: 'S'
+ products: 'S-Bahn'
```
The first sensor will return S-Bahn, bus, RB and RE trains departures from Frankfurt Hauptbahnhof to Frankfurt Airport or Stadium that are at least 5 minutes away.
diff --git a/source/_components/sensor.ruter.markdown b/source/_components/sensor.ruter.markdown
new file mode 100644
index 00000000000..a67bb96fa02
--- /dev/null
+++ b/source/_components/sensor.ruter.markdown
@@ -0,0 +1,59 @@
+---
+layout: page
+title: "Ruter Public Transport"
+description: "Instructions on how to integrate departure times from Ruter within Home Assistant."
+date: 2018-11-05 00:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: ruter.png
+ha_category: Transport
+ha_iot_class: "Cloud Polling"
+ha_release: 0.83
+---
+
+
+The API used for this sensor is shutting down soon, you should consider starting to use the [`entur_public_transport`](/components/sensor.entur_public_transport/) sensor before that happen.
+To read the deprecation warning visit [ruter.no/labs](https://ruter.no/labs/),
+
+Although the 17track.net website states that account passwords cannot be longer than 16 characters, users can technically set long-than-16-character passwords. These passwords **will not** work with the used API. Therefore, please ensure that your 17track.net password does not exceed 16 characters.
+
+The SolarEdge Monitoring API has a daily rate limit of 300 requests. In order to stay under this limit, and alow for some additional requests, the `solaredge` platform will update the site overview every 10 minutes.
+
- This sensor doesn't work at the moment due to changed by the [Swiss Federal Office for the Environment (Bundesamt für Umwelt - Abt. Hydrologie)](http://www.hydrodaten.admin.ch) to access the data.
-
+ The sensors don't show the latest measurement, but those from the last hour due to the source of data. Some stations also don't provide data for certain measurements.
+
-If you do not supply an `entity_id` in the configuration you will need to run the service `homeassistant.update_entity` to update the sensor.
-
The UPS sensor logs into the UPS My Choice website to scrape package data. It does not use an API. Use at your own risk.
+If the UPS sensor is throwing an error about not being able to login to the UPS My Choice website, it's likely because there is a new UPS Technology Agreement (UTA) preventing the scraper from accessing the package data. Login to UPS My Choice manually and accept the UTA to resolve this.
+
-Obtain a WUnderground API key [here](https://www.wunderground.com/weather/api). They no longer offer free API keys, and all keys must be paid for. At this time existing free keys will continue to work, but will be disabled Dec 31, 2018. As of Sept 6, 2018 Weather Underground states they are declaring the [End of Service for the Weather Underground API](https://apicommunity.wunderground.com/weatherapi/topics/end-of-service-for-the-weather-underground-api). They say they will develop new plans for non-commercial users. No timeline for this has been announced.
+Obtain a WUnderground API key [here](https://www.wunderground.com/weather/api). They no longer offer free API keys, and all keys must be paid for. At this time existing free keys will continue to work, but will be disabled Dec 31, 2018, except you own a personal weather station and provide your data to WU (PWS Uploader). As of Sept 6, 2018 Weather Underground states they are declaring the [End of Service for the Weather Underground API](https://apicommunity.wunderground.com/weatherapi/topics/end-of-service-for-the-weather-underground-api). They say they will develop new plans for non-commercial users. No timeline for this has been announced.
Please consider this when using the following information.
- 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 replacement is the [`alpha_vantage` sensor](/components/sensor.alpha_vantage/).
-
+The Yahoo Weather API is being [retired](https://developer.yahoo.com/weather/?guccounter=1). A replacement is the [`darksky` sensor](/components/sensor.darksky/).
+
You must have the [DoorBird component](/components/doorbird/) configured to use this switch.
@@ -25,19 +25,4 @@ To enable this switch, add the following lines to your `configuration.yaml` file
# Example configuration.yaml entry
switch:
- platform: doorbird
- switches:
- - light_on
- - open_door
```
-
-{% configuration %}
-switches:
- description: A list of switches to include. Possible entries are `light_on` for control of the IR array and `open_door` for control of an electronic door strike or alarm.
- required: false
- type: list
- keys:
- light_on:
- description: Enable the IR light for 3 minutes.
- open_door:
- description: Activate DoorBird door relay
-{% endconfiguration %}
diff --git a/source/_components/switch.fibaro.markdown b/source/_components/switch.fibaro.markdown
new file mode 100644
index 00000000000..ef93f7853ac
--- /dev/null
+++ b/source/_components/switch.fibaro.markdown
@@ -0,0 +1,18 @@
+---
+layout: page
+title: "Fibaro switches"
+description: "Instructions on how to integrate Fibaro switches into Home Assistant."
+date: 2018-11-14 23:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: fibaro.png
+ha_category: Light
+ha_iot_class: "Local Push"
+ha_release: 0.83
+---
+
+The `fibaro` platform allows you to get data from your [Fibaro](http://fibaro.com/) switches connected to your Fibaro HCL or HC2 from within Home Assistant.
+
+They will be automatically discovered if the `fibaro` component is loaded.
diff --git a/source/_components/switch.flux.markdown b/source/_components/switch.flux.markdown
index dccaf1ba957..68e87e72f19 100644
--- a/source/_components/switch.flux.markdown
+++ b/source/_components/switch.flux.markdown
@@ -108,7 +108,7 @@ switch:
sunset_colortemp: 3000
stop_colortemp: 1900
brightness: 200
- disable_brightness_adjust: True
+ disable_brightness_adjust: true
mode: xy
transition: 30
interval: 60
diff --git a/source/_components/switch.fritzdect.markdown b/source/_components/switch.fritzdect.markdown
index 380deebdaf3..88322c313fe 100644
--- a/source/_components/switch.fritzdect.markdown
+++ b/source/_components/switch.fritzdect.markdown
@@ -24,6 +24,7 @@ Supported Firmwares (tested):
- FRITZ!OS: 06.80 / FRITZ!DECT: 03.83
- FRITZ!OS: 06.98-51288 (Beta) / FRITZ!DECT: 03.87
+- FRITZ!OS: 7.01 / FRITZ!DECT: 04.09
To use your AVM FRITZ!DECT switch(es) in your installation, add the following to your `configuration.yaml` file:
diff --git a/source/_components/switch.hlk_sw16.markdown b/source/_components/switch.hlk_sw16.markdown
new file mode 100644
index 00000000000..8095622e0a5
--- /dev/null
+++ b/source/_components/switch.hlk_sw16.markdown
@@ -0,0 +1,18 @@
+---
+layout: page
+title: "HLK-SW16 Relay Module"
+description: "Instructions on how to integrate HLK-SW16 relay switches into Home Assistant."
+date: 2018-10-29 20:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: hlktech.jpg
+ha_category: Switch
+ha_release: 0.84
+ha_iot_class: "Local Push"
+---
+
+See the [HLK-SW16 main component](/components/hlk_sw16/) for configuration instructions.
+
+The HLK-SW16 is a simple 16 port relay switch.
diff --git a/source/_components/switch.ihc.markdown b/source/_components/switch.ihc.markdown
index 5f70b909cf7..0830439c8e1 100644
--- a/source/_components/switch.ihc.markdown
+++ b/source/_components/switch.ihc.markdown
@@ -24,21 +24,22 @@ project and setup as switch devices:
- Mobile wireless relay
- Dataline plug outlet
-To manually configure IHC switches insert this section in your configuration:
+To manually configure IHC switches insert the "switch" section in your
+IHC configuration:
```yaml
-switch:
- - platform: ihc
- auto_setup: True
- switches:
- - id: 12345
- name: myswitch
- - id: 12346
- ....
+ihc:
+ - url: 'http://192.168.1.3'
+ username: YOUR_USERNAME
+ password: YOUR_PASSWORD
+ info: true
+ switch:
+ - id: 12345
+ - id: 12346
```
{% configuration %}
-switches:
+switch:
description: List of switches to setup manually
required: false
type: map
@@ -51,6 +52,14 @@ switches:
description: The name of the component
required: false
type: string
+ note:
+ description: Descriptive note.
+ required: false
+ type: string
+ position:
+ description: Where it is placed.
+ required: false
+ type: string
{% endconfiguration %}
The resource id should be a boolean resource (On/Off).
diff --git a/source/_components/switch.lightwave.markdown b/source/_components/switch.lightwave.markdown
new file mode 100644
index 00000000000..0734a9a8370
--- /dev/null
+++ b/source/_components/switch.lightwave.markdown
@@ -0,0 +1,18 @@
+---
+layout: page
+title: "Lightwave Switch"
+description: "Instructions on how to integrate Lightwave Switches with Home Assistant."
+date: 2018-12-05 18:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: lightwave.png
+ha_category: Switch
+ha_release: 0.84
+ha_iot_class: "Assumed State"
+---
+The `lightwave` switch platform integrates your Lightwave switches into Home Assistant.
+
+Configuration details for the Lightwave platform can be found on the main [Lightwave component](/components/lightwave/) page.
+
-You must have the [RainMachine component](https://www.home-assistant.io/components/rainmachine/)
+You must have the [RainMachine component](/components/rainmachine/)
configured to use this platform. After configuring that component, switches will
automatically appear.
+Note that due to the way those cheap RC units work it is **not possible to query their current state**. Therefore the only way to preserve a consistent state within Home Assistant is to only use Home Assistant as the controller.
+
@@ -54,7 +56,7 @@ devices:
required: true
type: string
fire_event:
- description: Fires an event even if the state is the same as before, for example a doorbell switch. Can also be used for automations.
+ description: Fires an event even if the state is the same as before, for example, a doorbell switch. Can also be used for automations.
required: false
default: false
type: boolean
@@ -64,17 +66,17 @@ automatic_add:
default: false
type: boolean
signal_repetitions:
- description: Because the RFXtrx device sends its actions via radio and from most receivers it's impossible to know if the signal was received or not. Therefore you can configure the switch to try to send each signal repeatedly.
+ description: Because the RFXtrx device sends its actions via radio and from most receivers, it's impossible to know if the signal was received or not. Therefore you can configure the switch to try to send each signal repeatedly.
required: false
type: integer
{% endconfiguration %}
-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`.
-If a device ID consists of only numbers, please make sure to surround it with quotes.
+If a device ID consists of only numbers, please make sure to surround it with quotes.
This is a known limitation in YAML, because the device ID will be interpreted as a number otherwise.
-
+Home-Assistant supports TLS encryption to ensure transport encryption. TLS is enforced by default. You can disable it with the [`tls`](#tls) flag -- which is not recommended.
+update_interval:
- # At least one of these must be specified:
- days: 0
- hours: 0
- minutes: 3
- seconds: 30
- milliseconds: 0
-
+#### {% linkable_title Time period dictionary example %}
+
+```yaml
+update_interval:
+ # At least one of these must be specified:
+ days: 0
+ hours: 0
+ minutes: 3
+ seconds: 30
+ milliseconds: 0
+```
+
+#### {% linkable_title Language options %}
+
+All language options are described in this table that you can use for the dark sky sensor.
+
+|Language|Variable Code|
+|---|---|
+|Arabic|`ar`|
+|Azerbaijani|`az`|
+|Belarusian|`be`|
+|Bulgarian|`bg`|
+|Bosnian|`bs`|
+|Catalan|`ca`|
+|Czech|`cs`|
+|Danish|`da`|
+|German|`de`|
+|Greek|`el`|
+|English|`en`|
+|Spanish|`es`|
+|Estonian|`et`|
+|Finnish|`fi`|
+|French|`fr`|
+|Croatian|`hr`|
+|Hungarian|`hu`|
+|Indonesian|`id`|
+|Icelandic|`is`|
+|Italian|`it`|
+|Japanese|`ja`|
+|Georgian|`ka`|
+|Cornish|`kw`|
+|Norwegian Bokmål|`nb`|
+|Dutch|`nl`|
+|Polish|`pl`|
+|Portuguese|`pt`|
+|Romanian|`ro`|
+|Russian|`ru`|
+|Slovak|`sk`|
+|Slovenian|`sl`|
+|Serbian|`sr`|
+|Swedish|`sv`|
+|Tetum|`tet`|
+|Turkish|`tr`|
+|Ukrainian|`uk`|
+|Igpay Atinlay|`x-pig-latin`|
+|simplified Chinese|`zh`|
+|traditional Chinese|`zh-tw`|
0: Keine Warnungen
1: Wetterwarnungen
2: Warnungen vor markantem Wetter
3: Unwetterwarnungen
4: Warnungen vor extremem Unwetter |
+| `warning_
0: Gewitter
1: Windböen, Sturmböen
2: ?
3: Schneefall
4: Nebel
5: Frost
6: Glätte, Glatteis
Please be aware that the type numbers represent more like a category than an exact number-to-string match. For example Type `6` can mean `GLÄTTE` or `GLATTEIS` or similar. |
+| `warning_
+ You can check if your city is covered on the [Météo-France website](http://www.meteofrance.com/previsions-meteo-france/previsions-pluie)
+
diff --git a/source/_components/sensor.swiss_hydrological_data.markdown b/source/_components/sensor.swiss_hydrological_data.markdown
index c6110b8f7c5..03283941fda 100644
--- a/source/_components/sensor.swiss_hydrological_data.markdown
+++ b/source/_components/sensor.swiss_hydrological_data.markdown
@@ -13,15 +13,11 @@ ha_iot_class: "Cloud Polling"
ha_release: 0.22
---
-
Full configuration details can be found on the main [Tuya component](/components/tuya/) page. -
\ No newline at end of file + diff --git a/source/_components/switch.verisure.markdown b/source/_components/switch.verisure.markdown index c84b3739f81..ec0a5bd14ed 100644 --- a/source/_components/switch.verisure.markdown +++ b/source/_components/switch.verisure.markdown @@ -12,8 +12,6 @@ ha_category: Switch ha_iot_class: "Cloud Polling" --- - The Verisure switch platform allows you to control your [Verisure](https://www.verisure.com/) SmartPlugs. -The requirement is that you have setup your [Verisure hub](/components/verisure/). - +The requirement is that you have set up your [Verisure hub](/components/verisure/). diff --git a/source/_components/switch.vesync.markdown b/source/_components/switch.vesync.markdown index b02f476e93e..6d11779b6fe 100644 --- a/source/_components/switch.vesync.markdown +++ b/source/_components/switch.vesync.markdown @@ -16,6 +16,8 @@ The `vesync` switch platform enables integration with Etekcity VeSync smart swit VeSync switches are low-cost wifi smart plugs that offer energy monitoring and work with popular voice assistants. +## {% linkable_title Configuration %} + To use your VeSync switches, you must first register your switches with the VeSync app. Once registration is complete you must add the following to your `configuration.yaml` file: ```yaml @@ -37,7 +39,7 @@ password: type: string {% endconfiguration %} -### {% linkable_title Exposed Attributes %} +## {% linkable_title Exposed Attributes %} VeSync switches will expose the following details. diff --git a/source/_components/switch.volvooncall.markdown b/source/_components/switch.volvooncall.markdown deleted file mode 100644 index 993f777a9f6..00000000000 --- a/source/_components/switch.volvooncall.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Volvo On Call Switch" -description: "Instructions for how to integrate Volvo On Call into Home Assistant." -date: 2016-10-02 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: volvo.png -ha_category: Car -ha_release: "0.30" ---- - - -Integrates Volvo on Call heater switch into Home Assistant. See the [main component](/components/volvooncall/) for configuration instructions. diff --git a/source/_components/switch.vultr.markdown b/source/_components/switch.vultr.markdown index c02e5273b1e..8844c897dad 100644 --- a/source/_components/switch.vultr.markdown +++ b/source/_components/switch.vultr.markdown @@ -13,13 +13,13 @@ ha_release: "0.58" ha_iot_class: "Cloud Polling" --- -The `vultr` switch platform allows you to control (start/stop) your [Vultr](https://www.vultr.com/) subscription. +The `vultr` switch platform allows you to control (start/stop) your +[Vultr](https://www.vultr.com/) subscription. -To control your Vultr subscription, you first have to set up your [Vultr hub](/components/vultr/). +To control your Vultr subscription, you first have to set up +your [Vultr hub](/components/vultr/). --The following examples assume a subscription that has an ID of `123456` and a label of `Web Server` -
+## {% linkable_title Configuration %} Minimal `configuration.yaml` (produces `switch.vultr_web_server`): @@ -27,7 +27,7 @@ Minimal `configuration.yaml` (produces `switch.vultr_web_server`): # Example configuration.yaml entry switch: - platform: vultr - subscription: 123456 + subscription: YOUR_SUBSCRIPTION_ID ``` {% configuration %} @@ -42,14 +42,15 @@ name: type: string {% endconfiguration %} +## {% linkable_title Additional Examples %} -Full `configuration.yaml` (produces `switch.amazing_server`): +Full example that produces `switch.amazing_server`, assuming a subscription +that has an ID of `123456` and a label of `Web Server`: ```yaml +# Example configuration.yaml entry switch: - platform: vultr name: Amazing Server subscription: 123456 ``` - - diff --git a/source/_components/switch.wemo.markdown b/source/_components/switch.wemo.markdown index 6bca30af1a2..9afefdc77a1 100644 --- a/source/_components/switch.wemo.markdown +++ b/source/_components/switch.wemo.markdown @@ -12,9 +12,6 @@ ha_category: Switch ha_iot_class: "Local Push" --- - The `wemo` platform allows you to control your [Belkin WeMo](http://www.belkin.com/us/p/P-F7C027/) switches from within Home Assistant. This includes support for Wemo enabled [Mr. Coffee](http://www.mrcoffee.com/wemo-landing-page.html) smart coffee makers. -They will be automatically discovered if the discovery component is enabled. - -For more configuration information see the [WeMo component](/components/wemo/) documentation. +WeMo devices are automatically discovered if the `discovery` component is enabled. For more configuration information, see the [WeMo component](/components/wemo/) documentation. diff --git a/source/_components/switch.wink.markdown b/source/_components/switch.wink.markdown index 9a026077925..f3a6c80e07e 100644 --- a/source/_components/switch.wink.markdown +++ b/source/_components/switch.wink.markdown @@ -13,18 +13,15 @@ ha_release: pre 0.7 ha_iot_class: "Cloud Polling" --- - The Wink switch platform allows you to control your [Wink](http://www.wink.com/) switches. -The requirement is that you have setup [Wink](/components/wink/). +The requirement is that you have set up [Wink](/components/wink/). - -### Supported switch devices +## {% linkable_title Supported switch devices %} - Wink Pivot power genius (No Wink hub required) -- non-dimming Z-wave in wall switches (dimming switches show up as lights) +- non-dimming Z-wave in-wall switches (dimming switches show up as lights) - Wink Relay load controlling switches - Rachio sprinkler controller (No Wink hub required) - iHome smart plug (No Wink hub required) - Wink switch groups (User created groups of switches) - diff --git a/source/_components/switch.xiaomi_aqara.markdown b/source/_components/switch.xiaomi_aqara.markdown index 0306ba29213..b19adf44314 100644 --- a/source/_components/switch.xiaomi_aqara.markdown +++ b/source/_components/switch.xiaomi_aqara.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Xiaomi Switch" -description: "Instructions on how to setup the Xiaomi switch within Home Assistant." +description: "Instructions on how to set up the Xiaomi switch within Home Assistant." date: 2017-07-21 16:34 sidebar: true comments: false @@ -13,8 +13,6 @@ ha_release: "0.50" ha_iot_class: "Local Push" --- +The `xiaomi_aqara` switch platform allows you to get data from your [Xiaomi aqara](http://www.mi.com/en/) switches. -The `xiaomi aqara` switch platform allows you to get data from your [Xiaomi aqara](http://www.mi.com/en/) switches. - -The requirement is that you have setup [Xiaomi aqara](/components/xiaomi_aqara/). - +The requirement is that you have set up [Xiaomi aqara](/components/xiaomi_aqara/). diff --git a/source/_components/switch.xiaomi_miio.markdown b/source/_components/switch.xiaomi_miio.markdown index 11596d6c241..e2f8d92b3b7 100644 --- a/source/_components/switch.xiaomi_miio.markdown +++ b/source/_components/switch.xiaomi_miio.markdown @@ -17,44 +17,50 @@ The `xiaomi_miio` switch platform allows you to control the state of your Xiaomi Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. -## Features +## {% linkable_title Features %} -### Xiaomi Smart WiFi Socket +### {% linkable_title Xiaomi Smart WiFi Socket %} -* Power (on, off) -* Attributes +Supported models: `chuangmi.plug.m1`, `chuangmi.plug.v2`, `chuangmi.plug.hmi205` + +- Power (on, off) +- Attributes - Temperature -### Xiaomi Chuangmi Plug V1 +### {% linkable_title Xiaomi Chuangmi Plug V1 %} -* Power (on, off) -* USB (on, off) -* Attributes +Supported models: `chuangmi.plug.v1`, `chuangmi.plug.v3` + +- Power (on, off) +- USB (on, off) +- Attributes - Temperature -### Xiaomi Smart Power Strip +### {% linkable_title Xiaomi Smart Power Strip %} -* Power (on, off) -* Wifi LED (on, off) -* Power Price (0...999) -* Power Mode (green, normal) (Power Strip V1 only) -* Attributes +Supported models: `qmi.powerstrip.v1`, `zimi.powerstrip.v2` + +- Power (on, off) +- Wifi LED (on, off) +- Power Price (0...999) +- Power Mode (green, normal) (Power Strip V1 only) +- Attributes - Temperature - Current - Load power - Wifi LED - Mode (Power Strip V1 only) +## {% linkable_title Configuration %} + To add a plug to your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entries switch: - platform: xiaomi_miio - name: Original Xiaomi Mi Smart WiFi Socket - host: 192.168.130.59 + host: MIIO_IP_ADDRESS token: YOUR_TOKEN - model: chuangmi.plug.m1 ``` {% configuration %} @@ -72,7 +78,7 @@ name: type: string default: Xiaomi Miio Switch model: - description: The model of your miio device. Valid values are `chuangmi.plug.v1`, `qmi.powerstrip.v1`, `zimi.powerstrip.v2`, `chuangmi.plug.m1` and `chuangmi.plug.v2`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available. + description: The model of your miio device. Valid values are `chuangmi.plug.v1`, `qmi.powerstrip.v1`, `zimi.powerstrip.v2`, `chuangmi.plug.m1`, `chuangmi.plug.v2`, `chuangmi.plug.v3` and `chuangmi.plug.hmi205`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available. required: false type: string {% endconfiguration %} @@ -85,7 +91,7 @@ Turn the wifi led on. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific xiaomi miio switch entity. Else targets all. | +| `entity_id` | yes | Only act on a specific Xiaomi miio switch entity. Else targets all. | ### {% linkable_title Service `switch.xiaomi_miio_set_wifi_led_off` %} (Power Strip only) @@ -93,7 +99,7 @@ Turn the wifi led off. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific xiaomi miio switch entity. Else targets all. | +| `entity_id` | yes | Only act on a specific Xiaomi miio switch entity. Else targets all. | ### {% linkable_title Service `switch.xiaomi_miio_set_power_price` %} (Power Strip) @@ -101,7 +107,7 @@ Set the power price. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific xiaomi miio switch entity. Else targets all. | +| `entity_id` | yes | Only act on a specific Xiaomi miio switch entity. Else targets all. | | `price` | no | Power price, between 0 and 999. | ### {% linkable_title Service `switch.xiaomi_miio_set_power_mode` %} (Power Strip V1 only) @@ -110,5 +116,5 @@ Set the power mode. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------------| -| `entity_id` | yes | Only act on a specific xiaomi miio switch entity. Else targets all. | +| `entity_id` | yes | Only act on a specific Xiaomi miio switch entity. Else targets all. | | `mode` | no | Power mode, valid values are 'normal' and 'green' | diff --git a/source/_components/system_log.markdown b/source/_components/system_log.markdown index 9d80c4a6145..c95bf4915ed 100644 --- a/source/_components/system_log.markdown +++ b/source/_components/system_log.markdown @@ -15,7 +15,9 @@ ha_qa_scale: internal 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 number 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: +## {% linkable_title Configuration %} + +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: @@ -45,11 +47,11 @@ To manually clear the system log, call this service. Errors and warnings are posted as the event `system_log_event`, so it is possible to write automations that trigger whenever a warning or error occurs. The following information is included in each event: -| Field | Description | -|------------------------------------------------------------------------------------------| -| `level` | Either `WARNING` or `ERROR` depending on severity. | +| Field | Description | +|-------------------------------------------------------------------------------------------| +| `level` | Either `WARNING` or `ERROR` depending on severity. | | `source` | File that triggered the error, e.g., `core.py` or `media_player/yamaha.py`. | -| `exception` | Full stack trace if available, otherwise empty string. | +| `exception` | Full stack trace if available, an empty string otherwise. | | `message` | Descriptive message of the error, e.g., "Error handling request". | | `timestamp` | Unix timestamp with as a double, e.g., 1517241010.237416. | @@ -57,7 +59,7 @@ Live examples of these events can be found in the Home Assistant log file or by-With the current implementation timers don't persist over restarts. After a restart they will be idle again, together with their initial configuration. + With the current implementation timers don't persist over restarts. After a restart, they will be idle again, together with their initial configuration.
## {% linkable_title Configuration %} @@ -60,11 +60,14 @@ Pick an icon that you can find on [materialdesignicons.com](https://materialdesi | Event | Description | | --------------- | ----------- | | timer.cancelled | Fired when a timer has been canceled | -| timer.finished | Fired when a timer has completed | +| timer.finished | Fired when a timer has completed | +| timer.started | Fired when a timer has been started| +| timer.restarted | Fired when a timer has been restarted | +| timer.paused | Fired when a timer has been paused | ## {% linkable_title Services %} -#### {% linkable_title Service `timer.start` %} +### {% linkable_title Service `timer.start` %} Starts or restarts a timer with the provided duration. If no duration is given, it will either restart with its initial value, or continue a paused timer with the remaining duration. If a new duration is provided, this will be the new default for the timer until Home Assistant is restarted (which loads your default values). The duration can be specified as a number of seconds or the easier to read `01:23:45` format. If no `entity_id` is given all active timers will be started. @@ -74,7 +77,7 @@ If no `entity_id` is given all active timers will be started. | `entity_id` | yes | Name of the entity to take action, e.g., `timer.timer0`. | | `duration` | yes | Duration in seconds or `00:00:00` until the timer finishes. | -#### {% linkable_title Service `timer.pause` %} +### {% linkable_title Service `timer.pause` %} Pause a running timer. This will retain the remaining duration for later continuation. If no `entity_id` is given all active timers will be paused. @@ -148,7 +151,7 @@ timer: message: "Timer stop" ``` -### {% linkable_title Control a timer from the frontend %} +### {% linkable_title Control a timer manually %} With the [`script`](/components/script/) component you would be able to control a timer (see above for a `timer` configuration sample) manually. diff --git a/source/_components/tplink_lte.markdown b/source/_components/tplink_lte.markdown new file mode 100644 index 00000000000..1adabfe82d9 --- /dev/null +++ b/source/_components/tplink_lte.markdown @@ -0,0 +1,59 @@ +--- +layout: page +title: "TP-Link LTE" +description: "Instructions on how to integrate your TP-Link LTE routers within Home Assistant." +date: 2018-10-03 21:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: tp-link.png +ha_release: 0.83 +ha_category: Network +ha_iot_class: "Local Polling" +--- + +The TP-Link LTE integration for Home Assistant allows you to observe and control TP-Link LTE routers, currently only tested with TL-MR6400 (firmware 1.4.0). + +The integration provides a notification service that will send an SMS. + +## {% linkable_title Configuration %} + +To enable the component, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +tplink_lte: + - host: IP_ADDRESS + password: SECRET + notify: + - name: sms1 + target: "+15105550123" + - name: sms2 + target: "+55520525252" +``` + +{% configuration %} +host: + description: The IP address of the router web interface. + required: true + type: string +password: + description: The password used for the router web interface. + required: true + type: string +notify: + description: A list of notification services connected to this specific host. + required: false + type: list + keys: + target: + description: The phone number of a default recipient or a list with multiple recipients. + required: true + type: string, list + name: + description: The name of the notification service. + required: false + default: notify + type: string +{% endconfiguration %} diff --git a/source/_components/tradfri.markdown b/source/_components/tradfri.markdown index 35b277fd191..a642a1959a9 100644 --- a/source/_components/tradfri.markdown +++ b/source/_components/tradfri.markdown @@ -1,7 +1,7 @@ --- layout: page title: "IKEA Trådfri (Tradfri)" -description: "Access and control your Zigbee-based IKEA Trådfri (Tradfri) devices." +description: "Access and control your IKEA Trådfri Gateway (a.k.a. IKEA Tradfri hub/bridge) and via it its connected Zigbee-based devices." date: 2017-04-12 22.04 sidebar: true featured: true @@ -14,12 +14,12 @@ ha_iot_class: "Local Polling" ha_release: 0.43 --- -The `tradfri` component supports for the IKEA Trådfri (Tradfri) gateway. The gateway can control lights connected to it and Home Assistant will automatically discover its presence on your network, if `discovery:` is present in your `configuration.yaml` file. +The `tradfri` component support the IKEA Trådfri Gateway (a.k.a. IKEA Tradfri hub/bridge). The gateway can control compatible Zigbee-based lights (certified ZigBee Light Link products) connected to it and Home Assistant will automatically discover the gateways presence on your local network, if `discovery:` is present in your `configuration.yaml` file. -You will be prompted to configure the gateway through the Home Assistant interface. Enter the security key when prompted and click configure. +You will be prompted to configure the gateway through the Home Assistant interface. The configuration process is very simple, when prompted, enter the security key printed on the physical sticker that is on the bottom of the IKEA Trådfri Gateway, then click configure.-If you see an "Unable to connect" message, restart the gateway and try again. Don't forget to assign a permanent IP to your Trådfri gateway. +If you see an "Unable to connect" message, restart the gateway and try again. Don't forget to assign a permanent IP to your IKEA Trådfri Gateway in your router / DHCP-server.
## {% linkable_title Configuration %} @@ -34,11 +34,11 @@ tradfri: {% configuration %} host: - description: "The IP address or hostname of your Trådfri gateway." + description: "The IP address or hostname of your IKEA Trådfri Gateway." required: true type: string allow_tradfri_groups: - description: "Set this to `true` to allow Home Assistant to import the groups defined on the Trådfri bridge." + description: "Set this to `true` to allow Home Assistant to import the groups defined on the IKEA Trådfri Gateway." required: false type: boolean default: false @@ -48,7 +48,7 @@ allow_tradfri_groups: ### {% linkable_title Firmware updates %} -After updating the firmware of your Trådfri gateway it might be necessary to repeat the configuration process. If you encounter problems, delete the `.tradfri_psk.conf` file in your `.homeassistant` directory, restart Home Assistant, when prompted enter the security key and click configure, just like during initial setup. Possible errors: `Fatal DTLS error: code 115`. +After updating the firmware of your IKEA Trådfri Gateway it might be necessary to repeat the configuration process. If you encounter problems, delete the `.tradfri_psk.conf` file in your `.homeassistant` directory, restart Home Assistant, when prompted enter the security key and click configure, just like during initial setup. Possible errors: `Fatal DTLS error: code 115`. ### {% linkable_title Compilation issues %} diff --git a/source/_components/tts.google.markdown b/source/_components/tts.google.markdown index c3bdf2d0cca..927d672a7c4 100644 --- a/source/_components/tts.google.markdown +++ b/source/_components/tts.google.markdown @@ -12,7 +12,7 @@ ha_category: Text-to-speech ha_release: 0.35 --- -The `google` text-to-speech platform uses [Google Text-to-Speech engine](https://console.developers.google.com/apis/api/speech.googleapis.com/overview) Text-to-Speech engine to read a text with natural sounding voices. +The `google` text-to-speech platform uses [Google Text-to-Speech engine](https://console.developers.google.com/apis/library/texttospeech.googleapis.com) Text-to-Speech engine to read a text with natural sounding voices. ## {% linkable_title Configuration %} diff --git a/source/_components/tts.markdown b/source/_components/tts.markdown index 3137188b3e8..364a2af27ec 100644 --- a/source/_components/tts.markdown +++ b/source/_components/tts.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Text-to-Speech (TTS)" -description: "Instructions on how to setup Text-to-Speech (TTS) with Home Assistant." +description: "Instructions on how to set up Text-to-Speech (TTS) with Home Assistant." date: 2016-12-13 07:00 sidebar: true comments: false @@ -17,7 +17,7 @@ Text-to-Speech (TTS) enables Home Assistant to speak to you. To get started, add the following lines to your `configuration.yaml` (example for Google): ```yaml -# Example configuration.yaml entry for google tts service +# Example configuration.yaml entry for Google TTS service tts: - platform: google ``` @@ -33,7 +33,7 @@ cache: description: Allow TTS to cache voice file to local storage. required: false type: boolean - default: True + default: true cache_dir: description: Folder name or path to a folder for caching files. required: false @@ -83,6 +83,8 @@ The Google cast devices (Google Home, Chromecast, etc.) present the following pr * They do not work with URLs that contain hostnames established by local naming means. Let's say your Home Assistant instance is running on a machine made known locally as `ha`. All your machines on your local network are able to access it as `ha`. However, try as you may, your cast device won't download the media files from your `ha` machine. That's because your cast device ignores your local naming setup. In this example, the `say` service creates a URL like `http://ha/path/to/media.mp3` (or `https://...` if you are using SSL). Setting a `base_url` that contains the IP address of your server works around this issue. By using an IP address, the cast device does not have to resolve the hostname. +* An alternative way to force Google cast devices to use internal DNS is to block them from accessing Google DNS at the firewall/router level. This would be useful in the case, for example, where your internal IP of HASS is a private IP and you have your internal DNS server (quite often a split-brain DNS scenario). This method works on both Google Home Mini and Google Chromecasts. + ## {% linkable_title Service say %} The `say` service support `language` and on some platforms also `options` for set, i.e., *voice, motion, speed, etc*. The text for speech is set with `message`. @@ -95,6 +97,7 @@ service: tts.google_say data: message: 'May the Force be with you.' ``` + Say to the `media_player.floor` device entity: ```yaml @@ -129,13 +132,13 @@ The component has two caches. Both caches can be controlled with the `cache` opt ## {% linkable_title REST Api %} -#### {% linkable_title POST /api/tts_get_url %} +### {% linkable_title POST /api/tts_get_url %} Returns an URL to the generated TTS file. Platform and message are required. ```json { - "plaform": "amazon_polly", + "platform": "amazon_polly", "message": "I am speaking now" } ``` diff --git a/source/_components/tts.microsoft.markdown b/source/_components/tts.microsoft.markdown index 7725da381a7..1c910d62ccf 100644 --- a/source/_components/tts.microsoft.markdown +++ b/source/_components/tts.microsoft.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Microsoft Text-to-Speech" -description: "Instructions on how to setup Microsoft Text-to-Speech with Home Assistant." +description: "Instructions on how to set up Microsoft Text-to-Speech with Home Assistant." date: 2017-11-07 12:00 sidebar: true comments: false @@ -67,7 +67,6 @@ contour: type: string {% endconfiguration %} - ## {% linkable_title Full configuration example %} A full configuration sample including optional variables: diff --git a/source/_components/tts.yandextts.markdown b/source/_components/tts.yandextts.markdown index f51a24ba402..180131ae264 100644 --- a/source/_components/tts.yandextts.markdown +++ b/source/_components/tts.yandextts.markdown @@ -41,7 +41,7 @@ codec: type: string default: "`mp3`" voice: - description: "The speaker voice. Supported female voices are `jane`, `oksana`, `alyss`, `omazh` and male voices are `zahar` and `ermil`." + description: "The speaker voice. Supported female voices are `jane`, `oksana`, `alyss`, `omazh`, `silaerkan`, `nastya`, `sasha`, `tanya`, `tatyana_abramova`, `voicesearch`, and `zombie`. Male voices are `zahar`, `ermil`, `levitan`, `ermilov`, `kolya`, `kostya`, `nick`, `erkanyavas`, `zhenya`, `anton_samokhvalov`, `ermil_with_tuning`, `robot`, `dude`, and `smoky`." required: false type: string default: "`zahar`" diff --git a/source/_components/tuya.markdown b/source/_components/tuya.markdown index 7166c6142ed..c08bc5ab3fa 100644 --- a/source/_components/tuya.markdown +++ b/source/_components/tuya.markdown @@ -40,7 +40,7 @@ country_code: required: true type: string platform: - description: "The app where your account register. `tuya` for Tuya Smart and `smart_life` for Smart Life." + description: "The app where your account register. `tuya` for Tuya Smart, `smart_life` for Smart Life, `jinvoo_smart` for Jinvoo Smart." required: false type: string default: tuya diff --git a/source/_components/twilio.markdown b/source/_components/twilio.markdown index c46464b1699..f4f60e7cf7e 100644 --- a/source/_components/twilio.markdown +++ b/source/_components/twilio.markdown @@ -14,7 +14,7 @@ ha_release: "0.40" The `twilio` component enables the sending of notifications via SMS and the creation of calls with [Twilio](https://twilio.com). -Free trial account is available at [Twilio](https://twilio.com) website providing free calls to verified phone numbers. +A free trial account is available at [Twilio](https://twilio.com) website providing free calls to verified phone numbers. Calls are limited to 10 minutes and will play a short trial message before your message runs. Upgraded accounts have no limitation. ## {% linkable_title Configuration %} @@ -40,4 +40,27 @@ auth_token: {% endconfiguration %} ### {% linkable_title Usage %} + After configuring the base Twilio component, add and configure either or both of the [twilio SMS](/components/notify.twilio_sms/) and [twilio Phone](/components/notify.twilio_call) components to utilize the notification functionality. + +To be able to receive events from Twilio, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](/addons/duckdns/)) and you need to have the `base_url` configured for the HTTP component ([docs](/components/http/#base_url)). + +To set it up, go to the integrations page in the configuration screen and find Twilio. Click on configure. Follow the instructions on the screen to configure Twilio. + +You will get a URL of the following format: `https://
-As per [python-miio issue 185](https://github.com/rytilahti/python-miio/issues/185) the Android Mi Home app no longer stores the token within the database (it's retrieved from Xiaomi servers from version 5.0.31+). Currently the only known fix is to uninstall, then install a downgraded version of the apk. Apkmirror is a trusted source for older versions of the app. [Mi-Home version 5.0.30](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-30-release/) is confirmed as working for the following Android methods. Using older version than 5.0.30 is not recommended as it might lack support for some newer devices like the Roborock S50.
-
-The iPhone app still stores the token in the sqlite db as of v4.7.18 (July 17, 2018).
-
+As per Version 5.4.49 the Android Mi Home app stores the token readable in the log files. It can easily be retrieved in the folder Smarthome on in the Android device. Just open the text file inside the Smarthome/logs folder and search for the token.
+
+The iPhone app still stores the token in the SQLite db as of v4.10.2 (Dec 22, 2018).
+
This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuum, Mi Robot 2 (Roborock) Vacuum, Xiaomi Philips Lights and Xiaomi IR Remote. The Xiaomi Gateway uses another security method and requires a `key` (16 alphanumeric chars), which can be obtained
easily via a hidden menu item at the Mi-Home app or using the `miio` command line tool.
The Unix timestamps can be obtained from the `input_datetime` component. This will allow you to graphically set the start and end date. @@ -56,11 +55,11 @@ The Unix timestamps can be obtained from the `input_datetime` component. This wi ### {% linkable_title Service `econet.delete_vacation` %} -You can use the service `econet.delete_vacation` to remove all vactions from an EcoNet water heater. +You can use the service `econet.delete_vacation` to remove all vacations from an EcoNet water heater. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | The entity id of the water heater to remove the vaction from. +| `entity_id` | yes | The entity id of the water heater to remove the vacation from.
Econet water heaters use to live under the `climate` platform prior to release 0.81. diff --git a/source/_components/water_heater.markdown b/source/_components/water_heater.markdown index 56917dcc57b..7e5d08687d6 100644 --- a/source/_components/water_heater.markdown +++ b/source/_components/water_heater.markdown @@ -9,9 +9,8 @@ sharing: true footer: true --- - The `water_heater` component is built for the controlling and monitoring of hot water heaters. - + To enable this component, pick one of the platforms, and add it to your `configuration.yaml`: ```yaml @@ -23,6 +22,7 @@ water_heater: ## {% linkable_title Services %} ### {% linkable_title Water heater control services %} + Available services: `water_heater.set_temperature`, `water_heater.turn_away_mode_on`, `water_heater.turn_away_mode_off`, `water_heater.set_operation_mode`
@@ -31,13 +31,13 @@ Not all water heater services may be available for your platform. Be sure to che ### {% linkable_title Service `water_heater.set_temperature` %} -Set target temperature of water heater device +Sets target temperature of water heater device. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | String or list of strings that point at `entity_id`'s of water heater devices to control. Else targets all. | `temperature` | no | New target temperature for water heater -| `operation_mode` | yes | Operation mode to set temperature to. This defaults to current_operation mode if not set, or set incorrectly. +| `operation_mode` | yes | Operation mode to set the temperature to. This defaults to current_operation mode if not set, or set incorrectly. #### {% linkable_title Automation example %} @@ -63,7 +63,7 @@ Set operation mode for water heater device | `entity_id` | yes | String or list of strings that point at `entity_id`'s of water heater devices to control. Else targets all. | `operation_mode` | no | New value of operation mode -#### {% linkable_title Automation example %} +#### {% linkable_title Automation example %} ```yaml automation: @@ -77,15 +77,16 @@ automation: operation_mode: eco ``` -### {% linkable_title Service `water_heater.turn_away_mode_on` %} +### {% linkable_title Service `water_heater.set_away_mode` %} -Turn away mode on for water heater device +Turn away mode on or off for water heater device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | String or list of strings that point at `entity_id`'s of water heater devices to control. Else targets all. +| `away_mode` | no | New value of away mode. 'on'/'off' or True/False -#### {% linkable_title Automation example %} +#### {% linkable_title Automation example %} ```yaml automation: @@ -93,28 +94,8 @@ automation: platform: time at: "07:15:00" action: - - service: water_heater.turn_away_mode_on + - service: water_heater.set_away_mode data: entity_id: water_heater.demo + away_mode: true ``` - -### {% linkable_title Service `water_heater.turn_away_mode_off` %} - -Trun away mode off for water heater device - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of water heater devices to control. Else targets all. - -#### {% linkable_title Automation example %} - -```yaml -automation: - trigger: - platform: time - at: "07:15:00" - action: - - service: water_heater.turn_away_mode_off - data: - entity_id: water_heater.demo -``` \ No newline at end of file diff --git a/source/_components/water_heater.wink.markdown b/source/_components/water_heater.wink.markdown index aa648d350b9..661c256f39f 100644 --- a/source/_components/water_heater.wink.markdown +++ b/source/_components/water_heater.wink.markdown @@ -1,28 +1,26 @@ --- layout: page title: "Wink Water Heater" -description: "Instructions on how to setup the Wink water heaters within Home Assistant." +description: "Instructions on how to set up the Wink water heaters within Home Assistant." date: 2016-11-01 22:36 sidebar: true comments: false sharing: true footer: true logo: wink.png -ha_category: water heater +ha_category: Water heater ha_release: 0.32 ha_iot_class: "Cloud Polling" --- The Wink water heater platform allows you to get data from your [Wink](http://www.wink.com/) Water Heaters. -The requirement is that you have setup [Wink](/components/wink/). +The requirement is that you have set up [Wink](/components/wink/). - -### {% linkable_title Supported water heaters %} +## {% linkable_title Supported water heaters %} - Rheem Econet water heaters (No Wink hub required) -
Wink water heaters use to live under the `climate` platform prior to release 0.81.
diff --git a/source/_components/waterfurnace.markdown b/source/_components/waterfurnace.markdown index bc45420f464..e530d87f9d4 100644 --- a/source/_components/waterfurnace.markdown +++ b/source/_components/waterfurnace.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: waterfurnace.png -ha_category: Irrigation +ha_category: Sensor ha_release: 0.62 ha_iot_class: "Cloud Polling" --- @@ -17,14 +17,20 @@ The `waterfurnace` component communicates with the WaterFurnace Symphony website The sensors provided include: - - Thermostat Setpoint - - Thermostat Current Temp - - Leaving Air Temp - - Entering Water Loop Temp - - Current Humidity - - Current Humidity Setpoint - - Total system power (in Watts) - - Furnace Mode +- Thermostat Setpoint +- Thermostat Current Temp +- Leaving Air Temp +- Entering Water Loop Temp +- Current Humidity +- Current Humidity Setpoint +- Total system power (in Watts) +- Furnace Mode +- Compressor Power +- Fan Power +- Aux Power +- Loop Pump Power +- Compressor Speed +- Fan Speed ## {% linkable_title Configuration %} @@ -35,7 +41,6 @@ To use Waterfurnace in your installation, add the following to your `configurati waterfurnace: username: YOUR_USERNAME password: YOUR_PASSWORD - unit: 0123456789AB ``` {% configuration %} @@ -47,14 +52,10 @@ password: description: The password for your Symphony WaterFurnace account required: true type: string -unit: - description: The unit serial number for your WaterFurnace - required: true - type: string {% endconfiguration %} -#### {% linkable_title Limitations %} +## {% linkable_title Limitations %} -The WebSocket interface used by this module requires active polling, otherwise the server side shuts down the connection. By default, this polling is happening every 10 seconds. All sensors are updated during every polling cycle. +The WebSocket interface used by this module requires active polling to prevent the server side shuts down the connection. By default, this polling is happening every 10 seconds. All sensors are updated during every polling cycle. While this is communicating with a thermostat, geothermal systems operate most efficiently when setbacks are not used, and the home is kept at a constant temperature. It remains useful to collect the data from the system to understand its performance, but a full climate interface won't be implemented. diff --git a/source/_components/watson_iot.markdown b/source/_components/watson_iot.markdown index 0014d5e24da..a13ef02fc63 100644 --- a/source/_components/watson_iot.markdown +++ b/source/_components/watson_iot.markdown @@ -22,10 +22,11 @@ a gateway device in your IoT platform instance. For instructions on how to do this check the [official documentation](https://console.bluemix.net/docs/services/IoT/gateways/dashboard.html#IoT_connectGateway) which provides the details on doing this. After you register the gateway device for your home-assistant you'll need 4 pieces of information: - - Organization ID - - Gateway device Type - - Gateway device ID - - Authentication Token + +- Organization ID +- Gateway device Type +- Gateway device ID +- Authentication Token With this basic information you can configure the component: diff --git a/source/_components/weather.buienradar.markdown b/source/_components/weather.buienradar.markdown index 505c84bae90..a6552408949 100644 --- a/source/_components/weather.buienradar.markdown +++ b/source/_components/weather.buienradar.markdown @@ -59,7 +59,7 @@ weather: # Force 'Meetstation Volkel' to be used: latitude: 51.65 longitude: 5.70 - forecast: True + forecast: true ```diff --git a/source/_components/weather.metoffice.markdown b/source/_components/weather.metoffice.markdown index 37d41463dbd..afadc9803ca 100644 --- a/source/_components/weather.metoffice.markdown +++ b/source/_components/weather.metoffice.markdown @@ -13,7 +13,7 @@ ha_release: 0.42 ha_iot_class: "Cloud Polling" --- -The `metoffice` weather platform uses the Met Office's [DataPoint API][datapoint] for weather data. +The `metoffice` weather platform uses the Met Office's [DataPoint API](http://www.metoffice.gov.uk/datapoint) for weather data. ## {% linkable_title Configuration %} diff --git a/source/_components/weather.smhi.markdown b/source/_components/weather.smhi.markdown index 4eb17355a5b..f06d56635d6 100644 --- a/source/_components/weather.smhi.markdown +++ b/source/_components/weather.smhi.markdown @@ -7,7 +7,6 @@ sidebar: true comments: false sharing: true footer: true -featured: true logo: smhi.png ha_category: Weather ha_release: 0.81 @@ -18,4 +17,4 @@ The `smhi` platform uses the [SMHI.se](https://www.smhi.se/) web service as a so ## {% linkable_title Configuration %} -Please see the [component](/components/smhi/) documentation for details and configuration. \ No newline at end of file +Please see the [component](/components/smhi/) documentation for details and configuration. diff --git a/source/_components/weather.yweather.markdown b/source/_components/weather.yweather.markdown index 7f9744a3938..10d8ed2c91b 100644 --- a/source/_components/weather.yweather.markdown +++ b/source/_components/weather.yweather.markdown @@ -12,38 +12,6 @@ ha_category: Weather ha_release: 0.47 --- -The `yweather` platform uses [Yahoo Weather](https://www.yahoo.com/news/weather/) as a source for current meteorological data. This component will show you the condition and temperatures for max. 10 days. -
-Use of the Yahoo Weather API should not exceed reasonable request volume. Access is limited to 2000 signed calls per day. +The Yahoo Weather API **has been** [retired](https://developer.yahoo.com/weather/?guccounter=1). A replacement is the [`darksky` weather](/components/weather.darksky/).
- -## {% linkable_title Configuration %} - -The `woeid` (Where On Earth ID) for your location, as shown in the example below. You can find your WOEID by copying the numeric digits at the end of the URL for your location at [Yahoo Weather](https://www.yahoo.com/news/weather/). If you don't add a WOEID, it will be generated from Home Assistant's latitude and longitude. - -To add Yahoo Weather to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -weather: - - platform: yweather -``` - -{% configuration %} -woeid: - description: Your Where On Earth ID, see above for all the info. - required: false - type: integer -name: - description: The name of the sensor. To easily recognize each sensor when adding more than one Yahoo weather sensor, it is recommended to use the name option. - required: false - type: string - default: yweather -{% endconfiguration %} - --This platform is an alternative to the [`yweather`](/components/sensor.yweather/) sensor. -
- -Details about the API are available in the [Yahoo! Developer Network](https://developer.yahoo.com/weather/). diff --git a/source/_components/weather.zamg.markdown b/source/_components/weather.zamg.markdown index 486f6d7fded..1bf04508ba9 100644 --- a/source/_components/weather.zamg.markdown +++ b/source/_components/weather.zamg.markdown @@ -49,5 +49,5 @@ longitude: {% endconfiguration %}-This platform is an alternative to the [`zamg`](/components/sensor.zamg/) sensor. The weather platform is easier to configure but less customizable. +This platform is an alternative to the [`zamg`](/components/sensor.zamg/) sensor. The `weather` platform is easier to configure but less customizable and doesn't have support for conditions which is a key feature of the `weather` platforms.
diff --git a/source/_components/wemo.markdown b/source/_components/wemo.markdown index 71f734402ab..9e8123052f0 100644 --- a/source/_components/wemo.markdown +++ b/source/_components/wemo.markdown @@ -2,7 +2,7 @@ layout: page title: "Belkin WeMo" description: "Instructions on how to integrate Belkin WeMo devices into Home Assistant." -date: 2016-02-20 00:41 +date: 2018-11-01 01:53 sidebar: true comments: false sharing: true @@ -17,33 +17,50 @@ The `wemo` component is the main component to integrate various [Belkin WeMo](ht ## {% linkable_title Configuration %} -Supported devices will be automatically discovered if the discovery component is enabled. Loading the `wemo` component will scan the local network for WeMo devices, even if you are not using the discovery component +{% configuration %} + discovery: + description: Setting this value to false will prevent the automatic discovery of WeMo devices by the wemo platform and the discovery platform (static devices will still be discovered) + required: false + type: boolean + default: true + static: + description: One or more static IP adresses for WeMo to use + required: false + type: list +{% endconfiguration %} + +Supported devices will be automatically discovered if the optional `discovery` configuration item is omitted or set to true or if the `discovery` component is enabled. If the `discovery` configuration item is set to false, then automatic discovery of WeMo devices is disabled both for the `wemo` component and for the `discovery` component. Loading the `wemo` component with the `discovery` configuration item omitted or set to true will scan the local network for WeMo devices, even if you are not using the `discovery` component. ```yaml -# Example configuration.yaml entry +# Example configuration.yaml entry with automatic discovery enabled (by omitting the discovery configuration item) wemo: + +# Example configuration.yaml entry with automatic discovery enabled (by explicitly setting the discovery configuration item) +wemo: + discovery: true ``` -Alternately, WeMo devices that are not discoverable can be statically configured. If you have WeMo devices on subnets other than where Home Assistant is running, or devices in a remote location reachable over a VPN, you will need to configure them manually. This is also useful if you wish to disable discovery for some WeMo's, even if they are local. Example static configuration: +Alternately, WeMo devices that are not discoverable can be statically configured. If you have WeMo devices on subnets other than where Home Assistant is running, or devices in a remote location reachable over a VPN, you will need to configure them manually. Statically configured devices may be used with or without automatic discovery enabled. Example static configuration: ```yaml +# Example configuration.yaml entry with automatic discovery disabled, and 2 statically configured devices wemo: + discovery: false static: - 192.168.1.23 - 192.168.52.172 ``` -Any WeMo devices that are not statically configured but reachable via discovery will still be added automatically. +Note that if you use static device entries, you may want to set up your router (or whatever runs your DHCP server) to force your WeMo devices to use a static IP address. Check the DHCP section of your router configuration for this ability. -Note that if you use this, you may want to set up your router (or whatever runs your DHCP server) to force your WeMo devices to use a static IP address. Check the DHCP section of your router configuration for this ability. - -If the device doesn't seem to work and all you see is the state "unavailable" on your dashboard, check that your firewall doesn't block incoming request on port 8989 since this is the address to which the WeMo devices send their update. +If the device doesn't seem to work and all you see is the state "unavailable" on your dashboard, check that your firewall doesn't block incoming requests on port 8989, since this is the port to which the WeMo devices send their updates. ## {% linkable_title Emulated devices %} -Various software that emulates WeMo devices often uses alternative ports. Static configuration should include the port value: +Various software that emulate WeMo devices often use alternative ports. Static configuration should include the port value: ```yaml +# Example configuration.yaml entry with static device entries that include non-standard port numbers wemo: static: - 192.168.1.23:52001 diff --git a/source/_components/wink.markdown b/source/_components/wink.markdown index b26f93bf50c..3b4c3e1fe4e 100644 --- a/source/_components/wink.markdown +++ b/source/_components/wink.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Wink" -description: "Instructions on how to setup the Wink hub within Home Assistant." +description: "Instructions on how to set up the Wink hub within Home Assistant." date: 2015-01-20 22:36 sidebar: true comments: false @@ -24,17 +24,17 @@ Home Assistant integrates with the Wink API and automatically sets up any switch Check the related components pages for actual devices that are supported. -### {% linkable_title Authenticate using [developer.wink.com](https://developer.wink.com) %} +## {% linkable_title Authenticate using [developer.wink.com](https://developer.wink.com) %} -You need to setup a developer account with Wink. This process can take a few days to get approved. +You need to set up a developer account with Wink. This process can take a few days to get approved. Wink requests three pieces of information from the user when they sign up for a developer account. -1. `Name:` This can be anything, for example "Home Assistant" +1. `Name:` This can be anything, for example, "Home Assistant" 2. `Website:` The external address of your Home Assistant instance. If not externally accessible you can use your email address. -3. `Redirect URI:` This should be "http://192.168.1.5:8123/auth/wink/callback" replacing the IP with the internal IP of your Home Assistant box. +3. `Redirect URI:` This should be `http://192.168.1.5:8123/auth/wink/callback` replacing the IP with the internal IP of your Home Assistant box. -No settings are required in the configuration.yaml other than `wink:` this is because you will be guided through setup via the configurator on the frontend. +No settings are required in the `configuration.yaml` other than `wink:` this is because you will be guided through setup via the configurator on the frontend.When using the configurator make sure the initial setup is performed on the same local network as the Home Assistant server, if not from the same box Home Assistant is running on. This will allow for authentication redirects to happen correctly. @@ -44,7 +44,7 @@ When using the configurator make sure the initial setup is performed on the same wink: ``` -### {% linkable_title Full oauth authentication (legacy) %} +## {% linkable_title Full oauth authentication (legacy) %} This should be used for users that obtained their client_id and client_secret via email from Wink support prior to [developer.wink.com's](https://developer.wink.com) existence. @@ -87,7 +87,7 @@ Local control: - Wink's local control API isn't officially documented and therefore could be broken by a hub update. For these reasons `local_control` defaults to `false`. - Using local control doesn't appear to make commands any quicker, but does function in an internet/Wink outage. - Local control is also only available for the Wink hub v1 and v2, not the Wink relay. -- Local control isn't used during start-up of Home Assistant; this means initial setup requires an active internet connection. +- Local control isn't used during the start-up of Home Assistant; this means initial setup requires an active internet connection. - Local control requests are first sent to the controlling hub. If a request fails, that request will attempt to go online.
@@ -95,23 +95,23 @@ It is possible for the hub to get into a bad state where it stops accepting loca The following error will be logged if the hub is rejecting local requests. -``` +```txt Error sending local control request. Sending request online ```
-### {% linkable_title Service `refresh_state_from_wink` %} +## {% linkable_title Service `refresh_state_from_wink` %} The Wink component only obtains the device states from the Wink API once, during startup. All updates after that are pushed via a third party called PubNub. On rare occasions where an update isn't pushed device states can be out of sync. -You can use the service wink/refresh_state_from_wink to pull the most recent state from the Wink API for all devices. If `local_control` is set to `True` states will be pulled from the devices controlling hub, not the online API. +You can use the service wink/refresh_state_from_wink to pull the most recent state from the Wink API for all devices. If `local_control` is set to `true` states will be pulled from the devices controlling hub, not the online API. -### {% linkable_title Service `pull_newly_added_devices_from_wink` %} +## {% linkable_title Service `pull_newly_added_devices_from_wink` %} You can use the service wink/add_new_devices to pull any newly paired Wink devices to an already running instance of Home-Assistant. Any new devices will also be added if Home-Assistant is restarted. -### {% linkable_title Service `delete_wink_device` %} +## {% linkable_title Service `delete_wink_device` %} You can use the service wink/delete_wink_device to remove/unpair a device from Wink. @@ -119,7 +119,7 @@ You can use the service wink/delete_wink_device to remove/unpair a device from W | ---------------------- | -------- | ----------- | | `entity_id` | no | String that points at the `entity_id` of device to delete. -### {% linkable_title Service `pair_new_device` %} +## {% linkable_title Service `pair_new_device` %} You can use the service wink/pair_new_device to pair a new device to your Wink hub/relay @@ -133,7 +133,7 @@ You can use the service wink/pair_new_device to pair a new device to your Wink h Calling service wink/pull_newly_added_wink_devices after a device is paired will add that new device to Home Assistant. The device will also show up on the next restart of Home Assistant. -### {% linkable_title Service `rename_wink_device` %} +## {% linkable_title Service `rename_wink_device` %} You can use the service wink/rename_wink_device to change the name of a device. @@ -150,17 +150,15 @@ Home Assistant entity_ids for Wink devices are based on the Wink device's name. The Wink hub, by default, can only be accessed via the cloud. This means it requires an active internet connection and you will experience delays when controlling and updating devices (~3s). - -### Custom Wink devices and their services +## {% linkable_title Custom Wink devices and their services %} - GoControl siren and strobe - Dome siren/chime/strobe - Quirky Nimbus (Legacy device) These can no longer be officially added to your Wink account - ### {% linkable_title Service `set_siren_auto_shutoff` %} -You can use the service wink/set_siren_auto_shutoff to set how long the siren will sound before shuting off. +You can use the service wink/set_siren_auto_shutoff to set how long the siren will sound before shutting off. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | @@ -189,7 +187,7 @@ You can use the service wink/set_chime_volume to set the volume for the chime on | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `volume` | no | String. One of ["low", "medium", "high"] -| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. +| `entity_id` | yes | String or list of strings that point at `entity_id`s of the siren/chime. Example: @@ -279,7 +277,7 @@ script: sequence: - service: wink.set_siren_strobe_enabled data: - enabled: False + enabled: false ``` ### {% linkable_title Service `set_chime_strobe_enabled` %} @@ -299,7 +297,7 @@ script: sequence: - service: wink.set_chime_strobe_enabled data: - enabled: False + enabled: false ``` ### {% linkable_title Service `set_nimbus_dial_state` %} diff --git a/source/_components/wunderlist.markdown b/source/_components/wunderlist.markdown new file mode 100644 index 00000000000..aed87d67f49 --- /dev/null +++ b/source/_components/wunderlist.markdown @@ -0,0 +1,59 @@ +--- +layout: page +title: "Wunderlist" +description: "Instructions on how to use Wunderlist with Home Assistant." +date: 2018-10-09 10:10 +sidebar: true +comments: false +sharing: true +footer: true +logo: wunderlist.png +ha_category: Calendar +ha_release: 0.84 +--- + +The `wunderlist` component allows you to create tasks in [Wunderlist](https://www.wunderlist.com) from Home Assistant. You can use this if you want Home Assistant to send you a task that you should not forget, e.g., Congratulate Dani. + +## {% linkable_title Setup %} + +Wunderlist API uses OAuth2, so you need to obtain a `client_id` and an `access_token`. +There are two ways: + +1. Go to the [Wunderlist IOT app page](https://wunderlist-iot.herokuapp.com), log in with your Wunderlist account and accept the application permissions. + It will print for you the `client_id` and the `access_token`. +2. Or you can create your own application and `access_token` following the instructions at the [Wunderlist developer page](https://developer.wunderlist.com/). + +Store the parameters in your Home Assistant configuration: + +```yaml +# Example configuration.yaml entry +wunderlist: + client_id: YOUR_CLIENT_ID + access_token: YOUR_ACCESS_TOKEN +``` + +{% configuration %} +client_id: + description: The ID of your Wunderlist application (OAuth2). + required: true + type: string +access_token: + description: A token for your Wunderlist personal account (For the ``client_id`` application). + required: true + type: string +{% endconfiguration %} + +## {% linkable_title Creating tasks with service `create_task`%} + +This component offers a new service domain `wunderlist` with the service `create_task`. +You can call this service with the argument `list_name` the argument `name` and the optional parameter `starred` to create a new task. + +| Service data attribute | Optional | Description | Example | +|------------------------|----------|-------------|---------| +| list_name | no | Name of the list | "Shopping list" +| name | no | Name of the new task | "Spanish Jam" | +| starred | yes | Create the task starred or not | false | + +## {% linkable_title Disclaimer %} + +This product uses the Wunderlist API but is not endorsed or certified by Wunderlist. diff --git a/source/_components/xiaomi_aqara.markdown b/source/_components/xiaomi_aqara.markdown index c01577030b0..f797f8f6b3e 100644 --- a/source/_components/xiaomi_aqara.markdown +++ b/source/_components/xiaomi_aqara.markdown @@ -16,35 +16,36 @@ redirect_from: /components/xiaomi/ The `xiaomi_aqara` component allows you to integrate [Xiaomi](http://www.mi.com/en/) Aqara-compatible devices into Home Assistant. -#### {% linkable_title Supported Devices %} +## {% linkable_title Supported Devices %} -- Xiaomi Aqara Gateway (lumi.gateway.v2, lumi.gateway.v3) - Aqara Air Conditioning Companion (lumi.acpartner.v3) - Aqara Intelligent Door Lock (lock.aq1) -- Temperature and Humidity Sensor (1st and 2nd generation) -- Motion Sensor (1st and 2nd generation) -- Door and Window Sensor (1st and 2nd generation) -- Button 1st generation (Single, Double, long_click_press) -- Button 2nd generation (Single, Double) -- Plug aka Socket (Zigbee version, reports power consumed, power load, state and if device in use) -- Wall Plug (reports power consumed, power load and state) -- Aqara Wall Switch (Single) - Aqara Wall Switch (Double) -- Aqara Wall Switch LN (Single) +- Aqara Wall Switch (Single) - Aqara Wall Switch LN (Double) -- Aqara Wireless Switch (Single) +- Aqara Wall Switch LN (Single) - Aqara Wireless Switch (Double) +- Aqara Wireless Switch (Single) +- Battery +- Button 1st generation (Single, Double, Long Click) +- Button 2nd generation (Single, Double) - Cube +- Door and Window Sensor (1st and 2nd generation) - Gas Leak Detector (reports alarm and density) -- Smoke Detector (reports alarm and density) - Gateway (Light, Illumination Sensor, Ringtone play) - Intelligent Curtain -- Water Leak Sensor +- Motion Sensor (1st and 2nd generation) +- Plug aka Socket (Zigbee version, reports power consumed, power load, state and if the device is in use) +- Smoke Detector (reports alarm and density) +- Temperature and Humidity Sensor (1st and 2nd generation) - Vibration Sensor -- Battery +- Wall Plug (reports power consumed, power load, and state) +- Water Leak Sensor +- Xiaomi Mijia Gateway (lumi.gateway.v2, lumi.gateway.v3) -#### {% linkable_title Unsupported Devices %} +## {% linkable_title Unsupported Devices %} +- Xiaomi Aqara Gateway (lumi.gateway.aqhm01), as it is not possible to activate dev mode in the Mi Home App. - Gateway Radio - Gateway Button - Xiaomi Mi Air Conditioning Companion (lumi.acpartner.v2) @@ -98,7 +99,7 @@ gateways: type: map keys: mac: - description: The MAC address of your gateway. *Optional if only using one gateway.* + description: The MAC address of your gateway. Needs to be formatted without ":". *Optional if only using one gateway.* required: false type: string key: @@ -207,7 +208,7 @@ This example plays the sound of a dog barking when the button is held down and s - alias: Let a dog bark on long press trigger: platform: event - event_type: click + event_type: xiaomi_aqara.click event_data: entity_id: binary_sensor.switch_158d000xxxxxc2 click_type: long_click_press @@ -221,7 +222,7 @@ This example plays the sound of a dog barking when the button is held down and s - alias: Stop barking immediately on single click trigger: platform: event - event_type: click + event_type: xiaomi_aqara.click event_data: entity_id: binary_sensor.switch_158d000xxxxxc2 click_type: single @@ -239,7 +240,7 @@ This example toggles the living room lamp on a double click of the button. - alias: Double Click to toggle living room lamp trigger: platform: event - event_type: click + event_type: xiaomi_aqara.click event_data: entity_id: binary_sensor.switch_158d000xxxxxc2 click_type: double @@ -249,7 +250,6 @@ This example toggles the living room lamp on a double click of the button. entity_id: light.living_room_lamp ``` - ## {% linkable_title Troubleshooting %} ### {% linkable_title Initial setup problem %} @@ -264,6 +264,7 @@ 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://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 Gateway. @@ -272,5 +273,7 @@ That means that Home Assistant is not getting any response from your Xiaomi gate - 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 alternatively 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 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 alternatively an emulator such as [bluestacks](https://www.bluestacks.com). In some instances, there is an issue with keys being generated using the iOS application. + - You need to make sure to have multicast support on your network. If you are running Home Assistant in a virtual machine (like Proxmox), try `echo 0 >/sys/class/net/vmbr0/bridge/multicast_snooping` on the host and restart the service or reboot the host. - 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/_components/zabbix.markdown b/source/_components/zabbix.markdown index fe317fce810..decbd7437b8 100644 --- a/source/_components/zabbix.markdown +++ b/source/_components/zabbix.markdown @@ -37,7 +37,7 @@ path: type: string default: "`/zabbix/`" ssl: - description: Set to `True` if your Zabbix installation is using SSL. + description: Set to `true` if your Zabbix installation is using SSL. required: false type: boolean default: false @@ -58,7 +58,7 @@ password: zabbix: host: ZABBIX_HOST path: ZABBIX_PATH - ssl: False + ssl: false username: USERNAME password: PASSWORD ``` diff --git a/source/_components/zeroconf.markdown b/source/_components/zeroconf.markdown index d2e8908adea..be29f6e6d84 100644 --- a/source/_components/zeroconf.markdown +++ b/source/_components/zeroconf.markdown @@ -41,6 +41,6 @@ Browsing domain 'local' on -1.-1 ... Browsing for services of type '_home-assistant._tcp' in domain 'local' on 4.0 ... Found service 'Home' of type '_home-assistant._tcp' in domain 'local' on 4.0. Service data for service 'Home' of type '_home-assistant._tcp' in domain 'local' on 4.0: - Host Home._home-assistant._tcp.local (192.168.0.70), port 8123, TXT data: + Host Home._home-assistant._tcp.local (192.168.0.70), port 8123, TXT data: ['requires_api_password=true', 'base_url=http://192.168.0.70:8123', 'version=0.41.0'] ``` diff --git a/source/_components/zha.markdown b/source/_components/zha.markdown index 2bc206d73d5..7d353f91ac0 100644 --- a/source/_components/zha.markdown +++ b/source/_components/zha.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Zigbee Home Automation" -description: "Instructions on how to integrate your Zigbee Home Automation within Home Assistant." +description: "Instructions on how to integrate your Zigbee Home Automation (ZHA) devices within Home Assistant." date: 2017-02-22 19:59 sidebar: true comments: false @@ -14,7 +14,7 @@ ha_iot_class: "Local Polling" --- [Zigbee Home Automation](http://www.zigbee.org/zigbee-for-developers/applicationstandards/zigbeehomeautomation/) -integration for Home Assistant allows you to connect many off-the-shelf Zigbee devices to Home Assistant, using a compatible Zigbee radio. +integration for Home Assistant allows you to connect many off-the-shelf Zigbee based devices to Home Assistant, using one of the available Zigbee radio modules compatible with [zigpy](https://github.com/zigpy/zigpy) (an open source Python library implementing a Zigbee stack, which in turn relies on separate libraries which can each interface a with Zigbee radio module a different manufacturer). There is currently support for the following device types within Home Assistant: @@ -24,12 +24,14 @@ There is currently support for the following device types within Home Assistant: - [Switch](../switch.zha) - [Fan](../fan.zha) -Known working Zigbee radios: +Known working Zigbee radio modules: -- Nortek/GoControl Z-Wave & Zigbee USB Adapter - Model HUSBZB-1 -- XBee Series 2C -- [Elelabs Zigbee USB Adapter](https://elelabs.com/products/elelabs_usb_adapter.html) -- [Elelabs Zigbee Raspberry Pi Shield](https://elelabs.com/products/elelabs_zigbee_shield.html) +- EmberZNet based radios using the EZSP protocol (via the [bellows](https://github.com/zigpy/bellows) library for zigpy) + - [Nortek GoControl QuickStick Combo Model HUSBZB-1 (Z-Wave & Zigbee USB Adapter)](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/) + - [Elelabs Zigbee USB Adapter](https://elelabs.com/products/elelabs_usb_adapter.html) + - [Elelabs Zigbee Raspberry Pi Shield](https://elelabs.com/products/elelabs_zigbee_shield.html) +- XBee Zigbee based radios (via the [zigpy-xbee](https://github.com/zigpy/zigpy-xbee) library for zigpy) + - Digi XBee Series 2C (S2C) modules ## {% linkable_title Configuration %} @@ -62,6 +64,13 @@ database_path: description: _Full_ path to the database which will keep persistent network data. required: true type: string +enable_quirks: + description: Enable quirks mode for devices where manufacturers didn't follow specs. + required: false + type: boolean + default: true {% endconfiguration %} -To add new devices to the network, call the `permit` service on the `zha` domain, and then follow the device instructions for doing a scan or factory reset. In case you want to add Philips Hue bulbs that have previously been added to another bridge, have a look at: [https://github.com/vanviegen/hue-thief/](https://github.com/vanviegen/hue-thief/) +To add new devices to the network, call the `permit` service on the `zha` domain. Do this by clicking the Service icon in Developer tools and typing `zha.permit` in the **Service** dropdown box. Next, follow the device instructions for adding, scanning or factory reset. + +In case you want to add Philips Hue bulbs that have previously been added to another bridge, have a look at: [https://github.com/vanviegen/hue-thief/](https://github.com/vanviegen/hue-thief/) diff --git a/source/_components/zigbee.markdown b/source/_components/zigbee.markdown index d43c7051ff1..3c2022dbed7 100644 --- a/source/_components/zigbee.markdown +++ b/source/_components/zigbee.markdown @@ -13,7 +13,7 @@ ha_release: 0.12 ha_iot_class: "Local Polling" --- -[Zigbee](http://www.zigbee.org/what-is-zigbee/) integration for Home Assistant allows you to utilize modules such as the [XBee](http://www.digi.com/lp/xbee) as wireless General Purpose Input/Output (GPIO) devices. The component requires a local Zigbee device to be connected to a serial port. Through this it will send and receive commands to and from other devices on the Zigbee mesh network. +[Zigbee](http://www.zigbee.org/what-is-zigbee/) integration for Home Assistant allows you to utilize modules such as the [XBee](http://www.digi.com/lp/xbee) as wireless General Purpose Input/Output (GPIO) devices. The component requires a local Zigbee device to be connected to a serial port. Through this, it will send and receive commands to and from other devices on the Zigbee mesh network. There is currently support for the following device types within Home Assistant: @@ -49,7 +49,7 @@ baud: To find the possible serial port names of your device, run: ```bash -$ ls /dev/ttyUSB* +ls /dev/ttyUSB* ```diff --git a/source/_components/zone.markdown b/source/_components/zone.markdown index caeb22e761a..16a379c760a 100644 --- a/source/_components/zone.markdown +++ b/source/_components/zone.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Zone" -description: "Instructions on how to setup zones within Home Assistant." +description: "Instructions on how to set up zones within Home Assistant." date: 2015-10-04 09:23 sidebar: true comments: false @@ -68,7 +68,7 @@ passive: To find the latitude/longitude of a certain place you can use [Google Maps](https://www.google.com/maps/) or [Bing Maps](https://www.bing.com/maps). Just right click and copy the coordinates from there (Bing) or click on the "What is here?" (Google) -#### {% linkable_title Home zone %} +## {% linkable_title Home zone %} If no configuration is given, the `zone` component will create a zone for home. This zone will use location provided in the `configuration.yaml` file and have a radius of 100 meters. To override this, create a zone configuration and name it **'Home'**. @@ -76,10 +76,10 @@ If no configuration is given, the `zone` component will create a zone for home. Devices that are in the zone **'Home'** will not appear on the map in the Home Assistant UI.
-#### {% linkable_title Icons %} +## {% linkable_title Icons %} It is preferred to pick an icon to use for your zone. Pick any icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) and prefix the name with `mdi:`. For example `mdi:school`, `mdi:worker`, `mdi:home`, `mdi:cart`, or `mdi:castle`. -#### State +## {% linkable_title State %} `zoning` is the state a `zone` has when it is configured. A `zone` doesn't have another state; all configured zones are `zoning` all the time. diff --git a/source/_components/zoneminder.markdown b/source/_components/zoneminder.markdown index 614a5ce022b..a5f49f7082a 100644 --- a/source/_components/zoneminder.markdown +++ b/source/_components/zoneminder.markdown @@ -82,6 +82,7 @@ Once loaded, the `zoneminder` platform will expose a service (`set_run_state`) t | `name` | no | Name of the new run state to set. | For example, if your ZoneMinder instance was configured with a run state called "Home", you could write an [automation](/getting-started/automation/) that changes ZoneMinder to the "Home" run state by including the following [action](/getting-started/automation-action/): + ```yaml action: service: zoneminder.set_run_state diff --git a/source/_cookbook/automation_for_rainy_days.markdown b/source/_cookbook/automation_for_rainy_days.markdown index 7ce7c46b16a..a6e3b0bb8b7 100644 --- a/source/_cookbook/automation_for_rainy_days.markdown +++ b/source/_cookbook/automation_for_rainy_days.markdown @@ -44,7 +44,7 @@ And then of course turn off the lamp when it stops raining but only if it's with condition: - condition: sun after: 'sunset' - offset: '-01:00:00' + after_offset: '-01:00:00' action: service: light.turn_off entity_id: light.couch_lamp diff --git a/source/_cookbook/configuration_yaml_by_renemarc.markdown b/source/_cookbook/configuration_yaml_by_renemarc.markdown new file mode 100644 index 00000000000..265bf0c8426 --- /dev/null +++ b/source/_cookbook/configuration_yaml_by_renemarc.markdown @@ -0,0 +1,12 @@ +--- +layout: page +title: "Configuration.yaml by René-Marc Simard" +description: "" +date: 2018-12-18 12:18 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Example configuration.yaml +ha_external_link: https://github.com/renemarc/home-assistant-config +--- diff --git a/source/_cookbook/python_component_automation.markdown b/source/_cookbook/python_component_automation.markdown index b098278555c..f04b37ed002 100644 --- a/source/_cookbook/python_component_automation.markdown +++ b/source/_cookbook/python_component_automation.markdown @@ -26,28 +26,33 @@ example: target: TARGET_ENTITY ``` -Configuration variables: - -- **target** (*Required*): TARGET_ENTITY should be one of your devices that can be turned on and off, e.g., a light or a switch. Example value could be light.Ceiling or switch.AC (if you have these devices with those names). +{% configuration %} +target: + description: TARGET_ENTITY should be one of your devices that can be turned on and off, e.g., a light or a switch. Example value could be light.Ceiling or switch.AC (if you have these devices with those names). + required: true + type: string +{% endconfiguration %} Create the file `+For the moment, other user accounts will have the same access as the owner account. In the future, non-owner accounts will be able to have restrictions applied. +
+ +### {% linkable_title Your Account Profile %} + +Once you're logged in, you can see the details of your account at the _Profile_ page by clicking on the circular badge next to the Home Assistant title in the sidebar.-This is an advanced feature. If misconfigured, you will not be able to access Home Assistant anymore! -
+The Multi-factor Authentication (MFA) modules require you to solve a second challenge after you provide your password. -Besides the authentication providers, it's also possible to configure multi-factor authentication modules. These authentication modules will require the user to solve a second challenge besides just logging in. The idea is that you ask the user for something they know, their username/password, and something they have, like a time-based authentication token from their phone. +A password can be compromised in a number of ways, for example, it can be guessed if it is a simple password. MFA provides a second level of defense by requiring: -The multi-factor authentication module can be used mixed-matched with authentication providers. After the normal authentication provider validation, the login flow will ask the user for additional challenge(s) if there are multi-factor authentication modules enabled for this user. If more than one multi-factor authentication module is enabled, the user can select one of them during the login. +* something you know, like your username and password, and +* something you have, like a one-time password sent to your phone. -The multi-factor authentication module has to be enabled for the user before it can be used in the login process. The user can go to the profile page enable it by himself. +You can use MFA with any of the other authentication providers. If more than one MFA module is enabled, you can choose one when you log in. -## {% linkable_title Configuring multi-factor authentication modules %} +You can turn MFA on and off in the [profile page](/docs/authentication/#your-account-profile) for your user account. --By configuring your own instead of using the default configuration, you take full responsibility for the authentication of the system. -
+## {% linkable_title Available MFA modules %} -Multi-factor authentication modules are configured in your `configuration.yaml` file under the `homeassistant:` block: +### {% linkable_title Time-based One-Time Password MFA module %} + +[Time-based One-Time Password](https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm) (TOTP) is widely adopted in modern authentication systems. + +Home Assistant generates a secret key which is synchronized with an app on your phone. Every thirty seconds or so the phone app generates a random six digit number. Because Home Assistant knows the secret key, it knows which number will be generated. If you enter the correct digits, then you're in. + +#### {% linkable_title Setting up TOTP %} + +Enable TOTP in your `configuration.yaml` like this: ```yaml homeassistant: @@ -34,45 +39,37 @@ homeassistant: - type: totp ``` -## {% linkable_title Available multi-factor authentication modules %} +If no `auth_mfa_modules` config section is defined in `configuration.yaml` a TOTP module named "Authenticator app" will be autoloaded. -Below is a list of the currently available auth providers. +You will need an authenticator app on your phone. We recommend either [Google Authenticator](https://support.google.com/accounts/answer/1066447) or [Authy](https://authy.com/). Both are available for iOS or Android. -### {% linkable_title Time-based One-Time Password multi-factor authentication module %} +After restarting Home Assistant, go to your [profile page](/docs/authentication/#your-account-profile) and there should be a "Multi-factor Authentication Modules" section. -[Time-based One-Time Password](https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm) is widely adopted in modern authentication system, it combines a secret key with the current timestamp using a cryptographic hash function to generate a one-time password. Whoever possessed the secret key will get same one-time password in certain time period. By verifying that password, Home Assistant knows the user have the right secret key. +Click _Enable_ and a new secret key will be generated. Go to your phone app and enter the key, either by scanning the QR code or typing in the key below the QR code manually. -When trying to set up TOTP module, a QR code will show up. The user can scan it by an authenticator app, or set it up manually using the code showed in the UI. After setup, the user needs to input a six digit number generated in the authenticator app to verify the setup is good. If the verification keeps failing, you need to check whether the clock on Home Assistant is accurate. - -There are several authenticator apps on the market, we recommend either [Google Authenticator](https://support.google.com/accounts/answer/1066447) or [Authy](https://authy.com/). +-Please treat the secret key like a password, never expose it to others. +Please treat the secret key like a password - never expose it to others.
-By default one TOTP multi-factor auth module named "Authenticator app" will be auto loaded if no `auth_mfa_modules` config section defined in `configuration.yaml`. +Your phone app will now start generating a different six-digit code every thirty seconds or so. Enter one of these into Home Assistant under the QR code where it asks for a _Code_. Home Assistant and your phone app are now in sync and you can now use the code displayed in the app to log in. -Example of configuration: +#### {% linkable_title Using TOTP %} -```yaml -homeassistant: - auth_mfa_modules: - - type: totp -``` +Once TOTP is enabled, Home Assistant requires the latest code from your phone app before you can log in. + ++TOTP is _time based_ so it relies on your Home Assistant clock being accurate. If the verification keeps failing, make sure the clock on Home Assistant is correct. +
### {% linkable_title Notify multi-factor authentication module %} -Notify MFA module using [notify component](https://www.home-assistant.io/components/notify/) to delivery a [HMAC-based One-Time Password](https://en.wikipedia.org/wiki/HMAC-based_One-time_Password_algorithm) to user configured target. +The Notify MFA module uses the [notify component](/components/notify/) to send you an [HMAC-based One-Time Password](https://en.wikipedia.org/wiki/HMAC-based_One-time_Password_algorithm). It is typically sent to your phone, but can be sent to any destination supported by a `notify` service. You use this password to log in. -User need first set up the MFA module by select one of the available notify service. A 6 digit one-time password will be sent by this notify service, user need to input it to verify the setup. +#### {% linkable_title Setting up TOTP %} -During the login process, a 6 digit one-time password will be sent again, user need to input it to verify his/her identity. If the validation failed, a new one-time password will be sent again. - --Notify MFA module would not verify the one-time password delivery success, so that if user cannot received the message due any reason, he/she may not be login again. Edit or remove `[your_config_dir]/.storage/auth_module.notify` can disable notify MFA module to resolve the issue. -
- -Example of configuration +Add Notify MFA to your `configuration.yaml` file like this: ```yaml homeassistant: @@ -80,14 +77,23 @@ homeassistant: - type: notify ``` -Optional configuration variables: - -- **exclude** (*Optional*): The list of notify services you do not want to include in. -- **include** (*Optional*): The list of notify services you want to include in. -- **message** (*Optional*): The message template +{% configuration %} +exclude: + description: The list of notifying services you want to exclude. + required: false + type: list +include: + description: The list of notifying services you want to include. + required: false + type: list +message: + description: The message template. + required: false + type: template +{% endconfiguration %} ```yaml -# Example configure with message template +# Example configuration, with a message template. homeassistant: auth_mfa_modules: - type: totp @@ -95,3 +101,15 @@ homeassistant: - type: notify message: 'I almost forget, to get into my clubhouse, you need to say {}' ``` + +After restarting Home Assistant, go to your [profile page](/docs/authentication/#your-account-profile) and there should be a "Multi-factor Authentication Modules" section. Click _Enable_ on the _Notify One-Time Password_ option. + +Try logging out, then logging in again. You will be asked for the six-digit one-time password that was sent to your notify service. Enter the password to log in. + +If the validation failed, a new one-time password will be sent again. + ++The Notify MFA module can't tell if the one-time password was delivered successfully. If you don't get the notification, you won't be able to log in. + +You can disable the Notify MFA module by editing or removing the file `[your_config_dir]/.storage/auth_module.notify`. +
diff --git a/source/_docs/authentication/providers.markdown b/source/_docs/authentication/providers.markdown index b8ad501798c..659b027ae3f 100644 --- a/source/_docs/authentication/providers.markdown +++ b/source/_docs/authentication/providers.markdown @@ -10,27 +10,24 @@ sharing: true footer: true --- --This is an advanced feature. If misconfigured, you will not be able to access Home Assistant anymore! +When you log in, an _auth provider_ checks your credentials to make sure you are an authorized user. + +
+The authentication system has been changed recently. Previously there was a single "_API password_" to log in, but you can now choose from several auth providers.
+
+To make the transition from API passwords easier, we've added a _Legacy API Password_ auth provider. This is enabled by default if you have an API password configured so you will still be able to log in.
+
+However, this feature is deprecated and will be removed in a future release so you should set up one of the newer authentication techniques.
-Home Assistant automatically configures the standard auth providers and you **do not** need to specify `auth_providers` in your `configuration.yaml` file. Specifying `auth_providers` in your configuration will disable all auth providers that are not listed and can reduce your security or create difficulties logging in. +Home Assistant automatically configures the standard auth providers so you don't need to specify `auth_providers` in your `configuration.yaml` file unless you are configuring more than one. Specifying `auth_providers` will disable all auth providers that are not listed, so you could reduce your security or create difficulties logging in if it is not configured correctly.
--[Issue 16441](https://github.com/home-assistant/home-assistant/issues/16441): the legacy API password auth provider won't be automatically configured if your API password is located in a package. This is because Home Assistant processes the `auth_provider` during the `core` section loading, which is earlier than the `packages` processing. -
-Authentication providers are configured in your `configuration.yaml` under the `homeassistant:` block: +Authentication providers are configured in your `configuration.yaml` under the `homeassistant:` block. You can supply more than one, for example: ```yaml homeassistant: @@ -41,13 +38,15 @@ homeassistant: ## {% linkable_title Available auth providers %} -Below is a list of currently available auth providers. - ### {% linkable_title Home Assistant auth provider %} -This is the default auth provider which stores the users in your configuration directory. All passwords are stored hashed and with a salt, making it almost impossible for an attacker to figure out the password from the storage. +This is the default auth provider. The first user created is designated as the _owner_ and can create other users. -Users for this auth provider can be managed via the UI by the owner. Navigate to the configuration panel and click on users. +User details are stored in the `[your config]/.storage` directory. All passwords are stored hashed and with a salt, making it almost impossible for an attacker to figure out the password even if they have access to the file. + +Users can be managed in Home Assistant by the owner. Go to the configuration panel and click on _Users_. + +This is the entry in `configuration.yaml` for Home Assistant auth: ```yaml homeassistant: @@ -55,14 +54,20 @@ homeassistant: - type: homeassistant ``` +If you don't specify any `auth_providers` section in the `configuration.yaml` file then this provider will be set up automatically. + ### {% linkable_title Trusted Networks %} -With the trusted networks auth provider you can whitelist an IP range for which no authentication will be required. The user will be prompted to pick a user to log in as. +The Trusted Networks auth provider defines a range of IP addresses for which no authentication will be required (also known as "whitelisting"). For example, you can whitelist your local network so you won't be prompted for a password if you access Home Assistant from inside your home. + +When you log in from one of these networks, you will be asked which user account to use and won't need to enter a password.-The [multi-factor autentication module](../multi-factor-auth) will not participate in login process by using this auth provider. +The [multi-factor authentication module](/docs/authentication/multi-factor-auth/) will not participate in the login process if you using this auth provider.
+Here is an example in `configuration.yaml` to set up Trusted Networks: + ```yaml homeassistant: auth_providers: @@ -80,6 +85,10 @@ http: ### {% linkable_title Legacy API password %} ++This is a legacy feature for backwards compatibility and will be dropped in a future release. You should move to one of the other auth providers. +
+ Activating this auth provider will allow you to authenticate with the API password set in the HTTP component. ```yaml @@ -92,3 +101,7 @@ http: ``` Activating this auth provider will also allow you to provide the API password using an authentication header to make requests against the Home Assistant API. This feature will be dropped in the future in favor of long-lived access tokens. + ++[Issue 16441](https://github.com/home-assistant/home-assistant/issues/16441): the legacy API password auth provider, won't be automatically configured if your API password is located in a package. This is because Home Assistant processes the `auth_provider` during the `core` section loading, which is earlier than the `packages` processing. +
diff --git a/source/_docs/automation.markdown b/source/_docs/automation.markdown index 99ace9bb2e7..de7109405e2 100644 --- a/source/_docs/automation.markdown +++ b/source/_docs/automation.markdown @@ -49,14 +49,14 @@ Actions are all about calling services. To explore the available services open t ### {% linkable_title Automation initial state %} -You have to set an initial state in your automations in order for Home Assistant to always enable them upon restart. +If you always want your automations to be set to a certain enabled or disabled state upon Home Assistant restart, then you have to set an initial state in your automations. Otherwise, this setting is optional. ```text automation: - alias: Automation Name - initial_state: True + initial_state: true trigger: ... ``` -If you don't set this the previous state is restored. If you shut Home Assistant down before it finishes starting, the automation will be stored as being off, and your automations will be disabled at the next startup. +If you don't set this then the previous state prior to restart is restored. However, if you shut down Home Assistant again before it finishes starting, any automation that doesn't have the initial state set to `true` will be stored as being off, and those automations will be disabled at the next startup. diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown index a34d46cc3c6..508e09d8642 100644 --- a/source/_docs/automation/templating.markdown +++ b/source/_docs/automation/templating.markdown @@ -14,6 +14,7 @@ In Home Assistant 0.19 we introduced a new powerful feature: variables in script The trigger data made is available during [template](/docs/configuration/templating/) rendering as the `trigger` variable. +{% raw %} ```yaml # Example configuration.yaml entries automation: @@ -23,28 +24,54 @@ automation: action: service: notify.notify data_template: - message: >{% raw %} + message: > Paulus just changed from {{ trigger.from_state.state }} - to {{ trigger.to_state.state }}{% endraw %} + to {{ trigger.to_state.state }} automation 2: trigger: platform: mqtt topic: /notify/+ action: - service_template: >{% raw %} - notify.{{ trigger.topic.split('/')[-1] }}{% endraw %} + service_template: > + notify.{{ trigger.topic.split('/')[-1] }} data_template: - message: {% raw %}'{{ trigger.payload }}'{% endraw %} + message: '{{ trigger.payload }}' + +automation 3: + trigger: + # Multiple Entities for which you want to perform the same action. + - platform: state + entity_id: + - light.bedroom_closet + to: 'on' + # Trigger when someone leaves the closet light on for 10 minutes. + for: '00:10:00' + - platform: state + entity_id: + - light.kiddos_closet + to: 'on' + for: '00:10:00' + - platform: state + entity_id: + - light.linen_closet + to: 'on' + for: '00:10:00' + action: + - service: light.turn_off + data_template: + # Whichever entity triggers the automation we want to turn off THAT entity, not the others. + entity_id: "{{ trigger.entity_id }}" ``` +{% endraw %} ## {% linkable_title Important Template Rules %} There are a few very important rules to remember when writing automation templates: -1. You ***must*** use `data_template` in place of `data` when using templates in the `data` section of a service call. -1. You ***must*** use `service_template` in place of `service` when using templates in the `service` section of a service call. -1. You ***must*** surround single-line templates with double quotes (`"`) or single quotes (`'`). +1. You **must** use `data_template` in place of `data` when using templates in the `data` section of a service call. +1. You **must** use `service_template` in place of `service` when using templates in the `service` section of a service call. +1. You **must** surround single-line templates with double quotes (`"`) or single quotes (`'`). 1. It is advised that you prepare for undefined variables by using `if ... is not none` or the [`default` filter](http://jinja.pocoo.org/docs/dev/templates/#default), or both. 1. It is advised that when comparing numbers, you convert the number(s) to a [`float`](http://jinja.pocoo.org/docs/dev/templates/#float) or an [`int`](http://jinja.pocoo.org/docs/dev/templates/#int) by using the respective [filter](http://jinja.pocoo.org/docs/dev/templates/#list-of-builtin-filters). 1. While the [`float`](http://jinja.pocoo.org/docs/dev/templates/#float) and [`int`](http://jinja.pocoo.org/docs/dev/templates/#int) filters do allow a default fallback value if the conversion is unsuccessful, they do not provide the ability to catch undefined variables. diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 4bbf7e6d859..5719edb7848 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -115,6 +115,8 @@ automation: Triggers when the sun is setting or rising. An optional time offset can be given to have it trigger a set time before or after the sun event (i.e. 45 minutes before sunset, when dusk is setting in). +Sunrise as a trigger may need special attention as explained in time triggers below. This is due to the date changing at midnight and sunrise is at an earlier time on the following day. + ```yaml automation: trigger: @@ -125,7 +127,7 @@ automation: offset: '-00:45:00' ``` -Sometimes you may want more granular control over an automation based on the elevation of the sun. This can be used to layer automations to occur as the sun lowers on the horizon or even after it is below the horizon. This is also useful when the "sunset" event is not dark enough outside and you would like the automation to run later at a precise solar angle instead of the time offset such as turning on exterior lighting. +Sometimes you may want more granular control over an automation based on the elevation of the sun. This can be used to layer automations to occur as the sun lowers on the horizon or even after it is below the horizon. This is also useful when the "sunset" event is not dark enough outside and you would like the automation to run later at a precise solar angle instead of the time offset such as turning on exterior lighting. For most things, a general number like -4 degrees is suitable and is used in this example: {% raw %} ```yaml @@ -141,9 +143,15 @@ automation: service: switch.turn_on entity_id: switch.exterior_lighting ``` -}{% endraw %} +{% endraw %} -The US Naval Observatory has a [tool](http://aa.usno.navy.mil/data/docs/AltAz.php) that will help you estimate what the solar angle will be at any specific time. +If you want to get more precise, start with the US Naval Observatory [tool](http://aa.usno.navy.mil/data/docs/AltAz.php) that will help you estimate what the solar angle will be at any specific time. Then from this, you can select from the defined twilight numbers. Although the actual amount of light depends on weather, topography and land cover, they are defined as: + +- Civil twilight: Solar angle > -6° +- Nautical twilight: Solar angle > -12° +- Astronomical twilight: Solar angle > -18° + +A very thorough explanation of this is available in the Wikipedia article about the [Twilight](https://en.wikipedia.org/wiki/Twilight). ### {% linkable_title Template trigger %} @@ -193,6 +201,9 @@ automation 3: Remember that if you are using matching to include both `minutes` and `seconds`. Without `seconds`, your automation will trigger 60 times during the matching minute. +As mentioned in the Sun trigger section, sunrise is a different day than any time prior to midnight. If you want to trigger an action with a large enough amount of time before sunrise that it precedes midnight, this must be accounted for properly. One way is to convert the sunrise time to a timestamp (seconds since 1 Jan 1970). Then do the same for the offset desired (in seconds). This is done with the _as_timestamp_ method explained in the [Templating - Home Assistant template extensions](/docs/configuration/templating/#home-assistant-template-extensions) section. + + ### {% linkable_title Webhook trigger %} Webhook triggers are triggered by web requests made to the webhook endpoint: `/api/webhook/-If you've made any changes, remember to [check your configuration](https://www.home-assistant.io/docs/configuration/troubleshooting/#problems-with-the-configuration) before trying to reload or restart. +If you've made any changes, remember to [check your configuration](/docs/configuration/troubleshooting/#problems-with-the-configuration) before trying to reload or restart.
## {% linkable_title Migrating to a new system %} diff --git a/source/_docs/configuration/basic.markdown b/source/_docs/configuration/basic.markdown index f862052b3cf..5ad0e89bdaf 100644 --- a/source/_docs/configuration/basic.markdown +++ b/source/_docs/configuration/basic.markdown @@ -25,15 +25,45 @@ homeassistant: - /tmp ``` -Configuration variables: - -- **latitude** (*Optional*): Latitude of your location required to calculate the time the sun rises and sets. -- **longitude** (*Optional*): Longitude of your location required to calculate the time the sun rises and sets. -- **elevation** (*Optional*): Altitude above sea level in meters. Impacts weather/sunrise data. -- **unit_system** (*Optional*): `metric` for Metric, `imperial` for Imperial. -- **time_zone** (*Optional*): Pick yours from here: [http://en.wikipedia.org/wiki/List_of_tz_database_time_zones](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) -- **name** (*Optional*): Name of the location where Home Assistant is running. -- **customize** (*Optional*): [Customize](/docs/configuration/customizing-devices/) entities. -- **customize_domain** (*Optional*): [Customize](/docs/configuration/customizing-devices/) all entities in a domain. -- **customize_glob** (*Optional*): [Customize](/docs/configuration/customizing-devices/) entities matching a pattern. -- **whitelist_external_dirs** (*Optional*): List of folders that can be used as sources for sending files. \ No newline at end of file +{% configuration %} +latitude: + description: Latitude of your location required to calculate the time the sun rises and sets. + required: false + type: float +longitude: + description: Longitude of your location required to calculate the time the sun rises and sets. + required: false + type: float +elevation: + description: Altitude above sea level in meters. Impacts weather/sunrise data. + required: false + type: integer +unit_system: + description: "`metric` for Metric, `imperial` for Imperial." + required: false + type: string +time_zone: + description: "Pick your time zone from the column **TZ** of [Wikipedia's list of tz database time zones](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones)" + required: false + type: string +name: + description: Name of the location where Home Assistant is running. + required: false + type: string +customize: + description: "[Customize](/docs/configuration/customizing-devices/) entities." + required: false + type: string +customize_domain: + description: "[Customize](/docs/configuration/customizing-devices/) all entities in a domain." + required: false + type: string +customize_glob: + description: "[Customize](/docs/configuration/customizing-devices/) entities matching a pattern." + required: false + type: string +whitelist_external_dirs: + description: List of folders that can be used as sources for sending files. + required: false + type: list +{% endconfiguration %} diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown index cb059e9ebd9..0ef2263845c 100644 --- a/source/_docs/configuration/customizing-devices.markdown +++ b/source/_docs/configuration/customizing-devices.markdown @@ -42,17 +42,17 @@ hidden: description: Set to `true` to hide the entity. required: false type: boolean - default: False + default: false homebridge_hidden: description: Set to `true` to hide the entity from `HomeBridge`. required: false type: boolean - default: False + default: false emulated_hue_hidden: description: Set to `true` to hide the entity from `emulated_hue` (this will be deprecated in the near future and should be configured in [`emulated_hue`](/components/emulated_hue)). required: false type: boolean - default: False + default: false entity_picture: description: URL to use as picture for entity. required: false @@ -65,7 +65,7 @@ assumed_state: description: 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. required: false type: boolean - default: True + default: true device_class: description: Sets the class of the device, changing the device state and icon that is displayed on the UI (see below). It does not set the `unit_of_measurement`. required: false diff --git a/source/_docs/configuration/events.markdown b/source/_docs/configuration/events.markdown index 86494fc7b28..187e757e0f1 100644 --- a/source/_docs/configuration/events.markdown +++ b/source/_docs/configuration/events.markdown @@ -70,6 +70,9 @@ Field | Description ----- | ----------- `service_call_id` | String with the unique call id of the service call that was executed. Example: `23123-4`. ++ Starting with 0.84, it is no longer possible to listen for event `service_executed`. +
### {% linkable_title Event `platform_discovered` %} Event `platform_discovered` is fired when a new platform has been discovered by the [`discovery`](/components/discovery/) component. diff --git a/source/_docs/configuration/group_visibility.markdown b/source/_docs/configuration/group_visibility.markdown index cab429ce404..230ae78b11b 100644 --- a/source/_docs/configuration/group_visibility.markdown +++ b/source/_docs/configuration/group_visibility.markdown @@ -20,7 +20,7 @@ To change visibility of a group, use the service `group.set_visibility`, pass th service: group.set_visibility entity_id: group.basement data: - visible: False + visible: false ```@@ -42,7 +42,7 @@ automation: service: group.set_visibility entity_id: group.basement data: - visible: False + visible: false automation 2: trigger: @@ -52,7 +52,7 @@ automation 2: service: group.set_visibility entity_id: group.basement data: - visible: True + visible: true ``` ## {% linkable_title Easier automations %} diff --git a/source/_docs/configuration/packages.markdown b/source/_docs/configuration/packages.markdown index 0be17c08a0e..c899808e8a7 100644 --- a/source/_docs/configuration/packages.markdown +++ b/source/_docs/configuration/packages.markdown @@ -22,7 +22,7 @@ homeassistant: ...package configuration here... ``` -The package configuration can include: `switch`, `light`, `automation`, `groups`, or most other Home Assistant components. +The package configuration can include: `switch`, `light`, `automation`, `groups`, or most other Home Assistant components including hardware platforms. It can be specified inline or in a separate YAML file using `!include`. @@ -88,11 +88,11 @@ homeassistant: ``` This uses the concept splitting the configuration and will include all files in a directory with the keys representing the filenames. -See the documentation about [splitting the configuration](/docs/configuration/splitting_configuration/) for more information about `!include_dir_named` and other include statements that might be helpful. +See the documentation about [splitting the configuration](/docs/configuration/splitting_configuration/) for more information about `!include_dir_named` and other include statements that might be helpful. The benefit of this approach is to pull all configurations required to integrate a system, into one file, rather than accross several. ### {% linkable_title Customizing entities with packages %} -It is possible to [customize entities](docs/configuration/customizing-devices/) within packages. Just create your customization entries under: +It is possible to [customize entities](/docs/configuration/customizing-devices/) within packages. Just create your customization entries under: ```yaml homeassistant: diff --git a/source/_docs/configuration/platform_options.markdown b/source/_docs/configuration/platform_options.markdown index 7823868022e..86ad9d7a7cd 100644 --- a/source/_docs/configuration/platform_options.markdown +++ b/source/_docs/configuration/platform_options.markdown @@ -10,6 +10,8 @@ footer: true redirect_from: /topics/platform_options/ --- +
These options are being phased out and are only available for single platform integrations.
+ Some components or platforms (those that are based on the [entity](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/helpers/entity.py) class) allows various extra options to be set. ### {% linkable_title Entity namespace %} diff --git a/source/_docs/configuration/remote.markdown b/source/_docs/configuration/remote.markdown index f0135393685..13637d41147 100644 --- a/source/_docs/configuration/remote.markdown +++ b/source/_docs/configuration/remote.markdown @@ -16,7 +16,7 @@ Remember to follow the [securing checklist](/docs/configuration/securing/) befor-Home Assistant no longer support remote access via IP address since release 0.77, you have to use domain name. +Home Assistant no longer support remote access via IP address since release 0.77, you have to use a domain name.
The most common approach is to set up port forwarding (for any port) from your router to port 8123 on the computer that is hosting Home Assistant. General instructions on how to do this can be found by searching `+Just putting a port up is not secure. You should definitely consider encrypting your traffic if you are accessing your Home Assistant installation remotely. For details please check the [set up encryption using Let's Encrypt](/blog/2017/09/27/effortless-encryption-with-lets-encrypt-and-duckdns/) blog post or this [detailed guide](/docs/ecosystem/certificates/lets_encrypt/) to using Let's Encrypt with Home Assistant. +
Protect your communication with a [self-signed certificate](/docs/ecosystem/certificates/tls_self_signed_certificate/) between your client and the Home Assistant instance. diff --git a/source/_docs/configuration/securing.markdown b/source/_docs/configuration/securing.markdown index 85117013ff5..945f1c3e834 100644 --- a/source/_docs/configuration/securing.markdown +++ b/source/_docs/configuration/securing.markdown @@ -55,4 +55,4 @@ For remote access for a component, for example, a device tracker, you have to en * A [self-signed certificate](/cookbook/tls_self_signed_certificate/) - be warned though, some services will refuse to work with self-signed certificates 3. Optionally use a proxy like [NGINX](/docs/ecosystem/nginx/), [Apache](/cookbook/apache_configuration/), or another. These allow you to provide finer-grained access. You could use this to limit access to specific parts of the API (for example, only `/api/owntracks/`) 4. Enable IP Filtering and configure a low [Login Attempts Threshold](/components/http/) -5. If you use a proxy then install [fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page) to [monitor your proxy logs](https://www.home-assistant.io/cookbook/fail2ban/) (or Home Assistant logs) for failed authentication +5. If you use a proxy then install [fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page) to [monitor your proxy logs](/cookbook/fail2ban/) (or Home Assistant logs) for failed authentication diff --git a/source/_docs/configuration/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown index 47e53037928..c04bd04460c 100644 --- a/source/_docs/configuration/splitting_configuration.markdown +++ b/source/_docs/configuration/splitting_configuration.markdown @@ -10,7 +10,7 @@ footer: true redirect_from: /topics/splitting_configuration/ --- -So you've been using Home Assistant for a while now and your [configuration.yaml file brings people to tears](/cookbook/configuration_yaml_from_bassclarinetl2/) or you simply want to start off with the distributed approach, here's how to "split the configuration.yaml" into more manageable (read: humanly readable) pieces. +So you've been using Home Assistant for a while now and your configuration.yaml file brings people to tears or you simply want to start off with the distributed approach, here's how to "split the configuration.yaml" into more manageable (read: humanly readable) pieces. First off, several community members have sanitized (read: without api keys/passwords etc) versions of their configurations available for viewing, you can see a list of them [here](/cookbook/#example-configurationyaml). @@ -70,9 +70,9 @@ Now, lets assume that a blank file has been created in the Home Assistant config ```text automation.yaml -zones.yaml -sensors.yaml -switches.yaml +zone.yaml +sensor.yaml +switch.yaml device_tracker.yaml customize.yaml ``` @@ -83,9 +83,9 @@ Inside the base configuration file add the following entries: ```yaml automation: !include automation.yaml -zone: !include zones.yaml -sensor: !include sensors.yaml -switch: !include switches.yaml +zone: !include zone.yaml +sensor: !include sensor.yaml +switch: !include switch.yaml device_tracker: !include device_tracker.yaml ``` @@ -101,7 +101,7 @@ Let's look at the `device_tracker.yaml` file from our example: hosts: 192.168.2.0/24 home_interval: 3 - track_new_devices: yes + track_new_devices: true interval_seconds: 40 consider_home: 120 ``` @@ -111,7 +111,7 @@ This small example illustrates how the "split" files work. In this case, we star This (large) sensor configuration gives us another example: ```yaml -### sensors.yaml +### sensor.yaml ### METEOBRIDGE ############################################# - platform: tcp name: 'Outdoor Temp (Meteobridge)' diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index 7e11dae2ec0..a4887fa8ebf 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -94,6 +94,9 @@ Home Assistant adds extensions to allow templates to access all of the current s - Filter `regex_findall_index(string, find='', index=0, ignorecase=False)` will find all regex matches of find in string and return the match at index (findall returns an array of matches). - Filter `bitwise_and(value_one, value_two)` perform a bitwise and(&) operation with two values. - Filter `bitwise_or(value_one, value_two)` perform a bitwise or(\|) operation with two values. +- Filter `base64_encode` convert given value to a Base64 encoded string. +- Filter `base64_decode` convert given Base64 value to a regulary string. +- Filter `ordinal` convert a number into a speakable ordinal text. [strp-format]: https://docs.python.org/3.6/library/datetime.html#strftime-and-strptime-behavior diff --git a/source/_docs/configuration/troubleshooting.markdown b/source/_docs/configuration/troubleshooting.markdown index f76ca7086a0..03efee288be 100644 --- a/source/_docs/configuration/troubleshooting.markdown +++ b/source/_docs/configuration/troubleshooting.markdown @@ -26,7 +26,7 @@ If you have incorrect entries in your configuration files you can use the [`chec One of the most common problems with Home Assistant is an invalid `configuration.yaml` file. - - You can test your configuration using the command line with: `hass --script check_config`. On Hass.io you can use the [hassio command](https://www.home-assistant.io/hassio/commandline/#home-assistant): `hassio homeassistant check`. + - You can test your configuration using the command line with: `hass --script check_config`. On Hass.io you can use the [hassio command](/hassio/commandline/#home-assistant): `hassio homeassistant check`. - You can verify your configuration's yaml structure using [this online YAML parser](http://yaml-online-parser.appspot.com/) or [YAML Lint](http://www.yamllint.com/). - To learn more about the quirks of YAML, read [YAML IDIOSYNCRASIES](https://docs.saltstack.com/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html) by SaltStack (the examples there are specific to SaltStack, but do explain YAML issues well). diff --git a/source/_docs/configuration/yaml.markdown b/source/_docs/configuration/yaml.markdown index c4546d40ebb..c73d6522142 100644 --- a/source/_docs/configuration/yaml.markdown +++ b/source/_docs/configuration/yaml.markdown @@ -105,3 +105,9 @@ found character '\t' that cannot start any token ``` This means that you've mistakenly entered a tab character, instead of spaces. + +### {% linkable_title Upper and lower case %} + +Home Assistant is case sensitive, a state of `'on'` is not the same as `'On'` or `'ON'`. Similarly an entity of `group.Doors` is not the same as `group.doors`. + +If you're having trouble, check the case that Home Assistant is reporting in the dev-state menu, under *Developer tools*. diff --git a/source/_docs/ecosystem/appdaemon.markdown b/source/_docs/ecosystem/appdaemon.markdown index 3d6d6e13e85..5a65808db1a 100755 --- a/source/_docs/ecosystem/appdaemon.markdown +++ b/source/_docs/ecosystem/appdaemon.markdown @@ -35,9 +35,9 @@ The best way to show what AppDaemon does is through a few simple examples. Let's start with a simple App to turn a light on every night at sunset and off every morning at sunrise. Every App when first started will have its `initialize()` function called, which gives it a chance to register a callback for AppDaemons's scheduler for a specific time. In this case, we are using `run_at_sunrise()` and `run_at_sunset()` to register two separate callbacks. The argument `0` is the number of seconds offset from sunrise or sunset and can be negative or positive. For complex intervals, it can be convenient to use Python's `datetime.timedelta` class for calculations. When sunrise or sunset occurs, the appropriate callback function, `sunrise_cb()` or `sunset_cb()`, is called, which then makes a call to Home Assistant to turn the porch light on or off by activating a scene. The variables `args["on_scene"]` and `args["off_scene"]` are passed through from the configuration of this particular App, and the same code could be reused to activate completely different scenes in a different version of the App. ```python -import appdaemon.appapi as appapi +import appdaemon.plugins.hass.hassapi as hass -class OutsideLights(appapi.AppDaemon): +class OutsideLights(hass.Hass): def initialize(self): self.run_at_sunrise(self.sunrise_cb) @@ -58,9 +58,9 @@ This is also fairly easy to achieve with Home Assistant automations, but we are Our next example is to turn on a light when motion is detected and it is dark, and turn it off after a period of time. This time, the `initialize()` function registers a callback on a state change (of the motion sensor) rather than a specific time. We tell AppDaemon that we are only interested in state changes where the motion detector comes on by adding an additional parameter to the callback registration - `new = "on"`. When the motion is detected, the callback function `motion()` is called, and we check whether or not the sun has set using a built-in convenience function: `sun_down()`. Next, we turn the light on with `turn_on()`, then set a timer using `run_in()` to turn the light off after 60 seconds, which is another call to the scheduler to execute in a set time from now, which results in `AppDaemon` calling `light_off()` 60 seconds later using the `turn_off()` call to actually turn the light off. This is still pretty simple in code terms: ```python -import appdaemon.appapi as appapi +import appdaemon.plugins.hass.hassapi as hass -class FlashyMotionLights(appapi.AppDaemon): +class FlashyMotionLights(hass.Hass): def initialize(self): self.listen_state(self.motion, "binary_sensor.drive", new = "on") @@ -79,9 +79,9 @@ This is starting to get a little more complex in Home Assistant automations, req Now let's extend this with a somewhat artificial example to show something that is simple in AppDaemon but very difficult if not impossible using automations. Let's warn someone inside the house that there has been motion outside by flashing a lamp on and off ten times. We are reacting to the motion as before by turning on the light and setting a timer to turn it off again, but in addition, we set a 1-second timer to run `flash_warning()`, which, when called, toggles the inside light and sets another timer to call itself a second later. To avoid re-triggering forever, it keeps a count of how many times it has been activated and bails out after ten iterations. ```python -import appdaemon.appapi as appapi +import appdaemon.plugins.hass.hassapi as hass -class MotionLights(appapi.AppDaemon): +class MotionLights(hass.Hass): def initialize(self): self.listen_state(self.motion, "binary_sensor.drive", new = "on") diff --git a/source/_docs/ecosystem/appdaemon/configuration.markdown b/source/_docs/ecosystem/appdaemon/configuration.markdown index 1dca0e72bbd..14af3590256 100644 --- a/source/_docs/ecosystem/appdaemon/configuration.markdown +++ b/source/_docs/ecosystem/appdaemon/configuration.markdown @@ -10,70 +10,6 @@ footer: true redirect_from: /ecosystem/appdaemon/configuration/ --- -When you have appdaemon installed by either method, copy the `conf/appdaemon.cfg.example` file to `conf/appdaemon.cfg`, then edit the `[AppDaemon]` section to reflect your environment: +the documentation for configuring Appdaemon can be found in its own documentation. -``` -[AppDaemon] -ha_url =
@@ -46,6 +46,6 @@ You will get an empty notebook with one cell. Cells can contain code or text. To
The downloadable version of this notebook is available in the [Home Assistant notebooks repository](https://github.com/home-assistant/home-assistant-notebooks/blob/master/first-notebook.ipynb).
-As you can see is the workflow very similar to working directly with a Python shell. One advantage is that you can go back and forth as you please and save your work.
+As you can see is the Jupyter notebook workflow is very similar to working directly with a Python shell. One advantage of notebooks is that you can go back and forth between cells as you please and save your work.
diff --git a/source/_docs/ecosystem/notebooks/stats.markdown b/source/_docs/ecosystem/notebooks/stats.markdown
index c94ccb583b8..105134ecf70 100644
--- a/source/_docs/ecosystem/notebooks/stats.markdown
+++ b/source/_docs/ecosystem/notebooks/stats.markdown
@@ -10,4 +10,4 @@ footer: true
redirect_from: /ecosystem/notebooks/stats/
---
-The [Statistics notebook](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/database-statistics.ipynb) gets you started if you want to create statistical analysis of your data.
+The [Statistics notebook](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/database-statistics.ipynb) shows some basic statistical analysis on data in the Home Assistant database.
diff --git a/source/_docs/ecosystem/synology.markdown b/source/_docs/ecosystem/synology.markdown
index ba2c69f04ae..f9864c8d79d 100644
--- a/source/_docs/ecosystem/synology.markdown
+++ b/source/_docs/ecosystem/synology.markdown
@@ -12,6 +12,16 @@ redirect_from: /ecosystem/synology/
Synology NAS are the perfect companion to running Home Assistant. But by default, the DSM Reverse Proxy does not configure its NGINX settings to allow WebSocket, and some extra configuration will be required to get the Home Assistant frontend working with the DSM.
+### {% linkable_title Setup headers %}
+
+Starting with DSM 6.2.1+, you can create "custom headers" in the Application Portal:
+* Go to Application Portal and edit your entry
+* Click on "custom headers" tab and click the dropdon on the "Create" button
+* Select "Websocket". This will automaticly add the required headers for websocket to this reverse proxy.
+* Click "OK". Home Assistant should work now with the reverse proxy.
+
+It's not necessary anymore to change the template anymore since Version DSM 6.2.1. Changing the `Portal.mustache` is not recommended! You should use the following part only if you're using a Version before DSM 6.2.1. on your Synology.
+
### {% linkable_title Template change %}
To allow WebSocket by default for all service exposed by NGINX, you can enable it in the template file located in `/usr/syno/share/nginx/Portal.mustache`. Please be really careful in editing this file since you may break access to the DSM UI. Please backup this file before any edition.
diff --git a/source/_docs/installation/docker.markdown b/source/_docs/installation/docker.markdown
index e4c0a8125b3..77cc0547d41 100644
--- a/source/_docs/installation/docker.markdown
+++ b/source/_docs/installation/docker.markdown
@@ -10,18 +10,24 @@ footer: true
redirect_from: /getting-started/installation-docker/
---
-Installation with Docker is straightforward. Adjust the following command so that `/path/to/your/config/` points at the folder where you want to store your configuration and run it:
+Installation with Docker is straightforward. Adjust the following command so that `/PATH_TO_YOUR_CONFIG` points at the folder where you want to store your configuration and run it:
### {% linkable_title Linux %}
```bash
-$ docker run -d --name="home-assistant" -v /path/to/your/config:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant
+$ docker run -d --name="home-assistant" -v /PATH_TO_YOUR_CONFIG:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant
```
### {% linkable_title Raspberry Pi 3 (Raspbian) %}
```bash
-$ docker run -d --name="home-assistant" -v /path/to/your/config:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/raspberrypi3-homeassistant
+$ docker run -d --name="home-assistant" -v /PATH_TO_YOUR_CONFIG:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/raspberrypi3-homeassistant
+```
+
+You need to replace `/PATH_TO_YOUR_CONFIG` with your path to the configuration, for example if you choose your configuration path to be `/home/pi/homeassistant`, then command would be:
+
+```bash
+$ docker run -d --name="home-assistant" -v /home/pi/homeassistant:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/raspberrypi3-homeassistant
```
### {% linkable_title macOS %}
@@ -31,13 +37,17 @@ When using `docker-ce` (or `boot2docker`) on macOS, you are unable to map the lo
If you wish to browse directly to `http://localhost:8123` from your macOS host, meaning forward ports directly to the container, replace the `--net=host` switch with `-p 8123:8123`. More detail can be found in [the docker forums](https://forums.docker.com/t/should-docker-run-net-host-work/14215/10).
```bash
-$ docker run -d --name="home-assistant" -v /path/to/your/config:/config -e "TZ=America/Los_Angeles" -p 8123:8123 homeassistant/home-assistant
+$ docker run -d --name="home-assistant" -v /PATH_TO_YOUR_CONFIG:/config -e "TZ=America/Los_Angeles" -p 8123:8123 homeassistant/home-assistant
```
Alternatively, `docker-compose` works with any recent release of `docker-ce` on macOS. Note that (further down this page) we provide an example `docker-compose.yml` however it differs from the `docker run` example above. To make the .yml directives match, you would need to make _two_ changes: first add the equivalent `ports:` directive, then _remove_ the `network_mode: host` section. This is because `Port mapping is incompatible with network_mode: host:`. More details can be found at [Docker networking docs](https://docs.docker.com/engine/userguide/networking/#default-networks). Note also the `/dev/tty*` device name used by your Arduino etc. devices will differ from the Linux example, so the compose `mount:` may require updates.
### {% linkable_title Windows %}
+```powershell
+$ docker run -d --name="home-assistant" -v /PATH_TO_YOUR_CONFIG:/config -e "TZ=America/Los_Angeles" --net=host homeassistant/home-assistant
+```
+
When running Home Assistant in Docker on Windows, you may have some difficulty getting ports to map for routing (since the `--net=host` switch actually applies to the hypervisor's network interface). To get around this, you will need to add port proxy ipv4 rules to your local Windows machine, like so (Replacing '192.168.1.10' with whatever your Windows IP is, and '10.0.50.2' with whatever your Docker container's IP is):
```
netsh interface portproxy add v4tov4 listenaddress=192.168.1.10 listenport=8123 connectaddress=10.0.50.2 connectport=8123
@@ -165,7 +175,7 @@ As the docker command becomes more complex, switching to `docker-compose` can be
container_name: home-assistant
image: homeassistant/home-assistant
volumes:
- - /path/to/your/config:/config
+ - /PATH_TO_YOUR_CONFIG:/config
- /etc/localtime:/etc/localtime:ro
restart: always
network_mode: host
@@ -188,7 +198,7 @@ $ docker-compose restart
In order to use Z-Wave, Zigbee or other components that require access to devices, you need to map the appropriate device into the container. Ensure the user that is running the container has the correct privileges to access the `/dev/tty*` file, then add the device mapping to your docker command:
```bash
-$ docker run -d --name="home-assistant" -v /path/to/your/config:/config \
+$ docker run -d --name="home-assistant" -v /PATH_TO_YOUR_CONFIG:/config \
-v /etc/localtime:/etc/localtime:ro --device /dev/ttyUSB0:/dev/ttyUSB0 \
--net=host homeassistant/home-assistant
```
@@ -202,7 +212,7 @@ or in a `docker-compose.yml` file:
container_name: home-assistant
image: homeassistant/home-assistant
volumes:
- - /path/to/your/config:/config
+ - /PATH_TO_YOUR_CONFIG:/config
- /etc/localtime:/etc/localtime:ro
devices:
- /dev/ttyUSB0:/dev/ttyUSB0
diff --git a/source/_docs/installation/fedora.markdown b/source/_docs/installation/fedora.markdown
index 52f01886f6e..be37bdeecba 100644
--- a/source/_docs/installation/fedora.markdown
+++ b/source/_docs/installation/fedora.markdown
@@ -27,12 +27,13 @@ To isolate the Home Assistant installation a [venv](https://docs.python.org/3/li
```bash
$ sudo mkdir -p /opt/homeassistant
-$ sudo useradd -rm homeassistant -G dialout,gpio
+$ sudo useradd -rm homeassistant -G dialout
$ sudo chown -R homeassistant:homeassistant /opt/homeassistant
```
Now switch to the new directory, setup the venv, and activate it.
```bash
+$ sudo -u homeassistant -H -s
$ cd /opt/homeassistant
$ python3.6 -m venv .
$ source bin/activate
diff --git a/source/_docs/installation/updating.markdown b/source/_docs/installation/updating.markdown
index 4bc5d375eb1..b82e53d1488 100644
--- a/source/_docs/installation/updating.markdown
+++ b/source/_docs/installation/updating.markdown
@@ -63,3 +63,13 @@ If you want to stay on the bleeding-edge Home Assistant development branch, you
```bash
$ pip3 install --upgrade git+git://github.com/home-assistant/home-assistant.git@dev
```
+
+### {% linkable_title Update Hass.io installation %}
+
+Best practice for updating a Hass.io installation:
+
+1. Backup your installation, using the snapshot functionality Hass.io offers.
+2. Check the release notes for breaking changes on [Home Assistant release notes](https://github.com/home-assistant/home-assistant/releases). Be sure to check all release notes between the version you are running and the one you are upgrading to. Use the search function in your browser (`CTRL + f`) and search for **Breaking Changes**.
+3. Check your configuration using the [Check Home Assistant configuration](/addons/check_config/) add-on.
+4. If the check passes, you can safely update. If not, update your configuration accordingly.
+5. Update Home Assistant.
diff --git a/source/_docs/installation/virtualenv.markdown b/source/_docs/installation/virtualenv.markdown
index 59f22869f16..548c776ce22 100644
--- a/source/_docs/installation/virtualenv.markdown
+++ b/source/_docs/installation/virtualenv.markdown
@@ -14,7 +14,7 @@ If you already have Python 3.5.3 or later installed, you can easily give Home As
It's recommended when installing Python packages that you use a [virtual environment](https://docs.python.org/3.5/library/venv.html#module-venv). This will make sure that your Python installation and Home Assistant installation won't impact one another. The following steps will work on most UNIX like systems.
-_(If you're on a Debian based system, you will need to install Python virtual environment support using `apt-get install python3-pip python3-venv`.)_
+_(If you're on a Debian based system, you will need to install Python virtual environment support using `apt-get install python3-pip python3-venv`. You may also need to install development libraries using `apt-get install build-essential libssl-dev libffi-dev python3-dev`.)_
It is recommended to use the [advanced guide](/docs/installation/raspberry-pi/) which allows for the installation to run as a `homeassistant` user. The steps below may be shorter but some users find difficulty when applying updates and may run into issues. @@ -47,6 +47,8 @@ It is recommended to use the [advanced guide](/docs/installation/raspberry-pi/) ``` $ hass --open-ui ``` + 8. You can now reach the web interface on `http://ipaddress:8123/` - the first start may take up to 20 minutes before the web interface is available + ### {% linkable_title Upgrade %} @@ -65,6 +67,7 @@ It is recommended to use the [advanced guide](/docs/installation/raspberry-pi/) $ python3 -m pip install --upgrade homeassistant ``` 5. Start Home Assistant + 6. You can now reach the web interface on `http://ipaddress:8123/` - the first start may take up to 20 minutes before the web interface is available ### {% linkable_title Notes %} diff --git a/source/_docs/installation/windows.markdown b/source/_docs/installation/windows.markdown index 3efe0581137..4ad45162efd 100644 --- a/source/_docs/installation/windows.markdown +++ b/source/_docs/installation/windows.markdown @@ -15,7 +15,7 @@ To run Home Assistant on Microsoft Windows installation you need to install Pyth There may be alpha or beta releases of Python listed on that download page (marked by the letters `a` or `b` in the version number. Do not use these versions.
-If you use your machine for something other than Home Assistant, you should install it in a [Python virtual environment](#Installing_in_a_Python_virtual_environment). +If you use your machine for something other than Home Assistant, you should install it in a [Python virtual environment](#installing-in-a-python-virtual-environment). Start diff --git a/source/_docs/mqtt/birth_will.markdown b/source/_docs/mqtt/birth_will.markdown index 8ba1aa593ad..d0c46687279 100644 --- a/source/_docs/mqtt/birth_will.markdown +++ b/source/_docs/mqtt/birth_will.markdown @@ -25,15 +25,51 @@ mqtt: payload: 'offline' ``` -Configuration variables: - -- **birth_message** (*Optional*): - - **topic** (*Required*): The MQTT topic to publish the message. - - **payload** (*Required*): The message content. - - **qos** (*Optional*): The maximum QoS level of the topic. Default is 0. - - **retain** (*Optional*): If the published message should have the retain flag on or not. Defaults to `True`. -- **will_message** (*Optional*): - - **topic** (*Required*): The MQTT topic to publish the message. - - **payload** (*Required*): The message content. - - **qos** (*Optional*): The maximum QoS level of the topic. Default is 0. - - **retain** (*Optional*): If the published message should have the retain flag on or not. Defaults to `True`. +{% configuration %} +birth_message: + description: Birth Message. + required: false + type: list + keys: + topic: + description: The MQTT topic to publish the message. + required: true + type: string + payload: + description: The message content. + required: true + type: string + qos: + description: The maximum QoS level of the topic. + required: false + default: 0 + type: integer + retain: + description: If the published message should have the retain flag on or not. + required: false + default: true + type: boolean +will_message: + description: Will Message + required: false + type: list + keys: + topic: + description: The MQTT topic to publish the message. + required: true + type: string + payload: + description: The message content. + required: true + type: string + qos: + description: The maximum QoS level of the topic. + required: false + default: 0 + type: integer + retain: + description: If the published message should have the retain flag on or not. + required: false + default: true + type: boolean +{% endconfiguration %} diff --git a/source/_docs/mqtt/broker.markdown b/source/_docs/mqtt/broker.markdown index 8923f93f3ff..2fd03ed181b 100644 --- a/source/_docs/mqtt/broker.markdown +++ b/source/_docs/mqtt/broker.markdown @@ -164,7 +164,7 @@ Home Assistant is not affiliated with CloudMQTT nor will receive any kickbacks. ```yaml mqtt: - broker: CLOUTMQTT_SERVER + broker: CLOUDMQTT_SERVER port: CLOUDMQTT_PORT username: CLOUDMQTT_USER password: CLOUDMQTT_PASSWORD @@ -173,4 +173,7 @@ mqtt:Home Assistant will automatically load the correct certificate if you connect to an encrypted channel of CloudMQTT (port range 20000-30000).
++If you experience an error message like `Failed to connect due to exception: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed`, then add `certificate: auto` to your broker configuration and restart Home Assistant. +
diff --git a/source/_docs/mqtt/certificate.markdown b/source/_docs/mqtt/certificate.markdown index 252e0a5160a..f673741c245 100644 --- a/source/_docs/mqtt/certificate.markdown +++ b/source/_docs/mqtt/certificate.markdown @@ -20,9 +20,17 @@ mqtt: certificate: /home/paulus/dev/addtrustexternalcaroot.crt ``` -Configuration variables: - -- **certificate** (*Optional*): 'auto' or the certificate authority certificate file that is to be treated as trusted by this client. 'auto' uses the bundled certificates. If a file is specified the file should contain the root certificate of the certificate authority that signed your broker's certificate, but may contain multiple certificates. Example: `/home/user/identrust-root.pem` -- **client_key** (*Optional*): Client key, eg. `/home/user/owntracks/cookie.key`. -- **client_cert** (*Optional*): Client certificate, eg. `/home/user/owntracks/cookie.crt`. - +{% configuration %} +certificate: + description: "'auto' or the certificate authority certificate file that is to be treated as trusted by this client. 'auto' uses the bundled certificates. If a file is specified the file should contain the root certificate of the certificate authority that signed your broker's certificate, but may contain multiple certificates. Example: `/home/user/identrust-root.pem`" + required: false + type: string +client_key: + description: Client key, e.g., `/home/user/owntracks/cookie.key`. + required: false + type: string +client_cert: + description: Client certificate, e.g., `/home/user/owntracks/cookie.crt`. + required: false + type: string +{% endconfiguration %} diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown index 3c6a1d9cec4..cf3d015bb32 100644 --- a/source/_docs/mqtt/discovery.markdown +++ b/source/_docs/mqtt/discovery.markdown @@ -33,10 +33,19 @@ mqtt: discovery: true discovery_prefix: homeassistant ``` -Configuration variables: -- **discovery** (*Optional*): If the MQTT discovery should be enabled or not. Defaults to `False`. -- **discovery_prefix** (*Optional*): The prefix for the discovery topic. Defaults to `homeassistant`. +{% configuration %} +discovery: + description: If the MQTT discovery should be enabled or not. + required: false + default: false + type: boolean +discovery_prefix: + description: The prefix for the discovery topic. + required: false + default: homeassistant + type: string +{% endconfiguration %}
The [embedded MQTT broker](/docs/mqtt/broker#embedded-broker) does not save any messages between restarts. If you use the embedded MQTT broker you have to send the MQTT discovery messages after every Home Assistant restart for the devices to show up.
@@ -173,12 +182,14 @@ Supported abbreviations:
### {% linkable_title Support by third-party tools %}
-The following firmware for ESP8266, ESP32 and Sonoff unit has built-in support for MQTT discovery:
+The following software has built-in support for MQTT discovery:
- [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) (starting with 5.11.1e)
- [esphomeyaml](https://esphomelib.com/esphomeyaml/index.html)
- [ESPurna](https://github.com/xoseperez/espurna)
- [Arilux AL-LC0X LED controllers](https://github.com/mertenats/Arilux_AL-LC0X)
+- [room-assistant](https://github.com/mKeRix/room-assistant) (starting with 1.1.0)
+- [Zigbee2mqtt](https://github.com/koenkk/zigbee2mqtt)
### {% linkable_title Examples %}
@@ -235,3 +246,40 @@ Setting up a switch using topic prefix and abbreviated configuration variable na
- Command topic: `homeassistant/switch/irrigation/set`
- State topic: `homeassistant/switch/irrigation/state`
- Payload: `{"~": "homeassistant/switch/irrigation", "name": "garden", "cmd_t": "~/set", , "stat_t": "~/state"}`
+
+Setting up a climate component (heat only) with abbreviated configuration variable names to reduce payload length.
+
+- Configuration topic: `homeassistant/climate/livingroom/config`
+- Configuration payload:
+
+```yaml
+{
+ "name":"Livingroom",
+ "mode_cmd_t":"homeassistant/climate/livingroom/thermostatModeCmd",
+ "mode_stat_t":"homeassistant/climate/livingroom/state",
+ "mode_stat_tpl":"{{value_json.mode}}",
+ "avty_t":"homeassistant/climate/livingroom/available",
+ "pl_avail":"online",
+ "pl_not_avail":"offline",
+ "temp_cmd_t":"homeassistant/climate/livingroom/targetTempCmd",
+ "temp_stat_t":"homeassistant/climate/livingroom/state",
+ "temp_stat_tpl":"{{value_json.target_temp}}",
+ "curr_temp_t":"homeassistant/climate/livingroom/state",
+ "current_temperature_template":"{{value_json.current_temp}}",
+ "min_temp":"15",
+ "max_temp":"25",
+ "temp_step":"0.5",
+ "modes":["off", "heat"]
+}
+```
+
+- State topic: `homeassistant/climate/livingroom/state`
+- State payload:
+
+```yaml
+{
+ "mode":"off",
+ "target_temp":"21.50",
+ "current_temp":"23.60",
+}
+```
diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown
index 9d8b8a218b6..fccdd277509 100644
--- a/source/_docs/scripts.markdown
+++ b/source/_docs/scripts.markdown
@@ -42,9 +42,10 @@ The most important one is the action to call a service. This can be done in vari
### {% linkable_title Test a Condition %}
-While executing a script you can add a condition to stop further execution. When a condition does not return `true`, the script will finish. There are many different conditions which are documented at the [conditions page].
+While executing a script you can add a condition to stop further execution. When a condition does not return `true`, the script will stop executing. There are many different conditions which are documented at the [conditions page].
```yaml
+# If paulus is home, continue to execute the script below these lines
- condition: state
entity_id: device_tracker.paulus
state: 'home'
diff --git a/source/_docs/scripts/conditions.markdown b/source/_docs/scripts/conditions.markdown
index ed9c4b8782a..052845f3228 100644
--- a/source/_docs/scripts/conditions.markdown
+++ b/source/_docs/scripts/conditions.markdown
@@ -12,6 +12,8 @@ redirect_from: /getting-started/scripts-conditions/
Conditions can be used within a script or automation to prevent further execution. A condition will look at the system right now. For example a condition can test if a switch is currently turned on or off.
+Unlike a trigger, which is always `or`, conditions are `and` by default - all conditions have to be true.
+
### {% linkable_title AND condition %}
Test multiple conditions in 1 condition statement. Passes if all embedded conditions are valid.
@@ -25,10 +27,11 @@ condition:
state: 'home'
- condition: numeric_state
entity_id: 'sensor.temperature'
- below: '20'
+ below: 20
```
-If you do not want to combine AND and OR conditions, you can also just list them sequentially, by default all conditions have to be true.
+If you do not want to combine AND and OR conditions, you can also just list them sequentially.
+
The following configuration works the same as the one listed above:
```yaml
@@ -38,7 +41,7 @@ condition:
state: 'home'
- condition: numeric_state
entity_id: 'sensor.temperature'
- below: '20'
+ below: 20
```
Currently you need to format your conditions like this to be able to edit them using the [automations editor](/docs/automation/editor/).
@@ -56,10 +59,10 @@ condition:
state: 'home'
- condition: numeric_state
entity_id: 'sensor.temperature'
- below: '20'
+ below: 20
```
-### {% linkable_title MIXED AND and OR conditions %}
+### {% linkable_title MIXED AND and OR conditions %}
Test multiple AND and OR conditions in 1 condition statement. Passes if any embedded conditions is valid.
This allows you to mix several AND and OR conditions together.
@@ -78,7 +81,7 @@ condition:
state: 'rain'
- condition: numeric_state
entity_id: 'sensor.temperature'
- below: '20'
+ below: 20
```
### {% linkable_title Numeric state condition %}
@@ -131,7 +134,7 @@ condition:
```yaml
condition:
- condition: or # 'when dark' condition: either after sunset or before sunrise
+ condition: or # 'when dark' condition: either after sunset or before sunrise - equivalent to a state condition on `sun.sun` of `below_horizon`
conditions:
- condition: sun
after: sunset
@@ -139,6 +142,20 @@ condition:
before: sunrise
```
+```yaml
+condition:
+ condition: and # 'when light' condition: before sunset and after sunrise - equivalent to a state condition on `sun.sun` of `above_horizon`
+ conditions:
+ - condition: sun
+ before: sunset
+ - condition: sun
+ after: sunrise
+```
+
+A visual timeline is provided below showing an example of when these conditions will be true. In this chart, sunrise is at 6:00, and sunset is at 18:00 (6:00 PM). The green areas of the chart indicate when the specified conditions will be true.
+
+
+
### {% 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'.
@@ -173,6 +190,10 @@ 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.
+
+A better weekday condition could be by using the [Workday Binary Sensor](/components/binary_sensor.workday/). +
+ ### {% linkable_title Zone condition %} Zone conditions test if an entity is in a certain zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the [OwnTracks platform](/components/device_tracker.owntracks/) and the [iCloud platform](/components/device_tracker.icloud/). diff --git a/source/_docs/scripts/service-calls.markdown b/source/_docs/scripts/service-calls.markdown index ab73aad5290..3216b3de89d 100644 --- a/source/_docs/scripts/service-calls.markdown +++ b/source/_docs/scripts/service-calls.markdown @@ -61,10 +61,9 @@ You can use the Services Developer Tool to test data to pass in a service call. For example, you may test turning on or off a 'group' (See [groups] for more info) To turn a group on or off, pass the following info: -Domain: `homeassistant` -Service: `turn_on` -Service Data: `{ "entity_id": "group.kitchen" }` - +- Domain: `homeassistant` +- Service: `turn_on` +- Service Data: `{ "entity_id": "group.kitchen" }` ### {% linkable_title Use templates to determine the attributes %} @@ -82,4 +81,16 @@ data_template: temperature: {% raw %}{{ 22 - distance(states.device_tracker.paulus) }}{% endraw %} ``` +### {% linkable_title `homeassistant` services %} + +There are four `homeassistant` services that aren't tied to any single domain, these are: + +* `homeassistant.turn_on` - Turns on an entity (that supports being turned on), for example an `automation`, `switch`, etc +* `homeassistant.turn_off` - Turns off an entity (that supports being turned off), for example an `automation`, `switch`, etc +* `homeassistant.toggle` - Turns off an entity that is on, or turns on an entity that is off (that supports being turned on and off) +* `homeassistant.update_entity` - Request the update of an entity, rather than waiting for the next scheduled update, for example [google travel time] sensor, a [template sensor], or a [light] + [templating]: /topics/templating/ +[google travel time]: /components/sensor.google_travel_time/ +[template sensor]: /components/sensor.template/ +[light]: /components/light/ diff --git a/source/_docs/security.markdown b/source/_docs/security.markdown index d609e63aa02..9f3c199703a 100644 --- a/source/_docs/security.markdown +++ b/source/_docs/security.markdown @@ -9,7 +9,7 @@ sharing: true footer: true --- -As Home Assistant is like every other service or daemon that is running on a computer system that allows access over a network connection, certain measurement were taken to increase the overall security while still staying operational. +As Home Assistant is like every other service or daemon that is running on a computer system that allows access over a network connection, certain measures were taken to increase the overall security while still staying operational. [Secure your installation](/docs/configuration/securing/) once you've finished with the installation process regardless of your use case. @@ -27,7 +27,7 @@ See the [open ports](/docs/security/porosity/) of a Hass.io instance with variou ## {% linkable_title HTTP SSL/TLS %} -Home Assistant is following the [Mozilla's Operations Security team recommendations](https://wiki.mozilla.org/Security/Server_Side_TLS) for Server side SSL/TLS settings. To allow the users to access Home Assistant with most devices the target is **Intermediate compatibility**. +Home Assistant is following the [Mozilla's Operations Security team recommendations](https://wiki.mozilla.org/Security/Server_Side_TLS) for Server side SSL/TLS settings. Home Assistant uses **Modern compatibility** by default. If an user wishes to use **Intermediate compatibilty**, this is configurable in the [`http` component](/components/http/). ## {% linkable_title SSH %} diff --git a/source/_docs/tools/credstash.markdown b/source/_docs/tools/credstash.markdown index 023ee239988..34bf8b0e2f9 100644 --- a/source/_docs/tools/credstash.markdown +++ b/source/_docs/tools/credstash.markdown @@ -27,6 +27,12 @@ http: Create an entry in your credstash store. ```bash -$ hass --script credstash set http_password +$ hass --script credstash put http_password 123 +``` + +List your secrets. + +```bash +$ hass --script credstash list ``` diff --git a/source/_docs/tools/db_migrator.markdown b/source/_docs/tools/db_migrator.markdown deleted file mode 100644 index 68127935ae3..00000000000 --- a/source/_docs/tools/db_migrator.markdown +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: page -title: "db_migrator" -description: "Script to migrate data in an InfluxDB database" -release_date: 2017-02-23 11:00:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - --This script was only use for 0.36 release cycle! -
- -Starting with 0.36 the [InfluxDB](omponents/influxdb/) component has a new schema to store values in the InfluxDB databases. - -- There will no longer be any tags/fields named `time`. -- All numeric fields (int/float/bool) will be stored as float inside InfluxDB database. -- All string fields corresponding to state attributes will be renamed as `FIELDNAME_str`, where `FIELDNAME` is the state attribute, to avoid type conflicts. -- All string fields corresponding to a state will be renamed as `state` (former value). -- Fields named `value` will always be stored as float. -- Fields named `state` will always be stored as string. - -## {% linkable_title Migration script %} - -If you need to migrate your database, you may require to run the `influxdb_migrator` script. Run the script after upgrade to 0.36 but before the first regular start of `hass` version 0.36. - -These are the steps the script will perform: - -1. Create a new database (called `DBNAME__old`) to store old data. -2. Copy data from `DBNAME` database to `DBNAME__old` database. -3. Empty `DBNAME` database (using `drop` then `create`). `DBNAME` database is now considered as the new database. -4. For each measurement of `DBNAME__old` database: - 1. Read all points from the current measurement (in groups of 1000 points by default) and convert them. - 2. Send group of points to `DBNAME` database. -5. Delete the `DBNAME__old` database if needed. - -Example to run the script: - -```bash -$ hass --script influxdb_migrator \ - -H IP_INFLUXDB_HOST -u INFLUXDB_USERNAME -p INFLUXDB_PASSWORD \ - -d INFLUXDB_DB_NAME -``` -Script arguments: - -``` -required arguments: - -d dbname, --dbname dbname InfluxDB database name - -optional arguments: - -h, --help show this help message and exit - -H host, --host host InfluxDB host address - -P port, --port port InfluxDB host port - -u username, --username username - InfluxDB username - -p password, --password password - InfluxDB password - -s step, --step step How many points to migrate at the same time - -o override_measurement, --override-measurement override_measurement - Store all your points in the same measurement - -D, --delete Delete old database -``` - -- If you run the script with only the `-h` option, you will get a help printout with a short explanation of the different options. -- The host option defaults to `'127.0.0.1'`. -- The port option defaults to `8086`. -- You should be able to omit username and password if InfluxDB authentication is disabled, which it is by default. -- The step option defaults to `1000`. - diff --git a/source/_docs/tools/dev-tools.markdown b/source/_docs/tools/dev-tools.markdown index 99ce3e7cf7e..18c39443b4d 100644 --- a/source/_docs/tools/dev-tools.markdown +++ b/source/_docs/tools/dev-tools.markdown @@ -101,3 +101,6 @@ Even though MQTT in general provides deeper functionality, the developer tools s {% linkable_title Info %} The Information tab simply provides information about the current installed version, additional links and credits. The tab also contains a section that shows `syslog` information, and the contents of `home-assistant.log` with an option to clear and refresh the logs. + +The Information tab also allows makes it possible to try out the Lovelace User Interface (UI) by clicking "Try out the new Lovelace UI (experimental)" or set Lovelace as the default UI, so that when the "Overview" link in the Sidebar is selected, the Lovelace UI will load by default. + diff --git a/source/_docs/tools/influxdb_import.markdown b/source/_docs/tools/influxdb_import.markdown deleted file mode 100644 index 8ff3d85e7b8..00000000000 --- a/source/_docs/tools/influxdb_import.markdown +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: page -title: "influxdb_import" -description: "Script to import data into an InfluxDB database" -release_date: 2017-02-23 11:00:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -If you want to import all the recorded data from your recorder database you can use the data import script. It will read all your state_change events from the database and add them as data-points to the InfluxDB. You can specify the source database either by pointing the `--config` option to the config directory which includes the default SQLite database or by giving a sqlalchemy connection URI with `--uri`. - -The writing to InfluxDB is done in batches that can be changed with `--step`. - -You can control, which data is imported by using the command line options `--exclude_entities` and `--exclude_domains`. Both get a comma separated list of either entity-ids or domain names that are excluded from the import. - -To test what gets imported you can use the `--simulate` option, which disables the actual write to the InfluxDB instance. This only writes the statistics how much points would be imported from which entity. - -Example to run the script: - -```bash -$ hass --script influxdb_import --config CONFIG_DIR \ - -H IP_INFLUXDB_HOST -u INFLUXDB_USERNAME -p INFLUXDB_PASSWORD \ - --dbname INFLUXDB_DB_NAME --exclude_domains automation,configurator -``` -Script arguments: - -``` -required arguments: - -d dbname, --dbname dbname - InfluxDB database name - -optional arguments: - -h, --help show this help message and exit - -c path_to_config_dir, --config path_to_config_dir - Directory that contains the Home Assistant - configuration - --uri URI Connect to URI and import (if other than default - sqlite) eg: mysql://localhost/homeassistant - - -H host, --host host InfluxDB host address - -P port, --port port InfluxDB host port - -u username, --username username - InfluxDB username - -p password, --password password - InfluxDB password - -s step, --step step How many points to import at the same time - -t tags, --tags tags Comma separated list of tags (key:value) for all - points - -D default_measurement, --default-measurement default_measurement - Store all your points in the same measurement - -o override_measurement, --override-measurement override_measurement - Store all your points in the same measurement - -e exclude_entities, --exclude_entities exclude_entities - Comma separated list of excluded entities - -E exclude_domains, --exclude_domains exclude_domains - Comma separated list of excluded domains - -S, --simulate Do not write points but simulate preprocessing - and print statistics -``` - - diff --git a/source/_docs/tools/influxdb_migrator.markdown b/source/_docs/tools/influxdb_migrator.markdown deleted file mode 100644 index df8e83e4058..00000000000 --- a/source/_docs/tools/influxdb_migrator.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "influxdb_migrator" -description: "Script to convert an old-structure Influx database to a new one." -release_date: 2017-02-23 11:00:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Script to convert an old-structure Influx database to a new one. - -Example to run the script: - -```bash -$ hass --script influxdb_migrator -H IP_INFLUXDB_HOST \ - -u INFLUXDB_USERNAME -p INFLUXDB_PASSWORD \ - --dbname INFLUXDB_DB_NAME -``` -Script arguments: - -``` -optional arguments: - -h, --help show this help message and exit - -d dbname, --dbname dbname - InfluxDB database name - -H host, --host host InfluxDB host address - -P port, --port port InfluxDB host port - -u username, --username username - InfluxDB username - -p password, --password password - InfluxDB password - -s step, --step step How many points to migrate at the same time - -o override_measurement, --override-measurement override_measurement - Store all your points in the same measurement - -D, --delete Delete old database -``` - diff --git a/source/_docs/z-wave.markdown b/source/_docs/z-wave.markdown index 6df8aca7acf..caf4e3ad221 100644 --- a/source/_docs/z-wave.markdown +++ b/source/_docs/z-wave.markdown @@ -42,4 +42,4 @@ You can get more information on the [available services](/docs/z-wave/services/) When you toggle a switch or control a light locally you may find that it takes some time for that to be reflected in Home Assistant. That's because Lutron had patents on the status updates using the *Hail* command class, the traditional way of allowing devices to tell the controller that something happened locally. The same result can be achieved through the *Association* command class, or *Central Scene* command class (though, *Central Scene* isn't [fully supported](https://github.com/OpenZWave/open-zwave/pull/1125) in OpenZWave). -If you search [the Z-Wave products database](http://products.z-wavealliance.org/) for your product and it lists one of those in the **Controlled** command classes (not the **Supported** command classes), then your device will be able to report state changes when they happen. If it doesn't then updates may either happen eventually, or you may need to (carefully) [enable polling](https://www.home-assistant.io/docs/z-wave/control-panel/#entities-of-this-node). +If you search [the Z-Wave products database](http://products.z-wavealliance.org/) for your product and it lists one of those in the **Controlled** command classes (not the **Supported** command classes), then your device will be able to report state changes when they happen. If it doesn't then updates may either happen eventually, or you may need to (carefully) [enable polling](/docs/z-wave/control-panel/#entities-of-this-node). diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown index 018857fb5bc..88ad5553ae3 100644 --- a/source/_docs/z-wave/control-panel.markdown +++ b/source/_docs/z-wave/control-panel.markdown @@ -104,7 +104,7 @@ There may be multiple groups, that are used for different purposes. The manual o #### {% linkable_title Broadcast group %} -Some Z-Wave devices may associate themselves with the broadcast group (group 255). You'll be able to tell if this has happened if opening a door (or triggering a motion sensor) causes lights to come on, and closing the door (or the motion sensor going clear) causes lights to run off. There's no way to clear this from the control panel, but you can use the `zwave.change_association` service: +Some Z-Wave devices may associate themselves with the broadcast node (node 255). You'll be able to tell if this has happened if opening a door (or triggering a motion sensor) causes lights to come on, and closing the door (or the motion sensor going clear) causes lights to run off. You can get rid of this by selecting any target node. If the group has node 255 in it, a *Remove broadcast* button will appear. You can also use the `zwave.change_association` service: ```json {"association": "remove", "node_id": 3, "group": 1, "target_node_id": 255} diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown index 8548c92f9c1..286754352fa 100644 --- a/source/_docs/z-wave/controllers.markdown +++ b/source/_docs/z-wave/controllers.markdown @@ -33,10 +33,11 @@ The alternative to a stick is a hub that supports Z-Wave. Home Assistant support - [Vera](/components/vera/) - [Wink](/components/wink/) + - [Fibaro](/components/fibaro/) ## {% linkable_title Controller Notes %} -### {% linkable_title Aoetec Stick %} +### {% linkable_title Aeotec Stick %} By default this will turn on "disco lights", which you can turn off by following the instructions in the [device specific page](/docs/z-wave/device-specific/#aeon-z-stick) diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index 833275cdbb7..ad9d86339ba 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -40,6 +40,10 @@ On Raspberry Pi you will need to enable the serial interface in the `raspi-confi ## {% linkable_title Configuration %} ++You can also use the Z-Wave *Integration* in the *Configuration* menu to set up the Z-Wave component. +
+ ```yaml # Example configuration.yaml entry zwave: @@ -59,7 +63,7 @@ network_key: type: string default: None config_path: - description: "The path to the Python OpenZWave configuration files. NOTE: there is also the [update_config service](https://www.home-assistant.io/docs/z-wave/services/) to perform updating the config within python-openzwave automatically." + description: "The path to the Python OpenZWave configuration files. NOTE: there is also the [update_config service](/docs/z-wave/services/) to perform updating the config within python-openzwave automatically." required: false type: string default: the 'config' that is installed by python-openzwave @@ -67,7 +71,7 @@ autoheal: description: Allows disabling auto Z-Wave heal at midnight. required: false type: boolean - default: True + default: true polling_interval: description: The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the zwave network and cause problems. required: false @@ -77,7 +81,7 @@ debug: description: Print verbose z-wave info to log. required: false type: boolean - default: False + default: false device_config / device_config_domain / device_config_glob: description: "This attribute contains node-specific override values. NOTE: This needs to be specified if you are going to use any of the following options. See [Customizing devices and services](/docs/configuration/customizing-devices/) for the format." required: false @@ -87,7 +91,7 @@ device_config / device_config_domain / device_config_glob: description: Ignore this entity completely. It won't be shown in the Web Interface and no events are generated for it. required: false type: boolean - default: False + default: false polling_intensity: description: Enables polling of a value and sets the frequency of polling (0=none, 1=every time through the list, 2=every other time, etc). If not specified then your device will not be polled. required: false @@ -97,17 +101,17 @@ device_config / device_config_domain / device_config_glob: description: Enable refreshing of the node value. Only the light component uses this. required: false type: boolean - default: False + default: false delay: description: Specify the delay for refreshing of node value. Only the light component uses this. required: false type: integer - default: 2 + default: 5 invert_openclose_buttons: description: Inverts function of the open and close buttons for the cover domain. This will not invert the position and state reporting. required: false type: boolean - default: False + default: false {% endconfiguration %}@@ -144,7 +148,7 @@ $ dmesg | grep USB If Home Assistant (`hass`) runs with another user (e.g., *homeassistant* on Hassbian) give access to the stick with: ```bash -$ sudo usermod -a -G dialout homeassistant +$ sudo usermod -aG dialout homeassistant ```
@@ -245,7 +249,7 @@ $ groups homeassistant
That should include `dialout`, if it doesn't then:
```bash
-$ sudo usermod -G dialout homeassistant
+$ sudo usermod -aG dialout homeassistant
```
### {% linkable_title Device path changes %}
diff --git a/source/_includes/asides/component_navigation.html b/source/_includes/asides/component_navigation.html
index a165fe95e16..bd64fc7efe3 100644
--- a/source/_includes/asides/component_navigation.html
+++ b/source/_includes/asides/component_navigation.html
@@ -1,141 +1,141 @@
-{% assign components = site.components | sort_natural: 'title' %}
-{% assign github_main_repo = 'https://github.com/home-assistant/home-assistant/blob/master/homeassistant' %}
+{%- assign components = site.components | sort_natural: 'title' -%}
+{%- assign github_main_repo = 'https://github.com/home-assistant/home-assistant/blob/master/homeassistant' -%}
- {% endif %}
+ {%- endif -%}
Platforms
- {% endunless %}
+ {%- endunless -%}
- {% endif %}
+ {%- endif -%}
- {% endif %}
+ {%- endif -%}
- {% assign related_found = false %}
- {% for component in components %}
- {% if component.url != page.url %}
- {% assign comp_file_parts = component.url | split: '/' | last | split: '.' %}
- {% if comp_file_parts.size == 2 %}
- {% assign comp_imp_name = comp_file_parts | last %}
- {% else %}
- {% assign comp_imp_name = comp_file_parts | first %}
- {% endif %}
+ {%- assign related_found = false -%}
+ {%- for component in components -%}
+ {%- if component.url != page.url -%}
+ {%- assign comp_file_parts = component.url | split: '/' | last | split: '.' -%}
+ {%- if comp_file_parts.size == 2 -%}
+ {%- assign comp_imp_name = comp_file_parts | last -%}
+ {%- else -%}
+ {%- assign comp_imp_name = comp_file_parts | first -%}
+ {%- endif -%}
- {% if comp_imp_name == imp_name %}
- {% unless related_found %}
- {% assign related_found = true %}
+ {%- if comp_imp_name == imp_name -%}
+ {%- unless related_found -%}
+ {%- assign related_found = true -%}
Related components
- {% endunless %}
+ {%- endunless -%}
Category {{page.ha_category}}
- {% for component in components %}
- {% if component.ha_category == page.ha_category %}
+ {%- for component in components -%}
+ {%- if component.ha_category == page.ha_category -%}