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 ' } -}); - -github.authenticate({ type: 'oauth', token: token }); - -var usersMap = {}; - -github.repos.getForOrg({ - org: organizationName, - type: 'public', - per_page: 100 -}, function(err, repos){ - var headerSource = (err && err.headers) ? err.headers : repos.meta; - var ratelimitLimit = Number(headerSource['x-ratelimit-limit']); - var ratelimitRemaining = Number(headerSource['x-ratelimit-remaining']); - console.log('Rate limits: '+ratelimitRemaining+'/'+ratelimitLimit, '(remaining/limit)'); - if(err) { - if(err.code == 403 && ratelimitRemaining == 0) { - var resetUnixTime = moment.unix(err.headers['x-ratelimit-reset']); - var resetTimeFormatted = resetUnixTime.format(); - var resetAt = moment().to(resetUnixTime); - console.error('Error when getting list of repos in org, because rate limits are exhausted. Rate limits reset', resetAt, 'from now ('+resetTimeFormatted+')'); - } else { - console.error('Error when attempting to get a list of all repos in org...', err.message); - } - return; - } - async.each(repos, function(repo, cb){ - github.repos.getContributors({ owner: organizationName, repo: repo.name, per_page: 100 }, function(err, contributors){ - getContributors(err, contributors, repo, cb); - }); - }, function(err){ - if(err){ - console.error('Error when iterating organization repos', err); - return; - } - console.log('Done getting contributors for '+repos.length+' found organization repos...'); - async.each(Object.keys(usersMap), function(login, cb){ - github.users.getForUser({username: login}, function(err, userInfo){ - if(err){ - console.error('Got error when get user details for', login, err); - cb(err); - return; - } - if (userInfo.name) { - userInfo.name = userInfo.name.replace(/^@/, '') - .replace(//g, '>') - .replace(/[\\`*_{}[\]()#+-.!~|]/g, '\\$&'); - } - usersMap[login].info.name = userInfo.name || userInfo.login; - usersMap[login].info.username = userInfo.login; - cb(); - }); - }, function(err){ - if(err){ - console.error('Got error when running', err); - return; - } else { - console.log('Building contributors!!!'); - buildContributors(); - } - }); - }); -}); - -function getContributors(err, res, repo, callback){ - if(err) { - console.error('Error when getting contributors', err); - callback(err); - return - } else { - console.log('Processing the '+res.length+' contributors to '+repo.name); - async.each(res, function(contributor, cb){ - if(!usersMap[contributor.login]) { - usersMap[contributor.login] = { - counts: {}, - info: {login: contributor.login, id: contributor.id} - }; - } - usersMap[contributor.login].counts[repo.name] = contributor.contributions; - cb(null); - }, function(){ - if (github.hasNextPage(res)) { - github.getNextPage(res, function(newErr, newContributors){ - getContributors(newErr, newContributors, repo, callback); - }); - } else { - callback(null); - } - }); - } -} - -function buildContributors(){ - var fearlessLeader = usersMap['balloob']; - fearlessLeader.countString = buildCountString(fearlessLeader.counts); - delete usersMap['balloob']; - var users = Object.keys(usersMap).map(function (key) { - var obj = usersMap[key]; - obj.countString = buildCountString(obj.counts); - return obj; - }).sort(function(a, b){ - var nameA = a.info.name.toLowerCase(); - var nameB = b.info.name.toLowerCase(); - if (nameA < nameB) { return -1; } - if (nameA > nameB) { return 1; } - return 0; - }); - var headerDate = moment().tz('UTC').format('YYYY-MM-DD HH:mm:ss ZZ'); - var footerDate = moment().tz('UTC').format('dddd, MMMM Do YYYY, h:mm:ss a zz'); - var output = ''; - mu.compileAndRender('credits.mustache', { - allUsers: users, - fearlessLeader: fearlessLeader, - headerDate: headerDate, - footerDate: footerDate - }).on('data', function (data) { - output += data.toString(); - }).on('end', function(){ - fs.writeFile('../source/developers/credits.markdown', output, function (writeErr) { - if (writeErr) { - console.log('Error when writing credits.markdown', writeErr); - } else { - console.log('Done getting user info, wrote credits.markdown file!'); - } - }); - }); -} - -function buildCountString(counts){ - var totalCommits = 0; - var countStrings = []; - Object.keys(counts).sort(function(a, b){ - return counts[b] - counts[a]; - }).forEach(function (countKey) { - var count = counts[countKey]; - var word = (count > 1) ? 'commits' : 'commit'; - totalCommits = totalCommits+count; - countStrings.push(count+' '+word+' to '+countKey); - }); - countStrings.unshift(totalCommits+' total commits to the home-assistant organization'); - return countStrings.join(', '); -} diff --git a/plugins/configuration.rb b/plugins/configuration.rb index 92f681e199e..993e4ba4e6d 100644 --- a/plugins/configuration.rb +++ b/plugins/configuration.rb @@ -2,7 +2,7 @@ module Jekyll class ConfigurationBlock < Liquid::Block TYPE_LINKS = { 'action' => '/docs/scripts/', - 'device_class' => '/components/%{component}/#device-class', + 'device_class' => '/docs/configuration/customizing-devices/#device-class', 'template' => '/docs/configuration/templating/', 'icon' => '/docs/configuration/customizing-devices/#icon', } diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss index c64bdb7da2e..f0c233ec106 100644 --- a/sass/custom/_paulus.scss +++ b/sass/custom/_paulus.scss @@ -141,10 +141,9 @@ $primary-color: #049cdb; } } - .shirt-promo { + .picture-promo { display: block; padding-top: 30%; - background-image: url(/images/merchandise/shirt-frontpage.png); background-size: cover; background-position: center; text-decoration: none; @@ -459,7 +458,7 @@ a code { color: $primary-color; } -twitterwidget { +twitter-widget { margin-left: auto; margin-right: auto; } diff --git a/sass/custom/_syntax.scss b/sass/custom/_syntax.scss index 2d100df2851..9d4c79dba1a 100644 --- a/sass/custom/_syntax.scss +++ b/sass/custom/_syntax.scss @@ -12,7 +12,7 @@ code.highlighter-rouge { padding: 0 .3em; } -.highlight { +pre.highlight { background-color: #FFF; border: 1px solid #CCC; font-family: "Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace; diff --git a/sass/oscailte/base/_navigation.scss b/sass/oscailte/base/_navigation.scss index 24f68005e6c..720884c5b62 100644 --- a/sass/oscailte/base/_navigation.scss +++ b/sass/oscailte/base/_navigation.scss @@ -81,11 +81,6 @@ header .grid { font-weight: normal; font-size: 14px; line-height: 1; - - &.show-search { - padding-left: 0; - padding-right: 0; - } } .menu > li > a:hover, .menu > li > a:focus{ diff --git a/source/_addons/check_config.markdown b/source/_addons/check_config.markdown index 1ef8abd754a..9ae856d22a3 100644 --- a/source/_addons/check_config.markdown +++ b/source/_addons/check_config.markdown @@ -11,12 +11,25 @@ footer: true You can use this add-on to check whether your configuration files are valid against the new version of Home Assistant before you actually update your Home Assistant installation. This add-on will help you avoid errors due to breaking changes, resulting in a smooth update. +### {% linkable_title How to use this add-on %} + +1. Just start the add-on. +2. Wait (On a Raspberry Pi it can take several minutes). +3. If you see the following output then you are good to go to update Home Assistant: `[Info] Configuration check finished - no error found! :)`. + +If you get errors, then you should look for **Breaking Changes** against the version you specified for this add-on and change your configuration accordingly. + +### {% linkable_title Add-on configuration %} + ```json { "version": "latest" } ``` -Configuration variables: - -- **version** (*Required*): Version of Home Assistant that you plan to install. +{% configuration %} +version: + description: Version of Home Assistant that you plan to install. + required: true + type: string +{% endconfiguration %} diff --git a/source/_addons/dhcp_server.markdown b/source/_addons/dhcp_server.markdown index 1f0df69183c..c35d2fc201c 100644 --- a/source/_addons/dhcp_server.markdown +++ b/source/_addons/dhcp_server.markdown @@ -36,19 +36,63 @@ Create a simple DHCP server for your network and allow setting fixed IPs for dev } ``` -Configuration variables: - -- **domain** (*Required*): Your network domain name. -- **dns** (*Required*): A list of DNS server for your network. -- **networks** (*Optional*): A list of network to provide DHCP. -  - **subnet** (*Required*): Your network schema. -  - **netmask** (*Required*): Your network netmask. -  - **range_start** (*Required*): Start address for dhcp leases. -  - **range_end** (*Required*): End address for dhcp leases. -  - **broadcast** (*Required*): Network broadcast address. -  - **gateway** (*Required*): A List of gateways. - - **interface** (*Required*): Interface on that will be listen. Normally is `eth0` for ethernet wired connection and `wlan0` for wireless connection. -- **hosts** (*Optional*): A list of fixed IPs for devices. - - **name** (*Required*): Name/hostname of your device. -  - **mac** (*Required*): Mac address of your device. -  - **ip** (*Required*): Fix ip address for device. +{% configuration %} +domain: + description: Your network domain name. + required: true + type: string +dns: + description: A list of DNS server for your network. + required: true + type: list +networks: + description: A list of network to provide DHCP. + required: false + type: list + keys: + subnet: + description: Your network schema. + required: true + type: string + netmask: + description: Your network netmask. + required: true + type: string + range_start: + description: Start address for DHCP leases. + required: true + type: string + range_end: + description: End address for DHCP leases. + required: true + type: string + broadcast: + description: Network broadcast address. + required: true + type: string + gateway: + description: A List of gateways. + required: true + type: list + interface: + description: Interface on that will be listen. Normally is `eth0` for ethernet wired connection and `wlan0` for wireless connection. + required: true + type: string +hosts: + description: A list of fixed IPs for devices. + required: false + type: list + keys: + name: + description: Name/hostname of your device. + required: true + type: string + mac: + description: Mac address of your device. + required: true + type: string + ip: + description: Fix ip address for device. + required: true + type: string +{% endconfiguration %} diff --git a/source/_addons/dnsmasq.markdown b/source/_addons/dnsmasq.markdown index d894320ab02..13553302a8d 100644 --- a/source/_addons/dnsmasq.markdown +++ b/source/_addons/dnsmasq.markdown @@ -23,8 +23,17 @@ Setup and manage a [Dnsmasq](http://thekelleys.org.uk/dnsmasq/doc.html) DNS serv } ``` -Configuration variables: - -- **defaults** (*Required*): A list of DNS servers to forward default requests to. -- **forwards** (*Optional*): A list of domains that will forward to a specific server. -- **hosts** (*Optional*): A list of hosts to resolve statically. +{% configuration %} +defaults: + description: A list of DNS servers to forward default requests to. + required: true + type: list +forwards: + description: A list of domains that will forward to a specific server. + required: false + type: list +hosts: + description: A list of hosts to resolve statically. + required: false + type: list +{% endconfiguration %} diff --git a/source/_addons/duckdns.markdown b/source/_addons/duckdns.markdown index 38c947eb6e3..d1726880996 100644 --- a/source/_addons/duckdns.markdown +++ b/source/_addons/duckdns.markdown @@ -25,12 +25,29 @@ featured: true } ``` -Configuration variables: - -- **lets_encrypt.accept_terms** (*Required*): If you accept the [Let's Encrypt Subscriber Agreement](https://letsencrypt.org/repository/), it will generate and update Let's Encrypt certificates for your DuckDNS domain. -- **token** (*Required*): Your Duck DNS API key, from your DuckDNS account page. -- **domains** (*Required*): A list of domains to update DNS. -- **seconds** (*Required*): Seconds between updates to Duck DNS. +{% configuration %} +lets_encrypt: + description: Let's Encrypt is a free, automated, and open certificate authority. + required: true + type: list + keys: + accept_terms: + description: If you accept the [Let's Encrypt Subscriber Agreement](https://letsencrypt.org/repository/), it will generate and update Let's Encrypt certificates for your DuckDNS domain. + required: true + type: boolean +token: + description: Your Duck DNS API key, from your DuckDNS account page. + required: true + type: string +domains: + description: A list of domains to update DNS. + required: true + type: list +seconds: + description: Seconds between updates to Duck DNS. + required: true + type: integer +{% endconfiguration %} ## {% linkable_title Home Assistant configuration %} @@ -51,4 +68,4 @@ You'll need to forward the port you listed in your configuration (8123 in the ex Ensure that you allocate the Home Assistant system a fixed IP on your network before you configure port forwarding. You can do this either on the computer itself (see the [install guide](/hassio/installation/) or via a static lease on your router. -Restart Home Assistant for the configured changes to take effect. When you access the Home Assistant frontend you will now need to use `https`, even when accessing local instances, for example at `https://192.168.0.1:8123`. +Restart Home Assistant for the configured changes to take effect. When you access the Home Assistant frontend you will now need to use `https`, even when accessing local instances, for example at `https://192.168.0.1:8123`. diff --git a/source/_addons/git_pull.markdown b/source/_addons/git_pull.markdown index 9bfc6f8cca2..3ae5e0f2927 100644 --- a/source/_addons/git_pull.markdown +++ b/source/_addons/git_pull.markdown @@ -38,7 +38,7 @@ Load and update configuration files for Home Assistant from a [Git](https://git- } ``` -- **repository** (*Required*): Git URL to your repository (make sure to use double quotes). You have to add `.git` to your GitHub repository URL (see example configuration) +- **repository** (*Required*): Git URL to your repository (make sure to use double quotes). You have to add `.git` to your GitHub repository URL (see example configuration). The contents of the repository is assumed to be the root of Home Assistant `config/` folder. The configuration cannot be in a subdirectory, i.e., `configuration.yaml`, `groups.yaml`, etc. must be in the root of the repository. - **git_branch** (*Required*): Branch name of the Git repo. If left empty, the currently checked out branch will be updated. Leave this as 'master' if you are unsure. - **git_remote** (*Required*): Name of the tracked repository. Leave this as `origin` if you are unsure. - **git_prune** (*Required*): If set to true, the add-on will cleanup branches that are deleted on the remote repository, but still have cached entries on the local machine. Leave this as `false` if you are unsure. diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index 2c8e0adba2e..9bb978212fe 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -68,10 +68,16 @@ Configuration example that uses the USB microphone and the built-in headset audi } ``` -Configuration variables: - -- **mic**: This is the hardware address of your microphone. Look at the add-on output -- **speaker**: This is the hardware address of your speakers. Look at the add-on output +{% configuration %} +mic: + description: This is the hardware address of your microphone. Look at the add-on output. + required: true + type: float +speaker: + description: This is the hardware address of your speakers. Look at the add-on output. + required: true + type: string +{% endconfiguration %} ### {% linkable_title Home Assistant configuration %} diff --git a/source/_addons/homematic.markdown b/source/_addons/homematic.markdown index 50a56b1bd9d..b3b23f25d3c 100644 --- a/source/_addons/homematic.markdown +++ b/source/_addons/homematic.markdown @@ -16,6 +16,7 @@ The logic layer will be Home Assistant. There is no ReGa or other logic layer in Follow devices will be supported and tested: - [HM-MOD-RPI-PCB](https://www.elv.ch/homematic-funkmodul-fuer-raspberry-pi-bausatz.html) +- [HmIP-RFUSB](https://www.elv.ch/elv-homematic-ip-rf-usb-stick-hmip-rfusb-fuer-alternative-steuerungsplattformen-arr-bausatz.html) ```json { @@ -33,25 +34,74 @@ Follow devices will be supported and tested: "key": "abc", "ip": "192.168.0.0" } + ], + "hmip_enable": false, + "hmip": [ + { + "type": "HMIP_CCU2", + "device": "/dev/ttyUSB0" + } ] } ``` -Configuration variables: - -- **rf_enable** (*Required*): Boolean. Enable or disable BidCoS-RF. -- **wired_enable** (*Required*): Boolean. Enable or disable BidCoS-Wired. - -For RF devices: - -- **type** (*Required*): Device type for RFD service. Look into the manual of your device. -- **device** (*Required*): Device on the host. - -For wired devices: - -- **serial** (*Required*): Serial number of the device. -- **key** (*Required*): Encrypted key. -- **ip** (*Required*): IP address of LAN gateway. +{% configuration %} +rf_enable: + description: Enable or disable BidCoS-RF. + required: true + type: boolean +rf: + description: RF devices. + required: true + type: list + keys: + type: + description: Device type for RFD service. Look into the manual of your device. + required: true + type: string + device: + description: Device on the host. + required: true + type: string +wired_enable: + description: Enable or disable BidCoS-Wired. + required: true + type: boolean +wired: + description: Wired devices. + required: true + type: list + keys: + serial: + description: Serial number of the device. + required: true + type: string + key: + description: Encrypted key. + required: true + type: string + ip: + description: IP address of LAN gateway. + required: true + type: string +hmip_enable: + description: Enable or disable hmip. + required: true + type: boolean +hmip: + description: HMIP devices. + required: true + type: list + keys: + type: + description: Device type for RFD service. Look into the manual of your device. + required: true + type: string + device: + description: Device on the host. + required: true + type: string +{% endconfiguration %} ## {% linkable_title Home Assistant configuration %} @@ -63,6 +113,12 @@ homematic: rf: host: core-homematic port: 2001 + wired: + host: core-homematic + port: 2000 + hmip: + host: core-homematic + port: 2010 ``` ## {% linkable_title Raspberry Pi3 %} @@ -72,3 +128,7 @@ With HM-MOD-RPI-PCB you need to add follow into your `config.txt` on boot partit ```text dtoverlay=pi3-miniuart-bt ``` + +## {% linkable_title HmIP-RFUSB %} + +HassOS > 1.11 support HmIP-RFUSB default and don't need any configuration. If you run a Linux, you need to follow the installation guide from documentation to set up the UART USB interface on your computer. diff --git a/source/_addons/lets_encrypt.markdown b/source/_addons/lets_encrypt.markdown index 755d039a2f7..c50d52fb273 100644 --- a/source/_addons/lets_encrypt.markdown +++ b/source/_addons/lets_encrypt.markdown @@ -19,14 +19,32 @@ Setup and manage a [Let's Encrypt](https://letsencrypt.org/) certificate. This a ```json { "email": "example@example.com", - "domains": ["example.com", "mqtt.example.com", "hass.example.com"] + "domains": ["example.com", "mqtt.example.com", "hass.example.com"], + "certfile": "fullchain.pem", + "keyfile": "privkey.pem" } ``` -Configuration variables: - -- **email** (*Required*): Your email address for registration on Let's Encrypt. -- **domains** (*Required*): A list of domains to create/renew the certificate. +{% configuration %} +email: + description: Your email address for registration on Let's Encrypt. + required: true + type: string +domains: + description: A list of domains to create/renew the certificate. + required: true + type: list +certfile: + description: Name of the certfile that is created. Leave as default value. + required: true + type: string + default: fullchain.pem +keyfile: + description: Name of the keyfile that is created. Leave as default value. + required: true + type: string + default: privkey.pem +{% endconfiguration %} ## {% linkable_title Home Assistant configuration %} diff --git a/source/_addons/mariadb.markdown b/source/_addons/mariadb.markdown index cbc2d78b474..7aa57b5a8ae 100644 --- a/source/_addons/mariadb.markdown +++ b/source/_addons/mariadb.markdown @@ -32,18 +32,50 @@ Set up a [MariaDB](https://mariadb.org/) SQL server. It supports multiple databa } ``` -Configuration variables: - -- **databases** (*Required*): List of databases. -- **logins** (*Required*): List of SQL accounts to create or update. - - **username** (*Required*): Username for account. - - **host** (*Required*): Host for account. If you need an account on multiple hosts, use '%'. - - **password** (*Required*): Password for account. -- **rights** (*Required*): List of rights to be granted. - - **username** (*Required*): Username for granted rights. - - **host** (*Required*): Host is a part of username like above. - - **database** (*Required*): Database name on which to grant user rights. - - **grant** (*Required*): SQL grant part for access too. +{% configuration %} +databases: + description: List of databases. + required: true + type: list +logins: + description: List of SQL accounts to create or update. + required: true + type: list + keys: + username: + description: Username for account. + required: true + type: string + host: + description: Host for account. If you need an account on multiple hosts, use '%'. + required: true + type: string + password: + description: Password for account. + required: true + type: string +rights: + description: List of rights to be granted. + required: true + type: list + keys: + username: + description: Username for granted rights. + required: true + type: string + host: + description: Host is a part of username like above. + required: true + type: string + database: + description: Database name on which to grant user rights. + required: true + type: string + grant: + description: SQL grant part for access too. + required: true + type: string +{% endconfiguration %} ## {% linkable_title Home Assistant configuration %} diff --git a/source/_addons/mosquitto.markdown b/source/_addons/mosquitto.markdown index 70f591520c0..86d5c2316a3 100644 --- a/source/_addons/mosquitto.markdown +++ b/source/_addons/mosquitto.markdown @@ -14,13 +14,10 @@ Set up [Mosquitto](https://mosquitto.org/) as MQTT broker. ```json { - "plain": true, - "ssl": false, - "anonymous": true, "logins": [ - {"username": "testuser", "password": "mypw"}, - {"username": "testuser2", "password": "mypw2"} + {"username": "local-user", "password": "mypw"} ], + "anonymous": false, "customize": { "active": false, "folder": "mosquitto" @@ -34,49 +31,51 @@ Set up [Mosquitto](https://mosquitto.org/) as MQTT broker. Make sure you use logins and disable anonymous access if you want to secure the system.

-Configuration variables: +{% configuration %} +anonymous: + description: Allow anonymous connections. If *logins* is set, the anonymous user can only read data. + required: false + default: false + type: boolean +logins: + description: A list of local users that will be created with *username* and *password*. You don't need do this because you can use Home Assistant users too without any configuration. + required: false + type: list +customize: + description: If you enable it, it reads additional configuration files (`*.conf`) from `/share/mosquitto`. + required: false + type: [boolean, string] +{% endconfiguration %} -- **plain** (*Optional*): Listen on port 1883 without SSL/TLS. Defaults to `true`. -- **ssl** (*Optional*): Listen on port 8883 with SSL/TLS. This requires certificates. Defaults to `false`. -- **anonymous** (*Optional*): Allow anonymous connections. If *logins* is set, the anonymous user can only read data. Defaults to `true`. -- **logins** (*Optional*): A list of users that will be created with *username* and *password*. -- **customize** (*Optional*): If you enable it, it reads additional configuration files (`*.conf`) from `/share/mosquitto`. +### {% linkable_title Home Assistant user management %} + +This add-on is attached to the Home Assistant user system, so mqtt clients can make use of these credentials. Local users may also still be set independently within the configuration options for the add-on. For the internal Hass.io ecosystem we register `homeassistant` and `addons`, so these may not be used as user names. ### {% linkable_title Home Assistant configuration %} -To use the Mosquitto as [broker](/docs/mqtt/broker/#run-your-own), add the following entry to the `configuration.yaml` file. +To use the Mosquitto as [broker](/docs/mqtt/broker/#run-your-own), go to the integration page and install the configuration with one click. If you have old MQTT settings available, remove this old integration and restart Home Assistant to see the new one. -```yaml -# Example configuration.yaml entry -mqtt: - broker: core-mosquitto +#### {% linkable_title Using Mosquitto with Hass.io %} + +1. Install the [Mosquitto add-on](/addons/mosquitto/) with the default configuration via 'Hass.io > ADD-ON STORE'. (Don't forget to start the add-on & verify that 'Start on boot' is enabled.) + +2. Create a new user for MQTT via the `Configuration > Users (manage users)`. (Note: This name cannot be "homeassistant" or "addon") + +3. Once back on-line, return to `Configuration > Integrations` and select configure next to `MQTT`. + +``` + Broker: YOUR_HASSIO_IP_ADDRESS + Port: 1883 + Username: MQTT_USERNAME + Password: MQTT_PASSWORD ``` -If username and password are set up in add-on, your `configuration.yaml` file should contain that data. +Note: .yaml modifications are not required. +See [testing your setup](/docs/mqtt/testing/) to verify the steps above. -```yaml -mqtt: - broker: core-mosquitto - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` +### {% linkable_title Disable listening on insecure (1883) ports %} -### {% linkable_title Listening simultaneously on SSL/TLS (8883) and insecure (1883) ports %} - -1. Configure SSL/TLS as normal. -2. Set `customize` flag to `true` in your configuration. -3. Create a file in `/share/mosquitto` named `insecure.conf` with the following contents: - -```text -listener 1883 -protocol mqtt -``` - -4. Restart MQTT - -

-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 %}
diff --git a/source/_addons/tellstick.markdown b/source/_addons/tellstick.markdown index 1bae8bac498..eb6075fdbde 100644 --- a/source/_addons/tellstick.markdown +++ b/source/_addons/tellstick.markdown @@ -17,20 +17,8 @@ After installation you are presented with a default and example configuration, t After any changes have been made to the configuration, you need to restart the add-on for the changes to take effect. -Configuration variables: - -- **id** (*Required*): A number and must be unique for each device. -- **name** (*Required*): A name for easy identification of the device. -- **protocol** (*Required*): This is the protocol the device uses. More on the different protocols later down. -- **model** (*Optional*): The model parameter is only used by some protocols where there exists different types of devices using the same protocol. This can be dimmers versus non-dimmers, codeswitch versus self-learning, etc. -- **house** (*Optional*): Depending on protocol the values here can vary a lot to identify or group per house or type. -- **unit** (*Optional*): Unit identifier, in most cases a value between 1 to 16 and often used in combination with the house. -- **fade** (*Optional*): Fade is either `true` or `false` and tells a dimmer if it should fade smooth or instant between values (only for IKEA protocol as it seems). -- **code** (*Optional*): A number series based on ones and zeroes often used for dip-switch based devices. - You will need to add internal communication details to `configuration.yaml` to enable the integration from Hass.io and the add-on. - ```yaml # Example configuration.yaml entry tellstick: @@ -69,11 +57,47 @@ Example for adding more devices in the add-on configuration (note the comma sepa } ``` +{% configuration %} +id: + description: A number and must be unique for each device. + required: true + type: integer +name: + description: A name for easy identification of the device. + required: true + type: string +protocol: + description: This is the protocol the device uses. More on the different protocols later down. + required: true + type: string +model: + description: The model parameter is only used by some protocols where there exists different types of devices using the same protocol. This can be dimmers versus non-dimmers, codeswitch versus self-learning, etc. + required: false + type: string +house: + description: Depending on protocol the values here can vary a lot to identify or group per house or type. + required: false + type: string +unit: + description: Unit identifier, in most cases a value between 1 to 16 and often used in combination with the house. + required: false + type: integer +fade: + description: Fade is either `true` or `false` and tells a dimmer if it should fade smooth or instant between values (only for IKEA protocol as it seems). + required: false + type: boolean +code: + description: A number series based on ones and zeroes often used for dip-switch based devices. + required: false + type: string +{% endconfiguration %} + ## {% linkable_title Service calls %} If you wish to teach a self-learning device in your TellStick configuration: Go to Home Assistant [service call](http://hassio.local:8123/dev-service) in Developer tools and select. + - Service: `hassio.addon_stdin` - Enter service Data: `{"addon":"core_tellstick","input":{"function":"learn","device":"1"}}` diff --git a/source/_components/air_quality.markdown b/source/_components/air_quality.markdown new file mode 100644 index 00000000000..26d62f2f489 --- /dev/null +++ b/source/_components/air_quality.markdown @@ -0,0 +1,28 @@ +--- +layout: page +title: "Air Quality" +description: "Instructions on how to add air quality sensors with Home Assistant" +date: 2018-11-25 08:00 +sidebar: true +comments: false +sharing: true +footer: true +redirect_from: /components/air_pollutants/ +--- + +The `air_quality` gather information about the air quality and pollution details. + +The platforms cover the following levels (if they are available): + +- The particulate matter 0.1 (<= 0.1 μm) level. +- The particulate matter 2.5 (<= 2.5 μm) level. +- The particulate matter 10 (<= 10 μm) level. +- The Air Quality Index (AQI). +- The O3 (ozone) level. +- The CO (carbon monoxide) level. +- The CO2 (carbon dioxide) level. +- The SO2 (sulphur dioxide) level. +- The N2O (nitrogen oxide) level. +- The NO (nitrogen monoxide) level. +- The NO2 (nitrogen dioxide) level. + diff --git a/source/_components/air_quality.opensensemap.markdown b/source/_components/air_quality.opensensemap.markdown new file mode 100644 index 00000000000..72c73883f05 --- /dev/null +++ b/source/_components/air_quality.opensensemap.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "OpenSenseMap" +description: "Instructions on how to setup openSenseMap sensors in Home Assistant." +date: 2018-12-15 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: opensensemap.png +ha_category: Health +ha_release: 0.85 +ha_iot_class: "Cloud Polling" +redirect_from: /components/air_pollutants.opensensemap/ +--- + +The `opensensemap` air quality platform will query the open data API of [openSenseMap.org](https://opensensemap.org/) to monitor air quality sensor station. + +## {% linkable_title Setup %} + +To get the ID of a station you need to select it on the [openSense map](https://opensensemap.org/) and find it in the addressbar of your browser. It's the last part of the URL, e.g., `5b450e565dc1ec001bf7cd1d` [https://opensensemap.org/explore/5b450e565dc1ec001bf7cd1d](https://opensensemap.org/explore/5b450e565dc1ec001bf7cd1d). + +## {% linkable_title Manual Configuration %} + +To enable this platform, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +air_quality: + - platform: opensensemap + station_id: STATION_ID +``` + +{% configuration %} +station_id: + description: The ID of the station to monitor. + required: true + type: string +name: + description: Name of the sensor to use in the frontend. + required: false + default: Station name + type: string +{% endconfiguration %} + diff --git a/source/_components/alarm_control_panel.ialarm.markdown b/source/_components/alarm_control_panel.ialarm.markdown index 9f4442ab3cb..ae3841f08a4 100644 --- a/source/_components/alarm_control_panel.ialarm.markdown +++ b/source/_components/alarm_control_panel.ialarm.markdown @@ -46,6 +46,10 @@ name: description: Name of device in Home Assistant. required: false type: string +code: + description: Specifies a code to enable or disable the alarm in the frontend. + required: false + type: integer {% endconfiguration %} This platform has also been confirmed to work with the alarm system brands Meian and Emooluxr. diff --git a/source/_components/alarm_control_panel.lupusec.markdown b/source/_components/alarm_control_panel.lupusec.markdown new file mode 100644 index 00000000000..f7547c012c4 --- /dev/null +++ b/source/_components/alarm_control_panel.lupusec.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "Lupusec Alarm Control Panel" +description: "Instructions on how to setup the Lupusec Alarm control panel within Home Assistant." +date: 2018-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lupusec.png +ha_category: Alarm +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. + +The requirement is that you have setup your [Lupusec component](/components/lupusec/). The alarm control panel is automatically added to the Home Assistant frontend. diff --git a/source/_components/alarm_control_panel.manual_mqtt.markdown b/source/_components/alarm_control_panel.manual_mqtt.markdown index 751a5e77c59..ca6b592aa67 100644 --- a/source/_components/alarm_control_panel.manual_mqtt.markdown +++ b/source/_components/alarm_control_panel.manual_mqtt.markdown @@ -12,7 +12,7 @@ ha_category: Alarm ha_release: "0.50" --- -This platform extends the [manual alarm](/components/alarm_control_panel.manual/) by adding support for MQTT control of the alarm by a remote device. It can be used to create external keypads which simply change the state of the manual alarm in Home Assistant. +The `mqtt` platform extends the [manual alarm](/components/alarm_control_panel.manual/) by adding support for MQTT control of the alarm by a remote device. It can be used to create external keypads which simply change the state of the manual alarm in Home Assistant. It's essentially the opposite of the [MQTT Alarm Panel](/components/alarm_control_panel.mqtt/) which allows Home Assistant to observe an existing, fully-featured alarm where all of the alarm logic is embedded in that physical device. @@ -91,15 +91,15 @@ armed_home/armed_away/armed_night/disarmed/triggered: type: list keys: delay_time: - description: State specific setting for **delay_time** (all states except **triggered**) + description: State specific setting for **delay_time** (all states except **triggered**). required: false type: integer pending_time: - description: State specific setting for **pending_time** (all states except **disarmed**) + description: State specific setting for **pending_time** (all states except **disarmed**). required: false type: integer trigger_time: - description: State specific setting for **trigger_time** (all states except **triggered**) + description: State specific setting for **trigger_time** (all states except **triggered**). required: false type: integer {% endconfiguration %} @@ -110,11 +110,11 @@ Additionally, the following MQTT configuration variables are also available. {% configuration %} state_topic: - description: The MQTT topic HA will publish state updates to. + description: The MQTT topic Home Assistant will publish state updates to. required: true type: string command_topic: - description: The MQTT topic HA will subscribe to, to receive commands from a remote device to change the alarm state. + description: The MQTT topic Home Assistant will subscribe to, to receive commands from a remote device to change the alarm state. required: true type: string qos: @@ -148,9 +148,9 @@ payload_arm_night: In the configuration example below: -- The disarmed state never triggers the alarm; -- The armed_home state will leave no time to leave the building or disarm the alarm; -- While other states state will give 30 seconds to leave the building before triggering the alarm, and 20 seconds to disarm the alarm when coming back; +- The disarmed state never triggers the alarm +- The armed_home state will leave no time to leave the building or disarm the alarm +- While other states state will give 30 seconds to leave the building before triggering the alarm, and 20 seconds to disarm the alarm when coming back - Setting pending_time to 0 for triggered state allows the alarm to trigger after previous state's delay time only. If not set, the alarm will be pending for previous state's delay_time plus the default pending_time before triggering. ```yaml diff --git a/source/_components/alarm_control_panel.mqtt.markdown b/source/_components/alarm_control_panel.mqtt.markdown index 8cd5dd1bfd2..244268a501f 100644 --- a/source/_components/alarm_control_panel.mqtt.markdown +++ b/source/_components/alarm_control_panel.mqtt.markdown @@ -17,11 +17,11 @@ The `mqtt` alarm panel platform enables the possibility to control MQTT capable The component will accept the following states from your Alarm Panel (in lower case): -- 'disarmed' -- 'armed_home' -- 'armed_away' -- 'pending' -- 'triggered' +- `disarmed` +- `armed_home` +- `armed_away` +- `pending` +- `triggered` The component can control your Alarm Panel by publishing to the `command_topic` when a user interacts with the Home Assistant frontend. @@ -43,6 +43,10 @@ name: required: false type: string default: MQTT Alarm +unique_id: + description: An ID that uniquely identifies this alarm panel. If two alarm panels have the same unique ID, Home Assistant will raise an exception. + required: false + type: string state_topic: description: The MQTT topic subscribed to receive state updates. required: true @@ -89,4 +93,33 @@ payload_not_available: required: false type: string default: offline +device: + description: 'Information about the device this alarm panel 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/alarm_control_panel.ness_alarm.markdown b/source/_components/alarm_control_panel.ness_alarm.markdown new file mode 100644 index 00000000000..175113636fe --- /dev/null +++ b/source/_components/alarm_control_panel.ness_alarm.markdown @@ -0,0 +1,19 @@ +--- +layout: page +title: "Ness Alarm Control Panel" +description: "Instructions on how to setup the Ness alarm control panel within Home Assistant." +date: 2018-11-25 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ness.png +ha_category: Alarm +ha_release: 0.85 +ha_iot_class: "Local Push" +--- + + +The `ness_alarm` alarm control panel platform allows you to control your [Ness](http://nesscorporation.com/) D8x and D16x alarms. + +The alarm control panel is automatically added by configuring the [Ness alarm](/components/ness_alarm/) component. diff --git a/source/_components/alarmdecoder.markdown b/source/_components/alarmdecoder.markdown index 268f80b7fce..0c47d81bb72 100644 --- a/source/_components/alarmdecoder.markdown +++ b/source/_components/alarmdecoder.markdown @@ -91,7 +91,7 @@ zones: required: true type: string type: - description: "A type for the zone. Here you can find a list of [Device Classes](https://www.home-assistant.io/components/binary_sensor/#device-class)." + description: "A type for the zone. Here you can find a list of [Device Classes](/components/binary_sensor/#device-class)." required: false default: opening type: string @@ -99,6 +99,10 @@ zones: description: The RF serial-number associated with RF zones. Providing this field allows Home Assistant to associate raw sensor data to a given zone, allowing direct monitoring of the state, battery, and supervision status. required: false type: string + loop: + description: The loop number associated with RF zones (1, 2, 3, or 4). Providing this field allows Home Assistant to read open/closed status from the raw sensor data in addition to from the panel display, meaning it can correctly show a bypassed RF zone as open or closed when the alarm is armed. (This is an alternative to relayaddr/relaychan below for RF zones.) + required: false + type: integer relayaddr: description: "Address of the relay expander board to associate with the zone. (ex: 12, 13, 14, or 15). Typically used in cases where a panel will not send bypassed zones such as motion during an armed home state, the Vista 20P is an example of this. Alarmdecoder can emulate a zone expander board and the panel can be programmed to push zone events to this virtual expander. This allows the bypassed zone binary sensors to be utilized. One example is using bypassed motion sensors at night for motion-based automated lights while the system is armed with the motion sensor bypassed." required: inclusive diff --git a/source/_components/alert.markdown b/source/_components/alert.markdown index 033cd918873..c46ac2a66ef 100644 --- a/source/_components/alert.markdown +++ b/source/_components/alert.markdown @@ -42,8 +42,8 @@ alert: entity_id: input_boolean.garage_door state: 'on' repeat: 30 - can_acknowledge: True - skip_first: True + can_acknowledge: true + skip_first: true notifiers: - ryans_phone - kristens_phone @@ -51,15 +51,9 @@ alert: {% configuration %} name: - description: The friendly name of the alert. This can include a [template][template]. + description: The friendly name of the alert. required: true type: string -done_message: - description: > - A message sent after an alert transitions from `on` to `off`. Is only sent - if an alert notification was sent for transitioning from `off` to `on`. This can include a [template][template]. - required: false - type: string entity_id: description: The ID of the entity to watch. required: true @@ -87,6 +81,19 @@ skip_first: required: false type: boolean default: false +message: + description: > + A message to be sent after an alert transitions from `off` to `on` + with [template][template] support. + required: false + type: template +done_message: + description: > + A message sent after an alert transitions from `on` to `off` with + [template][template] support. Is only sent if an alert notification + was sent for transitioning from `off` to `on`. + required: false + type: template notifiers: description: "List of `notification` components to use for alerts." required: true @@ -96,7 +103,7 @@ notifiers: In this example, the garage door status (`input_boolean.garage_door`) is watched and this alert will be triggered when its status is equal to `on`. This indicates that the door has been opened. Because the `skip_first` option -was set to `True`, the first notification will not be delivered immediately. +was set to `true`, the first notification will not be delivered immediately. However, every 30 minutes, a notification will be delivered until either `input_boolean.garage_door` no longer has a state of `on` or until the alert is acknowledged using the Home Assistant frontend. @@ -118,15 +125,16 @@ provided by the `alert` component: ``` ```yaml -freshwater_temp_alert: - name: "Warning: I have detected a problem with the freshwater tank temperature" - entity_id: binary_sensor.freshwater_temperature_status - state: 'on' - repeat: 5 - can_acknowledge: true - skip_first: false - notifiers: - - john_phone_sms +alert: + freshwater_temp_alert: + name: "Warning: I have detected a problem with the freshwater tank temperature" + entity_id: binary_sensor.freshwater_temperature_status + state: 'on' + repeat: 5 + can_acknowledge: true + skip_first: false + notifiers: + - john_phone_sms ``` ### {% linkable_title Complex Alert Criteria %} @@ -139,12 +147,13 @@ disable the alert on certain days. Maybe the alert firing should depend on more than one input. For all of these situations, it is best to use the alert in conjunction with a `Template Binary Sensor`. The following example does that. +{% raw %} ```yaml binary_sensor: - platform: template sensors: motion_battery_low: - value_template: {% raw %}'{{ states.sensor.motion.attributes.battery < 15 }}'{% endraw %} + value_template: '{{ states.sensor.motion.attributes.battery < 15 }}' friendly_name: 'Motion battery is low' alert: @@ -156,6 +165,7 @@ alert: - ryans_phone - kristens_phone ``` +{% endraw %} This example will begin firing as soon as the entity `sensor.motion`'s `battery` attribute falls below 15. It will continue to fire until the battery attribute @@ -179,8 +189,8 @@ alert: - 15 - 30 - 60 - can_acknowledge: True # Optional, default is True - skip_first: True # Optional, false is the default + can_acknowledge: true # Optional, default is true + skip_first: true # Optional, false is the default notifiers: - ryans_phone - kristens_phone @@ -192,4 +202,56 @@ following notification. For example, if the garage door opens at 2:00, a notification will be sent at 2:15, 2:45, 3:45, 4:45, etc., continuing every 60 minutes. +### {% linkable_title Message Templates %} + +It may be desirable to have the alert notifications include information +about the state of the entity. [Templates](/docs/configuration/templating/) +can be used in the message or name of the alert to make it more relevant. +The following will show for a plant how to include the problem `attribute` +of the entity. + +{% raw %} +```yaml +# Example configuration.yaml entry +alert: + office_plant: + name: Plant in office needs help + entity_id: plant.plant_office + state: 'problem' + repeat: 30 + can_acknowledge: true + skip_first: true + message: "Plant {{ states.plant.plant_office }} needs help ({{ state_attr('plant.plant_office', 'problem') }})" + done_message: Plant in office is fine + notifiers: + - ryans_phone + - kristens_phone +``` +{% endraw %} + +The resulting message could be `Plant Officeplant needs help (moisture low)`. + +The next example uses a template for the alert name. + +{% raw %} +```yaml +alert: + garage_door: + name: Garage has been open for {{ relative_time(states.binary_sensor.garage.last_changed) }} + done_message: Garage is closed + entity_id: binary_sensor.garage + state: 'on' + repeat: + - 30 + - 60 + - 120 + can_acknowledge: true + skip_first: true + notifiers: + - ryans_phone +``` +{% endraw %} + +The resulting title of the alert could be `Garage has been open for 30 min`. + [template]: /docs/configuration/templating/ diff --git a/source/_components/alexa.markdown b/source/_components/alexa.markdown index 23c8bc9c86d..9cabf5dccca 100644 --- a/source/_components/alexa.markdown +++ b/source/_components/alexa.markdown @@ -13,9 +13,13 @@ featured: true ha_release: '0.10' --- -

- 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 ` and Alexa will run that script for you. ### {% linkable_title Support for Launch Requests %} + There may be times when you want to respond to a launch request initiated from a command such as "Alexa, Red Alert!". To start, you need to get the skill id: - - Log into [Amazon developer console][amazon-dev-console] - - Click the Alexa button at the top of the console - - Click the Alexa Skills Kit Get Started button - - Locate the skill for which you would like Launch Request support - - Click the "View Skill ID" link and copy the ID +- Log into [Amazon developer console][amazon-dev-console] +- Click the Alexa button at the top of the console +- Click the Alexa Skills Kit Get Started button + - Locate the skill for which you would like Launch Request support + - Click the "View Skill ID" link and copy the ID The configuration is the same as an intent with the exception being you will use your skill ID instead of the intent name. ```yaml @@ -269,13 +274,13 @@ First create a file called `alexa_confirm.yaml` with something like the followin Then, wherever you would put some simple text for a response like `OK`, replace it with a reference to the file so that: -``` +```yaml text: OK ``` becomes: -``` +```yaml text: !include alexa_confirm.yaml ``` @@ -330,10 +335,9 @@ Please refer to the [Amazon documentation][flash-briefing-api-docs] for more inf - All other settings are up to you - Hit "Next" - Test - - Having passed all validations to reach this screen, you can now click on "< Back to All Skills" as your flash briefing is now available as in "Development" service. + - Having passed all validations to reach this screen, you can now click on "< Back to All Skills" as your flash briefing is now available as in "Development" service. - To invoke your flash briefing, open the Alexa app on your phone or go to the [Alexa Settings Site][alexa-settings-site], open the "Skills" configuration section, select "Your Skills", scroll to the bottom, tap on the Flash Briefing Skill you just created, enable it, then manage Flash Briefing and adjust ordering as necessary. Finally ask your Echo for your "news","flash briefing", or "briefing". - ## {% linkable_title Smart Home %} While the Skills API described above allows for arbitrary intents, all @@ -354,6 +358,9 @@ the integration work easier. Example configuration: ```yaml alexa: smart_home: + endpoint: https://api.amazonalexa.com/v3/events + client_id: !secret alexa_client_id + client_secret: !secret alexa_client_secret filter: include_entities: - light.kitchen @@ -369,13 +376,17 @@ alexa: switch.stairs: display_categories: LIGHT ``` - This exposes an HTTP POST endpoint at `http://your_hass_ip/api/alexa/smart_home` which accepts and returns messages conforming to the [Smart Home v3 payload](https://developer.amazon.com/docs/smarthome/smart-home-skill-api-message-reference.html). You must then create an Amazon developer account with an Alexa skill and Lambda function to integrate this endpoint. See [Haaska](https://github.com/mike-grant/haaska) for an example. +The `endpoint`, `client_id` and `client_secret` are optional, and are only required if you want to enable Alexa's proactive mode. Please note the following if you want to enable proactive mode: + +- There are different endpoint urls, depending on the region of your skill. Please check the available endpoints at +- The `client_id` and `client_secret` are not the ones used by the skill that have been set up using "Login with Amazon" (in the Alexa Developer Console: Build > Account Linking), but rather from the "Alexa Skill Messaging" (in the Alexa Developer Console: Build > Permissions > Alexa Skill Messaging). To get them, you need to enable the "Send Alexa Events" permission. +- If the "Send Alexa Events" permission was not enabled previously, you need to unlink and relink the skill using the Alexa App, or else Home Assistant will show the following error: "Token invalid and no refresh token available." [amazon-dev-console]: https://developer.amazon.com [flash-briefing-api]: https://developer.amazon.com/alexa-skills-kit/flash-briefing diff --git a/source/_components/android_ip_webcam.markdown b/source/_components/android_ip_webcam.markdown index bc6c493324a..20bb942bc20 100644 --- a/source/_components/android_ip_webcam.markdown +++ b/source/_components/android_ip_webcam.markdown @@ -13,17 +13,17 @@ ha_release: "0.40" ha_iot_class: "Local Polling" --- -The `android_ip_webcam` component turns an Android phone into a network camera with multiple viewing options. +The `android_ip_webcam` component turns any Android phone or tablet into a network camera with multiple viewing options. It's setup as an MJPEG camera and all settings as switches inside of Home Assistant. You can also expose the sensors. If you have multiple phones, you can use all options inside a list. ## {% linkable_title Setup %} -Download [the IP Webcam app](https://play.google.com/store/apps/details?id=com.pas.webcam) and launch the app. You will be able to the IP address of the device. +Download [the IP Webcam app](https://play.google.com/store/apps/details?id=com.pas.webcam) and launch the app. When you press 'Start Server', it will start streaming video from your phone and the IP address of the device will be shown on screen. ## {% linkable_title Configuration %} -To set it up the component, add the following information to your `configuration.yaml` file: +To set up the component, add the following information to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_components/apcupsd.markdown b/source/_components/apcupsd.markdown index aff8ae3f4c1..aba2d754d22 100644 --- a/source/_components/apcupsd.markdown +++ b/source/_components/apcupsd.markdown @@ -35,3 +35,7 @@ port: type: integer default: 3551 {% endconfiguration %} + +

+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.

- diff --git a/source/_components/climate.radiotherm.markdown b/source/_components/climate.radiotherm.markdown index 311fe0b3f42..d7ffe2141ca 100644 --- a/source/_components/climate.radiotherm.markdown +++ b/source/_components/climate.radiotherm.markdown @@ -17,10 +17,20 @@ The `radiotherm` climate platform let you control a thermostat from [Radio Therm The underlying library supports: +- CT30 v1.75 +- CT30 v1.92 +- CT30 v1.94 +- CT30 v1.99 - CT50 V1.09 - CT50 V1.88 +- CT50 V1.92 - CT50 V1.94 (also known as Filtrete 3M50) +- CT80 Rev B1 V1.00 +- CT80 Rev B2 V1.00 - CT80 Rev B2 V1.03 +- CT80 Rev B2 V1.09 + +New models that are derivatives of the CT30 or CT80 should be detected automatically and basic functionality should work. To set it up, add the following information to your `configuration.yaml` file: @@ -52,7 +62,7 @@ hold_temp: type: boolean {% endconfiguration %} -Set `hold_temp: True` if you want temperature settings from Home Assistant to override a thermostat schedule on the thermostat itself. Otherwise Home Assistant will perform temporary temperature changes. +Set `hold_temp: true` if you want temperature settings from Home Assistant to override a thermostat schedule on the thermostat itself. Otherwise Home Assistant will perform temporary temperature changes. The away mode functions similarly to the away mode feature of the website and apps, but cannot detect if you set away mode outside of Home Assistant. diff --git a/source/_components/climate.velbus.markdown b/source/_components/climate.velbus.markdown new file mode 100644 index 00000000000..5a95e769a94 --- /dev/null +++ b/source/_components/climate.velbus.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "Velbus Climate" +description: "Instructions how to integrate Velbus thermostat into Home Assistant." +date: 2018-08-22 06:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: velbus.png +ha_category: Climate +ha_iot_class: "Local Push" +ha_release: 0.83 +--- + +The `velbus` climate devices allow you to control [Velbus](http://www.velbus.eu) connected thermostats. + +For hub configuration, see [the Velbus component](/components/velbus/). diff --git a/source/_components/climate.venstar.markdown b/source/_components/climate.venstar.markdown index 7667b735434..7337e19f62e 100644 --- a/source/_components/climate.venstar.markdown +++ b/source/_components/climate.venstar.markdown @@ -61,7 +61,7 @@ ssl: description: Whether to use SSL or not when communicating. required: false type: boolean - default: False + default: false timeout: description: Number of seconds for API timeout. required: false @@ -81,9 +81,9 @@ humidifier: climate: - platform: venstar host: IP_OR_HOSTNAME_OF_THERMOSTAT - ssl: True/False + ssl: true username: OPTIONAL_AUTH_USER_HERE password: OPTIONAL_AUTH_PASS_HERE timeout: 5 - humidifier: False + humidifier: false ``` diff --git a/source/_components/climate.zwave.markdown b/source/_components/climate.zwave.markdown index e1b20babc6b..d0cd7289f9b 100644 --- a/source/_components/climate.zwave.markdown +++ b/source/_components/climate.zwave.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Z-Wave Climate" -description: "Instructions on how to setup the Z-Wave thermostat or HVAC within Home Assistant." +description: "Instructions on how to set up the Z-Wave thermostat or HVAC within Home Assistant." date: 2016-04-03 9:52 sidebar: true comments: false @@ -13,13 +13,12 @@ ha_release: 0.17 ha_iot_class: "Local Push" --- - To get your Z-Wave thermostat or HVAC unit working with Home Assistant, follow the instructions for the general [Z-Wave component](/getting-started/z-wave/).

-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 service developer tool icon **Services** from the **Developer Tools**. Choose the applicable Climate service from the list of **Available services:** and enter something like the sample below into the **Service Data** field and then press **CALL SERVICE**. +A simple way to test if your Z-Wave climate device is working is to use service developer tool icon **Services** from the **Developer Tools**. Choose the applicable Climate service from the list of **Available services:** and enter something like the sample below into the **Service Data** field and then press **CALL SERVICE**. ```json { @@ -82,4 +81,3 @@ A simple way to test if your Z-Wave climate device is working is to use **Known limitation:** It is not possible to know the current state of the cover.

- diff --git a/source/_components/cover.tellduslive.markdown b/source/_components/cover.tellduslive.markdown new file mode 100644 index 00000000000..a988bb1761b --- /dev/null +++ b/source/_components/cover.tellduslive.markdown @@ -0,0 +1,16 @@ +--- +layout: page +title: "Telldus Live Cover" +description: "Instructions on how to integrate Telldus Live Covers into Home Assistant." +date: 2016-01-17 15:49 +sidebar: true +comments: false +sharing: true +footer: true +logo: telldus.png +ha_category: Cover +featured: false +--- + +Integrates Telldus Live Covers into Home Assistant. See the [main component](/components/tellduslive/) for configuration instructions. + diff --git a/source/_components/daikin.markdown b/source/_components/daikin.markdown index c060f41b3f8..9d76f7ccc1b 100644 --- a/source/_components/daikin.markdown +++ b/source/_components/daikin.markdown @@ -13,14 +13,13 @@ ha_release: 0.59 ha_iot_class: "Local Polling" --- - The `daikin` component integrates Daikin air conditioning systems into Home Assistant. ## {% linkable_title Supported hardware %} -**Only** the european versions of Daikin ACs (models BRP069A41, 42, 43, 45). +**Only** the European versions of Daikin AC (models BRP069A41, 42, 43, 45). -The model BRP069A42 does not support setting of fan speed or fan swing mode. +Some models do not support setting of fan speed or fan swing mode. Please note that some AC devices may report outside temperature only when they are turned on. @@ -33,9 +32,6 @@ To automatically add all your Daikin devices (ACs and associated sensors) into y daikin: hosts: - 192.168.4.161 - monitored_conditions: - - inside_temperature - - outside_temperature ``` {% configuration %} @@ -43,16 +39,5 @@ hosts: description: List of IP addresses or hostnames. required: false default: All discovered hosts - type: list -monitored_conditions: - description: List of items you want to monitor for each device. - required: false - default: All conditions - type: list - keys: - inside_temperature: - description: The current temperature measured inside the house. - outside_temperature: - description: The current temperature measured outside the house. + type: list {% endconfiguration %} - diff --git a/source/_components/deconz.markdown b/source/_components/deconz.markdown index db8927e9a4e..e665590ff74 100644 --- a/source/_components/deconz.markdown +++ b/source/_components/deconz.markdown @@ -11,6 +11,7 @@ logo: deconz.jpeg ha_category: Hub ha_release: "0.61" ha_iot_class: "Local Push" +ha_qa_scale: platinum --- [deCONZ](https://www.dresden-elektronik.de/funktechnik/products/software/pc/deconz/) by [Dresden Elektronik](https://www.dresden-elektronik.de) is a software that communicates with Conbee/Raspbee Zigbee gateways and exposes Zigbee devices that are connected to the gateway. @@ -59,12 +60,14 @@ Set attribute of device in deCONZ using [Rest API](http://dresden-elektronik.git | `entity` | No | String representing a specific Home Assistant entity of a device in deCONZ. | | `data` | No | Data is a JSON object with what data you want to alter. | -Field and entity are exclusive, i.e you can only use one in a request. +Either `entity` or `field` must be provided. If both are present, `field` will be interpreted as a subpath under the device path corresponding to the specified `entity`: { "field": "/lights/1", "data": {"name": "light2"} } { "entity": "light.light1", "data": {"name": "light2"} } +{ "entity": "light.light1", "field: "/state", "data": {"on": true} } + { "field": "/config", "data": {"permitjoin": 60} } #### {% linkable_title Service `deconz.refresh_devices` %} @@ -150,6 +153,7 @@ automation: #### {% linkable_title Appdaemon event helper %} Helper app that creates a sensor `sensor.deconz_event` with a state that represents the id from the last event and an attribute to show the event data. +Put this in `apps.yaml`: {% raw %} ```yaml deconz_helper: @@ -157,6 +161,7 @@ deconz_helper: class: DeconzHelper ``` +Put this in `deconz_helper.py`: ```python import appdaemon.plugins.hass.hassapi as hass import datetime @@ -176,6 +181,7 @@ class DeconzHelper(hass.Hass): ``` {% endraw %} +Note: the event will not be visible before one event gets sent. #### {% linkable_title Appdaemon remote template %} diff --git a/source/_components/demo.markdown b/source/_components/demo.markdown index 1ea674c92c6..8eccea14537 100644 --- a/source/_components/demo.markdown +++ b/source/_components/demo.markdown @@ -17,6 +17,7 @@ The `demo` platform allows you to use components which are providing a demo of t Available demo platforms: +- [Air Quality](/components/air_quality/) (`air_quality`) - [Alarm control panel](/components/alarm_control_panel/) (`alarm_control_panel`) - [Binary sensor](/components/binary_sensor/) (`binary_sensor`) - [Camera](/components/camera/) (`camera`) diff --git a/source/_components/device_tracker.asuswrt.markdown b/source/_components/device_tracker.asuswrt.markdown index ac26ef901fc..a24982b7a6a 100644 --- a/source/_components/device_tracker.asuswrt.markdown +++ b/source/_components/device_tracker.asuswrt.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "ASUSWRT" -description: "Instructions on how to integrate ASUSWRT based routers into Home Assistant." +title: "Asuswrt Device Tracker" +description: "Instructions on how to integrate Asuswrt device tracker into Home Assistant." date: 2015-08-06 19:00 sidebar: true comments: false @@ -15,63 +15,8 @@ ha_release: pre 0.7 The `asuswrt` platform offers presence detection by looking at connected devices to a [ASUSWRT](http://event.asus.com/2013/nw/ASUSWRT/) based router. -

-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.

+It might be necessary to install additional packages: $ 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:///api/geofency`. Use the default POST format, and make sure to include the API password if you have configured a password in Home Assistant (add `?api_password=` to the end of the URL). Make sure to enable the 'Update Geo-Position' functionality for mobile beacons. +

+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_`, e.g., `device_tracker.beacon_car`. diff --git a/source/_components/device_tracker.googlehome.markdown b/source/_components/device_tracker.googlehome.markdown new file mode 100644 index 00000000000..6389280a22c --- /dev/null +++ b/source/_components/device_tracker.googlehome.markdown @@ -0,0 +1,48 @@ +--- +layout: page +title: "Google Home Bluetooth tracker" +description: "Instructions on how to use Google Home to track devices in Home Assistant." +date: 2018-11-04 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: google_home.png +ha_release: 0.83 +ha_category: Presence Detection +ha_iot_class: "Local Polling" +--- + +The `googlehome` platform allows you to detect presence using an [unofficial Google Home API][googlehomeapi]. + +## {% linkable_title Configuration %} + +To integrate Google Home Bluetooth tracker in Home Assistant, add the following section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: googlehome + host: IP_ADDRESS +``` + +{% configuration %} +host: + description: The IP address of the Google Home unit. + required: true + type: string +rssi_threshold: + description: The threshold for the RSSI signal of the device. + required: false + default: -70 + type: integer +{% endconfiguration %} + +## {% linkable_title Usage %} + +Devices will appear in the format `devicetracker._`. Note that dots are removed from the IP and BT MAC addresses. + +After running this component for a little while, you will likely see many devices appear. It's advisable to set the configuration to not discover new devices once the device you want to track have appeared (see [device tracker configuration][devicetrackerconfig] for details). + +[googlehomeapi]: https://rithvikvibhu.github.io/GHLocalApi/ +[devicetrackerconfig]: /components/device_tracker/#configuring-a-device_tracker-platform diff --git a/source/_components/device_tracker.gpslogger.markdown b/source/_components/device_tracker.gpslogger.markdown index bf98c0b62ed..c512698bedf 100644 --- a/source/_components/device_tracker.gpslogger.markdown +++ b/source/_components/device_tracker.gpslogger.markdown @@ -13,9 +13,9 @@ ha_release: 0.34 The `gpslogger` device tracker platform allows you to detect presence using [GPSLogger](http://code.mendhak.com/gpslogger/). GPSLogger is an open source app for [Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) that allows users to set up a `GET` request to update GPS coordinates. This can be configured with Home Assistant to update your location. -## {% linkable_title Auth change release 0.77 and above %} +## {% linkable_title Configuration %} -Since release 0.77, we now have long-lived access tokens. These are setup under your profile and configured in the GPSLogger application on your smartphone as explained below. +GPSLogger uses long-lived access tokens for authentication. These are setup [under your profile](/docs/authentication/#your-account-profile) and configured in the GPSLogger application on your smartphone as explained below. ```yaml # Example configuration.yaml entry @@ -23,23 +23,6 @@ device_tracker: - platform: gpslogger ``` -## {% linkable_title Before release 0.77 %} - -To integrate GPSLogger in Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: gpslogger - password: !secret gpslogger_password -``` -{% configuration %} -password: - description: Separate password for GPS Logger endpoint. If provided using regular API password to contact endpoint will result in 401 response. - required: false - type: string -{% endconfiguration %} - ## {% linkable_title Setup on your smartphone %} Install [GPSLogger for Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) on your device. @@ -68,10 +51,7 @@ Right after enabling, the app will take you to the **Log to custom URL** setting The relevant endpoint is: `/api/gpslogger` ```text -https://YOUR.DNS.HOSTNAME:PORT/api/gpslogger? - latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC - &battery=%BATT&speed=%SPD&direction=%DIR - &altitude=%ALT&provider=%PROV&activity=%ACT +https://YOUR.DNS.HOSTNAME:PORT/api/gpslogger?latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC&battery=%BATT&speed=%SPD&direction=%DIR&altitude=%ALT&provider=%PROV&activity=%ACT ``` Add the above URL after you modified it with your settings into the **URL** field. Remove the line breaks as they are only there to make the URL readable here. @@ -80,11 +60,10 @@ Add the above URL after you modified it with your settings into the **URL** fiel - Use the domain that Home Assistant is available on the internet (or the public IP address if you have a static IP address). This can be a local IP address if you are using an always on VPN from your mobile device to your home network. - Only remove `PORT` if your Home Assistant instance is using port 443. Otherwise set it to the port you're using. - For Home Assistant only the above URL, as written, will work - do not add, remove, or change the order of any of the parameters. -- **0.77+** If you are using Long-Lived access tokens, then add `Authorization: Bearer LLAT` to the HTTP Headers setting (replace `LLAT` with your Long Lived Access Token). -- **<0.77** Make sure to include your [API password](/components/http/) if you have configured a password. Add `&api_password=YOUR_PASSWORD` to the end of the URL. +- Add `Authorization: Bearer LLAT` to the HTTP Headers setting (replace `LLAT` with your Long Lived Access Token). - You can change the name of your device name by replacing `&device=%SER` with `&device=DEVICE_NAME`. -If your battery drains fast then you can tune the performance of GPSLogger under **Performance** -> **Location providers** +If your battery drains too fast then you can tune the performance of GPSLogger under **Performance** -> **Location providers**

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. +

+ +#### {% linkable_title Event Data %} + +Each event includes live image and video URLs for the Doorbird device that triggered the event. These URLs can be found on the event data and can be useful in automation actions. For example, you could use `html5_viewer_url` on a notification to be linked directly to the live view of the device that triggered the automation. + +

+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 service developer tool icon icon of the Developer Tools section. Look for entities that contain 'fibaro_id' in their attributes, and you'll find the entity id on the left. diff --git a/source/_components/freebox.markdown b/source/_components/freebox.markdown new file mode 100644 index 00000000000..918e9264aef --- /dev/null +++ b/source/_components/freebox.markdown @@ -0,0 +1,66 @@ +--- +layout: page +title: "Freebox" +description: "Instructions on how to integrate Freebox routers into Home Assistant." +date: 2018-11-15 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: freebox.svg +ha_category: Network +ha_release: "0.85" +ha_iot_class: "Local Polling" +--- + + +The `freebox` component allows you to observe and control [Freebox router](http://www.free.fr/). + +The integration provides: + +* a sensor with traffic metrics +* a device tracker for connected devices + +### {% 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 +freebox: + host: foobar.fbxos.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 %} + +

+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. + +

+ +

+ +Entities are generated, updated and removed automatically with each update from the feed. Each entity defines latitude and longitude and will be shown on the map automatically. The distance in kilometers is available as the state of each entity. + +

+ +

+ +The data is updated every 5 minutes. + +## {% linkable_title Configuration %} + +To integrate the U.S. Geological Survey Earthquake Hazards Program feed, add the following lines to your `configuration.yaml`. + +```yaml +# Example configuration.yaml entry +geo_location: + - platform: usgs_earthquakes_feed + feed_type: 'past_day_all_earthquakes' +``` + +{% configuration %} +feed_type: + description: The U.S. Geological Survey Earthquake Hazards Program provides 20 feeds covering different timeframes and magnitudes. You must select one of the feed types listed below. + type: string + required: true +minimum_magnitude: + description: The minimum magnitude of an earthquake to be included. + required: false + type: float + default: 0.0 +radius: + description: The distance in kilometers around Home Assistant's coordinates in which seismic events are included. + required: false + type: float + default: 50 +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 %} + +### Supported Feed Types + +| Description | Feed Type | +|----------------------------------------|--------------------------------------| +| Past Hour - Significant Earthquakes | `past_hour_significant_earthquakes` | +| Past Hour - M4.5+ Earthquakes | `past_hour_m45_earthquakes` | +| Past Hour - M2.5+ Earthquakes | `past_hour_m25_earthquakes` | +| Past Hour - M1.0+ Earthquakes | `past_hour_m10_earthquakes` | +| Past Hour - All Earthquakes | `past_hour_all_earthquakes` | +| Past Day - Significant Earthquakes | `past_day_significant_earthquakes` | +| Past Day - M4.5+ Earthquakes | `past_day_m45_earthquakes` | +| Past Day - M2.5+ Earthquakes | `past_day_m25_earthquakes` | +| Past Day - M1.0+ Earthquakes | `past_day_m10_earthquakes` | +| Past Day - All Earthquakes | `past_day_all_earthquakes` | +| Past 7 Days - Significant Earthquakes | `past_week_significant_earthquakes` | +| Past 7 Days - M4.5+ Earthquakes | `past_week_m45_earthquakes` | +| Past 7 Days - M2.5+ Earthquakes | `past_week_m25_earthquakes` | +| Past 7 Days - M1.0+ Earthquakes | `past_week_m10_earthquakes` | +| Past 7 Days - All Earthquakes | `past_week_all_earthquakes` | +| Past 30 Days - Significant Earthquakes | `past_month_significant_earthquakes` | +| Past 30 Days - M4.5+ Earthquakes | `past_month_m45_earthquakes` | +| Past 30 Days - M2.5+ Earthquakes | `past_month_m25_earthquakes` | +| Past 30 Days - M1.0+ Earthquakes | `past_month_m10_earthquakes` | +| Past 30 Days - All Earthquakes | `past_month_all_earthquakes` | + + +## {% linkable_title State Attributes %} + +The following state attributes are available for each entity in addition to the standard ones: + +| Attribute | Description | +|--------------------|-------------| +| latitude | Latitude of the earthquake. | +| longitude | Longitude of the earthquake. | +| source | `usgs_earthquakes_feed` to be used in conjunction with `geo_location` automation trigger. | +| external_id | The external ID used in the feed to identify the earthquake in the feed. | +| place | Textual description of named geographic region near to the event. | +| magnitude | Reported magnitude of the earthquake. | +| time | Date and time when this event occurred. | +| updated | Date and time when this event was most recently updated. | +| status | Indicates whether the event has been reviewed by a human: "automatic", "reviewed", "deleted" | +| type | Type of seismic event: "earthquake" or "quarry". | + + +## {% linkable_title Full Configuration %} + +```yaml +# Example configuration.yaml entry +geo_location: + - platform: usgs_earthquakes_feed + feed_type: 'past_month_all_earthquakes' + radius: 50 + minimum_magnitude: 0.0 + latitude: 35.899722 + longitude: -120.432778 +``` diff --git a/source/_components/geofency.md b/source/_components/geofency.md new file mode 100644 index 00000000000..bff78c98327 --- /dev/null +++ b/source/_components/geofency.md @@ -0,0 +1,44 @@ +--- +layout: page +title: "Geofency" +description: "Instructions for how to use Geofency to track devices in Home Assistant." +date: 2017-08-22 19:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: geofency.png +ha_category: Presence Detection +ha_release: 0.83 +ha_iot_class: "Cloud Push" +--- + +This component sets up integration with [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. + +Enabling this component will automatically enable the [Geofency Device Tracker](/components/device_tracker.geofency/). + +To integrate Geofency in Home Assistant, add the following section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +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` component is shown below: + +```yaml +# Example configuration.yaml entry +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:///api/geofency`. Use the default POST format, and make sure to include the API password if you have configured a password in Home Assistant (add `?api_password=` to the end of the URL). Make sure to enable the 'Update Geo-Position' functionality for mobile beacons. diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index 61ffe91ede9..b6165599f75 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -19,6 +19,8 @@ The `google_assistant` component allows you to control things via Google Assista With [Home Assistant Cloud](/cloud/), you can connect your Home Assistant instance in a few simple clicks to Google Assistant. 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/google_assistant/). + ## {% linkable_title Manual setup %} The Google Assistant component requires a bit more setup than most due to the way Google requires Assistant Apps to be set up. @@ -46,11 +48,13 @@ Since release 0.80, the `Authorization Code` type of `OAuth` account linking is - Click 'Save' at the top right corner, then click 'Test' to generate a new draft version of the Test App. 2. Change your `configuration.yaml` file: - Remove `client_id`, `access_token`, `agent_user_id` config from `google_assistant:` since they are no longer needed. -3. Restart Home Assistant, open the `Google Assistant` app on your mobile phone then go to `Settings > Home Control`, re-link `[test] your app name`. -4. A browser will be open and asking you to login to your Home Assistant instance, it will redirect back to `Google Assistant` app right afterward. +3. Restart Home Assistant, open the `Google Home` app on your mobile phone then go to `Account > Settings > Assistant > Home Control`, press the `3 dot icon in the top right > Manage accounts > [test] your app name > Unlink account` Then relink your account by selecting `[test] your app name` again. +4. A browser will open and ask you to login to your Home Assistant instance and will redirect back to the `Google Assistant` app right afterward.

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. Screenshot: Account linking 3. Back on the overview page. Click `Simulator` under `TEST`. It will create a new draft version Test App. You don't have to actually test, but you need to generate this draft version Test App. -4. If you haven't already added the component configuration to `configuration.yaml` file and restarted Home Assistant, you'll be unable to continue until you have. -5. Open the Google Assistant app and go into `Settings > Home Control`. -6. Click the `+` sign, and near the bottom, you should have `[test] your app name`. Selecting that should lead you to a browser to login your Home Assistant instance, then redirect back to a screen where you can set rooms for your devices or nicknames for your devices. +4. Add the `google_assistant` component configuration to your `configuration.yaml` file and restart Home Assistant following the [configuration guide](#configuration) below. +5. Open the Google Home app and go into `Account > Settings > Assistant > Home Control`. +6. Click the `+` sign, and near the bottom, you should have `[test] your app name` listed under 'Add new.' Selecting that should lead you to a browser to login your Home Assistant instance, then redirect back to a screen where you can set rooms for your devices or nicknames for your devices.

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** page from the **Developer Tools** and browse the **Current entities:** listing for all available entities. @@ -22,7 +22,7 @@ By default, every group appears in the HOME tab. If you create a group `default_ # Example configuration.yaml entry group: default_view: - view: yes + view: true icon: mdi:home entities: - group.kitchen @@ -35,7 +35,7 @@ group: upstairs: name: Kids icon: mdi:account-multiple - view: yes + view: true entities: - input_boolean.notify_home - camera.demo_camera @@ -43,13 +43,13 @@ group: - group.garden climate: name: Climate - view: no + view: false entities: - sensor.bedroom_temp - sensor.porch_temp awesome_people: name: Awesome People - view: no + view: false entities: - device_tracker.dad_smith - device_tracker.mom_smith @@ -61,7 +61,7 @@ name: required: false type: string view: - description: "If yes then the entry will be shown as a view (tab) at the top. Groups that are set to `view: yes` cannot be used as entities in other views." + description: "If yes then the entry will be shown as a view (tab) at the top. Groups that are set to `view: true` cannot be used as entities in other views." required: false type: boolean icon: @@ -78,7 +78,7 @@ entities: type: list all: description: Set this to `true` if the group state should only turn *on* if **all** grouped entities are *on*. - required: false + required: false type: boolean {% endconfiguration %} @@ -89,7 +89,7 @@ Example of groups shown as views in the frontend. If all entities in a group are switches or lights then Home Assistant adds a switch at the top of the card that turns them all on/off at once. If you want to hide this switch, set `control` to `hidden`. -You can create views (tabs) that contain other groups (but not other groups which are marked as `view: yes`). +You can create views (tabs) that contain other groups (but not other groups which are marked as `view: true`). Notice in the example below that in order to refer to the group "Living Room", you use `group.living_room` (lowercase and spaces replaced with underscores). ```yaml @@ -101,7 +101,7 @@ Notice in the example below that in order to refer to the group "Living Room", y - binary_sensor.motion_living Bedroom: light.light_bedroom, switch.sleeping Rooms: - view: yes + view: true name: Rooms entities: - group.living_room @@ -132,7 +132,7 @@ customize: group: automation_view: name: Automation - view: yes + view: true entities: - group.all_automations - group.all_scripts @@ -155,7 +155,7 @@ customize: group: automation_view: name: Automation - view: yes + view: true entities: - group.all_automations - group.all_scripts diff --git a/source/_components/hangouts.markdown b/source/_components/hangouts.markdown index 22faaa78aaf..1b14f247abe 100644 --- a/source/_components/hangouts.markdown +++ b/source/_components/hangouts.markdown @@ -12,7 +12,7 @@ ha_category: Hub ha_release: 0.77 --- -This component allows you to send messages to [Google Hangouts](https://hangouts.google.com) conversations, as well as to react to messages in conversations. Reacting to commands is accomplished by firing an event when one of the configured commands is triggered. +This component allows you to send messages to [Google Hangouts](https://hangouts.google.com) conversations, as well as to react to messages in conversations. Reacting to commands is accomplished by firing an event when one of the configured commands is triggered. Home Assistant will impersonate a Smartisan YQ603 phone which will then show up in your Google devices. ## {% linkable_title Setup the component via the frontend %} @@ -105,6 +105,7 @@ The intent `HangoutsHelp` is part of the component and return a list of all sent ## {% linkable_title Adding sentences %} +{% raw %} ```yaml # The Hangouts component hangouts: @@ -123,11 +124,12 @@ hangouts: intent_script: Ping: speech: - text: I know {% raw %}{{ states.hangouts.conversations.state }}{% endraw %} conversations - + text: I know {{ states.hangouts.conversations.state }} conversations ``` +{% endraw %} This configuration will: + - Toggle the light in the given location in a specific conversation. - Return the conversations the bot know. @@ -144,6 +146,7 @@ The following configuration can handle the following sentences: - Change the lights to the color green - Change the lights to the color blue +{% raw %} ```yaml # Example configuration.yaml entry hangouts: @@ -151,7 +154,7 @@ hangouts: ColorLight: sentences: - Change the lights to [the color] {color} -{% raw %} + intent_script: ColorLight: speech: @@ -163,8 +166,8 @@ intent_script: - "{% if color == 'red' %}255{% else %}0{% endif %}" - "{% if color == 'green' %}255{% else %}0{% endif %}" - "{% if color == 'blue' %}255{% else %}0{% endif %}" -{% endraw %} ``` +{% endraw %} ## {% linkable_title Services %} @@ -186,3 +189,41 @@ Sends a message to the given conversations. | message | List of message segments, only the "text" field is required in every segment. [Required] | [{"text":"test", "is_bold": false, "is_italic": false, "is_strikethrough": false, "is_underline": false, "parse_str": false, "link_target": "http://google.com"}, ...] | | data | Extra options | {"image_file": "path"} / {"image_url": "url"} | + +### {% linkable_title Service `hangouts.reconnect` %} + +Reconnects the hangouts bot. + +| Service data attribute | Optional | Description | +|------------------------|----------|--------------------------------------------------| +| | | | + +## {% linkable_title Advanced %} + +### {% linkable_title Automatic reconnect after ip change %} + +The hangouts component can't detect if your ip address changes, so it can't automatic reconnect to the Google servers. This is a workaround for this problem. + +{% raw %} +```yaml +sensor: + - platform: rest + resource: https://api.ipify.org?format=json + name: External IP + value_template: '{{ value_json.ip }}' + scan_interval: 10 + +automation: + - alias: Reconnect Hangouts + trigger: + - entity_id: sensor.external_ip + platform: state + condition: + - condition: template + value_template: '{{ trigger.from_state.state != trigger.to_state.state }}' + - condition: template + value_template: '{{ not is_state("sensor.external_ip", "unavailable") }}' + action: + - service: hangouts.reconnect +``` +{% endraw %} diff --git a/source/_components/hdmi_cec.markdown b/source/_components/hdmi_cec.markdown index 198d89b01bc..d3f711c209c 100644 --- a/source/_components/hdmi_cec.markdown +++ b/source/_components/hdmi_cec.markdown @@ -11,6 +11,9 @@ ha_category: Automation logo: hdmi.png ha_release: 0.23 ha_iot_class: "Local Push" +redirect_from: + - /components/media_player.hdmi_cec/ + - /components/switch.hdmi_cec/ --- The `hdmi_cec` component provides services that allow selecting the active device, powering on all devices, setting all devices to standby and creates switch entities for HDMI devices. Devices are defined in the configuration file by associating HDMI port number and a device name. Connected devices that provide further HDMI ports, such as sound-bars and AVRs are also supported. Devices are listed from the perspective of the CEC-enabled Home Assistant device. Any connected device can be listed, regardless of whether it supports CEC. Ideally the HDMI port number on your device will map correctly the CEC physical address. If it does not, use `cec-client` (part of the `libcec` package) to listen to traffic on the CEC bus and discover the correct numbers. @@ -23,7 +26,7 @@ The computer running Home Assistant must support CEC, and of course be connected ### {% linkable_title libcec %} -[libcec](https://github.com/Pulse-Eight/libcec) must be installed for this component to work. Follow the installation instructions for your environment, provided at the link. `libcec` installs Python 3 bindings by default as a system Python module. If you are running Home Assistant in a [Python virtual environment](/getting-started/installation-virtualenv/), make sure it can access the system module, by either symlinking it or using the `--system-site-packages` flag. +[libcec](https://github.com/Pulse-Eight/libcec) must be installed for this component to work. Follow the installation instructions for your environment, provided at the link. `libcec` installs Python 3 bindings by default as a system Python module. If you are running Home Assistant in a [Python virtual environment](/docs/installation/virtualenv/), make sure it can access the system module, by either symlinking it or using the `--system-site-packages` flag.

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 `

## {% linkable_title Testing your installation %} -* Login to Raspberry Pi +* Login to Raspberry Pi ```bash ssh pi@your_raspberry_pi_ip ``` -* at the command line type: +* at the command line type: ```bash echo scan | cec-client -s -d 1 @@ -169,7 +172,7 @@ action: data: device: Chromecast ``` - + ### {% linkable_title Power On %} Call the `hdmi_cec.power_on` service (no arguments) to power on any devices that support this function. diff --git a/source/_components/history.markdown b/source/_components/history.markdown index f372a33e4a8..c2829753734 100644 --- a/source/_components/history.markdown +++ b/source/_components/history.markdown @@ -134,7 +134,7 @@ you can set the flag `use_include_order` to true. ```yaml # Example configuration.yaml entry using specified entity display order history: - use_include_order: True + use_include_order: true include: entities: - sun.sun diff --git a/source/_components/hlk_sw16.markdown b/source/_components/hlk_sw16.markdown new file mode 100644 index 00000000000..112cd59704e --- /dev/null +++ b/source/_components/hlk_sw16.markdown @@ -0,0 +1,90 @@ +--- +layout: page +title: "HLK-SW16 Relay Module" +description: "Instructions on how to integrate HLK-SW16 relay into Home Assistant." +date: 2018-10-29 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: hlktech.jpg +ha_category: DIY +ha_release: 0.84 +ha_iot_class: "Local Push" +--- + +The [HLK-SW16](http://www.hlktech.net/product_detail.php?ProId=48) by [Hi-Link](http://www.hlktech.net/) is a simple networkable 16 port relay device. + +To enable it, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +hlk_sw16: + relay1: + host: 10.225.225.53 + switches: + 0: + name: relay1-0 + 1: + name: relay1-1 + 2: + name: relay1-2 + 3: + name: relay1-3 + 4: + name: relay1-4 + 5: + name: relay1-5 + 6: + name: relay1-6 + 7: + name: relay1-7 + 8: + name: relay1-8 + 9: + name: relay1-9 + a: + name: relay1-a + b: + name: relay1-b + c: + name: relay1-c + d: + name: relay1-d + e: + name: relay1-e + f: + name: relay1-f +``` + +{% configuration %} +deviceid: + description: The array that contains the HLK-SW16 devices. + required: true + type: map + keys: + host: + description: The IP address or hostname of the HLK-SW16. + required: true + type: string + port: + description: The control port for the relays. + required: false + type: integer + default: 8080 + switches: + description: The array that contains the relays. + required: true + type: map + keys: + relayid: + description: The array that contains the HLK-SW16 relays, each must be a number between 0 and 9 or letter between a and f which each corresponds to a labled relay switch on the HLK-SW16. + required: false + type: map + keys: + name: + description: The name used to display the switch in the frontend. + required: false + type: string + default: relayid +{% endconfiguration %} diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown index d87844743f3..e19a521331b 100644 --- a/source/_components/homekit.markdown +++ b/source/_components/homekit.markdown @@ -1,7 +1,7 @@ --- layout: page title: "HomeKit" -description: "Instructions on how to setup the HomeKit component in Home Assistant." +description: "Instructions on how to set up the HomeKit component in Home Assistant." date: 2018-02-20 17:30 sidebar: true comments: false @@ -12,7 +12,7 @@ ha_release: 0.64 logo: apple-homekit.png --- -The `HomeKit` component allows you to forward entities from Home Assistant to Apple `HomeKit`, so they can be controlled from Apple's `Home` app and `Siri`. Please make sure that you have read the [considerations](#considerations) listed below to save you some trouble later. However if you do encounter issues, checkout the [troubleshooting](#troubleshooting) section. +The `homekit` component allows you to forward entities from Home Assistant to Apple HomeKit, so they can be controlled from Apple's Home app and Siri. Please make sure that you have read the [considerations](#considerations) listed below to save you some trouble later. However if you do encounter issues, check out the [troubleshooting](#troubleshooting) section.

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`
`entity_id(s)` | Set the value for specific `input_text` entities. + ### {% 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 %} + +Here's an example using `input_text` in an action in an automation. + +{% raw %} +```yaml +# Example configuration.yaml entry using 'input_text' in an action in an automation +input_select: + scene_bedroom: + name: Scene + options: + - Select + - Concentrate + - Energize + - Reading + - Relax + - 'OFF' + initial: 'Select' +input_text: + bedroom: + name: Brightness + +automation: + - alias: Bedroom Light - Custom + trigger: + platform: state + entity_id: input_select.scene_bedroom + action: + - service: input_text.set_value + # Again, note the use of 'data_template:' rather than the normal 'data:' if you weren't using an input variable. + data_template: + entity_id: input_text.bedroom + value: "{{ states('input_select.scene_bedroom') }}" +``` +{% endraw %} diff --git a/source/_components/insteon.markdown b/source/_components/insteon.markdown index 03e81cd3072..caa63d5d0de 100644 --- a/source/_components/insteon.markdown +++ b/source/_components/insteon.markdown @@ -51,7 +51,6 @@ To set up an INSTEON Hub model [2242], use the following configuration: # Hub 2242 configuration variables insteon: host: HOST - ip_port: IP_PORT hub_version: 1 ``` @@ -182,7 +181,7 @@ In order for any two Insteon devices to talk with one another, they must be link If you are looking for more advanced options, you can use the [insteonplm_interactive] command line tool that is distributed with the [insteonplm] Python module. Please see the documentation on the [insteonplm] GitHub site. Alternatively, you can download [HouseLinc] which runs on any Windows PC, or you can use [Insteon Terminal] which is open source and runs on most platforms. SmartHome no longer supports HouseLinc, but it still works. Insteon Terminal is a very useful tool but please read the disclaimers carefully, they are important. [understanding linking]: http://www.insteon.com/support-knowledgebase/2015/1/28/understanding-linking -[Development Tools]: https://www.home-assistant.io/docs/tools/dev-tools/ +[Development Tools]: /docs/tools/dev-tools/ [HouseLinc]: https://www.smarthome.com/houselinc.html [Insteon Terminal]: https://github.com/pfrommerd/insteon-terminal [insteonplm_interactive]: https://github.com/nugget/python-insteonplm#command-line-interface diff --git a/source/_components/intent_script.markdown b/source/_components/intent_script.markdown index bf41572753c..f31d44d64c6 100644 --- a/source/_components/intent_script.markdown +++ b/source/_components/intent_script.markdown @@ -26,12 +26,54 @@ intent_script: data_template: message: Hello from an intent! ``` -Configuration variables: Inside an intent we can define these variables: -- **intent** (*Required*): Name of the intent. Multiple entries are possible. - - **speech** (*Optional*): Text or template to return. - - **action** (*Optional*): [Script syntax](/docs/scripts/). - - **async_action** (*Optional*): Set to True to have Home Assistant not wait for the script to finish before returning the intent response. - +{% configuration %} +intent: + description: Name of the intent. Multiple entries are possible. + required: true + type: map + keys: + action: + description: Defines an action to run to intents. + required: false + type: action + async_action: + description: Set to True to have Home Assistant not wait for the script to finish before returning the intent response. + required: false + default: false + type: boolean + card: + description: Card to display. + required: false + type: map + keys: + type: + description: Type of card to display. + required: false + default: simple + type: string + title: + description: Title of the card to display. + required: true + type: template + content: + description: Contents of the card to display. + required: true + type: template + speech: + description: Text or template to return. + required: false + type: map + keys: + type: + description: Type of speech. + required: false + default: plain + type: string + text: + description: Text to speech. + required: true + type: template +{% endconfiguration %} diff --git a/source/_components/isy994.markdown b/source/_components/isy994.markdown index 1c833178215..23452d0b6b7 100644 --- a/source/_components/isy994.markdown +++ b/source/_components/isy994.markdown @@ -30,15 +30,39 @@ isy994: password: ISY_PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The host entry should be in full URL format, eg. http://192.168.10.100:80 -- **username** (*Required*): The username that used to access the ISY interface. -- **password** (*Required*): The password that used to access the ISY interface. -- **sensor_string** (*Optional*): This is the string that is used to identify which devices are to be assumed to be sensors instead of lights of switches. By default, this string is 'sensor'. If this string is found in the device name or folder, Home Assistant will assume it is as a sensor or binary sensor (if the device has on/off or true/false states). This is only necessary for nodes that are not automatically detected as sensors by Home Assistant. Insteon door, window, motion and leak sensors should all be detected automatically. -- **ignore_string** (*Optional*): Any devices that contain this string in their name (or folder path) will be ignored by Home Assistant. They will not become entities at all. The default value is `{IGNORE ME}`. -- **enable_climate** (*Optional*): When enabled, climate measurements from the optional climate module in the ISY994 will show up in Home Assistant as sensors. The default value is `True`. -- **tls** (*Optional*): This entry should reflect the version of TLS that the ISY controller is using for HTTPS encryption. This value can be either 1.1 or 1.2. If this value is not set, it is assumed to be version 1.1. This is the default for most users. ISY994 Pro users may likely be using 1.2. When using HTTPS in the host entry, it is best practice to set this value. +{% configuration %} +host: + description: The host entry should be in full URL format, eg. http://192.168.10.100:80 + required: true + type: string +username: + description: The username that used to access the ISY interface. + required: true + type: string +password: + description: The password that used to access the ISY interface. + required: true + type: string +sensor_string: + description: This is the string that is used to identify which devices are to be assumed to be sensors instead of lights of switches. If this string is found in the device name or folder, Home Assistant will assume it is as a sensor or binary sensor (if the device has on/off or true/false states). This is only necessary for nodes that are not automatically detected as sensors by Home Assistant. Insteon door, window, motion and leak sensors should all be detected automatically. + required: false + type: string + default: sensor +ignore_string: + description: Any devices that contain this string in their name (or folder path) will be ignored by Home Assistant. They will not become entities at all. + required: false + type: string + default: {IGNORE ME} +enable_climate: + description: When enabled, climate measurements from the optional climate module in the ISY994 will show up in Home Assistant as sensors. + required: false + type: string + default: true +tls: + description: This entry should reflect the version of TLS that the ISY controller is using for HTTPS encryption. This value can be either 1.1 or 1.2. If this value is not set, it is assumed to be version 1.1. This is the default for most users. ISY994 Pro users may likely be using 1.2. When using HTTPS in the host entry, it is best practice to set this value. + required: false + type: string +{% endconfiguration %} Once the ISY controller is configured, it will automatically import any binary sensors, covers, fans, lights, locks, sensors and switches it can locate. diff --git a/source/_components/keyboard.markdown b/source/_components/keyboard.markdown index d1324ae76ae..b3bf0d474f1 100644 --- a/source/_components/keyboard.markdown +++ b/source/_components/keyboard.markdown @@ -35,7 +35,7 @@ You may need to install platform-specific [dependencies for PyUserInput](https:/ pip3 install [package name] ``` -#### {% linkable_title Windows %} +### {% linkable_title Windows %} x64 Windows users may have trouble installing pywin through pip. Using an [executable installer](http://sourceforge.net/projects/pywin32/files/pywin32/) should work around this issue. diff --git a/source/_components/keyboard_remote.markdown b/source/_components/keyboard_remote.markdown index f94507ac0e2..b486e00aa8d 100644 --- a/source/_components/keyboard_remote.markdown +++ b/source/_components/keyboard_remote.markdown @@ -25,11 +25,20 @@ keyboard_remote: type: 'key_up' ``` -Configuration variables: - -- **type** (*Required*): Possible values are `key_up`, `key_down`, and `key_hold`. Be careful, `key_hold` will fire a lot of events. -- **device_descriptor** (*Optional*): Path to the local event input device file that corresponds to the keyboard. -- **device_name** (*Optional*): Name of the keyboard device. +{% configuration %} +type: + description: Possible values are `key_up`, `key_down`, and `key_hold`. Be careful, `key_hold` will fire a lot of events. + required: true + type: string +device_description: + description: Path to the local event input device file that corresponds to the keyboard. + required: false + type: string +device_name: + description: Name of the keyboard device. + required: false + type: string +{% endconfiguration %} Either `device_name` or `device_descriptor` must be present in the configuration entry. Indicating a device name is useful in case of repeating disconnections and re-connections of the device (for example, a bluetooth keyboard): the local input device file might change, thus breaking the configuration, while the name remains the same. In case of presence of multiple devices of the same model, `device_descriptor` must be used. @@ -93,10 +102,13 @@ automation: entity_id: media_player.speaker media_content_id: keyboard_connected.wav media_content_type: music - - alias: Keyboard Disconnected + + - alias: Bluetooth Keyboard Disconnected trigger: platform: event event_type: keyboard_remote_disconnected + event_data: + device_name: "00:58:56:4C:C0:91" action: - service: media_player.play_media data: diff --git a/source/_components/knx.markdown b/source/_components/knx.markdown index 4f1b5b2c4a1..9b5f0038255 100644 --- a/source/_components/knx.markdown +++ b/source/_components/knx.markdown @@ -93,7 +93,7 @@ local_ip: ```yaml knx: - fire_event: True + fire_event: true fire_event_filter: ["1/0/*", "6/2,3,4-6/*"] ``` diff --git a/source/_components/konnected.markdown b/source/_components/konnected.markdown index dc7104dba18..b5ed591eda6 100644 --- a/source/_components/konnected.markdown +++ b/source/_components/konnected.markdown @@ -21,7 +21,7 @@ The component currently supports the following device types in Home Assistant: - [Binary Sensor](/components/binary_sensor.konnected/): Wired door and window sensors, motion detectors, glass-break detectors, leak sensors, smoke & CO detectors or any open/close switch. - [Switch](/components/switch.konnected/): Actuate a siren, strobe, buzzer or relay module. -This component requires the [`discovery`](https://www.home-assistant.io/components/discovery) component to be enabled. +This component requires the [`discovery`](/components/discovery) component to be enabled. ### {% linkable_title Configuration %} diff --git a/source/_components/lametric.markdown b/source/_components/lametric.markdown index 6431b954542..6def1722b13 100644 --- a/source/_components/lametric.markdown +++ b/source/_components/lametric.markdown @@ -26,3 +26,20 @@ lametric: client_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx client_secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ``` + +## {% linkable_title Setup Steps %} + +LaMetric needs an OAuth2 `client_id` and `client_secret` from the LaMetric developer portal to use it with Home Assistant. +These are the steps to take: + +1. Log in with your LaMetric device account to [developer.lametric.com](https://developer.lametric.com). +2. Hit the Create button and choose [Notification](https://developer.lametric.com/applications/createsource). +3. Fill in the form. You can put almost anything in the fields, they just need to be populated: + * App Name: Home Assistant + * Description: Home Assistant + * Privacy Policy: http://localhost/ + * Check all permission boxes + * Hit Save +4. You should be directed to your [Notification Apps list](https://developer.lametric.com/applications/sources), click on "Home Assistant", copy your client ID and client Secret and paste into the Home Assistant configuration block in the previous section. +5. Set up some notifications in Home Assistant by following the instructions on the [Lametric Notify](/components/notify.lametric) page. +6. Save all configuration files and restart Home Assistant. diff --git a/source/_components/lcn.markdown b/source/_components/lcn.markdown new file mode 100644 index 00000000000..e5130a00d84 --- /dev/null +++ b/source/_components/lcn.markdown @@ -0,0 +1,157 @@ +--- +layout: page +title: "LCN" +description: "Instructions on how to integrate LCN components with Home Assistant." +date: 2018-11-01 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lcn.png +ha_category: Hub +ha_release: 0.85 +ha_iot_class: "Local Push" +--- + + +The `lcn` integration for Home Assistant allows you to connect to [LCN](http://www.lcn.eu) hardware devices. + +The component requires one unused license of the coupling software LCN-PCHK (version >2.8) and a LCN hardware coupler. Alternatively a LCN-PKE coupler can be used which offers two PCHK licenses. +With this setup sending and receiving commands to and from LCN modules is possible. + + +There is currently support for the following device types within Home Assistant: + +- [Light](/components/light.lcn) + +## {% linkable_title Configuration %} + +To use your LCN system in your installation, add the following lines to your `configuration.yaml` file. +You have to specify at least one ip/port with login credentials for a PCHK host. +Consider to store your credentials in a [secrets.yaml](/docs/configuration/secrets). + + +```yaml +lcn: + connections: + - name: myhome + host: 192.168.2.41 + port: 4114 + username: lcn + password: lcn + + lights: + - name: Bedroom light + address: myhome.s0.m7 + output: output1 + dimmable: true + transition: 5 +``` + +{% configuration %} +connections: + description: List of your connections + required: true + type: map + keys: + host: + description: IP address of the LCN-PCHK host. + required: true + type: string + port: + description: Port of the LCN-PCHK host. + required: true + type: integer + username: + description: Login username for the LCN-PCHK host. + required: true + type: string + password: + description: Login password for the LCN-PCHK host. + required: true + type: string + name: + description: Optional connection identifier. If omited, the connections will be named consecutively as _pchk_, _pchk1_, _pchk2_, ... + required: false + default: pchk + type: string + sk_num_tries: + description: Segment coupler scans. Increase this number if you have at least one segment coupler in your system. + required: false + default: 0 + type: integer + dim_mode: + description: "Dimming mode for connected modules. The operation mode is programmed into the LCN modules by the LCN-PRO software and depends on their firmware. If you experience unexpected dimming behavior, the connection is probably in the wrong operation mode. Possible values: _steps50_, _steps200_" + required: false + default: steps50 + type: string + +lights: + description: List of your lights. + required: true + type: map + keys: + name: + description: Name of the light. + required: true + type: string + address: + description: "[Address](/components/lcn#lcn-addresses) of the module/group." + required: true + type: string + output: + description: "Light source ([OUTPUT_PORT](/components/lcn#ports))." + required: true + type: string + dimmable: + description: Enable the dimming feature for this light + required: false + type: bool + default: false + transition: + description: Transition (ramp) time in seconds. + required: false + type: int + default: 0 +{% endconfiguration %} + + + +## {% linkable_title LCN Addresses %} +LCN hardware devices connected to the LCN bus are called _modules_. LCN modules are addressed by their numeric id in the range (5..254). + +Modules can be arranged in _segments_. Segments can be addressed by their numeric id (5..128) or 0 (= no segment exist) or 3 (= target all segments). + +LCN Modules within the _same_ segment can be grouped by their group id (5..254) or 3 (= target all groups.) + +The LCN component allow the connection to more than one hardware coupler. In this case it has to be specified which hardware coupler should be used for addressing the specified module. + +Whenever the address of a module or a group has to be specified, it can be addressed using one of the following syntaxes: + +Example for modules: +``` +connid.s000.m007 +connid.s0.m7 +s0.m7 +0.7 +``` + +Example for groups: +``` +connid.s000.g007 +connid.s0.g7 +s0.g7 +0.g7 +``` + +Leading zeroes in the segment id or module/group id can be omitted. If the `connection_id` is omitted, the first connection defined in the [configuration](#configuration) will be used. + + +## {% linkable_title LCN Constants %} +The platforms and service calls use several predefined constants as parameters. + +#### {% linkable_title Ports %} + +| Constant | Values | +| -------- | ------ | +| OUTPUT_PORT | `output1`, `output2`, `output3`, `output4` | diff --git a/source/_components/lifx.markdown b/source/_components/lifx.markdown index 11c478c6421..a630595c4dd 100644 --- a/source/_components/lifx.markdown +++ b/source/_components/lifx.markdown @@ -11,6 +11,7 @@ logo: lifx.png ha_category: Light ha_iot_class: "Local Polling" ha_release: 0.81 +redirect_from: /components/light.lifx/ --- The `lifx` component allows you to integrate your [LIFX](https://www.lifx.com) into Home Assistant. @@ -82,7 +83,7 @@ Run a flash effect by changing to a color and then back. | `brightness` | Integer between 0 and 255 for how bright the color should be. | `period` | The duration of a single pulse (in seconds). | `cycles` | The total number of pulses. -| `mode` | The way to change between colors. Valid modes: `blink` (default), `breathe`, `ping`, `strobe`, `solid`. +| `mode` | The way to change between colors. Valid modes: `blink` (default - direct transition to new color for 'period' time with original color between cycles), `breathe` (color fade transition to new color and back to original), `ping` (short pulse of new color), `strobe` (light turns off between color changes), `solid`(light does not return to original color between cycles). | `power_on` | Set this to False to skip the effect on lights that are turned off (defaults to True). ### {% linkable_title Service `light.lifx_effect_colorloop` %} diff --git a/source/_components/light.avion.markdown b/source/_components/light.avion.markdown index 7290fcedb01..6abf6e2fd61 100644 --- a/source/_components/light.avion.markdown +++ b/source/_components/light.avion.markdown @@ -37,6 +37,8 @@ light: - platform: avion ``` +There are two ways to configure this component: username & password, or list of devices. You must choose one. + {% configuration %} username: description: The username used in the Avion app. If username and password are both provided, all associated switches will automatically be added to your configuration. @@ -59,6 +61,10 @@ devices: description: The API Key. required: true type: string + id: + description: The ID of the dimmer switch. Only needed for independent control of multiple devices. + required: true + type: string {% endconfiguration %} ## {% linkable_title Full example %} @@ -73,7 +79,21 @@ light: 00:21:4D:00:00:01: name: Light 1 api_key: YOUR_API_KEY - 00:21:3D:20:00:a1: - name: Light 2 - api_key: YOUR_API_KEY +``` + +For independent control of multiple devices, you must specify each device's ID (integer starting with 1). Each switch's ID can be guessed or detected from the Avi-On API. + +```yaml +# Manual device configuration.yaml entry +light: + - platform: avion + devices: + 00:21:4D:00:00:01: + name: Light 1 + api_key: YOUR_API_KEY + id: 1 + 00:21:4D:00:00:02: + name: Light 1 + api_key: YOUR_API_KEY + id: 2 ``` diff --git a/source/_components/light.blinksticklight.markdown b/source/_components/light.blinksticklight.markdown index bdd41852704..405032f5e30 100644 --- a/source/_components/light.blinksticklight.markdown +++ b/source/_components/light.blinksticklight.markdown @@ -16,9 +16,17 @@ ha_iot_class: "Local Polling" The `blinkstick` platform lets you control your [Blinkstick](https://www.blinkstick.com/) lights from within Home Assistant. +## {% linkable_title Setup %} + +To use your Blinkstick, you need to allow the access to the device for [non-root users](https://github.com/arvydas/blinkstick-python#permission-problems-in-linux-and-mac-os-x). + +```bash +$ sudo blinkstick --add-udev-rule +``` + ## {% linkable_title Configuration %} -To add blinkstick to your installation, add the following to your `configuration.yaml` file: +To add a Blinkstick to your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_components/light.deconz.markdown b/source/_components/light.deconz.markdown index 8bafa152397..f8949b0432b 100644 --- a/source/_components/light.deconz.markdown +++ b/source/_components/light.deconz.markdown @@ -27,3 +27,5 @@ The `entity_id` names will be `light.device_name`, where `device_name` is define - OSRAM Gardenpole RGBW - Philips Hue White A19 - Philips Hue White Ambiance A19 +- Philips Hue Hue White ambiance Milliskin (recessed spotlight) LTW013 +- Busch Jaeger ZigBee Light Link univ. relai (6711 U) with ZigBee Light Link control element 6735-84 diff --git a/source/_components/light.decora.markdown b/source/_components/light.decora.markdown index 44df220f9da..41b6d979081 100644 --- a/source/_components/light.decora.markdown +++ b/source/_components/light.decora.markdown @@ -13,7 +13,7 @@ logo: leviton.png ha_release: 0.37 --- -Support for the Decora Bluetooth dimmer switch [Leviton](http://www.leviton.com/OA_HTML/SectionDisplay.jsp?section=76697&minisite=10251). +Support for the Decora Bluetooth dimmer switch [Leviton](https://www.leviton.com/en/products/residential/dimmers/automation-smart-home/decora-digital-with-bluetooth-dimmers#t=Products&sort=%40wcs_site_tree_rank%20ascending&layout=card). The API key can be obtained by downloading [this git repository](https://github.com/mjg59/python-decora) and running the `read_key.py` script with the Bluetooth address of the switch as the first argument. Hold the switch in the off position until the green status LED starts flashing before running the script. The output is the API key. diff --git a/source/_components/light.fibaro.markdown b/source/_components/light.fibaro.markdown new file mode 100644 index 00000000000..0932c0f1edc --- /dev/null +++ b/source/_components/light.fibaro.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "Fibaro Lights" +description: "Instructions on how to integrate Fibaro lights 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/) lights 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/light.flux_led.markdown b/source/_components/light.flux_led.markdown index 426feb16ae1..33efa06d021 100644 --- a/source/_components/light.flux_led.markdown +++ b/source/_components/light.flux_led.markdown @@ -80,7 +80,7 @@ Will automatically search and add all lights on start up: # Example configuration.yaml entry light: - platform: flux_led - automatic_add: True + automatic_add: true ``` Will add two lights with given name and create an automation rule to randomly set color each 45 seconds: diff --git a/source/_components/light.homeworks.markdown b/source/_components/light.homeworks.markdown new file mode 100644 index 00000000000..f82da7636b2 --- /dev/null +++ b/source/_components/light.homeworks.markdown @@ -0,0 +1,21 @@ +--- +layout: page +title: "Homeworks Light" +description: "How to use Lutron Homeworks Series 4 & 8 lights." +date: 2018-10-05 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lutron.png +ha_category: Light +featured: false +ha_release: 0.85 +ha_iot_class: "Local Push" +--- + +`homeworks` lights let you monitor and control Lutron Homeworks Series 4 & 8 dimmers. + +

+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:///api/mailgun?api_password=` +To be able to receive webhooks from Mailgun, 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 Mailgun. Click on configure. Follow the instructions on the screen to configure Mailgun. + +You will get a URL of the following format: `https:///api/webhook/9940e99a26fae4dcf6fe0a478124b6b58b578ea4c55c9a584beb1c9f5057bb91`. To receive webhooks from Mailgun, you need to provide that url as a callback URL in the Webhooks tab of the Mailgun Control Panel. + +Events coming in from Mailgun will be available as events in Home Assistant and are fired as `mailgun_message_received`. The [data specified by Mailgun](https://documentation.mailgun.com/en/latest/api-events.html#event-structure) will be available as the event data. You can use this event to trigger automations. + +You can then consume that information with the following automation: + +```yaml +automation: + trigger: + platform: event + event_type: mailgun_message_received + event_data: + action: call_service + action: + service: light.turn_on + entity_id: light.office +``` To send messages, use the [Mailgun notify platform][notify]. diff --git a/source/_components/matrix.markdown b/source/_components/matrix.markdown index 5d22a661c3e..f3f72b63aa1 100644 --- a/source/_components/matrix.markdown +++ b/source/_components/matrix.markdown @@ -85,6 +85,7 @@ If the command is a word command, the `data` field contains a list of the comman This example also uses the [matrix `notify` platform](/components/notify.matrix/). +{% raw %} ```yaml # The Matrix component matrix: @@ -96,6 +97,7 @@ matrix: - "#someothertest:matrix.org" commands: - word: testword + name: testword rooms: - "#someothertest:matrix.org" - expression: "My name is (?P.*)" @@ -126,9 +128,11 @@ automation: action: service: notify.matrix_notify data_template: - message: "Hello {{trigger.event.data.name}}" + message: "Hello {{trigger.event.data.args['name']}}" ``` +{% endraw %} This configuration will: + - Listen for "!testword" in the room "#someothertest:matrix.org" (and *only*) there. If such a message is encountered, it will answer with "It looks like you wrote !testword" into the "#hasstest:matrix.org" channel. - Listen in both rooms for any message matching "My name is " and answer with "Hello " into "#hasstest:matrix.org". diff --git a/source/_components/media_extractor.markdown b/source/_components/media_extractor.markdown index 60b03259a0e..33c788c3dc8 100644 --- a/source/_components/media_extractor.markdown +++ b/source/_components/media_extractor.markdown @@ -13,7 +13,6 @@ ha_release: 0.49 ha_qa_scale: internal --- - The `media_extractor` component gets a stream URL and sends it to a media player entity. This component can extract entity specific streams if configured accordingly.

@@ -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 :5555`, background the process -- Navigate to http://localhost:5556/devices/list - - You will get an output similar to below: -```json -{ - "devices": { - "default": { - "host": "192.168.1.153:5555", - "state": "play" - } - } -} -``` -- The `"default"` above is the device name you will need to use for your `configuration.yaml` -- Configure Home Assistant as follows: To add FireTV to your installation, Note your device name, and add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry media_player: + # a device that does not require ADB authentication - platform: firetv + name: Fire TV 1 + host: 192.168.0.111 + + # a device that does require ADB authentication + - platform: firetv + name: Fire TV 2 + host: 192.168.0.222 + adbkey: "/config/android/adbkey" + + # a device for which getting the current app (source) and the running apps (sources) cause issues + - platform: firetv + name: Fire TV 3 + host: 192.168.0.123 + get_source: false + get_sources: false ``` {% configuration %} host: - description: "The host where `firetv-server` is running." - required: false + description: The IP address for your Fire TV device. + required: true type: string - default: localhost -port: - description: "The port where `firetv-server` is running." - required: false - type: integer - default: 5556 -device: - description: The device ID. - required: false - type: string - default: default name: description: The friendly name of the device. required: false - type: string default: Amazon Fire TV + type: string +port: + description: The port for your Fire TV device. + required: false + default: 5555 + type: integer +adbkey: + description: The path to your `adbkey` file. Note that the file `adbkey.pub` must be in the same directory. + required: false + type: string +get_source: + description: Whether or not to retrieve the current app as the source. + required: false + default: true + type: boolean +get_sources: + description: Whether or not to retrieve the running apps as the list of sources. + required: false + default: true + type: boolean {% endconfiguration %} +### {% linkable_title ADB Authentication (for Fire TV devices with recent software) %} + +If you get a "Device authentication required, no keys available" error when trying to set up Fire TV, then you'll need to create an adbkey and add its path to your configuration. Follow the instructions on this page to connect to your Fire TV from your computer: [Connecting to Fire TV Through adb](https://developer.amazon.com/zh/docs/fire-tv/connecting-adb-to-device.html). +

-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.

+Once you've successfully connected to your Fire TV via the command `adb connect `, the files `adbkey` and `adbkey.pub` will be created on your computer. The default locations for these files are (from [https://developer.android.com/studio/command-line/adb](https://developer.android.com/studio/command-line/adb)): + +* Linux and Mac: `$HOME/.android.` +* Windows: `%userprofile%\.android.` + +Copy the `adbkey` and `adbkey.pub` files to your Home Assistant folder and add the path to the `adbkey` file to your configuration. + +#### ADB Troubleshooting + +If you receive the error message `Issue: Error while setting up platform firetv` in your log when trying to set up a Fire TV device with an ADB key, then there is probably an issue with your ADB key. Here are some possible causes. + +1. ADB is not enabled on your Fire TV. To remedy this, enable ADB by following the instructions above. + +2. Your key is not pre-authenticated. Before using the `adbkey` in Home Assistant, you _**must**_ connect to your Fire TV device using the ADB binary and tell the Fire TV to always allow connections from this computer. For more information, see the section "ADB Authentication (for Fire TV devices with recent software)" above. + +3. Home Assistant does not have the appropriate permissions for the `adbkey` file and so it is not able to use it. Once you fix the permissions, the component should work. + +4. You are already connected to the Fire TV via ADB from another device. Only one device can be connected, so disconnect the other device, restart the Fire TV (for good measure), and then restart Home Assistant. diff --git a/source/_components/media_player.gstreamer.markdown b/source/_components/media_player.gstreamer.markdown index 288ef12120c..ad23c571d68 100644 --- a/source/_components/media_player.gstreamer.markdown +++ b/source/_components/media_player.gstreamer.markdown @@ -23,10 +23,16 @@ media_player: - platform: gstreamer ``` -Configuration variables: - -- **name** (*Optional*): Name the player. -- **pipeline** (*Optional*): `gst` pipeline description. +{% configuration %} +name: + description: Name of the media player. + required: false + type: string +pipeline: + description: A `gst` pipeline description. + required: false + type: string +{% endconfiguration %} Only the `music` media type is supported. @@ -56,7 +62,7 @@ If you're running Home Assistant in a virtual environment, you'll need to symlin ```bash ln -s /path/to/your/installation/of/gi /path/to/your/venv/lib/python3.4/site-packages -``` +``` On a Raspberry Pi, you may need to add the Home Assistant user to the `audio` group: @@ -65,7 +71,7 @@ sudo usermod -a -G audio ``` ## {% linkable_title Example Usage %} - + ### {% linkable_title Using with TTS %} To play TTS on your local computer (for example, if you have speakers attached to your Raspberry Pi: diff --git a/source/_components/media_player.harman_kardon_avr.markdown b/source/_components/media_player.harman_kardon_avr.markdown new file mode 100644 index 00000000000..23b993c0a51 --- /dev/null +++ b/source/_components/media_player.harman_kardon_avr.markdown @@ -0,0 +1,52 @@ +--- +layout: page +title: "Harman Kardon AVR Network Receivers" +description: "Instructions on how to integrate Harman Kardon AVR Network Receivers into Home Assistant." +date: 2018-11-20 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: harman_kardon.png +ha_category: Media Player +ha_iot_class: "Local Polling" +ha_release: 0.85.0 +--- + +The `harman_kardon_avr` platform allows you to control Harman Kardon Network Receivers from Home Assistant. + +Supported devices: + +- Harman Kardon AVR-151S +- Other Harman Kardon AVR receivers (untested) + +To add a Harman Kardon Network Receiver to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: harman_kardon_avr + host: IP_ADDRESS +``` + +{% configuration %} +host: + description: IP address of the device, e.g., 192.168.1.32. + required: true + type: string +name: + description: Name of the device. If not set, Harman Kardon AVR is used. + required: false + default: Harman Kardon AVR + type: string +port: + description: The port to talk to the receiver. If not set, 10025 is used. + required: false + default: 10025 + type: integer +{% endconfiguration %} + +A few notes: + +- The newest firmware automatically shuts down the AVR after a certain amount of time. The AVR is then not available on the network anymore, so the 'on' command will not work. +- The AVR has no endpoints to determine the volume, muted, playing etc., so if the remote control is used, HA will not know the new states of the device. \ No newline at end of file diff --git a/source/_components/media_player.kodi.markdown b/source/_components/media_player.kodi.markdown index c6095b921c9..5985000f6fe 100644 --- a/source/_components/media_player.kodi.markdown +++ b/source/_components/media_player.kodi.markdown @@ -19,6 +19,8 @@ The `kodi` platform allows you to control a [Kodi](http://kodi.tv/) multimedia s The preferred way to set up the Kodi platform is by enabling the [discovery component](/components/discovery/) which requires enabled [web interface](https://kodi.wiki/view/Web_interface) on your Kodi installation. +## {% linkable_title Configuration %} + In case the discovery does not work, or you need specific configuration variables, you can add the following to your `configuration.yaml` file: ```yaml @@ -80,18 +82,26 @@ timeout: default: 5 {% endconfiguration %} +## {% linkable_title Services %} + ### {% linkable_title Service `kodi_add_to_playlist` %} Add music to the default playlist (i.e. playlistid=0). | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | no | Name(s) of the Kodi entities where to add the media. -| `media_type` | yes | Media type identifier. It must be one of SONG or ALBUM. -| `media_id` | no | Unique Id of the media entry to add (`songid` or `albumid`). If not defined, `media_name` and `artist_name` are needed to search the Kodi music library. -| `media_name` | no| Optional media name for filtering media. Can be 'ALL' when `media_type` is 'ALBUM' and `artist_name` is specified, to add all songs from one artist. -| `artist_name` | no | Optional artist name for filtering media. +| `entity_id` | no | Name(s) of the Kodi entities where to add the media. | +| `media_type` | yes | Media type identifier. It must be one of SONG or ALBUM. | +| `media_id` | no | Unique Id of the media entry to add (`songid` or `albumid`). If not defined, `media_name` and `artist_name` are needed to search the Kodi music library. | +| `media_name` | no| Optional media name for filtering media. Can be 'ALL' when `media_type` is 'ALBUM' and `artist_name` is specified, to add all songs from one artist. | +| `artist_name` | no | Optional artist name for filtering media. | +#### {% linkable_title Service `media_player/kodi_set_shuffle` %} + +| Service data attribute | Optional | Description | +|------------------------|----------|-------------| +| `entity_id` | yes | Target a specific media player. It must be of type kodi. | +| `shuffle_on` | no | True/false for shuffle on/off. | ### {% linkable_title Service `kodi_call_method` %} @@ -99,10 +109,9 @@ Call a [Kodi JSONRPC API](http://kodi.wiki/?title=JSON-RPC_API) method with opti | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | no | Name(s) of the Kodi entities where to run the API method. -| `method` | yes | Name of the Kodi JSONRPC API method to be called. -| any other parameter | no | Optional parameters for the Kodi API call. - +| `entity_id` | no | Name(s) of the Kodi entities where to run the API method. | +| `method` | yes | Name of the Kodi JSONRPC API method to be called. | +| any other parameter | no | Optional parameters for the Kodi API call. | ### {% linkable_title Event triggering %} @@ -240,6 +249,7 @@ This example and the following requires to have the [script.json-cec](https://gi #### Simple script to turn on the PVR in some channel as a time function +{% raw %} ```yaml script: play_kodi_pvr: @@ -249,14 +259,13 @@ script: service: media_player.turn_on data: entity_id: media_player.kodi - - alias: Play TV channel service: media_player.play_media data_template: entity_id: media_player.kodi media_content_type: "CHANNEL" media_content_id: > - {% raw %}{% if (now().hour < 14) or ((now().hour == 14) and (now().minute < 50)) %} + {% if (now().hour < 14) or ((now().hour == 14) and (now().minute < 50)) %} 10 {% elif (now().hour < 16) %} 15 @@ -268,8 +277,9 @@ script: 15 {% else %} 10 - {% endif %}{% endraw %} + {% endif %} ``` +{% endraw %} #### Trigger a Kodi video library update diff --git a/source/_components/media_player.monoprice.markdown b/source/_components/media_player.monoprice.markdown index 75e41d9b631..eda0f9e9f23 100644 --- a/source/_components/media_player.monoprice.markdown +++ b/source/_components/media_player.monoprice.markdown @@ -36,17 +36,26 @@ media_player: 16: name: Guest Bedroom sources: - 1: + 1: name: Sonos 5: name: Chromecast ``` -Configuration variables: - -- **port** (*Required*): The serial port to which Monoprice amplifier is connected -- **zones** (*Required*): This is the list of zones available. Valid zones are 11,12,13,14,15,16. In case multiple Monoprice devices are stacked together the list of valid zones is extended by 21,22,23,24,25,26 for the second device and 31,32,33,34,35,36 for the third device. Each zone must have a name assigned to it. -- **sources** (*Required*): The list of sources available. Valid source numbers are 1,2,3,4,5,6. Each source number corresponds to the input number on the Monoprice amplifier. Similar to zones, each source must have a name assigned to it. +{% configuration %} +port: + description: The serial port to which Monoprice amplifier is connected. + required: true + type: string +zones: + description: This is the list of zones available. Valid zones are 11, 12, 13, 14, 15 or 16. In case multiple Monoprice devices are stacked together the list of valid zones is extended by 21, 22, 23, 24, 25 or 26 for the second device and 31, 32, 33, 34, 35 or 36 for the third device. Each zone must have a name assigned to it. + required: true + type: integer +sources: + description: The list of sources available. Valid source numbers are 1, 2, 3, 4, 5 or 6. Each source number corresponds to the input number on the Monoprice amplifier. Similar to zones, each source must have a name assigned to it. + required: true + type: integer +{% endconfiguration %} ### {% linkable_title Service `snapshot` %} diff --git a/source/_components/media_player.nad.markdown b/source/_components/media_player.nad.markdown index 41684f72129..25152678fa7 100644 --- a/source/_components/media_player.nad.markdown +++ b/source/_components/media_player.nad.markdown @@ -13,7 +13,6 @@ ha_release: 0.36 ha_iot_class: "Local Polling" --- - The `nad` platform allows you to control a [NAD receiver](http://nadelectronics.com) through RS232 from Home Assistant. To add an NAD receiver to your installation, add the following to your `configuration.yaml` file: @@ -25,13 +24,32 @@ media_player: serial_port: /dev/ttyUSB0 ``` -Configuration variables: - -- **serial_port** (*Required*): The serial port . Default is `/dev/ttyUSB0` -- **name** (*Optional*): Name of the device. Default is NAD Receiver. -- **min_volume** (*optional*): Minimum volume in dB to use with the slider. Default is `-92` -- **max_volume** (*optional*): Maximum volume in dB to use with the slider. Default is `-20` -- **sources** (*Optional*): A list of mappings from source to source name. Valid sources are `1 to 10`. +{% configuration %} +serial_port: + description: The serial port. + required: true + default: "/dev/ttyUSB0" + type: string +name: + description: Name of the device. + required: false + default: NAD Receiver + type: string +min_volume: + description: Minimum volume in dB to use with the slider. + required: false + default: -92 + type: integer +max_volume: + description: Maximum volume in dB to use with the slider. + required: false + default: -20 + type: integer +sources: + description: A list of mappings from source to source name. Valid sources are `1 to 10`. + required: false + type: [list, string] +{% endconfiguration %} The min_volume and max_volume are there to protect you against misclicks on the slider so you will not blow up your speakers when you go from -92dB to +20dB. You can still force it to go higher or lower than the values set with the plus and minus buttons. diff --git a/source/_components/media_player.nadtcp.markdown b/source/_components/media_player.nadtcp.markdown index e673e4472d8..046ba913216 100644 --- a/source/_components/media_player.nadtcp.markdown +++ b/source/_components/media_player.nadtcp.markdown @@ -13,7 +13,6 @@ ha_release: 0.47 ha_iot_class: "Local Polling" --- - The `nadtcp` platform allows you to control the D7050 and C338 from Home Assistant via WiFi. Note that it has only been tested with the D 7050. To add a NAD amplifier to your installation, add the following to your `configuration.yaml` file: @@ -21,18 +20,35 @@ To add a NAD amplifier to your installation, add the following to your `configur ```yaml # Example configuration.yaml entry media_player: - platform: nadtcp + - platform: nadtcp host: 192.168.0.112 ``` -Configuration variables: - -- **host** (*Required*): The IP address of your amplifier. -- **name** (*Optional*): Name of the device. Default is NAD amplifier. -- **min_volume** (*optional*): Minimum volume in dB to use with the slider. Default is `-60` -- **max_volume** (*optional*): Maximum volume in dB to use with the slider. Default is `-10` -- **volume_step** (*Optional*): The amount in dB you want to increase the volume with when pressing volume up/down. Default is 4 dB. +{% configuration %} +host: + description: The IP address of your amplifier. + required: true + type: string +name: + description: Name of the device. + required: false + default: NAD amplifier + type: string +min_volume: + description: Minimum volume in dB to use with the slider. + required: false + default: -60 + type: integer +max_volume: + description: Maximum volume in dB to use with the slider. + required: false + default: -10 + type: integer +volume_step: + description: The amount in dB you want to increase the volume with when pressing volume up/down. + required: false + default: 4 + type: integer +{% endconfiguration %} The maximum volume level of the D 7050 amplifier is +10 db, minimum is -90. - - diff --git a/source/_components/media_player.onkyo.markdown b/source/_components/media_player.onkyo.markdown index 0737d7a9124..d934f92b1f2 100644 --- a/source/_components/media_player.onkyo.markdown +++ b/source/_components/media_player.onkyo.markdown @@ -80,6 +80,20 @@ List of source names: - xm - sirius +### {% linkable_title Service `onkyo_select_hdmi_output` %} + +Changes HDMI output of your receiver + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of a single `entity_id` that will change output. +| `hdmi_output` | no | The desired output code. + +Accepted values are: +'no', 'analog', 'yes', 'out', 'out-sub', 'sub', 'hdbaset', 'both', 'up' +which one to use seems to vary depending on model so you will have to try them out. +( For model TX-NR676E it seems to be 'out' for main, 'out-sub' for sub, and 'sub' for both ) + ### {% linkable_title Example `play_media` script %} The `play_media` function can be used in script to play radio station by preset number. @@ -102,3 +116,19 @@ script: media_content_id: "1" ``` + +### {% linkable_title Example `onkyo_select_hdmi_output` script %} + +```yaml +# Example onkyo_select_hdmi_output script +# +script: + hdmi_sub: + alias: "Hdmi out projector" + sequence: + - service: media_player.onkyo_select_hdmi_output + service_data: + entity_id: media_player.onkyo + hdmi_output: out-sub + +``` \ No newline at end of file diff --git a/source/_components/media_player.panasonic_bluray.markdown b/source/_components/media_player.panasonic_bluray.markdown new file mode 100644 index 00000000000..4791e384a7e --- /dev/null +++ b/source/_components/media_player.panasonic_bluray.markdown @@ -0,0 +1,51 @@ +--- +layout: page +title: "Panasonic Blu-Ray Player" +description: "Instructions on how to integrate a Panasonic Blu-Ray player into Home Assistant." +date: 2018-11-13 20:48 +sidebar: true +comments: false +sharing: true +footer: true +logo: panasonic.png +ha_category: Media Player +ha_iot_class: "Local Polling" +ha_release: 0.83 +--- + +The `panasonic_bluray` platform allows you to control a Panasonic Blu-Ray player. Note that the device must be on the same subnet as Home Assistant; connections from a different subnet will return an error. + +Currently known supported models: + +- DMP-BDT120 +- DMP-BDT220 +- DMP-BDT221 +- DMP-BDT320 +- DMP-BDT500 +- DMP-BBT01 + +If your model is not on the list, then give it a try, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.github.io/blob/current/source/_components/media_player.panasonic_bluray.markdown). + +Example configuration: + +```yaml +media_player: + - platform: panasonic_bluray + host: 192.168.0.10 +``` + +{% configuration %} +host: + description: The IP of the Panasonic Blu-Ray device, e.g., `192.168.0.10`. + required: true + type: string +name: + description: The name you would like to give to the Panasonic Blu-Ray device. + required: false + default: Panasonic Blu-Ray + type: string +{% endconfiguration %} + +### {% linkable_title Supported operations %} + +- These devices support play, pause, stop and power on/off operations. They will also report the current status, title duration and current playing position. diff --git a/source/_components/media_player.panasonic_viera.markdown b/source/_components/media_player.panasonic_viera.markdown index a0ae8610a30..4da75316fb5 100644 --- a/source/_components/media_player.panasonic_viera.markdown +++ b/source/_components/media_player.panasonic_viera.markdown @@ -44,12 +44,26 @@ media_player: host: 192.168.0.10 ``` -Configuration variables: - -- **host** (*Required*): The IP of the Panasonic Viera TV, e.g., `192.168.0.10`. -- **port** (*Optional*): The port number of your Panasonic Viera TV. Defaults to `55000`. -- **mac** (*Optional*): The MAC address of your Panasonic Viera TV, e.g., `AA:BB:CC:DD:99:1A`. -- **name** (*Optional*): The name you would like to give to the Panasonic Viera TV. +{% configuration %} +host: + description: The IP of the Panasonic Viera TV, e.g., `192.168.0.10`. + required: true + type: string +port: + description: The port number of your Panasonic Viera TV. + required: false + default: 55000 + type: integer +mac: + description: The MAC address of your Panasonic Viera TV, e.g., `AA:BB:CC:DD:99:1A`. + required: false + type: string +name: + description: The name you would like to give to the Panasonic Viera TV. + required: false + default: Panasonic Viera TV + type: string +{% endconfiguration %} ### {% linkable_title Example `play_media` script %} diff --git a/source/_components/media_player.pandora.markdown b/source/_components/media_player.pandora.markdown index 76c04061252..f84bfd41f14 100644 --- a/source/_components/media_player.pandora.markdown +++ b/source/_components/media_player.pandora.markdown @@ -24,7 +24,7 @@ This media player uses the [Pianobar command-line Pandora client](https://github The version of pianobar that comes with Jessie has a bug, so you have to build a more recent version. The latest version depends on a recent version of libraries associated with ffmpeg, so you should make sure you go through the backport process documented in [The FFmpeg component](/components/ffmpeg/) before doing this. Install the following basic dependencies: ```bash -$ sudo apt-get install git libao-dev libgcrypt11-dev libfaad-dev libmad0-dev libjson0-dev make pkg-config libcurl4-openssl-dev +$ sudo apt-get install git libao-dev libgcrypt11-dev libfaad-dev libmad0-dev libjson-c-dev make pkg-config libcurl4-openssl-dev ``` And now install the backported ffmpeg-related libraries (note that if you're using an older version of ffmpeg for other things on this machine, you may encounter issues after doings this): diff --git a/source/_components/media_player.plex.markdown b/source/_components/media_player.plex.markdown index 45db859c70e..ef76c47304d 100644 --- a/source/_components/media_player.plex.markdown +++ b/source/_components/media_player.plex.markdown @@ -15,7 +15,7 @@ ha_iot_class: "Local Polling" --- -The `plex` platform allows you to connect a [Plex Media Server](https://plex.tv) to Home Assistant. It will allow you to control media playback and see the current playing item. +The `plex` platform allows you to connect to a [Plex Media Server](https://plex.tv). Once connected, [Plex Clients](https://www.plex.tv/apps-devices/) playing media from the connected Plex Media Server will show up as [Media Players](/components/media_player/) in Home Assistant. It will allow you to control media playback and see the current playing item. ## {% linkable_title Setup %} @@ -43,7 +43,7 @@ media_player: - platform: plex ``` -In case [discovery](/components/discovery/) does not work (GDM disabled or non-local plex server), you can create `~/.homeassistant/plex.conf` manually. +In case [discovery](/components/discovery/) does not work (GDM disabled or non-local Plex server), you can create the `plex.conf` manually and placed it in your [configuration directory ](/docs/configuration/) or `/config/` if you are running Hass.io. ```json {"IP_ADDRESS:PORT": {"token": "TOKEN", "ssl": false, "verify": true}} @@ -175,3 +175,4 @@ Plays a song, playlist, TV episode, or video on a connected client. ``` If this occurs, check the setting `Server`>`Network`>`Secure connections` in your Plex Media Server: if it is set to `Preferred` or `Required`, you may need to manually set the `ssl` and `verify` booleans in the `plex.conf` file to, respectively, `true` and `false`. See the **"Setup"** section above for details. +* Movies must be located under 'Movies' section in the Plex library to properly get 'playing' state. diff --git a/source/_components/media_player.russound_rio.markdown b/source/_components/media_player.russound_rio.markdown index 7a63ab7c666..c431cbbec1d 100644 --- a/source/_components/media_player.russound_rio.markdown +++ b/source/_components/media_player.russound_rio.markdown @@ -27,8 +27,18 @@ media_player: name: Russound ``` -Configuration variables: - -- **host** (*Required*): The IP of the TCP gateway -- **port** (*Optional*): The port of the TCP gateway (default: 9621) -- **name** (*Required*): The name of the device +{% configuration %} +host: + description: The IP of the TCP gateway. + required: true + type: string +port: + description: The port of the TCP gateway. + required: false + default: 9621 + type: integer +name: + description: The name of the device. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/media_player.russound_rnet.markdown b/source/_components/media_player.russound_rnet.markdown index 9dd90d45d79..c8bd43a1739 100644 --- a/source/_components/media_player.russound_rnet.markdown +++ b/source/_components/media_player.russound_rnet.markdown @@ -15,7 +15,7 @@ ha_iot_class: "Local Polling" The `russound_rnet` platform allows you to control Russound devices that make use of the RNET protocol. -This has initially been tested against a Russound CAV6.6 unit with six zones and six sources. +This has initially been tested against a Russound CAV6.6 unit with six zones and six sources. It will also work with a Russound CAA66, but be sure to use a null-modem cable. Connecting to the Russound device is only possible by TCP, you can make use of a TCP to Serial gateway such as [tcp_serial_redirect](https://github.com/pyserial/pyserial/blob/master/examples/tcp_serial_redirect.py) @@ -46,10 +46,25 @@ media_player: - name: Sky+ ``` -Configuration variables: - -- **host** (*Required*): The IP of the TCP gateway -- **port** (*Required*): The port of the TCP gateway -- **name** (*Required*): The name of the device -- **zones** (*Required*): This is the list of zones available -- **sources** (*Required*): The list of sources available, these must be in order as they are connected to the device +{% configuration %} +host: + description: The IP of the TCP gateway. + required: true + type: string +port: + description: The port of the TCP gateway. + required: true + type: integer +name: + description: The name of the device. + required: true + type: string +zones: + description: This is the list of zones available. + required: true + type: integer +sources: + description: The list of sources available, these must be in order as they are connected to the device. + required: true + type: list +{% endconfiguration %} diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index 160b26b83b7..2568eef1730 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -20,8 +20,7 @@ The `samsungtv` platform allows you to control a When the TV is first connected, you will need to accept Home Assistant on the TV to allow communication. -To add a TV to your installation, -add the following to your `configuration.yaml` file: +To add a TV to your installation without relying on the [discovery component](/components/discovery/), add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -59,52 +58,57 @@ Currently known supported models: - C7700 - D5500 +- D6300SF - D6500 +- D6505 - D7000 - D8000 -- ES5500 -- ES6800 -- F6300 -- F6500 - EH5300 - EH5600 -- F6400AF +- ES5500 +- ES6300 +- ES6800 +- F4580 +- F6300 - F6400 +- F6400AF +- F6500 - F8000BF -- D6505 -- D6300SF -- U6000 (port must be set to 8001) -- U6300 (port must be set to 8001, and `pip3 install websocket-client` must be executed) - K5579 (port must be set to 8001, On/Off, Forward/Backward, Volume control, but no Play button) +- K5600AK (partially supported, turn on works but state is not updated) - K6500AF (port must be set to 8001) - KS7005 (port must be set to 8001, and `pip3 install websocket-client` must be executed, MAC address must be provided, On/Off, Volume are OK, no channel change) +- KS7502 (port must be set to 8001, and `pip3 install websocket-client` must be executed, turn on doesn't work, turn off works fine) - KS8000 (port must be set to 8001, and `pip3 install websocket-client` must be executed) - KS8005 (port must be set to 8001, and `pip3 install websocket-client` must be executed) +- KS8500 (port must be set to 8001, and `pip3 install websocket-client` must be executed) - KU6020 (port must be set to 8001, and `pip3 install websocket-client` must be executed) - KU6100 (port must be set to 8001, and `pip3 install websocket-client` must be executed) - KU6290 (port must be set to 8001) +- KU6400U (port must be set to 8001, and `pip3 install websocket-client` must be executed) - KU7000 (port must be set to 8001) -- NU8000 -- MU6170UXZG (port must be set to 8001, and `pip3 install websocket-client` must be executed) -- KS7502 (port must be set to 8001, and `pip3 install websocket-client` must be executed, turn on doesn't work, turn off works fine) -- K5600AK (partially supported, turn on works but state is not updated) - M5620 (port must be set to 8001, and `pip3 install websocket-client` must be executed) -- UE65KS8005 (port must be set to 8001, On/Off, Forward/Backward, Volume are OK, but no Play button) -- UE6199UXZG (port must be set to 8001, On/Off, Forward/Backward, Volume control, but no Play button) -- Q7F (port must be set to 8001, MAC must be specified for Power On) -- UE40KU6400U (port must be set to 8001, and `pip3 install websocket-client` must be executed) +- MU6170UXZG (port must be set to 8001, and `pip3 install websocket-client` must be executed) - NU7400 (port set to 8001 and `pip3 install websocket-client` executed) +- NU8000 +- Q7F (port must be set to 8001, MAC must be specified for Power On) +- U6000 (port must be set to 8001) +- U6300 (port must be set to 8001, and `pip3 install websocket-client` must be executed) +- D7000 +- UE6199UXZG (port must be set to 8001, On/Off, Forward/Backward, Volume control, but no Play button) +- UE65KS8005 (port must be set to 8001, On/Off, Forward/Backward, Volume are OK, but no Play button) Currently tested but not working models: - J5200 - Unable to see state and unable to control - J5500 - State is always "on" and unable to control (but port 8001 *is* open) +- J6200 - State is always "on" and unable to control (but port 8001 *is* open) - J6300 - State is always "on" and unable to control (but port 8001 *is* open) -- JU7000 - Unable to see state and unable to control (but port 8001 *is* open) -- JU7500 - Unable to see state and unable to control - JS8005 - State tracking working but unable to control (but port 8001 *is* open) - JS9000 - State is always "on" and unable to control (but port 8001 *is* open) - JS9500 - State is always "on" and unable to control (but port 8001 *is* open) +- JU7000 - Unable to see state and unable to control (but port 8001 *is* open) +- JU7500 - Unable to see state and unable to control - MU6300 - Port set to 8001, `pip3 install websocket-client` must be executed, turning on works, status not working reliably, turning off is not permanent (it comes back on) None of the 2014 (H) and 2015 (J) model series (e.g., J5200) will work, @@ -117,7 +121,7 @@ The first letter (U, P, L, H & K) represent the screen type, e.g., LED or Plasma. The second letter represents the region, E is Europe, N is North America and A is Asia & Australia. The two numbers following that represent the screen size. -If you add your model remember to remove these before adding them to the list. +If you add your model remember to remove these first 4 characters before adding to the list. Changing channels can be done by calling the `media_player.play_media` service with the following payload: diff --git a/source/_components/media_player.songpal.markdown b/source/_components/media_player.songpal.markdown index 0fd9a73f72c..1dbfc0dd8a9 100644 --- a/source/_components/media_player.songpal.markdown +++ b/source/_components/media_player.songpal.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: sony.png ha_category: Media Player -ha_iot_class: "Local Polling" +ha_iot_class: "Local Push" ha_release: 0.65 --- diff --git a/source/_components/media_player.spotify.markdown b/source/_components/media_player.spotify.markdown index 775f1beb3d5..3ba710b06d8 100644 --- a/source/_components/media_player.spotify.markdown +++ b/source/_components/media_player.spotify.markdown @@ -19,30 +19,32 @@ The `spotify` media player platform allows you to control ## {% linkable_title Prerequisites %} -- Spotify account. -- Spotify Application, properly configured +- Spotify account +- Spotify application, properly configured (see below)

-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.

-To create the required Spotify Application: +To create the required Spotify application: - Login to [Spotify Developer](https://developer.spotify.com) - Visit the [My Applications](https://developer.spotify.com/my-applications/#!/applications) page - Select **Create An App**. Enter any name and description. Once your application is created, view it and copy your **Client ID** and **Client Secret**, which are used in the Home Assistant configuration file. -- Add a **Redirect URI** in the following forms: +- Add a **Redirect URI** in one of the following forms: - No SSL: + If you are not using SSL: `http://:/api/spotify` - If using SSL: + If you are using SSL: `https://:/api/spotify` The URL is whatever you use to access Home Assistant from outside your network (including port if applicable). -- Click **Save** after adding the URI. You may also need to set the `base_url` attribute of the [HTTP Component](/components/http/). +- Click **Save** after adding the URI. + +You will likely also need to set the `base_url` attribute of the [HTTP Component](/components/http/). This should be set using the same base URL as the redirect URI, e.g., if you used a domain name (not local IP) in the redirect, then use the same domain name in your `base_url`. ## {% linkable_title Configuration %} @@ -62,17 +64,18 @@ media_player: {% configuration %} client_id: - description: Client ID from your Spotify Application. + description: Client ID from your Spotify application. required: true type: string client_secret: - description: Client Secret from your Spotify Application. + description: Client Secret from your Spotify application. required: true type: string cache_path: - description: Path to cache authentication token (defaults to configuration directory). + description: Path to cache authentication token. required: false type: string + default: .spotify-token-cache aliases: description: "Dictionary of device ids to be aliased, handy for devices that Spotify cannot properly determine the device name of. New devices will be logged to the `info` channel for ease of aliasing." required: false @@ -84,29 +87,27 @@ aliases: After the prerequisites and configuration are complete, restart Home Assistant. A **Spotify** configurator element will be available. Follow the instructions to authorize Home Assistant to access your Spotify account. A Spotify media player -will then appear. If Spotify prompts you to download a file after completing +will then appear. If you are prompted to download a file after completing authorization, discard the download. It is not needed. ## {% linkable_title Sources %} The sources are based on if you have streamed to these devices before in Spotify. If you don't have any sources, then simply stream from your phone to -another device in your house, Bluetooth, echo, etc. Once you do the sources will -show up in the developer console as a device to cast/stream to. Also know that -the devices won't show up in the dev-console as sources unless they are powered -on as well. +another device in your house: Bluetooth, echo, etc. Once you do, the sources will +show up in the developer console as a device to cast/stream to. The devices won't show up in the dev-console as sources unless they are powered on as well. -## {% linkable_title URI Links For Playlists/Etc %} -You can send playlists to spotify via the "media_content_type": "playlist" and -"media_content_id": "spotify:user:spotify:playlist:37i9dQZF1DWSkkUxEhrBdF" -which are a part of the +## {% linkable_title URI Links For Playlists/Etc. %} +You can send playlists to spotify via the `"media_content_type": "playlist"` and something like (depending on your content ID) +`"media_content_id": "spotify:user:spotify:playlist:37i9dQZF1DWSkkUxEhrBdF"` +which are part of the [media_player.play_media](/components/media_player/#service-media_playerplay_media) -service, you can test this from the services +service. You can test this from the services control panel in the Home Assistant frontend. -In this example this is a URI link to the Reggae Infusions playlist, -[this support document from Spotify](https://support.spotify.com/us/article/sharing-music/) +The above playlist example is a URI link to the "Reggae Infusions" playlist. +[This support document from Spotify](https://support.spotify.com/us/article/sharing-music/) explains how to get this URI value to use for playlists in the Spotify component. -## {% linkable_title Unsupported devices %} +## {% linkable_title Unsupported Devices %} -- **Sonos**: Although its a Spotify Connect device, it is not supported by the official Spotify API. +- **Sonos**: Although Sonos is a Spotify Connect device, it is not supported by the official Spotify API. diff --git a/source/_components/media_player.webostv.markdown b/source/_components/media_player.webostv.markdown index f321a4807f9..ed629734aac 100644 --- a/source/_components/media_player.webostv.markdown +++ b/source/_components/media_player.webostv.markdown @@ -128,7 +128,7 @@ media_player: turn_on_action: service: wake_on_lan.send_magic_packet data: - mac: "B4-E6-2A-1E-11-0F" + mac: "B4:E6:2A:1E:11:0F" ``` Any other [actions](/docs/automation/action/) to power on the device can be @@ -145,7 +145,7 @@ remembering to split them per line into your `sources:` configuration. ### {% linkable_title Change channel through play_media service %} The `play_media` service can be used in a script to switch to the specified tv -channel. It selects the best matching cannel according to the `media_content_id` +channel. It selects the best matching channel according to the `media_content_id` parameter: 1. Channel number *(i.e. '1' or '6')* diff --git a/source/_components/modbus.markdown b/source/_components/modbus.markdown index 75581a49746..e08cd84e03a 100644 --- a/source/_components/modbus.markdown +++ b/source/_components/modbus.markdown @@ -112,6 +112,13 @@ timeout: | ------- | ----------- | | write_register | Write register. Requires `unit`, `address` and `value` fields. `value` can be either single value or an array | +#### {% linkable_title Service Data Attributes %} + +| Attribute | Description | +| --------- | ----------- | +| unit | Slave address (set to 255 you talk to Modbus via TCP) | +| address | Address of the Register (e.g., 138) | +| value | An array of 16-bit values. Might need reverse ordering. E.g., to set 0x0004 you might need to set `[4,0]` | ## {% linkable_title Building on top of Modbus %} diff --git a/source/_components/mqtt_statestream.markdown b/source/_components/mqtt_statestream.markdown index 8b1afaa89d5..d1bcb8c642f 100644 --- a/source/_components/mqtt_statestream.markdown +++ b/source/_components/mqtt_statestream.markdown @@ -27,21 +27,50 @@ mqtt_statestream: publish_timestamps: true ``` -Configuration variables: +{% configuration %} +base_topic: + description: Base topic used to generate the actual topic used to publish. + required: true + type: string +publish_attributes: + description: Publish attributes of the entity as well as the state. + required: false + default: false + type: boolean +publish_timestamps: + description: Publish the last_changed and last_updated timestamps for the entity. + required: false + default: false + type: boolean +exclude: + description: Configure which components should be excluded from recordings. See *Include/Exclude* section below for details. + required: false + type: list + keys: + entities: + description: The list of entity ids to be excluded from recordings. + required: false + type: list + domains: + description: The list of domains to be excluded from recordings. + required: false + type: list +include: + description: Configure which components should be included in recordings. If set, all other entities will not be recorded. + required: false + type: list + keys: + entities: + description: The list of entity ids to be included from recordings. + required: false + type: list + domains: + description: The list of domains to be included from recordings. + required: false + type: list +{% endconfiguration %} -- **base_topic** (*Required*): Base topic used to generate the actual topic used to publish. -- **publish_attributes** (*Optional*): Publish attributes of the entity as well as the state. -Default is false. -- **publish_timestamps** (*Optional*): Publish the last_changed and last_updated timestamps for the entity. -Default is false. -- **exclude** (*Optional*): Configure which components should be excluded from recordings. See *Include/Exclude* section below for details. - - **entities** (*Optional*): The list of entity ids to be excluded from recordings. - - **domains** (*Optional*): The list of domains to be excluded from recordings. -- **include** (*Optional*): Configure which components should be included in recordings. If set, all other entities will not be recorded. - - **entities** (*Optional*): The list of entity ids to be included from recordings. - - **domains** (*Optional*): The list of domains to be included from recordings. - -## Operation +## {% linkable_title Operation %} When any Home Assistant entity changes, this component will publish that change to MQTT. @@ -54,9 +83,9 @@ If that entity also has an attribute called `brightness`, the component will als All states and attributes are passed through JSON serialization before publishing. **Please note** that this causes strings to be quoted (e.g., the string 'on' will be published as '"on"'). You can access the JSON deserialized values (as well as unquoted strings) at many places by using `value_json` instead of `value`. -The last_updated and last_changed values for the entity will be published to `homeassistant/light/master_bedroom_dimmer/last_updated` and `homeassistant/light/master_bedroom_dimmer/last_changed`, respectively. The timestamps are in ISO 8601 format - for example, `2017-10-01T23:20:30.920969+00:00`. +The last_updated and last_changed values for the entity will be published to `homeassistant/light/master_bedroom_dimmer/last_updated` and `homeassistant/light/master_bedroom_dimmer/last_changed`, respectively. The timestamps are in ISO 8601 format - for example, `2017-10-01T23:20:30.920969+00:00`. -## Include/exclude +## {% linkable_title Include/exclude %} The **exclude** and **include** configuration variables can be used to filter the items that are published to MQTT. diff --git a/source/_components/mychevy.markdown b/source/_components/mychevy.markdown index a737ba764a4..f5574e12b27 100644 --- a/source/_components/mychevy.markdown +++ b/source/_components/mychevy.markdown @@ -13,7 +13,7 @@ ha_release: 0.62 ha_iot_class: "Cloud Polling" --- -The `mychevy` component communicates with the [my.chevrolet](https://my.chevrolet.com) website using selenium to log in as your user and screen scrape the data provided. GM does not make it easy to sign up for any official development program, so this provides a workaround to get access to your data. +The `mychevy` component communicates with the [my.chevrolet](https://my.chevrolet.com) website using the javascript API that the website uses (as of Dec 2018). The mychevy website has been known to be both unstable (interfaces changing somewhat willy nilly) and have substantial outages. So be forwarned in using this component. This component provides the following platforms: @@ -40,20 +40,20 @@ password: description: The password for your given my.chevrolet account. required: true type: string +country: + description: Which country's servers to contact. Supports 'us' or 'ca'. + required: false + default: us + type: string {% endconfiguration %} -### {% linkable_title Installation %} - -Because this uses selenium behind the scenes, installation is more complicated than merely `pip` install. See the [installation instructions](https://github.com/sdague/mychevy). - ### {% linkable_title Limitations %} The architecture of the GM automotive networking imposes some limitations on the functionality of the component. The OnStar network link is very slow, and takes 1 - 3 minutes to get information back from the car. As such the mychevy component only polls every 30 minutes to not overwhelms that connection. -The OnStar network (or more specifically the gateway used by the my.chevrolet website) appears to suffer more than most networks when the car is a) in a garage, and b) it's cold outside (like < 15 degrees F). One of the provided sensors is a status sensor which indicates if we got connectivity with the car on the last polling cycle or not. - -The "API" for this is written by web scraping. As such, it only currently is known to work if you have a Chevy Bolt EV, and only 1 Chevy car connected to OnStar. Patches for extended support should go to the https://github.com/sdague/mychevy project first, then Home Assistant can be extended. +The OnStar network (or more specifically the gateway used by the my.chevrolet website) appears to suffer more than most networks when the car is a) in a garage, and b) it's cold outside (like < 15 degrees F). One of the provided sensors is a status sensor which indicates if we got connectivity with the car on the last polling cycle or not. +The "API" for this is written through using some existing API calls from the Javascript web user interfae. As such, it only currently is known to work if you have a Chevy Bolt EV or a Chevy Volt, and only 1 Chevy car connected to OnStar. Patches for extended support should go to the [https://github.com/sdague/mychevy](https://github.com/sdague/mychevy) project first, then Home Assistant can be extended. diff --git a/source/_components/mythicbeastsdns.markdown b/source/_components/mythicbeastsdns.markdown new file mode 100644 index 00000000000..bb96e904097 --- /dev/null +++ b/source/_components/mythicbeastsdns.markdown @@ -0,0 +1,43 @@ +--- +layout: page +title: "Mythic Beasts DNS" +description: "Keep your mythic beasts DNS updated" +date: 2018-11-09 14:57 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Network +ha_release: 0.85 +ha_iot_class: "Cloud Push" +logo: mythic_beasts.png +--- + +With the `mythicbeastsdns` component you can automatically update your dynamic DNS entry at [Mythic Beasts](https://www.mythic-beasts.com/). + +## {% linkable_title Configuration %} + +To use the component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +mythicbeastsdns: + host: YOUR_HOST + domain: YOUR_DOMAIN + password: YOUR_API_KEY +``` + +{% configuration %} + host: + description: The first part, or subdomain that you want to be dynamic. + required: true + type: string + domain: + description: Your domain, e.g., `example.com`. + required: true + type: string + password: + description: The password for your domain. You can set this by clicking "DNS API" on the domain page. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/ness_alarm.markdown b/source/_components/ness_alarm.markdown new file mode 100644 index 00000000000..216c2582aca --- /dev/null +++ b/source/_components/ness_alarm.markdown @@ -0,0 +1,75 @@ +--- +layout: page +title: "Ness Alarm" +description: "Instructions on how to integrate a Ness D8x/D16x alarm system with Home Assistant." +date: 2018-11-25 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ness.png +ha_category: Alarm +ha_release: 0.85 +ha_iot_class: "Local Push" +--- + +The `ness_alarm` component will allow Home Assistant users who own a Ness D8x/D16x alarm system to leverage their alarm system and its sensors to provide Home Assistant with information about their homes. Connectivity between Home Assistant and the alarm is accomplished through a IP232 module that must be connected to the alarm. + +There is currently support for the following device types within Home Assistant: + +- [Binary Sensor](/components/binary_sensor.ness_alarm/): Reports on zone statuses +- [Alarm Control Panel](/components/alarm_control_panel.ness_alarm/): Reports on alarm status, and can be used to arm/disarm the system + +The module communicates via the [Ness D8x/D16x ASCII protocol](http://www.nesscorporation.com/Software/Ness_D8-D16_ASCII_protocol.pdf). + +## {% linkable_title Configuration %} + +A `ness_alarm` section must be present in the `configuration.yaml` file and contain the following options as required: + +```yaml +# Example configuration.yaml entry +ness_alarm: + host: alarm.local + port: 2401 + zones: + - name: Garage + id: 1 + - name: Storeroom + id: 2 + - name: Kitchen + id: 3 + - name: Front Entrance + id: 4 + - name: Front Door + id: 5 + type: door +``` + +{% configuration %} +host: + description: The hostname of the IP232 module on your home network. + required: true + type: string +port: + description: The port on which the IP232 module listens for clients. + required: true + type: integer +zones: + description: List of zones to add + required: false + type: list + keys: + zone_id: + description: ID of the zone on the alarm system (i.e Zone 1 -> Zone 16). + required: true + type: integer + name: + description: Name of the zone. + required: true + type: string + type: + description: The zone type. Can be any [binary_sensor device class](/components/binary_sensor/#device-class). + required: false + default: motion + type: string +{% endconfiguration %} diff --git a/source/_components/nest.markdown b/source/_components/nest.markdown index e935935d043..60a2a1e0824 100644 --- a/source/_components/nest.markdown +++ b/source/_components/nest.markdown @@ -70,53 +70,110 @@ structure: type: list {% endconfiguration %} -### {% linkable_title Services %} +### {% linkable_title Service `set_away_mode` %} -Currently there is a single `nest.set_mode` service available to switch between -"away" and "home" modes. This service requires a `home_mode` param and has an -optional `structure` param. While setting "away" mode, an estimated arrival time -can also be set with `eta`, `eta_window`, and `trip_id` parameters. +You can use the service `nest/set_away_mode` to set the structure(s) to "Home" or "Away". -- **home_mode** (*Required*): `home` or `away` -- **structure** (*Optional*): Structure(s). Default apply to all structures connected with Home Assistant. -- **eta** (*Optional*): Estimated Time of Arrival from now. -- **eta_window** (*Optional*): ETA window (default is 1 minute). -- **trip_id** (*Optional*): Unique ID for the trip. Using an existing trip ID will update that trip's ETA. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `away_mode` | no | String, must be `away` or `home`. +| `structure` | yes | String, will default to all configured Nest structures if not specified. +Examples: ```yaml # Example script to set away, no structure specified so will execute for all -set_nest_away: - sequence: - - service: nest.set_mode - data: - home_mode: away +script: + nest_set_away: + sequence: + - service: nest.set_away_mode + data: + away_mode: away ``` ```yaml # Example script to set home, structure specified -set_nest_home: - sequence: - - service: nest.set_mode - data: - home_mode: home - structure: - - Building +script: + nest_set_home: + sequence: + - service: nest.set_away_mode + data: + away_mode: home + structure: + - Apartment +``` + +### {% linkable_title Service `set_eta` %} + +You can use the service `nest/set_eta` to set or update the estimated time of arrival window. Calling this service will automatically set the structure(s) to "Away". Structures must have an associated Nest thermostat in order to use ETA function. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `eta` | no | Time period, estimated time of arrival from now. +| `eta_window` | yes | Time period, estimated time of arrival window. Default is 1 minute. +| `trip_id` | yes | String, unique ID for the trip. Default is auto-generated using a timestamp. Using an existing `trip_id` will update that trip's ETA. +| `structure` | yes | String, will default to all configured Nest structures if not specified. + +Examples: + +```yaml +# Example script to set ETA, no structure specified so will execute for all +script: + nest_set_eta: + sequence: + - service: nest.set_eta + data: + eta: 00:10:30 + trip_id: Leave Work ``` ```yaml -# Example script to set eta, structure specified -set_nest_eta: - sequence: - - service: nest.set_mode - data: - home_mode: away - structure: - - Building - eta: 00:10:30 - eta_window: 00:05 +# Example script to update ETA and specify window, structure specified +script: + nest_update_eta: + sequence: + - service: nest.set_eta + data: + eta: 00:11:00 + eta_window: 00:05 + trip_id: Leave Work + structure: + - Apartment ``` -{% linkable_title Troubleshooting %} +### {% linkable_title Service `cancel_eta` %} + +You can use the service `nest/cancel_eta` to cancel an existing estimated time of arrival window. Structures must have an associated Nest thermostat in order to use ETA function. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `trip_id` | no | String, unique ID for the trip. Using an existing `trip_id` will update that trip's ETA. +| `structure` | yes | String, will default to all configured Nest structures if not specified. + +Examples: + +```yaml +# Example script to cancel ETA, no structure specified so will execute for all +script: + nest_cancel_eta: + sequence: + - service: nest.cancel_eta + data: + trip_id: Leave Work +``` + +```yaml +# Example script to cancel ETA, structure specified +script: + nest_cancel_eta: + sequence: + - service: nest.cancel_eta + data: + trip_id: Leave Work + structure: + - Apartment +``` + +### {% linkable_title Troubleshooting %} - If you're getting [rickrolled](https://www.youtube.com/watch?v=dQw4w9WgXcQ) instead of being able to see your Nest cameras, you may not have set up your developer account's permissions correctly. Go back through and make sure you've selected read/write under every category that it's an option. diff --git a/source/_components/no_ip.markdown b/source/_components/no_ip.markdown index 8456c6678dc..6fd472b8de5 100644 --- a/source/_components/no_ip.markdown +++ b/source/_components/no_ip.markdown @@ -12,9 +12,9 @@ ha_category: Network ha_release: 0.57 --- -With the `no_ip` component you can keep your [NO-IP.com](https://www.noip.com) record up to date. - +With the `no_ip` component you can keep your current IP address in sync with your [NO-IP.com](https://www.noip.com) hostname or domain. +Note that it does not confirm your hostname (as is required periodically for free domain names); you will still need to do that manually. To use the component in your installation, add the following to your `configuration.yaml` file: @@ -28,7 +28,7 @@ no_ip: {% configuration %} domain: - description: Your FQDN. + description: Your fully qualified domain name (FQDN). required: true type: string username: diff --git a/source/_components/notify.apns.markdown b/source/_components/notify.apns.markdown index dcad472dbb1..0396724efec 100644 --- a/source/_components/notify.apns.markdown +++ b/source/_components/notify.apns.markdown @@ -11,11 +11,16 @@ ha_category: Notifications ha_release: 0.31 --- - The `apns` platform uses the Apple Push Notification service (APNS) to deliver notifications from Home Assistant. +## {% linkable_title Setup %} + To use the APNS service you will need an Apple developer account and you will need to create an app to receive push notifications. For more information, see the Apple developer documentation. +## {% linkable_title Configuration %} + +To enable APNS notifications, add the following lines to your `configuration.yaml`: + ```yaml # Example configuration.yaml entry notify: @@ -25,22 +30,35 @@ notify: topic: topic ``` -Configuration variables: - -- **name** (*Required*): The name of the notifier. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **cert_file** (*Required*): The certificate to use to authenticate with the APNS service. -- **topic** (*Required*): The app bundle ID specified in the certificate. -- **sandbox** (*Optional*): If true notifications will be sent to the sandbox (test) notification service. Default false. +{% configuration %} +name: + description: he name of the notifier. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: true + type: string +cert_file: + description: The certificate to use to authenticate with the APNS service. + required: true + type: string +topic: + description: The app bundle ID specified in the certificate. + required: true + type: string +sandbox: + description: If true notifications will be sent to the sandbox (test) notification service. + required: false + default: false + type: boolean +{% endconfiguration %} The APNS platform will register two services, `notify.NOTIFIER_NAME` and `notify.apns_NOTIFIER_NAME`. -### notify.apns_NOTIFIER_NAME +### {% linkable_title notify.apns_NOTIFIER_NAME %} This service will register device IDs with Home Assistant. In order to receive a notification a device must be registered. The app on the device can use this service to send an ID to Home Assistant during startup, the ID will be stored in `[NOTIFIER_NAME]_apns.yaml`. See `didRegisterForRemoteNotificationsWithDeviceToken` in the [Apple developer documentation](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/#//apple_ref/occ/intfm/UIApplicationDelegate/application:didRegisterForRemoteNotificationsWithDeviceToken:) for more information about how to obtain a device ID. -### notify.NOTIFIER_NAME +### {% linkable_title notify.NOTIFIER_NAME %} This service will send messages to a registered device. The following parameters can be used: diff --git a/source/_components/notify.aws_lambda.markdown b/source/_components/notify.aws_lambda.markdown index ef3c5f1d841..7efd2f837c6 100644 --- a/source/_components/notify.aws_lambda.markdown +++ b/source/_components/notify.aws_lambda.markdown @@ -32,14 +32,34 @@ notify: region_name: 'us-east-1' ``` -Configuration variables: - -- **aws_access_key_id** (*Required if aws_secret_access_key is provided*): Your AWS Access Key ID. If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name`. -- **aws_secret_access_key** (*Required if aws_access_key_id is provided*): Your AWS Secret Access Key. If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`. -- **profile_name** (*Optional*): A credentials profile name. -- **region_name** (*Required*): The region identifier to connect to. The default is `us-east-1`. -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **context** (*Optional*): An optional dictionary you can provide to pass custom context through to the Lambda function. The `context` dictionary (if any) is combined with the same data available at the `/api/config` HTTP API route. +{% configuration %} +aws_access_key_id: + description: Your AWS Access Key ID. If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name`. + required: Required if aws_secret_access_key is provided + type: string +aws_secret_access_key: + description: Your AWS Secret Access Key. If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`. + required: Required if aws_access_key_id is provided + type: string +profile_name: + description: A credentials profile name. + required: false + type: string +region_name: + description: The region identifier to connect to. + required: true + default: "`us-east-1`" + type: string +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +context: + description: An optional dictionary you can provide to pass custom context through to the Lambda function. The `context` dictionary (if any) is combined with the same data available at the `/api/config` HTTP API route. + required: false + type: string +{% endconfiguration %} ### {% linkable_title Usage %} diff --git a/source/_components/notify.aws_sns.markdown b/source/_components/notify.aws_sns.markdown index 2903fbfcaa5..d53d9dd5147 100644 --- a/source/_components/notify.aws_sns.markdown +++ b/source/_components/notify.aws_sns.markdown @@ -32,13 +32,30 @@ notify: region_name: 'us-east-1' ``` -Configuration variables: - -- **aws_access_key_id** (*Required if aws_secret_access_key is provided*): Your AWS Access Key ID. If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name`. -- **aws_secret_access_key** (*Required if aws_access_key_id is provided*): Your AWS Secret Access Key. If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`. -- **profile_name** (*Optional*): A credentials profile name. -- **region_name** (*Required*): The region identifier to connect to. The default is `us-east-1`. -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. +{% configuration %} +aws_access_key_id: + description: Your AWS Access Key ID. If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name`. + required: Required if aws_secret_access_key is provided + type: string +aws_secret_access_key: + description: Your AWS Secret Access Key. If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`. + required: Required if aws_access_key_id is provided + type: string +profile_name: + description: A credentials profile name. + required: false + type: string +region_name: + description: The region identifier to connect to. + required: true + default: us-east-1 + type: string +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +{% endconfiguration %} ### {% linkable_title Usage %} diff --git a/source/_components/notify.aws_sqs.markdown b/source/_components/notify.aws_sqs.markdown index 6aa9288f7bf..f2b3a340f5c 100644 --- a/source/_components/notify.aws_sqs.markdown +++ b/source/_components/notify.aws_sqs.markdown @@ -32,13 +32,30 @@ notify: region_name: 'us-east-1' ``` -Configuration variables: - -- **aws_access_key_id** (*Required if aws_secret_access_key is provided*): Your AWS Access Key ID. If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name`. -- **aws_secret_access_key** (*Required if aws_access_key_id is provided*): Your AWS Secret Access Key. If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`. -- **profile_name** (*Optional*): A credentials profile name. -- **region_name** (*Required*): The region identifier to connect to. The default is `us-east-1`. -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. +{% configuration %} +aws_access_key_id: + description: Your AWS Access Key ID. If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name`. + required: Required if aws_secret_access_key is provided + type: string +aws_secret_access_key: + description: Your AWS Secret Access Key. If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`. + required: Required if aws_access_key_id is provided + type: string +profile_name: + description: A credentials profile name. + required: false + type: string +region_name: + description: The region identifier to connect to. + required: true + default: us-east-1 + type: string +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +{% endconfiguration %} ### {% linkable_title Usage %} diff --git a/source/_components/notify.ciscospark.markdown b/source/_components/notify.ciscospark.markdown index fb55b90a6f9..d9bcbc5e42a 100644 --- a/source/_components/notify.ciscospark.markdown +++ b/source/_components/notify.ciscospark.markdown @@ -32,11 +32,20 @@ notify: roomid: CISCO_SPARK_ROOMID ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **token** (*Required*): Your development token. -- **roomid** (*Required*): The Room ID. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +token: + description: Your development token. + required: true + type: string +roomid: + description: The Room ID. + required: true + type: string +{% endconfiguration %} To use notifications, please see the [getting started with automation page](/getting-started/automation/). - diff --git a/source/_components/notify.clickatell.markdown b/source/_components/notify.clickatell.markdown index 8ac5d9a614c..e7ed3b902db 100644 --- a/source/_components/notify.clickatell.markdown +++ b/source/_components/notify.clickatell.markdown @@ -12,10 +12,10 @@ ha_category: Notifications ha_release: 0.56 --- - The `clickatell` platform uses [Clickatell](https://clickatell.com) to deliver SMS notifications from Home Assistant. -### Get your Clickatell API Credentials +## {% linkable_title Setup %} + Go to your [Clickatell SMS Platform Portal](https://portal.clickatell.com/#/) section and create a new SMS integration. There are three screens of information required to create an integration. Please ensure the following: 1. Give the new Integration an identification name. @@ -25,6 +25,8 @@ Go to your [Clickatell SMS Platform Portal](https://portal.clickatell.com/#/) se 5. Be aware of the international number format option as this impacts the structure of the phone numbers you provide. 6. Once you have completed entering your details an API key is generated. Copy the API key. +## {% linkable_title Configuration %} + To add Clickatell to your installation, add the following to your Home Assistant `configuration.yaml` file: ```yaml @@ -36,11 +38,20 @@ notify: recipient: PHONE_NO ``` -Configuration variables: - -* **name** (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is `clickatell`. The notifier will bind to the service notify.NOTIFIER_NAME. -* **api_key** (Required): Your API key. -* **recipient** (Required): Your phone number. This is where you want to send your notification SMS messages. e.g., `61444333444`. - +{% configuration %} +name: + description: Setting the optional parameter name allows multiple notifiers to be created. The notifier will bind to the service notify.NOTIFIER_NAME. + required: false + default: clickatell + type: string +api_key: + description: Your Clicktell API key. + required: true + type: string +recipient: + description: Your phone number. This is where you want to send your notification SMS messages. e.g., `61444333444`. + required: true + type: string +{% endconfiguration %} To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.clicksend_tts.markdown b/source/_components/notify.clicksend_tts.markdown index 6009c9e9871..562a6c56ebd 100644 --- a/source/_components/notify.clicksend_tts.markdown +++ b/source/_components/notify.clicksend_tts.markdown @@ -13,7 +13,6 @@ ha_release: 0.55 redirect_from: /components/notify.clicksendaudio/ --- - The `clicksend_tts` platform uses [ClickSend](https://clicksend.com) to deliver text-to-speech (TTS) notifications from Home Assistant. Go to your [ClickSend Dashboard](https://dashboard.clicksend.com) section and create your new project. After creating your project, you should now be able to obtain your `username` and `api_key`. @@ -29,14 +28,34 @@ notify: recipient: PHONE_NO ``` -Configuration variables: - -* **name** (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is `ClickSend`. The notifier will bind to the service notify.NOTIFIER_NAME. -* **username** (Required): Your username. -* **api_key** (Required): Your API Key. -* **recipient** (Required): Your phone number. This is where you want to send your notification SMS messages (e.g., `09171234567`) -* **language** (Optional): The language you want to use to convert the message to audio. Accepted values are found in the [ClickSend Documentation](http://docs.clicksend.apiary.io/#reference/voice/voice-languages). Default value is `en-us`. -* **voice** (Optional): The voice that needs to be used to play the message to the recipient. Allowed values are `female` or `male`. Default value is `female`. +{% configuration %} +name: + description: Setting the optional parameter name allows multiple notifiers to be created. The notifier will bind to the service notify.NOTIFIER_NAME. + required: false + default: ClickSend + type: string +username: + description: Your username. + required: true + type: string +api_key: + description: Your API Key. + required: true + type: string +recipient: + description: Your phone number. This is where you want to send your notification SMS messages (e.g., `09171234567`). + required: true + type: string +language: + description: The language you want to use to convert the message to audio. Accepted values are found in the [ClickSend Documentation](http://docs.clicksend.apiary.io/#reference/voice/voice-languages). + required: false + default: en-us + type: string +voice: + description: The voice that needs to be used to play the message to the recipient. Allowed values are `female` or `male`. + required: false + default: female + type: string +{% endconfiguration %} To use notifications, please see the [getting started with automation page](/getting-started/automation/). - diff --git a/source/_components/notify.command_line.markdown b/source/_components/notify.command_line.markdown index 4f82febe402..844973bbdd1 100644 --- a/source/_components/notify.command_line.markdown +++ b/source/_components/notify.command_line.markdown @@ -24,9 +24,16 @@ notify: command: "espeak -vmb/mb-us1" ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **command** (*Required*): The action to take. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +command: + description: The action to take. + required: true + type: string +{% endconfiguration %} To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.file.markdown b/source/_components/notify.file.markdown index 9a94b1177e4..1fed47e1714 100644 --- a/source/_components/notify.file.markdown +++ b/source/_components/notify.file.markdown @@ -12,7 +12,6 @@ ha_category: Notifications ha_release: pre 0.7 --- - The `file` platform allows you to store notifications from Home Assistant as a file. To enable file notifications in your installation, add the following to your `configuration.yaml` file: @@ -25,10 +24,21 @@ notify: filename: FILENAME ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **filename** (*Required*): Name of the file to use. The file will be created if it doesn't exist and saved in your [configuration](/docs/configuration/) folder. -- **timestamp** (*Optional*): Setting `timestamp` to `True` adds a timestamp to every entry. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +filename: + description: Name of the file to use. The file will be created if it doesn't exist and saved in your [configuration](/docs/configuration/) folder. + required: true + type: string +timestamp: + description: Setting `timestamp` to `true` adds a timestamp to every entry. + required: false + default: false + type: boolean +{% endconfiguration %} To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.free_mobile.markdown b/source/_components/notify.free_mobile.markdown index f204fe054c0..8851f8a060f 100644 --- a/source/_components/notify.free_mobile.markdown +++ b/source/_components/notify.free_mobile.markdown @@ -36,13 +36,14 @@ notify: username: YOUR_ACCOUNT_ID access_token: TOKEN ``` + {% configuration %} -username: +username: description: This is the id given by FreeMobile to access to your online account. - required: true - type: string -access_token: - description: You can get this token by activating the SMS API in your online account. - required: true - type: string + required: true + type: string +access_token: + description: You can get this token by activating the SMS API in your online account. + required: true + type: string {% endconfiguration %} diff --git a/source/_components/notify.gntp.markdown b/source/_components/notify.gntp.markdown index da4f718eb29..f2a3ee782b3 100644 --- a/source/_components/notify.gntp.markdown +++ b/source/_components/notify.gntp.markdown @@ -12,7 +12,6 @@ ha_category: Notifications ha_release: 0.16 --- - [GNTP](http://www.growlforwindows.com/gfw/help/gntp.aspx) is a specification for sending and receiving notifications between computers. The most well known server implementations are [Growl](http://growl.info) for Mac and [Growl for Windows](http://www.growlforwindows.com/gfw/). To use GNTP notifications, add the following to your `configuration.yaml` file: @@ -26,13 +25,35 @@ notify: GNTP will attempt to connect to a local server running on port 23053 if no `hostname` is provided. -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **app_name** (*Optional*): The application name that will be displayed on every notification and will be registered with the server. -- **app_icon** (*Optional*): The icon that will be displayed on every notification. You can provide an HTTP URL or a `file://` URL. File URLs only work if Home Assistant and the GNTP server are running on the same machine. If no `app_icon` is set a local copy of the Home Assistant logo will be used. If you choose to use an HTTP URL please make the maximum image size 150 px by 150 px as Growl for Mac will sometimes timeout when registering. -- **hostname** (*Optional*): The hostname or IP address of the GNTP server to contact. -- **password** (*Optional*): The password to authenticate to the GNTP server with. -- **port** (*Optional*): The port that the GNTP server runs on. The specification states that servers should not allow users to use any port other than 23053 but `port` is provided here just in case. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +app_name: + description: The application name that will be displayed on every notification and will be registered with the server. + required: false + default: HomeAssistant + type: string +app_icon: + description: "The icon that will be displayed on every notification. You can provide an HTTP URL or a `file://` URL. File URLs only work if Home Assistant and the GNTP server are running on the same machine. If no `app_icon` is set a local copy of the Home Assistant logo will be used. If you choose to use an HTTP URL please make the maximum image size 150 px by 150 px as Growl for Mac will sometimes timeout when registering." + required: false + type: string +hostname: + description: The hostname or IP address of the GNTP server to contact. + required: false + default: localhost + type: string +password: + description: The password to authenticate to the GNTP server with. + required: false + type: string +port: + description: The port that the GNTP server runs on. The specification states that servers should not allow users to use any port other than 23053 but `port` is provided here just in case. + required: false + default: 23053 + type: integer +{% endconfiguration %} To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.group.markdown b/source/_components/notify.group.markdown index 943eb26961b..b4eb9b5e3a4 100644 --- a/source/_components/notify.group.markdown +++ b/source/_components/notify.group.markdown @@ -15,12 +15,12 @@ ha_qa_scale: internal The `group` notification platform allows you to combine multiple `notify` platforms into a single service. -To use this notification platform in your installation, add the following to your `configuration.yaml` file: +## {% linkable_title Configuration %} ```yaml # Example configuration.yaml entry notify: - - name: NOTIFIER_NAME + - name: NAME_OF_NOTIFIER_GROUP platform: group services: - service: html5 @@ -29,9 +29,35 @@ notify: - service: html5_nexus ``` -Configuration variables: +{% configuration %} +name: + description: Setting the parameter `name` sets the name of the group. + required: true + type: string +services: + description: A list of all the services to be included in the group. + required: true + type: list + keys: + service: + description: The service part of an entity ID, e.g. if you use `notify.html5` normally, just put `html5`. Note that you must put everything in lower case here. Although you might have capitals written in the actual notification services! + required: true + type: string + data: + description: A dictionary containing parameters to add to all notify payloads. This can be anything that is valid to use in a payload, such as `data`, `message`, `target` or `title`. + required: false + type: string +{% endconfiguration %} -- **name** (*Required*): Setting the parameter `name` sets the name of the group. -- **services** (*Required*): A list of all the services to be included in the group. - - **service** (*Required*): The service part of an entity ID, i.e. if you use `notify.html5` normally, just put `html5`. Note that you must put everything in lower case here. Although you might have capitals written in the actual notification services! - - **data** (*Optional*): A dictionary containing parameters to add to all notify payloads. This can be anything that is valid to use in a payload, such as `data`, `message`, `target`, `title`. +## {% linkable_title Example %} + +An example on how to use it in an automation: + +{% raw %} +```yaml +action: + service: notify.NAME_OF_NOTIFIER_GROUP + data: + message: "The sun is {% if is_state('sun.sun', 'above_horizon') %}up{% else %}down{% endif %}!" +``` +{% endraw %} diff --git a/source/_components/notify.homematic.markdown b/source/_components/notify.homematic.markdown index 5ba5dd3b362..3f7cd5f64e0 100644 --- a/source/_components/notify.homematic.markdown +++ b/source/_components/notify.homematic.markdown @@ -102,7 +102,7 @@ alert: name: Temperature too high done_message: Temperature OK entity_id: binary_sensor.temperature_too_high - can_acknowledge: True + can_acknowledge: true notifiers: - group_hm ``` diff --git a/source/_components/notify.html5.markdown b/source/_components/notify.html5.markdown index 74e4a06f5c3..524b92ac9db 100644 --- a/source/_components/notify.html5.markdown +++ b/source/_components/notify.html5.markdown @@ -12,17 +12,15 @@ ha_category: Notifications ha_release: 0.27 --- -The `html5` notification platform enables you to receive push notifications to -Chrome or Firefox, no matter where you are in the world. `html5` also supports -Chrome and Firefox on Android, which enables native-app-like integrations -without actually needing a native app. +The `html5` notification platform enables you to receive push notifications to Chrome or Firefox, no matter where you are in the world. `html5` also supports Chrome and Firefox on Android, which enables native-app-like integrations without actually needing a native app.

HTML5 push notifications **do not** work on iOS.

-To enable this platform, -add the following lines to your `configuration.yaml` file: +## {% linkable_title Configuration %} + +To enable this platform, add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -51,23 +49,23 @@ gcm_sender_id: ### {% linkable_title Getting ready for Chrome %} -1. Make sure you can access your Home Assistant installation from outside your network over https ([see docs](/docs/configuration/remote/)). +1. Make sure you can access your Home Assistant installation from outside your network over HTTPS ([see docs](/docs/configuration/remote/)). 2. Create a new project at [https://console.cloud.google.com/home/dashboard](https://console.cloud.google.com/home/dashboard). 3. Go to [https://console.cloud.google.com/apis/credentials/domainverification](https://console.cloud.google.com/apis/credentials/domainverification) and verify your domain via Google Webmaster Central / Search Console - [instructions](#verify-your-domain). -4. With the domain verified, go to [https://console.firebase.google.com](https://console.firebase.google.com), select import Google project, and select the project you created. +4. With the domain verified, go to [https://console.firebase.google.com](https://console.firebase.google.com), select import Google project and select the project you created. 5. Then, click the cogwheel on top left and select "Project settings". 6. Select 'Cloud Messaging' tab, listed beneath Project Credentials will be your 152 character 'Server Key' and 12 digit ID 'Sender ID' you need for configuring this component. #### {% linkable_title Verify your domain %} -Follow these steps to verify domain ownership with Google Webmaster Central / Search Console: -1. Enter your domain and add **'/local'** at the end, ie. https://example.com:8123/local +Follow these steps to verify domain ownership with Google Webmaster Central/Search Console: +1. Enter your domain and add `/local` at the end, e.g., `https://example.com:8123/local` 2. Select HTML file verification and download the google*.html file. -2. Create a directory named "www" in your Home Assistant configuration directory (/config share from Samba add-on). -3. Place the downloaded google*.html file in the "www" directory. -4. RESTART Home Assistant - this is important! -5. Verify the file can be accessed in the browser, ie. **https://example.com:8123/local/google123456789.html** (change filename) - you should see a plain text message saying "google-site-verification: ..." - if you see "404: Not Found" or something else, retry the above steps. -6. Go back to Google Webmaster Central / Search Console and proceed with the verification. +2. Create a directory named `www` in your Home Assistant configuration directory (`/config/` share from Samba add-on). +3. Place the downloaded `google*.html` file in the `www` directory. +4. RESTART Home Assistant. **This is important!** +5. Verify the file can be accessed in the browser, e.g., **https://example.com:8123/local/google123456789.html** (change filename). You should see a plain text message saying "google-site-verification: ...". If you see "404: Not Found" or something else, retry the above steps. +6. Go back to Google Webmaster Central/Search Console and proceed with the verification. ### {% linkable_title Requirements %} @@ -76,11 +74,10 @@ The `html5` platform can only function if all of the following requirements are * You are using Chrome and/or Firefox on any desktop platform, ChromeOS or Android. * Your Home Assistant instance is exposed to the world. * If using a proxy, HTTP basic authentication must be off for registering or unregistering for push notifications. It can be re-enabled afterwards. -* If you don't run Hass.io: `pywebpush` must be installed. `libffi-dev`, `libpython-dev`, and `libssl-dev` must be installed prior to `pywebpush` (i.e. `pywebpush` probably won't automatically install). -* You have configured SSL for your Home Assistant. It doesn't need to be configured in Home Assistant though, i.e. you can be running [NGINX](/ecosystem/nginx/) in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e. not self signed). +* If you don't run Hass.io: `pywebpush` must be installed. `libffi-dev`, `libpython-dev` and `libssl-dev` must be installed prior to `pywebpush` (i.e. `pywebpush` probably won't automatically install). +* You have configured SSL/TLS for your Home Assistant. It doesn't need to be configured in Home Assistant though, e.g., you can be running [NGINX](/ecosystem/nginx/) in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e. not self signed). * You are willing to accept the notification permission in your browser. - ### {% linkable_title Setting up %} Assuming you have already added the platform to your configuration: @@ -92,7 +89,6 @@ Assuming you have already added the platform to your configuration: 5. Assuming you accept, that's all there is to it! 6. (Optional, but highly recommended!) Open the `html5_push_registrations.conf` file in your configuration directory. You will see a new entry for the browser you just added. Rename it from `unnamed device` to a name of your choice, which will make it easier to identify later. _Do not change anything else in this file!_ You need to restart Home Assistant after making any changes to the file. - ### {% linkable_title Testing %} Assuming the previous test completed successfully and your browser was registered, you can test the notification as follows: @@ -100,151 +96,109 @@ Assuming the previous test completed successfully and your browser was registere 1. Open Home Assistant in Chrome or Firefox. 2. Open the sidebar and click the Services button at the bottom (shaped like a remote control), located below the Developer Tools. 3. From the Services dropdown, search for your HTML5 notify service (e.g., notify.NOTIFIER_NAME) and select it. -4. In the Service Data text box enter: {"message":"hello world"}, then press the CALL SERVICE button. +4. In the Service Data text box enter: `{"message":"hello world"}`, then press the CALL SERVICE button. 5. If everything worked you should see a popup notification. - ### {% linkable_title Usage %} -The `html5` platform accepts a standard notify payload. However, there are also -some special features built in which you can control in the payload. +The `html5` platform accepts a standard notify payload. However, there are also some special features built in which you can control in the payload. -Any JSON examples below can be [converted to YAML](https://www.json2yaml.com/) -for automations. #### {% linkable_title Actions %} -Chrome supports notification actions, -which are configurable buttons that arrive with the notification and can cause -actions on Home Assistant to happen when pressed. You can send up to 2 actions. +Chrome supports notification actions, which are configurable buttons that arrive with the notification and can cause actions on Home Assistant to happen when pressed. You can send up to 2 actions. -```json -{ - "message": "Anne has arrived home", - "data": { - "actions": [ - { - "action": "open", - "icon": "/static/icons/favicon-192x192.png", - "title": "Open Home Assistant" - }, - { - "action": "open_door", - "title": "Open door" - } - ] - } -} +```yaml +message: Anne has arrived home +data: + actions: + - action: open + icon: "/static/icons/favicon-192x192.png" + title: Open Home Assistant + - action: open_door + title: Open door ``` #### {% linkable_title Data %} -Any parameters that you pass in the notify payload that aren't valid for use in -the HTML5 notification (`actions`, `badge`, `body`, `dir`, `icon`, `image`, -`lang`, `renotify`, `requireInteraction`, `tag`, `timestamp`, `vibrate`) will be -sent back to you in the [callback events](#automating-notification-events). +Any parameters that you pass in the notify payload that aren't valid for use in the HTML5 notification (`actions`, `badge`, `body`, `dir`, `icon`, `image`, `lang`, `renotify`, `requireInteraction`, `tag`, `timestamp`, `vibrate`) will be sent back to you in the [callback events](#automating-notification-events). -```json -{ - "title": "Front door", - "message": "The front door is open", - "data": { - "my-custom-parameter": "front-door-open" - } -} +```yaml +title: Front door +message: The front door is open +data: + my-custom-parameter: front-door-open ``` #### {% linkable_title Tag %} -By default, every notification sent has a randomly generated UUID (v4) set as -its _tag_ or unique identifier. The tag is unique to the notification, _not_ to -a specific target. If you pass your own tag in the notify payload you can -replace the notification by sending another notification with the same tag. -You can provide a `tag` like so: +By default, every notification sent has a randomly generated UUID (v4) set as its _tag_ or unique identifier. The tag is unique to the notification, _not_ to a specific target. If you pass your own tag in the notify payload you can replace the notification by sending another notification with the same tag. You can provide a `tag` like so: -```json -{ - "title": "Front door", - "message": "The front door is open", - "data": { - "tag": "front-door-notification" - } -} +```yaml +title: Front door +message: The front door is open +data: + tag: front-door-notification ``` -Example of adding a tag to your notification. This won't create new notification -if there already exists one with the same tag. +Example of adding a tag to your notification. This won't create new notification if there already exists one with the same tag. +{% raw %} ```yaml - alias: Push/update notification of sensor state with tag trigger: - platform: state entity_id: sensor.sensor action: - service: notify.html5 + service: notify.notify data_template: - message: "Last known sensor state is {% raw %}{{ states('sensor.sensor') }}{% endraw %}." + message: "Last known sensor state is {{ states('sensor.sensor') }}." data: data: tag: 'notification-about-sensor' ``` +{% endraw %} #### {% linkable_title Targets %} -If you do not provide a `target` parameter in the notify payload a notification -will be sent to all registered targets as listed in -`html5_push_registrations.conf`. You can provide a `target` parameter like so: +If you do not provide a `target` parameter in the notify payload a notification will be sent to all registered targets as listed in `html5_push_registrations.conf`. You can provide a `target` parameter like so: -```json -{ - "title": "Front door", - "message": "The front door is open", - "target": "unnamed device" -} +```yaml +title: Front door +message: The front door is open +target: unnamed device ``` `target` can also be a string array of targets like so: -```json -{ - "title": "Front door", - "message": "The front door is open", - "target": ["unnamed device", "unnamed device 2"] -} +```yaml +title: Front door +message: The front door is open +target: + - unnamed device + - unnamed device 2 ``` #### {% linkable_title Overrides %} -You can pass any of the parameters listed -[here](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/showNotification#Parameters) -in the `data` dictionary. Please note, Chrome specifies that the maximum size -for an icon is 320px by 320px, the maximum `badge` size is 96px by 96px and the -maximum icon size for an action button is 128px by 128px. +You can pass any of the parameters listed [here](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/showNotification#Parameters) in the `data` dictionary. Please note, Chrome specifies that the maximum size for an icon is 320px by 320px, the maximum `badge` size is 96px by 96px and the maximum icon size for an action button is 128px by 128px. #### {% linkable_title URL %} -You can provide a URL to open when the notification is clicked by putting `url` -in the data dictionary like so: +You can provide a URL to open when the notification is clicked by putting `url` in the data dictionary like so: -```json -{ - "title": "Front door", - "message": "The front door is open", - "data": { - "url": "https://google.com" - } -} +```yaml +title: Front door +message: The front door is open +data: + url: https://google.com ``` -If no URL or actions are provided, interacting with a notification will open -your Home Assistant in the browser. You can use relative URLs to refer to Home -Assistant, i.e. `/map` would turn into `https://192.168.1.2:8123/map`. +If no URL or actions are provided, interacting with a notification will open your Home Assistant in the browser. You can use relative URLs to refer to Home Assistant, i.e. `/map` would turn into `https://192.168.1.2:8123/map`. ### {% linkable_title Automating notification events %} -During the lifespan of a single push notification, -Home Assistant will emit a few different events to the event bus which you can -use to write automations against. +During the lifespan of a single push notification, Home Assistant will emit a few different events to the event bus which you can use to write automations against. Common event payload parameters are: @@ -256,10 +210,7 @@ Common event payload parameters are: | `target` | The target that this notification callback describes. | | `type` | The type of event callback received. Can be `received`, `clicked` or `closed`. | -You can use the `target` parameter to write automations against a single -`target`. For more granularity, -use `action` and `target` together to write automations which will do specific -things based on what target clicked an action. +You can use the `target` parameter to write automations against a single `target`. For more granularity, use `action` and `target` together to write automations which will do specific things based on what target clicked an action. #### {% linkable_title received event %} @@ -275,9 +226,7 @@ notification is received on the device. #### {% linkable_title clicked event %} -You will receive an event named `html5_notification.clicked` when the -notification or a notification action button is clicked. -The action button clicked is available as `action` in the `event_data`. +You will receive an event named `html5_notification.clicked` when the notification or a notification action button is clicked. The action button clicked is available as `action` in the `event_data`. ```yaml - alias: HTML5 push notification clicked @@ -299,8 +248,7 @@ or #### {% linkable_title closed event %} -You will receive an event named `html5_notification.closed` when the -notification is closed. +You will receive an event named `html5_notification.closed` when the notification is closed. ```yaml - alias: HTML5 push notification clicked @@ -311,10 +259,7 @@ notification is closed. ### {% linkable_title Making notifications work with NGINX proxy %} -If you use [NGINX](/ecosystem/nginx/) as a proxy with authentication in front of -your Home Assistant instance, -you may have trouble with receiving events back to Home Assistant. -It's because of authentication token that cannot be passed through the proxy. +If you use [NGINX](/ecosystem/nginx/) as a proxy with authentication in front of your Home Assistant instance, you may have trouble with receiving events back to Home Assistant. It's because of authentication token that cannot be passed through the proxy. To solve the issue put additional location into your nginx site's configuration: @@ -328,8 +273,7 @@ location /api/notify.html5/callback { } ``` -This rule check if request have `Authorization` HTTP header and bypass the -htpasswd (if you use one). +This rule check if request have `Authorization` HTTP header and bypass the htpasswd (if you use one). If you still have the problem, even with mentioned rule, try to add this code: diff --git a/source/_components/notify.instapush.markdown b/source/_components/notify.instapush.markdown deleted file mode 100644 index c419a5e664b..00000000000 --- a/source/_components/notify.instapush.markdown +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: page -title: "Instapush" -description: "Instructions on how to add Instapush notifications to Home Assistant." -date: 2015-05-01 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: instapush.png -ha_category: Notifications -ha_release: pre 0.7 ---- - - -The `instapush` platform uses [Instapush](https://instapush.im) to delivery notifications from Home Assistant to your Android or iOS device. - -The Instapush [Getting Started page](https://instapush.im/home/start/) will guide through the process of creating the required items. - -To add Instapush to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: instapush - api_key: YOUR_API_KEY - app_secret: YOUR_APP_SECRET - event: PUSH_TO_EVENT - tracker: TRACKER_NAME -``` - -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **api_key** (*Required*): Your API key for Instapush. -- **app_secret** (*Required*): The secret for your created application. -- **event** (*Required*): The event to push to. -- **tracker** (*Required*): The name of tracker inside Instapush. - -To retrieve the needed values for existing settings, log into your account at [https://instapush.im](https://instapush.im) and go to your **Dashboard**. Then click the **APPS** tab, choose an app, and check the **Basic Info** section. The *Application ID* is the `api_key` and `app_secret` is the *Application Secret*. - -Assuming that your setup looks look in the image below... - -

- -

- -...then your entry for the `configuration.yaml` file needs to be like this sample. - -```yaml -notify: - platform: instapush - [...] - event: msg - tracker: state -``` - -It's easy to test your Instapush setup outside of Home Assistant. Assuming you have an event *notification* and a tracker *home-assistant*, just fire a request and check the Instapush dashboard for a new entry. - -```bash -curl -X POST \ - -H "x-instapush-appid: YOUR_APP_KEY" \ - -H "x-instapush-appsecret: YOUR_APP_SECRET" \ - -H "Content-Type: application/json" \ - -d '{"event":"notification","trackers":{"home-assistant":"Switch 1"}}' \ - https://api.instapush.im/v1/post -``` - -For further details, please check the [API](https://instapush.im/developer/rest). - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.kodi.markdown b/source/_components/notify.kodi.markdown index 7d350005a85..fb7dfc879dd 100644 --- a/source/_components/notify.kodi.markdown +++ b/source/_components/notify.kodi.markdown @@ -13,7 +13,9 @@ ha_release: 0.29 --- -The `Kodi` platform allows you to send messages to your [Kodi](https://kodi.tv/) multimedia system from Home Assistant. +The `kodi` platform allows you to send messages to your [Kodi](https://kodi.tv/) multimedia system from Home Assistant. + +## {% linkable_title Configuration %} To add Kodi to your installation, add the following to your `configuration.yaml` file: @@ -32,7 +34,7 @@ notify: - **username** (*Optional*): The XBMC/Kodi HTTP username. - **password** (*Optional*): The XBMC/Kodi HTTP password. -### {% linkable_title script.yaml example %} +### {% linkable_title Script example %} ```yaml kodi_notification: @@ -56,31 +58,3 @@ kodi_notification: To use notifications, please see the [getting started with automation page](/getting-started/automation/). -## {% linkable_title Services %} - -### {% linkable_title Media control services %} -Available services: `kodi_add_to_playlist`, `kodi_set_shuffle` - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------ | -| `entity_id` | yes | Target a specific media player. Defaults to all. | - -#### {% linkable_title Service `media_player/kodi_set_shuffle` %} - -| Service data attribute | Optional | Description | -|------------------------|----------|----------------------------------------------------------| -| `entity_id` | yes | Target a specific media player. It must be of type kodi. | -| `shuffle_on ` | no | True/false for shuffle on/off | - -#### {% linkable_title Service `media_player/kodi_add_to_playlist` %} - -Add a song or an entire album to the default playlist (i.e. playlist id 0). - -| Service data attribute | Optional | Description | -|------------------------|----------|----------------------------------------------------------------------------| -| `entity_id` | yes | Target a specific media player. It must be of type kodi. | -| `media_type ` | no | either SONG or ALBUM | -| media_id | yes | id of the media as defined in kodi | -| media_name | yes | name of the media, HA will search for the media with name closer to this. If ALL add all albums, if artist_name is provided adds all albums of that artist. | -| artist_name | yes | name of the artist, HA will search for the artist with name closer to this.| - diff --git a/source/_components/notify.lametric.markdown b/source/_components/notify.lametric.markdown index f68d978dba3..680b258278d 100644 --- a/source/_components/notify.lametric.markdown +++ b/source/_components/notify.lametric.markdown @@ -45,7 +45,7 @@ cycles: default: 1 priority: description: Defines the priority of the notification. - required: False + required: false type: string default: warning {% endconfiguration %} diff --git a/source/_components/notify.lannouncer.markdown b/source/_components/notify.lannouncer.markdown index 5aba4e41f9e..f21c152455b 100644 --- a/source/_components/notify.lannouncer.markdown +++ b/source/_components/notify.lannouncer.markdown @@ -12,7 +12,6 @@ ha_category: Notifications ha_release: 0.36 --- - The `lannouncer` notification platform allows you to play spoken messages (TTS) or sounds on an Android device running [Lannouncer](http://www.keybounce.com/lannouncer/). This can be useful when you have a wall mounted Android tablet, or an Android device that is permanently powered and turned on and want to use that to play notifications. To enable Lannouncer notifications in your installation, add the following to your `configuration.yaml` file: @@ -25,11 +24,22 @@ notify: host: HOSTNAME_OR_IP ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **host** (*Required*): The hostname or IP-address of the Android device that is running Lannouncer. -- **port** (*Optional*): The port on which Lannouncer is running. By default this is `1035`. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +host: + description: The hostname or IP-address of the Android device that is running Lannouncer. + required: true + type: string +port: + description: The port on which Lannouncer is running. + required: false + default: 1035 + type: integer +{% endconfiguration %} ### {% linkable_title Installation %} diff --git a/source/_components/notify.llamalab_automate.markdown b/source/_components/notify.llamalab_automate.markdown index a357ff2556a..f57aaaae5b3 100644 --- a/source/_components/notify.llamalab_automate.markdown +++ b/source/_components/notify.llamalab_automate.markdown @@ -12,7 +12,6 @@ ha_category: Notifications ha_release: 0.27 --- - The `llamalab_automate` platform uses Googles Cloud Messaging Services to push messages from Home Assistant to your Android device running the LlamaLab [Automate](https://llamalab.com/automate/) app. This can serve as an alternative to Tasker + AutoRemote. Go to [https://llamalab.com/automate/cloud/](https://llamalab.com/automate/cloud/) and create a new API key/secret. @@ -28,12 +27,25 @@ notify: to: YOUR_EMAIL_ADDRESS ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **api_key** (*Required*): Enter the API key for Automate. -- **to** (*Required*): E-Mail address the Automate-Fiber is configured for. -- **device** (*Optional*): Name of the target device to receive the messages. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +api_key: + description: Enter the API key for Automate. + required: true + type: string +to: + description: E-Mail address the Automate-Fiber is configured for. + required: true + type: string +device: + description: Name of the target device to receive the messages. + required: false + type: string +{% endconfiguration %} Receiving cloud messages in Automate: diff --git a/source/_components/notify.markdown b/source/_components/notify.markdown index fdf8980710d..b152139954b 100644 --- a/source/_components/notify.markdown +++ b/source/_components/notify.markdown @@ -11,6 +11,8 @@ footer: true The `notify` component makes it possible to send notifications to a wide variety of platforms. Please check the sidebar for a full list of platforms that are supported. +If you want to send notifications to the Home Assistant Web Interface you may use the [Persistent Notification Component](/components/persistent_notification/). + ## {% linkable_title Configuration %} ```yaml diff --git a/source/_components/notify.matrix.markdown b/source/_components/notify.matrix.markdown index 29890d46c8b..f03d25b734f 100644 --- a/source/_components/notify.matrix.markdown +++ b/source/_components/notify.matrix.markdown @@ -12,7 +12,6 @@ ha_category: Notifications ha_release: 0.32 --- - The `matrix` platform allows you to deliver notifications from Home Assistant to a [Matrix](http://matrix.org) room. Rooms can be both direct as well as group chats. ## {% linkable_title Configuration %} @@ -28,10 +27,17 @@ notify: default_room: ROOM_ID_OR_ALIAS ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **default_room** (*Required*): The room all messages will be sent to, when no other target is given. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +default_room: + description: The room all messages will be sent to, when no other target is given. + required: true + type: string +{% endconfiguration %} The target room has to be precreated, the room id can be obtained from the rooms settings dialog. Rooms by default have a canonical id of the form `"!:homeserver.tld"`, but can also be allocated aliases like `"#roomname:homeserver.tld"`. Make sure to use quotes around the room id or alias to escape special characters (`!`, and `#`) in YAML. The notifying account may need to be invited to the room, depending on the individual rooms policies. diff --git a/source/_components/notify.message_bird.markdown b/source/_components/notify.message_bird.markdown index 2234a86310e..255e8b2d272 100644 --- a/source/_components/notify.message_bird.markdown +++ b/source/_components/notify.message_bird.markdown @@ -14,6 +14,12 @@ ha_release: 0.16 The `MessageBird` notification platform sends notifications as SMS messages using [MessageBird](https://www.messagebird.com/) to your mobile phone. +## {% linkable_title Setup %} + +Go to https://www.messagebird.com/ to retrieve your API key. + +## {% linkable_title Configuration %} + To enable MessageBird notifications in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -24,11 +30,22 @@ notify: api_key: YOUR_API_KEY ``` -Configuration variables: - -- **api_key** (*Required*): Enter the API key for MessageBird. Go to https://www.messagebird.com/ to retrieve your API key. -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **sender** (*Optional*): Setting the optional parameter `sender`. This will be the sender of the SMS. It may be either a telephone number (e.g., `+4915112345678`) or a text with a maximum length of 11 characters. Defaults to `HA`. +{% configuration %} +api_key: + description: Your MessageBird API key. + required: true + type: string +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +sender: + description: Setting the optional parameter `sender`. This will be the sender of the SMS. It may be either a telephone number (e.g., `+4915112345678`) or a text with a maximum length of 11 characters. + required: false + default: HA + type: string +{% endconfiguration %} ### {% linkable_title Usage %} diff --git a/source/_components/notify.mqtt.markdown b/source/_components/notify.mqtt.markdown index a1a33ef7e43..04a40d2a110 100644 --- a/source/_components/notify.mqtt.markdown +++ b/source/_components/notify.mqtt.markdown @@ -38,10 +38,11 @@ The same will work for automations. Using the [REST API](https://developers.home-assistant.io/docs/en/external_api_rest.html) to send a message to a given topic. ```bash -$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \ - -H "Content-Type: application/json" \ - -d '{"payload": "Test message from HA", "topic": "home/notification"}' \ - http://IP_ADDRESS:8123/api/services/mqtt/publish +$ curl -X POST \ + -H "Authorization: Bearer ABCDEFGH" \ + -H "Content-Type: application/json" \ + -d '{"payload": "Test message from HA", "topic": "home/notification"}' \ + http://IP_ADDRESS:8123/api/services/mqtt/publish ``` ### {% linkable_title Automations %} diff --git a/source/_components/notify.nfandroidtv.markdown b/source/_components/notify.nfandroidtv.markdown index 2933ca01789..3db2f5fca1c 100644 --- a/source/_components/notify.nfandroidtv.markdown +++ b/source/_components/notify.nfandroidtv.markdown @@ -12,7 +12,6 @@ ha_category: Notifications ha_release: 0.32 --- - Notification platform for [Notifications for Android TV](https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google) and [Notifications for FireTV](https://play.google.com/store/apps/details?id=de.cyberdream.firenotifications.google). You can use this plarform to send notifications to your Android TV device. An overlay with the message content will appear for a configurable amount of seconds and then disapper again. Sending images (e.g., security cam) is supported too. The notifications are in the global scope of your Android TV device. They will be displayed regardless of which application is running. @@ -29,16 +28,52 @@ notify: host: 192.168.1.12 ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **host** (*Required*): IP address of the Android TV / FireTV device. -- **duration** (*Optional*): The duration in seconds for which the notification will be displayed. Default is 5 seconds. -- **fontsize** (*Optional*): Has to be one of: small, medium (default), large, max -- **position** (*Optional*): Has to be one of: bottom-right (default), bottom-left, top-right, top-left, center -- **color** (*Optional*): Has to be one of: grey (default), black, indigo, green, red, cyan, teal, amber, pink -- **transparency** (*Optional*): Has to be one of: 0%, 25% (default), 50%, 75%, 100% -- **interrupt** (*Optional*): If set to true, 1, on etc., the notification is interactive and can be dismissed or selected to display more details. Depending on the running app (e.g., Netflix), this may stop playback. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +host: + description: IP address of the Android TV / FireTV device. + required: true + type: string +duration: + description: The duration in seconds for which the notification will be displayed. + required: false + default: 5 + type: integer +fontsize: + description: "Has to be one of: `small`, `medium`, `large` or `max`." + required: false + default: medium + type: string +position: + description: "Has to be one of: `bottom-right`, `bottom-left`, `top-right`, `top-left` or `center`." + required: false + default: bottom-right + type: string +color: + description: "Has to be one of: `grey`, `black`, `indigo`, `green`, `red`, `cyan`, `teal`, `amber` or `pink`." + required: false + default: grey + type: string +transparency: + description: "Has to be one of: `0%`, `25%`, `50%`, `75%` or `100%`." + required: false + default: 25% + type: string +timeout: + description: The timeout in seconds. + required: false + default: 5 + type: integer +interrupt: + description: If set to true, 1, on etc., the notification is interactive and can be dismissed or selected to display more details. Depending on the running app (e.g., Netflix), this may stop playback. + required: false + default: false + type: boolean +{% endconfiguration %} The configuration will be used to configure the default values for the notification for the host specified by the IP. However, you can override most of the settings by passing them with the data-attribute when calling the service. This is a fully customized JSON you can use to test how the final notification will look like: @@ -65,7 +100,7 @@ The following attributes can be placed inside `data` to send images. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `file` | yes | Groups the attributes for file upload. If present, either `url` or `path` have to be provided. -| `path ` | yes | Local path of an image file. Is placed inside `file`. +| `path` | yes | Local path of an image file. Is placed inside `file`. | `url` | yes | URL of an image file. Is placed inside `file`. | `username` | yes | Username if the url requires authentication. Is placed inside `file`. | `password` | yes | Password if the url requires authentication. Is placed inside `file`. @@ -101,4 +136,5 @@ Example for posting file from local path: } } ``` + Please note that `path` is validated against the `whitelist_external_dirs` in the `configuration.yaml`. diff --git a/source/_components/notify.prowl.markdown b/source/_components/notify.prowl.markdown index b9fa8c0008d..496efa4ffd1 100644 --- a/source/_components/notify.prowl.markdown +++ b/source/_components/notify.prowl.markdown @@ -12,7 +12,6 @@ ha_category: Notifications ha_release: 0.52 --- - The `prowl` platform uses [Prowl](https://www.prowlapp.com/) to deliver push notifications from Home Assistant to your iOS device. Go to the [Prowl website](https://www.prowlapp.com/) and create a new API key. @@ -27,10 +26,17 @@ notify: api_key: YOUR_API_KEY ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **api_key** (*Required*): The Prowl API key to use. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +api_key: + description: The Prowl API key to use. + required: true + type: string +{% endconfiguration %} ### {% linkable_title Prowl service data %} diff --git a/source/_components/notify.pushbullet.markdown b/source/_components/notify.pushbullet.markdown index 0cac4e4d554..ad52044e55b 100644 --- a/source/_components/notify.pushbullet.markdown +++ b/source/_components/notify.pushbullet.markdown @@ -24,10 +24,17 @@ notify: api_key: YOUR_API_KEY ``` -Configuration variables: - -- **api_key** (*Required*): Enter the API key for Pushbullet. Go to [https://www.pushbullet.com/#settings/account](https://www.pushbullet.com/#settings/account) to retrieve your API key/access token. -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. +{% configuration %} +api_key: + description: Enter the API key for Pushbullet. Go to [https://www.pushbullet.com/#settings/account](https://www.pushbullet.com/#settings/account) to retrieve your API key/access token. + required: true + type: string +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +{% endconfiguration %} ### {% linkable_title Usage %} @@ -84,7 +91,6 @@ action: - **file** (*Required*): File to send with Pushbullet. - ### {% linkable_title File URL support %} ```yaml @@ -100,6 +106,7 @@ action: - **file_url** (*Required*): File to send with Pushbullet. ### {% linkable_title Single target %} + ```yaml action: service: notify.NOTIFIER_NAME @@ -108,10 +115,9 @@ action: message: "This only goes to one specific device" target: device/DEVICE_NAME ``` -- **target**: Pushbullet device to recive the notification. +- **target**: Pushbullet device to recive the notification.

Don't forget to [whitelist external directories](/docs/configuration/basic/), so Home Assistant has access to them.

- diff --git a/source/_components/notify.pushetta.markdown b/source/_components/notify.pushetta.markdown index bf31900c345..7275e0a3e0d 100644 --- a/source/_components/notify.pushetta.markdown +++ b/source/_components/notify.pushetta.markdown @@ -12,7 +12,6 @@ ha_category: Notifications ha_release: pre 0.7 --- - The `pushetta` notify platform uses [Pushetta](http://www.pushetta.com) to delivery notifications from Home Assistant to your devices. To retrieve the API token, log into your account at [http://www.pushetta.com](http://www.pushetta.com) and go to your **Dashboard**. Create a new channel by clicking on **Channels** and then **Add a Channel**. @@ -28,21 +27,35 @@ notify: channel_name: YOUR_CHANNEL_NAME ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **api_key** (*Required*): Your API key for Pushetta. -- **channel_name** (*Required*): The name of your channel. -- **send_test_msg** (*Optional*): Disable/enable the test message send on Home Assistant's startup to test the API key and the existence of the channel. Default to `False`. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +api_key: + description: Your API key for Pushetta. + required: true + type: string +channel_name: + description: The name of your channel. + required: true + type: string +send_test_msg: + description: Disable/enable the test message send on Home Assistant's startup to test the API key and the existence of the channel. + required: false + default: false + type: boolean +{% endconfiguration %} It's easy to test your Pushetta setup outside of Home Assistant. Assuming you have a channel *home-assistant*, just fire a request and check the channel page in the dashboard for a new message. ```bash curl -X POST \ - -H "Authorization: Token YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d "{ \"body\" : \"Hello World\", \"message_type\" : \"text/plain\" }" \ - http://api.pushetta.com/api/pushes/home-assistant/ + -H "Authorization: Token YOUR_API_KEY" \ + -H "Content-Type: application/json" \ + -d "{ \"body\" : \"Hello World\", \"message_type\" : \"text/plain\" }" \ + http://api.pushetta.com/api/pushes/home-assistant/ ``` For further details, please check the [API](http://pushetta.com/pushetta-api/). diff --git a/source/_components/notify.pushover.markdown b/source/_components/notify.pushover.markdown index 9fe57cc7e1c..e266291146c 100644 --- a/source/_components/notify.pushover.markdown +++ b/source/_components/notify.pushover.markdown @@ -12,7 +12,6 @@ ha_category: Notifications ha_release: pre 0.7 --- - The [Pushover service](https://pushover.net/) is a platform for the notify component. This allows components to send messages to the user using Pushover. ## {% linkable_title Configuration %} @@ -30,11 +29,21 @@ notify: user_key: YOUR_USER_KEY ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **api_key** (*Required*): Your API key. -- **user_key** (*Required*): Your user key for Pushover. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +api_key: + description: Your API key. + required: true + type: string +user_key: + description: Your user key for Pushover. + required: true + type: string +{% endconfiguration %} Example Automation: @@ -58,6 +67,7 @@ When sending a notification, optional parameters can also be set as per the push Example notification triggered from the Alexa component for an intents is shown below which also uses [Automation Templating](/getting-started/automation-templating/) for the message: {% raw %} + ```yaml # Example configuration.yaml entries alexa: @@ -74,4 +84,5 @@ alexa: device: pixel url: "https://www.home-assistant.io/" ``` + {% endraw %} diff --git a/source/_components/notify.pushsafer.markdown b/source/_components/notify.pushsafer.markdown index 42e1b4514bd..f3a213fa2f0 100644 --- a/source/_components/notify.pushsafer.markdown +++ b/source/_components/notify.pushsafer.markdown @@ -26,16 +26,22 @@ notify: private_key: YOUR_KEY ``` -**Configuration variables:** - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **private_key** (*Required*): Your private or alias key. Private key = send the notification to all devices with standard params, alias key send the notification to the devices stored in the alias with predefined params. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +private_key: + description: Your private or alias key. Private key = send the notification to all devices with standard params, alias key send the notification to the devices stored in the alias with predefined params. + required: true + type: string +{% endconfiguration %} ### {% linkable_title Examples %} Message to two devices with formatted text. - ```yaml action: service: notify.notify diff --git a/source/_components/notify.rest.markdown b/source/_components/notify.rest.markdown index d46ca8e932d..e31d35a89c2 100644 --- a/source/_components/notify.rest.markdown +++ b/source/_components/notify.rest.markdown @@ -12,7 +12,6 @@ ha_category: Notifications ha_release: 0.13 --- - The `rest` notification platform allows you to deliver [RESTful](https://en.wikipedia.org/wiki/Representational_state_transfer) notifications from Home Assistant to another party. To enable the REST notification in your installation, add the following to your `configuration.yaml` file: @@ -25,17 +24,46 @@ notify: resource: http://IP_ADDRESS/ENDPOINT ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **resource** (*Required*): The resource or endpoint that will receive the value. -- **method** (*Optional*): The method of the request. Default is `GET`. Other valid options are `POST` or `POST_JSON`. -- **headers** (*Optional*): The headers for the request. -- **message_param_name** (*Optional*): Parameter name for the message. Defaults to `message`. -- **title_param_name** (*Optional*): Parameter name for the title. Defaults to none. -- **target_param_name** (*Optional*): Parameter name for the target. Defaults to none. -- **data** (*Optional*): Dictionary of extra parameters to send to the resource. -- **data_template** (*Optional*): Template dictionary of extra parameters to send to the resource. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +resource: + description: The resource or endpoint that will receive the value. + required: true + type: string +method: + description: The method of the request. Valid options are `GET`, `POST` or `POST_JSON`. + required: false + default: GET + type: string +headers: + description: The headers for the request. + required: false + type: string +message_param_name: + description: Parameter name for the message. + required: false + default: message + type: string +title_param_name: + description: Parameter name for the title. + required: false + type: string +target_param_name: + description: Parameter name for the target. + required: false + type: string +data: + description: Dictionary of extra parameters to send to the resource. + required: false + type: string +data_template: + description: Template dictionary of extra parameters to send to the resource. + required: false + type: template +{% endconfiguration %} To use notifications, please see the [getting started with automation page](/getting-started/automation/). - diff --git a/source/_components/notify.sendgrid.markdown b/source/_components/notify.sendgrid.markdown index b710dd1b3f2..50cc9b07166 100644 --- a/source/_components/notify.sendgrid.markdown +++ b/source/_components/notify.sendgrid.markdown @@ -13,6 +13,12 @@ ha_category: Notifications The `sendgrid` notification platform sends email notifications via [SendGrid](https://sendgrid.com/), a proven cloud-based email platform. +## {% linkable_title Setup %} + +You need an [API key](https://app.sendgrid.com/settings/api_keys) from SendGrid. + +## {% linkable_title Configuration %} + To enable notification emails via SendGrid in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -25,11 +31,24 @@ notify: recipient: YOUR_RECIPIENT ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **api_key** (*Required*): SendGrid API key - https://app.sendgrid.com/settings/api_keys -- **sender** (*Required*): E-mail address of the sender. -- **recipient** (*Required*): Recipient of the notification. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +api_key: + description: Your SendGrid API key. + required: true + type: string +sender: + description: The e-mail address of the sender. + required: true + type: string +recipient: + description: The recipient of the notification. + required: true + type: string +{% endconfiguration %} To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.slack.markdown b/source/_components/notify.slack.markdown index e3b5911f859..3b978bda146 100644 --- a/source/_components/notify.slack.markdown +++ b/source/_components/notify.slack.markdown @@ -42,13 +42,28 @@ notify: default_channel: '#general' ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **api_key** (*Required*): The Slack API token to use for sending Slack messages. -- **default_channel** (*Required*): The default channel to post to if no channel is explicitly specified when sending the notification message. A channel can be specified adding a target attribute to the json at the same level as "message" -- **username** (*Optional*): Setting username will allow Home Assistant to post to Slack using the username specified. By default not setting this will post to Slack using the user account or botname that you generated the api_key as. -- **icon** (*Optional*): Use one of the Slack emojis as an Icon for the supplied username. Slack uses the standard emoji sets used [here](http://www.webpagefx.com/tools/emoji-cheat-sheet/). +{% configuration %} +name: + description: Setting this parameter allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: "notify" +api_key: + description: The Slack API token to use for sending Slack messages. + required: true + type: string +default_channel: + description: The default channel to post to if no channel is explicitly specified when sending the notification message. A channel can be specified adding a target attribute to the JSON at the same level as "message". + required: true + type: string +username: + description: Home Assistant will post to Slack using the username specified. + required: false + type: string + default: The user account or botname that you generated the API key as. +icon: + description: Use one of the Slack emojis as an Icon for the supplied username. Slack uses the standard emoji sets used [here](http://www.webpagefx.com/tools/emoji-cheat-sheet/). + required: false +{% endconfiguration %} ### {% linkable_title Slack service data %} diff --git a/source/_components/notify.smtp.markdown b/source/_components/notify.smtp.markdown index 130f3dcf0dc..7e10071eccf 100644 --- a/source/_components/notify.smtp.markdown +++ b/source/_components/notify.smtp.markdown @@ -26,19 +26,58 @@ notify: recipient: YOUR_RECIPIENT ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **sender** (*Required*): E-mail address of the sender. -- **recipient** (*Required*): E-mail address of the recipient of the notification. This can be a recipient address or a list of addresses for multiple recipients. -- **server** (*Optional*): SMTP server which is used to end the notifications. Defaults to `localhost`. -- **port** (*Optional*): The port that the SMTP server is using. Defaults to 587. -- **timeout** (*Optional*): The timeout in seconds that the SMTP server is using. Defaults to 5. -- **username** (*Optional*): Username for the SMTP account. -- **password** (*Optional*): Password for the SMTP server that belongs to the given username. If the password contains a colon it need to be wrapped in apostrophes. -- **encryption** (*Optional*): Set mode for encryption, `starttls`, `tls` or `none`. Defaults to `starttls`. -- **sender_name** (*Optional*): Sets a custom 'sender name' in the emails headers (*From*: Custom name ). -- **debug** (*Optional*): Enables Debug, eg. True or False. Defaults to False. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + type: string + default: notify +sender: + description: E-mail address of the sender. + required: true + type: string +recipient: + description: E-mail address of the recipient of the notification. This can be a recipient address or a list of addresses for multiple recipients. + required: true + type: [list, string] +server: + description: SMTP server which is used to end the notifications. + required: false + type: string + default: localhost +port: + description: The port that the SMTP server is using. + required: false + type: integer + default: 587 +timeout: + description: The timeout in seconds that the SMTP server is using. + required: false + type: integer + default: 5 +username: + description: Username for the SMTP account. + required: false + type: string +password: + description: Password for the SMTP server that belongs to the given username. If the password contains a colon it need to be wrapped in apostrophes. + required: false + type: string +encryption: + description: Set mode for encryption, `starttls`, `tls` or `none`. + required: false + type: string + default: starttls +sender_name: + description: "Sets a custom 'sender name' in the emails headers (*From*: Custom name )." + required: false + type: string +debug: + description: Enables Debug, eg. True or False. + required: false + type: boolean + default: false +{% endconfiguration %} A sample configuration entry for Google Mail. diff --git a/source/_components/notify.synology_chat.markdown b/source/_components/notify.synology_chat.markdown index a42f3934eed..6c1b8b3139d 100644 --- a/source/_components/notify.synology_chat.markdown +++ b/source/_components/notify.synology_chat.markdown @@ -31,6 +31,11 @@ name: description: "Setting the parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`." required: true type: string +verify_ssl: + description: If SSL/TLS verification for HTTPS resources needs to be turned off (for self-signed certs, etc.). + required: false + type: boolean + default: true resource: description: The incoming webhook URL. required: true @@ -38,3 +43,13 @@ resource: {% endconfiguration %} To use notifications, please see the [getting started with automation page](/getting-started/automation/). + +A full example of a service call: + +```json +{"message": "This is a test message", + "data":{ + "file_url":"https://example.com/wp-content/uploads/sites/14/2011/01/cat.jpg" + } + } +``` diff --git a/source/_components/notify.syslog.markdown b/source/_components/notify.syslog.markdown index 13683e8a8a2..24251869509 100644 --- a/source/_components/notify.syslog.markdown +++ b/source/_components/notify.syslog.markdown @@ -12,7 +12,6 @@ ha_category: Notifications ha_release: pre 0.7 --- - The `syslog` platform allows you to deliver notifications from Home Assistant to the local syslog. To enable syslog notifications in your installation, add the following to your `configuration.yaml` file: @@ -24,12 +23,28 @@ notify: platform: syslog ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **facility** (*Optional*): Facility according to RFC 3164 (http://tools.ietf.org/html/rfc3164). Default is 'syslog' if no value is given. Check the table below for entries. -- **option** (*Optional*): Log option. Default is 'pid' if no value is given. Check the table below for entries. -- **priority** (*Optional*): Priority of the messages. Default is 'info' if no value is given. Check the table below for entries. +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + default: notify + type: string +facility: + description: Facility according to RFC 3164 (http://tools.ietf.org/html/rfc3164). Check the table below for entries. + required: false + default: syslog + type: string +option: + description: Log option. Check the table below for entries. + required: false + default: pid + type: string +priority: + description: Priority of the messages. Check the table below for entries. + required: false + default: info + type: string +{% endconfiguration %} The table contains values to use in your `configuration.yaml` file. diff --git a/source/_components/notify.tplink_lte.markdown b/source/_components/notify.tplink_lte.markdown new file mode 100644 index 00000000000..727014eb34a --- /dev/null +++ b/source/_components/notify.tplink_lte.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "TP-Link LTE Notify" +description: "Instructions on how to add TP-Link LTE notifications to Home Assistant." +date: 2018-10-03 21:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: tp-link.png +ha_category: Notifications +ha_release: "0.83" +ha_iot_class: "Local Polling" +--- + +The `tplink_lte` platform allows you to use a TP-Link LTE router for notifications from Home Assistant. The message will be sent as an SMS text message. + +See the [TP-Link LTE component](/components/tplink_lte/) for configuration and setup instructions. diff --git a/source/_components/notify.twilio_sms.markdown b/source/_components/notify.twilio_sms.markdown index 162b34b34e8..651beaf6e77 100644 --- a/source/_components/notify.twilio_sms.markdown +++ b/source/_components/notify.twilio_sms.markdown @@ -23,12 +23,12 @@ To use this notification platform in your installation, add the following to you notify: - name: NOTIFIER_NAME platform: twilio_sms - from_number: E164_PHONE_NUMBER + from_number: E164_PHONE_NUMBER or SENDER_ID ``` {% configuration %} from_number: - description: An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like +14151234567. See [Twilio's guide to formatting phone numbers](https://www.twilio.com/help/faq/phone-numbers/how-do-i-format-phone-numbers-to-work-internationally) for more information. + description: An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like +14151234567. See [Twilio's guide to formatting phone numbers](https://www.twilio.com/help/faq/phone-numbers/how-do-i-format-phone-numbers-to-work-internationally) for more information. Alternatively, a sender ID can be used instead of a phone number. The sender ID must be formatted according to Twilio's guidelines. See [Twilio's guide to sender ID](https://support.twilio.com/hc/en-us/articles/223181348-Getting-started-with-Alphanumeric-Sender-ID) for more information. required: true type: string name: diff --git a/source/_components/notify.xmpp.markdown b/source/_components/notify.xmpp.markdown index 45f452f5a88..6c79aa48fa8 100644 --- a/source/_components/notify.xmpp.markdown +++ b/source/_components/notify.xmpp.markdown @@ -22,7 +22,7 @@ To enable Jabber notifications in your installation, add the following to your ` ```yaml # Example configuration.yaml entry notify: - - name: NOTIFIER_NAME + - name: NOTIFIER_NAME # e.g. jabber platform: xmpp sender: YOUR_JID password: YOUR_JABBER_ACCOUNT_PASSWORD @@ -34,7 +34,7 @@ name: description: "Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`." required: false type: string - default: Random Sensor + default: notify sender: description: "The Jabber ID (JID) that will act as origin of the messages. Add your JID including the domain, e.g. your_name@jabber.org." required: true @@ -61,7 +61,7 @@ verify: type: boolean default: true room: - description: Room's name (e.g., example@conference.jabber.org). If set, send a message to chatroom instead of the recipient. + description: "Room's name (e.g., example@conference.jabber.org). If set, send a message to chatroom instead of the recipient." required: false type: string {% endconfiguration %} @@ -74,4 +74,120 @@ room: All Jabber IDs (JID) must include the domain. Make sure that the password matches the account provided as sender. -To use notifications, please see the [getting started with automation page](/getting-started/automation/). +You can send text messages and images as well as other files through Jabber. + +### {% linkable_title Jabber Text Message %} + +Here are some examples on how to set up a script, that can be run from an automation. + +Number 1 shows a classical, text-only message. The Title is optional, although if omitted, +`Home-Assistant` will be set. To keep it empty set it to `""`. + +```yaml +# Example script.yaml entry +1_send_jabber_message: + alias: "Text only Jabber message" + sequence: + - service: notify.jabber # from notify.NOTIFIER_NAME + data: + title: "Optional Title" + message: "My funny or witty message" +``` + +### {% linkable_title Jabber Image Message %} + +You can send images or files from locally stored files or remote web locations via Jabber's HTTP Upload feature. +To send files and images, your jabber server must support [XEP_0363](https://xmpp.org/extensions/xep-0363.html). + +

+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. +
+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. +

+ +Number 2 sends only an image, retrieved from the URL. The TLS connection to get the image is also not verified (use with caution). + +```yaml +# Example script.yaml entry +2_send_jabber_message_with_image_url: + alias: "Send Image via Jabber from website" + sequence: + - service: notify.jabber + data: + title: "" + message: "" + data: + url: "https://www.graz.at:8443/webcam_neu/getimg.php" + verify: false +``` + +Number 3 sends an image from a local path. + +```yaml +# Example script.yaml entry +3_send_jabber_message_with_local_image_path: + alias: "Send Image via Jabber from local file" + sequence: + - service: notify.jabber + data: + title: "" + message: "" + data: + path: "/home/homeassistant/super_view.jpg" +``` + +### {% linkable_title Jabber File Message %} + + +Number 4 sends a text-file, retrieved from Github, renamed to `Hass_Cheatsheet.txt` to be viewable on a mobile Android device, as most don't offer any application to view `.md` files. Optionally you can add a timeout for the HTTP upload in seconds. + +```yaml +# Example script.yaml entry +4_send_jabber_message_with_file: + alias: "Send text file via Jabber" + sequence: + - service: notify.jabber + data: + title: "" + message: "" + data: + url: "https://raw.githubusercontent.com/arsaboo/homeassistant-config/master/HASS%20Cheatsheet.md" + path: "Hass_Cheatsheet.txt" + timeout: 10 +``` + +### {% linkable_title Templating %} + +Number 5 sends an image retrieved from a URL, and an additional text message with `title` and `message`. + +```yaml +# Example script.yaml entry +5_send_jabber_message_with_image_and_text: + alias: "Send Image and Text via Jabber" + sequence: + - service: notify.jabber + data: + title: "The Time is now" + message: "{% raw %} {{ {% endraw %}now(){% raw %} }} {% endraw %}, templating works as well..." + data: + url: "https://github.com/home-assistant/home-assistant.io/raw/next/source/images/favicon-192x192.png" +``` + +Number 6 sends an image from a templated URL. + +```yaml +# Example script.yaml entry +6_send_jabber_message_with_image_from_url_template: + alias: "Send Image from template URL via Jabber" + sequence: + - service: notify.jabber + data: + title: "" + message: "" + data: + url_template: "https://www.foto-webcam.eu/webcam/dornbirn/{% raw %}{{ now().year }}/{{ '%02d' % now().month }}/{{ '%02d' % now().day }}/{{ '%02d' % now().hour }}{{ (now().minute + 58) % 60 // 10}}{% endraw %}0_hd.jpg" +``` + +The possible source of a file is prioritized and only one will be picked up. `url_template` has the hightest priority; next is `url` then `path_template` and finally if none of them are defined `path` would be used. `path` will be used to eliminate file extension guessing for unknown URL downloads. Only the file extension will be left, as Home Assistant changes the filename to a random string for added privacy. + +To find out more about notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/nuimo_controller.markdown b/source/_components/nuimo_controller.markdown index e450fc515f0..cfbb5f66d89 100644 --- a/source/_components/nuimo_controller.markdown +++ b/source/_components/nuimo_controller.markdown @@ -19,14 +19,20 @@ To connect to a Nuimo device add the following section to your `configuration.ya ```yaml # Example configuration.yaml entry -nuimo_controller: +nuimo_controller: ``` -Configuration variables: - -- **mac** (*Optional*): Skip discovery and connect to this device address. -- **name** (*Optional*): To handle more than one device by names, add the name of the device. - +{% configuration %} +mac: + description: Skip discovery and connect to this device address. + required: false + type: string +name: + description: To handle more than one device by names, add the name of the device. + required: false + default: None + type: string +{% endconfiguration %} Example for testing rotation value and sending to the LED matrix: @@ -42,7 +48,7 @@ automation Nuimo_rotate_right: value_template: {% raw %}'{{ trigger.event.data.value > 100 }}'{% endraw %} action: service: nuimo_controller.led_matrix - data: + data: matrix: '........ 0000000. @@ -52,7 +58,7 @@ automation Nuimo_rotate_right: .00.000. .000000. .000000. - ........ ' + ........' interval: 0.5 ``` @@ -60,7 +66,7 @@ Troubleshooting: - use `hcitool lescan` to see the mac address of your device -- allow non-root user access to Bluetooth LE with `sudo setcap cap_net_raw+eip $(eval readlink -f $(which python))` +- allow non-root user access to Bluetooth LE with `sudo setcap cap_net_raw+eip $(eval readlink -f $(which python))` - install the newest version of [pygattlib](https://bitbucket.org/OscarAcena/pygattlib) from the repository, either because there is no binary package for your system or the pip version contains errors, with `pip install hg+https://bitbucket.org/OscarAcena/pygattlib --target $HOME/.homeassistant/deps`. (Dependencies of pygattlib: `sudo apt-get install pkg-config libboost-python-dev libboost-thread-dev libbluetooth-dev libglib2.0-dev python-dev`) diff --git a/source/_components/opentherm_gw.markdown b/source/_components/opentherm_gw.markdown index 62aa3def7f5..937062df83f 100644 --- a/source/_components/opentherm_gw.markdown +++ b/source/_components/opentherm_gw.markdown @@ -14,7 +14,7 @@ ha_iot_class: "Local Push" --- The `opentherm_gw` component is used to control the [OpenTherm Gateway](http://otgw.tclcode.com/) from Home Assistant. -When enabled, this component will automatically add it's [`climate` entity](/components/climate.opentherm_gw) to Home Assistant. +When enabled, this component will automatically add its [`climate` entity](/components/climate.opentherm_gw) to Home Assistant. # {% linkable_title Configuration %} @@ -45,7 +45,7 @@ climate: type: float default: "`0.5` for Celsius and `1.0` for Fahrenheit." floor_temperature: - description: "Some thermostats round all temperatures down to the lower value according to their precision. Default behavior for Home Assistant is to round temperatures to the nearest value. Set this to `True` to override Home Assistant and round to the lower value according to the configured `precision`." + description: "Some thermostats round all temperatures down to the lower value according to their precision. Default behavior for Home Assistant is to round temperatures to the nearest value. Set this to `true` to override Home Assistant and round to the lower value according to the configured `precision`." required: false type: boolean default: false @@ -255,6 +255,97 @@ monitored_variables: ## {% linkable_title Supported Variables %} The list above contains all supported variables. Note that not all boilers and thermostats properly support all variables, so the fact that a variable is listed here and published by your system does not necessarily mean that you will get useful data out of it. To see which variables are published in your situation, enable debug logging for the `opentherm_gw` component and look for the status updates. +# {% linkable_title Services %} + +### {% linkable_title Service `opentherm_gw.reset_gateway` %} + +Reset the OpenTherm Gateway. + +This service takes no parameters. + +### {% linkable_title Service `opentherm_gw.set_clock` %} + +Provide the time and day of week to the OpenTherm Gateway. The value provided here will be forwarded to the thermostat on the next date/time request from the thermostat. The OpenTherm Gateway does not have the ability to accurately keep track of time, so it will only retain the information provided here for a maximum of about 61 seconds. + +| Service data attribute | Optional | Default | Description | +| ---------------------- | -------- | ------- | ----------- | +| `date` | yes | Today's date | Date from which the day of week will be extracted. Format: `YYYY-MM-DD`. +| `time` | yes | Current time | Time in 24h format. + +### {% linkable_title Service `opentherm_gw.set_control_setpoint` %} + +

+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. +

+ +Set the central heating control setpoint override on the OpenTherm Gateway. +In a normal situation, the thermostat will calculate and control the central heating setpoint on the boiler. Setting this to any value other than 0 will enable the override and allow the OpenTherm Gateway to control this setting. While the override is active, the OpenTherm Gateway will also request your boiler to activate the central heating circuit. For your boiler's actual maximum and minimum supported setpoint value, please see the [`slave_ch_max_setp`](#slave_ch_max_setp) and [`slave_ch_min_setp`](#slave_ch_min_setp) variables. Due to the potential consequences of leaving this setting enabled for prolonged periods, the override will be disabled when Home Assistant is shut down or restarted. +**You will only need this if you are writing your own software thermostat.** + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `temperature` | no | The central heating setpoint. Values between `0.0` and `90.0` are accepted, but your boiler may not support the full range. Set to `0` to disable the override. + +

+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. +

+ +### {% linkable_title Service `opentherm_gw.set_gpio_mode` %} + +Configure the GPIO behavior on the OpenTherm Gateway. +For an explanation of the possible modes, see [GPIO modes](#gpio-modes) + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `id` | no | The GPIO ID, `A` or `B`. +| `mode` | no | The GPIO mode to be set. + +### {% linkable_title Service `opentherm_gw.set_led_mode` %} + +Configure the function of the LEDs on the OpenTherm Gateway. +For a list of possible modes with explanation, see [LED modes](#led-modes) + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `id` | no | The LED ID, accepted values are `A` through `F`. +| `mode` | no | The LED mode to be set. + +### {% linkable_title Service `opentherm_gw.set_max_modulation` %} + +

+Improper use of this service may impair the performance of your central heating system. +

+ +Set the maximum modulation level override on the OpenTherm Gateway. +In a normal situation, the thermostat will control the maximum modulation level on the boiler. Setting this to any value other than `-1` will enable the override and allow the OpenTherm Gateway to control this setting. Due to the potential consequences of leaving this setting enabled, the override will be disabled when Home Assistant is shut down or restarted. +**You will only need this if you are writing your own software thermostat.** + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `level` | no | The maximum modulation level. Accepted values are `-1` through `100`. Set to `-1` to disable the override. + +

+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. +

+ +### {% linkable_title Service `opentherm_gw.set_outside_temperature` %} + +Provide the outside temperature to the thermostat. +If your thermostat is unable to display an outside temperature and does not support OTC (Outside Temperature Correction), this has no effect. Note that not all thermostats are able to display the full supported range. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `temperature` | no | The outside temperature to provide to the thermostat. Accepted values are `-40.0` through `64.0`. Any value above `64.0` will clear a previously configured value (suggestion: `99`). + +### {% linkable_title Service `opentherm_gw.set_setback_temperature` %} + +Configure the setback temperature on the OpenTherm Gateway. +The value you provide here will be used with the GPIO `home` (5) and `away` (6) modes. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `temperature` | no | The setback temperature. Accepted values are `0.0` through `30.0`. + ## {% linkable_title GPIO modes %} Possible modes and their meaning for the GPIO pins are listed here: @@ -301,7 +392,7 @@ opentherm_gw: climate: name: Thermostat precision: 0.5 - floor_temperature: True + floor_temperature: true monitored_variables: - room_setpoint - room_temp diff --git a/source/_components/openuv.markdown b/source/_components/openuv.markdown index 9da2251ce68..8cdd5dbbb90 100644 --- a/source/_components/openuv.markdown +++ b/source/_components/openuv.markdown @@ -20,7 +20,7 @@ The `openuv` component displays UV and Ozone data from [openuv.io](http://openuv To generate an API key, [simply log in to the OpenUV website](https://www.openuv.io/auth/google).

-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).

## {% linkable_title Configuration %} @@ -98,18 +98,20 @@ To configure additional functionality, add configuration options beneath a `bina openuv: api_key: YOUR_OPENUV_API_KEY binary_sensors: - - uv_protection_window + monitored_conditions: + - uv_protection_window sensors: - - current_ozone_level - - current_uv_index - - current_uv_level - - max_uv_index - - safe_exposure_time_type_1 - - safe_exposure_time_type_2 - - safe_exposure_time_type_3 - - safe_exposure_time_type_4 - - safe_exposure_time_type_5 - - safe_exposure_time_type_6 + monitored_conditions: + - current_ozone_level + - current_uv_index + - current_uv_level + - max_uv_index + - safe_exposure_time_type_1 + - safe_exposure_time_type_2 + - safe_exposure_time_type_3 + - safe_exposure_time_type_4 + - safe_exposure_time_type_5 + - safe_exposure_time_type_6 ```

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: `` + - Identification: + - Username: + - Password: Can be left blank. + - Device ID: ` + - Tracker ID: Two character tracker ID. (can be left blank) + +Your tracker device will be known in home assistant as _. If you entered a Tracker ID the tid attribute will be set to that ID. + +### {% linkable_title Configuring the app - iOS %} + +[Install the OwnTracks application for iOS.](https://itunes.apple.com/us/app/owntracks/id692424691?mt=8) + +In the OwnTracks app, tap the (i) in the top left and click on settings. Change the following settings: + + - Mode: HTTP + - URL: `` + - Turn on authentication + - User ID: `` + +## {% linkable_title Advanced configuration %} + +OwnTracks allows the user to set advanced configuration by adding a section to your `configuration.yaml`. ```yaml # Example configuration.yaml entry -device_tracker: - - platform: owntracks +owntracks: ``` {% configuration %} @@ -63,37 +106,20 @@ A full sample configuration for the `owntracks` platform is shown below: ```yaml # Example configuration.yaml entry -device_tracker: - - platform: owntracks - max_gps_accuracy: 200 - waypoints: true - mqtt_topic: "owntracks/#" - events_only: true - waypoint_whitelist: - - jon - - ram - region_mapping: - cabin: home - office: work +owntracks: + max_gps_accuracy: 200 + waypoints: true + mqtt_topic: "owntracks/#" + events_only: true + waypoint_whitelist: + - jon + - ram + region_mapping: + cabin: home + office: work ``` -### {% linkable_title Using Owntracks with other device trackers %} - -Owntracks can also be used with other device trackers, such as [Nmap](/components/device_tracker.nmap_tracker/) or [Netgear](/components/device_tracker.netgear/). To do this, fill in the `mac` field to the Owntracks entry in `known_devices.yaml` with the MAC address of the device you want to track. This way the state of the device will be determined by the source that reported last. The naming convention for known device list is `_` and could be set in app configuration. More details about this config can found in [device tracker](/components/device_tracker/). - -An example showing the inclusion of the `mac` field for multiple component tracking. The `mac` field will need to be added to the `owntracks` device and will enable tracking by all components that track via the `mac` address. - -```yaml -USERNAME_DEVICE_ID: - name: Friendly Name - 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 -``` - -### {% linkable_title Using Owntracks regions %} +## {% linkable_title Using Owntracks regions %} Owntracks can track regions, and send region entry and exit information to Home Assistant (HA). You set up a region in the Owntracks app which you should name the same as your HA Zone, and then make sure to turn on the `share` option for the region in the owntracks app. Please see the [owntracks documentation](http://owntracks.org/booklet/guide/waypoints/). @@ -101,10 +127,10 @@ Home Assistant will use the enter and leave messages to set your zone location. When you exit a zone, Home Assistant will start using location updates to track you again. To make sure that Home Assistant correctly exits a zone (which it calculates based on your GPS coordinates), you may want to set your Zone radius in HA to be slightly smaller that the Owntracks region radius. -### {% linkable_title Using Owntracks regions - forcing Owntracks to update using iBeacons %} +## {% linkable_title Using Owntracks regions - forcing Owntracks to update using iBeacons %}

-Owntracks v2.0.0 removes support for iBecons on Android. +Owntracks v2.0.0 removes support for iBeacons on Android.

When run in the usual *significant changes mode* (which is kind to your phone battery), Owntracks sometimes doesn't update your location as quickly as you'd like when you arrive at a zone. This can be annoying if you want to trigger an automation when you get home. You can improve the situation using iBeacons. @@ -117,7 +143,7 @@ When you exit an iBeacon region HA will switch back to using GPS to determine yo Sometimes Owntracks will lose connection with an iBeacon for a few seconds. If you name your beacon starting with `-` Owntracks will wait longer before deciding it has exited the beacon zone. HA will ignore the `-` when it matches the Owntracks region with Zones. So if you call your Owntracks region `-home` then HA will recognize it as `home`, but you will have a more stable iBeacon connection. -### {% linkable_title Using Owntracks iBeacons to track devices %} +## {% linkable_title Using Owntracks iBeacons to track devices %} iBeacons don't need to be stationary. You could put one on your key ring, or in your car. @@ -127,13 +153,29 @@ To use mobile iBeacons with HA, you just set up a region that doesn't match your This allows you to write zone automations for devices that can't track themselves (for example *alert me if I leave the house and my keys are still at home*). Another example would be *open the gates if my car arrives home*. -### {% linkable_title Using mobile and fixed iBeacons together %} +## {% linkable_title Using mobile and fixed iBeacons together %} You can use iBeacons of both types together, so if you have a Zone `drive` with an iBeacon region called `-drive` and you arrive home with a mobile iBeacon called `-car`, then `device_tracker.beacon_car` will be set to a state of `drive`. -### {% linkable_title Importing Owntracks waypoints as zones %} +## {% linkable_title Importing Owntracks waypoints as zones %} By default, any Owntracks user connected to Home Assistant can export their waypoint definitions (from the *Export - Export to Endpoint* menu item) which will then be translated to zone definitions in Home Assistant. The zones will be named `- - `. This functionality can be controlled in 2 ways: 1. The configuration variable `waypoints` can be set to `false` which will disable importing waypoints for all users. 2. The configuration variable `waypoint_whitelist` can contain a list of users who are allowed to import waypoints. + +## {% linkable_title Using Owntracks with other device trackers %} + +Owntracks can also be used with other device trackers, such as [Nmap](/components/device_tracker.nmap_tracker/) or [Netgear](/components/device_tracker.netgear/). To do this, fill in the `mac` field to the Owntracks entry in `known_devices.yaml` with the MAC address of the device you want to track. This way the state of the device will be determined by the source that reported last. The naming convention for known device list is `_` and could be set in app configuration. More details about this config can found in [device tracker](/components/device_tracker/). + +An example showing the inclusion of the `mac` field for multiple component tracking. The `mac` field will need to be added to the `owntracks` device and will enable tracking by all components that track via the `mac` address. + +```yaml +USERNAME_DEVICE_ID: + name: Friendly Name + mac: EA:AA:55:E7:C6:94 + picture: https://www.home-assistant.io/images/favicon-192x192.png + gravatar: test@example.com + track: true + hide_if_away: false +``` diff --git a/source/_components/panel_custom.markdown b/source/_components/panel_custom.markdown index 34f8ec63e2f..0199458e5ba 100644 --- a/source/_components/panel_custom.markdown +++ b/source/_components/panel_custom.markdown @@ -33,15 +33,48 @@ panel_custom: Store your custom panels in `/www` to make them available in the frontend at the path `/local`.

-Configuration variables: - -- **name** (*Required*): Name of the web component that renders your panel. -- **sidebar_title** (*Optional*): Friendly title for the panel in the sidebar. Omitting it means no sidebar entry (but still accessible through the URL). -- **sidebar_icon** (*Optional*): Icon for entry. Pick an icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) to use for your input and prefix the name with `mdi:`. For example `mdi:car`, `mdi:ambulance`, or `mdi:motorbike`. -- **url_path** (*Optional*): The URL your panel will be available on in the frontend. If omitted will default to the panel name. -- **js_url** (*Required*): The URL that contains the JavaScript of your panel. This is exclusive to `module_url` and `webcomponent_path`. -- **module_url** (*Optional*): The URL that contains the JavaScript module of your panel. Loaded as a JavaScript module instead of a script. This is exclusive to `js_url` and `webcomponent_path`. -- **config** (*Optional*): Configuration to be passed into your web component when being instantiated. -- **embed_iframe** (*Optional*): Set to `true` to embed panel in iframe. This is necessary if the panel is using the React framework or if it contains conflicting web components. -- **trust_external_script** (*Optional*): By default the user has to confirm before loading a script from an external source. Setting this to `true` will omit this confirmation. -- **webcomponent_path** (*Optional* *DEPRECATED*): The HTML path to your component. If omitted will default to `/panels/.html` This is exclusive to `js_url` and `module_url`. +{% configuration %} +name: + description: Name of the web component that renders your panel. + required: true + type: string +sidebar_title: + description: Friendly title for the panel in the sidebar. Omitting it means no sidebar entry (but still accessible through the URL). + required: false + type: string +sidebar_icon: + description: Icon for entry. Pick an icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) to use for your input and prefix the name with `mdi:`. For example `mdi:car`, `mdi:ambulance`, or `mdi:motorbike`. + required: false + default: "mdi:bookmark" + type: icon +url_path: + description: The URL your panel will be available on in the frontend. If omitted will default to the panel name. + required: false + type: string +js_url: + description: The URL that contains the JavaScript of your panel. This is exclusive to `module_url` and `webcomponent_path`. + required: exclusive + type: string +module_url: + description: The URL that contains the JavaScript module of your panel. Loaded as a JavaScript module instead of a script. This is exclusive to `js_url` and `webcomponent_path`. + required: exclusive + type: string +config: + description: Configuration to be passed into your web component when being instantiated. + required: false + type: list +embed_iframe: + description: Set to `true` to embed panel in iframe. This is necessary if the panel is using the React framework or if it contains conflicting web components. + required: false + default: false + type: boolean +trust_external_script: + description: By default the user has to confirm before loading a script from an external source. Setting this to `true` will omit this confirmation. + required: false + default: false + type: boolean +webcomponent_path: + description: The HTML path to your component. If omitted will default to `/panels/.html` This is exclusive to `js_url` and `module_url`. + required: exclusive *DEPRECATED* + type: string +{% endconfiguration %} diff --git a/source/_components/plant.markdown b/source/_components/plant.markdown index b133b98f942..83aeab9f7f5 100644 --- a/source/_components/plant.markdown +++ b/source/_components/plant.markdown @@ -32,31 +32,89 @@ plant: min_moisture: 20 ``` -Configuration variables: - -- **entity_id** (*Required*): Set by you and is used by the component as the `entity_id`. - - **sensors** (*Required*): - - **moisture** (*Optional*): Moisture of the plant. Measured in %. Can have a min and max value set optionally. - - **battery** (*Optional*): Battery level of the plant sensor. Measured in %. Can only have a min level set optionally. - - **temperature:** (*Optional*): Temperature of the plant. Measured in degrees Celsius. Can have a min and max value set optionally. - - **conductivity:** (*Optional*): Conductivity of the plant. Measured in µS/cm. Can have a min and max value set optionally. - - **brightness:** (*Optional*): Light exposure of the plant. Measured in Lux. Can have a min and max value set optionally. - - **min_moisture** (*Optional*): Minimum moisture level before triggering a problem. Typical value: 20 - - **max_moisture** (*Optional*): Maximum moisture level before triggering a problem. Typical value: 60 - - **min_battery** (*Optional*): Minimum battery level before triggering a problem. Typical value: 20 - - **min_conductivity** (*Optional*): Minimum conductivity level before triggering a problem. Typical value: 500 - - **max_conductivity** (*Optional*): Maximum conductivity level before triggering a problem. Typical value: 3000 - - **min_temperature** (*Optional*): Minimum temperature before triggering a problem. - - **max_temperature** (*Optional*): Maximum temperature before triggering a problem. - - **min_brightness** (*Optional*): Minimum brightness before triggering a problem. In contrast to the other values, this check is *not* looking at the current situation, but rather at the last days. A problem is only reported if the maximum brightness over the last days was lower than min_brightness. You can use this to check if the plant gets enough light during the course of the day. - - **max_brightness** (*Optional*): Maximum brightness before triggering a problem. - - **check_days** (*Optional*): time interval (in days) used when checking **min_brightness**, if not set, the default value is 3 +{% configuration %} +entity_id: + description: Set by you and is used by the component as the `entity_id`. + required: true + type: list + keys: + sensors: + description: List of sensor measure entities. + required: true + type: list + keys: + moisture: + description: Moisture of the plant. Measured in %. Can have a min and max value set optionally. + required: false + type: string + battery: + description: Battery level of the plant sensor. Measured in %. Can only have a min level set optionally. + required: false + type: string + temperature: + description: Temperature of the plant. Measured in degrees Celsius. Can have a min and max value set optionally. + required: false + type: string + conductivity: + description: Conductivity of the plant. Measured in µS/cm. Can have a min and max value set optionally. + required: false + type: string + brightness: + description: Light exposure of the plant. Measured in Lux. Can have a min and max value set optionally. + required: false + type: string + min_moisture: + description: Minimum moisture level before triggering a problem. + required: false + default: 20 + type: integer + max_moisture: + description: Maximum moisture level before triggering a problem. + required: false + default: 60 + type: integer + min_battery: + description: Minimum battery level before triggering a problem. + required: false + default: 20 + type: integer + min_conductivity: + description: Minimum conductivity level before triggering a problem. + required: false + default: 500 + type: integer + max_conductivity: + description: Maximum conductivity level before triggering a problem. + required: false + default: 3000 + type: integer + min_temperature: + description: Minimum temperature before triggering a problem. + required: false + type: float + max_temperature: + description: Maximum temperature before triggering a problem. + required: false + type: float + min_brightness: + description: Minimum brightness before triggering a problem. In contrast to the other values, this check is *not* looking at the current situation, but rather at the last days. A problem is only reported if the maximum brightness over the last days was lower than min_brightness. You can use this to check if the plant gets enough light during the course of the day. + required: false + type: integer + max_brightness: + description: Maximum brightness before triggering a problem. + required: false + type: integer + check_days: + description: time interval (in days) used when checking `min_brightness`. + required: false + default: 3 + type: integer +{% endconfiguration %} ## {% linkable_title Examples %} ### Using plain MQTT sensor to get the data This is a practical example that uses a multiple of `MQTT sensors` to supply the readings used by the `plant` sensor. -Another good source of this data would be the [Mi Flora](/components/sensor.miflora/) component. - +Another good source of this data would be the [Mi Flora](/components/sensor.miflora/) component. If the sensor data is within the min/max values the status will be `ok`, if not the status will be `problem`. You can use this to trigger a notification, if there is a problem with your plant. Of course you can only monitor attributes of your plant, where the sensor is configured and is providing the data. @@ -67,6 +125,7 @@ The main sources of the data will usually be a [MiFlora sensor](/components/sens If you want to get the date via a PlantGateway, this is a typical configuration for the MQTT sensors: {% raw %} + ```yaml # Example configuration.yaml entry plant: @@ -82,29 +141,35 @@ plant: min_battery: 17 min_conductivity: 500 min_temperature: 15 - + sensor: - platform: mqtt name: my_plant_moisture state_topic: my_plant_topic - value_template: '{{ value_json.moisture }}' + value_template: '{{ value_json.moisture | int }}' + unit_of_measurement: '%' - platform: mqtt name: my_plant_battery state_topic: my_plant_topic - value_template: '{{ value_json.battery }}' + value_template: '{{ value_json.battery | int }}' + unit_of_measurement: '%' - platform: mqtt name: my_plant_temperature state_topic: my_plant_topic - value_template: '{{ value_json.temperature }}' + value_template: '{{ value_json.temperature | float }}' + unit_of_measurement: '°C' - platform: mqtt name: my_plant_conductivity state_topic: my_plant_topic - value_template: '{{ value_json.conductivity }}' + value_template: '{{ value_json.conductivity | int }}' + unit_of_measurement: 'µS/cm' - platform: mqtt name: my_plant_brightness state_topic: my_plant_topic - value_template: '{{ value_json.brightness }}' + value_template: '{{ value_json.brightness | int }}' + unit_of_measurement: 'Lux' ``` + {% endraw %} You have to replace the `state_topic` with the value that you configured in the PlantGateway. It also depends on the global configuration of your MQTT server. diff --git a/source/_components/plum_lightpad.markdown b/source/_components/plum_lightpad.markdown new file mode 100644 index 00000000000..9270f86b9dc --- /dev/null +++ b/source/_components/plum_lightpad.markdown @@ -0,0 +1,49 @@ +--- +layout: page +title: "Plum Lightpad" +description: "Instructions on setting up Plum Lightpads within Home Assistant." +date: 2018-10-15 17:58 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Switch +ha_iot_class: "Local Push" +featured: true +logo: plum.png +ha_release: 0.85 +redirect_from: + - /components/binary_sensor.plum_lightpad/ + - /components/light.plum_lightpad/ + - /components/sensor.plum_lightpad/ +--- + +Configurable/Dimmable WiFi Lightswitch +- Cloud registered, Local API communication (both RESTful and TCP pushed events) +- Motion Sensor +- Energy Meter +- RGB Glow Ring +- Wifi & Bluetooth connectivity +- Phone Apps for iOS & Android + +## {% linkable_title Configuration %} + +To enable Plum Lightpad support, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +plum_lightpad: + username: YOUR_CLOUD_USERNAME + password: YOUR_CLOUD_PASSWORD +``` + +{% configuration %} +username: + required: true + description: Your Plum Cloud username. + type: string +password: + required: true + description: Your Plum Cloud password. + type: string +{% endconfiguration %} diff --git a/source/_components/point.markdown b/source/_components/point.markdown new file mode 100644 index 00000000000..4e5fdae6ddc --- /dev/null +++ b/source/_components/point.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "Minut Point" +description: "Instructions on how to integrate Minut Point into Home Assistant." +date: 2018-11-19 +sidebar: true +comments: false +sharing: true +footer: true +logo: minut.svg +ha_category: Hub +featured: false +ha_release: "0.83" +ha_iot_class: "Cloud Polling" +ha_qa_scale: silver +--- + +The Point component is the main component to integrate the [Minut Point](https://minut.com/). To connect Point, you will have to [sign up for a developer account](https://minut.com/community/developers/) and get a `client_id` and `client_secret` using the `callback url` as `base_url` + `/api/minut` eg. `http://localhost:8123/api/minut`. The `client_id` and `client_secret` should be used as below. + +Once Home Assistant is started, a configurator will pop up asking you to Authenticate your Point account via a link when you follow the link and have clicked on **Accept** you will be redirected to the `callback url` and the Point integration will be automatically configured and you can go back to the original dialog and press **Submit**. + +### {% linkable_title Configuration %} + +```yaml +# Example configuration.yaml entry +point: + client_id: CLIENT_ID + client_secret: CLIENT_SECRET +``` + +{% configuration %} +client_id: + description: Your Minut Point developer client ID. + required: true + type: string +client_secret: + description: Your Minut Point developer client secret. + required: true + type: string +{% endconfiguration %} + +

+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. +

diff --git a/source/_components/prometheus.markdown b/source/_components/prometheus.markdown index ea36b0278df..f6e09c07ba3 100644 --- a/source/_components/prometheus.markdown +++ b/source/_components/prometheus.markdown @@ -21,16 +21,43 @@ To use the `prometheus` component in your installation, add the following to you prometheus: ``` -Configuration variables: - -- **namespace** (*Optional*): The "namespace" that will be assigned to all the Prometheus metrics. This is the prefix of the metric name. E.g., having `myhass` as the namespace will cause the device tracker metrics to be `myhass_device_tracker_state`, the switch metrics to be `myhass_switch_state` and so on. The default is to not add any prefix to the metrics name. (available in version 0.73.0 and later) -- **filter** (*Optional*): Filtering directives for the components which should be included or excluded from recording. - - **exclude** (*Optional*): Excluded from recording. - - **entities** (*Optional*): The list of entity ids to be excluded from recording. - - **domains** (*Optional*): The list of domains to be excluded from recording. - - **include** (*Optional*): Included in recordings. If set, all other entities will not be recorded. Values set by the **exclude** option will prevail. - - **entities** (*Optional*): The list of entity ids to be included from recordings. - - **domains** (*Optional*): The list of domains to be included from recordings. +{% configuration %} +namespace: + description: The "namespace" that will be assigned to all the Prometheus metrics. This is the prefix of the metric name. E.g., having `myhass` as the namespace will cause the device tracker metrics to be `myhass_device_tracker_state`, the switch metrics to be `myhass_switch_state` and so on. The default is to not add any prefix to the metrics name. (available in version 0.73.0 and later) + required: false + type: string +filter: + description: Filtering directives for the components which should be included or excluded from recording. + required: false + type: list + keys: + exclude: + description: Excluded from recording. + required: false + type: list + keys: + entities: + description: The list of entity ids to be excluded from recording. + required: false + type: list + domains: + description: The list of domains to be excluded from recording. + required: false + type: list + include: + description: Included in recordings. If set, all other entities will not be recorded. Values set by the **exclude** option will prevail. + required: false + type: list + keys: + entities: + description: The list of entity ids to be included from recordings. + required: false + type: list + domains: + description: The list of domains to be included from recordings. + required: false + type: list +{% endconfiguration %} You can then configure Prometheus to fetch metrics from Home Assistant by adding to its `scrape_configs` configuration. @@ -39,14 +66,14 @@ You can then configure Prometheus to fetch metrics from Home Assistant by adding - job_name: 'hass' scrape_interval: 60s metrics_path: /api/prometheus - + # Legacy api password params: api_password: ['PASSWORD'] - + # Long-Lived Access Token - bearer_token: 'your.longlived.token - + bearer_token: 'your.longlived.token' + scheme: https static_configs: - targets: ['HOSTNAME:8123'] @@ -54,7 +81,7 @@ You can then configure Prometheus to fetch metrics from Home Assistant by adding When looking into the metrics on the Prometheus side, there will be: - - All Home Assistant domains, which can be easily found through the common **namespace** prefix, if defined. - - The [client library](https://github.com/prometheus/client_python) provided metrics, which are a bunch of **process_\*** and also a single pseudo-metric **python_info** which contains (not as value but as labels) information about the Python version of the client, i.e., the Home Assistant Python interpreter. +- All Home Assistant domains, which can be easily found through the common **namespace** prefix, if defined. +- The [client library](https://github.com/prometheus/client_python) provided metrics, which are a bunch of **process_\*** and also a single pseudo-metric **python_info** which contains (not as value but as labels) information about the Python version of the client, i.e., the Home Assistant Python interpreter. Typically, you will only be interested in the first set of metrics. diff --git a/source/_components/proximity.markdown b/source/_components/proximity.markdown index 36046ef9135..1c2cc0563cc 100644 --- a/source/_components/proximity.markdown +++ b/source/_components/proximity.markdown @@ -33,6 +33,11 @@ The Proximity entity which is created has the following values: - 'unknown' - 'stationary' - `dist_to_zone`: Distance from the monitored zone (in km) +- `unit_of_measurement`: Measurement of distance. Values are: + - 'km' + - 'm' + - 'mi' + - 'ft' To enable this component in your installation, add the following to your `configuration.yaml` file: @@ -48,13 +53,30 @@ proximity: unit_of_measurement: mi ``` -Configuration variables: - -- **zone** (*Optional*): The zone to which this component is measuring the distance to. Default is the home zone. -- **ignored_zones** array (*Optional*): Where proximity is not calculated for a device (either the device being monitored or ones being compared (e.g., work or school). -- **devices** array (*Optional*): A list of devices to compare location against to check closeness to the configured zone. -- **tolerance** (*Optional*): The tolerance used to calculate the direction of travel in meters (m) to filter out small GPS coordinate changes. -- **unit_of_measurement** (*Optional*): The unit of measurement for distance. Valid values are (km, m, mi, ft) [kilometers, meters, miles and feet respectively]. The default value is kilometers. +{% configuration %} +zone: + description: The zone to which this component is measuring the distance to. Default is the home zone. + required: false + type: map + keys: + ignored_zones: + description: Where proximity is not calculated for a device (either the device being monitored or ones being compared (e.g., work or school). + required: false + type: list + devices: + description: A list of devices to compare location against to check closeness to the configured zone. + required: false + type: list + tolerance: + description: The tolerance used to calculate the direction of travel in meters (m) to filter out small GPS coordinate changes. + required: false + type: integer + unit_of_measurement: + description: The unit of measurement for distance. Valid values are (km, m, mi, ft) [kilometers, meters, miles and feet respectively]. + required: false + type: string + default: km +{% endconfiguration %} To add multiple proximity components, simply use a list in your `configuration.yaml` file: @@ -72,10 +94,12 @@ proximity: tolerance: 50 unit_of_measurement: mi home3: + zone: home3 devices: - device_tracker.iphone1 tolerance: 50 work: + zone: work devices: - device_tracker.iphone2 tolerance: 10 diff --git a/source/_components/qwikswitch.markdown b/source/_components/qwikswitch.markdown index e915be3979f..9017de6e717 100644 --- a/source/_components/qwikswitch.markdown +++ b/source/_components/qwikswitch.markdown @@ -17,7 +17,7 @@ The `qwikswitch` component is the main component to integrate various [QwikSwitc The `qwikswitch` component discovers all devices from QS Mobile. Currently, Relays and LED dimmers are discovered in Home Assistant. Relay devices are [lights](/components/light.qwikswitch/) by default, and can be configured as [switches](/components/switch.qwikswitch/). -Example configuration: +{% linkable_title Configuration %} ```yaml # Example configuration.yaml entry @@ -25,13 +25,61 @@ qwikswitch: url: http://127.0.0.1:2020 ``` -Configuration variables: - -- **url** (*Required*): The URL including the port of your QwikSwitch hub. -- **dimmer_adjust** (*Optional*): A decimal value to adjust the brightness of the dimmer exponentially. Increasing this value allows dimmers that reach full brightness with low values in QS Mobile to appear more linear in Home Assistant. Recommended values between 1 and 2 and the default is 1. -- **button_events** (*Optional*): A comma-separated list of button types that will generate events. See [QwikSwitch Events] for detail. -- **switches** (*Optional*): A list of device QS_id's that should be switches, and not lights (i.e. `['@0dev01', '@0dev02']`) -- **sensors** (*Optional*): A dictionary of sensors. In the format of {entity_id: QS_id}. (i.e. `{door_sensor: '@0dev03'}`) +{% configuration %} +url: + description: The URL including the port of your QwikSwitch hub. + required: true + type: string +dimmer_adjust: + description: A decimal value to adjust the brightness of the dimmer exponentially. Increasing this value allows dimmers that reach full brightness with low values in QS Mobile to appear more linear in Home Assistant. Recommended values between 1 and 2 and the default is 1. + required: false + type: float + default: 1 +button_events: + description: A comma-separated list of button types that will generate events. See [QwikSwitch Events] for detail. + required: false + default: TOGGLE,SCENE EXE,LEVEL + type: string +switches: + description: A list of device QS_id's that should be switches, and not lights (i.e. `['@0dev01', '@0dev02']`) + required: false + type: list +sensors: + description: A dictionary of sensors. + required: false + type: list + keys: + name: + description: The sensor name from which the entity_id will be derived. + required: true + id: + description: A QS_Id + required: true + type: string + type: + description: | + The Qwikswitch sensor type. These could include: + - imod (binary_sensor, up to 6 channels) + - door (binary_sensor, single channel) + - qwikcord (Channel 1 = CTavg, Channel 2 = CTsum) + required: true + type: string + channel: + description: The channel of interest. Refer to type above. + required: false + default: 1 + type: int + invert: + description: Invert the open/close state. Only applicable to binary_sensors + required: false + default: false + type: string + class: + description: The [class](components/binary_sensor) or binary_sensor. Only applicable to binary_sensors. + required: false + default: door + type: string +{% endconfiguration %} ### {% linkable_title QwikSwitch Events %} @@ -60,19 +108,7 @@ On some QS Mobile servers button events are only generated for switches added to ### {% linkable_title Qwikswitch Sensors %} -The sensor configuration is a list of sensors. Depending on the type, it will be a sensor or binary_sensor. Each sensor is configured with the following parameters: - -- **name** (*Required*): The sensor name from which the entity_id will be derived. -- **id** (*Required*): A QS_Id -- **type** (*Required*): The Qwikswitch sensor type. These could include: - - imod (binary_sensor, up to 6 channels) - - door (binary_sensor, single channel) - - qwikcord (Channel 1 = CTavg, Channel 2 = CTsum) -- **channel** (*Optional, default=1*): The channel of interest. Refer to type above. - -The following parameters are only applicabe to binary_sensors (i.e. door/imod). -- **invert** (*Optional, default=False): Invert the open/close state. -- **class** (*Optional, default=door): The [class](https://www.home-assistant.io/components/binary_sensor) or binary_sensor. +The sensor configuration is a list of sensors. Depending on the type of sensor, it will be a sensor or binary_sensor. Example sensor configuration: diff --git a/source/_components/rainmachine.markdown b/source/_components/rainmachine.markdown index c82d3cfc9b3..8745c523682 100644 --- a/source/_components/rainmachine.markdown +++ b/source/_components/rainmachine.markdown @@ -23,8 +23,9 @@ To connect to your RainMachine device, add the following to your ```yaml rainmachine: - ip_address: 192.168.1.100 - password: YOUR_PASSWORD + controllers: + - ip_address: 192.168.1.100 + password: YOUR_PASSWORD ``` To configure additional functionality, add configuration options beneath @@ -33,67 +34,68 @@ sections of `configuration.yaml` as below: ```yaml rainmachine: - ip_address: 192.168.1.100 - password: YOUR_PASSWORD - binary_sensors: - # binary sensor configuration options... - sensors: - # sensor configuration options... - switches: - # switch configuration options... + controllers: + - ip_address: 192.168.1.100 + password: YOUR_PASSWORD + binary_sensors: + # binary sensor configuration options... + sensors: + # sensor configuration options... + switches: + # switch configuration options... ``` {% configuration %} ip_address: - description: the IP address or hostname of your RainMachine unit + description: The IP address or hostname of your RainMachine unit. required: optional type: string password: - description: your RainMachine password. + description: Your RainMachine password. required: true type: string port: - description: the TCP port used by your unit for the REST API + description: The TCP port used by your unit for the REST API. required: false type: integer default: 8080 ssl: - description: whether communication with the local device should occur over HTTPS + description: Whether communication with the local device should occur over HTTPS. required: false type: boolean default: true scan_interval: - description: the frequency (in seconds) between data updates + description: The frequency (in seconds) between data updates. required: false type: integer default: 60 binary_sensors: - description: binary sensor-related configuration options + description: Binary sensor-related configuration options. required: false type: map keys: monitored_conditions: - description: the conditions to create sensors from + description: The conditions to create sensors from. required: false type: list default: all (`extra_water_on_hot_days`, `freeze`, `freeze_protection`, `hourly`, `month`, `raindelay`, `rainsensor`, `weekday`) sensors: - description: sensor-related configuration options + description: Sensor-related configuration options. required: false type: map keys: monitored_conditions: - description: the conditions to create sensors from + description: The conditions to create sensors from. required: false type: list default: all (`freeze_protect_temp`) switches: - description: switch-related configuration options + description: Switch-related configuration options. required: false type: map keys: zone_run_time: - description: the default number of seconds that a zone should run when turned on + description: The default number of seconds that a zone should run when turned on. required: false type: integer default: 600 diff --git a/source/_components/recorder.markdown b/source/_components/recorder.markdown index afda7241aad..9870481c72d 100644 --- a/source/_components/recorder.markdown +++ b/source/_components/recorder.markdown @@ -131,32 +131,23 @@ Call the service `recorder.purge` to start a purge task which deletes events and | `keep_days` | yes | The number of history days to keep in recorder database (defaults to the component `purge_keep_days` configuration) | `repack` | yes | Rewrite the entire database, possibly saving some disk space. Only supported for SQLite and requires at least as much disk space free as the database currently uses. -### {% linkable_title Restore State %} - -If the `recorder` component is activated then some components support `restore_state`, which will restore the state of the entity after Home Assistant is started to the state before Home Assistant was stopped. Please make sure that you do not exclude the entities for which you want the state to be restored from your recordings. An incomplete list of components that currently support `restore_state`: - -* [`input_boolean`](/components/input_boolean/#restore-state) -* [`input_number`](/components/input_number/#restore-state) -* [`input_select`](/components/input_select/#restore-state) -* [`input_datetime`](/components/input_datetime/#restore-state) -* [`input_text`](/components/input_text/#restore-state) - +

+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. +

## {% linkable_title Custom database engines %} | Database engine | `db_url` | | :---------------|:---------------------------------------------------------| | SQLite | `sqlite:////PATH/TO/DB_NAME` | -| MariaDB | `mysql://SERVER_IP/DB_NAME?charset=utf8` | -| MariaDB         | `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | -| MySQL | `mysql://SERVER_IP/DB_NAME?charset=utf8` | -| MySQL           | `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | -| MySQL (pymysql) | `mysql+pymysql://SERVER_IP/DB_NAME?charset=utf8` | -| MySQL (pymysql) | `mysql+pymysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | +| MariaDB | `mysql+pymysql://SERVER_IP/DB_NAME?charset=utf8` | +| MariaDB         | `mysql+pymysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | +| MySQL | `mysql://SERVER_IP/DB_NAME?charset=utf8` | +| MySQL | `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | | PostgreSQL | `postgresql://SERVER_IP/DB_NAME` | -| PostgreSQL | `postgresql://scott:tiger@SERVER_IP/DB_NAME` | +| PostgreSQL | `postgresql://user:password@SERVER_IP/DB_NAME` | | PostgreSQL (Socket) | `postgresql://@/DB_NAME` | -| MS SQL Server | `mssql+pymssql://user:pass@SERVER_IP/DB_NAME?charset=utf8` | +| MS SQL Server | `mssql+pymssql://user:password@SERVER_IP/DB_NAME?charset=utf8` |

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 ```_complete_task``` with the parameter ```id``` will then complete your task. +If you have created your task with an ```id```, calling ```_complete_task``` with the parameter ```id``` will then complete your task. -|Service data attribute | Optional | Description | Example | +|Service data attribute | Optional | Description | Example | |-----------------------|----------|-------------|---------| | id | no | Identifier that was defined when creating the task | "myid" | @@ -89,7 +87,6 @@ If you have created your task with an ```id```, calling ```_complete_ta Here's an example for an automation that creates a new task whenever ```sensor.mysensor``` is ```on``` and completes it when the sensor reports ```off```. This way it reminds you to switch it off. By using the ```entity_id``` as id for the task, you can use the same rule also for multiple sensors. - ```yaml - id: mysensor_on trigger: @@ -113,7 +110,6 @@ Here's an example for an automation that creates a new task whenever ```sensor.m ``` - - ## {% linkable_title Disclaimer %} + This product uses the Remember The Milk API but is not endorsed or certified by Remember The Milk. diff --git a/source/_components/remote.harmony.markdown b/source/_components/remote.harmony.markdown index 3d9743b3715..02a098eb5db 100644 --- a/source/_components/remote.harmony.markdown +++ b/source/_components/remote.harmony.markdown @@ -75,6 +75,8 @@ Upon startup one file will be written to your Home Assistant configuration direc - List of all programmed device names and ID numbers - List of all available commands per programmed device +This file will be overwritten whenever the Harmony HUB has a new configuration, there is no need to restart HASS. + ### {% linkable_title Service `remote.turn_off` %} Turn off all devices that were switched on from the start of the current activity. @@ -97,8 +99,14 @@ Start an activity. Will start the default `activity` from configuration.yaml if In the file 'harmony_REMOTENAME.conf' you can find the available activities, for example: ```text -Activities - 22054907 - Watch TV +{ + "Activities": { + "-1": "PowerOff", + "20995306": "Watch TV", + "20995307": "Play Games", + "20995308": "Listen Music" + } +} ``` Using the activity name 'Watch TV', you can call a service via automation to switch this activity on: @@ -118,11 +126,38 @@ Send a single command or a set of commands to one device, device ID and availabl | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | Only act on a specific remote, else target all. -| `device` | no | Device ID to send the command to. +| `device` | no | Device ID or Device Name to send the command to. | `command` | no | A single command or a list of commands to send. | `num_repeats` | yes | The number of times to repeat the command(s). | `delay_secs` | yes | The number of seconds between sending each command. +In the file 'harmony_REMOTENAME.conf' you can find the available devices and commands, for example: + +```text +{ + "Devices": { + "TV": { + "commands": [ + "PowerOff", + "PowerOn" + ], + "id": "327297814" + }, + "Receiver": { + "commands": [ + "PowerOff", + "PowerOn", + "VolumeUp", + "VolumeDown", + "Mute" + ], + "id": "428297615" + } + } +} +``` + + A typical service call for sending several button presses looks like this: ```yaml @@ -130,16 +165,26 @@ service: remote.send_command data: entity_id: remote.tv_room command: - - home - - 1 - - 2 - device: 4576546 + - PowerOn + - Mute + device: Receiver + delay_secs: 0.6 +``` +OR +```yaml +service: remote.send_command +data: + entity_id: remote.tv_room + command: + - PowerOn + - Mute + device: 428297615 delay_secs: 0.6 ``` ### {% linkable_title Service `remote.harmony_sync` %} -Synchronize the Harmony device with the Harmony web service if any changes are made from the web portal or app. +Force synchronization between the Harmony device and the Harmony cloud. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | diff --git a/source/_components/remote.itach.markdown b/source/_components/remote.itach.markdown index 5dd51679a23..fcdbc308265 100644 --- a/source/_components/remote.itach.markdown +++ b/source/_components/remote.itach.markdown @@ -13,7 +13,6 @@ ha_iot_class: "Assumed State" ha_release: 0.39 --- - The `itach` remote platform allows you to control IR devices with a [Global Caché iTach Device](https://www.globalcache.com/products/itach/ip2irspecs) and GC-100 devices. The Global Cache IR API are similar across their product line. See API documentation links at the end of this page. In order to utilize the digital input (binary sensor) and relay (switch) features of your Global Cache device you will need to use the [gc100 component](/components/gc100) and associated platforms. @@ -36,22 +35,58 @@ remote: data: "0000 006D 0000 0022 00AC 00AC 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0689" ``` -Configuration variables: -- **name** (*Optional*): The iTach's name to display in the front end. -- **host** (*Required*): The iTach's IP address. -- **port** (*Optional*): The iTach's port. 4998 is default. -- **devices** array (*Required*): Devices controlled by the iTach. - - **name** (*Required*): Name of the device. - - **modaddr** (*Optional*): iTach module address for the IR emitter. 1 is default. - - **connaddr** (*Required*): iTach connection location for the IR emitter. (Note connaddr is a misleading label. Do not put the connection address here. Technically the connection address is the combination of the module address plus the connection location). - - **commands** array (*Required*): Commands available to send to the device. - - **name** (*Required*): Command name. - - **data** (*Required*): Hex command data. +{% configuration %} +name: + description: The iTach's name to display in the front end. + required: false + type: string +host: + description: The iTach's IP address. + required: true + type: string +port: + description: The iTach's port. + required: false + default: 4998 + type: integer +devices: + description: Devices controlled by the iTach. + required: true + type: list + keys: + name: + description: Name of the device. + required: true + type: string + modaddr: + description: iTach module address for the IR emitter. + required: false + default: 1 + type: integer + connaddr: + description: iTach connection location for the IR emitter. (Note connaddr is a misleading label. Do not put the connection address here. Technically the connection address is the combination of the module address plus the connection location). + required: true + type: integer + commands: + description: Commands available to send to the device. + required: true + type: list + keys: + name: + description: Command name. + required: true + type: string + data: + description: Hex command data. + required: true + type: string +{% endconfiguration %} An example to call the component from developer tools using the `remote.send_command` service: `{ "entity_id":"remote.tv", "command":"menu" }` Note: Global Cache devices expect data in their own format of "sendir...". This component converts hex code to Global Cache IR form. API Docs: + - [iTach](https://www.globalcache.com/files/docs/API-iTach.pdf) - [GC-100](http://www.globalcache.com/files/docs/API-GC-100.pdf) diff --git a/source/_components/remote.xiaomi_miio.markdown b/source/_components/remote.xiaomi_miio.markdown index 4d018dd3752..af8fde86c80 100644 --- a/source/_components/remote.xiaomi_miio.markdown +++ b/source/_components/remote.xiaomi_miio.markdown @@ -54,7 +54,7 @@ hidden: description: Hide the entity from UI. There is currently no reason to show the entity in UI as turning it off or on does nothing. required: false type: boolean - default: True + default: true commands: required: false type: map diff --git a/source/_components/rest_command.markdown b/source/_components/rest_command.markdown index 4e4ef8fb6f5..6cb1213d5a6 100644 --- a/source/_components/rest_command.markdown +++ b/source/_components/rest_command.markdown @@ -27,17 +27,47 @@ rest_command: url: 'http://example.com/' ``` -Configuration variables: - -- **[service_name]** (*Required*): The name used to expose the service. E.g., in the above example, it would be `rest_command.example_request`. - - **url** (*Required*): The URL (support template) for sending request. - - **method** (*Optional*): HTTP method to use (`get`, `post`, `put`, or `delete`). Defaults to `get`. - - **headers** (*Optional*): The headers for the requests. - - **payload** (*Optional*): A string/template to send with request. - - **username** (*Optional*): The username for HTTP authentication. - - **password** (*Optional*): The password for HTTP authentication. - - **timeout** (*Optional*): Timeout for requests. Defaults to 10 seconds. - - **content_type** (*Optional*): Content type for the request. +{% configuration %} +service_name: + description: The name used to expose the service. E.g., in the above example, it would be 'rest_command.service_name'. + required: true + type: map + keys: + url: + description: The URL (supports template) for sending request. + required: true + type: [string, template] + method: + description: HTTP method to use (get, post, put, or delete). + required: false + default: get + type: string + headers: + description: The headers for the requests. + required: false + type: list + payload: + description: A string/template to send with request. + required: false + type: [string, template] + username: + description: The username for HTTP authentication. + required: false + type: string + password: + description: The password for HTTP authentication. + required: false + type: string + timeout: + description: Timeout for requests in seconds. + required: false + type: string + defaut: 10 + content_type: + description: Content type for the request. + required: false + type: string +{% endconfiguration %} ## {% linkable_title Examples %} diff --git a/source/_components/rflink.markdown b/source/_components/rflink.markdown index 81b696fae33..7be07531702 100644 --- a/source/_components/rflink.markdown +++ b/source/_components/rflink.markdown @@ -12,15 +12,15 @@ ha_category: Hub ha_release: 0.38 --- -The `rflink` component supports devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink Gateway is an Arduino Mega firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). +The `rflink` component supports devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example, the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink Gateway is an Arduino Mega firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). The 433 MHz spectrum is used by many manufacturers mostly using their own protocol/standard and includes devices like: light switches, blinds, weather stations, alarms and various other sensors. RFLink Gateway supports a number of RF frequencies, using a wide range of low-cost hardware. [Their website](http://www.rflink.nl/blog2/) provides details for various RF transmitters, receivers and transceiver modules for 433MHz, 868MHz and 2.4 GHz. -

- 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. +

A complete list of devices supported by RFLink can be found [here](http://www.rflink.nl/blog2/devlist). @@ -28,6 +28,8 @@ This component is tested with the following hardware/software: - Nodo RFLink Gateway V1.4/RFLink R46 +## {% linkable_title Configuration %} + To enable RFLink in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -36,21 +38,37 @@ rflink: port: /dev/serial/by-id/usb-id01234 ``` -Configuration variables: - -- **port** (*Required*): The path to RFLink USB/serial device or TCP port in TCP mode. -- **host** (*Optional*): Switches to TCP mode, connects to host instead of to USB/serial. -- **wait_for_ack** (*Optional*): Wait for RFLink to acknowledge commands sent before sending new command (slower but more reliable). Defaults to `True` -- **ignore_devices** (*Optional*): List of device id's to ignore. Supports wildcards (*) at the end. -- **reconnect_interval** (*Optional*): Time in seconds between reconnect attempts. - -Complete example: +{% configuration %} +port: + description: The path to RFLink USB/serial device or TCP port in TCP mode. + required: true + type: string +host: + description: Switches to TCP mode, connects to host instead of to USB/serial. + required: false + type: string +wait_for_ack: + description: Wait for RFLink to acknowledge commands sent before sending new command (slower but more reliable). + required: false + default: true + type: boolean +ignore_devices: + description: List of device id's to ignore. Supports wildcards (`*`) at the end. + required: false + type: [list, string] +reconnect_interval: + description: Time in seconds between reconnect attempts. + required: false + default: 10 + type: integer +{% endconfiguration %} +### {% linkable_title Full example %} ```yaml # Example configuration.yaml entry rflink: port: /dev/serial/by-id/usb-id01234 - wait_for_ack: False + wait_for_ack: false ignore_devices: - newkaku_000001_01 - digitech_* @@ -99,9 +117,9 @@ sensor: automatic_add: true ``` -[RFLink Switches](https://www.home-assistant.io/components/switch.rflink/) cannot be added automatically. +[RFLink Switches](/components/switch.rflink/) and [RFLink Binary Sensors](/components/binary_sensor.rflink/) cannot be added automatically. -The RFLink component does not know the difference between a switch and a light. Therefore all switchable devices are automatically added as light by default. However, once the ID of a switch is known, it can be used to configure it as a switch type in HA, for example, to add it to a different group, hide it or configure a nice name. +The RFLink component does not know the difference between a binary sensor, a switch and a light. Therefore all switchable devices are automatically added as light by default. However, once the ID of a switch is known, it can be used to configure it as a switch or a binary sensor type in Home Assistant, for example, to add it to a different group, hide it or configure a nice name. ### {% linkable_title Ignoring devices %} @@ -113,7 +131,7 @@ For example: # Example configuration.yaml entry rflink: port: /dev/serial/by-id/usb-id01234 - wait_for_ack: False + wait_for_ack: false ignore_devices: - newkaku_000001_01 - digitech_* @@ -143,7 +161,7 @@ If you find a device is recognized differently, with different protocols or the ### {% linkable_title Debug Logging %} -For debugging purposes or context when investigating issues you can enable debug logging for Rflink with the following config snippet: +For debugging purposes or context when investigating issues you can enable debug logging for RFLink with the following config snippet: ```yaml logger: diff --git a/source/_components/route53.markdown b/source/_components/route53.markdown index a00e5e708d0..2324a3c9664 100644 --- a/source/_components/route53.markdown +++ b/source/_components/route53.markdown @@ -72,7 +72,7 @@ route53: aws_access_key_id: ABC123 aws_secret_access_key: DEF456 zone: ZONEID678 - domain: home.yourdomain.com + domain: yourdomain.com records: - vpn - hassio @@ -100,4 +100,9 @@ records: description: A list of records you want to update. required: true type: list +ttl: + description: The TTL value for the DNS records. + required: false + type: int + default: 300 {% endconfiguration %} diff --git a/source/_components/rss_feed_template.markdown b/source/_components/rss_feed_template.markdown index 36fcddfc51f..4c8612ae2e1 100644 --- a/source/_components/rss_feed_template.markdown +++ b/source/_components/rss_feed_template.markdown @@ -23,18 +23,38 @@ rss_feed_template: # Accessible on /api/rss_template/garden # Example: https://localhost:8123/api/rss_template/garden garden: - requires_api_password: False + requires_api_password: false title: "Garden {% raw %}{{ as_timestamp(now())|timestamp_custom('%H:%M', True) }}{% endraw %}" items: - title: "Outside temperature" description: "{% raw %}{% if is_state('sensor.temp_outside','unknown') %}---{% else %}{{states.sensor.temp_outside.state}} °C{% endif %}{% endraw %}" ``` -Configuration variables: - -- **requires_api_password:** (*Optional*): If true and an API password is set, the password must be passed via '?api_password=...' parameter (Default: True) -- **feed_id** (*Required*): The key is used as the ID of the feed. The feed can be accessed at /api/rss_template/feed_id (example: 'garden') -- **title** (*Optional*): The title of the feed, which is parsed as [template](/topics/templating/). -- **items** (*Required*): A list of feed items. -- **items/title** (*Optional*): The title of the item, which is parsed as [template](/topics/templating/). -- **items/description** (*Optional*): The description of the item, which is parsed as [template](/topics/templating/). +{% configuration %} +requires_api_password: + description: If true and an API password is set, the password must be passed via '?api_password=...' parameter. + required: false + default: true + type: boolean +feed_id: + description: "The key is used as the ID of the feed. The feed can be accessed at /api/rss_template/feed_id (example: 'garden')." + required: true + type: string +title: + description: The title of the feed, which is parsed as [template](/topics/templating/). + required: false + type: template +items: + description: A list of feed items. + required: true + type: list + keys: + title: + description: The title of the item, which is parsed as [template](/topics/templating/). + required: false + type: template + description: + description: The description of the item, which is parsed as [template](/topics/templating/). + required: false + type: template +{% endconfiguration %} diff --git a/source/_components/satel_integra.markdown b/source/_components/satel_integra.markdown index 8e71d59e7f0..6f555e7670c 100644 --- a/source/_components/satel_integra.markdown +++ b/source/_components/satel_integra.markdown @@ -17,14 +17,85 @@ The `satel_integra` component will allow Home Assistant users who own a Satel In There is currently support for the following device types within Home Assistant: -- [Binary Sensor](/components/binary_sensor.satel_integra/): Reports on zone statuses +- [Binary Sensor](/components/binary_sensor.satel_integra/): Reports on zone or output statuses - [Alarm Control Panel](/components/alarm_control_panel.satel_integra/): Reports on alarm status, and can be used to arm/disarm the system The module communicates via Satel's open TCP protocol published on their website. It subscribes for new events coming from alarm system and reacts to them immediately. -**IMPORTANT:** The library currently doesn't support encrypted connection to your alarm, so you need **to turn off encryption for integration protocol**. In Polish: "koduj integracje" must be unchecked. You will find this setting in your DLOADX program. +## {% linkable_title Setup %} + +Please note that **ETHM-1 module is currently not supported**: it does not provide functionality used by this extension. At the moment only ETHM-1 Plus module is supported. That might change in the future, but no promisses are given. + +The library currently doesn't support encrypted connection to your alarm, so you need **to turn off encryption for integration protocol**. In Polish: "koduj integracje" must be unchecked. You will find this setting in your DloadX program. + +A list of all zone and output IDs can be acquired by running DloadX program and connecting to your alarm. + +For more information on the available zone visualisation types, take a look at the [Binary Sensor](/components/binary_sensor.alarmdecoder/) documentation. Note: If no zones or outputs are specified, Home Assistant will not load any binary_sensor components." + +## {% linkable_title Configuration %} + +A `satel_integra` section must be present in the `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +satel_integra: + host: IP_ADDRESS +``` + +{% configuration %} +host: + description: The IP address of the Satel Integra ETHM module on your home network, if using socket type. + required: true + default: localhost + type: string +port: + description: The port on which the ETHM module listens for clients using integration protocol. + required: false + default: 7094 + type: integer +partition: + description: The partition to operate on. Integra can support multiple partitions, this platform only supports one. + required: false + default: 1 + type: integer +arm_home_mode: + description: The mode in which arm Satel Integra when 'arm home' is used. Possible options are `1`,`2` or `3`. For more information on what are the differences between them, please refer to Satel Integra manual. + required: false + default: 1 + type: integer +zones: + description: "This parameter lists the zones (or inputs) that will be visible by Home Assistant. For each zone, a proper ID must be given as well as its name. The name is arbitrary and does not need to match the one specified in Satel Integra alarm configuration." + required: false + type: [integer, list] + keys: + name: + description: Name of the zone. + required: true + type: string + type: + description: The zone type. + required: false + default: motion + type: string +outputs: + description: "Very similar to zones, but with outputs. Satel Integra uses outputs to inform external systems about different events. For example power failure, or that alarm started counting for exit or some other user-defined condition. They may be used for simple alarm-based automation. For more information please refer to Satel homepage and forums." + required: false + type: [integer, list] + keys: + name: + description: Name of the zone. + required: true + type: string + type: + description: The zone type. + required: false + default: motion + type: string +{% endconfiguration %} + + +## {% linkable_title Full examples %} -A `satel_integra` section must be present in the `configuration.yaml` file and contain the following options as required: ```yaml # Example configuration.yaml entry @@ -33,7 +104,6 @@ satel_integra: port: 7094 partition: 1 arm_home_mode: 1 - zones: 01: name: 'Bedroom' @@ -47,20 +117,22 @@ satel_integra: 113: name: 'Entry door' type: 'opening' - + outputs: + 05: + name: 'Garden lights trigger' + type: 'light' + 09: + name: 'Gate opening trigger' + type: 'opening' + 30: + name: 'Alarm triggered' + type: 'safety' + 32: + name: 'Alarm power problem' + type: 'safety' ``` -Configuration variables: - -- **host** (*Required*): The IP address of the Satel Integra ETHM module on your home network, if using socket type. Default: `localhost` -- **port** (*Optional*): The port on which the ETHM module listens for clients using integration protocol. Default: `7094` -- **partition** (*Optional*): The partition to operate on. Integra can support multiple partitions, this platform only supports one. Default: `1` -- **arm_home_mode** (*Optional*): The mode in which arm Satel Integra when 'arm home' is used. Possible options are `1`,`2` or `3`, default being `1`. For more information on what are the differences between them, please refer to Satel Integra manual. -- **zones** (*Optional*): This module does not discover currently which zones are actually in use, so it will only monitor the ones defined in the config. For each zone, a proper ID must be given as well as its name (does not need to match the one specified in Satel Integra alarm). For more information on the available zone types, take a look at the [Binary Sensor](/components/binary_sensor.alarmdecoder/) docs. *Note: If no zones are specified, Home Assistant will not load any binary_sensor components.* - -List of all zone IDs can be taken from DloadX program. - -Having configured the zones, you can use them for automation, such as to react on the movement in your bedroom. +Having configured the zones and the outputs, you can use them for automation, such as to react on the movement in your bedroom. For example: ```yaml @@ -73,7 +145,5 @@ For example: service: input_boolean.turn_on data: entity_id: input_boolean.movement_detected - ``` -Enjoy! diff --git a/source/_components/scene.lutron.markdown b/source/_components/scene.lutron.markdown new file mode 100644 index 00000000000..384bbd92e54 --- /dev/null +++ b/source/_components/scene.lutron.markdown @@ -0,0 +1,21 @@ +--- +layout: page +title: "Lutron Scene" +description: "Instructions on how to set up the Lutron scenes within Home Assistant." +date: 2018-10-09 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lutron.png +ha_category: Scene +ha_iot_class: "Local Polling" +ha_release: 0.85 +--- + +To get your Lutron scenes working with Home Assistant, follow the instructions for the general [Lutron component](/components/lutron/). + +This component uses keypad programming to identify scenes. Currently, it only works with SeeTouch keypads. +The Lutron scene platform allows you to control scenes programmed into your SeeTouch keypads. + +After setup, scenes will appear in Home Assistant using the area, keypad, and button name. diff --git a/source/_components/scene.markdown b/source/_components/scene.markdown index f0bb6a2b479..78618af7751 100644 --- a/source/_components/scene.markdown +++ b/source/_components/scene.markdown @@ -19,17 +19,17 @@ You can create scenes that capture the states you want certain entities to be. F scene: - name: Romantic entities: - light.tv_back_light: on + light.tv_back_light: true light.ceiling: - state: on + state: true xy_color: [0.33, 0.66] brightness: 200 - name: Movies entities: light.tv_back_light: - state: on + state: true brightness: 100 - light.ceiling: off + light.ceiling: false media_player.sony_bravia_tv: source: HDMI 1 ``` @@ -50,7 +50,7 @@ As you can see, there are two ways to define the states of each `entity_id`: - Define the `state` directly with the entity. - Define a complex state with its attributes. -The mapping from states to services is done with the [state helper](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/helpers/state.py#L74). So, please have a look there for available states for your scenes. +The mapping from states to services is done with the [state helper](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/helpers/state.py#L82). So, please have a look there for available states for your scenes. Scenes can be activated using the service `scene.turn_on` (there is no 'scene.turn_off' service). diff --git a/source/_components/script.markdown b/source/_components/script.markdown index fe6dc4dda5f..2df6e920d93 100644 --- a/source/_components/script.markdown +++ b/source/_components/script.markdown @@ -27,8 +27,7 @@ script:          message: Current temperature is {% raw %}{{ states.sensor.temperature.state }}{% endraw %} ```

-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.

```yaml @@ -116,6 +115,6 @@ script: ### {% linkable_title In the Overview %} -Scripts in the Overview panel will be displayed with an **ACTIVATE** button if the device has no `delay:` or `wait:` statement, and as a toggle switch if it has either of those. +Scripts in the Overview panel will be displayed with an **EXECUTE** button if the device has no `delay:` or `wait:` statement, and as a toggle switch if it has either of those. This is to enable you to stop a running script. diff --git a/source/_components/scsgate.markdown b/source/_components/scsgate.markdown index 30fa3c975f4..29cabe50ed0 100644 --- a/source/_components/scsgate.markdown +++ b/source/_components/scsgate.markdown @@ -23,9 +23,12 @@ scsgate: device: PATH_TO_DEVICE ``` -Configuration variables: - -- **device** (*Required*): The path to your device, e.g., `/dev/ttyACM0` +{% configuration %} +device: + description: The path to your device, e.g., `/dev/ttyACM0`. + required: true + type: string +{% endconfiguration %} ### {% linkable_title How to find the scs_id for your devices %} diff --git a/source/_components/sense.markdown b/source/_components/sense.markdown new file mode 100644 index 00000000000..63611b0b7be --- /dev/null +++ b/source/_components/sense.markdown @@ -0,0 +1,50 @@ +--- +layout: page +title: Sense +description: "Instructions on how to integrate Sense within Home Assistant." +date: 2018-10-22 22:50 +sidebar: true +comments: false +sharing: true +footer: true +logo: sense.png +ha_category: Energy +ha_iot_class: "Cloud Polling" +ha_release: 0.82 +redirect_from: /components/sensor.sense/ +--- + +Integrate your [Sense](https://sense.com) meter information into Home Assistant. + +## {% linkable_title Configuration %} + +To enable this sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sense: + email: CLIENT_ID + password: CLIENT_SECRET +``` + +Sensors are added for both usage and production with the following names: + +- **Active Usage/Production**: Current active power usage/production in Watts. Updated every 60 seconds. +- **Daily/Weekly/Monthly Usage/Production**: Daily/Weekly/Monthly power usage/production in kWh. Updated every 5 minutes. + +Binary sensors are created for each of the devices detected by your Sense monitor to show their power state. + +{% configuration %} +email: + description: The email associated with your Sense account/application. + required: true + type: string +password: + description: The password for your Sense account/application. + required: true + type: string +timeout: + description: Seconds for timeout of API requests + required: false + type: positive_int +{% endconfiguration %} diff --git a/source/_components/sensor.aftership.markdown b/source/_components/sensor.aftership.markdown new file mode 100644 index 00000000000..e3362bedcc8 --- /dev/null +++ b/source/_components/sensor.aftership.markdown @@ -0,0 +1,52 @@ +--- +layout: page +title: AfterShip Sensor +description: "Instructions on how to set up AfterShip sensors within Home Assistant." +date: 2018-11-24 01:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: aftership.png +ha_category: Postal Service +ha_release: 0.85 +ha_iot_class: "Cloud Polling" +--- + +The `aftership` platform allows one to track deliveries by [AfterShip](https://www.aftership.com), a service that supports 490+ couriers worldwide. It is free to use up to 100 tracked packages per month, after that there is a fee. + +The sensor value shows the number of packages that are not in `Delivered` state. As attributes are the number of packages per status. + +## {% linkable_title Setup %} + +To use this sensor, you need an [AfterShip Account](https://accounts.aftership.com/register) and set up an API Key. To set up an API Key go to [AfterShip API](https://secure.aftership.com/#/settings/api) page, and copy existing key or generate a new one. + +

+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. +

+ +## {% linkable_title Configuration %} + +To enable this sensor, add the following lines to your `configuration.yaml`: + +```yaml +sensor: + - platform: aftership + api_key: AFTERSHIP_APIKEY +``` + +{% configuration %} +name: + description: The sensor name to use in the frontend. + required: false + default: "aftership" + type: string +api_key: + description: The API key for AfterShip. + required: true + type: string +{% endconfiguration %} + +

+This component retrieves data from AfterShip public REST API, but the component is not affiliated with AfterShip. +

diff --git a/source/_components/sensor.ambient_station.markdown b/source/_components/sensor.ambient_station.markdown new file mode 100644 index 00000000000..b7042957996 --- /dev/null +++ b/source/_components/sensor.ambient_station.markdown @@ -0,0 +1,108 @@ +--- +layout: page +title: "Ambient Weather Station Sensor" +description: "How to integrate Ambient Weather station within Home Assistant." +date: 2018-11-15 08:00 +sidebar: true +comments: false +logo: ambient_weather.png +ha_category: Weather +ha_release: "0.85" +ha_iot_class: "Cloud Polling" +--- + +The `Ambient Weather Station` platform uses the [Ambient Weather](https://ambientweather.net) +web API to retrieve weather data from your personal weather station (PWS). + +You need to register your compatible PWS using its MAC address and then request both an API key and an Application key. The key requests can be found +under `My Account`. Requesting an application key requires emailing the ambient weather support team. + +To add your Ambient Weather PWS to your Home Assistant installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: ambient_station + api_key: YOUR_API_KEY + app_key: YOUR_APP_KEY + monitored_conditions: + - tempf + - humidity + - windspeedmph +``` + +{% configuration %} +api_key: + description: The API key to access the service. + required: true + type: string +app_key: + description: The Application key to access the service. + required: true + type: string +monitored_conditions: + description: Weather conditions to track. + required: true + type: list + keys: + winddir: + description: Wind direction + windspeedmph: + description: Windspeed + windgustmph: + description: Wind gust + maxdailygust: + description: Max daily wind gust + windgustdir: + description: Wind gust direction + windspdmph_avg2m: + description: Wind speed, 2m moving average + winddir_avg2m: + description: Wind direction, 2m moving average + windspdmph_avg10m: + description: Wind speed, 10m moving average + winddir_avg10m: + description: Wind direction, 10m moving average + humidity: + description: Outdoor humidity + humidityin: + description: Indoor humidity + tempf: + description: Outdoor temperature + tempinf: + description: Indoor temperature + battout: + description: Weather station battery health + hourlyrainin: + description: Hourly rain accumulation + dailyrainin: + description: Daily rain accumulation + 24hourrainin: + description: 24h rain accumulation + weeklyrainin: + description: Weekly rain accumulation + monthlyrainin: + description: Monthly rain accumulation + yearlyrainin: + description: Yearly rain accumulation + eventrainin: + description: Event Rain accumulation + totalrainin: + description: Lifetime rain accumulation (since last reset) + baromrelin: + description: Relative atmospheric pressure + baromabsin: + description: Absolute atmospheric pressure + uv: + description: UV index + solarradiation: + description: Solar radiation + co2: + description: CO2 level + lastRain: + description: Datetime of last rain event + dewPoint: + description: Dewpoint temperature + feelsLike: + description: Feels Like temperature +{% endconfiguration %} diff --git a/source/_components/sensor.apcupsd.markdown b/source/_components/sensor.apcupsd.markdown index bfaf33769b6..74e2c9735bf 100644 --- a/source/_components/sensor.apcupsd.markdown +++ b/source/_components/sensor.apcupsd.markdown @@ -28,9 +28,12 @@ sensor: - linev ``` -Configuration variables: - -- **resources** array (*Required*): Contains all entries to display. +{% configuration %} +resources: + description: Contains all entries to display. + required: true + type: list +{% endconfiguration %} ### {% linkable_title Example %} diff --git a/source/_components/sensor.arest.markdown b/source/_components/sensor.arest.markdown index 4bb0a11ad78..b2707483d6a 100644 --- a/source/_components/sensor.arest.markdown +++ b/source/_components/sensor.arest.markdown @@ -13,7 +13,6 @@ ha_iot_class: "Local Polling" ha_release: pre 0.7 --- - The `arest` sensor platform allows you to get all data from your devices (like Arduinos with a Ethernet/Wifi connection, the ESP8266, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework. ## {% linkable_title Configuration %} @@ -24,7 +23,7 @@ To use your aREST enabled device in your installation, add the following to your # Example configuration.yaml entry sensor: - platform: arest - resource: http://IP_ADDRESS + resource: https://IP_ADDRESS monitored_variables: temperature: name: temperature @@ -33,22 +32,63 @@ sensor: name: Pin 0 analog ``` -Configuration variables: +{% configuration %} +resource: + description: "IP address and schema of the device that is exposing an aREST API, e.g., https://192.168.1.10." + required: true + type: string +name: + description: Let you overwrite the name of the device. + required: false + default: aREST sensor + type: string +pins: + description: List of pins to monitor. Analog pins need a leading **A** for the pin number. + required: false + type: list + keys: + pin: + description: Pin number to use. + required: true + type: list + keys: + name: + description: The name of the variable you wish to monitor. + required: true + type: string + unit_of_measurement: + description: Defines the unit of measurement of the sensor, if any. + required: false + type: string + value_template: + description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. + required: false + type: template +monitored_variables: + description: List of exposed variables. + required: false + type: list + keys: + variable: + description: Name of the variable to monitor. + required: true + type: list + keys: + name: + description: The name to use for the frontend. + required: false + type: string + unit_of_measurement: + description: Defines the units of measurement of the sensor, if any. + required: false + type: string + value_template: + description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. + required: false + type: template +{% endconfiguration %} -- **resource** (*Required*): IP address and schema of the device that is exposing an aREST API, e.g., http://192.168.1.10. -- **name** (*Optional*): Let you overwrite the name of the device. By default *name* from the device is used. -- **monitored_variables** array (*Optional*): List of exposed variables. - - **[variable]** (*Required*): Name of the variable to monitor. - - **name** (*Optional*): The name to use for the frontend. - - **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any. - - **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. -- **pins** array (*Optional*): List of pins to monitor. Analog pins need a leading **A** for the pin number. - - **[pin]** (*Required*): Pin number to use. - - **name** (*Required*): The name of the variable you wish to monitor. - - **unit_of_measurement** (*Optional*): Defines the unit of measurement of the sensor, if any. - - **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. - -The variables in the `monitored_variables` array must be available in the response of the device. As a starting point you could use the one of the example sketches (eg. [Ethernet](https://raw.githubusercontent.com/marcoschwartz/aREST/master/examples/Ethernet/Ethernet.ino) for an Arduino with Ethernet shield). In those sketches are two variables (`temperature` and `humidity`) available which will act as endpoints. +The variables in the `monitored_variables` array must be available in the response of the device. As a starting point you could use the one of the example sketches (eg. [Ethernet](https://raw.githubusercontent.com/marcoschwartz/aREST/master/examples/Ethernet/Ethernet.ino) for an Arduino with Ethernet shield). In those sketches are two variables (`temperature` and `humidity`) available which will act as endpoints. Accessing one of the endpoints (eg. http://192.168.1.10/temperature) will give you the value inside a JSON response. @@ -75,4 +115,3 @@ The root will give you a JSON response that contains all variables and their cur ```json {"return_value": 34, "id": "sensor02", "name": "livingroom", "connected": true} ``` - diff --git a/source/_components/sensor.arlo.markdown b/source/_components/sensor.arlo.markdown index 86f2870fbae..0d93831713e 100644 --- a/source/_components/sensor.arlo.markdown +++ b/source/_components/sensor.arlo.markdown @@ -46,17 +46,28 @@ sensor: - air_quality ``` - -Configuration variables: - -- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. The following conditions can be monitored. - - **captured_today**: Return the number of videos captured on the current day. - - **last_capture**: Return the timestamp from the last video captured by your Arlo camera. - - **total_cameras**: Return the number of recognized and active cameras linked on your Arlo account. - - **battery_level**: Return the battery level of your Arlo camera. - - **signal_strength**: Return the wireless signal strength of your Arlo camera. - - **temperature**: Return the ambient temperature detected by your Arlo Baby camera. - - **humidity**: Return the ambient relative humidity detected by your Arlo Baby camera. - - **air_quality**: Return the ambient air quality (a reading of volatile organic compounds (VOCs) in parts per million) detected by your Arlo Baby camera. +{% configuration %} +monitored_conditions: + description: Conditions to display in the frontend. The following conditions can be monitored. + required: false + type: list + keys: + captured_today: + description: Return the number of videos captured on the current day. + last_capture: + description: Return the timestamp from the last video captured by your Arlo camera. + total_cameras: + description: Return the number of recognized and active cameras linked on your Arlo account. + battery_level: + description: Return the battery level of your Arlo camera. + signal_strength: + description: Return the wireless signal strength of your Arlo camera. + temperature: + description: Return the ambient temperature detected by your Arlo Baby camera. + humidity: + description: Return the ambient relative humidity detected by your Arlo Baby camera. + air_quality: + description: Return the ambient air quality (a reading of volatile organic compounds (VOCs) in parts per million) detected by your Arlo Baby camera. +{% endconfiguration %} If no **monitored_conditions** are specified, all of above will be enabled by default. diff --git a/source/_components/sensor.asuswrt.markdown b/source/_components/sensor.asuswrt.markdown new file mode 100644 index 00000000000..8c091b166e2 --- /dev/null +++ b/source/_components/sensor.asuswrt.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Asuswrt Sensor" +description: "Instructions on how to integrate Asuswrt sensors into Home Assistant." +date: 2017-08-30 12:21 +sidebar: true +comments: false +sharing: true +footer: true +logo: asus.png +ha_category: System Monitor +ha_iot_class: "Local Polling" +ha_release: 0.83 +--- + +The `asuswrt` platform allows you to get data from your [ASUSWRT](http://event.asus.com/2013/nw/ASUSWRT/) sensors from within Home Assistant. + +The sensor platform will be automatically configured if Asuswrt component is configured. + +For more configuration information see the [Asuswrt component](/components/asuswrt/) documentation. diff --git a/source/_components/sensor.awair.markdown b/source/_components/sensor.awair.markdown new file mode 100644 index 00000000000..7b7e358f7d3 --- /dev/null +++ b/source/_components/sensor.awair.markdown @@ -0,0 +1,68 @@ +--- +layout: page +title: "Awair Air Quality Monitor" +description: "Instructions on how to setup Awair devices in Home Assistant." +date: 2018-11-18 20:41 +sidebar: true +comments: false +sharing: true +footer: true +logo: awair.jpg +ha_category: Health +ha_release: 0.84 +ha_iot_class: "Cloud Polling" +--- + +The `awair` sensor platform will fetch data from your [Awair device(s)](https://getawair.com). + +You will need to request access to the Awair API and obtain an access token from the Awair [Developer Console](https://developer.getawair.com/). + +## {% linkable_title Configuring the Platform %} + +To enable these sensors, add the following lines to your `configuration.yaml` file: + +```yaml +sensor: + - platform: awair + access_token: ACCESS_TOKEN +``` + +The Awair API has stringent usage quotas. The API method to discover devices in your account is +limited to only 6 calls per 24 hours. If you find that you've exceeded this quota, you may optionally +append device information to your configuration to bypass this call: + +```yaml +sensor: + - platform: awair + access_token: ACCESS_TOKEN + devices: + - uuid: UUID +``` + +{% configuration %} +access_token: + description: The access token for the Awair API. + required: true + type: string +devices: + description: An optional list to manually configure devices rather than relying upon API discovery. + required: false + type: list + keys: + uuid: + description: UUID of the Awair sensor to monitor. + required: true + type: string +{% endconfiguration %} + +## {% linkable_title Available Sensors %} + +The platform will fetch all available sensors from each Awair device linked to your account. Supported sensors: + + * Temperature + * Humidity + * CO2 + * VOC + * Dust, PM2.5, PM10: varies according to Awair model + +This platform refreshes at an interval based on a 300 API call per-day quota, and the number of devices you have configured. diff --git a/source/_components/sensor.bh1750.markdown b/source/_components/sensor.bh1750.markdown index b7bae73cf1e..1da1ae5eba3 100644 --- a/source/_components/sensor.bh1750.markdown +++ b/source/_components/sensor.bh1750.markdown @@ -13,7 +13,6 @@ ha_release: 0.48 ha_iot_class: "Local Push" --- - The `bh1750` sensor platform allows you to read the ambient light level in Lux from a [BH1750FVI sensor](http://cpre.kmutnb.ac.th/esl/learning/bh1750-light-sensor/bh1750fvi-e_datasheet.pdf) connected via [I2c](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). It allows you to use all the resolution modes of the sensor described in its datasheet. Tested devices: @@ -30,15 +29,43 @@ sensor: - platform: bh1750 ``` -Configuration variables: - -- **name** (*Optional*): The name of the sensor -- **i2c_address** (*Optional*): I2c address of the sensor. It is 0x23 or 0x5C. -- **i2c_bus** (*Optional*): I2c bus where the sensor is. Defaults to 1, for Raspberry Pi 2 and 3. -- **operation_mode** (*Optional*): Working mode for the sensor. Defaults to `continuous_high_res_mode_1` for continuous measurement and 1 lx resolution. -- **measurement_delay_ms** (*Optional*): Delay time in ms for waiting the sensor to get the measure. Defaults to 120 ms. -- **multiplier** (*Optional*): Correction coefficient to multiply the measured light level. Value between 0.1 and 10. Default is 1. - +{% configuration %} +name: + description: Name of the sensor. + required: false + default: BH1750 Light Sensor + type: string +i2c_address: + description: I2c address of the sensor. It is 0x23 or 0x5C. + required: false + default: 0x23 + type: string +i2c_bus: + description: I2c bus where the sensor is. + required: false + default: 1, for Raspberry Pi 2 and 3. + type: integer +operation_mode: + description: Working mode for the sensor. + required: false + default: continuous_high_res_mode_1 + type: string +sensitivity: + description: The sensitivity of the sensor can be a value between 31 and 254. + required: false + default: 69 + type: integer +measurement_delay_ms: + description: Delay time in ms for waiting the sensor to get the measure. + required: false + default: 120 + type: integer +multiplier: + description: Correction coefficient to multiply the measured light level. Value between 0.1 and 10. + required: false + default: 1 + type: integer +{% endconfiguration %} ## {% linkable_title Full Examples %} @@ -53,6 +80,7 @@ sensor: name: Ambient light i2c_address: 0x5C operation_mode: one_time_high_res_mode_1 + sensitivity: 60 measurement_delay_ms: 200 scan_interval: 25 ``` diff --git a/source/_components/sensor.bitcoin.markdown b/source/_components/sensor.bitcoin.markdown index ba47bf8d9e1..4465554c50c 100644 --- a/source/_components/sensor.bitcoin.markdown +++ b/source/_components/sensor.bitcoin.markdown @@ -59,7 +59,7 @@ display_options: timestamp: description: Timestamp mined_blocks: - description: Minded Blocks + description: Mined Blocks blocks_size: description: Block size total_fees_btc: diff --git a/source/_components/sensor.bme280.markdown b/source/_components/sensor.bme280.markdown index 7887aff3dde..59612eb46d1 100644 --- a/source/_components/sensor.bme280.markdown +++ b/source/_components/sensor.bme280.markdown @@ -13,7 +13,6 @@ ha_release: 0.48 ha_iot_class: "Local Push" --- - The `bme280` sensor platform allows you to read temperature, humidity and pressure values of a [Bosch BME280 Environmental sensor](https://cdn-shop.adafruit.com/datasheets/BST-BME280_DS001-10.pdf) connected via [I2c](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). It allows you to use all the operation modes of the sensor described in its datasheet. Tested devices: @@ -30,19 +29,63 @@ sensor: - platform: bme280 ``` -Configuration variables: - -- **name** (*Optional*): The name of the sensor -- **i2c_address** (*Optional*): I2c address of the sensor. It is 0x76 or 0x77. -- **i2c_bus** (*Optional*): I2c bus where the sensor is. Defaults to 1, for Raspberry Pi 2 and 3. -- **operation_mode** (*Optional*): Power mode for the sensor. Use 2 for forced mode or 3 for normal mode. Defaults to normal mode. -- **time_standby** (*Optional*): Standby time in ms for normal mode of operation as described in the sensor datasheet. Defaults to 5 ms. -- **oversampling_temperature** (*Optional*): Oversampling multiplier as described in the sensor datasheet. Can be 0 (no sampling), 1, 2, 4, 8, or 16. Default is 1. -- **oversampling_pressure** (*Optional*): Oversampling multiplier as described in the sensor datasheet. Can be 0 (no sampling), 1, 2, 4, 8, or 16. Default is 1. -- **oversampling_humidity** (*Optional*): Oversampling multiplier as described in the sensor datasheet. Can be 0 (no sampling), 1, 2, 4, 8, or 16. Default is 1. -- **filter_mode** (*Optional*): IIR filter coeficient as described in the sensor datasheet. Default is 0, for filter off. -- **delta_temperature** (*Optional*): Absolute delta for temperature correction. -- **monitored_conditions** array (*Optional*): Conditions to monitor. Available conditions are *temperature*, *humidity* and *pressure*. By default all three are displayed. +{% configuration %} +name: + description: The name of the sensor. + required: false + default: BME280 Sensor + type: string +i2c_address: + description: I2c address of the sensor. It is 0x76 or 0x77. + required: false + default: 0x76 + type: string +i2c_bus: + description: I2c bus where the sensor is. + required: false + default: 1, for Raspberry Pi 2 and 3. + type: integer +operation_mode: + description: Power mode for the sensor. Use 2 for forced mode or 3 for normal mode. + required: false + default: 3 + type: integer +time_standby: + description: Standby time in ms for normal mode of operation as described in the sensor datasheet. + required: false + default: 5 + type: integer +oversampling_temperature: + description: Oversampling multiplier as described in the sensor datasheet. Can be 0 (no sampling), 1, 2, 4, 8, or 16. + required: false + default: 1 + type: integer +oversampling_pressure: + description: Oversampling multiplier as described in the sensor datasheet. Can be 0 (no sampling), 1, 2, 4, 8, or 16. + required: false + default: 1 + type: integer +oversampling_humidity: + description: Oversampling multiplier as described in the sensor datasheet. Can be 0 (no sampling), 1, 2, 4, 8, or 16. + required: false + default: 1 + type: integer +filter_mode: + description: IIR filter coeficient as described in the sensor datasheet. + required: false + default: 0 + type: integer +delta_temperature: + description: Absolute delta for temperature correction. + required: false + default: 0 + type: float +monitored_conditions: + description: Conditions to monitor. Available conditions are *temperature*, *humidity* and *pressure*. + required: false + default: All three conditions + type: list +{% endconfiguration %} ## {% linkable_title Full Examples %} diff --git a/source/_components/sensor.bme680.markdown b/source/_components/sensor.bme680.markdown index 814b276edce..2294195bc1b 100644 --- a/source/_components/sensor.bme680.markdown +++ b/source/_components/sensor.bme680.markdown @@ -111,6 +111,11 @@ aq_humidity_bias: required: false default: 25 type: integer +temp_offset: + description: "The temperature for the sensor will always be too high as it pulls heat from the components around it. Consider adding a negative offset to ensure the sensor returns an accurate temperature. Note: This value is in celsius." + required: false + default: 0 + type: float {% endconfiguration %} ## {% linkable_title Full Examples %} @@ -139,6 +144,7 @@ sensor: aq_burn_in_time: 300 aq_humidity_baseline: 40 aq_humidity_bias: 25 + temp_offset: -5.5 ``` ## {% linkable_title Customizing the sensor data %} @@ -154,12 +160,16 @@ customize: sensor.bme680_sensor_humidity: icon: mdi:water friendly_name: Humidity + device_class: humidity + unit_of_measurement: "%" sensor.bme680_sensor_pressure: icon: mdi:gauge friendly_name: Pressure sensor.bme680_sensor_air_quality: icon: mdi:blur friendly_name: Air Quality + device_class: pm25 + unit_of_measurement: "%" ``` To create a group, add the following to your `group` section. diff --git a/source/_components/sensor.brottsplatskartan.markdown b/source/_components/sensor.brottsplatskartan.markdown new file mode 100644 index 00000000000..1ac65a3e481 --- /dev/null +++ b/source/_components/sensor.brottsplatskartan.markdown @@ -0,0 +1,56 @@ +--- +layout: page +title: "Brottsplatskartan" +description: "Instructions on how to integrate brottsplatskartan.se into Home Assistant." +date: 2018-12-02 20:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Social +logo: brottsplatskartan.png +ha_release: 0.85 +ha_iot_class: "Cloud Polling" +--- + +The `brottsplatskartan` sensor allows one to track reported incidents occurring in a given area. Incidents include anything reported to [Brottsplatskartan](https://brottsplatskartan.se). The sensor only counts incidents from the current day. + +## {% linkable_title Configuration %} + +To enable this sensor, add the following lines to your `configuration.yaml`. + +```yaml +sensor: + - platform: brottsplatskartan +``` + +{% configuration %} +name: + description: Custom name for the sensor. + required: false + type: string + default: Brottsplatskartan +area: + description: Area for sensor to monitor + required: false + type: string +latitude: + description: Latitude for sensor. + required: false + default: Your home zone latitude defined in your configuration. +longitude: + description: Longitude for sensor. + required: false + default: Your home zone longitude defined in your configuration. +{% endconfiguration %} + + +## {% linkable_title Notes %} + +### {% linkable_title Area %} + +Brottsplatskartan captures all incidents in a region, e.g Stockholms län. If area parameter is defined, any latitude and longitude parameters are ignored. + +### {% linkable_title Latitude and Longitude %} + +The radius is set to 5 km when using latitude and longitude to monitor an area. It's not possible to explicitly set radius to another value. diff --git a/source/_components/sensor.buienradar.markdown b/source/_components/sensor.buienradar.markdown index 63e1f88b463..d7eaf0a6c69 100644 --- a/source/_components/sensor.buienradar.markdown +++ b/source/_components/sensor.buienradar.markdown @@ -13,7 +13,6 @@ ha_release: 0.47 ha_iot_class: "Cloud Polling" --- - The `buienradar` platform uses [buienradar.nl](http://buienradar.nl/) as a source for current meteorological data for your location. The weather forecast is delivered by Buienradar, who provides a web service that provides detailed weather information for users in The Netherlands. The relevant weather station used will be automatically selected based on the location specified in the Home Assistant configuration (or in the buienradar weather/sensor component). A map of all available weather stations can be found [here](https://www.google.com/maps/d/embed?mid=1NivHkTGQUOs0dwQTnTMZi8Uatj0). The selected weather station will provide all weather data, with the exception of the forecasted precipitation. The forecasted precipitation data will be retrieved from buienradar using your actual gps-location (and not the location of the nearest weather station). @@ -32,60 +31,113 @@ sensor: - pressure ``` -Configuration variables: +{% configuration %} +name: + description: You can specify a name of the component, but do not have to. See more info below. + required: false + type: string +latitude: + description: Latitude to use for selection of data source location. Longitude and latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar.nl. + required: false + type: float +longitude: + description: Longitude to use for selection of data source location. Longitude and latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar.nl. + required: false + type: float +timeframe: + description: "Minutes to look ahead for precipitation forecast (min: 5 / max: 120)." + required: false + default: 60 + type: integer +monitored_conditions: + description: One or more conditions to display in the frontend. + required: true + type: list + keys: + stationname: + description: The name of the selected meteo-station. + conditioncode: + description: A symbol and a unique code identifying the current weather condition ([a..z]). + condition: + description: A symbol and the current weather condition (`clear`, `cloudy`, `fog`, `rainy`, `snowy` or `lightning`). + conditiondetailed: + description: A symbol and detailed current weather condition (`clear`, `partlycloudy`, `cloudy`, `partlycloudy-fog`, `partlycloudy-light-rain`, `partlycloudy-rain`, `light-rain`, `rainy`, `snowy-rainy`, `partlycloudy-light-snow`, `partlycloudy-snow`, `light-snow`, `snowy`, `partlycloudy-lightning` or `lightning`). + conditionexact: + description: A symbol with the full current weather condition (in English). + symbol: + description: A symbol for the current weather with the full current condition (in Dutch). + humidity: + description: The relative humidity (%). + temperature: + description: "The current temperature (in [C](https://en.wikipedia.org/wiki/Celsius))." + groundtemperature: + description: "The current ground temperature (in [C](https://en.wikipedia.org/wiki/Celsius))." + windspeed: + description: "The wind speed in [m/s](https://en.wikipedia.org/wiki/M/s)." + windforce: + description: "The wind speed/force in [Bft](https://en.wikipedia.org/wiki/Beaufort_scale)." + winddirection: + description: "Where the wind is coming from: N (North),Z (south), NO (North-East), etc." + windazimuth: + description: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise. + pressure: + description: "The sea-level air pressure in [hPa](https://en.wikipedia.org/wiki/Hectopascal)." + visibility: + description: "Visibility in meters ([m](https://en.wikipedia.org/wiki/Metre))." + windgust: + description: "The wind speed of wind gusts ([m/s](https://en.wikipedia.org/wiki/M/s))." + precipitation: + description: The amount of precipitation/rain in mm/h. + precipitation_forecast_average: + description: The average expected precipitation/rain in mm/h within the given time-frame. + precipitation_forecast_total: + description: The total expected precipitation/rain in mm within the given time-frame. The total expected rain in the configured time-frame will be equal to _precipitation_forecast_total_/_timeframe_ mm/min. So, with time-frame configured to 30 minutes and a value of 5, the expected rain is 5 mm in 30 minutes, which is the same as 10 mm/h. If time-frame is set to 90 minutes and a value of 5, the expected rain is 5 mm in 90 minutes, which is equal to 3.3 mm/h. + irradiance: + description: "Sun intensity in Watt per square meter ([W/m2](https://en.wikipedia.org/wiki/W/m2))." + temperature_1d: + description: "The forecasted temperature (in [C](https://en.wikipedia.org/wiki/Celsius))." + mintemp_1d: + description: "The forecasted minimum temperature (in [C](https://en.wikipedia.org/wiki/Celsius))." + rainchance_1d: + description: The forecasted chance for rain (%). + sunchance_1d: + description: The forecasted chance for sun (%). + rain_1d: + description: "The forecasted amount of rain in [mm](https://en.wikipedia.org/wiki/Millimetre)." + snow_1d: + description: "The forecasted amount of snow in [cm](https://en.wikipedia.org/wiki/Centimetre)." + windforce_1d: + description: "The expected windforce in [Bft](https://en.wikipedia.org/wiki/Beaufort_scale)." + conditioncode_1d: + description: Symbol and condition code of the expected condition. + condition_1d: + description: Symbol and expected condition. + conditiondetailed_1d: + description: Symbol and detailed expected condition. + conditionexact_1d: + description: Symbol and full expected condition (in English). + symbol_1d: + description: Symbol and full expected condition (in Dutch). +{% endconfiguration %} -- **name** (*Optional*): You can specify a name of the component, but do not have to. If you specify a name, the sensors will get an entity name of `sensor.[name]_[default sensor display name]`, for example: - - `sensor.lopik_temperature`, since the name of the sensor is set to `lopik` and the default display name for monitored condition `temperature` is `Temperature` - - `sensor.lopik_wind_force`, since the name of the sensor is set to `lopik` and the default display name for monitored condition `windforce` is `Wind force` - - If no name is specified the sensors will be called `sensor.br_[default sensor display name]`, for example: - - `sensor.br_wind_speed`, since no name has been set for the sensor and the default display name for monitored condition `windspeed` is `Wind speed` - - `sensor.br_ground_temperature`, since no name has been set for the sensor and the default display name for monitored condition `groundtemperature` is `Ground Temperature` -- **latitude** (*Optional*): Latitude to use for selection of data source location. Longitude and latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar.nl. -- **longitude** (*Optional*): Longitude to use for selection of data source location. Longitude and latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar.nl. -- **timeframe** (*Optional*): Minutes to look ahead for precipitation forecast (5..120) [default: 60]. -- **monitored_conditions** array (*Required*): One or more conditions to display in the frontend. - - **stationname**: The name of the selected meteo-station. - - **conditioncode**: A symbol and a unique code identifying the current weather condition ([a..z]). - - **condition**: A symbol and the current weather condition (clear, cloudy, fog, rainy, snowy, lightning). - - **conditiondetailed**: A symbol and detailed current weather condition (clear, partlycloudy, cloudy, partlycloudy-fog, partlycloudy-light-rain, partlycloudy-rain, light-rain, rainy, snowy-rainy, partlycloudy-light-snow, partlycloudy-snow, light-snow, snowy, partlycloudy-lightning, lightning). - - **conditionexact**: A symbol with the full current weather condition (in English). - - **symbol**: A symbol for the current weather with the full current condition (in Dutch). - - **humidity**: The relative humidity (%). - - **temperature**: The current temperature (in [C](https://en.wikipedia.org/wiki/Celsius)). - - **groundtemperature**: The current ground temperature (in [C](https://en.wikipedia.org/wiki/Celsius)). - - **windspeed**: The wind speed in [m/s](https://en.wikipedia.org/wiki/M/s). - - **windforce**: The wind speed/force in [Bft](https://en.wikipedia.org/wiki/Beaufort_scale). - - **winddirection**: Where the wind is coming from: N (North),Z (south), NO (North-East), etc. - - **windazimuth**: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise. - - **pressure**: The sea-level air pressure in [hPa](https://en.wikipedia.org/wiki/Hectopascal). - - **visibility**: Visibility in meters ([m](https://en.wikipedia.org/wiki/Metre)). - - **windgust**: The wind speed of wind gusts ([m/s](https://en.wikipedia.org/wiki/M/s)). - - **precipitation**: The amount of precipitation/rain in mm/h. - - **precipitation_forecast_average**: The average expected precipitation/rain in mm/h within the given time-frame. - - **precipitation_forecast_total**: The total expected precipitation/rain in mm within the given time-frame. The total expected rain in the configured time-frame will be equal to _precipitation_forecast_total_/_timeframe_ mm/min. So, with time-frame configured to 30 minutes and a value of 5, the expected rain is 5 mm in 30 minutes, which is the same as 10 mm/h. If time-frame is set to 90 minutes and a value of 5, the expected rain is 5 mm in 90 minutes, which is equal to 3.3 mm/h. - - **irradiance**: Sun intensity in Watt per square meter ([W/m2](https://en.wikipedia.org/wiki/W/m2)). - - **temperature_1d** [[1d]](#1d): The forecasted temperature (in [C](https://en.wikipedia.org/wiki/Celsius)). - - **mintemp_1d** [[1d]](#1d): The forecasted minimum temperature (in [C](https://en.wikipedia.org/wiki/Celsius)). - - **rainchance_1d** [[1d]](#1d): The forecasted chance for rain (%). - - **sunchance_1d** [[1d]](#1d): The forecasted chance for sun (%). - - **rain_1d** [[1d]](#1d): The forecasted amount of rain in [mm](https://en.wikipedia.org/wiki/Millimetre). - - **snow_1d** [[1d]](#1d): The forecasted amount of snow in [cm](https://en.wikipedia.org/wiki/Centimetre). - - **windforce_1d** [[1d]](#1d): The expected windforce in [Bft](https://en.wikipedia.org/wiki/Beaufort_scale). - - **conditioncode_1d** [[1d]](#1d): Symbol and condition code of the expected condition. - - **condition_1d** [[1d]](#1d): Symbol and expected condition. - - **conditiondetailed_1d** [[1d]](#1d): Symbol and detailed expected condition. - - **conditionexact_1d** [[1d]](#1d): Symbol and full expected condition (in English). - - **symbol_1d** [[1d]](#1d): Symbol and full expected condition (in Dutch). +## {% linkable_title The `Name` Variable %} +If you specify a name, the sensors will get an entity name of `sensor.[name]_[default sensor display name]`, for example: -## Daily forecasts +- `sensor.lopik_temperature`, since the name of the sensor is set to `lopik` and the default display name for monitored condition `temperature` is `Temperature`. +- `sensor.lopik_wind_force`, since the name of the sensor is set to `lopik` and the default display name for monitored condition `windforce` is `Wind force`. -Conditions above marked with [1d] are daily forecasts. To get forecast for different day, replace the number +If no name is specified the sensors will be called `sensor.br_[default sensor display name]`, for example: + +- `sensor.br_wind_speed`, since no name has been set for the sensor and the default display name for monitored condition `windspeed` is `Wind speed`. +- `sensor.br_ground_temperature`, since no name has been set for the sensor and the default display name for monitored condition `groundtemperature` is `Ground Temperature`. + +## {% linkable_title Daily forecasts %} + +Conditions above marked with `1d` are daily forecasts. To get forecast for different day, replace the number in `_1d` part of the sensor name. Valid values are from `1` to `5`. - -## Configuration examples +## {% linkable_title Configuration examples %} Full configuration example (excluding forecasted conditions) where location is manually specified: @@ -119,7 +171,6 @@ Full configuration example (excluding forecasted conditions) where location is m - precipitation_forecast_total ``` - Configuration example with current condition and (some) forecasted values: ```yaml diff --git a/source/_components/sensor.comed_hourly_pricing.markdown b/source/_components/sensor.comed_hourly_pricing.markdown index b371c8c197d..4622d6b710f 100644 --- a/source/_components/sensor.comed_hourly_pricing.markdown +++ b/source/_components/sensor.comed_hourly_pricing.markdown @@ -28,12 +28,28 @@ sensor: - type: current_hour_average ``` -Configuration variables: - -- **monitored_feeds** array (*Required*): Feeds to monitor. - - **type** (*Required*): Name of the feed. - - **five_minute**: The latest 5-minute price in cents. - - **current_hour_average**: The latest current hour average price in cents. - - **name** (*Optional*): Custom name for the sensor. - - **offset** (*Optional*): The pricing feeds provide only the *supply* cost of the electricity. The offset parameter allows you to provide a fixed constant that will be added to the pricing data to provide a more accurate representation of the total electricity cost per kWh. - +{% configuration %} +monitored_feeds: + description: Feeds to monitor. + required: true + type: list + keys: + type: + description: Name of the feed. + required: true + type: list + keys: + five_minute: + description: The latest 5-minute price in cents. + current_hour_average: + description: The latest current hour average price in cents. + name: + description: Custom name for the sensor. + required: false + type: string + offset: + description: The pricing feeds provide only the *supply* cost of the electricity. The offset parameter allows you to provide a fixed constant that will be added to the pricing data to provide a more accurate representation of the total electricity cost per kWh. + required: false + default: 0.0 + type: float +{% endconfiguration %} diff --git a/source/_components/sensor.crimereports.markdown b/source/_components/sensor.crimereports.markdown index e80d504a51f..8637e53c976 100644 --- a/source/_components/sensor.crimereports.markdown +++ b/source/_components/sensor.crimereports.markdown @@ -26,14 +26,32 @@ sensor: radius: ``` -Configuration options for the Crime Reports Sensor: - -- **name** (*Required*): Name the sensor whatever you want. -- **radius** (*Required*): Radius in meters. -- **latitude** (*Optional*): Defaults to your home zone latitude. -- **longitude** (*Optional*): Defaults to your home zone longitude. -- **include** (*Optional*): List of incident types to include. -- **exclude** (*Optional*): List of incident types to exclude. +{% configuration %} +name: + description: Custom name for the sensor. + required: true + type: string +radius: + description: Radius in meters + required: true + type: float +latitude: + description: Latitude for sensor. + required: false + default: Your home zone latitude defined in your configuration. +longitude: + description: Longitude for sensor. + required: false + default: Your home zone longitude defined in your configuration. +include: + description: List of incident types to include. See below for a list of valid incidents. + required: false + type: list +exclude: + description: List of incident types to exclude. See below for a list of valid incidents. + required: false + type: list +{% endconfiguration %} ## {% linkable_title Notes %} diff --git a/source/_components/sensor.daikin.markdown b/source/_components/sensor.daikin.markdown index 5d9ba959592..8a1a060c43e 100644 --- a/source/_components/sensor.daikin.markdown +++ b/source/_components/sensor.daikin.markdown @@ -3,7 +3,7 @@ layout: page title: "Daikin AC Sensor" description: "Instructions on how to integrate Daikin AC(s) with Home Assistant." date: 2017-12-03 05:00 -sidebar: True +sidebar: true comments: false sharing: true footer: true @@ -19,34 +19,4 @@ The `daikin` sensor platform integrates Daikin air conditioning systems into Hom - Inside temperature - Outside temperature -## {% linkable_title Configuration %} - -To enable the platform manually, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: daikin - host: 10.0.0.1 - monitored_conditions: - - inside_temperature - - outside_temperature -``` - -{% configuration %} -host: - description: IP or hostname of the device. - required: true - type: string -monitored_conditions: - description: List of items you want to monitor for each device. - required: false - default: All conditions - type: list - keys: - inside_temperature: - description: The current temperature measured inside the house. - outside_temperature: - description: The current temperature measured outside the house. -{% endconfiguration %} - +For installation instructions, see [the Daikin component](/components/daikin/). diff --git a/source/_components/sensor.darksky.markdown b/source/_components/sensor.darksky.markdown index 919b6566dfa..d8f096d62a0 100644 --- a/source/_components/sensor.darksky.markdown +++ b/source/_components/sensor.darksky.markdown @@ -17,12 +17,16 @@ ha_iot_class: "Cloud Polling" The `darksky` platform uses the [Dark Sky](https://darksky.net/) web service as a source for meteorological data for your location. The location is based on the `longitude` and `latitude` coordinates configured in your `configuration.yaml` file. The coordinates are auto-detected but to take advantage of the hyper-local weather reported by Dark Sky, you can refine them down to your exact home address. GPS coordinates can be found by using [Google Maps](https://www.google.com/maps) and clicking on your home or [Openstreetmap](http://www.openstreetmap.org/). +## {% linkable_title Setup %} + You need an API key which is free but requires [registration](https://darksky.net/dev/register). You can make up to 1000 calls per day for free which means that you could make one approximately every 86 seconds.

[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.

+## {% linkable_title Configuration %} + To add Dark Sky to your installation, add the following to your `configuration.yaml` file: ```yaml @@ -30,102 +34,184 @@ To add Dark Sky to your installation, add the following to your `configuration.y sensor: - platform: darksky api_key: YOUR_API_KEY + forecast: + - 0 monitored_conditions: - summary - icon - - nearest_storm_distance + - temperature ``` -Configuration variables: +{% configuration %} +api_key: + description: Your API key. + required: true + type: string +name: + description: Additional name for the sensors. + required: false + default: Dark Sky + type: string +forecast: + description: List of days in the 7-day forecast you would like to receive data on, starting with today as day 0 and ending with day 7. Any condition from `monitored_conditions` with a daily forecast by Dark Sky will generate a sensor with entity_id `_`. + required: false + type: list +language: + description: The desired language of the summary properties. The valid options are further down in a table. + required: false + default: "`en`" + type: string +latitude: + description: Latitude coordinate to monitor weather of (required if **longitude** is specified). + required: false + default: coordinates defined in your `configuration.yaml` + type: float +longitude: + description: Longitude coordinate to monitor weather of (required if **latitude** is specified). + required: false + default: coordinates defined in your `configuration.yaml` + type: float +monitored_conditions: + description: Conditions to display in the frontend. + required: true + type: list + keys: + summary: + description: A human-readable text summary. + icon: + description: A machine-readable text summary, suitable for selecting an icon for display. See [Dark Sky API documentation][] for the list of possible values. + precip_type: + description: The type of precipitation occurring at the given time. If `precip_intensity` is zero, then this property will be `unknown`. See [Dark Sky API documentation][] for the list of possible values. + precip_intensity: + description: The intensity of precipitation occurring at the given time. This value is conditional on probability (that is, assuming any precipitation occurs at all). + precip_probability: + description: The probability of precipitation occurring, in percents. + precip_accumulation: + description: The amount of snowfall accumulation expected to occur. If no snowfall is expected, this property will be `undefined`. + temperature: + description: The air temperature. + apparent_temperature: + description: The apparent (or "feels like") temperature. + dew_point: + description: The dew point. + wind_speed: + description: The wind speed. + wind_gust: + description: The wind gust speed. + wind_bearing: + description: The direction that the wind is coming **from** in degrees, with true north at 0° and progressing clockwise. If `wind_speed` is 0, then this value is `unknown`. + cloud_cover: + description: The percentage of sky occluded by clouds. + humidity: + description: The relative humidity. + pressure: + description: The sea-level air pressure in millibars. + visibility: + description: The average visibility. + ozone: + description: The columnar density of total atmospheric ozone at the given time in Dobson units. + minutely_summary: + description: A human-readable text summary for the next hour. + hourly_summary: + description: A human-readable text summary for the next two days. + daily_summary: + description: A human-readable text summary for the next week. + temperature_high: + description: The daytime high temperature. + temperature_low: + description: The overnight low temperature. + apparent_temperature_high: + description: The daytime high apparent temperature. + apparent_temperature_low: + description: The overnight low apparent temperature. + precip_intensity_max: + description: The maximum value of `precip_intensity` during a given day. + uv_index: + description: The UV index. + moon_phase: + description: "The fractional part of the lunation number during the given day: a value of 0 corresponds to a new moon, 0.25 to a first quarter moon, 0.5 to a full moon, and 0.75 to a last quarter moon." + sunrise_time: + description: The time of when the sun will rise during a given day. + sunset_time: + description: The time of when the sun will set during a given day. + nearest_storm_distance: + description: The approximate distance to the nearest storm in miles. + nearest_storm_bearing: + description: The approximate direction of the nearest storm in degrees, with true north at 0° and progressing clockwise. +units: + description: Specify the unit system. Valid options are `auto`, `us`, `si`, `ca` and `uk2`. `auto` will let Dark Sky decide the unit system based on location. + required: false + default: "`si` or `us`, based on the temperature preference in Home Assistant." + type: string +update_interval: + description: "Minimum time interval between updates. Supported formats: `update_interval: 'HH:MM:SS'`, `update_interval: 'HH:MM'` and Time period dictionary (see example below)." + required: false + default: 2 minutes + type: time +{% endconfiguration %} -- **api_key** (*Required*): Your API key. -- **name** (*Optional*): Additional name for the sensors. Default to platform name. -- **forecast** array (*Optional*): List of days in the 7 day forecast you would like to receive data on, starting with tomorrow as day 1. Any `monitored_condition` with a daily forecast by DarkSky will generate a sensor tagged with `_`. -- **language** (*Optional*): The desired language of the summary properties. Valid options are - - `ar`: Arabic - - `az`: Azerbaijani - - `be`: Belarusian - - `bg`: Bulgarian - - `bs`: Bosnian - - `ca`: Catalan - - `cs`: Czech - - `da`: Danish - - `de`: German - - `el`: Greek - - `en`: English (which is the default) - - `es`: Spanish - - `et`: Estonian - - `fi`: Finnish - - `fr`: French - - `hr`: Croatian - - `hu`: Hungarian - - `id`: Indonesian - - `is`: Icelandic - - `it`: Italian - - `ja`: Japanese - - `ka`: Georgian - - `kw`: Cornish - - `nb`: Norwegian Bokmål - - `nl`: Dutch - - `pl`: Polish - - `pt`: Portuguese - - `ro`: Romanian - - `ru`: Russian - - `sk`: Slovak - - `sl`: Slovenian - - `sr`: Serbian - - `sv`: Swedish - - `tet`: Tetum - - `tr`: Turkish - - `uk`: Ukrainian - - `x-pig-latin`: Igpay Atinlay - - `zh`: simplified Chinese - - `zh-tw`: traditional Chinese -- **latitude** (*Optional*): Latitude coordinate to monitor weather of (required if **longitude** is specified), defaults to coordinates defined in your `configuration.yaml` -- **longitude** (*Optional*): Longitude coordinate to monitor weather of (required if **latitude** is specified), defaults to coordinates defined in your `configuration.yaml` -- **monitored_conditions** array (*Required*): Conditions to display in the frontend. - - **summary**: A human-readable text summary of the current conditions. - - **precip_type**: The type of precipitation occurring. - - **precip_intensity**: The average expected intensity of precipitation occurring. - - **precip_probability**: A value between 0 and 1 which is representing the probability of precipitation. - - **precip_accumulation**: Daily snow accumulation. Returns unknown if no snow accumulation available. - - **temperature**: The current temperature. - - **apparent_temperature**: A numerical value representing the apparent (or "feels like") temperature. - - **dew_point**: The dew point. - - **wind_speed**: The wind speed. - - **wind_bearing**: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise. - - **cloud_cover**: The percentage of sky occluded by clouds. - - **humidity**: The relative humidity. - - **pressure**: The sea-level air pressure in millibars. - - **visibility**: The average visibility. - - **ozone**: The columnar density of total atmospheric ozone in Dobson. - - **minutely_summary**: A human-readable text summary for the next hour. - - **hourly_summary**: A human-readable text summary for the next 24 hours. - - **daily_summary**: A human-readable text summary for the next 7 days. - - **temperature_high**: Today's daytime expected high temperature. - - **temperature_low**: Today's overnight expected low temperature. - - **apparent_temperature_high**: Today's daytime expected apparent high temperature. - - **apparent_temperature_low**: Today's overnight expected apparent low temperature. - - **precip_intensity_max**: Today's expected maximum intensity of precipitation. - - **uv_index**: The current UV index. - - **moon_phase**: The fractional part of the lunation number during the given day. -- **units** (*Optional*): Specify the unit system. Default to `si` or `us` based on the temperature preference in Home Assistant. Other options are `auto`, `us`, `si`, `ca`, `uk` and `uk2`. -`auto` will let Dark Sky decide the unit system based on location. -- **update_interval** (*Optional*): Minimum time interval between updates. Default is 2 minutes. Supported formats: - - `update_interval: 'HH:MM:SS'` - - `update_interval: 'HH:MM'` - - Time period dictionary, e.g.: -
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`|

While the platform is called "darksky" the sensors will show up in Home Assistant as "dark_sky" (eg: sensor.dark_sky_summary).

-Details about the API are available in the [Dark Sky documentation](https://darksky.net/dev/docs). +More details about the API are available in the [Dark Sky API documentation][]. + +[Dark Sky API documentation]: https://darksky.net/dev/docs diff --git a/source/_components/sensor.dnsip.markdown b/source/_components/sensor.dnsip.markdown index 753cb05b154..7783504930d 100644 --- a/source/_components/sensor.dnsip.markdown +++ b/source/_components/sensor.dnsip.markdown @@ -13,7 +13,6 @@ ha_iot_class: "Cloud Polling" ha_release: "0.40" --- - The `dnsip` sensor will expose an IP address, fetched via DNS resolution, as its value. There are two operational modes: 1. When you enable the sensor with minimal configuration, it will query the [OpenDNS](https://www.opendns.com/) nameservers with the hostname `myip.opendns.com`, which will resolve to your external/public IP address. @@ -31,14 +30,38 @@ sensor: - platform: dnsip ``` -Configuration variables: - -- **hostname** (*Optional*): The hostname for which to perform the DNS query. Defaults to `myip.opendns.com` (special hostname that resolves to your public IP). -- **name** (*Optional*): Name of the sensor. Defaults to `myip` or hostname without dots if specified. -- **resolver** (*Optional*): The DNS server to target the query at. Defaults to `208.67.222.222` (OpenDNS). -- **ipv6** (*Optional*): Set this to `true` or `false` if IPv6 should be used. When resolving the public IP, this will be the IP of the machine where Home Assistant is running on. -- **resolver_ipv6** (*Optional*): The IPv6 DNS server to target the query at. Defaults to `2620:0:ccc::2` (OpenDNS). -- **scan_interval** (*Optional*): Defines number of seconds for polling interval. Defaults to `120` seconds. +{% configuration %} +hostname: + description: The hostname for which to perform the DNS query. + required: false + default: "`myip.opendns.com` (special hostname that resolves to your public IP)" + type: string +name: + description: Name of the sensor. + required: false + default: "`myip` or hostname without dots if specified" + type: string +resolver: + description: The DNS server to target the query at. + required: false + default: "`208.67.222.222` (OpenDNS)" + type: string +ipv6: + description: Set this to `true` or `false` if IPv6 should be used. When resolving the public IP, this will be the IP of the machine where Home Assistant is running on. + required: false + default: false + type: boolean +resolver_ipv6: + description: The IPv6 DNS server to target the query at. + required: false + default: "`2620:0:ccc::2` (OpenDNS)" + type: string +scan_interval: + description: Defines number of seconds for polling interval. + required: false + default: "`120`" + type: integer +{% endconfiguration %} ## {% linkable_title Extended example %} diff --git a/source/_components/sensor.dsmr.markdown b/source/_components/sensor.dsmr.markdown index a4df6c3f187..0c47292e9cb 100644 --- a/source/_components/sensor.dsmr.markdown +++ b/source/_components/sensor.dsmr.markdown @@ -17,7 +17,7 @@ A sensor platform for Dutch Smart Meters which comply to DSMR (Dutch Smart Meter - Currently support DSMR V2.2, V3, V4 and V5 through the [dsmr_parser](https://github.com/ndokter/dsmr_parser) module by Nigel Dokter. - For official information about DSMR refer to: [DSMR Document](https://www.netbeheernederland.nl/dossiers/slimme-meter-15) -- For official information about the P1 port refer to: https://www.wijhebbenzon.nl/media/kunena/attachments/3055/DSMRv5.0FinalP1.pdf +- For official information about the P1 port refer to: - For unofficial hardware connection examples refer to: [Domoticx](http://domoticx.com/p1-poort-slimme-meter-hardware/)

@@ -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/ +- +- +- Serial to network proxies: -- ser2net - http://ser2net.sourceforge.net/ +- ser2net - ```yaml # Example configuration.yaml entry @@ -138,4 +138,3 @@ The contents of this telegram differ between version but they generally consist This module sets up an asynchronous reading loop using the `dsmr_parser` module which waits for a complete telegram, parser it and puts it on an async queue as a dictionary of `obis`/object mapping. The numeric value and unit of each value can be read from the objects attributes. Because the `obis` are know for each DSMR version the Entities for this component are create during bootstrap. Another loop (DSMR class) is setup which reads the telegram queue, stores/caches the latest telegram and notifies the Entities that the telegram has been updated. - diff --git a/source/_components/sensor.dte_energy_bridge.markdown b/source/_components/sensor.dte_energy_bridge.markdown index 80028de606c..66428e62e25 100644 --- a/source/_components/sensor.dte_energy_bridge.markdown +++ b/source/_components/sensor.dte_energy_bridge.markdown @@ -27,8 +27,18 @@ sensor: ip: 192.168.1.11 ``` -Configuration variables: - -- **ip** (*Required*): The IP address of your bridge. -- **name** (*Optional*): Name to use in the frontend. -- **version** (*Optional*): Hardware version of the sensor. Defaults to 1. +{% configuration %} +ip: + description: The IP address of your bridge. + required: true + type: string +name: + description: Name to use in the frontend. + required: false + type: string +version: + description: Hardware version of the sensor. + required: false + type: string + default: 1 +{% endconfiguration %} \ No newline at end of file diff --git a/source/_components/sensor.dwd_weather_warnings.markdown b/source/_components/sensor.dwd_weather_warnings.markdown index 84ed3ca5b52..3f5372012db 100644 --- a/source/_components/sensor.dwd_weather_warnings.markdown +++ b/source/_components/sensor.dwd_weather_warnings.markdown @@ -18,6 +18,8 @@ The `dwd_weather_warnings` sensor platform uses the [Deutsche Wetter Dienst (DWD - A name is optional but if multiple regions are used a name will be required. - The sensor checks for new data every 15 minutes. +## {% linkable_title Configuration %} + To add the DWD WarnApp sensor to your installation, add the following to your `configuration.yaml` file: ```yaml @@ -27,15 +29,14 @@ sensor: region_name: Hansestadt Hamburg ``` -To get the region name: -- Find your region here: `https://www.dwd.de/DE/wetter/warnungen_landkreise/warnWetter_node.html?ort=Hamburg` -- Verify if you find any warning for your region here: `https://www.dwd.de/DWD/warnungen/warnapp_landkreise/json/warnings.json?jsonp=loadWarnings` +

+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` +

{% configuration %} region_name: @@ -49,3 +50,25 @@ name: type: string default: DWD-Weather-Warnings {% endconfiguration %} + +### {% linkable_title Attributes %} + +| Attribute | Description | +| ------------ | -------------------------------------- | +| `last_updated` | Information last update from DWD service. | +| `region_name` | Requested region name. This should be the same as the region name in the configuration. | +| `region_state` | State (Bundesland) in abriviated form the requested region is located, eg. "HE" for "Hessen". | +| `region_id` | Region ID assigned by DWD. | +| `warning_count` | *(int)* Number of issued warnings. There can be more than one warning issued at once. | +| `warning__level` | *(int)* Issued warning level between 0 and 4.
0: Keine Warnungen
1: Wetterwarnungen
2: Warnungen vor markantem Wetter
3: Unwetterwarnungen
4: Warnungen vor extremem Unwetter | +| `warning__type` | *(int)* Issued warning type.
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__name` | This name correlates with the warning type and indicates it in short as a string. | +| `warning__headline` | Official headline the weather warning. | +| `warning__start` | Starting time and date of the issued warning. | +| `warning__end` | Ending time and date of the issued warning. | +| `warning__description` | Details for the issued warning. | +| `warning__instruction` | The DWD is sometimes providing helpful information about precautions to take for the issued warning. | + +

+In the attribute name `x` is the counter of the warning starting from `1`. +

diff --git a/source/_components/sensor.dweet.markdown b/source/_components/sensor.dweet.markdown index 1bc81d27e67..971c4e734bb 100644 --- a/source/_components/sensor.dweet.markdown +++ b/source/_components/sensor.dweet.markdown @@ -15,36 +15,55 @@ ha_iot_class: "Cloud Polling" The `dweet` sensor platform allows you to get details from your devices which are publishing their values to [Dweet.io](https://dweet.io/). -To use Dweet.io in your installation, add the following to your `configuration.yaml` file: +## {% linkable_title Configuration %} +To use Dweet.io sensors in your installation, add the following to your `configuration.yaml` file: + +{% raw %} ```yaml # Example configuration.yaml entry sensor: - platform: dweet device: THING_NAME - value_template: '{% raw %}{{ value_json.VARIABLE }}{% endraw %}' + value_template: '{{ value_json.VARIABLE }}' ``` +{% endraw %} -Configuration variables: - -- **device** (*Required*): Identification of the device (also known as `thing`). -- **value_template** (*Required*): The variable to extract a value from the content. -- **name** (*Optional*): Let you overwrite the name of the device in the frontend. -- **unit_of_measurement** (*Optional*): Defines the unit of measurement of the sensor, if any. +{% configuration %} +device: + description: Identification of the device (also known as `thing`). + required: true + type: string +value_template: + description: The variable to extract a value from the content. + required: true + type: template +name: + description: Let you overwrite the name of the device in the frontend. + required: false + default: Dweet.io Sensor + type: string +unit_of_measurement: + description: Defines the unit of measurement of the sensor, if any. + required: false + type: string +{% endconfiguration %} ### {% linkable_title Full configuration sample %} A full configuration entry could look like the sample below. +{% raw %} ```yaml # Example configuration.yaml entry sensor: - platform: dweet name: Temperature device: THING_NAME - value_template: '{% raw %}{{ value_json.VARIABLE }}{% endraw %}' + value_template: '{{ value_json.VARIABLE }}' unit_of_measurement: "°C" ``` +{% endraw %} ### {% linkable_title Interacting with Dweet.io %} @@ -53,6 +72,7 @@ You can easily send dweets from the command-line to test your sensor with `curl` ```bash $ curl -H 'Content-Type: application/json' -d '{"temperature": 40, "humidity": 65}' https://dweet.io/dweet/for/ha-sensor ``` + will give you a response like the one below: ```json @@ -61,7 +81,7 @@ will give you a response like the one below: The [dweepy](https://github.com/paddycarey/dweepy) module gives you another option to work with [Dweet.io](https://dweet.io/). -Send a dweet. +Send a dweet. ```bash $ python3 @@ -76,4 +96,3 @@ Receive the latest dweet. >>> dweepy.get_latest_dweet_for('ha-sensor') [{'thing': 'ha-sensor'', 'created': '2015-12-10T09:43:31.133Z', 'content': {'humidity': 65, 'temperature': 40}}] ``` - diff --git a/source/_components/sensor.ebox.markdown b/source/_components/sensor.ebox.markdown index c71643c4c81..cbdad34af61 100644 --- a/source/_components/sensor.ebox.markdown +++ b/source/_components/sensor.ebox.markdown @@ -31,20 +31,47 @@ sensor: - before_offpeak_total ``` -Configuration variables: - -- **username** (*Required*): Your EBox username. -- **password** (*Required*): Your EBox password. -- **monitored_variables** array (*Required*): Variables to monitor. - - **before_offpeak_download**: Download before offpeak usage - - **before_offpeak_upload**: Upload before offpeak usage - - **before_offpeak_total**: Total before offpeak usage - - **offpeak_download**: Download offpeak usage - - **offpeak_upload**: Upload offpeak usage - - **offpeak_total**: Total offpeak usage - - **download**: Download usage - - **upload**: Upload usage - - **total**: Total usage - - **balance**: Account balance - - **limit**: Limit usage - - **usage**: Percent usage +{% configuration %} +username: + description: Your EBox username. + required: true + type: string +password: + description: Your EBox password. + required: true + type: string +name: + description: The name of the sensor. + required: false + default: EBox + type: string +monitored_variables: + description: Variables to monitor. + required: true + type: list + keys: + before_offpeak_download: + description: Download before offpeak usage + before_offpeak_upload: + description: Upload before offpeak usage + before_offpeak_total: + description: Total before offpeak usage + offpeak_download: + description: Download offpeak usage + offpeak_upload: + description: Upload offpeak usage + offpeak_total: + description: Total offpeak usage + download: + description: Download usage + upload: + description: Upload usage + total: + description: Total usage + balance: + description: Account balance + limit: + description: Limit usage + usage: + description: Percent usage +{% endconfiguration %} diff --git a/source/_components/sensor.eddystone_temperature.markdown b/source/_components/sensor.eddystone_temperature.markdown index 4d5aacbbc25..68fd13503c7 100644 --- a/source/_components/sensor.eddystone_temperature.markdown +++ b/source/_components/sensor.eddystone_temperature.markdown @@ -16,12 +16,12 @@ ha_iot_class: "Local Polling" The `eddystone_temperature` sensor platform reads temperature information from Bluetooth LE advertisements transmitted by [Eddystone](https://en.wikipedia.org/wiki/Eddystone_(Google)) beacons. Your beacons must be configured to transmit UID frames (for identification) and TLM frames (for temperature). All beacons that support the Eddystone protocol, have a temperature sensor and can transmit TLM frames are compatible with this platform. For example [Gimbal](https://store.gimbal.com/collections/beacons/), [Estimote](http://estimote.com/) or [kontakt.io](https://kontakt.io/). For more manufacturers see [this overview](https://developers.google.com/beacons/eddystone#beacon_manufacturers) by Google. -## Requirements +## {% linkable_title Requirements %} As this platform uses `bluez` to scan for Bluetooth LE devices **a Linux OS with bluez installed** is required. In addition to that, the `libbluetooth` headers need to be installed: ```bash -$ sudo apt-get install libbluetooth-dev +$ sudo apt-get install libbluetooth-dev ``` Scanning for Bluetooth LE devices also requires special permissions. To grant these to the python executable execute the following: @@ -46,10 +46,33 @@ sensor: namespace: "112233445566778899AA" instance: "000000000002" ``` -Configuration variables: -- **bt_device_id** (*Optional*): The id of the Bluetooth device that should be used for scanning (hci*X*). You can find the correct one using `hcitool dev` (default: 0). -- **beacons** array (*Required*): The beacons that should be monitored. - - **[entry]** (*Required*): Name of the beacon. - - **namespace** (*Required*): Namespace ID of the beacon in hexadecimal notation. Must be exactly 20 characters (10 bytes) long. - - **instance** (*Required*): Instance ID of the beacon in hexadecimal notation. Must be exactly 12 characters (6 bytes) long. - - **name** (*Optional*): Friendly name of the beacon. + +{% configuration %} +bt_device_id: + description: The id of the Bluetooth device that should be used for scanning (hci*X*). You can find the correct one using `hcitool dev`. + required: false + default: 0 + type: integer +beacons: + description: The beacons that should be monitored. + required: true + type: list + keys: + entry: + description: Name of the beacon. + required: true + type: list + keys: + namespace: + description: Namespace ID of the beacon in hexadecimal notation. Must be exactly 20 characters (10 bytes) long. + required: true + type: string + instance: + description: Instance ID of the beacon in hexadecimal notation. Must be exactly 12 characters (6 bytes) long. + required: true + type: string + name: + description: Friendly name of the beacon. + required: false + type: string +{% endconfiguration %} diff --git a/source/_components/sensor.efergy.markdown b/source/_components/sensor.efergy.markdown index 3ffd7d36d77..3291644614e 100644 --- a/source/_components/sensor.efergy.markdown +++ b/source/_components/sensor.efergy.markdown @@ -45,16 +45,43 @@ sensor: - type: current_values ``` -Configuration variables: - -- **app_token** (*Required*): The App Token for your account. -- **utc_offset** (*Required*): Some variables (currently only the daily_cost) require that the negative number of minutes your timezone is ahead/behind UTC time. -- **monitored_variables** array (*Required*): Variables to monitor. - - **type** (*Required*): Name of the variable. - - **instant_readings**: Instant energy consumption. - - **budget**: Monthly budget. - - **cost**: The cost for energy consumption (with the tariff that has been set in Efergy) over a given period. - - **amount**: The amount of energy consumed over a given period. - - **current_values**: This returns the current energy usage of each device on your account, as `efergy_\`. If you only have one device in your account, this is effectively the same as instant_readings. - - **period** (*Optional*): Some variables take a period argument. Valid options are "day", "week", "month", and "year". - - **currency** (*Optional*): This is used to display the cost/period as the unit when monitoring the cost. It should correspond to the actual currency used in your dashboard. +{% configuration %} +app_token: + description: The App Token for your account. + required: true + type: string +utc_offset: + description: Some variables (currently only the daily_cost) require that the negative number of minutes your timezone is ahead/behind UTC time. + required: false + default: 0 + type: string +monitored_variables: + description: Variables to monitor. + required: true + type: list + keys: + type: + description: Name of the variable. + required: true + type: list + keys: + instant_readings: + description: Instant energy consumption. + budget: + description: Monthly budget. + cost: + description: The cost for energy consumption (with the tariff that has been set in Efergy) over a given period. + amount: + description: The amount of energy consumed over a given period. + current_values: + description: This returns the current energy usage of each device on your account, as `efergy_\`. If you only have one device in your account, this is effectively the same as instant_readings. + period: + description: Some variables take a period argument. Valid options are "day", "week", "month", and "year". + required: false + default: year + type: string + currency: + description: This is used to display the cost/period as the unit when monitoring the cost. It should correspond to the actual currency used in your dashboard. + required: false + type: string +{% endconfiguration %} diff --git a/source/_components/sensor.entur_public_transport.markdown b/source/_components/sensor.entur_public_transport.markdown new file mode 100644 index 00000000000..1e9477fc773 --- /dev/null +++ b/source/_components/sensor.entur_public_transport.markdown @@ -0,0 +1,124 @@ +--- +layout: page +title: "Entur public transport" +description: "Instructions for how to set up monitoring of public transport departures in Norway." +date: 2018-10-09 17:15 +sidebar: true +comments: false +sharing: true +footer: true +logo: entur.svg +ha_category: Transport +ha_release: 0.84 +ha_iot_class: "Cloud Polling" +--- + +The `entur_public_transport` sensor gives real-time departure information for the next two departures from any bus stop, car ferry quay, train station, airport and person ferries quay in Norway. + +For each stop place given in the configuration, a sensor will be mounted for that stop place. It will give remaining minutes until the nearest departure in the state, but also next departure in the attributes. Information about if the departure is monitored in real-time or is from scheduled times, and how many minutes there is in delays, are included as well. + +Real-time data is fetched from [Entur](https://www.entur.org). Entur is a service which collects and delivers information about all public transport available in Norway under an [open source license](https://data.norge.no/nlod/no). + +

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. +

+ +## {% linkable_title Configuration %} + +```yaml +# Example configuration.yaml entry +sensor: + - platform: entur_public_transport + stop_ids: + - 'STOP_ID_1' + - 'STOP_ID_2' +``` + +{% configuration %} +stop_ids: + description: List of stop places or platforms to monitor departure times from. + required: true + type: list +name: + description: Override parts of the sensor name. + required: false + type: string + default: Entur +expand_platforms: + description: If additional sensors should be created for each platform under a stop place. + required: false + type: boolean + default: true +show_on_map: + description: If platform locations should be added to the sensor, and the map. + required: false + type: boolean + default: false +line_whitelist: + description: List of lines that should be whitelisted in the resulting sensors, and will only show when the defined lines are expected to leave the platform or station. All lines that you want on any of the sensors should be included in the list. + required: false + type: list +{% endconfiguration %} + +## {% linkable_title Example usage %} + +Example of multiple stop places, with expanded sensors for each platform under the station, and with the platforms added to the map. + +```yaml +# Example configuration.yaml entry +sensor: + - platform: entur_public_transport + name: Transport + expand_platforms: true + show_on_map: true + stop_ids: + - 'NSR:StopPlace:548' # Bergen train station + - 'NSR:StopPlace:737' # Trondheim airport + - 'NSR:StopPlace:5850' # Grorud T bus stop + - 'NSR:StopPlace:58652' # Mortavika ferry + - 'NSR:StopPlace:27639' # Sør-Hidle quay + - 'NSR:Quay:48550' # Fiskepiren bus stop platform 1 +``` + +Example with whitelisting of one line on each stop place. + +```yaml +# Example configuration.yaml entry +sensor: + - platform: entur_public_transport + stop_ids: + - 'NSR:Quay:7333' + - 'NSR:Quay:48550' + - 'NSR:StopPlace:596' + line_whitelist: + - 'RUT:Line:1' + - 'KOL:Line:1000_236' + - 'NSB:Line:59' +``` + +## {% linkable_title Obtaining a stop id %} + +[Entur's travel planer](https://en-tur.no) has a map of all stops used in Norway. Use the map to find the stops you're interested in. When you have found one of your stops, click on it. + +Now the web browser should contain an URL with the id in it. Such as this: + +`https://en-tur.no/nearby-stop-place-detail?id=NSR:StopPlace:32376` + +The stop id is the content after `id=` parameter in the url. Copy paste this into the configuration. + +## {% linkable_title FAQ - Troubleshooting %} + +**Q:** I have multiple stop ids and have added whitelisting of a line. Now some of the stop places are showing `unknown`. + +**A:** A whitelisting of lines takes affect on all of the stops. So you have to whitelist all lines you are interested in on all stop places. + +--- + +**Q:** I have added whitelisting of lines, and everything has worked as fine before, but now it has stopped updating all of a sudden. + +**A:** Some transport companies, such as Kolumbus in Rogaland, have running numbers on the end of their line ids. These gets periodically updated and will make the whitelisting invalid. The new line ids needs to be added again. Most of the time it iterates by one. + +--- + +**Q:** Where do I find a line id to add to the whitelisting? + +**A:** The sensor will show the line id, and is the recommended way to find it, while we wait for 'Nasjonalt Stoppestedregister' to become public. It is also possible to see the line ids by using the developer tool in the browser while looking at the trafic in [Entur's travel planer](https://en-tur.no). \ No newline at end of file diff --git a/source/_components/sensor.envirophat.markdown b/source/_components/sensor.envirophat.markdown index 0e41d737225..931eab001b1 100644 --- a/source/_components/sensor.envirophat.markdown +++ b/source/_components/sensor.envirophat.markdown @@ -47,37 +47,65 @@ sensor: - voltage_3 ``` -Configuration variables: +{% configuration %} +display_options: + description: List of readings to monitor. + required: false + default: All the conditions + type: list + keys: + temperature: + description: Ambient temperature in Celsius. Since the sensor is close to the Raspberry Pi, that might affect the accuracy of the reading (ie. the Pi might heat up the sensor) + pressure: + description: Atmospheric pressure in hPa. + light: + description: Ambient light, as an integer in the 0-65535 range. + light_red: + description: Red color reading scaled to the ambient light, as an integer in the 0-255 range. + light_green: + description: Green color reading scaled to the ambient light, as an integer in the 0-255 range. + light_blue: + description: Blue color reading scaled to the ambient light, as an integer in the 0-255 range. + accelerometer_x: + description: Accelerometer reading in units of G, along the X axis. + accelerometer_y: + description: Accelerometer reading in units of G, along the Y axis. + accelerometer_z: + description: Accelerometer reading in units of G, along the Z axis. + magnetometer_x: + description: Magnetometer reading, the X component of the raw vector. + magnetometer_y: + description: Magnetometer reading, the y component of the raw vector. + magnetometer_z: + description: Magnetometer reading, the z component of the raw vector. + voltage_0: + description: Voltage reading on Analog In 0 in units of V. + voltage_1: + description: Voltage reading on Analog In 1 in units of V. + voltage_2: + description: Voltage reading on Analog In 2 in units of V. + voltage_3: + description: Voltage reading on Analog In 3 in units of V. +use_led: + description: Declaring that the on-board LEDs are *not* used for the color measurements thus these readings are based on the ambient light. If the value is set to True, the on-board LEDs will blink whenever a reading is taken. + required: false + default: false + type: boolean +{% endconfiguration %} -- **display_options** (*Optional*) array: List of readings to monitor. Default is monitoring all of them: - - **temperature**: ambient temperature in Celsius. Since the sensor is close to the Raspberry Pi, that might affect the accuracy of the reading (ie. the Pi might heat up the sensor) - - **pressure**: atmospheric pressure in hPa. - - **light**: ambient light, as an integer in the 0-65535 range - - **light_red**: red color reading scaled to the ambient light, as an integer in the 0-255 range - - **light_green**: green color reading scaled to the ambient light, as an integer in the 0-255 range - - **light_blue**: blue color reading scaled to the ambient light, as an integer in the 0-255 range - - **accelerometer_x**: accelerometer reading in units of G, along the X axis - - **accelerometer_y**: accelerometer reading in units of G, along the Y axis - - **accelerometer_z**: accelerometer reading in units of G, along the Z axis - - **magnetometer_x**: magnetometer reading, the X component of the raw vector - - **magnetometer_y**: magnetometer reading, the Y component of the raw vector - - **magnetometer_z**: magnetometer reading, the X component of the raw vector - - **voltage_0**: voltage reading on Analog In 0 in units of V - - **voltage_1**: voltage reading on Analog In 1 in units of V - - **voltage_2**: voltage reading on Analog In 2 in units of V - - **voltage_3**: voltage reading on Analog In 3 in units of V -- **use_led** (*Optional*) True / False boolean; Default value is False, declaring that the on-board LEDs are *not* used for the color measurements thus these readings are based on the ambient light. If the value is set to True, the on-board LEDs will blink whenever a reading is taken. +### {% linkable_title Notes %} -### Notes +#### X, Y, Z axes -* **X, Y, Z axes** - * X is parallel with the long edge of the board - * Y is parallel with the short edge of the board - * Z is perpendicular to the board -* **Voltages** - * voltage readings are done in the 0-3.3V range, please do not connect higher voltages than that! See the [Enviro pHAT's getting started guide](https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-enviro-phat) regarding how to make a voltage divider +- X is parallel with the long edge of the board +- Y is parallel with the short edge of the board +- Z is perpendicular to the board -### Give the values friendly names & icons +#### Voltages + +- voltage readings are done in the 0-3.3V range, please do not connect higher voltages than that! See the [Enviro pHAT's getting started guide](https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-enviro-phat) regarding how to make a voltage divider + +### {% linkable_title Give the values friendly names & icons %} Add something like the following to your [customize section](/docs/configuration/customizing-devices/): diff --git a/source/_components/sensor.fail2ban.markdown b/source/_components/sensor.fail2ban.markdown index 20f46f6f15c..fd0f239026d 100644 --- a/source/_components/sensor.fail2ban.markdown +++ b/source/_components/sensor.fail2ban.markdown @@ -164,7 +164,7 @@ Once that's added to the nginx configuration, we need to modify the Home Assista ```yaml http: - use_x_forwarded_for: True + use_x_forwarded_for: true ``` At this point, once the Let's Encrypt and Home Assistant dockers are restarted, Home Assistant should be correctly logging the originating IP of any failed login attempt. Once that's done and verified, we can move onto the final step. diff --git a/source/_components/sensor.fastdotcom.markdown b/source/_components/sensor.fastdotcom.markdown index 1f808674777..5a6654dda7f 100644 --- a/source/_components/sensor.fastdotcom.markdown +++ b/source/_components/sensor.fastdotcom.markdown @@ -20,7 +20,9 @@ The `fastdotcom` sensor component uses the [Fast.com](https://fast.com/) web ser Currently fast.com only supports measuring download bandwidth. If you want to measure bandwidth metrics other then download such as ping and upload, utilize the [speedtest](/components/sensor.speedtest) component.

-By default, it will run every hour. The user can change the update frequency in the config by defining the minute, hour, and day for a speedtest to run. +By default, it will run every hour. The user can change the update frequency in the configuration by defining the minute and hour for a speedtest to run. + +## {% linkable_title Configuration %} To add a Fast.com sensor to your installation, add the following to your `configuration.yaml` file: @@ -28,11 +30,9 @@ Once per hour, on the hour (default): ```yaml sensor: - - platform: fastdotcom + - platform: fastdotcom ``` -More examples: - Every half hour of every day: ```yaml @@ -42,15 +42,32 @@ sensor: - 0 - 30 ``` -Configuration variables: -- **minute** (*Optional*): Specify the minute(s) of the hour to schedule the speedtest. Use a list for multiple entries. Default is 0. -- **hour** (*Optional*): Specify the hour(s) of the day to schedule the speedtest. Use a list for multiple entries. Default is None. -- **day** (*Optional*): Specify the day(s) of the month to schedule the speedtest. Use a list for multiple entries. Default is None. -- **manual** (*Optional*): True or False to turn manual mode on or off. Manual mode will disable scheduled speedtests. +{% configuration %} +second: + description: Specify the second(s) of the hour to schedule the speedtest. Use a list for multiple entries. + required: false + default: 0 + type: list +minute: + description: Specify the minute(s) of the hour to schedule the speedtest. Use a list for multiple entries. + required: false + default: 0 + type: list +hour: + description: Specify the hour(s) of the day to schedule the speedtest. Use a list for multiple entries. + required: false + type: list +manual: + description: Turn manual mode on or off. Manual mode will disable scheduled speedtests. + required: false + default: false + type: boolean +{% endconfiguration %} There is also a service named `sensor.update_fastdotcom` that you can use to run a fast.com speedtest on demand. You can turn on manual mode to disable the scheduled speedtests. -## Note +## {% linkable_title Notes %} - When running on Raspberry Pi, just note that the maximum speed is limited by its 100 Mbit/s LAN adapter. +- This entity will return the maximum measured speed during an 15 second test. diff --git a/source/_components/sensor.fibaro.markdown b/source/_components/sensor.fibaro.markdown new file mode 100644 index 00000000000..382173d1d6c --- /dev/null +++ b/source/_components/sensor.fibaro.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "Fibaro sensors" +description: "Instructions on how to integrate Fibaro sensors 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/) 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/sensor.fido.markdown b/source/_components/sensor.fido.markdown index 00694b0d71b..62c55385344 100644 --- a/source/_components/sensor.fido.markdown +++ b/source/_components/sensor.fido.markdown @@ -13,7 +13,6 @@ ha_release: 0.39 ha_iot_class: "Cloud Polling" --- - Integrate your [Fido](https://www.fido.ca/) account information into Home Assistant. ## {% linkable_title Configuration %} @@ -32,9 +31,8 @@ sensor: - data_used ``` -Configuration variables: {% configuration %} -username: +username: description: Your Fido username (your Fido phone number or your email). required: true type: string @@ -48,7 +46,7 @@ number: type: string monitored_variables: description: Variables to monitor. - required: true + required: true type: list keys: fido_dollar: diff --git a/source/_components/sensor.file.markdown b/source/_components/sensor.file.markdown index 3e8ea059e98..7e426c5d979 100644 --- a/source/_components/sensor.file.markdown +++ b/source/_components/sensor.file.markdown @@ -13,7 +13,6 @@ ha_iot_class: "Local Polling" ha_release: 0.45 --- - The `file` sensor platform reads the entries from a plain-text file and shows the found value. Only the last line of the file is used. This is similar to do `$ tail -n 1 sensor.txt` on the command-line. Note that file paths must be added to [whitelist_external_dirs](/docs/configuration/basic/). ## {% linkable_title Configuration %} @@ -27,12 +26,25 @@ sensor: file_path: /home/user/.homeassistant/sensor-data.txt ``` -Configuration variables: - -- **file_path** (*Required*): path to file that stores the sensor data. -- **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `File`. -- **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any. -- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. +{% configuration %} +file_path: + description: Path to file that stores the sensor data. + required: true + type: string +name: + description: Name of the sensor to use in the frontend. + required: false + default: file name + type: string +unit_of_measurement: + description: Defines the units of measurement of the sensor, if any. + required: false + type: string +value_template: + description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. + required: false + type: template +{% endconfiguration %} ## {% linkable_title Examples %} @@ -59,4 +71,3 @@ sensor: value_template: {% raw %}'{{ value_json.temperature }}'{% endraw %} unit_of_measurement: '°C' ``` - diff --git a/source/_components/sensor.fitbit.markdown b/source/_components/sensor.fitbit.markdown index a273f3d8af2..a2dbd4e2fdf 100644 --- a/source/_components/sensor.fitbit.markdown +++ b/source/_components/sensor.fitbit.markdown @@ -32,11 +32,23 @@ Please be aware that Fitbit has very low rate limits, 150 per user per hour. The The unit system that the sensor will use is based on the country you set in your Fitbit profile. -Configuration variables: - -- **monitored_resources** (*Optional*): Resource to monitor. Defaults to `activities/steps`. -- **clock_format** (*Optional*): Format to use for `sleep/startTime` resource. Accepts `12H` or `24H`. Defaults to `24H`. -- **unit_system** (*Optional*): Unit system to use for measurements. Accepts `default`, `metric`, `en_US` or `en_GB`. Defaults to `default`. +{% configuration %} +monitored_resources: + description: Resource to monitor. + required: false + default: "`activities/steps`" + type: list +clock_format: + description: Format to use for `sleep/startTime` resource. Accepts `12H` or `24H`. + required: false + default: "`24H`" + type: string +unit_system: + description: Unit system to use for measurements. Accepts `default`, `metric`, `en_US` or `en_GB`. + required: false + default: "`default`" + type: string +{% endconfiguration %} Below is the list of resources that you can add to `monitored_resources`. One sensor is exposed for every resource. diff --git a/source/_components/sensor.flunearyou.markdown b/source/_components/sensor.flunearyou.markdown new file mode 100644 index 00000000000..f7e85a46f54 --- /dev/null +++ b/source/_components/sensor.flunearyou.markdown @@ -0,0 +1,64 @@ +--- +layout: page +title: "Flu Near You" +description: "Instructions on how to use Flu Near You data within Home Assistant" +date: 2018-11-02 21:05 +sidebar: true +comments: false +sharing: true +footer: true +logo: flunearyou.png +ha_category: Health +ha_release: 0.83 +ha_iot_class: "Cloud Polling" +--- + +The `flunearyou` sensor platform allows users in the United States and its +territories to get information regarding reported flu symptoms from Flu Near +You. The platform can return user-reported information as well reports from the +Center for Disease Control (CDC). + +## {% linkable_title Configuration %} + +To enable the platform, add the following lines to your `configuration.yaml` +file: + +```yaml +sensor: + - platform: flunearyou +``` + +{% configuration %} +monitored_conditions: + description: The sensor categories to display. + required: false + type: list + default: ['cdc_report', 'user_report'] +latitude: + description: The latitude of the location to monitor. + required: optional + type: string + default: The latitude defined under the `homeassistant` key in `configuration.yaml`. +longitude: + description: The longitude of the location to monitor. + required: optional + type: string + default: The longitude defined under the `homeassistant` key in `configuration.yaml`. +{% endconfiguration %} + +## {% linkable_title Sensor Types %} + +### User Report + +* Number of reported cases of [Avian Flu](https://www.cdc.gov/flu/avianflu/index.htm) symptoms +* Number of reported cases of [Dengue](https://www.cdc.gov/dengue/index.html) symptoms +* Number of reported cases of [Flu](https://www.cdc.gov/flu/) symptoms +* Number of reported cases of [Flu-like](https://en.wikipedia.org/wiki/Influenza-like_illness) symptoms +* Number of reported cases of [Leptospirosis](https://www.cdc.gov/leptospirosis/index.html) symptoms +* Total number of reported cases with symptoms +* Number of reported cases with no symptoms + +### CDC Report + +* Current CDC level for the state +* Current CDC "Level 2" for the state diff --git a/source/_components/sensor.freebox.markdown b/source/_components/sensor.freebox.markdown new file mode 100644 index 00000000000..d3ef9f0df4b --- /dev/null +++ b/source/_components/sensor.freebox.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Freebox Sensor" +description: "Instructions on how to integrate sensors from a Freebox router into Home Assistant." +date: 2018-05-16 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: freebox.svg +ha_category: Network +ha_release: "0.85" +ha_iot_class: "Local Polling" +--- + + +This platform offers you sensors to monitor a Freebox router. The monitored conditions are +instant upload and download rates in KB/s. + +This requires you to have set up the [Freebox component](/components/freebox/) diff --git a/source/_components/sensor.fritzbox_callmonitor.markdown b/source/_components/sensor.fritzbox_callmonitor.markdown index 013a8af18ec..867ed606016 100644 --- a/source/_components/sensor.fritzbox_callmonitor.markdown +++ b/source/_components/sensor.fritzbox_callmonitor.markdown @@ -13,7 +13,6 @@ ha_release: 0.27 ha_iot_class: "Local Polling" --- - The `fritzbox_callmonitor` sensor monitors the call monitor exposed by [AVM Fritz!Box](http://avm.de/produkte/fritzbox/) routers on TCP port 1012. It will assume the values `idle`, `ringing`, `dialing` or `talking` with the phone numbers involved contained in the state attributes. It can also access the internal phone book of the router to look up the names corresponding to the phone numbers and store them in the state attributes. @@ -27,6 +26,12 @@ $ sudo apt-get install libxml2-dev libxslt-dev \ python3-setuptools zlib1g-dev build-essential ``` +If you installed Home Assistant in a virtualenv, also run the following command inside it. +Be patient this will take a while. +```bash +pip3 install lxml +``` + ## {% linkable_title Setup%} To activate the call monitor on your Fritz!Box, dial #96\*5\* from any phone connected to it. @@ -41,14 +46,40 @@ sensor: - platform: fritzbox_callmonitor ``` -Configuration variables: - -- **host** (*Optional*): The IP address of your router, eg. 192.168.1.1. It is optional since every fritzbox is also reachable by using the IP address 169.254.1.1. -- **port** (*Optional*): The TCP port of the call monitor. There is usually no reason to change this. -- **username** (*Optional*): Fritz!Box user's user name. This is required to use the phone book lookup feature. The user needs to have the "voice message, fax message, Fritz!App Fon and call list" permission. -- **password** (*Optional*): Fritz!Box user's user password. This is required to use the phone book lookup feature. -- **phonebook** (*Optional*): Numerical ID identifying the phonebook to be used. If there is just one phonebook, this is usually 0. -- **prefixes** (*Optional*): In case of a local call, the phone number seen by the router might differ from the one stored in the phone book by an area code, similarly for the international prefix. To remedy this, a list of prefixes, that can be appended to the phone number in case it is not found in the phone book, can be given. +{% configuration %} +name: + description: Give the sensor a friendly name for in the front-end. + required: false + default: Phone + type: string +host: + description: The IP address of your router, e.g., 192.168.1.1. It is optional since every fritzbox is also reachable by using the IP address 169.254.1.1. + required: false + default: 169.254.1.1 + type: string +port: + description: The TCP port of the call monitor. There is usually no reason to change this. + required: false + default: 1012 + type: integer +username: + description: Fritz!Box user's user name. This is required to use the phone book lookup feature. The user needs to have the "voice message, fax message, Fritz!App Fon and call list" permission. + required: false + type: string +password: + description: Fritz!Box user's user password. This is required to use the phone book lookup feature. + required: false + type: string +phonebook: + description: Numerical ID identifying the phonebook to be used. If there is just one phonebook, this is usually 0. + required: false + default: 0 + type: integer +prefixes: + description: In case of a local call, the phone number seen by the router might differ from the one stored in the phone book by an area code, similarly for the international prefix. To remedy this, a list of prefixes, that can be appended to the phone number in case it is not found in the phone book, can be given. + required: false + type: list +{% endconfiguration %} ## {% linkable_title Examples %} diff --git a/source/_components/sensor.fritzbox_netmonitor.markdown b/source/_components/sensor.fritzbox_netmonitor.markdown index 240ffcf6641..d00beddd060 100644 --- a/source/_components/sensor.fritzbox_netmonitor.markdown +++ b/source/_components/sensor.fritzbox_netmonitor.markdown @@ -28,9 +28,18 @@ sensor: - platform: fritzbox_netmonitor ``` -Configuration variables: - -- **host** (*Optional*): The IP address of your router, eg. 192.168.1.1. It is optional since every fritzbox is also reachable by using the IP address 169.254.1.1. +{% configuration %} +host: + description: The IP address of your router, e.g., 192.168.1.1. It is optional since every fritzbox is also reachable by using the IP address 169.254.1.1. + required: false + default: 169.254.1.1 + type: string +name: + description: Give the sensor a friendly name for in the front-end. + required: false + default: fritz_netmonitor + type: string +{% endconfiguration %} The following statistics will be exposed as attributes. @@ -49,3 +58,7 @@ The following statistics will be exposed as attributes. |max_byte_rate_down |Maximum downstream-rate in bytes/s | The sensor's state corresponds to the `is_linked` attribute and is either `online`, `offline`, or `unavailable` (in case connection to the router is lost). + +

+This component does not support "Fritz!Box 6490 Cable" with FritzOS 6.87 installed. +

diff --git a/source/_components/sensor.geizhals.markdown b/source/_components/sensor.geizhals.markdown index 575c974b4de..c7a568530bf 100644 --- a/source/_components/sensor.geizhals.markdown +++ b/source/_components/sensor.geizhals.markdown @@ -21,17 +21,30 @@ To enable this sensor, add the following lines to your `configuration.yaml` file # Example configuration.yaml entry sensor: - platform: geizhals - name: qc35 - product_id: 1696985 + name: PRODUCT_NAME + product_id: PRODUCT_ID ``` -Configuration variables: - -- **name** (*Required*): The internal name of the product in Home Assistant. -- **product_id** (*Required*): ID of the product. Get the ID from the Geizhals website of your chosen product by opening the *Price History* in a new browser tab (right-click on the price history > open in new tab). -The URL of this site reveals the ID, e.g., `https://geizhals.de/?phist=1696985` with a `product_id` of `1696985`. -- **description** (*Optional*): The name of the product in the front end. -- **locale** (*Optional*): Localisation which should be used for the request. Set this to `AT`, `EU`, `DE`, `UK` or `PL`. Defaults to `DE`. +{% configuration %} +name: + description: The internal name of the product in Home Assistant. + required: true + type: string +product_id: + description: "ID of the product. Get the ID from the Geizhals website of your chosen product by opening the *Price History* in a new browser tab (right-click on the price history > open in new tab). The URL of this site reveals the ID, e.g., `https://geizhals.de/?phist=1696985` with a `product_id` of `1696985`." + required: true + type: integer +description: + description: The name of the product in the front end. + required: false + default: price + type: string +locale: + description: Localisation which should be used for the request. Set this to `AT`, `EU`, `DE`, `UK` or `PL`. + required: false + default: DE + type: string +{% endconfiguration %} #### {% linkable_title Extended example %} diff --git a/source/_components/sensor.gitlab_ci.markdown b/source/_components/sensor.gitlab_ci.markdown index 33d08fa1bb6..82f3c16887d 100644 --- a/source/_components/sensor.gitlab_ci.markdown +++ b/source/_components/sensor.gitlab_ci.markdown @@ -13,12 +13,13 @@ ha_release: 0.80 ha_iot_class: "Cloud Polling" --- -The GitLab_CI sensor integrates results reported by CI/CD Pipeline Jobs in [GitLab](https://gitlab.com/). +The `gitlab_ci` sensor platform integrates results reported by CI/CD Pipeline Jobs in [GitLab](https://gitlab.com/). ## {% linkable_title Setup %} -You will need a GitLab repository ID. On the "Details" page for your GitLab repo, just below the project name is "Project ID:" -Alternatively, you can use "{GitLab_Username}/{GitLab_RepositoryName}", ex: "MyCoolUsername/MyCoolRepository" +You will need a GitLab repository ID. On the **Details** page for your GitLab repo, just below the project name is **Project ID:**. + +Alternatively, you can use `GitLab_Username/GitLab_RepositoryName`, e.g., `MyCoolUsername/MyCoolRepository`. A GitLab token with at least the API permission scope is needed, which can be created on the [GitLab Personal Access Tokens](https://gitlab.com/profile/personal_access_tokens) page of your GitLab User Settings. @@ -30,25 +31,27 @@ To enable this platform, please add the following to your `configuration.yaml` f # Example configuration.yaml entry sensor: - platform: gitlab_ci - gitlab_id: '1234567' - token: 'aaaaaaaaaaAAAAAAAAAA' + gitlab_id: YOUR_GITLAB_ID + token: YOUR_GITLAB_TOKEN ``` {% configuration %} gitlab_id: - description: GitLab repository ID or "username/repository" + description: The GitLab repository identifier. required: true type: string token: - description: GitLab API Token + description: The GitLab API token. required: true type: string name: - description: Sensor name as it appears in Home Assistant. Defaults to 'GitLab CI Status'. + description: Sensor name as it appears in Home Assistant. required: false type: string + default: GitLab CI Status url: - description: GitLab repository URL. Defaults to 'https://gitlab.com'. Used for self-hosted repositories. + description: The GitLab repository URL. Used for self-hosted repositories. required: false type: string + default: https://gitlab.com {% endconfiguration %} diff --git a/source/_components/sensor.glances.markdown b/source/_components/sensor.glances.markdown index e9321628a61..32759b1912a 100644 --- a/source/_components/sensor.glances.markdown +++ b/source/_components/sensor.glances.markdown @@ -66,6 +66,24 @@ name: required: false type: string default: Glances +username: + description: Your username for the HTTP connection to Glances. + required: false + type: string +password: + description: Your password for the HTTP connection to Glances. + required: false + type: string +ssl: + description: "If `true`, use SSL/TLS to connect to the Glances system." + required: false + type: boolean + default: false +verify_ssl: + description: Verify the certification of the system. + required: false + type: boolean + default: true version: description: "The version of the Glances API. Supported version: `2` and `3`." required: false diff --git a/source/_components/sensor.google_travel_time.markdown b/source/_components/sensor.google_travel_time.markdown index b9d1c5b5596..0ccd46ee2fa 100644 --- a/source/_components/sensor.google_travel_time.markdown +++ b/source/_components/sensor.google_travel_time.markdown @@ -83,7 +83,7 @@ options: description: "Indicate what google should avoid when calculating the travel time, you can choose from: `tolls`, `highways`, `ferries`, `indoor`." required: false type: string - transit_model: + transit_mode: description: "If you opted for `transit` at `travel_mode`, you can use this variable to specify which public transport you want to use: `bus`, `subway`, `train`, `tram` or `rail`." transit_routing_preference: description: "for the travel time calculation for public transport you can also specify the preference for: `less_walking` or `fewer_transfers`." diff --git a/source/_components/sensor.greeneye_monitor.markdown b/source/_components/sensor.greeneye_monitor.markdown new file mode 100644 index 00000000000..ed0de5f7268 --- /dev/null +++ b/source/_components/sensor.greeneye_monitor.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "GreenEye Monitor Sensors" +description: "Instructions on how to integrate the various sensors on your Greeneye Monitor into Home Assistant." +date: 2018-09-02 14:13 +sidebar: true +comments: false +sharing: true +footer: true +logo: brultech.png +ha_category: Sensor +ha_iot_class: "Local Push" +ha_release: 0.82 +--- + +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. + +Add sensors via the configuration for the hub [GreenEye Monitor component](/components/greeneye_monitor/). diff --git a/source/_components/sensor.gtfs.markdown b/source/_components/sensor.gtfs.markdown index 547ff77afb9..08a8d4258ea 100644 --- a/source/_components/sensor.gtfs.markdown +++ b/source/_components/sensor.gtfs.markdown @@ -13,10 +13,9 @@ ha_iot_class: "Local Polling" ha_release: 0.17 --- - The `gtfs` sensor will give you the next departure time and associated data from your public transit station/stop. The data comes from your chosen public transit authority and is formatted as [General Transit Feed Specification](https://developers.google.com/transit/gtfs/) data, commonly known as GTFS. -You need to find a valid GTFS data set, which you can usually find just by searching the internet. Most public transit authorities have GTFS available somewhere, as Google requires public transit authorities to provide the data if they wish to appear on Google Maps. You may also be able to find data at either [TransitFeeds](http://transitfeeds.com/feeds) or [GTFS Data Exchange](http://www.gtfs-data-exchange.com/). +You need to find a valid GTFS data set, which you can usually find just by searching the internet. Most public transit authorities have GTFS available somewhere, as Google requires public transit authorities to provide the data if they wish to appear on Google Maps. You may also be able to find data at [TransitFeeds](http://transitfeeds.com/feeds). Here are some examples: @@ -49,11 +48,27 @@ sensor: data: DATA_SOURCE ``` -Configuration variables: - -- **origin** (*Required*): The stop ID of your origin station. -- **destination** (*Required*): The stop ID of your destination station. -- **data** (*Required*): The name of the ZIP file or folder containing the GTFS data. It must be located inside the `gtfs` folder of your configuration directory. -- **name** (*Optional*): Name to use in the frontend. -- **offset** (*Optional*): A minimum delay to look for. If a departure is in less time than `offset`, it will be ignored. Defaults to `0`. - +{% configuration %} +origin: + description: The stop ID of your origin station. + required: true + type: string +destination: + description: The stop ID of your destination station. + required: true + type: string +data: + description: The name of the ZIP file or folder containing the GTFS data. It must be located inside the `gtfs` folder of your configuration directory. + required: true + type: string +name: + description: Name to use in the frontend. + required: false + default: GTFS Sensor + type: string +offset: + description: A minimum delay to look for. If a departure is in less time than `offset`, it will be ignored. + required: false + default: 0 + type: [integer, time] +{% endconfiguration %} diff --git a/source/_components/sensor.gtt.markdown b/source/_components/sensor.gtt.markdown new file mode 100644 index 00000000000..1a439775a3e --- /dev/null +++ b/source/_components/sensor.gtt.markdown @@ -0,0 +1,39 @@ +--- +layout: page +title: "GTT" +description: "Instructions on how to integrate timetable data for a GTT stop within Home Assistant." +date: 2018-11-13 12:09 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Transport +logo: gtt.png +ha_iot_class: "Cloud Polling" +ha_release: 0.85 +--- + + +The `gtt` sensor will give you the departure time of the next bus at the given stop. + +To enable this sensor, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: gtt + stop: '1080' + bus_name: '58B' +``` +{% configuration %} +stop: + description: The name of the stop. + required: true + type: string +bus_name: + description: The name of the choosen bus. + required: false + type: string +{% endconfiguration %} + +The data is coming from the [gtt.to.it](http://www.gtt.to.it/cms/) website. diff --git a/source/_components/sensor.history_stats.markdown b/source/_components/sensor.history_stats.markdown index 8a9c76b7ebb..c2c99448962 100644 --- a/source/_components/sensor.history_stats.markdown +++ b/source/_components/sensor.history_stats.markdown @@ -28,6 +28,7 @@ Examples of what you can track: To enable the history statistics sensor, add the following lines to your `configuration.yaml`: +{% raw %} ```yaml # Example configuration.yaml entry sensor: @@ -36,20 +37,43 @@ sensor: entity_id: light.my_lamp state: 'on' type: time - 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 %} -Configuration variables: - - - **entity_id** (*Required*): The entity you want to track - - **state** (*Required*): The state you want to track - - **name** (*Optional*): Name displayed on the frontend - - **type** (*Optional*): The type of sensor: `time`, `ratio`, or `count`. Defaults to `time` - - **start**: When to start the measure (timestamp or datetime). - - **end**: When to stop the measure (timestamp or datetime) - - **duration**: Duration of the measure - +{% configuration %} +entity_id: + description: The entity you want to track. + required: true + type: string +state: + description: The state you want to track. + required: true + type: string +name: + description: Name displayed on the frontend. + required: false + default: unnamed statistics + type: string +type: + description: "The type of sensor: `time`, `ratio`, or `count`." + required: false + default: time + type: string +start: + description: When to start the measure (timestamp or datetime). + required: false + type: template +end: + description: When to stop the measure (timestamp or datetime). + required: false + type: template +duration: + description: Duration of the measure. + required: false + type: time +{% endconfiguration %}

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: port: 23 type: tcp - raw: False + raw: false ``` -Configuration variables: +Take a good look at which configuration variables are for `TCP` use or for `serial` use. -*Required if used with a serial-ethernet converter* - -- **host**: The IP-address of the serial server -- **port**: The TCP-port of the serial server -- **type**: tcp - -*Required if used directly with a serial port* - -- **device**: The serial device of the machine -- **type**: serial - -*Optional for both cases* - -- **name**: The name of the device used in the frontend -- **raw**: Should the raw serial output be shown as a sensor +{% configuration %} +raw: + description: Should the raw serial output be shown as a sensor. + required: false + default: false + type: boolean +name: + description: The name of the device used in the frontend. + required: false + default: KWB + type: string +device: + description: (For serial use) The serial device of the machine. + required: true + type: string +host: + description: (For tcp use) The IP-address of the serial server. + required: true + type: string +port: + description: (For tcp use) The TCP-port of the serial server. + required: true + type: integer +type: + description: "Type of sensor, you can choose between: `serial` and `tcp`." + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/sensor.launch_library.markdown b/source/_components/sensor.launch_library.markdown new file mode 100644 index 00000000000..c1b76447048 --- /dev/null +++ b/source/_components/sensor.launch_library.markdown @@ -0,0 +1,37 @@ +--- +layout: page +title: "Space Launch sensor" +description: "Instructions on how to integrate space launch information within Home Assistant." +date: 2018-11-06 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: rocket.png +ha_category: Sensor +ha_iot_class: "Cloud Polling" +ha_release: "0.83" +--- + +The `launch_library` sensor will provide you with information about the next planned space launch. + +## {% linkable_title Configuration %} + +Add the data to your `configuration.yaml` file as shown in the example: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: launch_library +``` + +{% configuration %} +name: + description: Name of the sensor. + required: false + type: string +{% endconfiguration %} + +The data this platform presents comes from [launchlibrary.net][launchlibrary]. + +[launchlibrary]: http://launchlibrary.net/ diff --git a/source/_components/sensor.london_air.markdown b/source/_components/sensor.london_air.markdown index b6713b73dc0..a96965fa25e 100644 --- a/source/_components/sensor.london_air.markdown +++ b/source/_components/sensor.london_air.markdown @@ -55,9 +55,13 @@ sensor: - Westminster ``` -Configuration variables: - -- **locations** array (*Required*): At least one entry required. +{% configuration %} +locations: + description: Areas/boroughs in London to monitor. + required: false + default: All location with data available. + type: list +{% endconfiguration %} To explore the data available within the `data` attribute of a sensor use the `dev-template` tool on the Home-assistant frontend. `data` contains a list of monitored sites, where the number of monitored sites are given by the `sites` attribute. If a sensor has four sites, access the fourth site by indexing the list of sites using data[3]. Each site is a dictionary with multiple fields, with entries for the `latitude` and `longitude` of that site, a `pollution_status`, `site_code`, `site_name` and `site_type`. The field `number_of_pollutants` states how many pollutants are monitored (of the possible six) and the field `pollutants` returns a list with data for each pollutant. To access the first pollutant in the list for site zero use `attributes.data[0].pollutants[0]`. Each entry in `pollutants` is a dictionary with fields for the pollutant `code`, `description`, `index`, `quality` and a `summary`. [Template sensors](/components/sensor.template/) can then be added to display these attributes, for example: diff --git a/source/_components/sensor.luftdaten.markdown b/source/_components/sensor.luftdaten.markdown index b368a6d8e9b..86e59b5e006 100644 --- a/source/_components/sensor.luftdaten.markdown +++ b/source/_components/sensor.luftdaten.markdown @@ -11,72 +11,9 @@ logo: luftdaten.png ha_category: Health ha_release: 0.57 ha_iot_class: "Cloud Polling" +ha_qa_scale: gold --- The `luftdaten` sensor platform 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 %} - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: luftdaten - sensorid: 3123 - monitored_conditions: - - P1 - - P2 - - platform: luftdaten - sensorid: 155 - monitored_conditions: - - temperature - - humidity -``` - -{% configuration %} - sensorid: - description: The ID of the sensor. - required: true - type: string - name: - description: Name of the sensor to use in the frontend. - required: false - default: Luftdaten Sensor - type: string - 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. - show_on_map: - description: Option to show the position of the sensor on the map. - required: optional - default: false - type: boolean -{% 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]/ -``` +You must have the [`luftdaten` component](/components/luftdaten/) configured to use this platform. After configuring that component, sensors will automatically appear. diff --git a/source/_components/sensor.melissa.markdown b/source/_components/sensor.melissa.markdown deleted file mode 100644 index 0b4360560d5..00000000000 --- a/source/_components/sensor.melissa.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Melissa Sensor" -description: "Instructions on how to integrate Melissa sensors into Home Assistant." -date: 2017-08-30 12:21 -sidebar: true -comments: false -sharing: true -footer: true -logo: mclimate.png -ha_category: Environment -ha_iot_class: "Cloud Polling" -ha_release: 0.63 ---- - -The `melissa` platform allows you to get data from your [Melissa](http://seemelissa.com/) sensors from within Home Assistant. - -The sensor platform will be automatically configured if Melissa component is configured. - -For more configuration information see the [Melissa component](/components/melissa/) documentation. diff --git a/source/_components/sensor.meteo_france.markdown b/source/_components/sensor.meteo_france.markdown new file mode 100644 index 00000000000..23a139e2dca --- /dev/null +++ b/source/_components/sensor.meteo_france.markdown @@ -0,0 +1,85 @@ +--- +layout: page +title: "Météo-France Sensor" +description: "Show 1hr rain forecast from Météo-France." +date: 2018-10-18 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: meteo-france.png +ha_category: Sensor +ha_release: 0.82 +ha_iot_class: "Cloud Polling" +--- + +The `meteo_france` platform uses the [Météo-France](http://www.meteofrance.com/) web service as a source for meteorological data for your location. The location is based on the `postal_code` configured in your `configuration.yaml` file. + +## {% linkable_title Configuration %} + +To add Météo-France to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: meteo_france + postal_code: '76000' + monitored_conditions: + - temperature + - weather + - wind_speed + - uv + - next_rain + - freeze_chance + - rain_chance + - snow_chance + - thunder_chance +``` + +{% configuration %} + postal_code: + description: Postal code of the city. + required: true + type: string + monitored_conditions: + description: The conditions types to monitor. + required: true + type: list + keys: + temperature: + description: The current temperature. + weather: + description: A human-readable text summary of the current conditions. + wind_speed: + description: The wind speed. + uv: + description: The current UV index. + next_rain: + description: Time to the next rain if happening for the next hour. (see note below) + freeze_chance: + description: Probability of temperature below 0°C for the day. + rain_chance: + description: Probability of rain for the day. + snow_chance: + description: Probability of snow for the day. + thunder_chance: + description: Probability of thunderstorm for the day. +{% endconfiguration %} + + +### {% linkable_title About `next_rain` condition sensor %} + +

+ The 1 hour rain forecast is supported for more than 75% of metropolitan France.
+ You can check if your city is covered on the [Météo-France website](http://www.meteofrance.com/previsions-meteo-france/previsions-pluie) +

+ +The `next_rain` sensor value is the time to next rain, from 0 to 55min. +If no rain is forecasted for the next hour, value will be "No rain". + +Attributes also give the forecast for the next hour in 5min intervals. +Possible value for each intervals attributes are : +- 1 No rain +- 2 Light rain +- 3 Moderate rain +- 4 Heavy rain diff --git a/source/_components/sensor.miflora.markdown b/source/_components/sensor.miflora.markdown index 9bf2c573072..f406300f80f 100644 --- a/source/_components/sensor.miflora.markdown +++ b/source/_components/sensor.miflora.markdown @@ -15,17 +15,21 @@ ha_iot_class: "Local Polling" The `miflora` sensor platform allows one to monitor plant soil and air conditions. The [Mi Flora plant sensor](https://www.huahuacaocao.com/product) is a small Bluetooth Low Energy device that monitors the moisture and conductivity of the soil as well as ambient light and temperature. Since only one BLE device can be polled at a time, the library implements locking to prevent polling more than one device at a time. -# Install Bluetooth Backend +There are "Chinese" and "International" versions available and there is a [report](https://community.home-assistant.io/t/miflora-showing-data-unknown/19550/8) that only the "International" works. + +## {% linkable_title Install a Bluetooth Backend %} + Before configuring Home Assistant you need a Bluetooth backend and the MAC address of your sensor. Depending on your operating system, you may have to configure the proper Bluetooth backend for your system: - On [Hass.io](/hassio/installation/): Miflora will work out of the box. - On a [generic Docker installation](/docs/installation/docker/): Works out of the box with `--net=host` and properly configured Bluetooth on the host. - On other Linux systems: - - Preferred solution: Install the `bluepy` library (via pip). When using a virtual environment, make sure to use install the library in the right one. -    - Fallback solution: Install `gatttool` via your package manager. Depending on the distribution, the package name might be: `bluez`, `bluetooth`, `bluez-deprecated` + - Preferred solution: Install the `bluepy` library (via pip). When using a virtual environment, make sure to use install the library in the right one. +  - Fallback solution: Install `gatttool` via your package manager. Depending on the distribution, the package name might be: `bluez`, `bluetooth`, `bluez-deprecated` - On Windows and MacOS there is currently no support for the [miflora library](https://github.com/open-homeautomation/miflora/). -# Scan for MAC address +## {% linkable_title Scan for devices %} + Start a scan to determine the MAC addresses of the sensor (you can identify your sensor by looking for `Flower care` or `Flower mate` entries) using this command: ```bash @@ -48,7 +52,8 @@ $ bluetoothctl If you can't use `hcitool` or `bluetoothctl` but have access to an Android phone you can try `BLE Scanner` or similar scanner applications from the Play Store to easily find your sensor MAC address. If you are using Windows 10, try the `Microsoft Bluetooth LE Explorer` app from the Windows Store. -# Configure +## {% linkable_title Configuration %} + To use your Mi Flora plant sensor in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -104,6 +109,8 @@ adapter: By default the sensor is only polled once every 20 minutes (`scan_interval` is 1200 seconds by default). On a Home Assistant restart sensor will report initial value. If you set `median: 3`, it will take _at least_ 40 minutes before the sensor will report an average value. Keep in mind though that reducing polling intervals will have a negative effect on the battery life.

+## {% linkable_title Full example %} + A full configuration example could look like the one below: ```yaml diff --git a/source/_components/sensor.mitemp_bt.markdown b/source/_components/sensor.mitemp_bt.markdown index d7bdbccaffe..5cf0f59fb12 100644 --- a/source/_components/sensor.mitemp_bt.markdown +++ b/source/_components/sensor.mitemp_bt.markdown @@ -20,7 +20,7 @@ The `mitemp_bt` sensor platform allows one to monitor room temperature and humid Depending on the operating system you're running, you have to configure the proper Bluetooth backend on your system: - On [Hass.io](/hassio/installation/): `mitemp_bt` will work out of the box as long as the host supports Bluetooth (like the Raspberry Pi does). -- On a [generic Docker installation](https://www.home-assistant.io/docs/installation/docker/): Works out of the box with `--net=host` and properly configured Bluetooth on the host. +- On a [generic Docker installation](/docs/installation/docker/): Works out of the box with `--net=host` and properly configured Bluetooth on the host. - On other Linux systems: - Preferred solution: Install the `bluepy` and `btlewrap` library (via pip). When using a virtual environment, make sure to use install the library in the right one. - Fallback solution: Install `btlewrap` library (via pip) and `gatttool` via your package manager. Depending on the distribution, the package name might be: `bluez`, `bluetooth` or `bluez-deprecated`. diff --git a/source/_components/sensor.modbus.markdown b/source/_components/sensor.modbus.markdown index 3345162f9db..bc6b78b8e30 100644 --- a/source/_components/sensor.modbus.markdown +++ b/source/_components/sensor.modbus.markdown @@ -78,7 +78,7 @@ registers: reverse_order: description: Reverse the order of registers when count >1. required: false - default: False + default: false type: boolean scale: description: Scale factor (output = scale * value + offset). diff --git a/source/_components/sensor.mopar.markdown b/source/_components/sensor.mopar.markdown index ab620c56d9e..fc3396ab434 100644 --- a/source/_components/sensor.mopar.markdown +++ b/source/_components/sensor.mopar.markdown @@ -56,7 +56,7 @@ pin: Call the `sensor.mopar_remote_command` service to perform a remote command on your vehicle. - **vehicle_index** (*Required*): `vehicle_index` attribute found on sensor. -- **command** (*Required*): One of `lock/unlock/engineon/engineoff/horn`. +- **command** (*Required*): One of `LOCK/UNLOCK/START/STOP/HORN_LIGHT`. Example data: diff --git a/source/_components/sensor.mqtt.markdown b/source/_components/sensor.mqtt.markdown index f29e5299776..6275510999d 100644 --- a/source/_components/sensor.mqtt.markdown +++ b/source/_components/sensor.mqtt.markdown @@ -63,7 +63,7 @@ force_update: description: Sends update events even if the value hasn't changed. Useful if you want to have meaningful value graphs in history. reqired: false type: boolean - default: False + default: false availability_topic: description: The MQTT topic subscribed to receive availability (online/offline) updates. required: false @@ -78,9 +78,13 @@ 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. + required: false + type: string json_attributes: - description: A list of keys to extract values from a JSON dictionary payload and then set as sensor attributes. - reqired: false + description: (Deprecated, replaced by json_attributes_topic) A list of keys to extract values from a JSON dictionary payload and then set as sensor attributes. + required: false type: list, string unique_id: description: "An ID that uniquely identifies this sensor. If two sensors have the same unique ID, Home Assistant will raise an exception." @@ -92,12 +96,12 @@ device_class: type: device_class default: None device: - description: 'Information about the device this 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 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: @@ -105,19 +109,19 @@ device: required: false type: list 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 %} @@ -126,9 +130,9 @@ device: In this section you find some real-life examples of how to use this sensor. -### {% linkable_title JSON attributes configuration %} +### {% linkable_title JSON attributes topic configuration %} -The example sensor below shows a configuration example which uses JSON in the state topic to add extra attributes. It also makes use of the `availability` topic. Attributes can then be extracted in [Templates](/docs/configuration/templating/#attributes). For example, to extract the `ClientName` attribute from the sensor below, use a template similar to: {% raw %}`{{ state_attr('sensor.bs_rssi', 'ClientName') }}`{% endraw %}. +The example sensor below shows a configuration example which uses a JSON dict: `{"ClientName": , "IP": , "MAC": , "RSSI": , "HostName": , "ConnectedSSID": }` in a separate topic to add extra attributes. It also makes use of the `availability` topic. Attributes can then be extracted in [Templates](/docs/configuration/templating/#attributes). For example, to extract the `ClientName` attribute from the sensor below, use a template similar to: {% raw %}`{{ state_attr('sensor.bs_rssi', 'ClientName') }}`{% endraw %}. {% raw %} ```yaml diff --git a/source/_components/sensor.mqtt_room.markdown b/source/_components/sensor.mqtt_room.markdown index 96aaa9dc7da..caaba3e668b 100644 --- a/source/_components/sensor.mqtt_room.markdown +++ b/source/_components/sensor.mqtt_room.markdown @@ -13,7 +13,6 @@ ha_release: 0.27 ha_iot_class: depends --- - The `mqtt_room` sensor platform allows you to detect the indoor location of devices using MQTT clients. ## {% linkable_title Configuration %} @@ -23,21 +22,38 @@ To use this device tracker in your installation, add the following to your `conf ```yaml # Example configuration.yaml entry sensor: - platform: mqtt_room - device_id: 123testid - name: 'Cool device' - state_topic: 'room_presence' - timeout: 5 - away_timeout: 60 + - platform: mqtt_room + device_id: 123testid ``` -Configuration variables: +{% configuration %} +device_id: + description: The device id to track for this sensor. + required: true + type: string +name: + description: The name of the sensor. + required: false + default: Room Sensor + type: string +state_topic: + description: The topic that contains all subtopics for the rooms. + required: false + default: room_presence + type: string +timeout: + description: "The time in seconds after which a room presence state is considered old. An example: device1 is reported at scanner1 with a distance of 1. No further updates are sent from scanner1. After 5 seconds scanner2 reports device1 with a distance of 2. The old location info is discarded in favor of the new scanner2 information as the timeout has passed." + required: false + default: 5 + type: integer +away_timeout: + description: The time in seconds after which the state should be set to `not_home` if there were no updates. `0` disables the check. + required: false + default: 0 + type: integer +{% endconfiguration %} -- **device_id** (*Required*): The device id to track for this sensor. -- **name** (*Optional*): The name of the sensor. -- **state_topic** (*Optional*): The topic that contains all subtopics for the rooms. -- **timeout** (*Optional*): The time in seconds after which a room presence state is considered old. An example: device1 is reported at scanner1 with a distance of 1. No further updates are sent from scanner1. After 5 seconds scanner2 reports device1 with a distance of 2. The old location info is discarded in favor of the new scanner2 information as the timeout has passed. -- **away_timeout** (*Optional*): The time in seconds after which the state should be set to `not_home` if there were no updates. `0` disables the check and is the default. +## {% linkable_title Usage %} Example JSON that should be published to the room topics: @@ -51,8 +67,7 @@ Example JSON that should be published to the room topics: ### {% linkable_title Setting up clients %} -This component works with any software that is sending data in the given format. -Each client should post the discovered devices in its own subtopic of the configured topic. +This component works with any software that is sending data in the given format. Each client should post the discovered devices in its own subtopic of the configured topic. Instead of developing your own application, you can also use any of these already existing clients: - [**room-assistant**](https://github.com/mKeRix/room-assistant): looks for Bluetooth LE beacons, based on Node.js diff --git a/source/_components/sensor.mvglive.markdown b/source/_components/sensor.mvglive.markdown index 75306f563ff..c190359f53c 100644 --- a/source/_components/sensor.mvglive.markdown +++ b/source/_components/sensor.mvglive.markdown @@ -27,16 +27,43 @@ sensor: - station: STATION_OR_STOP_NAME ``` -Configuration variables: - - - **station** (*Required*): Name of the stop or station. Visit [the MVG live web site](http://www.mvg-live.de) to find valid names. - - **destinations** (*Optional*): One or multiple final stop names, e.g., 'Feldmoching' or ['Feldmoching','Harthof']. This can be used to only consider a particular direction of travel - - **directions** (*Optional*): Filter by direction of the departure. For Tram, Bus, SEV, and S-Bahn, direction = direction. For U-Bahn trains, directions are more general. For U1, U2, U3 and U6, direction='1' indicates south-bound trains, direction='2' indicates northbound trains. For U4 and U5, direction='1' indicates east-bound trains, direction='2' indicates west-bound trains. For example, setting directions: '1' can be used to get all south-bound trains at Scheidplatz. - - **lines** (*Optional*): One or more line numbers, e.g., 'U2' or ['U2','U8','N41'] - - **products** (*Optional*): One or more modes of transport, defaults to all 4 modes ['U-Bahn', 'Tram', 'Bus', 'S-Bahn']. - - **timeoffset** (*Optional*): Do not display departures leaving sooner than this number of minutes (defaults to 0). Useful if you are a couple of minutes away from the stop. - - **number** (*Optional*): Store a list of departures in the attribute "departures", defaults to 1. If you set this parameter to 3, the next three departures will be stored. - - **name** (*Optional*): You can customize the name of the sensor, which defaults to the station name. +{% configuration %} +station: + description: Name of the stop or station. Visit [the MVG live web site](http://www.mvg-live.de) to find valid names. + required: true + type: string +destinations: + description: One or multiple final stop names, e.g., 'Feldmoching' or ['Feldmoching','Harthof']. This can be used to only consider a particular direction of travel. + required: false + type: list +directions: + description: "Filter by direction of the departure. For Tram, Bus, SEV, and S-Bahn, direction = direction. For U-Bahn trains, directions are more general. For U1, U2, U3 and U6, direction='1' indicates south-bound trains, direction='2' indicates northbound trains. For U4 and U5, direction='1' indicates east-bound trains, direction='2' indicates west-bound trains. For example, setting directions: '1' can be used to get all south-bound trains at Scheidplatz." + required: false + type: list +lines: + description: One or more line numbers, e.g., 'U2' or ['U2','U8','N41']. + required: false + type: list +products: + description: One or more modes of transport. + required: false + default: all 4 modes ['U-Bahn', 'Tram', 'Bus', 'S-Bahn'] + type: list +timeoffset: + description: Do not display departures leaving sooner than this number of minutes. Useful if you are a couple of minutes away from the stop. + required: false + default: 0 + type: integer +number: + description: Store a list of departures in the attribute "departures". If you set this parameter to 3, the next three departures will be stored. + required: false + default: 1 + type: integer +name: + description: You can customize the name of the sensor, which defaults to the station name. + required: false + type: string +{% endconfiguration %} ## {% linkable_title Examples %} diff --git a/source/_components/sensor.nederlandse_spoorwegen.markdown b/source/_components/sensor.nederlandse_spoorwegen.markdown index fca03b35dde..ec40c7690d6 100644 --- a/source/_components/sensor.nederlandse_spoorwegen.markdown +++ b/source/_components/sensor.nederlandse_spoorwegen.markdown @@ -53,7 +53,7 @@ routes: description: Name of the route. required: true type: string - frome: + from: description: The start station. required: true type: string diff --git a/source/_components/sensor.netatmo.markdown b/source/_components/sensor.netatmo.markdown index cf38ea961d9..cb13ea766cc 100644 --- a/source/_components/sensor.netatmo.markdown +++ b/source/_components/sensor.netatmo.markdown @@ -14,7 +14,8 @@ ha_iot_class: "Cloud Polling" ### {% linkable_title Basic Configuration %} -The `netatmo` sensor platform is consuming the information provided by a [Netatmo](https://www.netatmo.com) device. +The `netatmo` sensor platform is consuming the information provided by a [Netatmo Weather Station](https://www.netatmo.com/en-us/weather/weatherstation) or a +[Netatmo Home Coach](https://www.netatmo.com/en-us/aircare/homecoach) [Netatmo](https://www.netatmo.com) devices. To enable the Netatmo sensor, you have to set up [netatmo](/components/netatmo/), this will use discovery to add your sensor. @@ -88,6 +89,8 @@ modules: description: Wifi status per Base station battery_vp: description: Current battery status per module. + battery_percent: + description: Percentage of battery remaining per module. {% endconfiguration %} ### {% linkable_title Find your modules name %} diff --git a/source/_components/sensor.nmbs.markdown b/source/_components/sensor.nmbs.markdown new file mode 100644 index 00000000000..664588f99c8 --- /dev/null +++ b/source/_components/sensor.nmbs.markdown @@ -0,0 +1,51 @@ +--- +layout: page +title: "NMBS Sensor" +description: "Instructions on how to integrate timetable data for traveling on the NMBS Belgian Railway within Home Assistant." +date: 2018-11-24 13:47 +sidebar: true +comments: false +sharing: true +footer: true +logo: sncb_nmbs.gif +ha_category: Transport +ha_iot_class: "Cloud Polling" +ha_release: 0.85 +--- + +The `nmbs` platform will create sensors for monitoring travel time and information between 2 stations. + +## {% linkable_title Configuration %} + +To enable this sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: nmbs + station_from: "STATION_1" + station_to: "STATION_2" + station_live: "STATION_1" +``` + +The stations can only be provided by their standard names and not ids. The list of stations can be checked on the NMBS/SCNB website but for most accurate results check them on the [iRail API page](https://api.irail.be/stations/) which this component uses internally. + +{% configuration %} +station_from: + description: The station where the connection departs. + required: true + type: string +station_to: + description: The station where the connection arrives. + required: true + type: string +station_live: + description: Setting this will create another sensor to monitor the liveboard in a station. + required: false + type: string +name: + description: Name to use in the frontend. + required: false + type: string + default: "`NMBS`, `NMBS Live` for the liveboard sensor when set." +{% endconfiguration %} diff --git a/source/_components/sensor.onewire.markdown b/source/_components/sensor.onewire.markdown index 8cd5751d780..73633a4900c 100644 --- a/source/_components/sensor.onewire.markdown +++ b/source/_components/sensor.onewire.markdown @@ -29,7 +29,8 @@ The 1-Wire bus can be connected directly to the IO pins of Raspberry Pi or using ## {% linkable_title Raspberry Pi setup %} -In order to setup 1-Wire support on Raspberry Pi, you'll need to edit `/boot/config.txt` following [this documentation](https://www.waveshare.com/wiki/Raspberry_Pi_Tutorial_Series:_1-Wire_DS18B20_Sensor#Enable_1-Wire). Don't use the `mount_dir` option. +In order to setup 1-Wire support on Raspberry Pi, you'll need to edit `/boot/config.txt` following [this documentation](https://www.waveshare.com/wiki/Raspberry_Pi_Tutorial_Series:_1-Wire_DS18B20_Sensor#Enable_1-Wire). +To edit `/boot/config.txt` on Hass.io use [this documentation](https://developers.home-assistant.io/docs/en/hassio_debugging.html) to enable SSH and edit `/mnt/boot/config.txt` via `vi`. ## {% linkable_title Interface adapter setup %} @@ -65,8 +66,6 @@ To enable One wire sensors in your installation, add the following to your `conf # Example configuration.yaml entry sensor: - platform: onewire - names: - some_id: your name ``` {% configuration %} @@ -80,3 +79,15 @@ mount_dir: type: string {% endconfiguration %} +### Configuration Example + +When `onewire` is added to Home Assistant, it will generate an ID for the sensor. You can specify a friendly name for the sensor with the name configuration option. + +```yaml +# Named sensor configuration.yaml entry +sensor: + - platform: onewire + names: + GENERATED_ID: FRIENDLY_NAME +``` + diff --git a/source/_components/sensor.pi_hole.markdown b/source/_components/sensor.pi_hole.markdown index 071f5ca0314..884cc1cf8a8 100644 --- a/source/_components/sensor.pi_hole.markdown +++ b/source/_components/sensor.pi_hole.markdown @@ -14,7 +14,7 @@ ha_release: 0.28 --- -The `pi_hole` sensor platform is displaying the statistical summary of a [Pi-hole](https://pi-hole.net/) system. +The `pi_hole` sensor platform displays the statistical summary of a [Pi-hole](https://pi-hole.net/) system. ## {% linkable_title Configuration %} @@ -73,4 +73,4 @@ monitored_conditions: description: Total number of seen clients. {% endconfiguration %} -This sensor platform was not made by Pi-hole LLC or the Pi-hole community. They didn't provide support, feedback, testing or helped in any way while it was created. This is third party, may not work if Pi-hole is breaking their API with the latest release, not official, not developed, not supported and not endorsed Pi-hole LLC or the Pi-hole community. The trademark `Pi-hole` and the logo is used here to describe the platform and only to describe. `Pi-hole` is a registered trademark of Pi-hole LLC. +This sensor platform was not made by Pi-hole LLC or the Pi-hole community. They did not provide support, feedback, testing, or any other help during its creation. This is a third party platform which may break if Pi-hole changes their API in a later release. It is not official, not developed, not supported, and not endorsed Pi-hole LLC or the Pi-hole community. The trademark `Pi-hole` and the logo is used here to describe the platform. `Pi-hole` is a registered trademark of Pi-hole LLC. diff --git a/source/_components/sensor.point.markdown b/source/_components/sensor.point.markdown new file mode 100644 index 00000000000..ad491d427c6 --- /dev/null +++ b/source/_components/sensor.point.markdown @@ -0,0 +1,29 @@ +--- +layout: page +title: "Minut Point Sensor" +description: "Access your Minut Point Sensors." +date: 2018-11-19 +sidebar: true +comments: false +sharing: true +footer: true +logo: minut.svg +ha_category: Sensor +ha_release: "0.83" +ha_iot_class: "Cloud Polling" +ha_qa_scale: silver +--- + +Each Point exposes the following sensors: + +- **temperature**: Temperature in °C. +- **humidity**: Percentage of humidity in the air. +- **pressure**: Pressure in hPa. +- **sound_level**: Sound level in dBa. + + +For installation instructions, see [the Point component](/components/point/). + +

+The Point is just active occasionally so the sensors are only updated every hour or so. +

diff --git a/source/_components/sensor.pollen.markdown b/source/_components/sensor.pollen.markdown index 8c613882242..c3f781da50a 100644 --- a/source/_components/sensor.pollen.markdown +++ b/source/_components/sensor.pollen.markdown @@ -13,10 +13,11 @@ ha_release: 0.63 ha_iot_class: "Cloud Polling" --- -The `pollen` sensor platform collects and displays allergy and disease -information (based on a U.S. ZIP code) from [Pollen.com](https://www.pollen.com/). Data measured includes: +The `pollen` sensor platform collects and displays allergy, asthma, and disease +information (based on a U.S. ZIP code) from +[Pollen.com](https://www.pollen.com/). Data measured includes: -* Indicies for allergies and cold/flu measurements +* Indicies for allergies, asthma and cold/flu indices * Trends * Current outlook * more! @@ -37,6 +38,11 @@ sensor: - allergy_index_today - allergy_index_tomorrow - allergy_index_yesterday + - asthma_average_forecasted + - asthma_average_historical + - asthma_index_today + - asthma_index_tomorrow + - asthma_index_yesterday - disease_average_forecasted ``` @@ -69,6 +75,15 @@ historical allergy index over the past 30 days tomorrow * Allergy Index: Yesterday (`allergy_index_yesterday`): the allergy index for yesterday +* Asthma Index: Forecasted Average (`asthma_average_forecasted`): the average +forecasted asthma index over the next 5 days +* Asthma Index: Historical Average (`asthma_average_historical`): the average +historical asthma index over the past 30 days +* Asthma Index: Today (`asthma_index_today`): the asthma index for today +* Asthma Index: Tomorrow (`asthma_index_tomorrow`): the asthma index for +tomorrow +* Asthma Index: Yesterday (`asthma_index_yesterday`): the asthma index for +yesterday * Cold & Flu: Forecasted Average (`disease_average_forecasted`): the average forecasted cold/flu index over the next 5 days @@ -84,3 +99,17 @@ Range | Rating 4.9 - 7.2 | Medium 7.3 - 9.6 | Medium/High 9.7 - 12.0 | High + +## {% linkable_title Understanding Asthma Allergens %} + +Several asthma-related sensors carry information regarding the top three +"asthma allergens" (i.e., irritants that may exacerbate asthma symptoms). +Example values include: + +Pollutant | Symbol | More Info +--------- | ------ | --------- +Particulate (<= 2.5 μm) | PM2.5 | [EPA: Particulate Matter (PM) Pollution ](https://www.epa.gov/pm-pollution) +Particulate (<= 10 μm) | PM10 | [EPA: Particulate Matter (PM) Pollution ](https://www.epa.gov/pm-pollution) +Ozone | O | [EPA: Ozone Pollution](https://www.epa.gov/ozone-pollution) +Sulpher Dioxide | SO2 | [EPA: Sulfur Dioxide (SO2) Pollution](https://www.epa.gov/so2-pollution) +Carbon Monoxide | CO | [EPA: Carbon Monoxide (CO) Pollution in Outdoor Air](https://www.epa.gov/co-pollution) diff --git a/source/_components/sensor.prezzibenzina.markdown b/source/_components/sensor.prezzibenzina.markdown new file mode 100644 index 00000000000..a3cdc449132 --- /dev/null +++ b/source/_components/sensor.prezzibenzina.markdown @@ -0,0 +1,64 @@ +--- +layout: page +title: "PrezziBenzina Sensor" +description: "Instructions on how to integrate PrezziBenzina sensors within Home Assistant." +date: 2018-12-14 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: prezzibenzina.png +ha_category: Energy +ha_release: 0.85 +ha_iot_class: "Cloud Polling" +--- + +The `prezzibenzina` platform allows you to monitor the fuel prices with [PrezziBenzina.it](https://www.prezzibenzina.it/) from within Home Assistant and setup automations based on the information. + +## {% linkable_title Setup %} + +To use this sensor you need the station ID. To get this information go to [PrezziBenzina.it](https://www.prezzibenzina.it/) with your browser and find your station. Then copy the ID from the URL bar. + +```text +https://www.prezzibenzina.it/distributori/STATION_ID/ +``` + +## {% linkable_title Configuration %} + +To enable this sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: prezzibenzina + station: STATION_ID +``` + +{% configuration %} +station: + description: The ID of the station you want to use. + required: true + type: string +fuel_types: + description: "The types of fuels you want to track. Allowed values are `Benzina`, `Benzina speciale`, `Diesel`, `Diesel speciale`, `GPL` or `Metano`." + required: false + type: list +name: + description: The name of the station. + required: false + type: string +{% endconfiguration %} + +## {% linkable_title Full example %} + +This is a full example of the sensor: + +```yaml +sensor: + - platform: prezzibenzina + station: + fuel_types: + - "Benzina" + - "GPL" + name: "Station" +``` diff --git a/source/_components/sensor.qbittorrent.markdown b/source/_components/sensor.qbittorrent.markdown new file mode 100644 index 00000000000..1dfdd2d9cf9 --- /dev/null +++ b/source/_components/sensor.qbittorrent.markdown @@ -0,0 +1,52 @@ +--- +layout: page +title: "qBittorrent Sensor" +description: "Instructions on how to integrate qBittorrent sensors within Home Assistant." +date: 2018-11-21 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: qbittorrent.png +ha_category: Downloading +ha_release: 0.84 +ha_iot_class: "Local Polling" +--- + +The `qbittorrent` platform allows you to monitor your downloads with [qBittorrent](https://www.qbittorrent.org/) from within Home Assistant and setup automations based on the information. + +## {% linkable_title Setup %} + +This sensor requires the qBittorrent Web UI enabled. The [official reference](https://github.com/qbittorrent/qBittorrent/wiki#webui-related) describes how to set up the Web UI. + +## {% linkable_title Configuration %} + +To enable this sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: qbittorrent + url: 'http://:' + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} +url: + description: The URL of the Web UI of qBittorrent. + required: true + type: string +name: + description: The name to use when displaying this qBittorrent instance. + required: false + type: string +username: + description: The username of the Web UI of qBittorrent. + required: true + type: string +password: + description: The password of the Web UI of qBittorrent. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/sensor.qnap.markdown b/source/_components/sensor.qnap.markdown index 7731bb33110..c9bbe117708 100644 --- a/source/_components/sensor.qnap.markdown +++ b/source/_components/sensor.qnap.markdown @@ -13,7 +13,6 @@ ha_release: 0.38 ha_iot_class: "Local Polling" --- - This `qnap` sensor allows getting various statistics from your [QNAP NAS](https://www.qnap.com/en-us/). ## {% linkable_title Configuration %} @@ -35,48 +34,104 @@ sensor: - volume_percentage_used ``` -Configuration variables: +{% configuration %} +host: + description: The IP address of the QNAP NAS to monitor. + required: true + type: string +port: + description: The port number on which the QNAP NAS web interface is reachable. + required: false + default: 8080 + type: integer +ssl: + description: Whether to connect via `https`. + required: false + default: false + type: boolean +verify_ssl: + description: Whether SSL certificates should be validated. + required: false + default: true + type: boolean +timeout: + description: How long (in seconds) to wait for a response from the QNAP device before giving up. + required: false + default: 10 + type: integer +username: + description: An user to connect to the QNAP NAS. + required: true + type: string +password: + description: The password of the user to connect to the QNAP NAS. + required: true + type: string +drivers: + description: "Array of drives to monitor (ex: `0:1`)." + required: false + default: all drivers + type: list +volumes: + description: "Array of volumes to monitor (ex: `DataVol1`)." + required: false + default: all volumes + type: list +nics: + description: "Array of network interfaces to monitor (ex: `eth0`)." + required: false + default: all NICs + type: list +monitored_conditions: + description: Defines the stats to monitor as sensors. + required: true + type: list + keys: + status: + description: Displays overall system health. + system_temp: + description: Displays the overall system temperature. + cpu_temp: + description: Displays the CPU's temperature. + cpu_usage: + description: Displays the CPU's utilization as a percentage. + memory_free: + description: Displays the size of available RAM in GB. + memory_used: + description: Displays the size of used RAM in GB. + memory_percent_used: + description: Displays the size of used RAM as a percentage of total RAM. + network_link_status: + description: Displays whether the network interfaces is up (creates a new entry for each interface). + network_tx: + description: Displays the upload speed of a network interface in MB/s (creates a new entry for each interface). + network_rx: + description: Displays the download speed of a network interface in MB/s (creates a new entry for each interface). + drive_smart_status: + description: Displays the S.M.A.R.T. status of the drive (creates a new entry for each drive). + drive_temp: + description: Displays the temperature of the drive (creates a new entry for each drive). + volume_size_free: + description: Displays the available space of the volume in GB (creates a new entry for each volume). + volume_size_used: + description: Displays the used space of the volume in GB (creates a new entry for each volume). + volume_percentage_used: + description: Displays the used space of the volume as a percentage (creates a new entry for each volume). +{% endconfiguration %} -- **host** (*Required*): The IP address of the QNAP NAS to monitor -- **port** (*Optional*): The port number on which the QNAP NAS web interface is reachable. Defaults to `8080`. -- **ssl** (*Optional*): Whether to connect via `https`. Defaults to `false`. -- **verify_ssl** (*Optional*): Whether SSL certificates should be validated. Defaults to `true`. -- **timeout** (*Optional*): How long (in seconds) to wait for a response from the QNAP device before giving up. Defaults to `10`. -- **username** (*Required*): An user to connect to the QNAP NAS. -- **password** (*Required*): The password of the user to connect to the QNAP NAS. -- **drives** (*Optional*): Array of drives to monitor (ex: `0:1`). Defaults to all drives. -- **volumes** (*Optional*): Array of volumes to monitor (ex: `DataVol1`). Defaults to all volumes. -- **nics** (*Optional*): Array of network interfaces to monitor (ex: `eth0`). Defaults to all NICs. -- **monitored_conditions** (*Required*): Defines the stats to monitor as sensors. - - **status**: Displays overall system health. - - **system_temp**: Displays the overall system temperature. - - **cpu_temp**: Displays the CPU's temperature. - - **cpu_usage**: Displays the CPU's utilization as a percentage. - - **memory_free**: Displays the size of available RAM in GB. - - **memory_used**: Displays the size of used RAM in GB. - - **memory_percent_used**: Displays the size of used RAM as a percentage of total RAM. - - **network_link_status**: Displays whether the network interfaces is up (creates a new entry for each interface). - - **network_tx**: Displays the upload speed of a network interface in MB/s (creates a new entry for each interface). - - **network_rx**: Displays the download speed of a network interface in MB/s (creates a new entry for each interface). - - **drive_smart_status**: Displays the S.M.A.R.T. status of the drive (creates a new entry for each drive). - - **drive_temp**: Displays the temperature of the drive (creates a new entry for each drive). - - **volume_size_free**: Displays the available space of the volume in GB (creates a new entry for each volume). - - **volume_size_used**: Displays the used space of the volume in GB (creates a new entry for each volume). - - **volume_percentage_used**: Displays the used space of the volume as a percentage (creates a new entry for each volume). - -### Self-signed certificates +### {% linkable_title Self-signed certificates %} If your QNAP device uses self-signed certificates, set the `verify_ssl` option to `false`. -### QNAP device support: +### {% linkable_title QNAP device support: %} This component has been tested on the following devices: - - TS-259 Pro+ (QTS 4.2.6) - - TS-410 (QTS 4.2.3) - - TS-419 (QTS 4.2.3) - - TS-451 (QTS 4.2.2) - - TS-470 (QTS 4.2.2) - - TS-639 (QTS 4.2.3) +- TS-259 Pro+ (QTS 4.2.6) +- TS-410 (QTS 4.2.3) +- TS-419 (QTS 4.2.3) +- TS-451 (QTS 4.2.2) +- TS-470 (QTS 4.2.2) +- TS-639 (QTS 4.2.3) Other QNAP NAS devices using similar firmware should work fine. For more information about supported devices, or to report issues with your device, please visit the [qnapstats project](https://github.com/colinodell/python-qnapstats#device-support). diff --git a/source/_components/sensor.rainbird.markdown b/source/_components/sensor.rainbird.markdown index 4c523a82c48..18bd7d944cf 100644 --- a/source/_components/sensor.rainbird.markdown +++ b/source/_components/sensor.rainbird.markdown @@ -27,8 +27,12 @@ sensor: - rainsensor ``` -Configuration variables: - -- **monitored_conditions**: Currently only rainsensor is supported. Returns the sensor level. +{% configuration %} +monitored_conditions: + description: Conditions to be monitored. + keys: + rainsensor: + description: Returns the sensor level. +{% endconfiguration %} Please note that due to the implementation of the API within the LNK Module, there is a concurrency issue. For example, the Rain Bird app will give connection issues (like already a connection active). diff --git a/source/_components/sensor.rainmachine.markdown b/source/_components/sensor.rainmachine.markdown index 4db41b38eaf..76228738190 100644 --- a/source/_components/sensor.rainmachine.markdown +++ b/source/_components/sensor.rainmachine.markdown @@ -17,7 +17,7 @@ The `rainmachine` 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, sensors automatically appear.

diff --git a/source/_components/sensor.rest.markdown b/source/_components/sensor.rest.markdown index bae594e5f4a..8a9dfa32bb0 100644 --- a/source/_components/sensor.rest.markdown +++ b/source/_components/sensor.rest.markdown @@ -64,7 +64,7 @@ verify_ssl: description: Verify the certification of the endpoint. required: false type: boolean - default: True + default: true unit_of_measurement: description: Defines the units of measurement of the sensor, if any. required: false @@ -93,7 +93,7 @@ force_update: description: Sends update events even if the value hasn't changed. Useful if you want to have meaningful value graphs in history. reqired: false type: boolean - default: False + default: false {% endconfiguration %}

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/), +

+ +The `ruter` sensor will provide you departure information for the larger Oslo area in Norway from the [Ruter][ruter] public transportation service. + +This platform is using the [Ruter reisapi API][ruter-api] to gather the information. + +To find the `stop_id` you need to visit the [Ruter][ruter] site and search for your stop. +In the URL after you have searched, there will be an ID right after the `Stoppested/` in a format like this `(2190400)`, the numbers there is what you need to put in the `stop_id:` configuration option. + +Add the data to your `configuration.yaml` file as shown in the example: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: ruter + stop_id: STOPID +``` + +{% configuration %} +stop_id: + description: The stop id for the stop you want to monitor. + required: true + type: string +destination: + description: A destination name to show only departures that has this as the final stop. + required: false + type: string +offset: + description: An offset for the next departure, 0 will give the first one. + required: false + type: integer + default: 0 +name: + description: Name of the sensor. + required: false + type: string + default: Ruter +{% endconfiguration %} + +[ruter]: https://ruter.no/reiseplanlegger/Stoppested +[ruter-api]: http://reisapi.ruter.no/Help diff --git a/source/_components/sensor.season.markdown b/source/_components/sensor.season.markdown index c2ce54a145c..e12c1c401f2 100644 --- a/source/_components/sensor.season.markdown +++ b/source/_components/sensor.season.markdown @@ -16,6 +16,10 @@ ha_qa_scale: internal The `season` sensor will display the current astronomical or meteorological season (Spring, Summer, Autumn, Winter) based on the user's setting in the configuration file. +For information on the difference between astronomical and meteorological seasons please see the link below: + + - [https://www.ncei.noaa.gov/news/meteorological-versus-astronomical-seasons](https://www.ncei.noaa.gov/news/meteorological-versus-astronomical-seasons) + All information about how the seasons work was taken from Wikipedia: - [https://en.wikipedia.org/wiki/Season#Astronomical](https://en.wikipedia.org/wiki/Season#Astronomical) diff --git a/source/_components/sensor.sense.markdown b/source/_components/sensor.sense.markdown index f894c5312e2..f66a91a8639 100644 --- a/source/_components/sensor.sense.markdown +++ b/source/_components/sensor.sense.markdown @@ -13,32 +13,23 @@ ha_iot_class: "Cloud Polling" ha_release: 0.65 --- - -Integrate your [Sense](https://sense.com) meter information into Home Assistant. +Integrate your [Sense](https://sense.com) electricity meter information into Home Assistant. ## {% linkable_title Configuration %} -To enable this sensor in your installation, add the following to your `configuration.yaml` file: +To enable this integration in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry -sensor: - platform: sense +sense: email: CLIENT_ID password: CLIENT_SECRET - monitored_conditions: - - active_usage - - active_production - - daily_usage - - daily_production ``` -Two types of sensors can be monitored and will be created with the following names: +In addition to binary sensors for individual devices, two types of sensors will be created with the following names: -- **Active Usage/Production**: Current active power usage/production in Watts. Updated every 30 seconds. -- **Daily Usage/Production**: Daily power usage/production in kWh. Updated every 5 minutes. - -Weekly, Monthly and Yearly variants are also available. +- **Active Usage/Production**: Current active power usage/production in Watts. Updated every 1 minute. +- **Daily/Weekly/Monthly/Yearly Usage/Production**: Daily power usage/production in kWh. Updated every 5 minutes. {% configuration %} email: @@ -49,29 +40,19 @@ password: description: The password for your Sense account/application. required: true type: string -monitored_conditions: - description: List of sensors to display in the front end. - required: true - type: list - keys: - active_usage: - description: The current power usage in W. - active_production: - description: The current solar production in W. - daily_usage: - description: Total power used for current day in kWh. - daily_production: - description: Total power produced for current day in kWh. - weekly_usage: - description: Total power used for current week in kWh. - weekly_production: - description: Total power produced for current week in kWh. - monthly_usage: - description: Total power used for current month in kWh. - monthly_production: - description: Total power produced for current month in kWh. - yearly_usage: - description: Total power used for current year in kWh. - yearly_production: - description: Total power produced for current year in kWh. +timeout: + description: Timeout for the connection in seconds. + required: false + default: 5 + type: integer {% endconfiguration %} + +Full example: + +```yaml +# Example configuration.yaml entry +sense: + email: CLIENT_ID + password: CLIENT_SECRET + timeout: 5 +``` diff --git a/source/_components/sensor.sensehat.markdown b/source/_components/sensor.sensehat.markdown index cc0a9da56d2..608f749db35 100644 --- a/source/_components/sensor.sensehat.markdown +++ b/source/_components/sensor.sensehat.markdown @@ -13,7 +13,6 @@ ha_release: 0.35 ha_iot_class: "Local Push" --- - The `sensehat` sensor platform allows you to display information collected by a [Sense HAT](https://www.raspberrypi.org/products/sense-hat/) add-on board for Raspberry Pi. ## {% linkable_title Configuration %} @@ -30,21 +29,37 @@ sensor: - pressure ``` -Configuration variables: +{% configuration %} +display_options: + description: List of details to monitor. + required: true + default: "`memory_free`" + type: list + keys: + temperature: + description: Temperature + humidity: + description: Humidity + pressure: + description: Pressure +name: + description: Change the name of te sensor, for in the frontend. + required: false + type: string +is_hat_attached: + description: Declaring that the SenseHAT _is_ physically on the Raspberry Pi. + required: false + default: true + type: boolean +{% endconfiguration %} -- **display_options** (*Requires*) array: List of details to monitor. Defaults is `memory_free`. - - 'temperature' - - 'humidity' - - 'pressure' - is_hat_attached (Optional): True|False boolean; Default value is True declaring that the SenseHAT _is_ physically on the Raspberry Pi - - -#### Customizing the Sense HAT data +#### {% linkable_title Customizing the Sense HAT data %} **Format the sensor values** Add the following to your `sensor`: {% raw %} + ```yaml # Example configuration.yaml entry sensor: @@ -66,6 +81,7 @@ sensor: value_template: '{{ states.sensor.humidity.state | round(1) }}' unit_of_measurement: '%' ``` + {% endraw %} **Give the values friendly names & icons** @@ -98,7 +114,9 @@ group: - sensor.sensehat_humidity - sensor.sensehat_pressure ``` -Add the _sense_hat group_ a group (_Kitchen for example_) + +Add the sense_hat group (_Kitchen for example_) + ```yaml # Example configuration.yaml entry group: @@ -106,12 +124,11 @@ group: - group.sense_hat ``` - -### Directions for installing on Raspberry Pi All-In-One installer and HASSbian: +### {% linkable_title Directions for installing on Raspberry Pi All-In-One installer and HASSbian: %} Here are the steps to make the _SenseHAT_ sensor work _successfully_ with the virtual environment versions. -#### Install SenseHAT package to _homeassistant_venv_ +#### {% linkable_title Install SenseHAT package to _homeassistant_venv_ %} ```bash # switch to the homeassistant_venv environment @@ -123,13 +140,13 @@ pip3 install sense-hat # be patient, this will take a long while ``` -#### Return to `pi` +#### {% linkable_title Return to `pi` %} Type `exit` to quit out of the _homeassistant_venv_ back to your `pi` environment. As all of the following steps should be under the `pi` user environment. -###### Install _RTIMU_ +#### {% linkable_title Install _RTIMU_ %} ```bash # pi user environment: Install RTIMU diff --git a/source/_components/sensor.seventeentrack.markdown b/source/_components/sensor.seventeentrack.markdown new file mode 100644 index 00000000000..922f952187b --- /dev/null +++ b/source/_components/sensor.seventeentrack.markdown @@ -0,0 +1,53 @@ +--- +layout: page +title: "17track.net" +description: "Instructions on how to use 17track.net data within Home Assistant" +date: 2018-10-31 10:42 +sidebar: true +comments: false +sharing: true +footer: true +logo: 17track.png +ha_category: Postal Service +ha_release: 0.83 +ha_iot_class: "Cloud Polling" +--- + +The `seventeentrack` sensor platform allows users to get package data tied to their [17track.net](https://www.17track.net/en) account. The platform creates both summary sensors, which show the number of packages in a current state (e.g., "In Transit"), as well as individual sensors for each package within the account. + +

+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. +

+ +## {% linkable_title Configuration %} + +To enable the platform, add the following lines to your `configuration.yaml` +file: + +```yaml +sensor: + - platform: seventeentrack + username: EMAIL_ADDRESS + password: YOUR_PASSWORD +``` + +{% configuration %} +username: + description: The email address associated with your 17track.net account. + required: true + type: string +password: + description: The password associated with your 17track.net account. + required: true + type: string +show_archived: + description: Whether sensors should be created for archived packages. + required: false + type: boolean + default: false +show_delivered: + description: Whether sensors should be created for delivered packages. + required: false + type: boolean + default: false +{% endconfiguration %} diff --git a/source/_components/sensor.sigfox.markdown b/source/_components/sensor.sigfox.markdown index e11dc9600e8..4e34dcb41f7 100644 --- a/source/_components/sensor.sigfox.markdown +++ b/source/_components/sensor.sigfox.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: sigfox.png ha_category: Sensor -ha_iot_class: "Local Polling" +ha_iot_class: "Cloud Polling" ha_release: 0.68 --- diff --git a/source/_components/sensor.sma.markdown b/source/_components/sensor.sma.markdown index 82915cfd8ee..6365675c6e4 100644 --- a/source/_components/sensor.sma.markdown +++ b/source/_components/sensor.sma.markdown @@ -15,6 +15,8 @@ ha_release: 0.36 The `sma` sensor will poll a [SMA](http://www.sma-solar.com/) [(US)](http://www.sma-america.com/) solar inverter and present the values as sensors (or attributes of sensors) in Home Assistant. +This sensor uses the web interface and in order to use it you have to be able to connect to the solar inverter from your favorite web browser. + ## {% linkable_title Configuration %} To enable this sensor, add the following lines to your `configuration.yaml` file: @@ -41,6 +43,11 @@ ssl: required: false default: false type: boolean +verify_ssl: + description: Whether Home Assistant should verify the SSL certificate from the inverter. Self-signed certificates may require `false` for this sensor to operate properly. + required: false + default: true + type: boolean password: description: The password of the SMA WebConnect module. required: true @@ -51,22 +58,36 @@ group: default: user type: string sensors: - description: A dictionary of sensors that will be added. The value of the dictionary can include sensor names that will be shown as attributes. + description: A dictionary of sensors that will be added. The value of the dictionary can include a list of sensor names that will be used as attributes. required: true - type: list + type: map keys: current_power: - description: Current power. + description: Current power (W). current_consumption: - description: Current consumption. - total_power: - description: Total power. + description: Power that you are currently drawing, depending on your installation it can be a combination of the inverter and the grid (W). + total_yield: + description: Total power yield from solar installation (kWh). total_consumption: - description: Total consumption. + description: Total power consumption (kWh). + grid_voltage: + description: The grid voltage (V) + pv_power: + description: PV Power (W) + daily_yield: + description: daily_yield (Wh) + power_supplied: + description: Power supplied (W) + power_absorbed: + description: Power absorbed (W) + status: + description: Status of the solar plant. + your-custom-sensor: + description: Any sensor name defined in the `custom:` section custom: description: A dictionary of custom sensor key values and units. required: false - type: list + type: map keys: key: description: The SMA sensor key. @@ -102,4 +123,4 @@ Example: factor: 1000 ``` -Over time more sensors will be added as standard sensors to the [pysma library](https://github.com/kellerza/pysma/blob/master/pysma/__init__.py#L18). Feel free to submit additional sensors on that repository. +Over time more sensors will be added as standard sensors to the [pysma library](https://github.com/kellerza/pysma/blob/master/pysma/__init__.py#L59). Feel free to submit additional sensors on that repository. diff --git a/source/_components/sensor.solaredge.markdown b/source/_components/sensor.solaredge.markdown new file mode 100644 index 00000000000..6f7ba39a19e --- /dev/null +++ b/source/_components/sensor.solaredge.markdown @@ -0,0 +1,105 @@ +--- +layout: page +title: "SolarEdge Sensor" +description: "Instructions on how to integrate SolarEdge sensor within Home Assistant." +date: 2018-12-04 14:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: solaredge.png +ha_category: Sensor +ha_release: 0.85 +ha_iot_class: "Cloud Polling" +--- + +The `solaredge` platform uses the [SolarEdge Monitoring API](https://www.solaredge.com/sites/default/files/se_monitoring_api.pdf) to allow you to get details from your SolarEdge solar power setup and integrate these in your Home Assistant installation. + +

+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. +

+ +## {% linkable_title Configuration %} + +To use the SolarEdge sensors in your installation, add the following to your configuration.yaml file: + +{% raw %} +```yaml +# Example configuration.yaml entry +sensor: + - platform: solaredge + api_key: API_KEY + site_id: SITE_ID + monitored_conditions: + - current_power + - last_day_data +``` +{% endraw %} + +{% configuration %} +api_key: + description: Your SolarEdge Site API key. + required: true + type: string +site_id: + description: The id of your SolarEdge Site. + required: true + type: string +name: + description: Let you overwrite the name of the device in the frontend. + required: false + default: SolarEdge + type: string +monitored_conditions: + description: SolarEdge Site information to be monitored. The following conditions can be monitored. + required: false + type: list + default: current_power + keys: + life_time_data: + description: Lifetime energy generated at your SolarEdge Site in Wh + last_year_data: + description: Energy generated this year at your SolarEdge Site in Wh + last_month_data: + description: Energy generated this month at your SolarEdge Site in Wh + last_day_data: + description: Energy generated today at your SolarEdge Site in Wh + current_power: + description: Current generated power in W +{% endconfiguration %} + +If no **monitored_conditions** are specified, only **current_power** will be enabled. + +### {% linkable_title Full configuration sample %} + +A full configuration entry would look like the sample below. + +{% raw %} +```yaml +# Example configuration.yaml entry +sensor: + - platform: solaredge + api_key: API_KEY + site_id: SITE_ID + name: SolarEdge + monitored_conditions: + - current_power + - last_day_data + - last_month_data + - last_year_data + - life_time_data +``` +{% endraw %} + +In case you would like to convert the values for example to kWh instead of the default Wh, you can use the [template platform](/components/sensor.template/). + +{% raw %} +```yaml +# Example configuration.yaml entry for template platform +sensors: + platform: template + sensors: + solaredge_last_year_data_template: + value_template: '{{(states.sensor.solaredge_last_year_data.state | float / 1000) | round(2)}}' +``` +{% endraw %} diff --git a/source/_components/sensor.sql.markdown b/source/_components/sensor.sql.markdown index 612df43f726..684dcf77251 100644 --- a/source/_components/sensor.sql.markdown +++ b/source/_components/sensor.sql.markdown @@ -68,7 +68,7 @@ queries: ## {% linkable_title Examples %} -In this section you find some real-life examples of how to use this sensor. +In this section, you find some real-life examples of how to use this sensor. ### {% linkable_title Current state of an entity %} @@ -81,7 +81,7 @@ sensor: unit_of_measurement: '°C' ``` -The query will look like this: +The query will look like this: ```sql SELECT * FROM states WHERE entity_id = 'sensor.temperature_in' ORDER BY state_id DESC LIMIT 1; @@ -99,7 +99,6 @@ sensor: ``` {% endraw %} - Note that the SQL sensor state corresponds to the last row of the SQL result set. ### {% linkable_title Previous state of an entity %} @@ -107,7 +106,7 @@ Note that the SQL sensor state corresponds to the last row of the SQL result set This example only works with *binary_sensors*: ```sql -SELECT * FROM states WHERE entity_id='binary_sensor.xyz789' GROUP BY state ORDER BY last_changed DESC LIMIT 1; +SELECT * FROM states WHERE entity_id = 'binary_sensor.xyz789' GROUP BY state ORDER BY last_changed DESC LIMIT 1; ``` ### {% linkable_title Database size %} @@ -116,13 +115,14 @@ SELECT * FROM states WHERE entity_id='binary_sensor.xyz789' GROUP BY state ORDER {% raw %} ```yaml -- platform: sql +sensor: + - platform: sql db_url: postgresql://user:password@host/dbname queries: - name: DB size query: "SELECT (pg_database_size('dsmrreader')/1024/1024) as db_size;" column: "db_size" - unit_of_measurement: MB + unit_of_measurement: MB ``` {% endraw %} @@ -131,12 +131,12 @@ SELECT * FROM states WHERE entity_id='binary_sensor.xyz789' GROUP BY state ORDER {% raw %} ```yaml sensor: -- platform: sql - db_url: mysql://user:password@localhost/hass - queries: - - name: DB size - query: 'SELECT table_schema "database", Round(Sum(data_length + index_length) / 1024, 1) "value" FROM information_schema.tables WHERE table_schema="hass" GROUP BY table_schema;' - column: 'value' - unit_of_measurement: kB + - platform: sql + db_url: mysql://user:password@localhost/hass + queries: + - name: DB size + query: 'SELECT table_schema "database", Round(Sum(data_length + index_length) / 1024, 1) "value" FROM information_schema.tables WHERE table_schema="hass" GROUP BY table_schema;' + column: 'value' + unit_of_measurement: kB ``` {% endraw %} diff --git a/source/_components/sensor.srp_energy.markdown b/source/_components/sensor.srp_energy.markdown new file mode 100644 index 00000000000..6488f4dc257 --- /dev/null +++ b/source/_components/sensor.srp_energy.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "SRP Energy Sensor" +description: "How to integrate SRP Energy within Home Assistant." +date: 2018-10-30 08:00 +sidebar: true +comments: false +ha_category: Energy +ha_release: "0.83" +ha_iot_class: "Cloud Polling" +--- + +The `srp_energy` component shows information from Srp hourly energy usage report for their customers. The srpenergy module fetches the data found on the website. + +You need a Username, Password, and AccountId which you can create at [Srp](https://www.srpnet.com). + +## {% linkable_title Configuration %} + +To add Srp Energy to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: srp_energy + username: YOUR_USERNAME + password: YOUR_PASSWORD + id: YOUR_ACCOUNT_ID +``` + +{% configuration %} +username: + description: Your username for SRP. + required: true + type: string +password: + description: Your password for SRP. + required: true + type: string +id: + description: Your account id for SRP. + required: true + type: string +{% endconfiguration %} + +Details about the API are available in the [SRP Energy Developers API documentation](https://srpenergy-api-client-python.readthedocs.io/en/latest/?badge=latest). diff --git a/source/_components/sensor.statistics.markdown b/source/_components/sensor.statistics.markdown index 509e7f8db3c..ad60be7beb0 100644 --- a/source/_components/sensor.statistics.markdown +++ b/source/_components/sensor.statistics.markdown @@ -38,13 +38,31 @@ sensor: minutes: 30 ``` -Configuration variables: - -- **entity_id** (*Required*): The entity to monitor. Only [sensors](/components/sensor/) and [binary sensor](/components/binary_sensor/). -- **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `Stats`. -- **sampling_size** (*Optional*): Size of the sampling. If the limit is reached then the values are rotated. Defaults to `20`. -- **max_age** (*Optional*): Maximum age of measurements. Setting this to a time interval will cause older values to be discarded. -- **precision** (*Optional*): Defines the precision of the calculated values, through the argument of round(). Defaults to `2`. +{% configuration %} +entity_id: + description: The entity to monitor. Only [sensors](/components/sensor/) and [binary sensor](/components/binary_sensor/). + required: true + type: string +name: + description: Name of the sensor to use in the frontend. + required: false + default: Stats + type: string +sampling_size: + description: Size of the sampling. If the limit is reached then the values are rotated. + required: false + default: 20 + type: integer +max_age: + description: Maximum age of measurements. Setting this to a time interval will cause older values to be discarded. + required: false + type: time +precision: + description: Defines the precision of the calculated values, through the argument of round(). + required: false + default: 2 + type: integer +{% endconfiguration %}

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 --- -

- 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 `swiss_hydrological_data` sensor will show you details (temperature, level, and discharge) of rivers and lakes in Switzerland. ## {% linkable_title Setup %} -The [station overview](http://www.hydrodaten.admin.ch/en/danger-levels-table.html) contains a list of all available measuring points and will help to determine the ID of station which is needed for the configuration. +The [station overview](https://www.hydrodaten.admin.ch/en/stations-and-data.html) contains a list of all available measuring points and will help to determine the ID of station which is needed for the configuration. ## {% linkable_title Configuration %} @@ -32,6 +28,10 @@ To enable this sensor, add the following lines to your `configuration.yaml` file sensor: - platform: swiss_hydrological_data station: STATION_ID + monitored_conditions: + - temperature + - level + - discharge ``` {% configuration %} @@ -39,29 +39,27 @@ station: description: The ID of the measurement point. required: true type: string -name: - description: Name to use in the frontend. +monitored_conditions: + description: The list of measurements you want to use. Available is `temperature`, `level` or `discharge`. required: false - type: string - default: + type: list + default: temperature {% endconfiguration %} -The hydrological measurings are coming from the [Swiss Federal Office for the Environment (Bundesamt für Umwelt - Abt. Hydrologie)](http://www.hydrodaten.admin.ch) and are updated almost in real-time. +Sensors are exposing additional values through their attributes for all available conditions: -## {% linkable_title Example %} - -This sensor contains additional information which an easily accessed by a [template sensor](/components/sensor.template/). - -{% raw %} -```yaml -# Example configuration.yaml entry -sensor: - platform: template - sensors: - discharge: - value_template: '{{ states.sensor.aare.attributes.Discharge }}' - friendly_name: 'Discharge' -``` -{% endraw %} +- `delta-24h`: The delta measurement for the last 24 hours. +- `max-1h`: The maximum measurement for the last hour. +- `max-24h`: The maximum measurement for the last 24 hours. +- `mean-1h`: The mean measurement for the last hour. +- `mean-24h`: The mean measurement for the last 24 hours. +- `min-1h`: The minimum measurement for the last hour. +- `min-24h`: The minimum measurement for the last 24 hours. +- `previous-24h`: The previous measurement for the last 24 hours. +- `station_update`: There is a time span between the sensor update in Home Assistant and the updates from the stations. Include those information if you are building automations based on the discharge of a water body. +

+ 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. +

+The hydrological measurements are coming from the [Swiss Federal Office for the Environment (Bundesamt für Umwelt - Abt. Hydrologie)](http://www.hydrodaten.admin.ch) and are updated every 10 minutes. diff --git a/source/_components/sensor.systemmonitor.markdown b/source/_components/sensor.systemmonitor.markdown index 10da7021396..48e8f885880 100644 --- a/source/_components/sensor.systemmonitor.markdown +++ b/source/_components/sensor.systemmonitor.markdown @@ -70,7 +70,6 @@ file. | processor_use | | | process | Binary, e.g., `octave-cli` | | last_boot | | -| since_last_boot | | ## {% linkable_title Linux specific %} diff --git a/source/_components/sensor.sytadin.markdown b/source/_components/sensor.sytadin.markdown index 0347c817919..aa0eb2524ff 100644 --- a/source/_components/sensor.sytadin.markdown +++ b/source/_components/sensor.sytadin.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: sytadin.png ha_release: 0.57 -ha_category: Car +ha_category: Transport ha_iot_class: "Clound Polling" --- diff --git a/source/_components/sensor.tautulli.markdown b/source/_components/sensor.tautulli.markdown new file mode 100644 index 00000000000..696c3d9362c --- /dev/null +++ b/source/_components/sensor.tautulli.markdown @@ -0,0 +1,97 @@ +--- +layout: page +title: "Tautulli activity sensor" +description: "Instructions on how to set up Tautulli sensors in Home Assistant." +date: 2018-10-27 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: tautulli.png +ha_category: Sensor +ha_release: 0.82 +ha_iot_class: "Local Polling" +--- + +The `tautulli` sensor platform will monitor activity on a given [Tautulli Server][tautulli]. It will create a sensor that shows the number of currently active streams as the state. If you click the sensor for more details it will show you more statistics, the following stats are available by default: + +- LAN bandwidth +- Number of direct plays +- Number of direct streams +- Stream count +- Top Movie +- Top TV Show +- Top User +- Total bandwidth +- Transcode count +- WAN bandwidth + +More user statistics can be added with the `monitored_conditions` configuration option, this will add one attribute per user in addition to the users current `activity`. + +## {% linkable_title Setup %} + +To find your `api_key` open the Tautulli web interface and navigate to `Settings` and then to `Web interface`, the `api_key` will be at the bottom of that page. + +## {% linkable_title Configuration %} + +If you want to enable this sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: tautulli + api_key: TAUTULLI_API_KEY + host: TAUTULLI_HOST +``` + +{% configuration %} +api_key: + description: The API key for your Tautulli server. + required: true + type: string +host: + description: The DNS name or IP Address of the server running Tautulli. + required: true + type: string +port: + description: The port of your Tautulli server. + required: false + default: 8181 + type: integer +path: + description: The Base Url path of your Tautulli server. + required: false + type: string +ssl: + description: Use HTTPS to connect to Tautulli server. *NOTE* A host *cannot* be an IP address when this option is enabled. + required: false + default: false + type: boolean +monitored_users: + description: A list of Tautulli users you want to monitor, if not set this will monitor **all** users. + required: false + type: list +monitored_conditions: + description: A list of attributes to expose for each Tautulli user you monitor, every key in the `session` [section here][tautulliapi] can be used. + required: false + type: list +{% endconfiguration %} + +## {% linkable_title Full example for the configuration %} + +```yaml +# Example configuration.yaml entry +sensor: + - platform: tautulli + api_key: TAUTULLI_API_KEY + host: TAUTULLI_HOST + monitored_users: + - USER_1 + - USER_2 + monitored_conditions: + - ATTRIBUTE_1 + - ATTRIBUTE_2 +``` + +[tautulli]: https://tautulli.com +[tautulliapi]: https://github.com/Tautulli/Tautulli/blob/master/API.md#get_activity diff --git a/source/_components/sensor.tellstick.markdown b/source/_components/sensor.tellstick.markdown index d7f07a92d7b..54b39da34f2 100644 --- a/source/_components/sensor.tellstick.markdown +++ b/source/_components/sensor.tellstick.markdown @@ -12,10 +12,8 @@ ha_category: Sensor ha_iot_class: "Local Polling" --- - The `tellstick` sensor platform allows you to get current meteorological data from a [TellStick](http://www.telldus.se/products/tellstick) device. - To use your TellStick device, you first have to set up your [Tellstick hub](/components/tellstick/) and then add the following to your `configuration.yaml` file: ```yaml @@ -24,12 +22,27 @@ sensor: - platform: tellstick ``` -Configuration variables: - -- **ID: Name** (*Optional*): Entry for a sensor with the name for it and its ID. -- **only_named** (*Optional*): Only show the named sensors. Set to `True` to hide sensors. -- **temperature_scale** (*Optional*): The scale of the temperature value. -- **datatype_mask** (*Optional*): Mask to determine which sensor values to show based on. Please check the [TellCore tellcore.constants documentation](https://tellcore-py.readthedocs.org/en/v1.1.2/constants.html#module-tellcore.constants) for details. +{% configuration %} +sensor: + description: "Entry for a sensor with the ID and its name, e.g., ID: Name." + required: false + type: string +only_named: + description: Only show the named sensors. Set to `true` to hide sensors. + required: false + default: false + type: boolean +temperature_scale: + description: The scale of the temperature value. + required: false + default: °C + type: string +datatype_mask: + description: Mask to determine which sensor values to show based on. Please check the [TellCore tellcore.constants documentation](https://tellcore-py.readthedocs.org/en/v1.1.2/constants.html#module-tellcore.constants) for details. + required: false + default: 127 + type: integer +{% endconfiguration %} ## {% linkable_title Examples %} @@ -43,7 +56,7 @@ sensor: - platform: tellstick 135: Outside 21: Inside - only_named: True + only_named: true temperature_scale: "°C" datatype_mask: 1 ``` diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown index 551b3d3b369..ab4eb3002e3 100644 --- a/source/_components/sensor.template.markdown +++ b/source/_components/sensor.template.markdown @@ -14,15 +14,11 @@ logo: home-assistant.png ha_qa_scale: internal --- -The `template` platform supports sensors which break out `state_attributes` from other entities. - -

-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 `template` platform supports sensors which get their values from other entities. ## {% linkable_title Configuration %} -To enable Template Sensors in your installation, add the following to your `configuration.yaml` file: +The configuration of Template Sensors depends on what you want them to be. Adding the following to your `configuration.yaml` file will create two sensors, one for the current sun angle and one for the time of the next sunrise: {% raw %} ```yaml @@ -33,10 +29,10 @@ sensor: solar_angle: friendly_name: "Sun angle" unit_of_measurement: 'degrees' - value_template: "{{ states.sun.sun.attributes.elevation }}" + value_template: "{{ state_attr('sun.sun', 'elevation') }}" sunrise: - value_template: "{{ states.sun.sun.attributes.next_rising }}" + value_template: "{{ state_attr('sun.sun', 'next_rising') }}" ``` {% endraw %} @@ -55,11 +51,11 @@ sensor: required: false type: template entity_id: - description: The template engine will attempt to work out what entities should trigger an update of the sensor. If this fails to get the correct list (for example if your template loops over the contents of a group) then you can provide a list of entity IDs that will cause the sensor to update. + description: A list of entity IDs so the sensor only reacts to state changes of these entities. This can be used if the automatic analysis fails to find all relevant entities. required: false type: string, list unit_of_measurement: - description: "Defines the units of measurement of the sensor, if any. This will also influence the graphical presentation in the history visualisation as continuous value. Sensors with missing `unit_of_measurement` are showing as discrete values." + description: "Defines the units of measurement of the sensor, if any. This will also influence the graphical presentation in the history visualization as a continuous value. Sensors with missing `unit_of_measurement` are showing as discrete values." required: false type: string default: None @@ -84,12 +80,19 @@ sensor: ## {% linkable_title Considerations %} +### {% linkable_title Startup %} + If you are using the state of a platform that takes extra time to load, the Template Sensor may get an `unknown` state during startup. To avoid this (and the resulting error messages in your log file), you can use `is_state()` function in your template. For example, you would replace {% raw %}`{{ states.switch.source.state == 'on' }}`{% endraw %} with this equivalent that returns `true`/`false` and never gives an `unknown` result: + {% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %} +### {% linkable_title 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. +In this section, you find some real-life examples of how to use this sensor. ### {% linkable_title Sun Angle %} @@ -103,13 +106,13 @@ sensor: solar_angle: friendly_name: "Sun Angle" unit_of_measurement: '°' - value_template: "{{ '%+.1f'|format(states.sun.sun.attributes.elevation) }}" + value_template: "{{ '%+.1f'|format(state_attr('sun.sun', 'elevation')) }}" ``` {% endraw %} ### {% linkable_title Renaming Sensor Output %} -If you don't like the wording of a sensor output then the Template Sensor can help too. Let's rename the output of the [Sun component](/components/sun/) as +If you don't like the wording of a sensor output, then the Template Sensor can help too. Let's rename the output of the [Sun component](/components/sun/) as a simple example: {% raw %} @@ -128,26 +131,6 @@ sensor: ``` {% endraw %} -Processes monitored by the [System Monitor sensor](/components/sensor.systemmonitor/) show `on` or `off` if they are running or not. This example shows how the output of a monitored `glances` process can be renamed. - -{% raw %} -```yaml -sensor: - - platform: template - sensors: - glances: - friendly_name: "Glances" - value_template: >- - {% if is_state('sensor.process_glances', 'on') %} - running - {% else %} - not running - {% endif %} -``` -{% endraw %} - -The [Template Binary Sensor](/components/binary_sensor.template/) is the one in similar cases if you prefer to see an icon instead of text. - ### {% linkable_title Multiline Example With an `if` Test %} This example shows a multiple line template with an `if` test. It looks at a sensing switch and shows `on`/`off` in the frontend. @@ -162,22 +145,19 @@ sensor: value_template: >- {% if is_state('switch.kettle', 'off') %} off - {% elif states.switch.kettle.attributes.kwh|float < 1000 %} + {% elif state_attr('switch.kettle', 'kwh')|float < 1000 %} standby {% elif is_state('switch.kettle', 'on') %} on {% else %} failed {% endif %} - - next_sensor: - ... ``` {% endraw %} ### {% linkable_title Change The Unit of Measurement %} -With a Template Sensor it's easy to convert given values into others if the unit of measurement doesn't fit your needs. +With a Template Sensor, it's easy to convert given values into others if the unit of measurement doesn't fit your needs. {% raw %} ```yaml @@ -250,27 +230,6 @@ sensor: ### {% linkable_title Change the Friendly Name Used in the Frontend %} -This example shows how to change the `friendly_name` based on a date. -Explanation: We add a multiple of 86400 seconds (= 1 day) to the current unix timestamp to get a future date. - -{% raw %} -```yaml -sensor: - - platform: template - sensors: - forecast_1_day_ahead: - friendly_name_template: >- - {%- set date = as_timestamp(now()) + (1 * 86400 ) -%} - {{ date|timestamp_custom("Tomorrow (%-m/%-d)") }} - value_template: "{{ sensor.darksky_weather_forecast_1 }}" - forecast_2_days_ahead: - friendly_name_template: >- - {%- set date = as_timestamp(now()) + (2 * 86400 ) -%} - {{ date|timestamp_custom("%A (%-m/%-d)") }} - value_template: "{{ sensor.darksky_weather_forecast_2 }}" -``` -{% endraw %} - This example shows how to change the `friendly_name` based on a state. {% raw %} @@ -290,9 +249,11 @@ sensor: ``` {% endraw %} -### {% linkable_title Working with dates %} +### {% linkable_title Working without entities %} -The `template` sensors are not limited to use attributes from other entities but can also work with [Home Assistant's template extensions](/docs/configuration/templating/#home-assistant-template-extensions). This template contains no entities that will trigger an update, so either we need to use `homeassistant.update_entity` or add an `entity_id:` line for an entity that will force an update - here we're using `sun.sun`. +The `template` sensors are not limited to use attributes from other entities but can also work with [Home Assistant's template extensions](/docs/configuration/templating/#home-assistant-template-extensions). + +This template contains no entities that will trigger an update, so we add an `entity_id:` line with an entity that will force an update - here we're using a [date sensor](/components/sensor.time_date/) to get a daily update: {% raw %} ```yaml @@ -301,15 +262,15 @@ sensor: sensors: nonsmoker: value_template: '{{ (( as_timestamp(now()) - as_timestamp(strptime("06.07.2018", "%d.%m.%Y")) ) / 86400 ) | round(2) }}' - entity_id: sun.sun + entity_id: sensor.date friendly_name: 'Not smoking' unit_of_measurement: "Days" ``` {% endraw %} -### {% linkable_title Template tracking %} +Useful entities to choose might be `sensor.date` which update once per day or `sensor.time` which updates once per minute. -This example shows how to add `entity_id` to a template to allow tracking of updates. Fixing an error caused in (81.0) +An alternative to this is to create an interval-based automation that calls the service `homeassistant.update_entity` for the entities requiring updates. This modified example updates every 5 minutes: {% raw %} ```yaml @@ -317,25 +278,17 @@ sensor: - platform: template sensors: nonsmoker: - entity_id: now.strptime value_template: '{{ (( as_timestamp(now()) - as_timestamp(strptime("06.07.2018", "%d.%m.%Y")) ) / 86400 ) | round(2) }}' + entity_id: [] friendly_name: 'Not smoking' unit_of_measurement: "Days" -``` -{% endraw %} -Note: If a template uses more than one sensor they can be listed - - -The alternative to this is to create an `Automation`using the new (81.0) service `homeassistant.update_entity` and list all entity's requiring updates and setting the interval based on time. - -{% raw %} -```yaml automation: - alias: 'nonsmoker_update' trigger: - platform: time - minutes: '/1' + minutes: '/5' + seconds: 0 action: - service: homeassistant.update_entity entity_id: sensor.nonsmoker diff --git a/source/_components/sensor.transport_nsw.markdown b/source/_components/sensor.transport_nsw.markdown index 9ddf794d069..8296ffdedea 100644 --- a/source/_components/sensor.transport_nsw.markdown +++ b/source/_components/sensor.transport_nsw.markdown @@ -14,15 +14,19 @@ ha_release: 0.81 --- -The `transport_nsw` sensor will give you the time until the next departure from a Transport NSW stop (bus, train or ferry). +The `transport_nsw` sensor will give you the time until the next departure from a Transport NSW stop for bus, train, light rail or ferry. -Get your free API key from [Transport NSW](https://opendata.transport.nsw.gov.au/). +## {% linkable_title Setup %} -In order to find the stop id, just go to Google maps and click on the bus/train/ferry stop. It will give you there the stop ID. +Prerequisite is a free API key from [Transport NSW](https://opendata.transport.nsw.gov.au/). -You can define a bus line, but if you don’t do it, the sensor will pick up the next stop event from any line servicing this stop. +In order to find your stop id, go to Google maps and click on any bus/train/ferry stop. The pop up window shows the stop ID underneath the station name. For train stations the easist way to get a stop id for a platform is through [Transport NSW Info](https://transportnsw.info/). -Then add the data to your `configuration.yaml` file as shown in the example: +As a default the sensor picks up the next mode of transport leaving from a stop id. + +## {% linkable_title Configuration %} + +To enable the sensor, add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -34,15 +38,19 @@ sensor: {% configuration %} api_key: - description: Your API key for Open Data Transport NSW + description: Your API key for Open Data Transport NSW. required: true type: string stop_id: - description: The ID of the stop to get the information for + description: The ID of the stop to get the information for. required: true type: string route: - description: Only show a single bus route at the stop. This is the same as the bus number, e.g., `83` + description: Filter on bus route at the stop. This is the same as the bus number, e.g., `83`. + required: false + type: string +destination: + description: Useful for ferry or train stops to filter the destination of the sensor, e.g. `Circular Quay`. required: false type: string name: @@ -51,4 +59,46 @@ name: type: string {% endconfiguration %} -The public information is coming from [Transport NSW](https://opendata.transport.nsw.gov.au/). +The public information is provided from [Transport NSW](https://opendata.transport.nsw.gov.au/). + +## {% linkable_title Examples %} + +More example configurations for bus or ferry. + +```yaml +# Example bus route configuration.yaml entry +sensor: + - platform: transport_nsw + name: 'Bus' + stop_id: '209516' + route: '199' + api_key: 'YOUR API KEY' +``` + +```yaml +# Example ferry configuration.yaml entry +sensor: + - platform: transport_nsw + name: 'Ferry' + stop_id: '10102008' + destination: 'Circular Quay' + api_key: 'YOUR API KEY' +``` + +The sensor returns n/a if no stop event is found within the next 24h. A `template` sensor can help building a more meaninful string. + +{% raw %} +```yaml +# Sample template sensor +- platform: template + sensors: + busmonitor: + friendly_name: "Bus Mon 199" + value_template: >- + {% if is_state_attr('sensor.bus', 'due', 'n/a') %} + No schedule found + {% else %} + {{ states.sensor.bus.attributes.route }} in {{ states.sensor.bus.attributes.due }}m ({{ states.sensor.bus.attributes.delay }}) + {% endif %} +``` +{% endraw %} diff --git a/source/_components/sensor.twitch.markdown b/source/_components/sensor.twitch.markdown index 660488a7675..abeb4b6571f 100644 --- a/source/_components/sensor.twitch.markdown +++ b/source/_components/sensor.twitch.markdown @@ -35,7 +35,7 @@ sensor: ``` {% configuration %} -clientid: +client_id: description: Your Twitch client ID. required: true type: string diff --git a/source/_components/sensor.uk_transport.markdown b/source/_components/sensor.uk_transport.markdown index b08b42895f9..ce0d0e813b0 100644 --- a/source/_components/sensor.uk_transport.markdown +++ b/source/_components/sensor.uk_transport.markdown @@ -147,4 +147,8 @@ And the template sensor for viewing the next bus attributes. value_template: {% raw %}'{{states.sensor.next_bus_to_wantage.attributes.next_buses[0].estimated}}'{% endraw %} ``` +## {% linkable_title Managing API requests %} + +If you wish to manage the rate of API requests (e.g., to disable requests when you aren't interested in travel, so that you can request updates more frequently when you do travel) set a really long `scan_interval` in the config options, and use the service `homeassistant.update_entity` to request the update of an entity, rather than waiting for the next scheduled update. + Powered by [transportAPI](http://www.transportapi.com/) diff --git a/source/_components/sensor.ups.markdown b/source/_components/sensor.ups.markdown index fe1ae61a91a..0c78dac2067 100644 --- a/source/_components/sensor.ups.markdown +++ b/source/_components/sensor.ups.markdown @@ -48,3 +48,7 @@ Configuration options for the UPS 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. +

diff --git a/source/_components/sensor.version.markdown b/source/_components/sensor.version.markdown index 92437ab87a8..10ce29b4ac3 100644 --- a/source/_components/sensor.version.markdown +++ b/source/_components/sensor.version.markdown @@ -14,11 +14,11 @@ ha_release: 0.52 ha_qa_scale: internal --- -The `version` sensor platform is displaying the current version of Home Assistant in the frontend. +The `version` sensor platform that can display the current Home Assistant versions. ## {% linkable_title Configuration %} -To enable this sensor, add the following lines to your `configuration.yaml` file for a GET request: +To enable this sensor, add the following lines to your `configuration.yaml`: ```yaml # Example configuration.yaml entry @@ -31,10 +31,29 @@ name: description: Name to use in the frontend. required: false type: string - default: Current Version + default: "`Current Version` in case of `source: local`, `Latest Version` otherwise" +beta: + description: Flag to indicate that it will check for beta versions, only supported for the sources `pypi`, `hassio` and `docker`. + required: false + type: boolean + default: false +image: + description: The image you want to check against, this is only supported for `hassio`, see full list under. + required: false + type: string + default: default +source: + description: The source you want to check against, possible values are `local`, `pypi`, `hassio` and `docker`. + required: false + type: string + default: local {% endconfiguration %} -## {% linkable_title Alternatives %} +### {% linkable_title Supported images for Hassio %} + +`default`, `qemux86`, `qemux86-64`, `qemuarm`, `qemuarm-64`, `intel-nuc`, `raspberrypi`, `raspberrypi2`, `raspberrypi3`, `raspberrypi3-64`, `tinker`, `odroid-c2`, `odroid-xu` + +## {% linkable_title Alternatives for showing local version %} This sensor is an alternative to the existing solutions to achieve the same result through various platforms. @@ -56,7 +75,7 @@ sensor: command: "/home/homeassistant/bin/hass --version" ``` -It's also possible to ready a file called `.HA_VERSION` which is located in your +It's also possible to read a file called `.HA_VERSION` which is located in your Home Assistant [configuration](/docs/configuration/) folder. ```yaml @@ -68,7 +87,7 @@ sensor: You might think that a [`rest` sensor](/components/sensor.rest/) could work, too, -but it will not as Home Assistant is not ready when the sensor get initialized. +but it will not as Home Assistant is not ready when the sensor gets initialized. {% raw %} ```yaml diff --git a/source/_components/sensor.waterfurnace.markdown b/source/_components/sensor.waterfurnace.markdown new file mode 100644 index 00000000000..12545ff5a61 --- /dev/null +++ b/source/_components/sensor.waterfurnace.markdown @@ -0,0 +1,17 @@ +--- +layout: page +title: "WaterFurnace Sensors" +description: "Instructions on how to integrate WaterFurnace Geothermal System sensors into Home Assistant." +date: 2018-01-19 17:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: waterfurnace.png +ha_category: Sensor +ha_release: 0.62 +ha_iot_class: "Cloud Polling" +--- + +Integrates WaterFurnace sensors into Home Assistant. See the [main component](/components/waterfurnace/) for configuration instructions. + diff --git a/source/_components/sensor.wsdot.markdown b/source/_components/sensor.wsdot.markdown index 553eea2ba09..f3f911a94bf 100644 --- a/source/_components/sensor.wsdot.markdown +++ b/source/_components/sensor.wsdot.markdown @@ -13,10 +13,14 @@ ha_iot_class: "Cloud Polling" ha_release: 0.37 --- -The `wsdot` sensor will give you travel time information from the [Washington State Department of Transportation (WSDOT)](http://wsdot.com/). +The `wsdot` sensor will give you travel time information from the [Washington State Department of Transportation (WSDOT)](http://wsdot.com/). + +## {% linkable_title Setup %} First, you need to get a free Traveler Information `api_key` from the [WSDOT API webpage](http://wsdot.com/traffic/api/). Just enter your email address to instantly get the key. +## {% linkable_title Configuration %} + Once you have the code, create `wsdot` sensors by editing your `configuration.yaml` file as follows: ```yaml @@ -29,13 +33,26 @@ sensor: name: I-90 Eastbound HOV ``` -Configuration variables: - -- **api_key** (*Required*): Your `api_key` from WSDOT. -- **scan_interval** (*Optional*): How frequently to query for new data. Default: 3 minutes. -- **travel_time** array (*Required*): List of routes. - - **id** (*Required*): Name of the route. - - **name** (*Optional*): Name of the route. Default just uses `id`. +{% configuration %} +api_key: + description: Your API key from WSDOT. + required: true + type: string +travel_time: + description: List of routes. + required: true + type: list + keys: + id: + description: ID of the route. + required: true + type: string + name: + description: Name of the route. + required: false + default: Just uses `id` + type: string +{% endconfiguration %} Figuring out which Travel Time ID (`id`) is associated with your routes is a bit of a challenge. If you visit `http://wsdot.com/Traffic/api/TravelTimes/TravelTimesREST.svc/GetTravelTimesAsJson?AccessCode=[your_api_key_here]` substituting your `api_key`, you will get a list of all available routes. Search through it and then find the key `TravelTimeID`. That tells you the number you need. @@ -44,7 +61,7 @@ Some common examples include: ```text 73 Issaquah-Seattle (WB PM) 74 Seattle-Issaquah (EB AM) - 75 HOV Issaquah-Seattle (WB REV) + 75 HOV Issaquah-Seattle (WB REV) 76 Issaquah-Seattle (WB REV) 77 HOV Redmond-Seattle (WB PM) 78 HOV Seattle-Redmond (EB AM) diff --git a/source/_components/sensor.wunderground.markdown b/source/_components/sensor.wunderground.markdown index 954384eb9fe..a8b1b2ffa11 100644 --- a/source/_components/sensor.wunderground.markdown +++ b/source/_components/sensor.wunderground.markdown @@ -16,7 +16,7 @@ ha_iot_class: "Cloud Polling" The `wunderground` platform uses [Weather Underground](http://www.wunderground.com) as a source for current weather information.

-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.

diff --git a/source/_components/sensor.yahoo_finance.markdown b/source/_components/sensor.yahoo_finance.markdown deleted file mode 100644 index 2317cdc1c27..00000000000 --- a/source/_components/sensor.yahoo_finance.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: page -title: "Yahoo Finance" -description: "Instructions on how to setup Yahoo Finance within Home Assistant." -date: 2016-09-18 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: yahoo_finance.png -ha_category: Finance -ha_iot_class: "Cloud Polling" -featured: false -ha_release: 0.29 ---- - -

- 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_finance` platform uses [Yahoo Finance](https://finance.yahoo.com/) to monitor the stock market. - -## {% linkable_title Configuration %} - -To enable the `yahoo_finance` platform, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: yahoo_finance -``` - -{% configuration %} -name: - description: The name of the sensor. - required: false - type: string - default: Yahoo Stock -symbols: - description: List of stock market symbols for given companies. - required: false - type: string, list - default: YHOO -{% endconfiguration %} - -## {% linkable_title Examples %} - -In this section you find some real-life examples of how to use this sensor. - -### {% linkable_title Red Hat and Google %} - -```yaml -sensor: - - platform: yahoo_finance - symbols: - - RHT - - GOOGL -``` diff --git a/source/_components/sensor.yweather.markdown b/source/_components/sensor.yweather.markdown index befc4a37d5e..9c28369fca4 100644 --- a/source/_components/sensor.yweather.markdown +++ b/source/_components/sensor.yweather.markdown @@ -13,6 +13,9 @@ ha_release: 0.24 ha_iot_class: "Cloud Polling" --- +

+The Yahoo Weather API is being [retired](https://developer.yahoo.com/weather/?guccounter=1). A replacement is the [`darksky` sensor](/components/sensor.darksky/). +

The `yweather` platform uses [Yahoo Weather](https://www.yahoo.com/news/weather/) as a source for current meteorological data. The `forecast` will show you the condition for 5 days, 0 is the current day. You can use only `weather`, `temp_min`, and `temp_max` with forecast. It's important to note that a yweather sensor will only show ONE days forecast at a time so to show multiple days forecasts, you will need to use the 'name:' option and give each sensor a unique name. diff --git a/source/_components/shell_command.markdown b/source/_components/shell_command.markdown index bb280f91220..15f81dea59d 100644 --- a/source/_components/shell_command.markdown +++ b/source/_components/shell_command.markdown @@ -25,12 +25,14 @@ shell_command: restart_pow: touch ~/.pow/restart.txt ``` -Configuration variables: +{% configuration %} +alias: + description: Give the shell command a name (alias) as a variable and set the command you want to execute after the colon. e.g., `alias`:`the shell command you want to execute`. + required: true + type: string +{% endconfiguration %} - - Alias for the command - - Command itself. - -The commands can be dynamic, using templates to insert values for arguments. When using templates, shell_command runs in a more secure environment which doesn't allow any shell helpers like automatically expanding the home dir `~` or using pipe symbols to run multiple commands. +The commands can be dynamic, using templates to insert values for arguments. When using templates, shell_command runs in a more secure environment which doesn't allow any shell helpers like automatically expanding the home dir `~` or using pipe symbols to run multiple commands. Similarly, only content after the first space can be generated by a template. This means the command name itself cannot be generated by a template, but it must be literally provided. Any service data passed into the service call to activate the shell command will be available as a variable within the template. @@ -54,7 +56,7 @@ input_number: min: 18 max: 32 step: 1 - + {% raw %} shell_command: set_ac_to_slider: 'irsend SEND_ONCE DELONGHI AC_{{ states.input_number.ac_temperature.state }}_AUTO' diff --git a/source/_components/smhi.markdown b/source/_components/smhi.markdown index e2a7d2dd440..03f7bca7850 100644 --- a/source/_components/smhi.markdown +++ b/source/_components/smhi.markdown @@ -7,7 +7,6 @@ sidebar: true comments: false sharing: true footer: true -featured: true logo: smhi.png ha_category: Hub ha_release: 0.81 diff --git a/source/_components/snips.markdown b/source/_components/snips.markdown index 9a03d1c9d36..96696c36d84 100644 --- a/source/_components/snips.markdown +++ b/source/_components/snips.markdown @@ -167,8 +167,6 @@ In the above example, the slots are plain strings. However, Snips has a duration In this example if we had an intent triggered with 'Set a timer for five minutes', `duration:` would equal 300 and `duration_raw:` would be set to 'five minutes'. The duration can be easily used to trigger Home Assistant events and the `duration_raw:` could be used to send a human readable response or alert. -In this example if we had an intent triggered with 'Set a timer for five minutes', duration would equal 300 and duration_raw would be set to 'five minutes'. The duration can be easily used to trigger HA events, and the duration_raw could be used to send a human readable response or alert. - {% raw %} ```yaml SetTimer: diff --git a/source/_components/sonos.markdown b/source/_components/sonos.markdown index 5d3c70c88f7..3cbd64e519e 100644 --- a/source/_components/sonos.markdown +++ b/source/_components/sonos.markdown @@ -134,3 +134,10 @@ sonos: - 192.0.2.26 - 192.0.2.27 ``` + +## {% linkable_title Additional information %} + +This component is using the [SoCo](https://github.com/SoCo/SoCo) project. + +To be able to support the Sonos components and features it is mandatory to have TCP port 1400 opened. This port is used to receive events about changes on the Sonos network. For more details please see the [SoCo documentation](https://github.com/SoCo/SoCo) and source code of the SoCo project. + diff --git a/source/_components/splunk.markdown b/source/_components/splunk.markdown index 06eefe86577..d7efdaa556d 100644 --- a/source/_components/splunk.markdown +++ b/source/_components/splunk.markdown @@ -14,12 +14,14 @@ ha_release: 0.13 The `splunk` component makes it possible to log all state changes to an external [Splunk](http://splunk.com/) database using Splunk's HTTP Event Collector (HEC) feature. You can either use this alone, or with the Home Assistant for Splunk [app](https://github.com/miniconfig/splunk-homeassistant). Since the HEC feature is new to Splunk, you will need to use at least version 6.3. +## {% linkable_title Configuration %} + To use the `splunk` component in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry splunk: - token: B4415DFF-683C-5C6C-3994-4F6D4A5DB03A + token: YOUR_SPLUNK_TOKEN ``` {% configuration %} @@ -28,7 +30,7 @@ token: required: true type: string host: - description: "IP address or host name of your Splunk host e.g., 192.168.1.10." + description: "IP address or host name of your Splunk host, e.g., 192.168.1.10." required: false default: localhost type: string @@ -42,6 +44,11 @@ ssl: required: false default: false type: boolean +verify_ssl: + description: Allows you do disable checking of the SSL certificate. + required: false + default: false + type: boolean name: description: This parameter allows you to specify a friendly name to send to Splunk as the host, instead of using the name of the HEC. required: false diff --git a/source/_components/sun.markdown b/source/_components/sun.markdown index d56854b01b2..cc2f933d70b 100644 --- a/source/_components/sun.markdown +++ b/source/_components/sun.markdown @@ -14,7 +14,10 @@ ha_qa_scale: internal The sun component will use your current location to track if the sun is above or below the horizon. The sun can be used within automation as -[a trigger with an optional offset to simulate dawn/dusk](/getting-started/automation-trigger/#sun-trigger). +[a trigger with an optional offset to simulate dawn/dusk][sun_trigger] or as [a condition with an optional offset to test if the sun has already set or risen][sun_condition]. + +[sun_trigger]: /docs/automation/trigger/#sun-trigger +[sun_condition]: /docs/scripts/conditions/#sun-condition ```yaml # Example configuration.yaml entry diff --git a/source/_components/switch.arest.markdown b/source/_components/switch.arest.markdown index a6a61d7ae98..5b7d762d92b 100644 --- a/source/_components/switch.arest.markdown +++ b/source/_components/switch.arest.markdown @@ -29,7 +29,7 @@ switch: name: Fan 13: name: Switch - invert: True + invert: true ``` If you want to use custom functions, then add the following to your `configuration.yaml` file: diff --git a/source/_components/switch.broadlink.markdown b/source/_components/switch.broadlink.markdown index 985e4d80b2d..844e6c9715e 100644 --- a/source/_components/switch.broadlink.markdown +++ b/source/_components/switch.broadlink.markdown @@ -239,3 +239,54 @@ Not every code works. 8. Convert the HEX codes to base64 Use [this](http://tomeko.net/online_tools/hex_to_base64.php?lang=en1) tool to convert the hex codes to base64 for use with Home Assistant. + +### {% linkable_title Using iOS and Windows to Obtain Codes %} + +1. Use the E-Control app to learn the codes from all of your suitable remotes. Depending on the remote, try to add useful names for the buttons and/or the remotes. This will mean that you should only have to run this process once and will help with getting them quickly into Home Assistant. Dump the files in the app by navigating to the hamburger icon, select `share and select`, then choose `Share to other phones on WLAN`. + +2. Install Requirements + +- Download and install Python 2.7 on your windows PC. +- Run `pip install simplejson`. You must install simplejson in the same python version you will use to run the scripts. You can ensure that the current version is installed by attempting to install again and confirming that you see "Requirement already satisfied". +- Download and install [iBackup Viewer](http://www.imactools.com/iphonebackupviewer/). +- Download [these](https://github.com/NightRang3r/Broadlink-e-control-db-dump) github files. Make sure you place them in the \Python27 path in Windows. Be sure that the getBroadlinkSharedData.py from the download is in this directory. + +3. Plug your iphone into your windows PC, open iTunes and create a non-encrypted backup of your device. + +4. Open iBackup viewer then select the iOS backup that you created. Navigate to the App icon and then scroll until you find e-control.app, select this. Select and extract the files jsonButton, jsonIrCode and jsonSublr; they will be located in the Documents/SharedData section. Put these in the same location as the getBroadlinkSharedData.py. + +5. Now open a Command Prompt and navigate to the directory where the aforementioned files are located e.g. C:\Python27. Now run the command python getBroadlinkSharedData.py, you should see something like this: +```C:\Python27>python getBroadlinkSharedData.py +ID: 1 | Name: TV +ID: 2 | Name: Upstairs +ID: 3 | Name: Sort in order +ID: 4 | Name: Soundbar +ID: 5 | Name: TV +ID: 6 | Name: Xbox One +ID: 7 | Name: User-Defined Aircon +ID: 8 | Name: Sort in order +ID: 9 | Name: User-Defined Aircon +ID: 10 | Name: Kids Fan +ID: 11 | Name: Downstairs +ID: 12 | Name: Ceiling Fan +ID: 13 | Name: Samsung TV +ID: 14 | Name: Xbox One +ID: 15 | Name: SONY SoundBar +ID: 16 | Name: Fire TV +ID: 17 | Name: New RF Remote +``` + +6. Select the remote ID you would like to extract: +```Select accessory ID: 5 +[+] You selected: TV +[+] Dumping codes to TV.txt +``` + +7. Now there should be a file with the name of the remote you chose in the same directory ending in `.txt`. Open that up and it will contain the Base64 code required for Home Assistant. To ensure these codes work correctly you may need to add `==` to the end of the code in your config.yaml file (or wherever you have your switches). + +### {% linkable_title Using Windows to Obtain Codes with Broadlink Manager %} + +1. Install Broadlink Manager from this SourceForge link [here](https://sourceforge.net/projects/broadlink-manager/). +2. Open the application and hit "scan" to activate your broadlink device. +3. Hit "Learn New Command" and follow instructions on screen. +4. The "OnRawData Base64" is the value to be used with Home Assistant. diff --git a/source/_components/switch.doorbird.markdown b/source/_components/switch.doorbird.markdown index fcd862aa901..f2da16e9629 100644 --- a/source/_components/switch.doorbird.markdown +++ b/source/_components/switch.doorbird.markdown @@ -13,7 +13,7 @@ ha_release: "0.54" ha_iot_class: "Local Push" --- -The `doorbird` switch platform allows you to power relays in your [DoorBird](http://www.doorbird.com/) video doorbell device. +The `doorbird` switch platform allows you to power connected relays and trigger the IR array in your [DoorBird](http://www.doorbird.com/) video doorbell device.

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. +

\ No newline at end of file diff --git a/source/components/switch.linode.markdown b/source/_components/switch.linode.markdown similarity index 100% rename from source/components/switch.linode.markdown rename to source/_components/switch.linode.markdown diff --git a/source/_components/switch.lupusec.markdown b/source/_components/switch.lupusec.markdown new file mode 100644 index 00000000000..f17202f7cfa --- /dev/null +++ b/source/_components/switch.lupusec.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Lupusec Switch" +description: "Instructions on how to integrate Lupusec switches into Home Assistant." +date: 2018-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lupusec.png +ha_category: Switch +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 component will automatically add `Power Switches` configured in your Lupusec control panel. + +For the switches to work you have to setup your [`lupusec` component](/components/lupusec/). diff --git a/source/_components/switch.lutron.markdown b/source/_components/switch.lutron.markdown new file mode 100644 index 00000000000..11ce9f1611f --- /dev/null +++ b/source/_components/switch.lutron.markdown @@ -0,0 +1,16 @@ +--- +layout: page +title: "Lutron Switch" +description: "Instructions on how to setu p the Lutron switches within Home Assistant." +date: 2018-10-09 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lutron.png +ha_category: Switch +ha_iot_class: "Local Polling" +ha_release: 0.85 +--- + +To get your Lutron switches working with Home Assistant, follow the instructions for the general [Lutron component](/components/lutron/). diff --git a/source/_components/switch.modbus.markdown b/source/_components/switch.modbus.markdown index 60ce92daadd..c6219ed3ee1 100644 --- a/source/_components/switch.modbus.markdown +++ b/source/_components/switch.modbus.markdown @@ -86,7 +86,7 @@ register: verify_state: description: Define if is possible to readback the status of the switch. required: false - default: True + default: true type: boolean verify_register: description: Register to readback. diff --git a/source/_components/switch.mqtt.markdown b/source/_components/switch.mqtt.markdown index b5f978a0adf..461785439d6 100644 --- a/source/_components/switch.mqtt.markdown +++ b/source/_components/switch.mqtt.markdown @@ -33,6 +33,10 @@ switch: ``` {% configuration %} +command_topic: + description: The MQTT topic to publish commands to change the switch state. + required: false + type: string name: description: The name to use when displaying this switch. required: false @@ -56,10 +60,6 @@ state_off: required: false type: string default: "OFF" -command_topic: - description: The MQTT topic to publish commands to change the switch state. - required: false - type: string availability_topic: description: The MQTT topic subscribed to receive availability (online/offline) updates. required: false @@ -104,12 +104,12 @@ value_template: required: false type: string device: - description: 'Information about the device this switch 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 switch 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: @@ -117,19 +117,19 @@ device: required: false type: list 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 %} @@ -140,7 +140,7 @@ Make sure that your topic matches exactly. `some-topic/` and `some-topic` are di ## {% linkable_title Examples %} -In this section you will find some real-life examples of how to use this sensor. +In this section, you will find some real-life examples of how to use this sensor. ### {% linkable_title Full configuration %} @@ -163,20 +163,20 @@ switch: retain: true ``` -For a check you can use the command line tools `mosquitto_pub` shipped with `mosquitto` to send MQTT messages. This allows you to operate your switch manually: +For a check, you can use the command line tools `mosquitto_pub` shipped with `mosquitto` to send MQTT messages. This allows you to operate your switch manually: ```bash -$ mosquitto_pub -h 127.0.0.1 -t home/bedroom/switch1 -m "ON" +mosquitto_pub -h 127.0.0.1 -t home/bedroom/switch1 -m "ON" ``` ### {% linkable_title Set 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". There is no further configuration needed as the [GPIOs](https://www.letscontrolit.com/wiki/index.php/GPIO) can be controlled with MQTT directly. +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". There is no further configuration needed as the [GPIOs](https://www.letscontrolit.com/wiki/index.php/GPIO) can be controlled with MQTT directly. Manually you can set pin 13 to high with `mosquitto_pub` or another MQTT tool: ```bash -$ mosquitto_pub -h 127.0.0.1 -t home/bathroom/gpio/13 -m "1" +mosquitto_pub -h 127.0.0.1 -t home/bathroom/gpio/13 -m "1" ``` The configuration will look like the example below: @@ -193,4 +193,3 @@ switch: payload_off: "0" ``` {% endraw %} - diff --git a/source/_components/switch.mysensors.markdown b/source/_components/switch.mysensors.markdown index 91d5c2e17aa..d2bbb9a26af 100644 --- a/source/_components/switch.mysensors.markdown +++ b/source/_components/switch.mysensors.markdown @@ -15,9 +15,11 @@ ha_iot_class: "Local Push" Integrates MySensors switches into Home Assistant. See the [main component] for configuration instructions. +## {% linkable_title Supported actuator types %} + The following actuator types are supported: -##### MySensors version 1.4 and higher +### {% linkable_title MySensors version 1.4 and higher %} S_TYPE | V_TYPE ---------|------------------- @@ -28,7 +30,7 @@ S_LIGHT | V_LIGHT S_LOCK | V_LOCK_STATUS S_IR | V_IR_SEND, V_LIGHT -##### MySensors version 1.5 and higher +### {% linkable_title MySensors version 1.5 and higher %} S_TYPE | V_TYPE -------------|---------------------- @@ -40,7 +42,7 @@ S_SOUND | V_ARMED S_VIBRATION | V_ARMED S_MOISTURE | V_ARMED -##### MySensors version 2.0 and higher +### {% linkable_title MySensors version 2.0 and higher %} S_TYPE | V_TYPE ----------------|--------- @@ -50,7 +52,7 @@ All V_TYPES for each S_TYPE above are required to activate the actuator for the For more information, visit the [serial api] of MySensors. -### {% linkable_title Services %} +## {% linkable_title Services %} The MySensors switch platform exposes a service to change an IR code attribute for an IR switch device and turn the switch on. The IR switch will automatically be turned off after being turned on, if `optimistic` is set to `true` in the [config](/components/mysensors/#configuration) for the MySensors component. This will simulate a push button on a remote. If `optimistic` is `false`, the MySensors device will have to report its updated state to reset the switch. See the [example sketch](#ir-switch-sketch) for the IR switch below. @@ -63,7 +65,7 @@ The service can be used as part of an automation script. For example: ```yaml # Example configuration.yaml automation entry automation: - - alias: turn hvac on + - alias: Turn HVAC on trigger: platform: time at: '5:30:00' @@ -73,7 +75,7 @@ automation: data: V_IR_SEND: '0xC284' # the IR code to send - - alias: turn hvac off + - alias: Turn HVAC off trigger: platform: time at: '0:30:00' @@ -84,9 +86,10 @@ automation: V_IR_SEND: '0xC288' # the IR code to send ``` -### {% linkable_title Example sketches %} +## {% linkable_title Example sketches %} + +### {% linkable_title Switch sketch %} -#### {% linkable_title Switch sketch %} ```cpp /* * Documentation: http://www.mysensors.org @@ -131,7 +134,8 @@ void incomingMessage(const MyMessage &message) } ``` -#### {% linkable_title IR switch sketch %} +### {% linkable_title IR switch sketch %} + ```cpp /* * Documentation: http://www.mysensors.org diff --git a/source/_components/switch.mystrom.markdown b/source/_components/switch.mystrom.markdown index 8d2f93dc439..1d7627af32f 100644 --- a/source/_components/switch.mystrom.markdown +++ b/source/_components/switch.mystrom.markdown @@ -13,8 +13,7 @@ ha_release: 0.9 ha_iot_class: "Local Polling" --- - -The `mystrom` switch platform allows you to control the state of your [myStrom](https://mystrom.ch/en/) switches. The built-in sensor is measuring the power consumption while the switch is on. +The `mystrom` switch platform allows you to control the state of your [myStrom](https://mystrom.ch/en/) switches. The built-in sensor is measuring the power consumption while the switch is on. ## {% linkable_title Setup %} @@ -24,7 +23,6 @@ Make sure that you have enabled the REST API under **Advanced** in the web front

- ## {% linkable_title Configuration %} To use your myStrom switch in your installation, add the following to your `configuration.yaml` file: @@ -53,18 +51,18 @@ Check if you are able to access the device located at `http://IP_ADRRESS`. The d ```bash $ curl -X GET -H "Content-Type: application/json" http://IP_ADDRESS/report { - "power": 0, - "relay": false + "power": 0, + "relay": false } ``` or change its state: ```bash -$ curl -G -X GET http://IP_ADDRESS/relay -d 'state=1' +curl -G -X GET http://IP_ADDRESS/relay -d 'state=1' ``` -### {% linkable_title Get the current power consumption %} +## {% linkable_title Get the current power consumption %} The switch is measuring the current power consumption. To expose this as a sensor use a [`template` sensor](/components/sensor.template/). @@ -80,4 +78,3 @@ sensor: value_template: "{{ states.switch.office.attributes.current_power_w }}" ``` {% endraw %} - diff --git a/source/_components/switch.pencom.markdown b/source/_components/switch.pencom.markdown new file mode 100644 index 00000000000..7718b88d2a7 --- /dev/null +++ b/source/_components/switch.pencom.markdown @@ -0,0 +1,69 @@ +--- +layout: page +title: "Pencom" +description: "How to use Pencom Designs 8 channel relay boards." +date: 2018-10-05 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: pencom.png +ha_category: Switch +ha_release: 0.85 +ha_iot_class: "Local Polling" +--- + +[Pencom Design](http://www.pencomdesign.com/) is a manufacturer of computer-controlled relay, I/O and custom boards for commercial and industrial applications. This interface to [Pencom's Relay Control Boards](https://www.pencomdesign.com/relay-boards/) is designed to work over an ethernet to serial adapter (NPort). Each switch (relay) can be turned on/off, and the state of the relay can be read. + +## {% linkable_title Configuration %} + +The Pencom relays can be daisy-chained to allow for up to 8 boards. + +``` yaml +# Example configuration.yaml entry +switch: + - platform: pencom + host: host.domain.com + port: 4001 + boards: 2 + relays: + - name: "Irrigation" + addr: 0 + - name: "Upper Entry Door" + addr: 1 + - name: "Fountain" + addr: 0 + board: 2 +``` + +{% configuration %} +host: + description: The IP address of the ethernet to serial adapter. 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 (positive integer between 1-65535) +boards: + description: Number of boards daisy-chained together (default is 1). + required: false + type: int between 1 and 8 +relays: + description: List of relays. + required: true + type: list + keys: + name: + description: The name of the switch (component). + required: true + type: string + addr: + description: The relay on the board starting with 0. + required: true + type: int + board: + description: The board number (defaults to 1). + required: false + type: int between 1 and 8 +{% endconfiguration %} diff --git a/source/_components/switch.qwikswitch.markdown b/source/_components/switch.qwikswitch.markdown index 805e47d5fe5..7307fefd74b 100644 --- a/source/_components/switch.qwikswitch.markdown +++ b/source/_components/switch.qwikswitch.markdown @@ -13,7 +13,6 @@ ha_iot_class: "Local Push" ha_release: "0.20" --- - The `qwikswitch` platform allows you to control your [QwikSwitch](http://www.qwikswitch.co.za/) relays as switches from within Home Assistant. If the device name in the QS Mobile application ends with `Switch` it will be created as a switch, otherwise as a [light](/components/light.qwikswitch/). diff --git a/source/_components/switch.rainmachine.markdown b/source/_components/switch.rainmachine.markdown index 982220ccacb..a098979275a 100644 --- a/source/_components/switch.rainmachine.markdown +++ b/source/_components/switch.rainmachine.markdown @@ -14,10 +14,10 @@ ha_release: 0.51 --- The `rainmachine` switch platform allows you to control programs and zones -within a [RainMachine smart Wi-Fi sprinkler controller](http://www.rainmachine.com/). +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, switches will automatically appear.

@@ -28,8 +28,7 @@ After Home Assistant loads, new switches will be added for every enabled program and zone. These work as expected: - Program On/Off: starts/stops a program -- Zone On/Off: starts/stops a zone (using the `zone_run_time` parameter to -determine how long to run for) +- Zone On/Off: starts/stops a zone (using the `zone_run_time` parameter to determine how long to run for) Programs and zones are linked. While a program is running, you will see both the program and zone switches turned on; turning either one off will turn the diff --git a/source/_components/switch.raspihats.markdown b/source/_components/switch.raspihats.markdown index 37f31ad59a4..7cd9fccddfd 100644 --- a/source/_components/switch.raspihats.markdown +++ b/source/_components/switch.raspihats.markdown @@ -13,12 +13,11 @@ ha_release: 0.45 ha_iot_class: "Local Push" --- - -The `raspihats` switch platform allows you to control the digital outputs of your [raspihats](http://www.raspihats.com/) boards. +The `raspihats` switch platform allows you to control the digital outputs of your [Raspihats](http://www.raspihats.com/) boards. ## {% linkable_title Configuration %} -To use your raspihats boards in your installation, add the following to your `configuration.yaml` file: +To use your Raspihats boards in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -96,12 +95,12 @@ $ sudo apt-get install build-essential libi2c-dev i2c-tools python-dev libffi-de $ sudo usermod -a -G i2c homeassistant ``` -### {% linkable_title Check the i2c address of the sensor %} +## {% linkable_title Check the i2c address of the sensor %} After installing `i2c-tools`, a new utility is available to scan the addresses of the connected sensors, so you can see the sensor address: ```bash -$ /usr/sbin/i2cdetect -y 1 +/usr/sbin/i2cdetect -y 1 ``` It will output a table like this: diff --git a/source/_components/switch.raspyrfm.markdown b/source/_components/switch.raspyrfm.markdown new file mode 100644 index 00000000000..464ec8f5af5 --- /dev/null +++ b/source/_components/switch.raspyrfm.markdown @@ -0,0 +1,123 @@ +--- +layout: page +title: "RaspyRFM Switch" +description: "Instructions on how to integrate RaspyRFM switches into Home Assistant." +date: 2018-12-08 +sidebar: true +comments: false +sharing: true +footer: true +logo: seegelsysteme.png +ha_category: Switch +ha_release: 0.85 +ha_iot_class: "Assumed State" +--- + +The `raspyrfm` component adds support for cheap RC 433 MHz outlets via one of the supported gateways. + +Initially, this component was created to support the Simple Solutions `ConnAir` gateway which has been discontinued. There are custom alternatives that reimplemented the protocol used by the ConnAir though like this [ConnAir emulator](https://github.com/Phunkafizer/RaspyRFM/blob/master/connair.py) which can be used in conjunction with the [RaspyRFM-II](https://www.seegel-systeme.de/produkt/raspyrfm-ii) RC module for a Raspberry Pi. + +Other vendors of 433 MHz RC outlets have also created gateways that use a very similar protocol and can also be used with this component like the Intertechno [ITGW-433 LAN Gateway](https://www.intertechno24.de/LAN-Gateway/Gateway-ITGW-433.html). + +## {% linkable_title Configuration %} + +```yaml +# Example configuration.yaml entry +switch: + platform: raspyrfm + switches: + - controlunit_manufacturer: Intertechno + controlunit_model: CMR 1000 + channel_config: # Note that keys used here vary between control units + master: A + slave: 1 +``` + +{% configuration %} +gateway_manufacturer: + description: Manufacturer of the gateway. + required: false + default: Seegel Systeme + type: string +gateway_model: + description: Model of the gateway. + required: false + default: RaspyRFM + type: string +host: + description: Host of the gateway. + required: false + default: 127.0.0.1 + type: string +host: + description: Port of the gateway. + required: false + default: depends on the gateway model + type: integer +switches: + description: List of switches that can be controlled with this gateway. + required: true + type: list + keys: + name: + description: Name for the device. + required: false + default: Unnamed Device + type: string + controlunit_manufacturer: + description: Manufacturer of the control unit. + required: true + type: string + controlunit_model: + description: Model of the control unit. + required: true + type: string + channel_config: + description: Channel configuration of the control unit. The exact keys needed depend on the control unit manufacturer and model. + required: true + type: dict +{% endconfiguration %} + +## {% linkable_title Device support %} + +Have a look at the underlying library [raspyrfm-client](https://github.com/markusressel/raspyrfm-client) to check what gateways and control units (outlets) are supported. + +## {% linkable_title Channel configuration %} + +Depending on the control unit the channel config can have varying formats. Have a look at the underlying library [raspyrfm-client](https://github.com/markusressel/raspyrfm-client) to find out about a specific model. + +## {% linkable_title Switch state %} + +Initially, the state of a switch is unknown. When the switch is turned on or off (via frontend) the state is known and will be shown in the frontend. + +

+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. +

+ +## {% linkable_title Full example %} + +```yaml +switch: + platform: raspyrfm + gateway_manufacturer: Seegel Systeme + gateway_model: RaspyRFM + host: 127.0.0.1 # Optional + port: 49880 # Optional + switches: + - name: My Switch + controlunit_manufacturer: Intertechno + controlunit_model: CMR 1000 + channel_config: + master: A + slave: 1 + - name: My other Switch + controlunit_manufacturer: Brennenstuhl + controlunit_model: RCS 1000 N Comfort + channel_config: + 1: 1 + 2: 1 + 3: 1 + 4: 1 + 5: 1 + CH: A +``` diff --git a/source/_components/switch.recswitch.markdown b/source/_components/switch.recswitch.markdown index e5f1ba62fc3..c1462baecc3 100644 --- a/source/_components/switch.recswitch.markdown +++ b/source/_components/switch.recswitch.markdown @@ -17,10 +17,11 @@ ha_iot_class: "Local Polling" The `recswitch` switch platform allows you to control the Ankuoo Rec Switch devices. Supported devices (tested): + - Ankuoo RecSwitch MS6126 - Lumitek CSW201 NEO WiFi -### {% linkable_title Configuration %} +## {% linkable_title Configuration %} To enable this switch, add the following lines to your `configuration.yaml`: diff --git a/source/_components/switch.rflink.markdown b/source/_components/switch.rflink.markdown index 7a915b2f07c..08cf847e7e8 100644 --- a/source/_components/switch.rflink.markdown +++ b/source/_components/switch.rflink.markdown @@ -12,9 +12,11 @@ ha_category: Switch ha_release: 0.38 --- -The `rflink` component supports devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). +The `rflink` component support devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example, the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). -First, you have to set up your [RFLink hub](/components/rflink/). +## {% linkable_title Configuration %} + +First, you have to set up your [rflink hub](/components/rflink/). The RFLink component does not know the difference between a `switch`, a `binary_sensor` and a `light`. Therefore all switchable devices are automatically added as `light` by default. @@ -28,9 +30,14 @@ Configuring devices as switch : # Example configuration.yaml entry switch: - platform: rflink + device_defaults: + fire_event: true + signal_repetitions: 2 devices: - newkaku_0000c6c2_1: {} - conrad_00785c_0a: {} + newkaku_0000c6c2_1: + name: Ceiling fan + conrad_00785c_0a: + name: Motion sensor kitchen ``` {% configuration %} @@ -105,9 +112,9 @@ devices: type: [list, string] {% endconfiguration %} -### {% linkable_title Switch state %} +## {% linkable_title Switch state %} -Initially the state of a switch is unknown. When the switch is turned on or off (via frontend or wireless remote) the state is known and will be shown in the frontend. +Initially, the state of a switch is unknown. When the switch is turned on or off (via frontend or wireless remote) the state is known and will be shown in the frontend. Sometimes a switch is controlled by multiple wireless remotes, each remote has its own code programmed in the switch. To allow tracking of the state when switched via other remotes add the corresponding remote codes as aliases: @@ -123,9 +130,9 @@ switch: - kaku_000001_a ``` -Any on/off command from any alias ID updates the current state of the switch. However when sending a command through the frontend only the primary ID is used. +Any on/off command from any alias ID updates the current state of the switch. However, when sending a command through the frontend only the primary ID is used. -### {% linkable_title Device support %} +## {% linkable_title Device support %} See [device support](/components/rflink/#device-support) diff --git a/source/_components/switch.rfxtrx.markdown b/source/_components/switch.rfxtrx.markdown index 02094e099d5..669ee3770f7 100644 --- a/source/_components/switch.rfxtrx.markdown +++ b/source/_components/switch.rfxtrx.markdown @@ -14,6 +14,8 @@ ha_release: 0.7.5 The `rfxtrx` platform support switches that communicate in the frequency range of 433.92 MHz. +## {% linkable_title Configuration %} + First you have to set up your [rfxtrx hub](/components/rfxtrx/). The easiest way to find your switches is to add this to your `configuration.yaml`: @@ -21,10 +23,10 @@ The easiest way to find your switches is to add this to your `configuration.yaml # Example configuration.yaml entry switch: platform: rfxtrx - automatic_add: True + automatic_add: true ``` -Launch your Home Assistant and go the website. +Launch your Home Assistant and go to the website. Push your remote and your device should be added:

@@ -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.

@@ -90,7 +92,7 @@ If you need to generate codes for switches you can use a template (useful for ex ``` - Use this code to add a new switch in your configuration.yaml -- Launch your Home Assistant and go the website. +- Launch your Home Assistant and go to the website. - Enable learning mode on your switch (i.e. push learn button or plug it in a wall socket) - Toggle your new switch in the Home Assistant interface @@ -102,7 +104,7 @@ Basic configuration with 3 devices: # Example configuration.yaml entry switch: platform: rfxtrx - automatic_add: False + automatic_add: false signal_repetitions: 2 devices: 0b1100ce3213c7f210010f70: @@ -111,7 +113,7 @@ switch: name: Movment2 0b1111e003af16aa10000060: name: Door - fire_event: True + fire_event: true ``` Light hallway if doorbell is pressed (when is sun down): @@ -120,7 +122,7 @@ Light hallway if doorbell is pressed (when is sun down): # Example configuration.yaml entry switch: platform: rfxtrx - automatic_add: False + automatic_add: false devices: 0710014c440f0160: name: Hall @@ -129,7 +131,7 @@ switch: fire_event: true automation: - - alias: Switch light on when door bell rings if sun is below horizon and light was off + - alias: Switch the light on when doorbell rings if the sun is below the horizon and the light was off trigger: platform: event event_type: button_pressed @@ -154,7 +156,7 @@ Use remote to enable scene (using event_data): # Example configuration.yaml entry switch: platform: rfxtrx - automatic_add: False + automatic_add: false devices: 0b1100ce3213c7f210010f70: name: Light1 diff --git a/source/_components/switch.rpi_gpio.markdown b/source/_components/switch.rpi_gpio.markdown index 901734b1ee0..c40f8b85ec7 100644 --- a/source/_components/switch.rpi_gpio.markdown +++ b/source/_components/switch.rpi_gpio.markdown @@ -13,7 +13,6 @@ ha_release: pre 0.7 ha_iot_class: "Local Push" --- - The `rpi_gpio` switch platform allows you to control the GPIOs of your [Raspberry Pi](https://www.raspberrypi.org/). ## {% linkable_title Configuration %} @@ -52,7 +51,7 @@ For more details about the GPIO layout, visit the Wikipedia [article](https://en Note that a pin managed by HASS is expected to be exclusive to HASS.

-A common question is what does Port refer to, this number is the actual GPIO # not the pin #. +A common question is what does Port refer to, this number is the actual GPIO #, not the pin #. For example, if you have a relay connected to pin 11 its GPIO # is 17. ```yaml diff --git a/source/_components/switch.rpi_rf.markdown b/source/_components/switch.rpi_rf.markdown index 0c7b52f53b1..1bc16d72f7f 100644 --- a/source/_components/switch.rpi_rf.markdown +++ b/source/_components/switch.rpi_rf.markdown @@ -13,7 +13,6 @@ ha_release: 0.19 ha_iot_class: "Assumed state" --- - The `rpi_rf` switch platform allows you to control devices over 433/315MHz LPD/SRD signals with generic low-cost GPIO RF modules on a [Raspberry Pi](https://www.raspberrypi.org/). Interoperable with codes sniffed via [the rpi-rf module](https://pypi.python.org/pypi/rpi-rf) or [rc-switch](https://github.com/sui77/rc-switch). @@ -72,11 +71,11 @@ switches: default: 1 type: integer pulselength: - description: Pulselength + description: Pulselength. required: false type: integer signal_repetitions: - description: Number of times to repeat transmission + description: Number of times to repeat transmission. required: false default: 10 type: integer diff --git a/source/_components/switch.switchbot.markdown b/source/_components/switch.switchbot.markdown index ff7e8911b50..a87273de79c 100644 --- a/source/_components/switch.switchbot.markdown +++ b/source/_components/switch.switchbot.markdown @@ -13,7 +13,7 @@ ha_release: 0.78 ha_iot_class: "Local Polling" --- -This `Switchbot` switch platform allow you to control Switchbot [devices]( https://www.switch-bot.com/). +This `Switchbot` switch platform allows you to control Switchbot [devices]( https://www.switch-bot.com/). To enable it, add the following lines to your `configuration.yaml`: @@ -31,5 +31,5 @@ mac: name: description: The name used to display the switch in the frontend. required: false - type: string + type: string {% endconfiguration %} diff --git a/source/_components/switch.switchmate.markdown b/source/_components/switch.switchmate.markdown index bfc26d496c9..03e67161ca6 100644 --- a/source/_components/switch.switchmate.markdown +++ b/source/_components/switch.switchmate.markdown @@ -15,6 +15,8 @@ ha_iot_class: "Local Polling" This `Switchmate` switch platform allows you to control Switchmate [devices]( https://www.mysimplysmarthome.com/products/switchmate-switches/). +## {% linkable_title Configuration %} + To enable it, add the following lines to your `configuration.yaml`: ```yaml @@ -31,13 +33,12 @@ mac: name: description: The name used to display the switch in the frontend. required: false - type: string + type: string flip_on_off: description: Option to flip the on/off state. required: false - type: boolean + type: boolean default: false {% endconfiguration %} - The component is tested with SwitchMate Lighting Control Rocker and SwitchMate Lighting Control Toggle. diff --git a/source/_components/switch.tellduslive.markdown b/source/_components/switch.tellduslive.markdown index 1cfa2c6fc86..e6f2309c108 100644 --- a/source/_components/switch.tellduslive.markdown +++ b/source/_components/switch.tellduslive.markdown @@ -13,4 +13,3 @@ featured: false --- Integrates Telldus Live switches into Home Assistant. See the [main component](/components/tellduslive/) for configuration instructions. - diff --git a/source/_components/switch.tellstick.markdown b/source/_components/switch.tellstick.markdown index 9de976af4ba..f531c90f1d7 100644 --- a/source/_components/switch.tellstick.markdown +++ b/source/_components/switch.tellstick.markdown @@ -12,7 +12,6 @@ ha_category: Switch ha_iot_class: "Assumed State" --- - This `tellstick` switch platform allows you to control [TellStick](http://www.telldus.se/products/tellstick) devices. To use your TellStick device, you first have to set up your [Tellstick hub](/components/tellstick/) and then add the following to your `configuration.yaml` file: diff --git a/source/_components/switch.template.markdown b/source/_components/switch.template.markdown index e3badda4bcc..2107a7280b9 100644 --- a/source/_components/switch.template.markdown +++ b/source/_components/switch.template.markdown @@ -37,7 +37,7 @@ switch: data: entity_id: switch.skylight_open turn_off: - service: switch.turn_on + service: switch.turn_off data: entity_id: switch.skylight_close ``` diff --git a/source/_components/switch.tplink.markdown b/source/_components/switch.tplink.markdown index da0083120b6..f6786aaeb04 100644 --- a/source/_components/switch.tplink.markdown +++ b/source/_components/switch.tplink.markdown @@ -13,17 +13,19 @@ ha_iot_class: "Local Polling" ha_release: "0.24" --- - The `tplink` switch platform allows you to control the state of your [TP-Link smart switch](http://www.tp-link.com/en/products/list-5258.html). Supported units: - HS100 +- HS103 - HS105 - HS110 - HS200 -To use your TP-Link switch in your installation, add the following to your `configuration.yaml` file: +## {% linkable_title Configuration %} + +To use your TP-Link switch or socket in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -48,3 +50,47 @@ enable_leds: type: boolean {% endconfiguration %} +## {% linkable_title Adding multiple switches %} + +You may need to add [multiple switches](https://community.home-assistant.io/t/multiple-tp-link-switches/6935) and the config would need to include multiple switches separately. + +```yaml +# Example configuration.yaml entry +switch: + - platform: tplink + host: FIRST_IP_ADDRESS + - platform: tplink + host: SECOND_IP_ADDRESS +``` + +## {% linkable_title Configure Energy Sensors %} + +In order to get the power consumption readings from the HS110, you'll have to create a [template sensor](/components/switch.template/). In the example below, change all of the `my_tp_switch`'s to match your switch's entity ID. + +{% raw %} +```yaml +sensor: + - platform: template + sensors: + my_tp_switch_amps: + friendly_name_template: "{{ states.switch.my_tp_switch.name}} Current" + value_template: '{{ states.switch.my_tp_switch.attributes["current_a"] | float }}' + unit_of_measurement: 'A' + my_tp_switch_watts: + friendly_name_template: "{{ states.switch.my_tp_switch.name}} Current Consumption" + value_template: '{{ states.switch.my_tp_switch.attributes["current_power_w"] | float }}' + unit_of_measurement: 'W' + my_tp_switch_total_kwh: + friendly_name_template: "{{ states.switch.my_tp_switch.name}} Total Consumption" + value_template: '{{ states.switch.my_tp_switch.attributes["total_energy_kwh"] | float }}' + unit_of_measurement: 'kWh' + my_tp_switch_volts: + friendly_name_template: "{{ states.switch.my_tp_switch.name}} Voltage" + value_template: '{{ states.switch.my_tp_switch.attributes["voltage"] | float }}' + unit_of_measurement: 'V' + my_tp_switch_today_kwh: + friendly_name_template: "{{ states.switch.my_tp_switch.name}} Today's Consumption" + value_template: '{{ states.switch.my_tp_switch.attributes["today_energy_kwh"] | float }}' + unit_of_measurement: 'kWh' +``` +{% endraw %} diff --git a/source/_components/switch.transmission.markdown b/source/_components/switch.transmission.markdown index cf7db2f2f32..11a69c59823 100644 --- a/source/_components/switch.transmission.markdown +++ b/source/_components/switch.transmission.markdown @@ -13,9 +13,10 @@ ha_release: pre 0.7 ha_iot_class: "Local Polling" --- - The `transmission` switch platform allows you to control your [Transmission](http://www.transmissionbt.com/) client from within Home Assistant. The platform enables you switch to your 'Alternative Speed Limits' (aka 'Turtle mode') setting. +## {% linkable_title Configuration %} + To add Transmission to your installation, add the following to your `configuration.yaml` file: ```yaml @@ -29,7 +30,7 @@ switch: host: required: true type: string - description: This is the IP address of your Transmission daemon, e.g., 192.168.1.32. + description: This is the IP address of your Transmission daemon, e.g., `192.168.1.32`. port: required: false type: integer diff --git a/source/_components/switch.tuya.markdown b/source/_components/switch.tuya.markdown index 6f081aee6cd..28a130e0ce8 100644 --- a/source/_components/switch.tuya.markdown +++ b/source/_components/switch.tuya.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Tuya Switch" -description: "Instructions on how to setup the Tuya switch within Home Assistant." +description: "Instructions on how to set up the Tuya switch within Home Assistant." date: 2018-07-09 09:00 sidebar: true comments: false @@ -13,11 +13,10 @@ ha_iot_class: "Cloud Polling" ha_release: 0.74 --- - The `tuya` switch platform allows you to control your [Tuya Smart](https://www.tuya.com) switch. The platform supports switch and socket.

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 -The message ("Unable to find service..."), source (`core.py`) and level (`WARNING`) can easily be extracted from the image. Exact timestamp and stack trace is shown if the entry is selected. +The message ("Unable to find service..."), source (`core.py`) and level (`WARNING`) can easily be extracted from the image. The exact timestamp and stack trace is shown in the selected entry. ## {% linkable_title Examples %} diff --git a/source/_components/telegram_bot.markdown b/source/_components/telegram_bot.markdown index ecbfa306596..343ed59f25d 100644 --- a/source/_components/telegram_bot.markdown +++ b/source/_components/telegram_bot.markdown @@ -150,6 +150,7 @@ Respond to a callback query originated by clicking on an online keyboard button. | `show_alert` | yes | True/false for show a permanent notification. Defaults to False. | ### {% linkable_title Service `telegram_bot.delete_message` %} + Delete a previously sent message in a conversation. | Service data attribute | Optional | Description | @@ -161,7 +162,7 @@ Delete a previously sent message in a conversation. The [`telegram` notification platform](/components/notify.telegram/) requires the `telegram_bot` component to work with, and it's designed to generate a customized shortcut (`notify.USERNAME`) to send notifications (messages, photos, documents and locations) to a particular `chat_id` with the old syntax, allowing backward compatibility. -The required yaml configuration now reduces to: +The required YAML configuration now reduces to: ```yaml notify: @@ -392,9 +393,9 @@ For a more complex usage of the `telegram_bot` capabilities, using [AppDaemon](/ This is how the previous 4 automations would be through a simple AppDaemon app: ```python -import appdaemon.appapi as appapi +import appdaemon.plugins.hass.hassapi as hass -class TelegramBotEventListener(appapi.AppDaemon): +class TelegramBotEventListener(hass.Hass): """Event listener for Telegram bot events.""" def initialize(self): diff --git a/source/_components/tellstick.markdown b/source/_components/tellstick.markdown index 36bdec9e609..0566e92a8a4 100644 --- a/source/_components/tellstick.markdown +++ b/source/_components/tellstick.markdown @@ -11,7 +11,7 @@ logo: telldus_tellstick.png ha_category: Hub --- -The `tellstick` component integrates [TellStick](http://www.telldus.se/products/tellstick) devices into Home Assistant. This integration allows users to add switches, lights, and sensors which are communicating with 433 MHz. There are a number of vendors (Capidi Elro, Intertechno, Nexa, Proove, Sartano, and Viking) who are selling products that work with TellStick. For more details, please check the TellStick [protocol list](http://developer.telldus.com/wiki/TellStick_conf). +The `tellstick` component integrates [TellStick](https://telldus.com/produkt/z-wave-gateway-tellstick-znet-lite-ver-2/) devices into Home Assistant. This integration allows users to add switches, lights, and sensors which are communicating with 433 MHz. There are a number of vendors (Capidi Elro, Intertechno, Nexa, Proove, Sartano, and Viking) who are selling products that work with TellStick. For more details, please check the TellStick [protocol list](http://developer.telldus.com/wiki/TellStick_conf). ## {% linkable_title Configuration %} diff --git a/source/_components/tesla.markdown b/source/_components/tesla.markdown index 5c09dd4f6bf..cdb7e2cbed6 100644 --- a/source/_components/tesla.markdown +++ b/source/_components/tesla.markdown @@ -16,14 +16,15 @@ ha_iot_class: "Cloud Polling" The `Tesla` component offers integration with the [Tesla](https://auth.tesla.com/login) cloud service and provides presence detection as well as sensors such as charger state and temperature. This component provides the following platforms: - - Binary sensors - such as parking and charger connection. - - Sensors - such as Battery level, Inside/Outside temperature, odometer, and estimated range. - - Device tracker - to track location of your car - - Lock - Door lock. Enables you to control Tesla's door lock - - Climate - HVAC control. Allow you to control (turn on/off, set target temperature) your Tesla's HVAC system. - - Switch - Charger and max range switch. Allow you to start/stop charging and set max range charging. - ## {% linkable_title Configuration %} +- Binary sensors - such as parking and charger connection. +- Sensors - such as Battery level, Inside/Outside temperature, odometer, and estimated range. +- Device tracker - to track location of your car +- Lock - Door lock. Enables you to control Tesla's door lock +- Climate - HVAC control. Allow you to control (turn on/off, set target temperature) your Tesla's HVAC system. +- Switch - Charger and max range switch. Allow you to start/stop charging and set max range charging. + +## {% linkable_title Configuration %} To use Tesla in your installation, add the following to your `configuration.yaml` file: @@ -44,7 +45,7 @@ password: required: true type: string scan_interval: - description: API polling interval. Minimal value can't be less then 300. + description: API polling interval in seconds. Minimum value can't be less than 300 (5 minutes). Very frequent polling can use battery. required: false type: integer default: 300 diff --git a/source/_components/tibber.markdown b/source/_components/tibber.markdown index e824ddcb5bf..7df4e9a7f28 100644 --- a/source/_components/tibber.markdown +++ b/source/_components/tibber.markdown @@ -15,7 +15,7 @@ ha_iot_class: "Cloud Polling" --- The `tibber` component provides a sensor with the current electricity price if you are a [Tibber](https://tibber.com/) customer. -If you have a Tibber Pulse it will also show the electricity consumption in real time. +If you have a [Tibber Pulse](https://norge.tibber.com/products/pulse/) it will also show the electricity consumption in real time. It also provides a notification service. diff --git a/source/_components/timer.markdown b/source/_components/timer.markdown index 946e20cd8d9..21fdc46d8d6 100644 --- a/source/_components/timer.markdown +++ b/source/_components/timer.markdown @@ -15,10 +15,10 @@ ha_qa_scale: internal The `timer` component aims to simplify automations based on (dynamic) durations. -When a timer finishes or gets canceled the corresponding events are fired. This allows you to differentiate if a timer has switched from `active` to `idle` because the given duration has elapsed or it has been canceled. To control timers in your automations you can use the services mentioned below. When calling the `start` service on a timer that is already running, it resets the duration it will need to finish and restart the timer without triggering any events. This for example makes it easy to create timed lights that get triggered by motion. +When a timer finishes or gets canceled the corresponding events are fired. This allows you to differentiate if a timer has switched from `active` to `idle` because the given duration has elapsed or it has been canceled. To control timers in your automations you can use the services mentioned below. When calling the `start` service on a timer that is already running, it resets the duration it will need to finish and restart the timer without triggering a canceled or finished event. This, for example, makes it easy to create timed lights that get triggered by motion. Starting a timer triggers a started event unless the timer is paused, in that case, it triggers a restarted event.

-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:///api/webhook/9940e99a26fae4dcf6fe0a478124b6b58b578ea4c55c9a584beb1c9f5057bb91`. To generate inbound events, you have to configure your webhooks with [Twilio](https://www.twilio.com/docs/glossary/what-is-a-webhook) + +Events coming in from Twilio will be available as events in Home Assistant and are fired as `twilio_data_received`. The data specified by Twilio will be available as the event data. You can use this event to trigger automations. + +You can then consume that information with the following automation: + +```yaml +automation: + trigger: + platform: event + event_type: twilio_data_received + event_data: + action: call_service + action: + service: light.turn_on + entity_id: light.office +``` diff --git a/source/_components/upnp.markdown b/source/_components/upnp.markdown index a3c3cd4d366..1c8aad7a87c 100644 --- a/source/_components/upnp.markdown +++ b/source/_components/upnp.markdown @@ -14,7 +14,7 @@ ha_release: 0.18 The `upnp` component enables you to collect network statistics from your router such as bytes in/out and packets in/out. This information is provided by the [UPnP](https://en.wikipedia.org/wiki/Universal_Plug_and_Play)/[Internet Gateway Device (IGD) Protocol](https://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol) if enabled on your router. -The IGD automatically creates port forwarding mappings on your router for Home Assistant, exposing your installation to the internet. The mapping will never automatically expire. Upon stopping Home Assistant, the mapping will be removed from your router. +The IGD can automatically create port forwarding mappings on your router for Home Assistant, exposing your installation to the internet. The mapping will never automatically expire. Upon stopping Home Assistant, the mapping will be removed from your router. Please note that UPnP or NAT-PMP needs to be enabled on your router for this component to work. diff --git a/source/_components/usps.markdown b/source/_components/usps.markdown index 487344d202b..ed59717190f 100644 --- a/source/_components/usps.markdown +++ b/source/_components/usps.markdown @@ -43,6 +43,7 @@ If you use the PhantomJS option, specify `driver: phantomjs` in your `usps` conf Install Chrome 59 or greater (preferably the most recent). Install the latest [Chromedriver](https://sites.google.com/a/chromium.org/chromedriver/downloads). Ensure both executables are on your `PATH`. `google-chrome --version` and `chromedriver --version` should work and report the correct version. OS-specific instructions: + - [Ubuntu 16](https://gist.github.com/ziadoz/3e8ab7e944d02fe872c3454d17af31a5) (Selenium server portion *not* necessary) - [RHEL/Centos 7](https://stackoverflow.com/a/46686621) diff --git a/source/_components/vacuum.dyson.markdown b/source/_components/vacuum.dyson.markdown index 50a09628d7c..2e1ce61617e 100644 --- a/source/_components/vacuum.dyson.markdown +++ b/source/_components/vacuum.dyson.markdown @@ -22,11 +22,12 @@ You have to set up the [Dyson component](/components/dyson/) first. ### {% linkable_title Component services %} This component support the following services (see [Vacuum Cleaner Robots](/components/vacuum/)): -* [`turn_on`](/components/vacuum/#service-vacuumturn_on) -* [`turn_off`](/components/vacuum/#service-vacuumturn_off) -* [`start_pause`](/components/vacuum/#service-vacuumstart_pause) -* [`stop`](/components/vacuum/#service-vacuumstop) -* [`return_to_home`](/components/vacuum/#service-vacuumreturn_to_home) -* [`set_fan_speed`](/components/vacuum/#service-vacuumset_fanspeed). Fan speed values: - * `Quiet` - * `Max` + +- [`turn_on`](/components/vacuum/#service-vacuumturn_on) +- [`turn_off`](/components/vacuum/#service-vacuumturn_off) +- [`start_pause`](/components/vacuum/#service-vacuumstart_pause) +- [`stop`](/components/vacuum/#service-vacuumstop) +- [`return_to_home`](/components/vacuum/#service-vacuumreturn_to_home) +- [`set_fan_speed`](/components/vacuum/#service-vacuumset_fanspeed). Fan speed values: + - `Quiet` + - `Max` diff --git a/source/_components/vacuum.mqtt.markdown b/source/_components/vacuum.mqtt.markdown index 04fb17d504e..d678b09ee0c 100644 --- a/source/_components/vacuum.mqtt.markdown +++ b/source/_components/vacuum.mqtt.markdown @@ -22,37 +22,6 @@ To add your MQTT vacuum to your installation, add the following to your `configu # Example configuration.yaml entry vacuum: - platform: mqtt - name: "MQTT Vacuum" - supported_features: - - turn_on - - turn_off - - pause - - stop - - return_home - - battery - - status - - locate - - clean_spot - - fan_speed - - send_command - command_topic: "vacuum/command" - battery_level_topic: "vacuum/state" - battery_level_template: "{{ value_json.battery_level }}" - charging_topic: "vacuum/state" - charging_template: "{{ value_json.charging }}" - cleaning_topic: "vacuum/state" - cleaning_template: "{{ value_json.cleaning }}" - docked_topic: "vacuum/state" - docked_template: "{{ value_json.docked }}" - fan_speed_topic: "vacuum/state" - fan_speed_template: "{{ value_json.fan_speed }}" - set_fan_speed_topic: "vacuum/set_fan_speed" - fan_speed_list: - - min - - medium - - high - - max - send_command_topic: 'vacuum/send_command' ``` {% configuration %} @@ -147,6 +116,14 @@ docked_template: description: "Defines a [template](/topics/templating/) to define the docked state of the vacuum." required: false type: string +error_topic: + description: The MQTT topic subscribed to receive error messages from the vacuum. + required: false + type: string +error_template: + description: "Defines a [template](/topics/templating/) to define potential error messages emitted by the vacuum." + required: false + type: string fan_speed_topic: description: The MQTT topic subscribed to receive fan speed values from the vacuum. required: false @@ -183,6 +160,49 @@ payload_not_available: default: offline {% endconfiguration %} +### {% linkable_title Full configuration example %} + +{% raw %} +```yaml +# Example configuration.yaml entry +vacuum: + - platform: mqtt + name: "MQTT Vacuum" + supported_features: + - turn_on + - turn_off + - pause + - stop + - return_home + - battery + - status + - locate + - clean_spot + - fan_speed + - send_command + command_topic: "vacuum/command" + battery_level_topic: "vacuum/state" + battery_level_template: "{{ value_json.battery_level }}" + charging_topic: "vacuum/state" + charging_template: "{{ value_json.charging }}" + cleaning_topic: "vacuum/state" + cleaning_template: "{{ value_json.cleaning }}" + docked_topic: "vacuum/state" + docked_template: "{{ value_json.docked }}" + error_topic: "vacuum/state" + error_template: "{{ value_json.error }}" + fan_speed_topic: "vacuum/state" + fan_speed_template: "{{ value_json.fan_speed }}" + set_fan_speed_topic: "vacuum/set_fan_speed" + fan_speed_list: + - min + - medium + - high + - max + send_command_topic: 'vacuum/send_command' +``` +{% endraw %} + ### {% linkable_title Default MQTT Protocol %} The above configuration for this component expects an MQTT protocol like the following. @@ -192,6 +212,7 @@ The above configuration for this component expects an MQTT protocol like the fol MQTT topic: `vacuum/command` Possible MQTT payloads: + - `turn_on` - Begin cleaning - `turn_off` - Turn the Vacuum off - `return_to_base` - Return to base/dock @@ -205,6 +226,7 @@ Possible MQTT payloads: MQTT topic: `vacuum/set_fan_speed` Possible MQTT payloads: + - `min` - Minimum fan speed - `medium` - Medium fan speed - `high` - High fan speed @@ -221,16 +243,19 @@ MQTT payload for `send_command` can be an arbitrary value handled by the vacuum' MQTT topic: `vacuum/state` MQTT payload: + ```json { "battery_level": 61, "docked": true, "cleaning": false, "charging": true, - "fan_speed": "off" + "fan_speed": "off", + "error": "Error message" } ``` ### {% linkable_title Retrofitting a non-wifi vacuums %} + - Retrofitting your old Roomba with an ESP8266. [This repo](https://github.com/johnboiles/esp-roomba-mqtt) provides MQTT client firmware. - In you own a non-wifi Neato, you can refer to [this repo](https://github.com/jeroenterheerdt/neato-serial) that uses a Raspberry Pi to retrofit an old Neato. diff --git a/source/_components/vacuum.xiaomi_miio.markdown b/source/_components/vacuum.xiaomi_miio.markdown index 500e176081c..cbbe93bf530 100644 --- a/source/_components/vacuum.xiaomi_miio.markdown +++ b/source/_components/vacuum.xiaomi_miio.markdown @@ -13,7 +13,7 @@ ha_release: 0.51 ha_iot_class: "Local Polling" --- -The `xiaomi miio` vacuum platform allows you to control the state of your [Xiaomi Mi Robot Vacuum](http://www.mi.com/roomrobot/). +The `xiaomi_miio` vacuum platform allows you to control the state of your [Xiaomi Mi Robot Vacuum](https://www.mi.com/roomrobot/). Currently supported services are: @@ -69,39 +69,39 @@ In addition to all of the services provided by the `vacuum` component (`start`, Start the remote control mode of the robot. You can then move it with `remote_control_move`; when done, call `remote_control_stop`. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific robot; default targets all | +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------| +| `entity_id` | yes | Only act on a specific robot; default targets all | ### {% linkable_title Service `vacuum.xiaomi_remote_control_stop` %} Exit the remote control mode of the robot. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific robot; default targets all | +| Service data attribute | Optional | Description | +|---------------------------|----------|---------------------------------------------------| +| `entity_id` | yes | Only act on a specific robot; default targets all | ### {% linkable_title Service `vacuum.xiaomi_remote_control_move` %} Remote control the robot. Please ensure you first set it in remote control mode with `remote_control_start`. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific robot; default targets all | -| `velocity` | no | Speed: between -0.29 and 0.29 | -| `rotation` | no | Rotation: between -179 degrees and 179 degrees | -| `duration` | no | The number of milliseconds that the robot should move for | +| Service data attribute | Optional | Description | +|---------------------------|----------|-----------------------------------------------------------| +| `entity_id` | yes | Only act on a specific robot; default targets all | +| `velocity` | no | Speed: between -0.29 and 0.29 | +| `rotation` | no | Rotation: between -179 degrees and 179 degrees | +| `duration` | no | The number of milliseconds that the robot should move for | ### {% linkable_title Service `vacuum.xiaomi_remote_control_move_step` %} Enter remote control mode, make one move, stop, and exit remote control mode. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific robot; default targets all | -| `velocity` | no | Speed: between -0.29 and 0.29. | -| `rotation` | no | Rotation: between -179 degrees and 179 degrees. | -| `duration` | no | The number of milliseconds that the robot should move for | +| Service data attribute | Optional | Description | +|---------------------------|----------|-----------------------------------------------------------| +| `entity_id` | yes | Only act on a specific robot; default targets all | +| `velocity` | no | Speed: between -0.29 and 0.29 | +| `rotation` | no | Rotation: between -179 degrees and 179 degrees | +| `duration` | no | The number of milliseconds that the robot should move for | ## {% linkable_title Attributes %} @@ -134,23 +134,23 @@ The following table shows the units of measurement for each attribute: ## {% linkable_title Retrieving the Access Token %}

-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.

-#### {% linkable_title Miio command line tool %} +### {% linkable_title Miio command line tool %} -You can install the command line tool with: +You can install the command line tool using the following command: ```bash npm install -g miio ``` -Discovering devices on current network +Discovering devices on the current network: ```bash miio discover @@ -170,12 +170,12 @@ Support: At least basic The information output is: -- __Device ID__ - the unique identifier of the device, does not change if the device is reset. -- __Model ID__ - the model id if it could be determined, this indicates what type of device it is -- __Address__ - the IP that the device has on the network -- __Token__ - the token of the device or ??? if it could not be automatically determined +- `Device ID` - The unique identifier of the device, does not change if the device is reset. +- `Model ID`- The model id if it could be determined, this indicates what type of device it is. +- `Address` - The IP that the device has on the network. +- `Token` - The token of the device or `???` if it could not be automatically determined. -#### {% linkable_title Windows and Android %} +### {% linkable_title Windows and Android %} To fetch the token follow these instructions depending on your mobile phone platform. @@ -183,14 +183,14 @@ To fetch the token follow these instructions depending on your mobile phone plat 2. Download and extract the [MiToolKit.zip](https://github.com/ultrara1n/MiToolkit/releases). 3. Enable developer mode and USB debugging on the Android phone and plug it into the computer. 4. Change the MiToolKit language to English if you need to. -5. Click "Extract Token" +5. Click "Extract Token". 6. On the phone, you must confirm the backup. DO NOT enter any password and press the button to make the backup. 7. Once you have confirmed the backup the token extraction will begin, it should appear in the MiToolKit shortly. -8. If you don't get a token, close MiToolKit completely, delete the folder MiToolkit\apps\com.xiaomi.smarthome and relaunch MiToolKit to force recreate a new backup (sometimes the files would not be overwritten before deleting the old ones) +8. If you don't get a token, close MiToolKit completely, delete the folder MiToolkit\apps\com.xiaomi.smarthome and relaunch MiToolKit to force recreate a new backup (sometimes the files would not be overwritten before deleting the old ones). -#### {% linkable_title Linux and Android (not rooted) %} +### {% linkable_title Linux and Android (not rooted) %} -Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from a SQLite file inside your phone. +Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from an SQLite file inside your phone. Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-miio` to be installed correctly. @@ -198,7 +198,7 @@ Before you begin you need to install `libffi-dev` and `libssl-dev` by running th sudo apt-get install libffi-dev libssl-dev ``` -If your Home Assistant installation is running in a [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant), make sure you activate it by running the commands below. +If your Home Assistant installation is running in a [virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant), make sure you activate it by running the commands below. ```bash sudo -u homeassistant -H -s @@ -209,17 +209,23 @@ To fetch the token follow these instructions depending on your mobile phone plat 1. Configure the robot with the Mi-Home app. 2. Enable developer mode, USB debugging and plug the Android phone into the computer. -3. Get ADB e.g., `apt-get install android-tools-adb` or `apt-get install adb` -4. `adb devices` should list your device. Consult ADB manual if necessary. -5. Issue a backup command via adb: `adb backup -noapk com.xiaomi.smarthome -f backup.ab` (set a password if prompted on your phone). Some devices may required single quotes in the command `adb backup '-noapk com.xiaomi.smarthome -f backup.ab'` -6. Download the 'ADB Backup Extractor' from [here](https://sourceforge.net/projects/adbextractor/files/latest/download) -7. Extract the data from the backup: `java -jar Android\ Backup\ Utilities/Android\ Backup\ Extractor/android-backup-extractor-20171005-bin/abe.jar unpack backup.ab unpacked.tar` (enter the password, if prompted) -8. Untar the unpacked data: `tar -xvf unpacked.tar` -9. `sqlite3 apps/com.xiaomi.smarthome/db/miio2.db 'select token from devicerecord where name like "%Vacuum%";'` returns the token for your Xiaomi vacuum bot. +3. Get ADB by running `apt-get install android-tools-adb` or `apt-get install adb`. +4. `adb devices` should list your device. Consult the ADB manual if necessary. +5. Issue a backup command via adb: `adb backup -noapk com.xiaomi.smarthome -f backup.ab` (set a password if prompted on your phone). Some devices may require single quotes in the command `adb backup '-noapk com.xiaomi.smarthome -f backup.ab'`. +6. Download the ['ADB Backup Extractor'](https://sourceforge.net/projects/adbextractor/files/latest/download). +7. Extract the data from the backup: (enter the password, if prompted) + ```bash + java -jar Android\ Backup\ Utilities/Android\ Backup\ Extractor/android-backup-extractor-20171005-bin/abe.jar unpack backup.ab unpacked.tar + ``` +8. Untar the unpacked data: `tar -xvf unpacked.tar`. +9. The following command returns the token for your Xiaomi vacuum bot: + ```bash + sqlite3 apps/com.xiaomi.smarthome/db/miio2.db 'select token from devicerecord where name like "%Vacuum%";' + ``` -#### {% linkable_title Linux and Android (rooted!) %} +### {% linkable_title Linux and Android (rooted!) %} -Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from a SQLite file inside your phone. +Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from an SQLite file inside your phone. Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-miio` to be installed correctly. @@ -227,7 +233,7 @@ Before you begin you need to install `libffi-dev` and `libssl-dev` by running th sudo apt-get install libffi-dev libssl-dev ``` -If your Home Assistant installation is running in a [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant), make sure you activate it by running the commands below. +If your Home Assistant installation is running in a [virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant), make sure you activate it by running the commands below. ```bash sudo -u homeassistant -H -s @@ -238,32 +244,71 @@ To fetch the token follow these instructions depending on your mobile phone plat 1. Configure the robot with the Mi-Home app. 2. Enable developer mode, USB debugging and root permission only for ADB on the Android phone and plug it into the computer. -3. Get ADB f.e. `apt-get install android-tools-adb` -4. `adb devices` should list your device -5. `adb root` (does work for development builds only: ones with `ro.debuggable=1`) -6. `adb shell` (for those using Magisk based root the previous command won't work. After entering a shell, type `su` to enter the root shell) -7. `echo "select name,localIP,token from devicerecord;" | sqlite3 /data/data/com.xiaomi.smarthome/databases/miio2.db` returns a list of all registered devices including IP address and token. +3. Get ADB (e.g, using `apt-get install android-tools-adb`). +4. The command `adb devices` should list your device. +5. The command `adb root` (does work for development builds only: ones with `ro.debuggable=1`). +6. The command `adb shell` (for those using Magisk based root the this command won't work. After entering a shell, type `su` to enter the root shell and try again). +7. The following command returns a list of all registered devices including IP address and token: + ```bash + echo "select name,localIP,token from devicerecord;" | sqlite3 /data/data/com.xiaomi.smarthome/databases/miio2.db + ``` -#### {% linkable_title iOS %} +### {% linkable_title iOS %} 1. Configure the robot with the Mi-Home app. 2. Using iTunes, create an unencrypted backup of your iPhone. -3. Install [iBackup Viewer](http://www.imactools.com/iphonebackupviewer/), open it, and open your backup. +3. Install [iBackup Viewer](https://www.imactools.com/iphonebackupviewer/), open it, and open your backup. 4. Open the "Raw Data" module. 5. Navigate to `com.xiaomi.mihome`. -6. Search for a file that looks like this: `123456789_mihome.sqlite` – note that `_mihome.sqlite` is *not* the correct file. +6. Search for a file that looks like this: `123456789_mihome.sqlite` (Note: `_mihome.sqlite` is *not* the correct file). 7. Save this file to your filesystem. -8. Install [DB Browser for SQLite](http://sqlitebrowser.org/). +8. Install [DB Browser for SQLite](https://sqlitebrowser.org/). 9. Open DB Browser and load the `.sqlite` file you saved from your backup. 10. Click on the `Execute SQL` tab. -11. Input and run this query: `SELECT ZTOKEN FROM ZDEVICE WHERE ZMODEL LIKE "%vacuum%"` +11. Input and run this query: + ```sql + SELECT ZTOKEN FROM ZDEVICE WHERE ZMODEL LIKE "%vacuum%" + ``` 12. Copy the returned 32-digit hexadecimal string to your clipboard. -13. Open `Terminal` and execute this command: `echo '0: ' | xxd -r -p | openssl enc -d -aes-128-ecb -nopad -nosalt -K 00000000000000000000000000000000` +13. Open `Terminal` and execute this command: + ```bash + echo '0: ' | xxd -r -p | openssl enc -d -aes-128-ecb -nopad -nosalt -K 00000000000000000000000000000000 + ``` 14. Use the resulting string as your token. -#### {% linkable_title Bluestacks %} +### {% linkable_title Bluestacks %} 1. Configure the robot with the Mi-Home app. 2. Install [BlueStacks](https://www.bluestacks.com). 3. Set up the Mi-Home app in BlueStacks and login to synchronize devices. 4. Use [BlueStacks Tweaker](https://forum.xda-developers.com/general/general/bluestacks-tweaker-2-tool-modifing-t3622681) to access the filesystem and retrieve the token. + +### {% linkable_title Selecting token manually (Windows and Android) %} + +The following instruction explained an alternative method, in case the MiToolKit didn't work. + +Software Required: + +- Android ADB is contained in [Android SDK](https://developer.android.com/studio/releases/platform-tools) +- [Mi-Home version 5.0.30](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-30-release/) +- [Android Backup Extractor](https://sourceforge.net/projects/adbextractor/) +- [SQLite Browser](https://sqlitebrowser.org/) + +Steps to take: + +1. Install an old Version of MiHome (e.g. Mi-Home version 5.0.30) on your Android-Device. +2. Open MiHome, log-in and add your devices. +3. Enable USB-Debugging on your Android. +4. Create a backup from your MiHome App, by using adb: + ```bash + adb backup com.xiaomi.smarthome + ``` + Now the backup App opens on you Android-Device. You don't need to set a password, just click save. +5. Extract the backup-file with android-backup-extractor: + ```bash + java -jar abe.jar unpack backup.ab backup.tar + ``` + After that, extract the file with WinRAR, 7-Zip (or similar). +6. Go to `\apps\com.xiaomi.smarthome\db`. +7. Open `miio2.db` with the SQLite Browser. +8. You can find your device tokens in `devicerecord` table. diff --git a/source/_components/verisure.markdown b/source/_components/verisure.markdown index 5e14d2236d2..e9bcafc7184 100644 --- a/source/_components/verisure.markdown +++ b/source/_components/verisure.markdown @@ -17,14 +17,14 @@ Home Assistant has support to integrate your [Verisure](https://www.verisure.com We support: - * [Alarm](/components/alarm_control_panel.verisure/) - * [Smartplugs](/components/switch.verisure/) - * Reading from thermometers and hygrometers integrated in various [devices](/components/sensor.verisure/) - * Mouse Detector - * [Locks](/components/lock.verisure/) - * [Door & Window](/components/binary_sensor.verisure/) +- [Alarm](/components/alarm_control_panel.verisure/) +- [Smartplugs](/components/switch.verisure/) +- Reading from thermometers and hygrometers integrated in various [devices](/components/sensor.verisure/) +- Mouse Detector +- [Locks](/components/lock.verisure/) +- [Door & Window](/components/binary_sensor.verisure/) - ## {% linkable_title Configuration %} +## {% linkable_title Configuration %} To integrate Verisure with Home Assistant, add the following section to your `configuration.yaml` file: @@ -64,6 +64,10 @@ locks: required: false type: boolean default: true +default_lock_code: + description: Code that will be used to lock or unlock, if none is supplied. + required: false + type: string thermometers: description: Set to `true` to show thermometers, `false` to disable. required: false diff --git a/source/_components/volvooncall.markdown b/source/_components/volvooncall.markdown index 3ed8aa1e092..44d210d355d 100644 --- a/source/_components/volvooncall.markdown +++ b/source/_components/volvooncall.markdown @@ -11,6 +11,12 @@ logo: volvo.png ha_category: Car ha_release: 0.39 ha_iot_class: "Cloud Polling" +redirect_from: + - /components/binary_sensor.volvooncall/ + - /components/lock.volvooncall/ + - /components/sensor.volvooncall/ + - /components/switch.volvooncall/ + - /components/device_tracker.volvooncall/ --- The `volvooncall` component offers integration with the [Volvo On Call](http://www.volvocars.com/intl/own/connectivity/volvo-on-call) cloud service and offers presence detection as well as sensors such as odometer and fuel level. @@ -46,21 +52,6 @@ volvooncall: region: cn ``` -A more advanced example for setting the vehicle name and selecting what resources to display: - -```yaml -# Example configuration.yaml entry -volvooncall: - username: YOUR_USERNAME - password: YOUR_PASSWORD - name: - abc123: 'Batmobile' - resources: - - doors - - lock - - heater -``` - {% configuration %} username: description: The username associated with your Volvo On Call account. @@ -78,6 +69,11 @@ service_url: description: The service URL to use for Volvo On Call. Normally not necessary to specify. required: false type: string +mutable: + description: If set to true, include components that can make changes to the vehicle (unlock, start engine, start heater etc). + required: false + default: true + type: boolean name: description: Make it possible to provide a name for the vehicles. required: false @@ -92,3 +88,61 @@ scandinavian_miles: type: boolean default: false {% endconfiguration %} + +### {% linkable_title Available Resources %} + +The list of currently available resources: + +- `position` +- `lock` +- `heater` +- `odometer` +- `trip_meter1` +- `trip_meter2` +- `fuel_amount` +- `fuel_amount_level` +- `average_fuel_consumption` +- `distance_to_empty` +- `washer_fluid_level` +- `brake_fluid` +- `service_warning_status` +- `bulb_failures` +- `battery_range` +- `battery_level` +- `time_to_fully_charged` +- `battery_charge_status` +- `engine_start` +- `last_trip` +- `is_engine_running` +- `doors.hood_open` +- `doors.front_left_door_open` +- `doors.front_right_door_open` +- `doors.rear_left_door_open` +- `doors.rear_right_door_open` +- `windows.front_left_window_open` +- `windows.front_right_window_open` +- `windows.rear_left_window_open` +- `windows.rear_right_window_open` +- `tyre_pressure.front_left_tyre_pressure` +- `tyre_pressure.front_right_tyre_pressure` +- `tyre_pressure.rear_left_tyre_pressure` +- `tyre_pressure.rear_right_tyre_pressure` +- `any_door_open` +- `any_window_open` + +## {% linkable_title Advanced Examples %} + +A more advanced example for setting the vehicle name and selecting what resources to display: + +```yaml +# Example configuration.yaml entry +volvooncall: + username: YOUR_USERNAME + password: YOUR_PASSWORD + name: + abc123: 'Batmobile' + resources: + - odometer + - lock + - heater +``` diff --git a/source/_components/w800rf32.markdown b/source/_components/w800rf32.markdown new file mode 100644 index 00000000000..5e26f629dc7 --- /dev/null +++ b/source/_components/w800rf32.markdown @@ -0,0 +1,35 @@ +--- +layout: page +title: "W800rf32" +description: "Instructions on how to integrate a W800rf32(a) into Home Assistant." +date: 2018-10-16 10:15 +sidebar: true +comments: false +sharing: true +footer: true +logo: w800rf32.png +ha_category: Hub +ha_release: 0.83 +ha_iot_class: "Local Push" +--- + +The `w800rf32` component supports W800RF32 devices by [WGL Designs](http://www.wgldesigns.com/w800.html) which +communicate in the frequency range of 310MHz or if you are outside Canada or the U.S., 433.92 MHz. + +The W800 family of RF receivers are designed to receive X10 RF signals generated from X10 products: Palm Pad +remotes, key chain remotes, Hawkeye motion detectors, and many, many other X10 RF devices. + +To enable W800rf32 in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +w800rf32: + device: PATH_TO_DEVICE +``` + +{% configuration %} +device: + description: "The path to USB/serial device, example: /dev/ttyUSB0." + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/water_heater.econet.markdown b/source/_components/water_heater.econet.markdown index 5ac129c4c38..5e2c439d546 100644 --- a/source/_components/water_heater.econet.markdown +++ b/source/_components/water_heater.econet.markdown @@ -14,8 +14,7 @@ ha_iot_class: "Cloud Polling" redirect_from: /components/climate.econet/ --- - -The `econet` water heater platform is consuming the information provided by a [EcoNet enabled Rheem water heater](http://www.rheem.com/EcoNet/Home). This platform allows you to set the temperature, the operation mode, and enable vaction mode. +The `econet` water heater platform is consuming the information provided by a [EcoNet enabled Rheem water heater](http://www.rheem.com/EcoNet/Home). This platform allows you to set the temperature, the operation mode, and enable vacation mode. ## {% linkable_title Configuration %} @@ -46,9 +45,9 @@ You can use the service `econet.add_vacation` to create a new vacation for your | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | The entity id of the water heater to add the vaction to. -| `start_date` | yes | This is a Unix timestamp for when the vaction should start. -| `end_date` | yes | this is a Unix timestamp for when the vaction should end. +| `entity_id` | yes | The entity id of the water heater to add the vacation to. +| `start_date` | yes | This is a Unix timestamp for when the vacation should start. +| `end_date` | yes | this is a Unix timestamp for when the vacation should end.

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 `/custom_components/example.py` and copy paste the content below: - ```python """ Example of a custom component. """ -import time import logging +import time + +import voluptuous as vol -from homeassistant.const import STATE_HOME, STATE_NOT_HOME, STATE_ON, STATE_OFF -from homeassistant.helpers import validate_config -from homeassistant.helpers.event_decorators import \ - track_state_change, track_time_change -from homeassistant.helpers.service import service import homeassistant.components as core -from homeassistant.components import device_tracker -from homeassistant.components import light +import homeassistant.helpers.config_validation as cv +from homeassistant.components import device_tracker, light +from homeassistant.const import (ATTR_ENTITY_ID, SERVICE_TURN_OFF, + SERVICE_TURN_ON, STATE_HOME, STATE_NOT_HOME, + STATE_OFF, STATE_ON) +from homeassistant.core import split_entity_id +from homeassistant.helpers.event import (async_track_state_change, + async_track_time_change) # The domain of your component. Should be equal to the name of your component. DOMAIN = "example" @@ -69,17 +74,20 @@ SERVICE_FLASH = 'flash' # Shortcut for the logger _LOGGER = logging.getLogger(__name__) +# Validate that all required config options are given. +CONFIG_SCHEMA = vol.Schema({ + DOMAIN: vol.Schema({ + vol.Optional(CONF_TARGET): cv.entity_id + }) +}, extra=vol.ALLOW_EXTRA) -def setup(hass, config): +async def async_setup(hass, config): """Setup example component.""" - global TARGET_ID - - # Validate that all required config options are given. - if not validate_config(config, {DOMAIN: [CONF_TARGET]}, _LOGGER): - return False - TARGET_ID = config[DOMAIN][CONF_TARGET] + domain = split_entity_id(TARGET_ID)[0] + data = {ATTR_ENTITY_ID: TARGET_ID} + # Validate that the target entity id exists. if hass.states.get(TARGET_ID) is None: _LOGGER.error("Target entity id %s does not exist", @@ -90,70 +98,73 @@ def setup(hass, config): TARGET_ID = None return False - # Tell the bootstrapper that we initialized successfully. - return True + async def async_switch_on(entity_id, old_state, new_state): + """Callback to turn on our target entity""" + # If the target id is not set, return + if not TARGET_ID: + return + if not core.is_on(hass, TARGET_ID): + await hass.services.async_call(domain, SERVICE_TURN_ON, data) -@track_state_change(device_tracker.ENTITY_ID_ALL_DEVICES) -def track_devices(hass, entity_id, old_state, new_state): - """Called when the group.all devices change state.""" - # If the target id is not set, return - if not TARGET_ID: - return + async def async_switch_off(entity_id, old_state, new_state): + """Callback to turn off our target entity""" + # If the target id is not set, return + if not TARGET_ID: + return - # If anyone comes home and the entity is not on, turn it on. - if new_state.state == STATE_HOME and not core.is_on(hass, TARGET_ID): + if core.is_on(hass, TARGET_ID): + await hass.services.async_call(domain, SERVICE_TURN_OFF, data) - core.turn_on(hass, TARGET_ID) + async def async_wake_up(service): + """Turn light on in the morning. + + Turn the light on when called, but only if there are people home + and it is not already on. + """ + if not TARGET_ID: + return + + if device_tracker.is_on(hass) and not core.is_on(hass, TARGET_ID): + _LOGGER.info('People home at 7AM, turning target on') + await hass.services.async_call(domain, SERVICE_TURN_ON, data) + + async def async_flash_service(service): + """Service callback that will toggle the target. + + Set the light to off for 10 seconds if on and vice versa. + """ + if not TARGET_ID: + return + + if core.is_on(hass, TARGET_ID): + # We need this call to run blocking, as we want to wait 10s after it finished + await hass.services.async_call(domain, SERVICE_TURN_OFF, data, blocking=True) + time.sleep(10) + await hass.services.async_call(domain, SERVICE_TURN_ON, data) + else: + await hass.services.async_call(domain, SERVICE_TURN_ON, data, blocking=True) + time.sleep(10) + await hass.services.async_call(domain, SERVICE_TURN_OFF, data) + + # register the example.flash service + hass.services.async_register(DOMAIN, SERVICE_FLASH, async_flash_service) + + # If all lights turn off, turn off. + async_track_state_change( + hass, light.ENTITY_ID_ALL_LIGHTS, async_switch_off, STATE_ON, STATE_OFF) # If all people leave the house and the entity is on, turn it off. - elif new_state.state == STATE_NOT_HOME and core.is_on(hass, TARGET_ID): + async_track_state_change( + hass, device_tracker.ENTITY_ID_ALL_DEVICES, async_switch_off, STATE_HOME, STATE_NOT_HOME) - core.turn_off(hass, TARGET_ID) + # If anyone comes home and the entity is not on, turn it on. + async_track_state_change( + hass, device_tracker.ENTITY_ID_ALL_DEVICES, async_switch_on, STATE_NOT_HOME, STATE_HOME) + # Call wakeup callback at 7 AM + async_track_time_change(hass, async_wake_up, hour=7, minute=00, second=00) -@track_time_change(hour=7, minute=0, second=0) -def wake_up(hass, now): - """Turn light on in the morning. - - Turn the light on at 7 AM if there are people home and it is not already - on. - """ - if not TARGET_ID: - return - - if device_tracker.is_on(hass) and not core.is_on(hass, TARGET_ID): - _LOGGER.info('People home at 7AM, turning it on') - core.turn_on(hass, TARGET_ID) - - -@track_state_change(light.ENTITY_ID_ALL_LIGHTS, STATE_ON, STATE_OFF) -def all_lights_off(hass, entity_id, old_state, new_state): - """If all lights turn off, turn off.""" - if not TARGET_ID: - return - - if core.is_on(hass, TARGET_ID): - _LOGGER.info('All lights have been turned off, turning it off') - core.turn_off(hass, TARGET_ID) - - -@service(DOMAIN, SERVICE_FLASH) -def flash_service(hass, call): - """Service that will toggle the target. - - Set the light to off for 10 seconds if on and vice versa. - """ - if not TARGET_ID: - return - - if core.is_on(hass, TARGET_ID): - core.turn_off(hass, TARGET_ID) - time.sleep(10) - core.turn_on(hass, TARGET_ID) - - else: - core.turn_on(hass, TARGET_ID) - time.sleep(10) - core.turn_off(hass, TARGET_ID) + # Tell the bootstrapper that we initialized successfully. + return True ``` diff --git a/source/_cookbook/python_component_mqtt_basic.markdown b/source/_cookbook/python_component_mqtt_basic.markdown index f038f21969e..0d208a38736 100644 --- a/source/_cookbook/python_component_mqtt_basic.markdown +++ b/source/_cookbook/python_component_mqtt_basic.markdown @@ -34,8 +34,8 @@ DEFAULT_TOPIC = 'home-assistant/hello_mqtt' def setup(hass, config): """Set up the Hello MQTT component.""" - mqtt = loader.get_component('mqtt') - topic = config[DOMAIN].get('topic', DEFAULT_TOPIC) + mqtt = hass.components.mqtt + topic = config[DOMAIN].get(CONF_TOPIC, DEFAULT_TOPIC) entity_id = 'hello_mqtt.last_message' # Listener to be called when we receive a message. @@ -44,7 +44,7 @@ def setup(hass, config): hass.states.set(entity_id, payload) # Subscribe our listener to a topic. - mqtt.subscribe(hass, topic, message_received) + mqtt.subscribe(topic, message_received) # Set the initial state. hass.states.set(entity_id, 'No messages') @@ -52,7 +52,7 @@ def setup(hass, config): # Service to publish a message on MQTT. def set_state_service(call): """Service to send a message.""" - mqtt.publish(hass, topic, call.data.get('new_state')) + mqtt.publish(topic, call.data.get('new_state')) # Register our service with Home Assistant. hass.services.register(DOMAIN, 'set_state', set_state_service) diff --git a/source/_cookbook/python_component_simple_alarm.markdown b/source/_cookbook/python_component_simple_alarm.markdown index 16e7d015daa..e212f5d5255 100644 --- a/source/_cookbook/python_component_simple_alarm.markdown +++ b/source/_cookbook/python_component_simple_alarm.markdown @@ -23,10 +23,16 @@ simple_alarm: unknown_light: group.living_room ``` -Configuration variables: - -- **known_light** (*Optional*): Which light/light group has to flash when a known device comes home. -- **unknown_light** (*Optional*): Which light/light group has to flash red when light turns on while no one home. +{% configuration %} +known_light: + description: Which light/light group has to flash when a known device comes home. + required: false + type: string +unknown_light: + description: Which light/light group has to flash red when light turns on while no one home. + required: false + type: string +{% endconfiguration %} Create the file `/custom_components/simple_alarm.py` and copy paste the content below: diff --git a/source/_docs/authentication.markdown b/source/_docs/authentication.markdown index 8d711c416af..655e4002d57 100644 --- a/source/_docs/authentication.markdown +++ b/source/_docs/authentication.markdown @@ -10,39 +10,56 @@ sharing: true footer: true --- -Access to Home Assistant is secured by our authentication system. Each member of your household will get their own user account to log in and access Home Assistant. +Our authentication system secures access to Home Assistant. -Home Assistant contains two different user types: the owner user account and normal users. The owner user account is created when you start Home Assistant for the first time. This account has some special privileges compared to the other users of the system: - - - Manage users - - Configure integrations and other settings (soon) - - Configure Hass.io (soon) - -## {% linkable_title Authentication %} - -When a user wants to use Home Assistant, they have to log in. When navigating to the frontend without authentication, the user is asked for a login. The login page will always show you the website that you're logging in to. +If you are starting Home Assistant for the first time, or you have logged out, you will be asked for credentials before you can log in. Screenshot of the login screen -When logging in, make sure that the URL in the URL bar is showing the address of your Home Assistant instance. +## {% linkable_title User accounts %} -## {% linkable_title Profile %} +When you start Home Assistant for the first time the _owner_ user account is created. This account has some special privileges and can: -Once you're logged in, you can access the profile page by clicking on the badge next to the Home Assistant title in the sidebar. Here you can change your preferred language or change your password. You can also log out. + - Create and manage other user accounts. + - Configure integrations and other settings (coming soon). + - Configure Hass.io (coming soon). + +

+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. Screenshot of the profile page -## {% linkable_title Multi-factor authentication %} +You can: -As a user, you can setup multi-factor authentication with time-based one-time passwords. This is an extra challenge that you have to solve after you finish your login. You will be able to set up these challenges from the profile page once you're logged in. +* Change the language you prefer Home Assistant to use. +* Change your password. +* Select the [theme](/components/frontend/#defining-themes) for the interface of Home Assistant. +* Enable or disable [multi-factor authentication](/docs/authentication/multi-factor-auth/). +* Delete _Refresh Tokens_. These are created when you log in from a device. Delete them if you want to force the device to log out. +* Create [Long Lived Access Tokens](https://developers.home-assistant.io/docs/en/auth_api.html#long-lived-access-token) so scripts can securely interact with Home Assistant. +* Log out of Home Assistant. -Screenshot of setting up multi-factor authentication +### {% linkable_title Securing your login %} + +_Make sure to choose a secure password!_ At some time in the future, you will probably want to access Home Assistant from outside your local network. This means you are also exposed to random black-hats trying to do the same. Treat the password like the key to your house. + + +As an extra level of security, you can turn on [multi-factor authentication](/docs/authentication/multi-factor-auth/). + +## {% linkable_title Other authentication techniques %} + +Home Assistant provides several ways to authenticate. See the [Auth Providers](/docs/authentication/providers/) section. ## {% linkable_title Troubleshooting %} ### {% linkable_title Authentication failures from `127.0.0.1` %} -If you're seeting authentication failures from `127.0.0.1` and you're using the `nmap` device tracker, you should [exclude the Home Assistant IP](/components/device_tracker.nmap_tracker/#exclude) from being scanned. +If you're seeing authentication failures from `127.0.0.1` and you're using the `nmap` device tracker, you should [exclude the Home Assistant IP](/components/device_tracker.nmap_tracker/#exclude) from being scanned. ### {% linkable_title Bearer token warnings %} @@ -56,7 +73,7 @@ If you see this, you need to add an [`api_password`](/components/http/#api_passw ### {% linkable_title Bearer token informational messages %} -If instead, you see the following, then this is a message for component developers, to tell them that they need to update how they authenticate to Home Assistant. As an end user you don't need to do anything: +If you see the following, then this is a message for component developers, to tell them they need to update how they authenticate to Home Assistant. As an end user you don't need to do anything: ```txt INFO (MainThread) [homeassistant.components.http.auth] You need to use a bearer token to access /blah/blah from 192.0.2.4 @@ -64,36 +81,36 @@ INFO (MainThread) [homeassistant.components.http.auth] You need to use a bearer ### {% linkable_title Lost owner password %} -While you should hopefully be storing your passwords in a password manager, if you lose the password associated with the owner account the only way to resolve this is to delete *all* the authentication data. You do this by shutting down Home Assistant and deleting the following files from the `.storage/` folder in your [configuration folder](https://www.home-assistant.io/docs/configuration/): +While you should hopefully be storing your passwords in a password manager, if you lose the password associated with the owner account the only way to resolve this is to delete *all* the authentication data. You do this by shutting down Home Assistant and deleting the following files from the `.storage/` folder in your [configuration folder](/docs/configuration/): * `auth` * `auth_provider.homeassistant` * `onboarding` -When you start Home Assistant next you'll be required to set up authentication again. +When you start Home Assistant next, you'll be required to set up authentication again. ### {% linkable_title Error: invalid client id or redirect url%} Screenshot of Error: invalid client id or redirect url -You have to use a domain name, not IP address to remote access Home Assistant; otherwise you will get **Error: invalid client id or redirect url** error on the login form. However, you can use the IP address to access Home Assistant in your home network. +You have to use a domain name, not IP address, to remote access Home Assistant otherwise you will get **Error: invalid client id or redirect url** error on the login form. However, you can use the IP address to access Home Assistant in your home network. -It because we only allow using IP address as client ID when your IP address is one of internal network address (e.g., 192.168.0.1) or loopback address (e.g., 127.0.0.1). +This is because we only allow an IP address as a client ID when your IP address is an internal network address (e.g., `192.168.0.1`) or loopback address (e.g., `127.0.0.1`). -If you don't have a valid domain name for your Home Assistant instance, you can modify the `hosts` file on your computer to fake one. For example, if you are on Windows, edit `C:\Windows\System32\Drivers\etc\hosts` file with administrator privilege, add following entry. +If you don't have a valid domain name for your Home Assistant instance, you can modify the `hosts` file on your computer to fake one. On Windows, edit the `C:\Windows\System32\Drivers\etc\hosts` file with administrator privilege, or on Linux the `/etc/hosts` file, and add following entry: ```text 12.34.56.78 hassbian.home ``` -(Please replace `12.34.56.78` with your Home Assistant's public IP address) +Replace `12.34.56.78` with your Home Assistant's public IP address. -It will allow you to open Home Assistant instance by access `http://hassbian.home:8123/` +This will allow you to open Home Assistant at `http://hassbian.home:8123/` ### {% linkable_title Stuck on Loading data %} -Some advert blocking software, such as Wipr, also blocks web sockets. If you're stuck on the Loading data screen, try disabling your ad blocker. +Some ad blocking software, such as Wipr, also blocks web sockets. If you're stuck on the Loading data screen, try disabling your ad blocker. ### {% linkable_title Migrating from pre 0.77 %} -If you were using the authentication system before 0.77, you'll likely have `auth:` and `auth_providers:` defined. You'll need to remove these and let Home Assistant [handle it automatically](https://www.home-assistant.io/docs/authentication/providers/#configuring-auth-providers). +If you were using the authentication system before 0.77, you'd likely have `auth:` and `auth_providers:` defined. You'll need to remove these and let Home Assistant [handle it automatically](/docs/authentication/providers/#configuring-auth-providers). diff --git a/source/_docs/authentication/multi-factor-auth.markdown b/source/_docs/authentication/multi-factor-auth.markdown index 3f09b878487..16ecd5b8e87 100644 --- a/source/_docs/authentication/multi-factor-auth.markdown +++ b/source/_docs/authentication/multi-factor-auth.markdown @@ -10,23 +10,28 @@ sharing: true footer: true --- -

-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/). +Screenshot of setting up multi-factor authentication

-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.

-When a user logs in, it needs to authenticate against an auth provider. An auth provider will check the users' credentials, and if credentials are linked to a user in the system, allows the user to log in. - -By default, Home Assistant has enabled an auth provider that stores the users in the configuration directory. An owner account can manage these users from the frontend. - -To make the transition from API password to authentication system easier, we've added a legacy API password auth provider. This enables users to log in with the API password. This authentication provider is enabled by default if a user has an API password configured. - ## {% linkable_title Configuring auth providers %}

-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/`. This endpoint does not require authentication besides knowing the webhook id. You can either send encoded form or JSON data, available in the template as either `trigger.json` or `trigger.data`. @@ -201,9 +212,11 @@ Webhook triggers are triggered by web requests made to the webhook endpoint: `/a automation: trigger: platform: webhook - webhook_id: + webhook_id: some_hook_id ``` +You could test triggering above automation by sending a POST HTTP request to `http://your-home-assistant:8123/api/webhook/some_hook_id`. + ### {% linkable_title Zone trigger %} Zone triggers can trigger when an entity is entering or leaving the zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. This includes [GPS Logger](/components/device_tracker.gpslogger/), the [OwnTracks platform](/components/device_tracker.owntracks/) and the [iCloud platform](/components/device_tracker.icloud/). @@ -218,6 +231,21 @@ automation: event: enter # or "leave" ``` +### {% linkable_title Geo Location trigger %} + +Geo Location triggers can trigger when an entity is appearing in or disappearing from a zone. Entities that are created by a [Geo Location](/components/geo_location/) platform support reporting GPS coordinates. +Because entities are generated and removed by these platforms automatically, the entity id normally cannot be predicted. Instead, this trigger requires the definition of a `source` which is directly linked to one of the Geo Location platforms. + +```yaml +automation: + trigger: + platform: geo_location + source: nsw_rural_fire_service_feed + zone: zone.bushfire_alert_zone + # Event is either enter or leave + event: enter # or "leave" +``` + ### {% linkable_title Multiple triggers %} When your want your automation rule to have multiple triggers, just prefix the first line of each trigger with a dash (-) and indent the next lines accordingly. Whenever one of the triggers fires, your rule is executed. diff --git a/source/_docs/autostart/macos.markdown b/source/_docs/autostart/macos.markdown index 56e6b27c3f6..012c72ff83a 100644 --- a/source/_docs/autostart/macos.markdown +++ b/source/_docs/autostart/macos.markdown @@ -10,7 +10,7 @@ footer: true redirect_from: /getting-started/autostart-macos/ --- -Setting up Home Assistant to run as a background service is simple; macOS will start Home Assistant on boot and make sure it's always running. +Setting up Home Assistant to run as a background service is simple; macOS will start Home Assistant after the system has booted, the user has logged in, and make sure it's always running. To get Home Assistant installed as a background service, run: diff --git a/source/_docs/autostart/systemd.markdown b/source/_docs/autostart/systemd.markdown index 6b43b19c2e1..450ee5a8a20 100644 --- a/source/_docs/autostart/systemd.markdown +++ b/source/_docs/autostart/systemd.markdown @@ -21,8 +21,8 @@ If the preceding command returns the string `systemd`, continue with the instruc A service file is needed to control Home Assistant with `systemd`. The template below should be created using a text editor. Note, root permissions via `sudo` will likely be needed. The following should be noted to modify the template: - `ExecStart` contains the path to `hass` and this may vary. Check with `whereis hass` for the location. -- For most systems, the file is `/etc/systemd/system/home-assistant@[your user].service` with [your user] replaced by the user account that Home Assistant will run as (normally `homeassistant`). In particular, this is the case for Ubuntu 16.04. -- If unfamiliar with command-line text editors, `sudo nano -w [filename]` can be used with `[filename]` replaced with the full path to the file. Ex. `sudo nano -w /etc/systemd/system/home-assistant@[your user].service`. After text entered, press CTRL-X then press Y to save and exit. +- For most systems, the file is `/etc/systemd/system/home-assistant@YOUR_USER.service` with YOUR_USER replaced by the user account that Home Assistant will run as (normally `homeassistant`). In particular, this is the case for Ubuntu 16.04. +- If unfamiliar with command-line text editors, `sudo nano -w [filename]` can be used with `[filename]` replaced with the full path to the file. Ex. `sudo nano -w /etc/systemd/system/home-assistant@YOUR_USER.service`. After text entered, press CTRL-X then press Y to save and exit. - If you're running Home Assistant in a Python virtual environment or a Docker container, please skip to the appropriate template listed below. ``` @@ -41,7 +41,7 @@ WantedBy=multi-user.target ### {% linkable_title Python virtual environment %} -If you've setup Home Assistant in `virtualenv` following our [Python installation guide](/getting-started/installation-virtualenv/) or [manual installation guide for Raspberry Pi](/getting-started/installation-raspberry-pi/), the following template should work for you. If Home Assistant install is not located at `/srv/homeassistant`, please modify the `ExecStart=` line appropriately. +If you've setup Home Assistant in `virtualenv` following our [Python installation guide](/getting-started/installation-virtualenv/) or [manual installation guide for Raspberry Pi](/getting-started/installation-raspberry-pi/), the following template should work for you. If Home Assistant install is not located at `/srv/homeassistant`, please modify the `ExecStart=` line appropriately. `YOUR_USER` should be replaced by the user account that Home Assistant will run as (e.g `homeassistant`). ``` [Unit] @@ -51,7 +51,7 @@ After=network-online.target [Service] Type=simple User=%i -ExecStart=/srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant" +ExecStart=/srv/homeassistant/bin/hass -c "/home/YOUR_USER/.homeassistant" [Install] WantedBy=multi-user.target @@ -70,7 +70,7 @@ After=docker.service [Service] Restart=always RestartSec=3 -ExecStart=/usr/bin/docker run --name="home-assistant-%i" -v /home/%i/.homeassistant/:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant +ExecStart=/usr/bin/docker run --name=home-assistant-%i -v /home/%i/.homeassistant/:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant ExecStop=/usr/bin/docker stop -t 2 home-assistant-%i ExecStopPost=/usr/bin/docker rm -f home-assistant-%i @@ -89,29 +89,29 @@ $ sudo systemctl --system daemon-reload To have Home Assistant start automatically at boot, enable the service. ```bash -$ sudo systemctl enable home-assistant@[your user] +$ sudo systemctl enable home-assistant@YOUR_USER ``` To disable the automatic start, use this command. ```bash -$ sudo systemctl disable home-assistant@[your user] +$ sudo systemctl disable home-assistant@YOUR_USER ``` To start Home Assistant now, use this command. ```bash -$ sudo systemctl start home-assistant@[your user] +$ sudo systemctl start home-assistant@YOUR_USER ``` You can also substitute the `start` above with `stop` to stop Home Assistant, `restart` to restart Home Assistant, and 'status' to see a brief status report as seen below. ```bash -$ sudo systemctl status home-assistant@[your user] -● home-assistant@fab.service - Home Assistant for [your user] - Loaded: loaded (/etc/systemd/system/home-assistant@[your user].service; enabled; vendor preset: disabled) +$ sudo systemctl status home-assistant@YOUR_USER +● home-assistant@fab.service - Home Assistant for YOUR_USER + Loaded: loaded (/etc/systemd/system/home-assistant@YOUR_USER.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2016-03-26 12:26:06 CET; 13min ago Main PID: 30422 (hass) - CGroup: /system.slice/system-home\x2dassistant.slice/home-assistant@[your user].service + CGroup: /system.slice/system-home\x2dassistant.slice/home-assistant@YOUR_USER.service ├─30422 /usr/bin/python3 /usr/bin/hass └─30426 /usr/bin/python3 /usr/bin/hass [...] @@ -120,17 +120,17 @@ $ sudo systemctl status home-assistant@[your user] To get Home Assistant's logging output, simple use `journalctl`. ```bash -$ sudo journalctl -f -u home-assistant@[your user] +$ sudo journalctl -f -u home-assistant@YOUR_USER ``` Because the log can scroll quite quickly, you can select to view only the error lines: ```bash -$ sudo journalctl -f -u home-assistant@[your user] | grep -i 'error' +$ sudo journalctl -f -u home-assistant@YOUR_USER | grep -i 'error' ``` When working on Home Assistant, you can easily restart the system and then watch the log output by combining the above commands using `&&` ```bash -$ sudo systemctl restart home-assistant@[your user] && sudo journalctl -f -u home-assistant@[your user] +$ sudo systemctl restart home-assistant@YOUR_USER && sudo journalctl -f -u home-assistant@YOUR_USER ``` diff --git a/source/_docs/backend/database.markdown b/source/_docs/backend/database.markdown index 199466b4c43..c8266477d4e 100644 --- a/source/_docs/backend/database.markdown +++ b/source/_docs/backend/database.markdown @@ -10,9 +10,9 @@ footer: true redirect_from: /details/database/ --- -The default database used by Home Assistant is [SQLite](https://www.sqlite.org/) and is stored in your [configuration directory](/getting-started/configuration/) (e.g., `/.homeassistant/home-assistant_v2.db`). To change the database, use the [`recorder` component](/components/recorder/). +The default database used by Home Assistant is [SQLite](https://www.sqlite.org/), and the database file is stored in your [configuration directory](/getting-started/configuration/) (e.g., `/.homeassistant/home-assistant_v2.db`). If you prefer to run a database server (e.g. PostgreSQL), use the [`recorder` component](/components/recorder/). -To work with the SQLite database manually, you will need an installation of `sqlite3`, the command-line for SQLite database, or [DB Browser for SQLite](http://sqlitebrowser.org/), which provides an editor for executing SQL commands. +To work with the SQLite database manually from the command-line, you will need an [installation](http://www.sqlitetutorial.net/download-install-sqlite/) of `sqlite3`. Alternatively [DB Browser for SQLite](http://sqlitebrowser.org/) provides a viewer for exploring the database data and an editor for executing SQL commands. First load your database with `sqlite3`: ```bash @@ -124,4 +124,4 @@ The `VACUUM` command cleans your database. sqlite> VACUUM; ``` -For a more interactive way to work with the database or the create statistics, checkout our [Jupyter notebooks](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/tree/master/). +For a more interactive way of working with the database, check the [Data Science Portal](https://data.home-assistant.io/). diff --git a/source/_docs/configuration.markdown b/source/_docs/configuration.markdown index fb4193f7265..6a462d03d43 100644 --- a/source/_docs/configuration.markdown +++ b/source/_docs/configuration.markdown @@ -21,6 +21,7 @@ The location of the folder differs between operating systems: | Linux | `~/.homeassistant` | | Windows | `%APPDATA%/.homeassistant` | | Hass.io | `/config` | +| Docker | `/config` | If you want to use a different folder for configuration, use the config command line parameter: `hass --config path/to/config`. @@ -34,10 +35,11 @@ If you run into trouble while configuring Home Assistant, have a look at the [co ## {% linkable_title Reloading changes %} -You will have to restart Home Assistant for most changes to `configuration.yaml` to take effect. You can load changes to [automations](/docs/automation/), [customize](/docs/configuration/customizing-devices/), [groups](/components/group/), and [scripts](/components/script/) without restarting if you're not using [packages](/docs/configuration/packages/). +You will have to restart Home Assistant for most changes to `configuration.yaml` to take effect. +You can load changes to [automations](/docs/automation/), [customize](/docs/configuration/customizing-devices/), [groups](/components/group/), and [scripts](/components/script/) without restarting.

-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 ` port forwarding instructions`. You can use any free port on your router and forward that to port 8123. @@ -25,7 +25,9 @@ A problem with making a port accessible is that some Internet Service Providers If you cannot access your Home Assistant installation remotely, remember to check if your ISP provides you with a dedicated IP, instead of one shared with other users via a [CG-NAT](https://en.wikipedia.org/wiki/Carrier-grade_NAT). This is becoming fairly common nowadays due to the shortage of IPv4 addresses. Some, if not most ISPs will require you to pay an extra fee to be assigned a dedicated IPv4 address. -Remember: 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. +

+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 = -ha_key = -logfile = STDOUT -errorfile = STDERR -app_dir = /conf/apps -threads = 10 -latitude = -longitude = -elevation = -cert_path = -# Apps -[hello_world] -module = hello -class = HelloWorld -``` - -- `ha_url` is a reference to your Home Assistant installation and must include the correct port number and scheme (`http://` or `https://` as appropriate) -- `ha_key` should be set to your key if you have one, otherwise it can be removed. -- `logfile` (optional) is the path to where you want `AppDaemon` to keep its main log. When run from the command line this is not used - log messages come out on the terminal. When running as a daemon this is where the log information will go. In the example above I created a directory specifically for AppDaemon to run from, although there is no reason you can't keep it in the `appdaemon` directory of the cloned repository. If `logfile = STDOUT`, output will be sent to stdout instead of stderr when running in the foreground, if not specified, output will be sent to STDOUT. -- `errorfile` (optional) is the name of the logfile for errors - this will usually be errors during compilation and execution of the apps. If `errorfile = STDERR` errors will be sent to stderr instead of a file, if not specified, output will be sent to STDERR. -- `app_dir` (optional) is the directory the apps are placed in. If not specified, AppDaemon will look first in `~/.homeassistant` then `/etc/appdaemon` for a subdirectory named `apps` -- `threads` - the number of dedicated worker threads to create for running the apps. Note, this will bear no resemblance to the number of apps you have, the threads are re-used and only active for as long as required to tun a particular callback or initialization, leave this set to 10 unless you experience thread starvation -- `latitude`, `longitude`, `elevation`, `timezone` - should all be copied from your Home Assistant configuration file -- `cert_path` (optional) - path to root CA cert directory - use only if you are using self signed certs. - -The `#Apps` section is the configuration for the Hello World program and should be left in place for initial testing but can be removed later if desired, as other Apps are added, App configuration is described in the [API doc](API.md). - -## {% linkable_title Docker %} - -For Docker Configuration you need to take a couple of extra things into consideration. - -Our Docker image is designed to load your configuration and apps from a volume at `/conf` so that you can manage them in your own git repository, or place them anywhere else on the system and map them using the Docker command line. - -For example, if you have a local repository in `/Users/foo/ha-config` containing the following files: - -```bash -$ git ls-files -configuration.yaml -customize.yaml -known_devices.yaml -appdaemon.cfg -apps -apps/magic.py -``` - -You will need to modify the `appdaemon.cfg` file to point to these apps in `/conf/apps`: - -``` -[AppDaemon] -ha_url = -ha_key = -logfile = STDOUT -errorfile = STDERR -app_dir = /conf/apps -threads = 10 -latitude = -longitude = -elevation = -``` - -You can run Docker and point the conf volume to that directory. +https://appdaemon.readthedocs.io/en/latest/CONFIGURE.html diff --git a/source/_docs/ecosystem/backup/backup_github.markdown b/source/_docs/ecosystem/backup/backup_github.markdown index 82114cae475..497b788520c 100644 --- a/source/_docs/ecosystem/backup/backup_github.markdown +++ b/source/_docs/ecosystem/backup/backup_github.markdown @@ -57,16 +57,21 @@ Creating a `.gitignore` file in your repository will tell Git which files NOT to Here is an example that will ignore everything but your YAML configuration. ```bash -# Example .gitignore file for your config dir. Lines with ! will not be ignored. +# Example .gitignore file for your config dir. +# A * ensures that everything will be ignored. * + +# You can whitelist files/folders with !, these will not be ignored. !*.yaml !.gitignore -*.conf -*.txt -*.log +!*.md + +# Ignore folders. .storage .cloud .google.token + +# Ensure these YAML files are ignored, otherwise your secret data/credentials will leak. ip_bans.yaml secrets.yaml known_devices.yaml @@ -127,7 +132,7 @@ You may need to adjust the paths in the script depending on your Home Assistant #!/bin/bash cd /home/homeassistant/.homeassistant -source /srv/homeassistant/homeassistant_venv/bin/activate +source /srv/homeassistant/bin/activate hass --script check_config git add . diff --git a/source/_docs/ecosystem/ios.markdown b/source/_docs/ecosystem/ios.markdown index 027fe503230..57c9ad0c579 100644 --- a/source/_docs/ecosystem/ios.markdown +++ b/source/_docs/ecosystem/ios.markdown @@ -29,7 +29,9 @@ The app is available on the iOS App Store in every country that Apple supports. The `ios` component is the companion component for the Home Assistant iOS app. While not required, adding the `ios` component to your setup will greatly enhance the iOS app with new notification, location and sensor functions not possible with a standalone app. -Loading the `ios` component will also load the [`device_tracker`][device-tracker], [`zeroconf`][zeroconf] and [`notify`][notify] platforms. +Loading the `ios` component will also load the [`device_tracker`](/components/device_tracker), [`zeroconf`](/components/zeroconf) and [`notify`](/components/notify) platforms. + +The Home Assistant for iOS app supports the new authentication system introduced in Home Assistant 0.77. ## {% linkable_title Setup %} @@ -37,7 +39,7 @@ Loading the `ios` component will also load the [`device_tracker`][device-tracker The `ios` component will automatically be loaded under the following circumstances: -1. The [`discovery`][discovery] component is enabled. +1. The [`discovery`](/components/discovery) component is enabled. 2. You have just installed the app and are at the getting started screen. Automated discovery and component loading only happens at first install of the app. You may need to wait a few minutes for the iOS component to load as the `discovery` component only scans the network every 5 minutes. @@ -53,12 +55,10 @@ You may also manually load the `ios` component by adding the following to your c ios: ``` -Configuration variables: +{% configuration %} +push: + description: Actionable push notifications configuration. See the [actionable notifications documentation](/docs/ecosystem/ios/notifications/actions/) for more information. + required: false + type: list +{% endconfiguration %} -- **push** (*Optional*): Actionable push notifications configuration. See the [actionable notifications documentation][actionable-notifications] for more information. - -[discovery]: /components/discovery -[device-tracker]: /components/device_tracker -[zeroconf]: /components/zeroconf -[notify]: /components/notify -[actionable-notifications]: /docs/ecosystem/ios/notifications/actions/ diff --git a/source/_docs/ecosystem/ios/notifications/actions.markdown b/source/_docs/ecosystem/ios/notifications/actions.markdown index 3112ae06a33..9f1493b3d72 100644 --- a/source/_docs/ecosystem/ios/notifications/actions.markdown +++ b/source/_docs/ecosystem/ios/notifications/actions.markdown @@ -58,7 +58,7 @@ When sending a notification: - **identifier** (*Required*): A unique identifier for this action. Must be uppercase and have no special characters or spaces. Only needs to be unique to the category, not unique globally. - **title** (*Required*): The text to display on the button. Keep it short. - **activationMode** (*Optional*): The mode in which to run the app when the action is performed. Setting this to `foreground` will make the app open after selecting. Default value is `background`. -- **authenticationRequired** (*Optional*): If a truthy value (`true`, `True`, `yes`, etc.) the user must unlock the device before the action is performed. +- **authenticationRequired** (*Optional*): If `true`, the user must unlock the device before the action is performed. - **destructive** (*Optional*): When the value of this property is a truthy value, the system displays the corresponding button differently to indicate that the action is destructive (text color is red). - **behavior** (*Optional*): When `textInput` the system provides a way for the user to enter a text response to be included with the notification. The entered text will be sent back to Home Assistant. Default value is `default`. - **textInputButtonTitle** (*Optional*): The button label. *Required* if `behavior` is `textInput`. @@ -76,14 +76,14 @@ ios: - identifier: 'SOUND_ALARM' title: 'Sound Alarm' activationMode: 'background' - authenticationRequired: yes - destructive: yes + authenticationRequired: true + destructive: true behavior: 'default' - identifier: 'SILENCE_ALARM' title: 'Silence Alarm' activationMode: 'background' - authenticationRequired: yes - destructive: no + authenticationRequired: true + destructive: false behavior: 'textInput' textInputButtonTitle: 'Silencio!' textInputPlaceholder: 'Placeholder' diff --git a/source/_docs/ecosystem/ios/notifications/content_extensions.markdown b/source/_docs/ecosystem/ios/notifications/content_extensions.markdown index 721386de2e3..29f0f5c0727 100644 --- a/source/_docs/ecosystem/ios/notifications/content_extensions.markdown +++ b/source/_docs/ecosystem/ios/notifications/content_extensions.markdown @@ -93,13 +93,13 @@ ios: - identifier: 'OPEN_COVER' title: 'Open Cover' activationMode: 'background' - authenticationRequired: yes + authenticationRequired: true destructive: no - identifier: 'CLOSE_COVER' title: 'Close Cover' activationMode: 'background' - authenticationRequired: yes - destructive: yes + authenticationRequired: true + destructive: true ``` # Troubleshooting diff --git a/source/_docs/ecosystem/nginx.markdown b/source/_docs/ecosystem/nginx.markdown index 0d44113b3e4..0117554c3d7 100644 --- a/source/_docs/ecosystem/nginx.markdown +++ b/source/_docs/ecosystem/nginx.markdown @@ -83,6 +83,21 @@ Double check this configuration to ensure all settings are correct and start ngi Forward ports 443 and 80 to your server on your router. Do not forward port 8123. +### {% linkable_title 9. Configure Home Assistant %} + +Home Assistant is still available without using the NGINX proxy. Restricting it to only listen to `127.0.0.1` will forbid direct accesses. Also, Home Assistant should be told to trust headers coming from the NGINX proxy only. Otherwise, incoming requests will always come from `127.0.0.1` and not the real IP address. + +On your `configuration.yaml` file, edit the `http` component. + +{% configuration %} +http: + server_host: 127.0.0.1 + # Update this line to be your domain + base_url: https://exemple.com + use_x_forwarded_for: true + trusted_proxies: 127.0.0.1 +{% endconfiguration %} + ### {% linkable_title NGINX Config %} ```nginx diff --git a/source/_docs/ecosystem/notebooks.markdown b/source/_docs/ecosystem/notebooks.markdown index 9cde967703a..b7fb97f2bac 100644 --- a/source/_docs/ecosystem/notebooks.markdown +++ b/source/_docs/ecosystem/notebooks.markdown @@ -10,12 +10,10 @@ footer: true redirect_from: /ecosystem/notebooks/ --- -The [Jupyter Notebooks](http://jupyter.org/) allows you to create and share documents that contain live code, equations, visualizations, and explanatory text directly in your browser. The web application what is formerly known as the IPython Notebook supports over 40 programming languages. - -Visit [https://try.jupyter.org/](https://try.jupyter.org/) to get a preview before you install it locally. +[Jupyter Notebooks](http://jupyter.org/) allow you to create and share documents that contain live code, equations, visualizations, and explanatory text directly in your browser. Over 40 programming languages are supported including Python, R and Julia. Visit [https://try.jupyter.org/](https://try.jupyter.org/) to try out Jupyter notebooks without installing anything.

-[nbviewer](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/tree/master/) is rendering our notebooks online. GitHub is creating a preview as well. +[nbviewer](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/tree/master/) is used to render the Home Assistant notebooks online. GitHub will also display a preview of Jupyter notebooks. diff --git a/source/_docs/ecosystem/notebooks/api.markdown b/source/_docs/ecosystem/notebooks/api.markdown index 11d01248a29..ab40d9f26fa 100644 --- a/source/_docs/ecosystem/notebooks/api.markdown +++ b/source/_docs/ecosystem/notebooks/api.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Home Assistant Python API" -description: "Basic example how to work with the Home Assistant Python API in a Jupyter notebook." +description: "Basic example of interacting with Home Assistant live from a Jupyter notebook using the Python API." date: 2016-07-23 09:00 sidebar: true comments: false @@ -10,4 +10,4 @@ footer: true redirect_from: /ecosystem/notebooks/api/ --- -The [Python API](/developers/python_api/) allows one to create [interactive notebooks](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/home-assistant-python-api.ipynb). +You can interact with Home Assistant live from Jupyter notebooks by using the Home Assistant [Python API](/developers/python_api/). [See this example notebook](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/home-assistant-python-api.ipynb). diff --git a/source/_docs/ecosystem/notebooks/database.markdown b/source/_docs/ecosystem/notebooks/database.markdown index afb900c56e8..58117385269 100644 --- a/source/_docs/ecosystem/notebooks/database.markdown +++ b/source/_docs/ecosystem/notebooks/database.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Database" -description: "Basic example how to work with stored Home Assistant information in a Jupyter notebook." +description: "Accessing the Home-Assistant database from a Jupyter notebook." date: 2016-07-23 09:00 sidebar: true comments: false @@ -10,4 +10,4 @@ footer: true redirect_from: /ecosystem/notebooks/database/ --- -The [Database example](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/database-examples.ipynb) shows you the details about how you can work with stored values. +You can directly access the Home-Assistant database from Jupyter notebooks. The [Database example](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/database-examples.ipynb) shows you how you can work with stored database values. diff --git a/source/_docs/ecosystem/notebooks/installation.markdown b/source/_docs/ecosystem/notebooks/installation.markdown index 96997dd0650..eb0b16a7982 100644 --- a/source/_docs/ecosystem/notebooks/installation.markdown +++ b/source/_docs/ecosystem/notebooks/installation.markdown @@ -10,7 +10,7 @@ footer: true redirect_from: /ecosystem/notebooks/installation/ --- -To run Jupyter Notebooks locally, an installation of [Jupyter](http://jupyter.org/) is needed. Consider to run Jupyter in a [virtualenv](/getting-started/installation-virtualenv/). +To run Jupyter Notebooks locally, an installation of [Jupyter](http://jupyter.org/) is needed. Consider running Jupyter in a [virtualenv](/getting-started/installation-virtualenv/) in order to properly manage dependencies. ```bash $ pip3 install jupyter matplotlib @@ -20,7 +20,7 @@ $ pip3 install jupyter matplotlib Certain notebooks hosted in the [Home Assistant notebooks repository](https://github.com/home-assistant/home-assistant-notebooks) require access to a running Home Assistant instance or parts of a Home Assistant installation. If you want to run those notebooks, install Home Assistant with `$ pip3 install homeassistant` as well.

-Now you are able to start the application. +Run Jupyter from the command line. ```bash $ jupyter notebook @@ -37,7 +37,7 @@ Open [http://localhost:8888/](http://localhost:8888/) in your browser. Press "Ne

-You will get an empty notebook with one cell. Cells can contain code or text. To get the output of a cell you need to execute them with "Cell" -> "Run Cells" from the menu or by pressing the icon. +You will get an empty notebook with one cell. Cells can contain code or text. To get the output of a cell you need to execute them with "Cell" -> "Run Cells" from the menu or by pressing the Play icon.

@@ -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. + +Graphic showing an example of sun conditions + ### {% 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' -%}

- {% include edit_github.html %} + {%- include edit_github.html -%}
- {% if page.logo %} + {%- if page.logo -%} - {% endif %} + {%- endif -%}
- {% assign file_parts = page.url | split: '/' | last | split: '.' %} + {%- assign file_parts = page.url | split: '/' | last | split: '.' -%} - {% if file_parts.size == 2 %} - {% assign is_platform = true %} - {% assign imp_name = file_parts[1] %} - {% assign parent_name = file_parts[0] %} - {% assign parent_url = parent_name | prepend: '/components/' | append: '/' %} - {% assign parent_component = components | where: 'url', parent_url | first %} - {% else %} - {% assign is_platform = false %} - {% assign imp_name = file_parts | first %} - {% endif %} + {%- if file_parts.size == 2 -%} + {%- assign is_platform = true -%} + {%- assign imp_name = file_parts[1] -%} + {%- assign parent_name = file_parts[0] -%} + {%- assign parent_url = parent_name | prepend: '/components/' | append: '/' -%} + {%- assign parent_component = components | where: 'url', parent_url | first -%} + {%- else -%} + {%- assign is_platform = false -%} + {%- assign imp_name = file_parts | first -%} + {%- endif -%} - {% if page.ha_iot_class %} + {%- if page.ha_iot_class -%}
IoT class: {{ page.ha_iot_class }}
- {% endif %} + {%- endif -%} - {% if page.ha_qa_scale %} + {%- if page.ha_qa_scale -%} - {% endif %} + {%- endif -%} - {% if page.ha_release %} + {%- if page.ha_release -%}
Introduced in release: {{ page.ha_release }}
- {% endif %} + {%- endif -%} - {% if is_platform %} + {%- if is_platform -%} - {% endif %} + {%- endif -%} - {% if is_platform and parent_name != 'sensor' %} + {%- if is_platform and parent_name != 'sensor' -%} - {% elsif is_platform == false and imp_name != 'ifttt' %} + {%- elsif is_platform == false and imp_name != 'ifttt' -%} - {% assign platforms_found = false %} - {% for component in components %} - {% if component.url != page.url %} - {% assign comp_imp_name = component.url | split: '/' | last | split: '.' | first %} - {% if comp_imp_name == imp_name %} - {% unless platforms_found %} - {% assign platforms_found = true %} + {%- assign platforms_found = false -%} + {%- for component in components -%} + {%- if component.url != page.url -%} + {%- assign comp_imp_name = component.url | split: '/' | last | split: '.' | first -%} + {%- if comp_imp_name == imp_name %} + {%- unless platforms_found -%} + {%- assign platforms_found = true -%}

Platforms

    - {% endunless %} + {%- endunless -%}
  • {{component.title}}
  • - {% endif %} - {% endif %} - {% endfor %} + {% endif -%} + {%- endif -%} + {%- endfor -%} - {% if platforms_found %} + {%- if platforms_found -%}
- {% 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 -%}
  • {{component.title}}
  • - {% endif %} - {% endif %} - {% endfor %} + {%- endif -%} + {%- endif -%} + {%- endfor -%} - {% if related_found %} + {%- if related_found -%}
- {% endif %} + {%- endif -%} - {% if page.ha_category %} + {%- if page.ha_category -%}

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 -%}
  • - {% if component.url == page.url %} + {%- if component.url == page.url -%} {{component.title}} - {% else %} + {%- else -%} {{component.title}} - {% endif %} + {%- endif -%}
  • - {% endif %} - {% endfor %} + {%- endif -%} + {%- endfor -%}
- {% endif %} + {%- endif -%}
diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html index 84f70a61751..4d9912c1253 100644 --- a/source/_includes/asides/docs_navigation.html +++ b/source/_includes/asides/docs_navigation.html @@ -10,7 +10,6 @@ {% active_link /docs/installation/ Installation %}
  • {% active_link /hassio/ Hass.io %}
  • -
  • {% active_link /docs/installation/virtualenv/ Python Virtual Env %}
  • {% active_link /docs/installation/hassbian/ Hassbian %}
  • {% active_link /docs/installation/updating/ Updating %}
  • {% active_link /docs/installation/troubleshooting/ Troubleshooting %}
  • @@ -96,10 +95,7 @@
  • {% active_link /docs/tools/benchmark/ benchmark %}
  • {% active_link /docs/tools/check_config/ check_config %}
  • {% active_link /docs/tools/credstash/ credstash %}
  • -
  • {% active_link /docs/tools/db_migrator/ db_migrator %}
  • {% active_link /docs/tools/ensure_config/ ensure_config %}
  • -
  • {% active_link /docs/tools/influxdb_import/ influxdb_import %}
  • -
  • {% active_link /docs/tools/influxdb_migrator/ influxdb_migrator %}
  • {% active_link /docs/tools/keyring/ keyring %}
diff --git a/source/_includes/asides/lovelace_navigation.html b/source/_includes/asides/lovelace_navigation.html index 589f838ee21..fd5b58c70ab 100644 --- a/source/_includes/asides/lovelace_navigation.html +++ b/source/_includes/asides/lovelace_navigation.html @@ -7,11 +7,20 @@
+
+

Advanced

+ +
+

Cards