diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 7e57b113669..30f074df148 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -3,3 +3,9 @@ **Pull request in [home-assistant](https://github.com/home-assistant/home-assistant) (if applicable):** home-assistant/home-assistant# +## Checklist: + + - [ ] Branch: Fixes, changes and adjustments should be created against `current`. New documentation for platforms/components and features should go to `next`. + - [ ] The documentation follow the [standards][standards]. + +[standards]: https://home-assistant.io/developers/documentation/standards/ diff --git a/.project b/.project new file mode 100644 index 00000000000..8039da0a1cc --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ + + + home-assistant.github.io + + + + + + + + diff --git a/.ruby-version b/.ruby-version index 2bf1c1ccf36..005119baaa0 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.3.1 +2.4.1 diff --git a/.travis.yml b/.travis.yml index 7cc1f19579f..fb4c4add6f8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: ruby sudo: false cache: bundler -script: bundle exec rake generate +script: travis_wait bundle exec rake generate after_success: - '[ "${TRAVIS_BRANCH}" = "current" ] && [ "${TRAVIS_PULL_REQUEST}" = "false" ] && bundle exec rake deploy || false' diff --git a/Gemfile b/Gemfile index a1d627a356a..c30860255d8 100644 --- a/Gemfile +++ b/Gemfile @@ -3,18 +3,9 @@ source "https://rubygems.org" group :development do gem 'rake', '~> 10.0' gem 'jekyll', '~> 3.0' - gem 'pygments.rb', '~> 0.6.3' - gem 'rdiscount', '~> 2.0' - gem 'RedCloth', '~> 4.2' - gem 'haml', '~> 4.0' gem 'compass', '~> 0.12' gem 'sass-globbing', '~> 1.0' - gem 'rubypants', '~> 0.2' - gem 'rb-fsevent', '~> 0.9' gem 'stringex', '~> 1.4' - gem 'execjs' - gem 'therubyracer', :platforms => :ruby - gem 'coderay' gem 'pry' end @@ -24,7 +15,6 @@ group :jekyll_plugins do gem 'jekyll-sitemap' gem 'jekyll-time-to-read' gem 'octopress', '~> 3.0' - gem 'octopress-filters' gem 'octopress-include-tag' end diff --git a/Gemfile.lock b/Gemfile.lock index a64797568a6..d706705eb30 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,45 +1,42 @@ GEM remote: https://rubygems.org/ specs: - RedCloth (4.3.2) - addressable (2.4.0) - chunky_png (1.3.6) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + chunky_png (1.3.8) coderay (1.1.1) colorator (1.1.0) compass (0.12.7) chunky_png (~> 1.2) fssm (>= 0.2.7) sass (~> 3.2.19) - execjs (2.7.0) - ffi (1.9.14) + ffi (1.9.18) forwardable-extended (2.6.0) fssm (0.2.10) - haml (4.0.7) - tilt - jekyll (3.2.1) + jekyll (3.5.2) + addressable (~> 2.4) colorator (~> 1.0) jekyll-sass-converter (~> 1.0) jekyll-watch (~> 1.1) kramdown (~> 1.3) - liquid (~> 3.0) + liquid (~> 4.0) mercenary (~> 0.3.3) pathutil (~> 0.9) rouge (~> 1.7) safe_yaml (~> 1.0) jekyll-paginate (1.1.0) - jekyll-redirect-from (0.11.0) - jekyll (>= 2.0) + jekyll-redirect-from (0.12.1) + jekyll (~> 3.3) jekyll-sass-converter (1.3.0) sass (~> 3.2) - jekyll-sitemap (0.11.0) - addressable (~> 2.4.0) + jekyll-sitemap (1.1.1) + jekyll (~> 3.3) jekyll-time-to-read (0.1.2) jekyll jekyll-watch (1.5.0) listen (~> 3.0, < 3.1) - kramdown (1.12.0) - libv8 (3.16.14.15) - liquid (3.0.6) + kramdown (1.14.0) + liquid (4.0.0) listen (3.0.8) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) @@ -57,12 +54,7 @@ GEM colorator octopress-escape-code (2.1.1) jekyll (~> 3.0) - octopress-filters (1.4.0) - jekyll - octopress-hooks (~> 2.0) - rubypants-unicode - titlecase - octopress-hooks (2.6.1) + octopress-hooks (2.6.2) jekyll (>= 2.0) octopress-include-tag (1.1.3) jekyll (>= 2.0) @@ -71,71 +63,50 @@ GEM jekyll (>= 2.0) pathutil (0.14.0) forwardable-extended (~> 2.6) - posix-spawn (0.3.11) pry (0.10.4) coderay (~> 1.1.0) method_source (~> 0.8.1) slop (~> 3.4) - pygments.rb (0.6.3) - posix-spawn (~> 0.3.6) - yajl-ruby (~> 1.2.0) - rack (1.6.4) + public_suffix (3.0.0) + rack (1.6.8) rack-protection (1.5.3) rack rake (10.5.0) - rb-fsevent (0.9.7) - rb-inotify (0.9.7) - ffi (>= 0.5.0) - rdiscount (2.2.0.1) - redcarpet (3.3.4) - ref (2.0.0) + rb-fsevent (0.10.2) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) + redcarpet (3.4.0) rouge (1.11.1) - rubypants (0.5.0) - rubypants-unicode (0.2.5) safe_yaml (1.0.4) sass (3.2.19) sass-globbing (1.1.5) sass (>= 3.1) - sinatra (1.4.7) + sinatra (1.4.8) rack (~> 1.5) rack-protection (~> 1.4) tilt (>= 1.3, < 3) slop (3.6.0) stringex (1.5.1) - therubyracer (0.12.2) - libv8 (~> 3.16.14.0) - ref - tilt (2.0.5) + tilt (2.0.8) titlecase (0.1.1) - yajl-ruby (1.2.1) PLATFORMS ruby DEPENDENCIES - RedCloth (~> 4.2) - coderay compass (~> 0.12) - execjs - haml (~> 4.0) jekyll (~> 3.0) jekyll-paginate jekyll-redirect-from jekyll-sitemap jekyll-time-to-read octopress (~> 3.0) - octopress-filters octopress-include-tag pry - pygments.rb (~> 0.6.3) rake (~> 10.0) - rb-fsevent (~> 0.9) - rdiscount (~> 2.0) - rubypants (~> 0.2) sass-globbing (~> 1.0) sinatra (~> 1.4.2) stringex (~> 1.4) - therubyracer BUNDLED WITH - 1.10.6 + 1.15.4 diff --git a/README.markdown b/README.markdown index dc508edbd51..e055c8e3369 100644 --- a/README.markdown +++ b/README.markdown @@ -1,20 +1,34 @@ -[![Gitter](https://img.shields.io/gitter/room/nwjs/nw.js.svg)](https://gitter.im/home-assistant/website) +[![Discord](https://img.shields.io/discord/330944238910963714.svg)](https://discord.gg/CxqDrfU) [![Travis branch](https://img.shields.io/travis/home-assistant/home-assistant.github.io/next.svg)](https://travis-ci.org/home-assistant/home-assistant.github.io) [![Krihelimeter](http://www.krihelinator.xyz/badge/home-assistant/home-assistant.github.io)](http://www.krihelinator.xyz) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -# Home Assistant website +# Home Assistant website This is the source for the [Home-Assistant.io website](https://home-assistant.io). ## Setup -Setting up to contribute to documentation and the process for submitting pull requests is [explained here](https://home-assistant.io/developers/website/). +Setting up to contribute to documentation and the process for submitting pull requests is [explained here](https://home-assistant.io/developers/documentation/). ## Site preview In order to make the preview available on [http://127.0.0.1:4000](http://127.0.0.1:4000), use the command as follows: ```bash -$ rake preview +bundle exec rake preview +``` + +## Speeding up site generation + +Every release we post long changelogs to the website. This slows down generation of the website significantly! We include some tools to temporarily exclude the blog posts that you're not working on out of the way. + +```bash +bundle exec rake isolate[filename-of-blogpost] +``` + +When you're done working on the site, run the following command to move the posts back again: + +```bash +bundle exec rake integrate ``` diff --git a/_config.yml b/_config.yml index c6dbb537997..9500187094b 100644 --- a/_config.yml +++ b/_config.yml @@ -35,8 +35,6 @@ category_dir: blog/categories markdown: kramdown timezone: UTC -# highlighter: coderay - kramdown: input: GFM auto_ids: false @@ -48,10 +46,9 @@ kramdown: highlighter: rouge -gems: +plugins: - jekyll-redirect-from - jekyll-time-to-read - - octopress-filters - octopress-include-tag paginate: 10 # Posts per page on the blog index @@ -77,6 +74,8 @@ collections: output: true addons: output: true + faq: + output: true # ----------------------- # # 3rd Party Settings # @@ -140,13 +139,12 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 46 -current_patch_version: 1 -date_released: 2017-06-09 +current_minor_version: 57 +current_patch_version: 0 +date_released: 2017-11-04 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. # Major release: -patch_version_notes: "#release-0461---june-9" +patch_version_notes: "" # Minor release (Example #release-0431---april-25): - diff --git a/plugins/configuration.rb b/plugins/configuration.rb new file mode 100644 index 00000000000..52bcf87fb96 --- /dev/null +++ b/plugins/configuration.rb @@ -0,0 +1,114 @@ +module Jekyll + class ConfigurationBlock < Liquid::Block + TYPE_LINKS = { + 'action' => '/docs/scripts/', + 'device_class' => '/components/%{component}/#device_class', + 'template' => '/docs/configuration/templating/', + } + + def initialize(tag_name, text, tokens) + super + @component, @platform = text.strip.split('.', 2) + end + + def slug(key) + key.downcase.strip.gsub(' ', '-').gsub(/[^\w\-]/, '') + end + + def type_class(type) + ((type.is_a? Array) ? type.join(' ') : type).downcase + end + + def type_link(type, component: nil) + if type.include? ',' + type = type.split(',') + end + + if type.is_a? Array + return (type.map { |t| type_link(t, component: component) }).join(' | ') + end + + type.strip! + if TYPE_LINKS.include? type.downcase + url = TYPE_LINKS[type.downcase] % {component: component} + "[%s](%s)" % [type, url] + else + type + end + end + + def required_value(value) + if value === true + "Required" + elsif value === false + "Optional" + else + value.strip.titlecase + end + end + + def render_config_vars(vars:, component:, platform:, classes: nil) + result = Array.new + result << "
" + + result << vars.map do |key, attr| + markup = Array.new + markup << "
#{key}
" + markup << "
" + markup << "

" + if attr.key? 'type' + markup << "(" + markup << "#{type_link(attr['type'], component: component)})" + end + if attr.key? 'required' + markup << "(#{required_value(attr['required'])})" + end + if attr.key? 'description' + markup << "#{attr['description']}" + end + markup << "

" + if attr.key? 'default' + markup << "

Default value: #{attr['default']}

" + end + markup << "
" + + # Check for nested configuration variables + if attr.key? 'keys' + markup << "
" + markup << render_config_vars( + vars: attr['keys'], component: component, + platform: platform, classes: 'nested') + markup << "
" + end + + markup + end + + result << "
" + result.join + end + + def render(context) + if @component.nil? and @platform.nil? + page = context.environments.first['page'] + @component, @platform = page['slug'].split('.', 2) + end + + contents = super(context) + + component = Liquid::Template.parse(@component).render context + platform = Liquid::Template.parse(@platform).render context + + vars = SafeYAML.load(contents) + + <<~MARKUP +
+

Configuration Variables

+ #{render_config_vars(vars: vars, component: component, platform: platform)} +
+ MARKUP + end + end +end + +Liquid::Template.register_tag('configuration', Jekyll::ConfigurationBlock) diff --git a/plugins/filters.rb b/plugins/filters.rb new file mode 100644 index 00000000000..5eacd7b8cf4 --- /dev/null +++ b/plugins/filters.rb @@ -0,0 +1,76 @@ +module Jekyll + module AssetFilter + # Octopress filters + # Copyright (c) 2014 Brandon Mathis + + # MIT License + + # Permission is hereby granted, free of charge, to any person obtaining + # a copy of this software and associated documentation files (the + # "Software"), to deal in the Software without restriction, including + # without limitation the rights to use, copy, modify, merge, publish, + # distribute, sublicense, and/or sell copies of the Software, and to + # permit persons to whom the Software is furnished to do so, subject to + # the following conditions: + + # The above copyright notice and this permission notice shall be + # included in all copies or substantial portions of the Software. + + # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + + def site_url + 'https://home-assistant.io' + end + + # Prepend a url with the full site url + # + # input - a url + # + # Returns input with all urls expanded to include the full site url + # e.g. /images/awesome.gif => http://example.com/images/awesome.gif + # + def full_url(input) + expand_url(input, site_url) + end + + # Prepends input with a url fragment + # + # input - An absolute url, e.g. /images/awesome.gif + # url - The fragment to prepend the input, e.g. /blog + # + # Returns the modified url, e.g /blog + # + def expand_url(input, url=nil) + url ||= root + + url = if input.start_with?("http", url) + input + else + File.join(url, input) + end + + smart_slash(url) + end + + # Ensure a trailing slash if a url ends with a directory + def smart_slash(input) + if !(input =~ /\.\w+$/) + input = File.join(input, '/') + end + input + end + + # Convert url input into a standard canonical url by expanding urls and + # removing url fragments ending with `index.[ext]` + def canonical_url(input) + full_url(input).sub(/index\.\w+$/i, '') + end + end +end + +Liquid::Template.register_filter(Jekyll::AssetFilter) diff --git a/sass/custom/_component_page.scss b/sass/custom/_component_page.scss index a0cb1d53718..e3830dc2f8f 100644 --- a/sass/custom/_component_page.scss +++ b/sass/custom/_component_page.scss @@ -14,6 +14,16 @@ } } +@media only screen and (max-width: $palm-end) { + #components-page { + .hass-option-cards { + .option-card { + width: 100%; + } + } + } +} + @media only screen and (max-width: $lap-end) { #components-page { .filter-button-group { @@ -246,4 +256,4 @@ transform:scale(0); opacity:0 } -} \ No newline at end of file +} diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss index 651eacf82b6..16024b33bfe 100644 --- a/sass/custom/_paulus.scss +++ b/sass/custom/_paulus.scss @@ -1,5 +1,48 @@ @charset "UTF-8"; +$primary-color: #049cdb; + +.site-header { + position: relative; +} + +.search-container { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: white; + padding-top: 19px; + padding-right: 15%; + + .search { + max-width: 500px; + width: 100%; + border-bottom: 2px solid $primary-color; + float: right; + + .algolia-autocomplete { + width: calc(100% - 64px); + margin: 0 10px; + } + + input { + border: 0; + width: 100%; + outline: none; + } + } +} + +@media only screen and (max-width: $menu-collapse) { + .search-container { + z-index: 20; + padding-right: 5px; + padding-left: 5px; + } +} + .hero { background-color: #038FC7; padding-bottom: 0; @@ -58,24 +101,42 @@ } .frontpage { + .material-card { + margin-bottom: 24px; + } .current-version { - margin-bottom: 16px; - .release-date { white-space: nowrap; } - } .recent-posts { - margin-bottom: 16px; - .blog-date { white-space: nowrap; } } + .highlight-blog-post { + font-size: 2.0rem; + line-height: 1.15; + padding: 15px; + display: block; + text-decoration: none; + color: white; + transition: background-color .5s; + background-color: #038FC7; + + &.large { + font-size: 2.25rem; + line-height: 1.33333; + } + + &:hover { + background-color: lighten(#038FC7, 10%); + } + } + .shirt-promo { display: block; padding-top: 30%; @@ -120,6 +181,17 @@ } } + .seen-press { + margin-top: 24px; + + img { + border: 0; + box-shadow: none; + margin: 15px; + width: 200px; + max-width: 40%; + } + } } // https://fortawesome.github.io/Font-Awesome/3.2.1/icons/ @@ -129,7 +201,8 @@ h2:hover a.title-link, h3:hover a.title-link, h4:hover a.title-link, h5:hover a.title-link, -h6:hover a.title-link { +h6:hover a.title-link, +dt:hover a.title-link { position: relative; &::before { @@ -164,7 +237,7 @@ h6:hover a.title-link { } .icon i { - border: none !important; + border: none !important; } } @@ -213,7 +286,7 @@ article.post, article.page, article.listing { li { margin-bottom: 10px; - & > p { + & > p:last-child { margin-bottom: 0; } @@ -237,6 +310,13 @@ article.post, article.page, article.listing { h2 { font-size: 1.5em; margin-top: 2em; + + // Future re-design + // margin: 1.5em 0 1rem; + // + // border: 0; + // border-top: 1px solid $primary-color; + // padding-top: 1.4rem; } h3 { @@ -244,11 +324,17 @@ article.post, article.page, article.listing { letter-spacing: 0.125rem; font-size: 1.2rem; margin-top: 2em; + + // Future re-design + // margin: 2em 0 1rem; } h4 { font-size: 1.1rem; margin-top: 2em; + + // Future re-design + // margin: 1.5em 0 1rem; } } @@ -340,7 +426,8 @@ p.note { } .edit-github { - text-align: right; + float: right; + margin-left: 8px; margin-bottom: 8px; font-size: .8em; } @@ -357,7 +444,7 @@ ul.sidebar-menu { } a code { - color: #049cdb; + color: $primary-color; } twitterwidget { @@ -373,3 +460,48 @@ twitterwidget { max-width: 100%; overflow: hidden; } + +// Configuration variables +div.config-vars { + // Future re-design + // h3 { + // border: 0; + // border-top: 1px solid $primary-color; + // padding-top: 1.4rem; + // } + + dl { + margin-bottom: 1.5em; + + &.nested { + border-left: 1px dotted $primary-color; + padding-left: 6px; + } + + dt { + font-weight: bold; + } + + dd { + margin: 0 0 0.5em 1em; + + p.desc { + margin: 0; + + span.type, + span.required { + font-style: italic; + + &::after { + content: " " + } + } + } + + p.default { + font-style: italic; + margin: 0; + } + } + } +} diff --git a/sass/custom/_print.scss b/sass/custom/_print.scss new file mode 100644 index 00000000000..fcf30d87d15 --- /dev/null +++ b/sass/custom/_print.scss @@ -0,0 +1,39 @@ +@media print { + + /* General Overrides */ + header div.grid__item nav { + display: none; + } + aside#sidebar { + display: none; + } + .grid__item { + display: block; + width: 100%; + } + + /* Components List */ + div.filter-button-group { + display: none; + } + .hass-option-cards.show-items { + display: block; + } + .hass-option-cards.show-items a.option-card { + display: block; + opacity: 1; + width: 100%; + height: auto; + min-height: 80px; + margin-bottom: 8px; + } + .hass-option-cards.show-items a.option-card .img-container { + float: left; + width: 33%; + text-align: center; + } + .hass-option-cards.show-items a.option-card div.title { + height: 1.5em; + margin-top: 8px; + } +} \ No newline at end of file diff --git a/sass/inuitcss/README.md b/sass/inuitcss/README.md index 3a9ba747017..77155d091d9 100644 --- a/sass/inuitcss/README.md +++ b/sass/inuitcss/README.md @@ -180,7 +180,7 @@ stone, and you are encouranged to override and experiment with them. It is tempting to modify their vaules in the inuit.css submodule but this is **not** the correct method for modifying inuit.css, and in doing so you will prevent yourself from being able to update inuit.css’ core library. The correct -proceedure is to redefine that variable in `_vars.scss` found in the inuit.css +procedure is to redefine that variable in `_vars.scss` found in the inuit.css web template. Let’s take an example… In inuit.css’ `_defaults.scss` we find the following: diff --git a/sass/oscailte/base/_navigation.scss b/sass/oscailte/base/_navigation.scss index 6478e6aec4f..24f68005e6c 100644 --- a/sass/oscailte/base/_navigation.scss +++ b/sass/oscailte/base/_navigation.scss @@ -81,17 +81,23 @@ 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{ background: $site-background; box-shadow: inset 0px 5px $navigation-color; color: $navigation-color; - padding: 40px 12px 24px; + padding-top: 40px; + padding-bottom: 24px; } -.toggle{ - z-index: 20; +.toggle{ + z-index: 20; } @media only screen and (max-width: $menu-collapse){ diff --git a/sass/screen.scss b/sass/screen.scss index 5fed2c748de..78c73c19af2 100644 --- a/sass/screen.scss +++ b/sass/screen.scss @@ -2,3 +2,4 @@ @import 'custom/paulus'; @import 'custom/component_page'; @import 'custom/syntax'; +@import 'custom/print'; \ No newline at end of file diff --git a/source/_addons/bluetooth_bcm43xx.markdown b/source/_addons/bluetooth_bcm43xx.markdown index 86fdf43922d..6051a694bba 100644 --- a/source/_addons/bluetooth_bcm43xx.markdown +++ b/source/_addons/bluetooth_bcm43xx.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Bluetooth BCM43xx" -description: "Activate bluetooth for bcm43xx" +description: "Activate the BCM43xx Bluetooth chipset on a Raspberry Pi 3." date: 2017-04-30 13:28 sidebar: true comments: false @@ -9,4 +9,6 @@ sharing: true footer: true --- -Start Bluetooth for BCM43xx chipset on startup. Like Raspberry Pi3 +Start this add-on to activate the BCM43xx Bluetooth chipset. + +Supported platforms: Raspberry Pi 3. diff --git a/source/_addons/cec_scan.markdown b/source/_addons/cec_scan.markdown new file mode 100644 index 00000000000..4c048eff157 --- /dev/null +++ b/source/_addons/cec_scan.markdown @@ -0,0 +1,12 @@ +--- +layout: page +title: "CEC Scanner" +description: "Scan HDMI CEC devices." +date: 2017-04-30 13:28 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Help you to discover the HDMI CEC address. Start the add-on and look into log to see all connected device on HDMI. diff --git a/source/_addons/check_config.markdown b/source/_addons/check_config.markdown index 7eaafc2b33e..0b00f1b147e 100644 --- a/source/_addons/check_config.markdown +++ b/source/_addons/check_config.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Check Home Assistant configuration" -description: "Check Home Assistant configuration against a new version" +description: "Check your current Home Assistant configuration against a new version." date: 2017-04-30 13:28 sidebar: true comments: false @@ -9,7 +9,7 @@ sharing: true footer: true --- -You can use this addon to check whether your configuration files are valid against the new version of Home Assistant before you actually update your Home Assistant. This will help you avoid errors due to breaking changes, resulting in smooth update. +You can use this addon to check whether your configuration files are valid against the new version of Home Assistant before you actually update your Home Assistant installation. This will help you avoid errors due to breaking changes, resulting in an smooth update. ```json { diff --git a/source/_addons/configurator.markdown b/source/_addons/configurator.markdown new file mode 100644 index 00000000000..f2b2d3df19f --- /dev/null +++ b/source/_addons/configurator.markdown @@ -0,0 +1,76 @@ +--- +layout: page +title: "HASS Configurator" +description: "Browser-based configuration file editor for Home Assistant." +date: 2017-09-25 14:00 +sidebar: true +comments: false +sharing: true +footer: true +featured: true +og_image: /images/hassio/screenshots/addon-hass-configurator.png +--- + +As long as a fully featured configuration GUI for Home Assistant is still under development, you can use this add-on to add a browser based file-editor to your Hass.IO installation. By default it will listen on port `3218` of the host Hass.IO is running on. + +More information and a standalone version for regular Home Assistant installations can be found in the [GitHub repository][code]. + +[code]: https://github.com/danielperna84/hass-configurator + +

+ +Screenshot of the HASS Configurator. +

+ +### {% linkable_title Feature list %} + +- Web-Based editor to modify your files with syntax highlighting. +- Upload and download files. +- Stage and commit changes in Git repositories, create and switch between branches, push to remotes. +- Lists of available triggers, events, entities, conditions and services. Selected element gets inserted into the editor at the last cursor position. +- Restart Home Assistant directly with the click of a button. Reloading groups, automations etc. can be done as well. An API-password is required. +- SSL support. +- Optional authentication and IP filtering for added security. +- Direct links to Home Assistant documentation and icons. +- Execute shell commands within the add-on container. +- Editor settings are saved in your browser. + +### {% linkable_title Add-on Configuration %} + +```json +{ + "username": "admin", + "password": "secret", + "certfile": "fullchain.pem", + "keyfile": "privkey.pem", + "ssl": false, + "allowed_networks": ["192.168.0.0/16"], + "banned_ips": ["8.8.8.8"], + "ignore_pattern": ["__pycache__"] +} +``` + +- **username** (*Optional*): Set a username to access your configuration is protected. +- **password** (*Required*): Set a password for access. +- **ssl** (*Optional*): Enable or Disable SSL for the editor. +- **allowed_networks** (*Optional*): Limit access to the configurator by adding allowed IP addresses / networks to the list. +- **banned_ips** (*Optional*): List of statically banned IP addresses. +- **ignore_pattern** (*Optional*): Files and folders to ignore in the UI. + +### {% linkable_title Embedding into Home-Assistant %} + +Using the Home Assistant component [panel_iframe](https://home-assistant.io/components/panel_iframe/) it is possible to embed the configurator directly into Home Assistant, allowing you to modify your configuration within the Home Assistant frontend. + +An example configuration would look like this: + +```yaml +panel_iframe: + configurator: + title: Configurator + icon: mdi:wrench + url: http://hassio.local:3218 +``` + +

+Be careful when setting up port forwarding to the configurator while embedding into Home Assistant. If you don't restrict access by requiring authentication and / or blocking based on client IP addresses, your configuration will be exposed to the internet! +

diff --git a/source/_addons/dhcp_server.markdown b/source/_addons/dhcp_server.markdown index 7ce04f553ce..884a5432fac 100644 --- a/source/_addons/dhcp_server.markdown +++ b/source/_addons/dhcp_server.markdown @@ -1,7 +1,7 @@ --- layout: page title: "DHCP server" -description: "A simple dhcp server" +description: "A simple DHCP server." date: 2017-04-30 13:28 sidebar: true comments: false @@ -9,7 +9,7 @@ sharing: true footer: true --- -Create a simple DHCP server for your network and allow set fix ip for some devices. +Create a simple DHCP server for your network and allow setting fixed IPs for devices. ```json { @@ -47,7 +47,7 @@ Configuration variables:  - **range_end** (*Required*): End address for dhcp leases.  - **broadcast** (*Required*): Network broadcast address.  - **gateway** (*Required*): A List of gateways. - - **interface** (*Required*): Inteface on that will be listen. + - **interface** (*Required*): Inteface 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. diff --git a/source/_addons/dnsmasq.markdown b/source/_addons/dnsmasq.markdown index dd1e52a5170..586a035f8f5 100644 --- a/source/_addons/dnsmasq.markdown +++ b/source/_addons/dnsmasq.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Dnsmasq" -description: "A simple dns server with benefits." +description: "A simple DNS server." date: 2017-04-30 13:28 sidebar: true comments: false @@ -9,10 +9,10 @@ sharing: true footer: true --- -Setup and manage a [Dnsmasq](http://thekelleys.org.uk/dnsmasq/doc.html) dns server. This allow your to manipulate some dns requests. I.e. that inside your network, your homeassistant domain will resolve with a internal address. +Setup and manage a [Dnsmasq](http://thekelleys.org.uk/dnsmasq/doc.html) DNS server. This allows you to manipulate DNS requests. For example, you can have your Home Assistant domain resolve with an internal address inside your network. -

-At the moment, it will not work with resinos! +

+`interface` options are for resinos based installation. On other system you can set it to `""`, for listen on every interface.

```json @@ -24,6 +24,7 @@ At the moment, it will not work with resinos! "hosts": [ {"host": "home.mydomain.io", "ip": "192.168.1.10"} ], + "interface": "eth1" } ``` @@ -32,3 +33,4 @@ Configuration variables: - **defaults** (*Required*): A list of dns server to forward default requests. - **forwards** (*Optional*): A list of domains that will forward to a specific server. - **hosts** (*Optional*): A list of hosts to resolve it static. +- **interface** (*Optional*): If a interface is set, it listen only on this interface. Need to set for resinos. Normally is `eth0` for ethernet wired connection and `wlan0` for wireless connection. diff --git a/source/_addons/duckdns.markdown b/source/_addons/duckdns.markdown index d7b8394c6b4..f54e69f0da0 100644 --- a/source/_addons/duckdns.markdown +++ b/source/_addons/duckdns.markdown @@ -1,20 +1,24 @@ --- layout: page -title: "Duck DNS" -description: "Automatically update your Duck DNS IP address." +title: "DuckDNS" +description: "Automatically update your Duck DNS IP address with integrated HTTPS support via Let's Encrypt." date: 2017-04-30 13:28 sidebar: true comments: false sharing: true footer: true +featured: true --- -[Duck DNS](https://duckdns.org/) is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. +[Duck DNS](https://duckdns.org/) is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. This add-on includes support for Let's Encrypt and will automatically create and renew your certificates. ```json { + "lets_encrypt": { + "accept_terms": true + }, "token": "sdfj-2131023-dslfjsd-12321", - "domains": ["my-first-accound.duckdns.org", "my-second-account.duckdns.org"] + "domains": ["my-domain.duckdns.org"] } ``` @@ -23,3 +27,23 @@ Configuration variables: - **token** (*Required*): Your Duck DNS API key. - **domains** (*Required*): A list of domains to update DNS. - **seconds** (*Optional*): Seconds between updates to Duck DNS. +- **lets_encrypt.accept_terms** (*Optional*): If you accept the [Let's Encrypt Subscriber Agreement][le], it will generate & update Let's Enrypt certificates for your DuckDNS domain. + +[le]: https://letsencrypt.org/repository/ + +## {% linkable_title Home Assistant configuration %} + +Use the following configuration in Home Assistant to use the generated certificate: + +```yaml +http: + base_url: https://my-domain.duckdns.org:8123 + ssl_certificate: /ssl/fullchain.pem + ssl_key: /ssl/privkey.pem +``` + +If you use a other port as `8123` or a SSL proxy, change the port number. + +## {% linkable_title Router configuration %} + +You'll need to forward the port you listed in your configuration (8123 in the example above) on your router to your Home Assistant system. You can find guides on how to do this on [Port Forward](https://portforward.com/) - noting that you'll only need to forward the TCP port. diff --git a/source/_addons/git_pull.markdown b/source/_addons/git_pull.markdown new file mode 100644 index 00000000000..579ca5ad092 --- /dev/null +++ b/source/_addons/git_pull.markdown @@ -0,0 +1,47 @@ +--- +layout: page +title: "GIT pull" +description: "Load and update configuration files for Home Assistant from a GIT repository." +date: 2017-09-25 14:00 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Load and update configuration files for Home Assistant from a GIT repository. + +```json +{ + "repository": "https://example.com/my_configs", + "auto_restart": false, + "repeat": { + "active": false, + "interval": 300 + }, + "deployment_key": [ +"-----BEGIN RSA PRIVATE KEY-----", +"MIIEowIBAAKCAQEAv3hUrCvqGZKpXQ5ofxTOuH6pYSOZDsCqPqmaGBdUzBFgauQM", +"xDEcoODGHIsWd7t9meAFqUtKXndeiKjfP0MMKsttnDohL1kb9mRvHre4VUqMsT5F", +"...", +"i3RUtnIHxGi1NqknIY56Hwa3id2yk7cEzvQGAAko/t6PCbe20AfmSQczs7wDNtBD", +"HgXRyIqIXHYk2+5w+N2eunURIBqCI9uWYK/r81TMR6V84R+XhtvM", +"-----END RSA PRIVATE KEY-----" + ], + "deployment_key_protocol": "rsa" +} +``` + +- **repository** (*Required*): GIT url to your repository. +- **auto_restart** (*Optional*): Make a restart of Home-Assistant if the config have change and is valid. +- **repeat/active** (*Optional*): Pull periodic for GIT updates. +- **repeat/interval** (*Optional*): Pull all x seconds and look for changes. +- **deployment_key** (*Optional*): A private SSH key that will be used for communication during git operations. This key is mandatory for ssh-accessed repositories, which are the ones with the following pattern: `@:`. +- **deployment_key_protocol** (*Optional*): The key protocol. Default is "rsa". Valid protocols are: + + * **dsa** + * **ecdsa** + * **ed25519** + * **rsa** + + The protocol is typically known by the suffix of the private key --e.g., a key file named `id_rsa` will be a private key using "rsa" protocol. diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown new file mode 100644 index 00000000000..04458c65944 --- /dev/null +++ b/source/_addons/google_assistant.markdown @@ -0,0 +1,80 @@ +--- +layout: page +title: "Google Assistant" +description: "Enhance your Hass.io installation with Google Assistant." +date: 2017-04-30 13:28 +sidebar: true +comments: false +sharing: true +footer: true +featured: true +--- + +[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact over [api.ai] with Home-Assistant. You can also use [Google Actions][GoogleActions] to extend its functionality. + +To enable access to the Google Assistant API, do the following: + +1. In the [Cloud Platform Console][project], go to the Projects page. Select an existing project or create a new project +2. Open the project. In the top of the page search for Google Assistant API or use [this link][API] and enable it. +3. Create an [OAuth Client ID][oauthclient], pick type "Other", click "Create" and download the JSON file by clicking the Download JSON button on the right side. + +Now install and activate the [Samba] add-on so you can upload your credential file. Connect to the "share" Samba share and copy your credentials over. Name the file `google_assistant.json`. + +Now it's time to start Google Assistant for the first time. When the Google Assistant add-on starts, it will output your audio devices in the "Logs" card. You might have to hit "refresh" to get the latest logs: + +```text +**** List of PLAYBACK Hardware Devices **** +card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA] + Subdevices: 8/8 + Subdevice #0: subdevice #0 + Subdevice #1: subdevice #1 + Subdevice #2: subdevice #2 + Subdevice #3: subdevice #3 + Subdevice #4: subdevice #4 + Subdevice #5: subdevice #5 + Subdevice #6: subdevice #6 + Subdevice #7: subdevice #7 +card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] + Subdevices: 1/1 + Subdevice #0: subdevice #0 +card 1: Microphone [Yeti Stereo Microphone], device 0: USB Audio [USB Audio] + Subdevices: 1/1 + Subdevice #0: subdevice #0 +``` + +You need to use this information to point the add-on at the right speakers and microphone. The information describes different cards and devices. On a Raspberry Pi 3, card 0 - device 0 is the built-in headset port, card 0 - device 1 is the HDMI port. In the example above, the USB microphone showed up as card 1 - device 0. + +Find the microphone and speakers that you want to use and note down their device and card number. We will need that to configure the add-on options `mic` (microphone to use) and `speaker` (speaker to use). The format for these options is `,`. Change the configuration options and click save. + +The next step is to authenticate your Google account with Google Assistant. Start the add-on and click on the "OPEN WEB UI" button to start authentication. + +### Add-On configuration + +Configuration example that uses the USB microphone and use the built-in headset audio output on the Raspberry Pi. Note that card and device numbers can differ on your device. + +```json +{ + "mic": "1,0", + "speaker": "0,0", + "client_secrets": "google_assistant.json" +} +``` + +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 + +### {% linkable_title Home Assistant configuration %} + +Use the Home Assistant [api.ai component][comp] to integrate the add-on into Home Assistant. + + +[GoogleAssistant]: https://assistant.google.com/ +[GoogleActions]: https://actions.google.com/ +[api.ai]: https://api.ai/ +[Samba]: /addons/samba/ +[comp]: /components/apiai/ +[project]: https://console.cloud.google.com/project +[API]: https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview +[oauthclient]: https://console.developers.google.com/apis/credentials/oauthclient diff --git a/source/_addons/lets_encrypt.markdown b/source/_addons/lets_encrypt.markdown index 2b7d51b470d..8917e007bf4 100644 --- a/source/_addons/lets_encrypt.markdown +++ b/source/_addons/lets_encrypt.markdown @@ -7,16 +7,22 @@ sidebar: true comments: false sharing: true footer: true +featured: false --- -Setup and manage a [Let's Encrypt](https://letsencrypt.org/) certificate. This will create a certificate on the first run and renew it if the certificate is expiring in the next 30 days. +

+You should not use this if you are also using the [DuckDNS add-on]. The DuckDNS add-on has integrated Let's Encrypt support. +

+ +Setup and manage a [Let's Encrypt](https://letsencrypt.org/) certificate. This will create a certificate on the first run and will auto-renew if the certificate is within 30 days of expiration.

-This add-on need port 80/443 to verify the certificate request, please stop all add-ons they use also this ports, otherwise you can not start this add-on. +This add-on uses ports 80/443 to verify the certificate request. You will need to stop all other add-ons that also use these ports. If you don't need a port (like with https you don't need port 80) you can remove this from network config.

```json { + "challenge": "https", "email": "example@example.com", "domains": ["example.com", "mqtt.example.com", "hass.example.com"] } @@ -24,6 +30,7 @@ This add-on need port 80/443 to verify the certificate request, please stop all Configuration variables: +- **challenge** (*Optional*): Default it use 443 ('https') you can change it to 'http' for use port 80. - **email** (*Required*): Your email address for registration on Let's Encrypt. - **domains** (*Required*): A list of domains to create/renew the certificate. @@ -33,6 +40,11 @@ Use the following configuration in Home Assistant to use the generated certifica ```yaml http: + base_url: https://my-domain.tld:8123 ssl_certificate: /ssl/fullchain.pem ssl_key: /ssl/privkey.pem ``` + +If you use a other port as `8123` or a SSL proxy, change the port number. + +[DuckDNS add-on]: /addons/duckdns/ diff --git a/source/_addons/mariadb.markdown b/source/_addons/mariadb.markdown new file mode 100644 index 00000000000..d04dc3c474c --- /dev/null +++ b/source/_addons/mariadb.markdown @@ -0,0 +1,55 @@ +--- +layout: page +title: "MariaDB" +description: "MariaDB Server is one of the most popular database servers in the world." +date: 2017-04-30 13:28 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Set up a [mariadb](https://mariadb.org/) SQL server. It supports multiple databases, users and permission settings. If you want to only connect from inside home assistant use `core-mariadb` as the host address. + +```json +{ + "databases": ["homeassistant"], + "logins": [ + { + "username": "hass", + "host": "homeassistant", + "password": "securePassword" + } + ], + "rights": [ + { + "username": "hass", + "host": "homeassistant", + "database": "homeassistant", + "grant": "ALL PRIVILEGES ON" + } + ] +} +``` + +Configuration variables: + +- **databases** (*Require*): Listen of databases. +- **logins** (*Require*): Listen of logindata they will create or update. + - **username** (*Require*): Username for login. + - **host** (*Require*): Host for login, if you need a login with multibe hosts, use '%'. + - **password** (*Require*): Password for login. +- **rights** (*Require*): Listen of rights to be handle. + - **username** (*Require*): Username for grant rights. + - **host** (*Require*): Host is a part of username like above. + - **database** (*Require*): Database name to grant this user rights to. + - **grant** (*Require*): SQL grant part for access too. + +## {% linkable_title Home Assistant configuration %} + +Use the following configuration in Home Assistant to use the database above: + +```yaml +recorder: + db_url: mysql://hass:securePassword@core-mariadb/homeassistant +``` diff --git a/source/_addons/mosquitto.markdown b/source/_addons/mosquitto.markdown index ef37e5fd0c4..f944dc7989c 100644 --- a/source/_addons/mosquitto.markdown +++ b/source/_addons/mosquitto.markdown @@ -7,9 +7,10 @@ sidebar: true comments: false sharing: true footer: true +featured: true --- -Set up a [mosquitto](https://mosquitto.org/) MQTT broker. +Set up [Mosquitto](https://mosquitto.org/) as MQTT broker. ```json { @@ -18,13 +19,32 @@ Set up a [mosquitto](https://mosquitto.org/) MQTT broker. "anonymous": true, "logins": [ {"username": "testuser", "password": "mypw"} - ] + ], + "customize": { + "active": false, + "folder": "mosquitto" + } } ``` +

+Make sure you use logins and disable anonymous access if you want to secure the system. +

+ Configuration variables: - **plain** (*Optional*): Listen to broker on port 1883 without SSL/TLS. Defaults to `true`. - **ssl** (*Optional*): Listen to broker on port 8883 with SSL/TLS. This requires certificates. Defaults to `false`. - **anonymous** (*Optional*): Allow anonymous connection. If *logins* is set, anonymous user can only read data. Defaults to `true`. - **logins** (*Optional*): A list of user 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 configuration %} + +To use the Mosquitto as [broker](/docs/mqtt/broker/#run-your-own) add the following entry to the `configuration.yaml` file. + +```yaml +# Example configuration.yaml entry +mqtt: + broker: core-mosquitto +``` diff --git a/source/_addons/nginx_proxy.markdown b/source/_addons/nginx_proxy.markdown index 05d064d6df8..318b9768d9c 100644 --- a/source/_addons/nginx_proxy.markdown +++ b/source/_addons/nginx_proxy.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Nginx SSL proxy" -description: "Nginx HomeAssistant SSL proxy" +title: "NGINX SSL proxy" +description: "NGINX Home Assistant SSL proxy." date: 2017-04-30 13:28 sidebar: true comments: false @@ -9,8 +9,9 @@ sharing: true footer: true --- -Setup a SSL proxy with nginx and redirect port 80 to 443. Make sure you have generate certificate before you start this add-on. +Setup a SSL proxy with NGINX and redirect port 80 to 443. Make sure you have generated a certificate before you start this add-on. +In the `http` section of the `configuration.yaml` file remove `ssl_certificate` and `ssl_key` and don't enter the port in the `base_url` to avoid a HTTP 502 error. ```json @@ -23,3 +24,6 @@ Configuration variables: - **domain** (*Required*): Domain they will proxy run with it. +

+It is possible to deactive port 80 if you need this for things like `emulate_hue`. Remove the host port from Network option of this add-on. +

diff --git a/source/_addons/rpc_shutdown.markdown b/source/_addons/rpc_shutdown.markdown new file mode 100644 index 00000000000..10aba2dcf5f --- /dev/null +++ b/source/_addons/rpc_shutdown.markdown @@ -0,0 +1,40 @@ +--- +layout: page +title: "RPC Shutdown" +description: "Simple way for remote windows shutdowns." +date: 2017-09-25 14:00 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Allow to shutdown a Windows computer with a service call from Home Assistant. + +```json +{ + "computers": [ + { + "alias": "test-pc", + "address": "192.168.0.1", + "credentials": "user%password" + } + ] +} +``` + +- **computers** (*Required*): A list of computer object to shutdown from Home-Assistant. +- **computers/alias** (*Required*): Set a alias for this record and that is the name for the input. +- **computers/address** (*Required*): IP address or netbios name of the computer for shutdown. +- **computers/credentials** (*Required*): Credentials for logging into computer. Use a `%` as delimiter of username and password. + +## {% linkable_title Home Assistant %} + +Use the following inside Home Assistant service call to use it: + +```yaml +service: hassio.addon_stdin +data: + addon: core_rpc_shutdown + input: test-pc +``` diff --git a/source/_addons/samba.markdown b/source/_addons/samba.markdown index baba4d50372..f6aff2fd92d 100644 --- a/source/_addons/samba.markdown +++ b/source/_addons/samba.markdown @@ -7,28 +7,35 @@ sidebar: true comments: false sharing: true footer: true +featured: true --- This allows you to set up a [Samba](https://samba.org/) server to access hass.io folders using Windows network shares. ```json { + "name": "hassio", "workgroup": "WORKGROUP", "guest": true, - "map_config": true, - "map_addons": true, - "map_ssl": false, + "map": { + "config": true, + "addons": true, + "share": true, + "backup": true, + "ssl": false, + }, "username": "", - "password": "" + "password": "", + "interface": "eth0" } ``` Configuration variables: +- **name** (*Optional*): default `hassio`. Set netbios name of hassio device. - **workgroup** (*Optional*): default `WORKGROUP`. Set network workgroup. - **guest** (*Optional*): Allow login without a username or password. Defaults to `true`. -- **map_config** (*Optional*): Expose Home Assistant configuration folder. Defaults to `true`. -- **map_addons** (*Optional*): Expose local custom addons folder. Defaults to `true`. -- **map_ssl** (*Optional*): Expose SSL folder. Be careful with this option! Defaults to `false`. +- **map** (*Optional*): Control which folder will be expose. `config` is for Home Assistant configuration folder. `addons` for local custom repositiory. `share` is a folder that can access from add-ons and Home Assistant too. `backup` for access to snapshot files. `ssl` for certificate storage, be careful with this option! Defaults all to `true`, except for `ssl`. - **username** (*Optional*): The username for logging in if guest login is not used. - **password** (*Optional*): Password for `username`. An empty password is not supported. +- **interface** (*Optional*): Interface on that will start the share. Normally is `eth0` for ethernet wired connection and `wlan0` for wireless connection. diff --git a/source/_addons/snips.markdown b/source/_addons/snips.markdown new file mode 100644 index 00000000000..954d04d613e --- /dev/null +++ b/source/_addons/snips.markdown @@ -0,0 +1,76 @@ +--- +layout: page +title: "Snips.ai" +description: "Enhance your Hass.io installation with a local voice assistant." +date: 2017-04-30 13:28 +sidebar: true +comments: false +sharing: true +footer: true +--- + +[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. + +To get started, follow [their tutorial] to create an assistant and download the training data. + +Now install and activate the [Samba] add-on so you can upload your training data. Connect to the "share" Samba share and copy your training data over. Name the file `assistant.zip`. + +Now it's time to start Snips for the first time. When the Snips add-on starts, it will output your audio devices: + +```text +**** List of PLAYBACK Hardware Devices **** +card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA] + Subdevices: 8/8 + Subdevice #0: subdevice #0 + Subdevice #1: subdevice #1 + Subdevice #2: subdevice #2 + Subdevice #3: subdevice #3 + Subdevice #4: subdevice #4 + Subdevice #5: subdevice #5 + Subdevice #6: subdevice #6 + Subdevice #7: subdevice #7 +card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] + Subdevices: 1/1 + Subdevice #0: subdevice #0 +``` + +You need to use this information to point the add-on at the right speakers and microphone. The information describes different cards and devices. On a Raspberry Pi 3, card 0 - device 0 is the built-in headset port, card 0 - device 1 is the HDMI port. In the example above, the USB microphone showed up as card 1 - device 0. + +Find the microphone and speakers that you want to use and note down their device and card number. We will need that to configure the add-on options `mic` (microphone to use) and `speaker` (speaker to use). The format for these options is `,`. Change the configuration options and click save. + +Now start the add-on. + +### Add-On configuration + +```json +{ + "mic": "1,0", + "speaker": "1,0", + "assistant": "assistant.zip", + "mqtt_bridge": { + "active": true, + "host": "172.17.0.1", + "port": 1883, + "user": "", + "password": "" + }, +} +``` + +Configuration variables: + +- **mqtt_bridge** (*Optional*): Snips uses MQTT to communicate and defaults to their own broker. Use this config option to bridge their broker to your own. +- **mic**: This is the hardware address of your microphone. Look at the Snips + +### {% linkable_title Home Assistant configuration %} + +Use the Home Assistant [Snips.ai component][comp] to integrate the add-on into Home Assistant. + +```yaml +snips: +``` + +[Snips.ai]: https://snips.ai/ +[their tutorial]: https://github.com/snipsco/snips-platform-documentation/wiki/2.-Running-your-first-end-to-end-assistant +[Samba]: /addons/samba/ +[comp]: /components/snips/ diff --git a/source/_addons/ssh.markdown b/source/_addons/ssh.markdown index 2361e378ab4..2ee90db5850 100644 --- a/source/_addons/ssh.markdown +++ b/source/_addons/ssh.markdown @@ -1,37 +1,53 @@ --- layout: page title: "SSH Server" -description: "Allow logging in remotely to your server using SSH." -date: 2017-04-30 13:28 +description: "Allow logging in remotely to Hass.io using SSH." +date: 2017-11-03 22:25 sidebar: true comments: false sharing: true footer: true +featured: true --- -Setting up an [SSH](https://openssh.org/) server allows access to your Hass.io folders with any SSH client. 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]. +Setting up an [SSH](https://openssh.org/) server allows access to your Hass.io folders with any SSH client. It also includes a command-line tool to access the [Hass.io API](https://github.com/home-assistant/hassio/blob/dev/API.md). Try it out: + +```bash +$ hassio help +``` + +

+This add-on will not enable you to install packages or do anything as root. This is not allowed with Hass.io. +

+ +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 variant at same time. + +In order to start this add-on for the first time, you either need to include an ssh key (enclosed in quotation marks, on a single line without line breaks) or set a password in the options section. ```json { "authorized_keys": [ "ssh-rsa AKDJD3839...== my-key" - ] + ], + "password": "" } ``` +The username for login over ssh is `root`. The complete login command is `ssh root@hassio.local`. + +After logging in, you will find yourself in this add-ons container. The Home Assistant configuration directory is mounted on the path `/config`. + Configuration variables: -- **authorized_keys** (*Required*): Your public-keys for authorized keyfile. Every element will be a line inside that file. +- **authorized_keys** (*Optional*): Your public keys for authorized keyfile. Every element will be a line inside that file. +- **password** (*Optional*): Set a password for login. We do not recommend this variant. + + +
+ +
[win]: https://www.digitalocean.com/community/tutorials/how-to-create-ssh-keys-with-putty-to-connect-to-a-vps [other]: https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/ -

-This add-on is not compatible when you installed Hass.io via the generic Linux installer. - -If you're coming from Rasbian or similar, use `root` rather than `pi` when connecting via ssh or else you will get this error. - -```bash -Permission denied (publickey,keyboard-interactive) -``` -

+

This add-on is not compatible if Hass.io was installed via the generic Linux installer.

diff --git a/source/_components/abode.markdown b/source/_components/abode.markdown new file mode 100644 index 00000000000..3314bcc9038 --- /dev/null +++ b/source/_components/abode.markdown @@ -0,0 +1,110 @@ +--- +layout: page +title: "Abode Home Security" +description: "Instructions on integrating Abode home security with Home Assistant." +date: 2017-08-26 0:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: abode.jpg +ha_category: Hub +ha_release: 0.52 +ha_iot_class: "Cloud Push" +--- + +The `abode` component will allow users to integrate their Abode Home Security systems into Home Assistant and use its alarm system and sensors to automate their homes. + +Please visit the [Abode website](https://goabode.com/) for further information about Abode Security. + +There is currently support for the following device types within Home Assistant: + +- [Alarm Control Panel](/components/alarm_control_panel.abode/): Reports on the current alarm status and can be used to arm and disarm the system. +- [Binary Sensor](/components/binary_sensor.abode/): Reports on `Quick Actions`, `Door Contacts`, `Connectivity` sensors (remotes, keypads, and status indicators), `Moisture` sensors, and `Motion` or `Occupancy` sensors. +- [Camera](/components/camera.abode/): Reports on `Camera` devices and will download and show the latest captured still image. +- [Cover](/components/cover.abode/): Reports on `Secure Barriers` and can be used to open and close the cover. +- [Lock](/components/cover.abode/): Reports on `Door Locks` and can be used to lock and unlock the door. +- [Light](/components/light.abode/): Reports on `Dimmer` lights and can be used to dim, change color, or turn the light on and off. +- [Switch](/components/switch.abode/): Reports on `Power Switch` devices and can be used to turn the power switch on and off. Also reports on `Automations` set up in the Abode system and allows you to activate or deactivate them. +- [Sensor](/components/sensor.abode/): Reports on `Temperature`, `Humidity`, and `Light` sensors. + +## {% linkable_title Configuration %} + +To use Abode devices in your installation, add the following `abode` section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +abode: + username: abode_username + password: abode_password + name: Abode Alarm System + polling: False + exclude: + - 'ZW:0000000034' + - 'RF:00000011' + lights: + - 'ZW:0000000022' +``` + +Configuration variables: + +- **username** (*Required*): Username for your Abode account. +- **password** (*Required*): Password for your Abode account. +- **name** (*Optional*): The name for your alarm controller. +- **polling** (*Optional*): Enable polling if cloud push updating is less reliable. Will update the devices once every 30 seconds. Defaults to False. +- **exclude** (*Optional*): A list of devices to exclude from Home Assistant by their Abode `device_id` or `automation_id`, found within the component attributes. +- **lights** (*Optional*): A list of switch devices that Home Assistant should treat as lights by the switches Abode `device_id`, found within the component attributes. + +## {% linkable_title Events %} + +There are a number of events that can be triggered from Abode. They are grouped into the below events: + +- **abode_alarm**: Fired when an alarm event is triggered from Abode. This includes Smoke, CO, Panic, and Burglar alarms. +- **abode_alarm_end**: Fired when an alarm end event is triggered from Abode. +- **abode_automation**: Fired when an Automation is triggered from Abode. +- **abode_panel_fault**: Fired when there is a fault with the Abode hub. This includes events like loss of power, low battery, tamper switches, polling failures, and signal interference. +- **abode_panel_restore**: Fired when the panel fault is restored. + +All events have the fields: + +Field | Description +----- | ----------- +`device_id` | The Abode device ID of the event. +`device_name` | The Abode device name of the event. +`device_type` | The Abode device type of the event. +`event_code` | The event code of the event. +`event_name` | The name of the event. +`event_type` | The type of the event. +`event_utc` | The UTC timestamp of the event. +`user_name` | The Abode user that triggered the event, if applicable. +`date` | The date of the event in the format `MM/DD/YYYY`. +`time` | The time of the event in the format `HH:MM AM`. + +There is a unique list of known event_codes that can be found [here](https://github.com/MisterWil/abodepy/files/1262019/timeline_events.txt). + +## {% linkable_title Services %} + +### {% linkable_title Service `change_setting` %} + +Change settings on your Abode system. For a full list of settings and valid values, consult the [AbodePy settings section](https://github.com/MisterWil/abodepy/blob/master/README.rst#settings). + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `setting` | No | The setting you wish to change. +| `value` | No | The value you wish to change the setting to. + +### {% linkable_title Service `capture_image` %} + +Request a new still image from your Abode IR camera. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | No | String or list of strings that point at `entity_id`s of Abode cameras. + +### {% linkable_title Service `trigger_quick_action` %} + +Trigger a quick action automation on your Abode system. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | No | String or list of strings that point at `entity_id`s of binary_sensors that represent your Abode quick actions. diff --git a/source/_components/alarm_control_panel.abode.markdown b/source/_components/alarm_control_panel.abode.markdown new file mode 100644 index 00000000000..99889db76d4 --- /dev/null +++ b/source/_components/alarm_control_panel.abode.markdown @@ -0,0 +1,19 @@ +--- +layout: page +title: "Abode Alarm Control Panel" +description: "Instructions how to setup the Abode Alarm control panel within Home Assistant." +date: 2017-08-26 0:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: abode.jpg +ha_category: Alarm +ha_release: 0.52 +ha_iot_class: "Cloud Push" +--- + + +The `abode` security control panel platform allows you to control your [Abode](https://goabode.com/) alarms. + +The requirement is that you have setup your [Abode hub](/components/abode/). diff --git a/source/_components/alarm_control_panel.alarmdotcom.markdown b/source/_components/alarm_control_panel.alarmdotcom.markdown index fefdcaecff1..ebffcc5c0df 100644 --- a/source/_components/alarm_control_panel.alarmdotcom.markdown +++ b/source/_components/alarm_control_panel.alarmdotcom.markdown @@ -12,7 +12,7 @@ ha_category: Alarm ha_release: 0.11 --- -The `alarmdotcom` platform is consuming the information provided by a [Alarm.com](https://www.alarm.com/). +The `alarmdotcom` platform is consuming the information provided by [Alarm.com](https://www.alarm.com/). To enable this, add the following lines to your `configuration.yaml`: diff --git a/source/_components/alarm_control_panel.arlo.markdown b/source/_components/alarm_control_panel.arlo.markdown new file mode 100644 index 00000000000..bc94d594a54 --- /dev/null +++ b/source/_components/alarm_control_panel.arlo.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "Arlo Control Panel" +description: "Instructions how to setup the Netgear Arlo Base Stations as a control panel within Home Assistant." +date: 2017-10-05 17:45 +sidebar: true +comments: false +sharing: true +footer: true +logo: arlo.png +ha_category: Alarm +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + + +The `arlo` control panel platform allows you to control your [Arlo](https://arlo.netgear.com/) base stations. + +To get your [Arlo](https://arlo.netgear.com/) base stations working within Home Assistant, please follow the instructions for the general [Arlo component](/components/arlo). + +Once you have enabled the [Arlo component](/components/arlo), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +alarm_control_panel: + - platform: arlo +``` + +Configuration variables: + +- **home_mode_name**: (*Optional*): Arlo base station does not have a built-in home mode. You can map one of your custom modes to home assistant's home mode by setting the name of the custom mode in this configuration variable. The name of the custom mode should match exactly as you set it up in the Arlo app. +- **away_mode_name**: (*Optional*): Like the home mode, the Arlo base station does not have a built-in away mode, however, you can map a custom mode from the Arlo app to Home Assistant with this variable, just make sure the name matches exactly what you have set up in the Arlo app. diff --git a/source/_components/alarm_control_panel.egardia.markdown b/source/_components/alarm_control_panel.egardia.markdown new file mode 100644 index 00000000000..b8309efd549 --- /dev/null +++ b/source/_components/alarm_control_panel.egardia.markdown @@ -0,0 +1,90 @@ +--- +layout: page +title: "Egardia / Woonveilig Alarm Control Panel" +description: "Instructions how to integrate Egardia / Woonveilig into Home Assistant." +date: 2016-07-02 22:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: egardia.png +ha_release: 0.51 +ha_category: Alarm +--- + +The `egardia` platform enables the ability to control an [Egardia](http://egardia.com/)/Woonveilig control panel. These alarm panels are known under different brand names across the world, including Woonveilig in the Netherlands. This was tested on a Gate01 version of the Egardia/Woonveilig platform. + +You will need to know the IP of your alarm panel on your local network. Test if you can login to the panel by browsing to the IP address and log in using your Egardia/Woonveilig account. + +To enable this, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +alarm_control_panel: + - platform: egardia + host: YOUR_HOST + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +Configuration variables: + +- **host** (*Required*): The local IP address of the Egardia/Woonveilig alarm panel. +- **username** (*Required*): Username for the Egardia/Woonveilig account. +- **password** (*Required*): Password for Egardia/Woonveilig account. +- **port** (*Optional*): The port of the alarm panel. Defaults to 80. +- **name** (*Optional*): Name to use for the alarm panel. Defaults to `Egardia`. +- **report_server_enabled** (*Optional*): Enable reporting by server. Defaults to `False`. +- **report_server_port** (*Optional*): Port of the Egardia server. Defaults to 85. +- **report_server_codes** list (*Optional*): List of codes for the different states. + +Note that this basic configuration will only enable you to read the armed/armed away/disarmed status of your alarm and will **not** update the status if the alarm is triggered. This is because of how Egardia built their system. The alarm triggers normally go through their servers. +You can change this, however, using the following procedure. This is a more advanced configuration. + +1. Log in into your alarm system's control panel. You will need to access http://[IP of your control panel]. You know this already since you need it in the basic configuration from above. Log in to the control panel with your Egardia/Woonveilig username and password. +2. Once logged in, go to *System Settings*, *Report* and change the Server Address for your primary server to the IP or hostname of your Home Assistant machine. Also, update the port number 85 or to anything you like. The provided software that you will set up in the next steps runs on port 85 by default. **Make sure to change the settings of the primary server otherwise the messages will not come through. Note that this will limit (or fully stop) the number of alarm messages you will get through Egardia's / Woonveilig services.** Maybe, that is just what you want. Make sure to save your settings by selecting 'OK'. +3. On your Home Assistant machine run `$ sudo python3 egardiaserver.py`. Refer to the [python-egardia repository](https://github.com/jeroenterheerdt/python-egardia) for detailed documentation on parameters. This will receive status codes from your alarm control panel and display them. You will need the codes to include in your configuration.yaml. Make sure to change the status of your alarm to all states (disarm, arm, home) by all means possible (all users, remotes, web login, app) as well as trigger the alarm in all ways possible to get 100% coverage. **Before triggering the alarm it might be good to disable the siren temporarily (can be done in Panel Settings).** +4. Once you have the codes, update your `configuration.yaml`: +```yaml +# Example configuration.yaml entry +alarm_control_panel: +  - platform: egardia +   host: YOUR_HOST +   username: YOUR_USERNAME +   password: YOUR_PASSWORD + report_server_enabled: True + report_server_port: PORT_OF_EGARDIASERVER (85 as per the instructions above) + report_server_codes: + arm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX + disarm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX + home: XXXXXXXXXXXXXXXX + triggered: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX + ignore: XXXXXXXXXXXXXXXX +``` + +Note that for triggered, arm and disarm multiple codes can be entered since each sensor triggers with a different code and each user of the system has its own arm and disarm codes. Also note that your system will do regular system checks which will be reported as well. Since Home Assistant provides no way of handling them properly, you can enter those codes as ignore (again, multiple codes can be used here). The egardia component will ignore these codes and continue returning the old status if it receives any of the codes that are listed as ignore. This is useful for example when you have armed your alarm at night: normally a system check will occur at least once during the night and if that code is not specified anywhere Home Assistant will set the status of the alarm to its default, which is unarmed. This is in fact wrong. Listing the code as ignore changes this behavior and Home Assistant will continue to show the status the alarm is in (disarm, arm, home, triggered) even when system checks occur. + +5. Start the `egardiaserver.py` script on boot of your Home Assistant machine, for example by using `systemctl` by `systemd`. To use this method, create a shell script named `egardiaserver.sh` that contains something like the following: + +```bash +$ source /srv/homeassistant/bin/activate +$ python3 /srv/homeassistant/lib/python3.5/site-packages/pythonegardia/egardiaserver.py -host [YOURHOST] -password '[YOURPASSWORD]' -ssl True > /tmp/egardiaserver.log 2>&1 +``` + +Mark it as executable (`$ chmod +x`) and run `sudo nano /lib/systemd/system/egardiaserver.service`. Enter the following into the `egardiaserver.service` file: + +```bash +[Unit] +Description=Egardia Server Service + +[Service] +ExecStart=/bin/bash /srv/homeassistant/homeassistant_venv/lib/python3.5/site-packages/pythonegardia/egardiaserver.sh +StandardOutput=journal+console + +[Install] +WantedBy=multi-user.target +Alias=egardiaserver.service +``` + +Save and then run `sudo systemctl enable egardiaserver.service` and `sudo systemctl start egardiaserver.service`. +6. Test your setup and enjoy. The component will update if the alarm status changes, including triggers. You can use this to build your own automations and send notifications as you wish. diff --git a/source/_components/alarm_control_panel.manual.markdown b/source/_components/alarm_control_panel.manual.markdown index b30ceb63a2c..0bdb28cd801 100644 --- a/source/_components/alarm_control_panel.manual.markdown +++ b/source/_components/alarm_control_panel.manual.markdown @@ -28,10 +28,28 @@ Configuration variables: - **pending_time** (*Optional*): The time in seconds of the pending time before arming the alarm. Default is 60 seconds. - **trigger_time** (*Optional*): The time in seconds of the trigger time in which the alarm is firing. Default is 120 seconds. - **disarm_after_trigger** (*Optional*): If true, the alarm will automatically disarm after it has been triggered instead of returning to the previous state. +- **armed_home/armed_away/armed_night/triggered** (*Optional*): State specific settings + - **pending_time**: State specific pending time override. + +In the config example below, armed_home state will have no pending time and triggered state will have pending time of 20 second whereas armed_away state will have a default pending time of 30 seconds. + +```yaml +# Example configuration.yaml entry +alarm_control_panel: + - platform: manual + name: Home Alarm + code: 1234 + pending_time: 30 + armed_home: + pending_time: 0 + triggered: + pending_time: 20 + trigger_time: 4 +``` ## {% linkable_title Examples %} -In this section you find some real life examples of how to use this panel. +In this section, you find some real-life examples of how to use this panel. ### {% linkable_title Sensors %} @@ -61,3 +79,33 @@ automation: service: alarm_control_panel.alarm_trigger entity_id: alarm_control_panel.ha_alarm ``` + +Sending a notification when the alarm is triggered. + +```yaml +automation: + - alias: 'Send notification when alarm triggered' + trigger: + - platform: state + entity_id: alarm_control_panel.ha_alarm + to: 'triggered' + action: + - service: notify.notify + data: + message: "ALARM! The alarm has been triggered" +``` + +Disarming the alarm when the door is properly unlocked. + +```yaml +automation: + - alias: 'Disarm alarm when door unlocked by keypad' + trigger: + - platform: state + entity_id: sensor.front_door_lock_alarm_type + to: '19' + # many z-wave locks use Alarm Type 19 for 'Unlocked by Keypad' + action: + - service: alarm_control_panel.alarm_disarm + entity_id: alarm_control_panel.house_alarm +``` diff --git a/source/_components/alarm_control_panel.manual_mqtt.markdown b/source/_components/alarm_control_panel.manual_mqtt.markdown new file mode 100644 index 00000000000..bf5ba5bdcc7 --- /dev/null +++ b/source/_components/alarm_control_panel.manual_mqtt.markdown @@ -0,0 +1,103 @@ +--- +layout: page +title: "Manual Alarm Control Panel with MQTT Support" +description: "Instructions how to integrate manual alarms into Home Assistant with MQTT support." +date: 2017-07-02 9:10 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +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. + +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. + +The component will accept the following commands from your Alarm Panel via the `command_topic`: + +- `DISARM` +- `ARM_HOME` +- `ARM_AWAY` +- `ARM_NIGHT` + +When the state of the manual alarm changes, Home Assistant will publish one of the following states to the `state_topic`: + +- 'disarmed' +- 'armed_home' +- 'armed_away' +- 'armed_night' +- 'pending' +- 'triggered' + +```yaml +# Example configuration.yaml entry +alarm_control_panel: + - platform: manual_mqtt + state_topic: home/alarm + command_topic: home/alarm/set +``` + +Configuration variables: + +All configuration variables from the base manual alarm platform are available: + +- **name** (*Optional*): The name of the alarm. Default is "HA Alarm". +- **code** (*Optional*): If defined, specifies a code to enable or disable the alarm in the frontend. This code is not required for MQTT interactions. +- **pending_time** (*Optional*): The time in seconds of the pending time before arming the alarm. Default is 60 seconds. +- **trigger_time** (*Optional*): The time in seconds of the trigger time in which the alarm is firing. Default is 120 seconds. +- **disarm_after_trigger** (*Optional*): If true, the alarm will automatically disarm after it has been triggered instead of returning to the previous state. +- **armed_home|armed_away|armed_night|triggered** (*Optional*): State specific settings + - **pending_time**: State specific pending time override. + +Additionally, the following MQTT configuration variables are also available: + +- **state_topic** (*Required*): The MQTT topic HA will publish state updates to. +- **command_topic** (*Required*): The MQTT topic HA will subscribe to, to receive commands from a remote device to change the alarm state. +- **qos** (*Optional*): The maximum QoS level for subscribing and publishing to MQTT messages. Default is 0. +- **payload_disarm** (*Optional*): The payload to disarm this Alarm Panel. Default is "DISARM". +- **payload_arm_home** (*Optional*): The payload to set armed-home mode on this Alarm Panel. Default is "ARM_HOME". +- **payload_arm_away** (*Optional*): The payload to set armed-away mode on this Alarm Panel. Default is "ARM_AWAY". +- **payload_arm_night** (*Optional*): The payload to set armed-night mode on this Alarm Panel. Default is "ARM_NIGHT". + +In the config example below, armed_home state will have no pending time and triggered state will have a pending time of 20 seconds whereas armed_away state will have a default pending time of 30 seconds. + +```yaml +# Example configuration.yaml entry +alarm_control_panel: + - platform: manual_mqtt + state_topic: home/alarm + command_topic: home/alarm/set + pending_time: 30 + armed_home: + pending_time: 0 + triggered: + pending_time: 20 + trigger_time: 4 +``` + +## {% linkable_title Examples %} + +Refer to the [Manual Alarm Control page](/components/alarm_control_panel.manual/#examples) for some real life examples of how to use this panel. + +## {% linkable_title MQTT Control %} + +The state of this alarm can be controlled using [MQTT](/components/mqtt/). Ensure you've configured that before adding this component. + +To change the state of the alarm, publish one of the following messages to the `command_topic`: + + - `DISARM` + - `ARM_HOME` + - `ARM_AWAY` + - `ARM_NIGHT` + +To receive state updates from HA, subscribe to the `state_topic`. Home Assistant will publish a new message whenever the state changes: + + - `disarmed` + - `armed_home` + - `armed_away` + - `armed_night` + - `pending` + - `triggered` diff --git a/source/_components/alarm_control_panel.mqtt.markdown b/source/_components/alarm_control_panel.mqtt.markdown index 20ad19ea290..7e6feaa7a2e 100644 --- a/source/_components/alarm_control_panel.mqtt.markdown +++ b/source/_components/alarm_control_panel.mqtt.markdown @@ -23,7 +23,7 @@ The component will accept the following states from your Alarm Panel (in lower c - 'pending' - 'triggered' -The component is able to control your Alarm Panel by publishing to the `command_topic` when a user interacts with the Home Assistant frontend. +The component can control your Alarm Panel by publishing to the `command_topic` when a user interacts with the Home Assistant frontend. To enable this platform, add the following lines to your `configuration.yaml`: diff --git a/source/_components/alarm_control_panel.satel_integra.markdown b/source/_components/alarm_control_panel.satel_integra.markdown new file mode 100644 index 00000000000..77752ae7d0b --- /dev/null +++ b/source/_components/alarm_control_panel.satel_integra.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Satel Integra Alarm Control Panel" +description: "Instructions how to setup the Satel Integra control panel within Home Assistant." +date: 2017-09-07 13:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: satel.jpg +ha_category: Alarm +ha_release: 0.54 +ha_iot_class: "Local Push" +--- + + +The `satel_integra` alarm control panel platform allows you to control your [SatelIntegra](http://www.satel.pl/en/) alarms. + +The requirement is that you have setup your [SatelIntegra hub](/components/satel_integra/). + diff --git a/source/_components/alarm_control_panel.totalconnect.markdown b/source/_components/alarm_control_panel.totalconnect.markdown index 446e7a9a8f2..668b7492054 100644 --- a/source/_components/alarm_control_panel.totalconnect.markdown +++ b/source/_components/alarm_control_panel.totalconnect.markdown @@ -14,7 +14,9 @@ ha_release: 0.42 The `totalconnect` platform provides connectivity with the Honeywell TotalConnect alarm systems used by many alarm companies. -If you have issues running this component, you may require "libxml2-dev" and "libxmlsec1-dev". To install these on Hassbian, run the command `apt install libxml2-dev libxmlsec1-dev` with sudo +This platform supports the following services: `alarm_arm_away`, `alarm_arm_home`, `alarm_arm_night` and `alarm_disarm`. + +If you have issues running this component, you may require `libxml2-dev` and `libxmlsec1-dev` packages. To install these on Hassbian, run the command `apt install libxml2-dev libxmlsec1-dev` with sudo. To enable this, add the following lines to your `configuration.yaml`: diff --git a/source/_components/alarm_control_panel.wink.markdown b/source/_components/alarm_control_panel.wink.markdown index e8e394b8d10..032bbd3cb36 100644 --- a/source/_components/alarm_control_panel.wink.markdown +++ b/source/_components/alarm_control_panel.wink.markdown @@ -26,6 +26,6 @@ The requirement is that you have setup [Wink](/components/wink/).

-The above devices are confimed to work, but others may work as well. +The above devices are confirmed to work, but others may work as well.

diff --git a/source/_components/alarmdecoder.markdown b/source/_components/alarmdecoder.markdown index ae5b6c03f22..82beb4b5e62 100644 --- a/source/_components/alarmdecoder.markdown +++ b/source/_components/alarmdecoder.markdown @@ -13,7 +13,7 @@ ha_release: 0.43 ha_iot_class: "Local Push" --- -The `alarmdecoder` component will allow Home Assistant users who own either a DSC or Honeywell alarm panel to leverage their alarm system and it's sensors to provide Home Assistant with rich information about their homes. Connectivity between Home Assistant and the alarm panel is accomplished through a device produced by Nu Tech Software Solutions, known as the AlarmDecoder. The AlarmDecoder devices provide a serial, TCP/IP socket or USB interface to the alarm panel, where it emulates an alarm keypad. +The `alarmdecoder` component will allow Home Assistant users who own either a DSC or Honeywell alarm panel to leverage their alarm system and its sensors to provide Home Assistant with rich information about their homes. Connectivity between Home Assistant and the alarm panel is accomplished through a device produced by Nu Tech Software Solutions, known as the AlarmDecoder. The AlarmDecoder devices provide a serial, TCP/IP socket or USB interface to the alarm panel, where it emulates an alarm keypad. Please visit the [AlarmDecoder website](https://www.alarmdecoder.com/) for further information about the AlarmDecoder devices. @@ -46,10 +46,10 @@ alarmdecoder: Configuration variables: -- **type** (*Required*): The type of AlarmDecoder device: socket, serial or usb +- **type** (*Required*): The type of AlarmDecoder device: socket, serial or USB - **host** (*Optional*): The IP address of the AlarmDecoder device on your home network, if using socket type. Default: `localhost` - **port** (*Optional*): The port of the AlarmDecoder device on your home network, if using socket type. Default: `10000` - **path** (*Optional*): The path of the AlarmDecoder device, if using socket type. Default: `/dev/ttyUSB0` -- **baud** (*Optional*): The baud rate of the AlarmDecoder device, if using serial type. Default: `115200` -- **panel_display** (*Optional*): Create a sensor called sensor.alarm_display to match the Alarm Keypad dispaly. Default: `off` +- **baudrate** (*Optional*): The baud rate of the AlarmDecoder device, if using serial type. Default: `115200` +- **panel_display** (*Optional*): Create a sensor called sensor.alarm_display to match the Alarm Keypad display. Default: `off` - **zones** (*Optional*): AlarmDecoder has no way to tell us which zones are actually in use, so each zone must be configured in Home Assistant. For each zone, at least a name must be given. 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.* diff --git a/source/_components/alert.markdown b/source/_components/alert.markdown index 3c773e9c756..acdf983305f 100644 --- a/source/_components/alert.markdown +++ b/source/_components/alert.markdown @@ -12,11 +12,11 @@ ha_category: Automation ha_release: 0.38 --- -The `alert` component is designed to notify you when problematic issues arise. For example, if the garage door is left open, the `alert` component can be used remind you of this by sending you repeating notifications at customizable intervals. This is also useful for low battery sensors, water leak sensors, or any condition that may need your attention. +The `alert` component is designed to notify you when problematic issues arise. For example, if the garage door is left open, the `alert` component can be used remind you of this by sending you repeating notifications at customizable intervals. This is also used for low battery sensors, water leak sensors, or any condition that may need your attention. Alerts will add an entity to the front end only when they are firing. This entity allows you to silence an alert until it is resolved. -When using the `alert` component it is important that the timezone used for Home Assistant and the underlying operating system match. Failing to do so may result in multiple alerts being sent at the same time (such as when Home Assistant is set to the `America/Detroit` timezone but the operating system uses `UTC`). +When using the `alert` component, it is important that the time zone used for Home Assistant and the underlying operating system match. Failing to do so may result in multiple alerts being sent at the same time (such as when Home Assistant is set to the `America/Detroit` time zone but the operating system uses `UTC`). ### {% linkable_title Basic Example %} @@ -27,6 +27,7 @@ The `alert` component makes use of any of the `notifications` components. To set alert: garage_door: name: Garage is open + done_message: Garage is closed entity_id: input_boolean.garage_door state: 'on' repeat: 30 @@ -39,10 +40,11 @@ alert: Configuration variables: - **name** (*Required*): The friendly name of the alert. +- **done_message** (*Optional*): 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`. - **entity_id** (*Required*): The ID of the entity to watch. - **state** (*Optional*): The problem condition for the entity. Defaults to `on`. - **repeat** (*Required*): Number of minutes before the notification should be repeated. Can be either a number or a list of numbers. -- **can_acknowledge** (*Optional*): Allows the alert to be unacknowledgable. Defaults to `true`. +- **can_acknowledge** (*Optional*): Allows the alert to be unacknowledgeable. Defaults to `true`. - **skip_first** (*Optional*): Controls whether the notification should be sent immediately or after the first delay. Defaults to `false`. - **notifiers** (*Required*): List of `notification` components to use for alerts. @@ -73,7 +75,7 @@ freshwater_temp_alert: ### {% linkable_title Complex Alert Criteria %} -By design, the `alert` component only handles very simple criteria for firing. That is, is only checks if a single entity's state is equal to a value. At some point, it may be desireable to have an alert with a more complex criteria. Possibly, when a battery percentage falls below a threshold. Maybe you want to 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. +By design, the `alert` component only handles very simple criteria for firing. That is, it only checks if a single entity's state is equal to a value. At some point, it may be desirable to have an alert with a more complex criteria. Possibly, when a battery percentage falls below a threshold. Maybe you want to 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. ```yaml binary_sensor: @@ -97,7 +99,7 @@ This example will begin firing as soon as the entity `sensor.motion`'s `battery` ### {% linkable_title Dynamic Notification Delay Times %} -It may be desireable to have the delays between alert notifications dynamically change as the alert continues to fire. This can be done by setting the `repeat` configuration key to a list of numbers rather than a single number. Altering the first example would look like the following. +It may be desirable to have the delays between alert notifications dynamically change as the alert continues to fire. This can be done by setting the `repeat` configuration key to a list of numbers rather than a single number. Altering the first example would look like the following. ```yaml # Example configuration.yaml entry diff --git a/source/_components/alexa.markdown b/source/_components/alexa.markdown index fd96399a702..179fb4076c1 100644 --- a/source/_components/alexa.markdown +++ b/source/_components/alexa.markdown @@ -15,42 +15,14 @@ ha_release: 0.10 There are a few ways that you can use Amazon Echo and Home Assistant together. -- [Turning devices on and off](#i-just-want-to-turn-devices-on-and-off-using-echo) - [Build custom commands to use](#i-want-to-build-custom-commands-to-use-with-echo) - [Create a new Flash Briefing source](#flash-briefing-skills) - -No matter which method(s) you decide to use, please remember that Amazon Echo requires an active Internet connection to function. If your Internet is down or experiencing issues (or Amazon's infrastructure is having issues), none of these methods will work. +- Alternative: use the [Emulated Hue component][emulated-hue-component] to trick Alexa to thinking Home Assistant is a Philips Hue hub. Amazon has released [Echosim], a website that simulates the Alexa service in your browser. That way it is easy to test your skills without having access to a physical Amazon Echo. [Echosim]: https://echosim.io/ -## {% linkable_title I just want to turn devices on and off using Echo %} - -If you just want to be able to turn anything with a switch (like lights, switches, media players, etc) on and off, you should enable the [Emulated Hue][emulated-hue-component] component. It makes your Home Assistant appear as if it were a Phillips Hue bridge, which Echo works with natively. - -[emulated-hue-component]: https://home-assistant.io/components/emulated_hue/ - -Enabling the Emulated Hue component means you can turn things on and off by simply saying - -> Alexa, turn the living room lights on. - -or - -> Alexa, set the living room lights to twenty percent. - -instead of - -> Alexa, tell Home Assistant to turn the living room lights on. - -or - -> Alexa, tell Home Assistant to set the living room lights to twenty percent. - -In addition, you would need to build custom intents for each device and on/off combination using the below method, whereas everything just works without any extra work by using Emulated Hue. - -Please note that you can use Emulated Hue and the built-in Alexa component side-by-side without issue if you wish. - ## {% linkable_title I want to build custom commands to use with Echo %} The built-in Alexa component allows you to integrate Home Assistant into Alexa/Amazon Echo. This component will allow you to query information and call services within Home Assistant by using your voice. Home Assistant offers no built-in sentences but offers a framework for you to define your own. @@ -61,7 +33,13 @@ The built-in Alexa component allows you to integrate Home Assistant into Alexa/A ### {% linkable_title Requirements %} -Amazon requires the endpoint of a skill to be hosted via SSL. Self-signed certificates are ok because our skills will only run in development mode. Read more on [our blog][blog-lets-encrypt] about how to set up encryption for Home Assistant. If you are unable to get HTTPS up and running, consider using [this AWS Lambda proxy for Alexa skills](https://community.home-assistant.io/t/aws-lambda-proxy-custom-alexa-skill-when-you-dont-have-https/5230). +Amazon requires the endpoint of a skill to be hosted via SSL. Self-signed certificates are OK because our skills will only run in development mode. Read more on [our blog][blog-lets-encrypt] about how to set up encryption for Home Assistant. When running Hass.io, using the [Let's Encrypt](/addons/lets_encrypt/) and [Duck DNS](/addons/duckdns/) add-ons is the easiest method. If you are unable to get HTTPS up and running, consider using [this AWS Lambda proxy for Alexa skills](https://community.home-assistant.io/t/aws-lambda-proxy-custom-alexa-skill-when-you-dont-have-https/5230). + +Additionally, note that at the time of this writing, your Alexa skill endpoint *must* accept requests over port 443 (Home Assistant default to 8123). There are two ways you can handle this: + + 1. In your router, forward external 443 to your Home Assistant serving port (defaults to 8123) + OR + 2. Change your Home Assistant serving port to 443 this is done in the [`http`](/components/http/) section with the `server_port` entry in your `configuration.yaml` file [blog-lets-encrypt]: https://home-assistant.io/blog/2015/12/13/setup-encryption-using-lets-encrypt/ @@ -76,7 +54,7 @@ To get started with Alexa skills: - Version: 1.0 - Endpoint: - https - - https://YOUR_HOST/api/alexa?api_password=YOUR_API_PASSWORD + - `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. @@ -121,60 +99,19 @@ This means that we can now ask Alexa things like: ## {% linkable_title Configuring Home Assistant %} -Out of the box, the component will do nothing. You have to teach it about all intents you want it to answer to. The way it works is that the answer for each intent is based on [templates] that you define. Each template will have access to the existing states via the `states` variable but will also have access to all variables defined in the intent. +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. -You can use [templates] for the values of `speech/text`, `card/title` and `card/content`. - -Actions are using the [Home Assistant Script Syntax] and also have access to the variables from the intent. - -[Home Assistant Script Syntax]: /getting-started/scripts/ - -Configuring the Alexa component for the above intents would look like this: +To enable Alexa add the following entry to your `configuration.yaml` file: ```yaml -{% raw %}# Example configuration.yaml entry alexa: - intents: - WhereAreWeIntent: - speech: - type: plaintext - text: > - {%- if is_state('device_tracker.paulus', 'home') and - is_state('device_tracker.anne_therese', 'home') -%} - You are both home, you silly - {%- else -%} - Anne Therese is at {{ states("device_tracker.anne_therese") }} - and Paulus is at {{ states("device_tracker.paulus") }} - {% endif %} - - LocateIntent: - action: - service: notify.notify - data_template: - message: The location of {{ User }} has been queried via Alexa. - speech: - type: plaintext - text: > - {%- for state in states.device_tracker -%} - {%- if state.name.lower() == User.lower() -%} - {{ state.name }} is at {{ state.state }} - {%- elif loop.last -%} - I am sorry, I do not know where {{ User }} is. - {%- endif -%} - {%- else -%} - Sorry, I don't have any trackers registered. - {%- endfor -%} - card: - type: simple - title: Sample title - content: Some more content{% endraw %} ``` ### {% linkable_title Working With Scenes %} One of the most useful applications of Alexa integrations is to call scenes directly. This is easily achieved with some simple setup on the Home Assistant side and by letting Alexa know which scenes you want to run. -First we will configure Alexa. In the Amazon Interaction module add this to the intent schema: +First, we will configure Alexa. In the Amazon Interaction module add this to the intent schema: ```json { @@ -195,6 +132,7 @@ Then create a custom slot type called `Scenes` listing every scene you want to c Custom slot type for scene support.

+ The names must exactly match the scene names (minus underscores - amazon discards them anyway and we later map them back in with the template). Add a sample utterance: @@ -203,22 +141,23 @@ Add a sample utterance: ActivateSceneIntent activate {Scene} ``` -Then add the intent to your Alexa Section in your HA config file: +Then add the intent to your intent_script section in your HA config file: ```yaml - ActivateSceneIntent: - action: - service: scene.turn_on - data_template: - entity_id: scene.{% raw %}{{ Scene | replace(" ", "_") }}{% endraw %} - speech: - type: plaintext - text: OK +intent_script: + ActivateSceneIntent: + action: + service: scene.turn_on + data_template: + entity_id: scene.{% raw %}{{ Scene | replace(" ", "_") }}{% endraw %} + speech: + type: plain + text: OK ``` Here we are using [templates] to take the name we gave to Alexa e.g. `downstairs on` and replace the space with an underscore so it becomes `downstairs_on` as Home Assistant expects. -Now say `Alexa ask homeassistant to activate ` and Alexa will activate that scene for you. +Now say `Alexa ask Home Assistant to activate ` and Alexa will activate that scene for you. ### {% linkable_title Adding Scripts %} @@ -250,20 +189,44 @@ Add a sample utterance: RunScriptIntent run {Script} ``` -Then add the intent to your Alexa Section in your HA config file: +Then add the intent to your intent_script section in your HA config file: ```yaml - RunScriptIntent: - action: - service: script.turn_on - data_template: - entity_id: script.{% raw %}{{ Script | replace(" ", "_") }}{% endraw %} - speech: - type: plaintext - text: OK +intent_script: + RunScriptIntent: + action: + service: script.turn_on + data_template: + entity_id: script.{% raw %}{{ Script | replace(" ", "_") }}{% endraw %} + speech: + type: plain + text: OK ``` -Now say `Alexa ask homeassistant to run ` and Alexa will run that script for you. +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 + +The configuration is the same as an intent with the exception being you will use your skill ID instead of the intent name. +```yaml +intent_script: + amzn1.ask.skill.08888888-7777-6666-5555-444444444444: + action: + service: script.turn_on + entity_id: script.red_alert + speech: + type: plain + text: OK +``` ## {% linkable_title Giving Alexa Some Personality %} @@ -306,35 +269,6 @@ text: !include alexa_confirm.yaml Alexa will now respond with a random phrase each time. You can use the include for as many different intents as you like so you only need to create the list once. -

-As of April 2017, the random filter has been somewhat broken. You'll get a random response the first time this runs, but subsequent commands will reply with the same randomly-chosen phrase. On reboot, Home Assistant will pick a new random choice, but you're stuck with that choice till you reboot. To get around that, use the following code in alexa_confirm.yaml: -

- -```text -{% raw %} > - {% set responses = [ - "OK", - "Sure", - "If you insist", - "Done", - "No worries", - "I can do that", - "Leave it to me", - "Consider it done", - "As you wish", - "By your command", - "Affirmative", - "Yes oh revered one", - "I will", - "As you decree, so shall it be", - "No Problem" - ] %} - {% set rindex = (range(0, (responses | length - 1) )|random) -%} - {{responses[rindex]}} - {% endraw %} -``` - - ## {% linkable_title Flash Briefing Skills %} As of version [0.31][zero-three-one] Home Assistant supports the new [Alexa Flash Briefing Skills API][flash-briefing-api]. A Flash Briefing Skill adds a new Flash Briefing source that is generated by Home Assistant. @@ -361,7 +295,7 @@ alexa: {% endif %}{% endraw %} ``` -You can add multiple items for a feed if you want. The Amazon required uid and timestamp will be randomly generated at startup and change at every restart of Home Assistant. +You can add multiple items for a feed if you want. The Amazon required UID and timestamp will be randomly generated at startup and change at every restart of Home Assistant. Please refer to the [Amazon documentation][flash-briefing-api-docs] for more information about allowed configuration parameters and formats. @@ -384,7 +318,7 @@ 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". [amazon-dev-console]: https://developer.amazon.com @@ -395,3 +329,4 @@ Please refer to the [Amazon documentation][flash-briefing-api-docs] for more inf [templates]: /topics/templating/ [zero-three-one]: /blog/2016/10/22/flash-briefing-updater-hacktoberfest/ [alexa-settings-site]: http://alexa.amazon.com/ +[emulated-hue-component]: /components/emulated_hue/ diff --git a/source/_components/amcrest.markdown b/source/_components/amcrest.markdown new file mode 100644 index 00000000000..c910e10647e --- /dev/null +++ b/source/_components/amcrest.markdown @@ -0,0 +1,63 @@ +--- +layout: page +title: "Amcrest IP Camera" +description: "Instructions how to integrate Amcrest IP cameras within Home Assistant." +date: 2017-06-24 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: amcrest.png +ha_category: Hub +ha_iot_class: "Local Polling" +ha_release: 0.49 +--- + +The `amcrest` platform allows you to integrate your [Amcrest](https://amcrest.com/) IP camera in Home Assistant. + +To enable your camera in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +amcrest: + - host: IP_ADDRESS + username: USERNAME + password: PASSWORD + sensors: + - motion_detector + - sdcard + + - host: IP_ADDRESS + username: USERNAME + password: PASSWORD + resolution: low + stream_source: snapshot + sensors: + - ptz_preset +``` + +Configuration variables: + +- **host** (*Required*): The IP address or hostname of your camera. If using a hostname, make sure the DNS works as expected. +- **username** (*Required*): The username for accessing your camera. +- **password** (*Required*): The password for accessing your camera. +- **name** (*Optional*): This parameter allows you to override the name of your camera. The default is "Amcrest Camera". +- **port** (*Optional*): The port that the camera is running on. The default is 80. +- **resolution** (*Optional*): This parameter allows you to specify the camera resolution. For a high resolution (1080/720p), specify the option `high`. For VGA resolution (640x480p), specify the option `low`. If omitted, it defaults to *high*. +- **stream_source** (*Optional*): The data source for the live stream. `mjpeg` will use the camera's native MJPEG stream, whereas `snapshot` will use the camera's snapshot API to create a stream from still images. You can also set the `rtsp` option to generate the streaming via RTSP protocol. If omitted, it defaults to *snapshot*. +- **ffmpeg_arguments**: (*Optional*): Extra options to pass to ffmpeg, e.g. image quality or video filter options. +- **authentication**: (*Optional*): Defines which authentication method to use only when **stream_source** is **mjpeg**. Currently, *aiohttp* only support *basic*. It defaults to *basic*. +- **scan_interval** (*Optional*): Defines the update interval of the sensor in seconds. The default is 10 seconds. +- **sensors** array (*Optional*): Conditions to display in the frontend. By default, *none* of the conditions are enabled. The following conditions can be monitored. + - **motion_detector**: Return True/False when a motion is detected + - **sdcard**: Return the SD card usage by reporting the total and used space + - **ptz_preset**: Return the number of PTZ preset positions configured for the given camera + +**Note:** Amcrest cameras with newer firmware no longer have the ability to stream `high` definition video with MJPEG encoding. You may need to use `low` resolution stream or the `snapshot` stream source instead. If the quality seems too poor, lower the `Frame Rate (FPS)` and max out the `Bit Rate` settings in your camera's configuration manager. If you defined the *stream_source* to **mjpeg**, make sure your camera supports *Basic* HTTP authentication. Newer Amcrest firmware may not work, then **rtsp** is recommended instead. + +**Note:** If you set the `stream_source` option to `rtsp`, make sure to follow the steps mentioned at +[FFMPEG](https://home-assistant.io/components/ffmpeg/) documentation to install the `ffmpeg`. + +Finish its configuration by visiting the [Amcrest sensor page](/components/sensor.amcrest/) or [Amcrest camera page](/components/camera.amcrest/). + +To check if your Amcrest camera is supported/tested, visit the [supportability matrix](https://github.com/tchellomello/python-amcrest#supportability-matrix) link from the `python-amcrest` project. diff --git a/source/_components/android_ip_webcam.markdown b/source/_components/android_ip_webcam.markdown index 535a0c760cb..5a62ccefdeb 100644 --- a/source/_components/android_ip_webcam.markdown +++ b/source/_components/android_ip_webcam.markdown @@ -15,7 +15,7 @@ ha_iot_class: "Local Polling" The `android_ip_webcam` component turns an Android phone into a network camera with multiple viewing options. -It's setup as a 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. +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. To set it up, download [the IP Webcam app][app], and add the following information to your `configuration.yaml` file: @@ -33,8 +33,8 @@ Configuration variables: - **username** (*Optional*): The username to access the phone. - **password** (*Optional*): The password to access the phone. - **scan_interval** (*Optional*): Default is 10 seconds. Defines the update interval of the phone. -- **sensors** array (*Optional*): Conditions to display sensor in the frontend. See list of supported sensors. -- **switches** array (*Optional*): Conditions to display settings in the frontend. See list of supported settings. +- **sensors** array (*Optional*): Conditions to display sensor in the frontend. See the list of supported sensors. +- **switches** array (*Optional*): Conditions to display settings in the frontend. See the list of supported settings. - **motion_sensor** (*Optional*): Activate motion sensor if auto_discovery is disabled. ### {% linkable_title Supported features %} @@ -49,7 +49,7 @@ Sensors: - motion - pressure -Settings: +Settings (Switches): - exposure_lock - ffc @@ -61,4 +61,37 @@ Settings: - whitebalance_lock - video_recording +## {% linkable_title Full example %} + +```yaml +# Example configuration.yaml entry +android_ip_webcam: + - host: 192.168.1.202 + port: 8000 + sensors: + - audio_connections + - battery_level + - battery_temp + - battery_voltage + - light + - motion + - pressure + switches: + - exposure_lock + - ffc + - focus + - gps_active + - night_vision + - overlay + - torch + - whitebalance_lock + - video_recording + - host: 192.168.1.203 + port: 8000 + sensors: + - light + switches: + - torch +``` + [app]: https://play.google.com/store/apps/details?id=com.pas.webcam diff --git a/source/_components/apiai.markdown b/source/_components/apiai.markdown deleted file mode 100644 index 7ab70633035..00000000000 --- a/source/_components/apiai.markdown +++ /dev/null @@ -1,139 +0,0 @@ ---- -layout: page -title: "Api.AI" -description: "Instructions how integrate api.ai with Home Assistant." -date: 2017-01-27 11:28 -sidebar: true -comments: false -sharing: true -footer: true -logo: apiai.png -ha_category: Voice -featured: false -ha_release: 0.38 ---- - -This component is designed to be used with the "webhook" integration in [api.ai][apiai-web]. When a conversation ends with an user, api.ai sends an action and parameters to the webhook. - -api.ai requires a public endpoint (HTTPS recommended), so your Home Assistant should be exposed to Internet. api.ai will return fallback answers if your server do not answer, or takes too long (more than 5 seconds). - -api.ai could be integrated with many popular messaging, virtual assistant and IoT platforms, eg.: Google Assistant (Google Actions), Skype, Messenger. [See here](https://docs.api.ai/docs/integrations) the complete list. - -Using Api.ai will be easy to create conversations like: - - > User: Which is the temperature at home? - > - > Bot: The temperature is 34 degrees - - > User: Turn on the light - > - > Bot: In which room? - > - > User: In the kitchen - > - > Bot: Turning on kitchen light - -To use this integration you should define a conversation (intent) in Api.ai, configure Home Assistant with the speech to return and, optionally, the action to execute. - -### {% linkable_title Configuring your api.ai account %} - -- [Login][apiai-web] with your Google account. -- Click on "Create Agent" -- Select name, language (if you are planning to use it with Google Actions check [here](https://support.google.com/assistant/answer/7108196?hl=en) supported languages) and time zone -- Click "Save" -- Go to "Fullfiment" (in the left menu) -- Enable Webhook and set your Home Assistant URL with the Api.ai endpoint. Eg.: ``https://myhome.duckdns.org/api/apiai?api_password=HA_PASSWORD`` -- Click "Save" -- Create a new intent -- Below "User says" write one phrase that you, the user, will tell Api.ai. Eg.: Which is the temperature at home? -- In "Action" set some key (this will be the bind with Home Assistant configuration), eg.: GetTemperature -- In "Response" set "Cannot connect to Home Assistant or it is taking to long" (fall back response) -- At the end of the page, click on "Fulfillment" and check "Use webhook" -- Click "Save" -- On the top right, where is written "Try it now...", write, or say, the phrase you have previously defined and hit enter -- Api.ai has send a request to your Home Assistant server - -Take a look to "Integrations", in the left menu, to configure third parties. - - -### {% linkable_title Configuring Home Assistant %} - -Out of the box, the component will do nothing. You have to teach it about all intents you want it to answer to. The way it works is that the answer for each intent is based on [templates] that you define. Each template will have access to the existing states via the `states` variable but will also have access to all variables defined in the intent. - -You can use [templates] for setting `speech`. - -Actions are using the [Home Assistant Script Syntax] and also have access to the variables from the intent. - -[Home Assistant Script Syntax]: /getting-started/scripts/ - -Example of an Api.ai for the above configuration: - -```yaml -{% raw %}# Example configuration.yaml entry -apiai: - intents: - GetTemperature: - speech: We have {{ states.sensor.temperature }} degrees - async_action: False - action: - service: notify.notify - data_template: - message: Api.ai has send a request -{% endraw %} -``` - -Inside an intent we can define this variables: -- **speech** (*Optional*): Text or template to return to Api.ai -- **action** (*Optional*): Script definition -- **async_action** (*Optional*): If Home Assistant should execute the action asynchronously (returning response to Api.ai without waiting the action to finish). Should be set to `True` if Api.ai is returning the "Cannot connect to Home Assistant or it is taking to long" message, but then you will not be able to use values based on the result of the action. Defaults to `False`. - - -## {% linkable_title Examples %} - -Download [this zip](https://github.com/home-assistant/home-assistant.github.io/blob/next/source/assets/HomeAssistant_APIAI.zip) and load it in your Api.ai agent (Settings -> Export and Import) for examples intents to use with this configuration: - -```yaml -{% raw %}# Example configuration.yaml entry -apiai: - intents: - Temperature: - speech: The temperature at home is {{ states('sensor.home_temp') }} degrees - LocateIntent: - speech: > - {%- for state in states.device_tracker -%} - {%- if state.name.lower() == User.lower() -%} - {{ state.name }} is at {{ state.state }} - {%- elif loop.last -%} - I am sorry, I do not know where {{ User }} is. - {%- endif -%} - {%- else -%} - Sorry, I don't have any trackers registered. - {%- endfor -%} - WhereAreWeIntent: - speech: > - {%- if is_state('device_tracker.adri', 'home') and - is_state('device_tracker.bea', 'home') -%} - You are both home, you silly - {%- else -%} - Bea is at {{ states("device_tracker.bea") }} - and Adri is at {{ states("device_tracker.adri") }} - {% endif %} - TurnLights: - speech: Turning {{ Room }} lights {{ OnOff }} - action: - - service: notify.pushbullet - data_template: - message: Someone asked via apiai to turn {{ Room }} lights {{ OnOff }} - - service_template: > - {%- if OnOff == "on" -%} - switch.turn_on - {%- else -%} - switch.turn_off - {%- endif -%} - data_template: - entity_id: "switch.light_{{ Room | replace(' ', '_') }}" -{% endraw %} -``` - -[apiai-web]: https://api.ai/ -[templates]: /topics/templating/ diff --git a/source/_components/apple_tv.markdown b/source/_components/apple_tv.markdown new file mode 100644 index 00000000000..5709958530d --- /dev/null +++ b/source/_components/apple_tv.markdown @@ -0,0 +1,145 @@ +--- +layout: page +title: "Apple TV" +description: "Instructions how to integrate Apple TV devices into Home Assistant." +date: 2017-06-26 20:47 +sidebar: true +comments: false +sharing: true +footer: true +logo: apple.png +ha_category: Hub +ha_iot_class: "Local Push" +ha_release: 0.49 +--- + +The `apple_tv` platform allows you to control an Apple TV (3rd and 4th generation). See the [remote platform](/components/remote.apple_tv/) if you want to send remote control buttons, e.g. arrow keys. + +

+Currently, you must have Home Sharing enabled for this to work. Support for pairing Home Assistant with your device will be supported in a later release. +

+ +To use this component, you must first install some system libraries and a compiler. For Debian or a similar system, this should be enough: + +```shell +$ sudo apt-get install build-essential libssl-dev libffi-dev python-dev +``` + +If you want to discover new devices automatically, just make sure you have `discovery:` in your `configuration.yaml` file. To manually add one or more Apple TVs to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +apple_tv: + - host: IP_1 + login_id: LOGIN_ID_1 + name: NAME_1 + start_off: START_OFF_1 + credentials: CREDENTIALS_1 + - host: IP_2 + login_id: LOGIN_ID_2 + name: NAME_2 + start_off: START_OFF_2 + credentials: CREDENTIALS_2 +``` + +Configuration variables: + +- **host** (*Required*): The IP-address of the device. +- **login_id** (*Required*): An identifier used to login to the device, see below. +- **name** (*Optional*): The name of the device used in the frontend. +- **start_off** (*Optional*): Set to true if the device should start in fake standby. +- **credentials** (*Optional*): Credentials used for AirPlay playback. + +In order to connect to the device, you need a *login id*. The easiest way to obtain this identifier is to use the `apple_tv_scan` service (described below). Additional information about `start_off` and `credentials` can also be found under the guides section. + +## {% linkable_title Guides %} + +### {% linkable_title Scanning for devices %} + +To scan for devices, press the icon in the upper left corner and select the leftmost icon according to the image: + + + +Select `apple_tv` as domain and `apple_tv_scan` as service then press the button: + + + +Scanning will be done for three seconds and notification will be shown in the state view with all found devices: + + + +Alternatively, you may use the application ``atvremote``. Install it with ``pip3 install --upgrade pyatv`` in your Home Assistant environment (note: do *not* use sudo). Then run ``atvremote scan`` to scan for all devices (try again if a device is missing): + +```bash +$ atvremote scan +Found Apple TVs: + - Apple TV at 10.0.10.22 (login id: 00000000-1234-5678-9012-345678901234) + +Note: You must use 'pair' with devices that have home sharing disabled +``` + +Just copy and paste the login id from the device you want to add. For more details about `atvremote`, see: [this page](http://pyatv.readthedocs.io/en/master/atvremote.html). + +### {% linkable_title My Apple TV turns on when I restart Home Assistant %} + +The Apple TV will automatically turn on if a request is sent to it, e.g., if a button is pressed, something is streamed to it via AirPlay or if current state (currently playing) is accessed. This is how Apple has designed it, and it will cause problems if you are using HDMI CEC. Every time Home Assistant is started, a new request is sent to the device to figure out what is currently playing. When using CEC, this will wake up your TV and other devices you have configured. + +So, if your TV is randomly turning on, this is probably the reason. As stated, this is by design, and there is no real fix for it. There's also no known way to turn off the Apple TV via the protocol used for communication. You have the following options: + +- Do not use this platform +- Disable HDMI CEC on your Apple TV +- Use "fake standby" + +The first two points are quite obvious. Fake standby is a concept implemented in this platform that disables all requests to the device and makes it appear as being "off" in the web interface. This will make sure that the device is not woken up, but it will of course not show any information or allow you to control it. It is however easy to turn it on (or off) in the web interface or to use an automation with `turn_on`. To make it more useful, you can write automations that turn it on or off depending on some other device, like the input source on your receiver. + +To put a device into fake standby when starting Home Assistant, add `start_off: true` to your configuration. + +

+Turning the device on/off in the user interface will *not* turn the physical device on/off according to the description above. +

+ + +### {% linkable_title Setting up device authentication %} + +If you, when playing media with `play_url`, get the following error message: + +*“This AirPlay connection requires iOS 7.1 or later, OS X 10.10 or later, or iTunes 11.2 or later.”* + +then device authentication is required. Press the icon in the upper left corner and select the leftmost icon according to the image below: + + + +Select `apple_tv` as domain, `apple_tv_authenticate` as service and enter `{"entity_id": "XXX"}` into "Service Data", but replace XXX with the entity id of your device (e.g. `media_player.apple_tv`). Press the button and hopefully you are presented with an input dialog asking for a pin code: + + + +If no dialog appears, go back to the states view and display it from there (press `CONFIGURE` as displayed in the image): + + + +A PIN code should now be visible on your TV, just enter it into the dialog and press "Confirm". You should see if it succeeded in the state view. Copy the credentials and insert it into your configuration (make sure you copy everything, it should be 81 characters) after ``credentials:`` with no line-break: + +```yaml +# Example configuration.yaml entry +apple_tv: + - host: 10.0.0.20 + login_id: 00000000-1234-5678-9012-345678901234 + credentials: 1B8C387DDB59BDF6:CF5ABB6A2C070688F5926ADB7C010F6DF847252C15F9BDB6DA3E09D6591E90E5 +``` + +Restart Home Assistant, and you should now be able to use `play_url` as before. + +## {% linkable_title Services %} + +### {% linkable_title Service `apple_tv_authenticate` %} + +To play media on an Apple TV with device authentication enabled (e.g., ATV4 with tvOS 10.2+), Home Assistant must be properly authenticated. This method starts the process and presents the credentials needed for playback as a persistent notification. Please see guide above for usage. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of Apple TVs. + +### {% linkable_title Service `apple_tv_scan` %} + +Scans the local network for Apple TVs. All found devices are presented as a persistent notification. + diff --git a/source/_components/arduino.markdown b/source/_components/arduino.markdown index 9ba29e20e6e..acfd091c727 100644 --- a/source/_components/arduino.markdown +++ b/source/_components/arduino.markdown @@ -14,13 +14,13 @@ ha_release: pre 0.7 ha_iot_class: "Local Polling" --- -The [Arduino](https://www.arduino.cc/) device family are microcontroller boards that are often based on the ATmega328 chip. They come with digital input/output pins (some can be used as PWM outputs), analog inputs, and a USB connection. The equipment depends on the [type](https://www.arduino.cc/en/Main/Products) of board. The most common ones are the Arduino Uno and the Arduino Leonardo with 14 digital input/output pins and 6 analog input pins. +The [Arduino](https://www.arduino.cc/) device family are microcontroller boards that are often based on the ATmega328 chip. They come with digital input/output pins (some can be used as PWM outputs), analog inputs, and a USB connection. The equipment depends on the [type](https://www.arduino.cc/en/Main/Products) of the board. The most common ones are the Arduino Uno and the Arduino Leonardo with 14 digital input/output pins and 6 analog input pins. -There are a lot of extensions (so called [shields](https://www.arduino.cc/en/Main/ArduinoShields)) available. Those shields can be plugged-in into the existing connectors and stacked on top of each other. This makes it possible to expand the capabilities of the Arduino boards. +There are a lot of extensions (so-called [shields](https://www.arduino.cc/en/Main/ArduinoShields)) available. Those shields can be plugged-in into the existing connectors and stacked on top of each other. This makes it possible to expand the capabilities of the Arduino boards. The `arduino` component is designed to let you use a directly attached board to your Home Assistant host over USB. -You need to have the [Firmata firmware](https://github.com/firmata/) on your board. Please upload the `StandardFirmata` sketch to your board, please refer to the [Arduino documentation](https://www.arduino.cc/en/Main/Howto) for further information. +You need to have the [Firmata firmware](https://github.com/firmata/) on your board. Please upload the `StandardFirmata` sketch to your board; please refer to the [Arduino documentation](https://www.arduino.cc/en/Main/Howto) for further information. To integrate an Arduino boards with Home Assistant, add the following section to your `configuration.yaml` file: @@ -32,7 +32,7 @@ arduino: Configuration variables: -- **port** (*Required*): The port where your board is connected to your Home Assistant host. If you are using an original Arduino the port will be named `ttyACM*` otherwise `ttyUSB*`. +- **port** (*Required*): The port where your board is connected to your Home Assistant host. If you are using an original Arduino, the port will be named `ttyACM*` otherwise `ttyUSB*`. The exact number can be determined with the command shown below. @@ -40,7 +40,7 @@ The exact number can be determined with the command shown below. $ ls /dev/ttyACM* ``` -If that's not working, check your `dmesg` or `journalctl -f` output. Keep in mind that Arduino clones are often using a different name for the port (eg. `/dev/ttyUSB*`). +If that's not working, check your `dmesg` or `journalctl -f` output. Keep in mind that Arduino clones are often using a different name for the port (e.g. `/dev/ttyUSB*`).

A word of caution: The Arduino boards are not storing states. This means that with every initialization the pins are set to off/low. diff --git a/source/_components/arlo.markdown b/source/_components/arlo.markdown index ec67022b6ad..479a7713293 100644 --- a/source/_components/arlo.markdown +++ b/source/_components/arlo.markdown @@ -31,4 +31,18 @@ Configuration variables: It is recommended to create a dedicated user on Arlo website to be used within Home Assistant and then share your Arlo cameras. -Finish its configuration by visiting the [Arlo sensor page](/components/sensor.arlo/) or [Arlo camera page](/components/camera.arlo/). +Finish its configuration by visiting the [Arlo sensor page](/components/sensor.arlo/) or [Arlo camera page](/components/camera.arlo/) or [Arlo control panel page](/components/alarm_control_panel.arlo/). + +The Arlo component also provides a service to enable/disable the motion detection sensor. The example below enables the motion detection every time the Home Assistant service starts. + +```yaml +#automation.yaml +- alias: Enable Arlo upton HA start' + initial_state: 'on' + trigger: + platform: homeassistant + event: start + action: + service: camera.enable_motion_detection + entity_id: camera.arlo_frontdoor +``` diff --git a/source/_components/asterisk_mbox.markdown b/source/_components/asterisk_mbox.markdown new file mode 100644 index 00000000000..d0d7ba72fe2 --- /dev/null +++ b/source/_components/asterisk_mbox.markdown @@ -0,0 +1,42 @@ +--- +layout: page +title: "Asterisk Voicemail" +description: "Instructions how to integrate your existing Asterisk voicemail within Home Assistant." +date: 2017-06-30 18:30 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Other +ha_version: 0.51 +ha_iot_class: "Local Push" +--- + +The Asterisk Voicemail integration for Home Assistant allows you to view, listen to, and delete voicemails from an Asterisk voicemail mailbox. The component includes a panel on the frontend that provides caller-id and speech-to-text transcription (using Google's API) of messages in addition to playback and message deletion. There is also an included sensor that indicates of the number of available messages. There is no requirement that the Asterisk PBX and Home Assistant are running on the same machine. + +To enable the component, a configuration is required in both Home Assistant as well as on the Asterisk server. + +First follow the [Asterisk PBX configuration guide](/docs/asterisk_mbox) to setup the necessary server on the Asterisk PBX server (this is needed even if Asterisk and Home Assistant are running on the same server) + +Once that is complete, add the following entry `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +asterisk_mbox: + password: ASTERISK_PBX_PASSWORD + host: ASTERISK_PBX_SERVER_IP_ADDRESS + port: ASTERISK_PBX_SERVER_PORT +``` + +This will add a new 'Mailbox' side-panel, as well as a sensor to indicate # of messages available. + +Configuration variables: + +- **password** (*Required*): The password that was set during Asterisk PBX configuration +- **host** (*Required*): The ip-address of the server that is running the Asterisk PBX +- **port** (*Required*): The port on the Asterisk PBX server that was configured during Asterisk PBX configuration + +

+Communication between the Asterisk PBX server and the Home Assistant server is password-protected, but the data transmission is not encrypted. It is recommended to only use this component when communication is contained within a local area network. +

+ diff --git a/source/_components/axis.markdown b/source/_components/axis.markdown index bdf70c5a40c..a23a97c2dfc 100644 --- a/source/_components/axis.markdown +++ b/source/_components/axis.markdown @@ -13,30 +13,10 @@ ha_release: "0.45" ha_iot_class: "Local Polling" --- -[Axis Communications](https://www.axis.com/) devices are surveillance cameras and other security related network connected hardware. Sensor API works with firmware 5.50 and newer. +[Axis Communications](https://www.axis.com/) devices are surveillance cameras and other security-related network connected hardware. Sensor API works with firmware 5.50 and newer. Home Assistant will automatically discover their presence on your network. -## {% linkable_title Dependencies %} - -```bash -$ sudo apt-get install python3-gi gir1.2-gstreamer-1.0 -``` - -Depending on how you run Home Assistant you might be needed to symlink the `gi` module into your environment. - -Hassbian: - -```bash -$ ln -s /usr/lib/python3/dist-packages/gi /srv/homeassistant/lib/python3.4/site-packages -``` - -Raspberry Pi All-In-One Installer: - -```bash -$ ln -s /usr/lib/python3/dist-packages/gi /srv/homeassistant/homeassistant_venv/lib/python3.4/site-packages -``` - You can also manually configure your devices by adding the following lines to your `configuration.yaml` file: ```yaml @@ -50,21 +30,24 @@ axis: Configuration variables: -- **device** (*Required*): Unique name for the Axis device. - - **host** (*Required*): The IP address to your Axis device. - - **username** (*Optional*): The username to your Axis device. Defaults to `root`. - - **password** (*Optional*): The password to your Axis device. Defaults to `pass`. - - **trigger_time** (*Optional*): Minimum time (in seconds) a sensor should keep its positive value. Defaults to 0. - - **location** (*Optional*): Physical location of your Axis device. Default not set. - - **include** (*Required*): This cannot be empty else there would be no use adding the device at all. - - **camera**: Stream MJPEG video to Home Assistant. - - **motion**: The built-in motion detection in Axis cameras. - - **vmd3**: ACAP Motion Detection app which has better algorithms for motion detection. - - **pir**: PIR sensor that can trigger on motion. - - **sound**: Sound detector. - - **daynight**: Certain cameras have day/night mode if they have built-in IR lights. - - **tampering**: Signals when camera believes that it has been tampered with. - - **input**: Trigger on whatever you have connected to device input port. +## {% linkable_title Configuration variables %} + +- **device** (*Required*): Unique name +- **host** (*Required*): The IP address to your Axis device. +- **username** (*Optional*): The username to your Axis device. Default 'root'. +- **password** (*Optional*): The password to your Axis device. Default 'pass'. +- **trigger_time** (*Optional*): Minimum time (in seconds) a sensor should keep its positive value. Default 0. +- **port** (*Optional*): Configure port web server of device is accessible from. Default 80. +- **location** (*Optional*): Physical location of your Axis device. Default not set. +- **include** (*Required*): This cannot be empty else there would be no use adding the device at all. + - **camera**: Stream MJPEG video to Home Assistant. + - **motion**: The built-in motion detection in Axis cameras. + - **vmd3**: ACAP Motion Detection app which has better algorithms for motion detection. + - **pir**: PIR sensor that can trigger on a motion. + - **sound**: Sound detector. + - **daynight**: Certain cameras have day/night mode if they have built-in IR lights. + - **tampering**: Signals when camera believes that it has been tampered with. + - **input**: Trigger on whatever you have connected to device input port. A full configuration example could look like this: @@ -85,10 +68,29 @@ axis: location: köket ``` +

+If you are using Python 3.6, you might need to replace the 34m with 36m in the _gi.*.so filename in the gi folder. +

+

Any specific levels for triggers needs to be configured on the device.

- It is recommended that you create a user on your Axis device specifically for Home Assistant. For all current functionality it is enough to create a user belonging to user group viewer. + It is recommended that you create a user on your Axis device specifically for Home Assistant. For all current functionality, it is enough to create a user belonging to user group viewer.

+ +## {% linkable_title Device services %} +Available services: `vapix_call`. + +#### {% linkable_title Service `axis/vapix_call` %} +Send a command using [Vapix](https://www.axis.com/support/developer-support/vapix). For details please read the API specifications. + +| Service data attribute | Optional | Description | +|---------------------------|----------|--------------------------------------------------| +| `name` | no | Name of device to communicate with. | +| `param` | no | What parameter to operate on. | +| `cgi` | yes | Which cgi to call on the device. Default is `param.cgi`. | +| `action` | yes | What type of call. Default is `update`. | + +Response to call can be subscribed to on event `vapix_call_response` diff --git a/source/_components/binary_sensor.abode.markdown b/source/_components/binary_sensor.abode.markdown new file mode 100644 index 00000000000..14e8e14533a --- /dev/null +++ b/source/_components/binary_sensor.abode.markdown @@ -0,0 +1,22 @@ +--- +layout: page +title: "Abode Binary Sensor" +description: "Instructions how to integrate Abode binary sensors into Home Assistant." +date: 2017-08-26 0:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: abode.jpg +ha_release: 0.52 +ha_category: Binary Sensor +ha_iot_class: "Cloud Push" +--- + +The `abode` security control panel platform allows you to control your [Abode](https://goabode.com/) alarms. + +This component will add `Door Contacts`, `Connectivity` sensors (remotes, keypads, and status indicators), `Moisture` sensors, and `Motion` or `Occupancy` sensors. + +This component will also list all Abode `Quick Actions` that are set up. You can trigger these quick actions by passing the `entity_id` of your quick action binary sensor to the [trigger_quick_action service](/components/abode/#trigger_quick_action). + +The requirement is that you have setup your [Abode hub](/components/abode/). diff --git a/source/_components/binary_sensor.android_ip_webcam.markdown b/source/_components/binary_sensor.android_ip_webcam.markdown index a4ab6cf4eaf..80775c3b2e6 100644 --- a/source/_components/binary_sensor.android_ip_webcam.markdown +++ b/source/_components/binary_sensor.android_ip_webcam.markdown @@ -17,3 +17,18 @@ ha_iot_class: "Local Polling" The `android_ip_webcam` binary sensor platform lets you observe the motion state of [Android IP webcam](https://play.google.com/store/apps/details?id=com.pas.webcam) sensors through Home Assistant. Devices will be configured automatically. Please refer to the [component](/components/android_ip_webcam/) configuration on how to setup. + +## {% linkable_title Examples %} + +You can also setup the binary motion sensor with the following script: + +{% raw %} +```yaml +binary_sensor: + - platform: rest + name: Kitchen Motion + sensor_class: motion + resource: http://IP:8080/sensors.json?sense=motion_active + value_template: '{{ value_json.motion_active.data[0][1][0] | round(0) }}' +``` +{% endraw %} diff --git a/source/_components/binary_sensor.arest.markdown b/source/_components/binary_sensor.arest.markdown index 86d3586a260..a03c972e7b8 100644 --- a/source/_components/binary_sensor.arest.markdown +++ b/source/_components/binary_sensor.arest.markdown @@ -30,7 +30,7 @@ Configuration variables: - **resource** (*Required*): IP address and schema of the device that is exposing an aREST API, e.g. http://192.168.1.10. - **pin** (*Required*): Number of the pin to monitor. -- **name** (*Optional*): Let you overwrite the the name of the device. By default *name* from the device is used. +- **name** (*Optional*): Let you overwrite the name of the device. By default *name* from the device is used. Accessing the URL http://IP_ADDRESS/digital/PIN_NUMBER should give you the state of the pin inside a JSON response as `return_value`. diff --git a/source/_components/binary_sensor.bayesian.markdown b/source/_components/binary_sensor.bayesian.markdown new file mode 100644 index 00000000000..0d2858e9829 --- /dev/null +++ b/source/_components/binary_sensor.bayesian.markdown @@ -0,0 +1,91 @@ +--- +layout: page +title: "Bayesian Binary Sensor" +description: "Instructions how to integrate threshold Bayesian sensors into Home Assistant." +date: 2017-08-27 20:05 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Binary Sensor +ha_iot_class: "Local Polling" +ha_release: 0.53 +--- + + +The `bayesian` binary sensor platform observes the state from multiple sensors and uses [Bayes' rule](https://en.wikipedia.org/wiki/Bayes%27_theorem) to estimate the probability that an event has occurred given the state of the observed sensors. If the estimated posterior probability is above the `probability_threshold`, the sensor is `on` otherwise it is `off`. + +This allows for the detection of complex events that may not be readily observable, e.g., cooking, showering, in bed, the start of a morning routine, etc. It can also be used to gain greater confidence about events that _are_ directly observable, but for which the sensors can be unreliable, e.g., presence. + +To enable the Bayesian sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: bayesian + prior: 0.1 + observations: + - entity_id: 'switch.kitchen_lights' + prob_given_true: 0.6 + prob_given_false: 0.2 + platform: 'state' + to_state: 'on' +``` + +Configuration variables: + +- **prior** (*Required*): The prior probability of the event. At any point in time (ignoring all external influences) how likely is this event to occur? +- **probability_threshold** (*Optional*): The probability at which the sensor should trigger to `on`. +- **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `Bayesian Binary sensor`. +- **observations** array (*Required*): The observations which should influence the likelihood that the given event has occurred. + - **entity_id** (*Required*): Name of the entity to monitor. + - **prob_given_true** (*Required*): The probability of the observation occurring, given the event is `true`. + - **prob_given_false** (*Optional*): The probability of the observation occurring, given the event is `false` can be set as well. If `prob_given_false` is not set, it will default to `1 - prob_given_true`. + - **platform** (*Required*): The only supported observation platforms are `state` and `numeric_state`, which are modeled after their corresponding triggers for automations, requiring `below` and/or `above` instead of `to_state`. + - **to_state** (*Required*): The target state. + +## {% linkable_title Full examples %} + +```yaml +# Example configuration.yaml entry +binary_sensor: + name: 'in_bed' + platform: 'bayesian' + prior: 0.25 + probability_threshold: 0.95 + observations: + - entity_id: 'sensor.living_room_motion' + prob_given_true: 0.4 + prob_given_false: 0.2 + platform: 'state' + to_state: 'off' + - entity_id: 'sensor.basement_motion' + prob_given_true: 0.5 + prob_given_false: 0.4 + platform: 'state' + to_state: 'off' + - entity_id: 'sensor.bedroom_motion' + prob_given_true: 0.5 + platform: 'state' + to_state: 'on' + - entity_id: 'sun.sun' + prob_given_true: 0.7 + platform: 'state' + to_state: 'below_horizon' +``` + + +```yaml +# Example configuration.yaml entry +binary_sensor: + name: 'Heat On' + platform: 'bayesian' + prior: 0.2 + probability_threshold: 0.9 + observations: + - entity_id: 'sensor.outside_air_temperature_fahrenheit' + prob_given_true: 0.95 + platform: 'numeric_state' + below: 50 +``` diff --git a/source/_components/binary_sensor.command_line.markdown b/source/_components/binary_sensor.command_line.markdown index 3a612d04b3a..f966144470b 100644 --- a/source/_components/binary_sensor.command_line.markdown +++ b/source/_components/binary_sensor.command_line.markdown @@ -28,11 +28,12 @@ binary_sensor: Configuration variables: - **command** (*Required*): The action to take to get the value. -- **name** (*Optional*): Let you overwrite the the name of the device. By default *name* from the device is used. +- **name** (*Optional*): Let you overwrite the name of the device. By default *name* from the device is used. - **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. - **payload_on** (*Optional*): The payload that represents enabled state. Default is "ON". - **payload_off** (*Optional*): The payload that represents disabled state. Default is "OFF". - **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. +- **scan_interval** (*Optional*): Defines number of seconds for polling interval (defaults to 60 seconds). ## {% linkable_title Examples %} diff --git a/source/_components/binary_sensor.doorbird.markdown b/source/_components/binary_sensor.doorbird.markdown new file mode 100644 index 00000000000..b16dc68c5e9 --- /dev/null +++ b/source/_components/binary_sensor.doorbird.markdown @@ -0,0 +1,28 @@ +--- +layout: page +title: "DoorBird Binary Sensor" +description: "Instructions how to integrate DoorBird video doorbell state into Home Assistant." +date: 2017-08-06 11:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: doorbird.png +ha_category: Binary Sensor +ha_release: "0.54" +ha_iot_class: "Local Polling" +--- + +The `doorbird` binary sensor platform allows Home Assistant to monitor when your [DoorBird](http://www.doorbird.com/) doorbell rings. + +

+ You must have the [DoorBird component](/components/doorbird/) configured to use this binary sensor. +

+ +To enable the binary sensor, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: doorbird +``` diff --git a/source/_components/binary_sensor.enocean.markdown b/source/_components/binary_sensor.enocean.markdown index d817fd1ea22..32f3fc3340e 100644 --- a/source/_components/binary_sensor.enocean.markdown +++ b/source/_components/binary_sensor.enocean.markdown @@ -30,7 +30,7 @@ Configuration variables: - **name** (*Optional*): An identifier for the switch in the frontend. - **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. -EnOcean binary sensors only generate 'button_pressed' events. The event data has follwing four fields: +EnOcean binary sensors only generate 'button_pressed' events. The event data has following four fields: - **id**: The ID of the device (see configuration). - **pushed**: `1` for a button press, `0` for a button release. diff --git a/source/_components/binary_sensor.ffmpeg_motion.markdown b/source/_components/binary_sensor.ffmpeg_motion.markdown index 92cdaa2304a..453c76d7e01 100644 --- a/source/_components/binary_sensor.ffmpeg_motion.markdown +++ b/source/_components/binary_sensor.ffmpeg_motion.markdown @@ -52,9 +52,9 @@ $ ffmpeg -i YOUR_INPUT -an -filter:v select=gt(scene\,0.1) -f framemd5 - If you are running into trouble with this sensor, please refer to the [troubleshooting section](/components/ffmpeg/#troubleshooting). -#### {% linkable_title Tipps %} +#### {% linkable_title Tips %} -- Use motion only in a customer area with [crop filter](https://ffmpeg.org/ffmpeg-filters.html#crop): +- Use motion only in a custom area with [crop filter](https://ffmpeg.org/ffmpeg-filters.html#crop): ```yaml extra_arguments: -filter:v "crop=100:100:12:34" diff --git a/source/_components/binary_sensor.flic.markdown b/source/_components/binary_sensor.flic.markdown index 126eb15c020..558c30b3a09 100644 --- a/source/_components/binary_sensor.flic.markdown +++ b/source/_components/binary_sensor.flic.markdown @@ -15,7 +15,7 @@ ha_release: 0.35 The `flic` platform allows you to connect with multiple [flic](https://flic.io) smart buttons. -The platform does not directly interact with the buttons, but communicates with the flic service that manages the buttons. The service can run on the same instance as home assistant or any other reachable machine. For setup instructions 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). +The platform does not directly interact with the buttons, but communicates with the flic service that manages the buttons. The service can run on the same instance as Home Assistant or any other reachable machine. For setup instructions 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). To use your flic buttons in your installation, add the following to your `configuration.yaml` file: @@ -30,7 +30,7 @@ Configuration variables: - **host** (*Optional*): The IP or hostname of the flic service server. Defaults to `localhost`. - **port** (*Optional*): The port of the flic service. Defaults to `5551`. - **discovery** (*Optional*): If `true` then the component is configured to constantly scan for new buttons. Defaults to `true`. -- **ignored_click_types**: List of click types whose occurrence should not trigger and `flic_click` event. +- **ignored_click_types**: List of click types whose occurrence should not trigger a `flic_click` event. Click types are `single`, `double`, and `hold`. - **timeout** (*Optional*): Maximum time in seconds an event can be queued locally on a button before discarding the event. Defaults to 3. #### {% linkable_title Discovery %} @@ -38,7 +38,7 @@ Configuration variables: If discovery is enabled, you can add a new button by pressing it for at least 7 seconds. The button will be paired with the flic service and added to Home Assistant. Otherwise, you have to manually pair it with the flic service. The Home Assistant platform will not scan for new buttons and will only connect to buttons already paired. #### {% linkable_title Timeout %} - +When the flic button is triggered while disconnected from flic service, it will queue all events and try to connect and transmit them as soon as possible. The timeout variable can be used to stop events from triggering if too much time passed between the action and the notification in Home Assistant. + When the flic button is triggered while disconnected from flic service, it will queue all events and try to connect and transmit them as soon as possible. The timeout variable can be used to stop events from triggering if too much time passed between the action and the notification in Home Assistant. #### {% linkable_title Events %} @@ -62,7 +62,7 @@ automation: Event data: - **button_name**: The name of the button, that triggered the event. -- **button_address**: The bluetooth address of the button, that triggered the event. +- **button_address**: The Bluetooth address of the button, that triggered the event. - **click_type**: The type of click. Possible values are `single`, `double` and `hold`. - **queued_time**: The amount of time this event was queued on the button, in seconds. diff --git a/source/_components/binary_sensor.gc100.markdown b/source/_components/binary_sensor.gc100.markdown new file mode 100644 index 00000000000..3be8c013046 --- /dev/null +++ b/source/_components/binary_sensor.gc100.markdown @@ -0,0 +1,29 @@ +--- +layout: page +title: gc100 Binary Sensor +description: "Instructions on how to set up an gc100 binary sensor within Home Assistant." +date: 2017-10-27 17:26 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Binary Sensor +ha_release: 0.57 +ha_iot_class: "Local Polling" +--- + +To enable this sensor, you first have to set up [gc100](/components/gc100/), and add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: gc100 + ports: + - '3:1': Doorchime + - '3:2': Garage Obstruction +``` + +Configuration variables: + +- **ports** (*Required*): A list of module-address to name mappings in the format 'x:y': name, where x is module #, y is address. + diff --git a/source/_components/binary_sensor.hikvision.markdown b/source/_components/binary_sensor.hikvision.markdown index 72dbd613c1d..ae37f2e9797 100644 --- a/source/_components/binary_sensor.hikvision.markdown +++ b/source/_components/binary_sensor.hikvision.markdown @@ -24,7 +24,7 @@ binary_sensor.front_porch_motion binary_sensor.front_port_line_crossing ``` -When used with a NVR device the sensors will be appeneded with the channel number they represent. For example, if you configure an NVR with the name "Home" that supports 2 cameras with motion detection and line crossing events enabled to notify the surveillance center the following binary sensors will be added to Home Assistant: +When used with a NVR device the sensors will be appended with the channel number they represent. For example, if you configure an NVR with the name "Home" that supports 2 cameras with motion detection and line crossing events enabled to notify the surveillance center the following binary sensors will be added to Home Assistant: ``` binary_sensor.home_motion_1 diff --git a/source/_components/binary_sensor.http.markdown b/source/_components/binary_sensor.http.markdown index 8e96f517918..aaddf8a7256 100644 --- a/source/_components/binary_sensor.http.markdown +++ b/source/_components/binary_sensor.http.markdown @@ -12,6 +12,10 @@ ha_category: Binary Sensor ha_release: pre 0.7 --- +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. + +The sensor will then exist as long as Home Assistant is running. After a restart of Home Assistant the sensor will be gone until it is triggered again. + The URL for a binary sensor looks like the example below: ```bash diff --git a/source/_components/binary_sensor.knx.markdown b/source/_components/binary_sensor.knx.markdown index ffe81a04d85..73c747601ad 100644 --- a/source/_components/binary_sensor.knx.markdown +++ b/source/_components/binary_sensor.knx.markdown @@ -13,4 +13,54 @@ ha_release: 0.24 ha_iot_class: "Local Polling" --- -To get your KNX binary sensors working with Home Assistant, follow the instructions for the [KNX component](/components/knx/). +The `knx` sensor platform allows you to monitor [KNX](http://www.knx.org) binary sensors. + +The `knx` component must be configured correctly, see [KNX Component](/components/knx). + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: knx + name: "Entrance.Motion.Sensor" + address: '6/0/2' + device_class: 'motion' + #significant_bit: 2 +``` + +Configuration variables: + +- **name** (*Optional*): A name for this device used within Home Assistant. +- **address**: KNX group address of the binary sensor. +- **device_class** (Optional): HASS device class e.g. "motion". +- **significant_bit** (Optional): Specify which significant bit of the KNX value should be used. Default is 1. + +You can also attach actions to binary sensors (e.g., to switch on a light when a switch was pressed). In this example, one light is switched on when the button was pressed once and two others when the button was pressed a second time. + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: knx + name: Livingroom.3Switch3 + address: '5/0/26' + automation: + - counter: 1 + hook: 'on' + action: + - entity_id: light.hue_color_lamp_1 + service: homeassistant.turn_on + - counter: 2 + hook: 'on' + action: + - entity_id: light.hue_bloom_1 + service: homeassistant.turn_on + - entity_id: light.hue_bloom_2 + service: homeassistant.turn_on +``` + +Configuration variables: + +- **name** (*Optional*): A name for this device used within Home Assistant. +- **counter** (*Optional*): Set to 2 if your only want the action to be executed if the button was pressed twice. To 3 for three times button pressed. Defaults to 1. +- **hook** (Optional): Indicates if the automation should be executed on what state of the binary sensor. Values: "on" or "off". Defaults to "on". +- **action**: Specify a list of actions analog to the [automation rules](/docs/automation/action/). + diff --git a/source/_components/binary_sensor.linode.markdown b/source/_components/binary_sensor.linode.markdown new file mode 100644 index 00000000000..0ffbddb5817 --- /dev/null +++ b/source/_components/binary_sensor.linode.markdown @@ -0,0 +1,34 @@ +--- +layout: page +title: "Linode Binary Sensor" +description: "Instructions on how to set up Linode binary sensors within Home Assistant." +date: 2017-10-20 08:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: System Monitor +logo: linode.png +ha_release: 0.57 +ha_iot_class: "Cloud Polling" +--- + +The `linode` binary sensor platform allows you to monitor your Linode nodes. + +Add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: linode + nodes: + - 'myvpsname' +``` + +{% configuration %} + nodes: + description: List of VPSs you want to control. + required: true + type: string +{% endconfiguration %} + diff --git a/source/_components/binary_sensor.markdown b/source/_components/binary_sensor.markdown index 25d5e31f559..afc028a2bcb 100644 --- a/source/_components/binary_sensor.markdown +++ b/source/_components/binary_sensor.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Binary Sensor" -description: "Instructions how to setup your binary sensors with Home Assistant." +description: "Instructions on how-to setup binary sensors with Home Assistant." date: 2015-11-20 14:00 sidebar: true comments: false @@ -9,27 +9,26 @@ sharing: true footer: true --- -Binary sensors are gathering information about state of switches, contacts, pins, and alike. The return value of those sensors is usually digital (1/0). This means that those sensors knows only two states: **0/off/low/closed/false** and **1/on/high/open/true**. +Binary sensors gather information about the state of devices which have a "digital" return value (either 1 or 0). These can be switches, contacts, pins, etc. These sensors only have two states: **0/off/low/closed/false** and **1/on/high/open/true**. Knowing that there are only two states allows Home Assistant to represent these sensors in a better way in the frontend according to their functionality. -Knowing that there are only two states allows Home Assistant to represent the sensor better in the frontend. +The way these sensors are displayed in the frontend can be modified in the [customize section](/getting-started/customizing-devices/). The following device classes are supported for binary sensors: -The display style of each entity can be modified in the [customize section](/getting-started/customizing-devices/). The following device classes are supported for binary sensors: - -- **None**: Generic on/off -- **cold**: On means cold (or too cold) -- **connectivity**: On means connection present, Off means no connection -- **gas**: CO, CO2, etc -- **heat**: On means hot (or too hot) +- **None**: Generic on/off. This is the default and doesn't need to be set. +- **cold**: `On` means cold +- **connectivity**: `On` means connection present, `Off` means no connection +- **gas**: `On` means gas detected +- **heat**: `On` means hot - **light**: Lightness threshold -- **moisture**: Specifically a wetness sensor -- **motion**: Motion sensor -- **moving**: On means moving, Off means stopped -- **occupancy**: On means occupied, Off means not occupied -- **opening**: Door, window, etc. On means open, Off means closed -- **power**: Power, over-current, etc -- **safety**: On means unsafe, Off means safe -- **smoke**: Smoke detector -- **sound**: On means sound detected, Off means no sound -- **vibration**: On means vibration detected, Off means no vibration +- **moisture**: `On` means wet +- **motion**: `On` means motion detected +- **moving**: `On` means moving, `Off` means stopped +- **occupancy**: `On` means occupied, `Off` means not occupied +- **opening**: `On` means open, `Off` means closed +- **plug**: `On` means device is plugged in, `Off` means device is unplugged +- **power**: Power, over-current, etc. +- **safety**: `On` means unsafe, `Off` means safe +- **smoke**: `On` means smoke detected +- **sound**: `On` means sound detected, `Off` means no sound +- **vibration**: `On` means vibration detected, `Off` means no vibration For analog sensors please check the [component overview](https://home-assistant.io/components/#sensor). diff --git a/source/_components/binary_sensor.modbus.markdown b/source/_components/binary_sensor.modbus.markdown index 6013a3cf4d7..55450b908ea 100644 --- a/source/_components/binary_sensor.modbus.markdown +++ b/source/_components/binary_sensor.modbus.markdown @@ -36,3 +36,22 @@ Configuration variables: - **name** (*Required*): Name of the sensor. - **slave** (*Required*): The number of the slave (Optional for TCP and UDP Modbus). - **coil** (*Required*): Coil number. + +It's possible to change the default 30 seconds scan interval for the sensor updates as shown in the [Platform options](/docs/configuration/platform_options/#scan-interval) documentation. + +### {% linkable_title Full example %} + +Example a sensor with a 10 seconds scan interval: + +```yaml +binary_sensor: + - platform: modbus + scan_interval: 10 + coils: + - name: Sensor1 + slave: 1 + coil: 100 + - name: Sensor2 + slave: 1 + coil: 110 +``` diff --git a/source/_components/binary_sensor.mqtt.markdown b/source/_components/binary_sensor.mqtt.markdown index 722ec499495..3b1ff864534 100644 --- a/source/_components/binary_sensor.mqtt.markdown +++ b/source/_components/binary_sensor.mqtt.markdown @@ -14,9 +14,13 @@ ha_iot_class: "depends" --- -The `mqtt` binary sensor platform uses the MQTT message payload as the sensor value. If messages in this `state_topic` are published with *RETAIN* flag, the sensor will receive an instant update with the last known value. Otherwise, the initial state will be off. +The `mqtt` binary sensor platform uses an MQTT message payload to set the binary sensor to one of two states: `on` or `off`. -To use your MQTT binary sensor in your installation, add the following to your `configuration.yaml` file: +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`. + +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` is defined, Home Assistant will consider the MQTT device to be available. + +To use an MQTT binary sensor in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -27,32 +31,37 @@ binary_sensor: Configuration variables: +- **name** (*Optional*): The name of the binary sensor. Default is `MQTT Binary Sensor`. - **state_topic** (*Required*): The MQTT topic subscribed to receive sensor values. -- **name** (*Optional*): The name of the sensor. Default is 'MQTT Sensor'. -- **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0. -- **payload_on** (*Optional*): The payload that represents on state. Default is "ON". -- **payload_off** (*Optional*): The payload that represents state. Default is "OFF". +- **payload_on** (*Optional*): The payload that represents the on state. Default is `ON`. +- **payload_off** (*Optional*): The payload that represents the off state. Default is `OFF`. +- **availability_topic** (*Optional*): 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. +- **payload_available** (*Optional*): The payload that represents the online state. Default is `online`. +- **payload_not_available** (*Optional*): The payload that represents the offline state. Default is `offline`. +- **qos** (*Optional*): The maximum QoS level to be used when receiving messages. Default is `0`. - **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. - **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. -For a quick check you can use the commandline tools shipped with `mosquitto` to send MQTT messages. Set the state of a sensor manually: +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 $ mosquitto_pub -h 127.0.0.1 -t home-assistant/window/contact -m "OFF" ``` -An extended configuration for the same sensor could look like this if you want/need to be more specific. +The example below shows a full configuration for a binary sensor: ```yaml # Example configuration.yaml entry binary_sensor: - platform: mqtt + name: "Window Contact Sensor" state_topic: "home-assistant/window/contact" - name: "Windows contact" + payload_on: "ON" + payload_off: "OFF" + availability_topic: "home-assistant/window/availability" + payload_available: "online" + payload_not_available: "offline" qos: 0 - payload_on: "1" - payload_off: "0" device_class: opening value_template: '{% raw %}{{ value.x }}{% endraw %}' ``` - diff --git a/source/_components/binary_sensor.mystrom.markdown b/source/_components/binary_sensor.mystrom.markdown index ec61cdd5ca4..6d093a2f259 100644 --- a/source/_components/binary_sensor.mystrom.markdown +++ b/source/_components/binary_sensor.mystrom.markdown @@ -38,9 +38,9 @@ binary_sensor: ### {% linkable_title Setup of the myStrom Buttons %} -You need to configure every button to make it work with Home Assistant. First connect the Wifi Buttons to your wireless network. Keep in mind that they only support WPS (Wi-FI Protected Setup). Once a button is connected you have three minutes to set the actions for the push patterns. The fastest way is to use `curl`. Check the [documentation](https://mystrom.ch/wp-content/uploads/REST_API_WBP.txt) of the WiFi Button for further details about the implementation (`http://` is replaced by `get://` or `post://`). `action` is the name of the corresponding push pattern (see above). +You need to configure every button to make it work with Home Assistant. First connect the Wifi Buttons to your wireless network. Once a button is connected you have three minutes to set the actions for the push patterns. The fastest way is to use `curl`. Check the [documentation](https://mystrom.ch/wp-content/uploads/REST_API_WBP.txt) of the WiFi Button for further details about the implementation (`http://` is replaced by `get://` or `post://`). `action` is the name of the corresponding push pattern (see above). -The endpoint that is recieving the data is `[IP address Home Assistant]:8123/api/mystrom`. +The endpoint that is receiving the data is `[IP address Home Assistant]:8123/api/mystrom`. ```bash $ curl -d "[action]=get://[IP address Home Assistant]:8123/api/mystrom?[action]%3D[ID of the button]" http://[IP address of the button]/api/v1/device/[MAC address of the button] diff --git a/source/_components/binary_sensor.netatmo.markdown b/source/_components/binary_sensor.netatmo.markdown index 92717748bc1..57d01bbd088 100644 --- a/source/_components/binary_sensor.netatmo.markdown +++ b/source/_components/binary_sensor.netatmo.markdown @@ -27,8 +27,7 @@ If you want to select a specific sensor, set discovery to False for [netatmo](/c binary_sensor: platform: netatmo home: home_name - timeout: 15 - offset: 90 + timeout: 90 cameras: - camera_name1 welcome_sensors: @@ -45,8 +44,7 @@ binary_sensor: Configuration variables: - **home** (*Optional*): Will use the cameras of this home only. -- **timeout** (*Optional*): The Welcome binary sensors will reflect the events from the last X minutes. (default: 15) -- **offset** (*Optional*): The Presence binary sensors will stay on for X seconds after detection. (default: 90) +- **timeout** (*Optional*): The Welcome/Presence binary sensors will stay on for X seconds after detection. (default: 90) - **cameras** array (*Optional*): Cameras to use. Multiple entities allowed. - 'camera_name': Name of the camera to display. - **welcome_sensors** array (*Optional*): List of monitored conditions. diff --git a/source/_components/binary_sensor.pilight.markdown b/source/_components/binary_sensor.pilight.markdown index 813ed0d22f8..4ccf5273920 100644 --- a/source/_components/binary_sensor.pilight.markdown +++ b/source/_components/binary_sensor.pilight.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Pilight Binary Sensor" -description: "Instructions how to integrate pilight binary sensors within Home Assistant." +description: "Instructions how to integrate Pilight binary sensors within Home Assistant." date: 2017-03-24 20:41 sidebar: true comments: false @@ -13,8 +13,28 @@ ha_release: 0.44 ha_iot_class: "Local Polling" --- -This component implement the [pilight hub](https://github.com/home-assistant/home-assistant.github.io/source/_components/pilight.markdown) binary sensor functionality. -Two type of pilight binary sensor configuration available. A normal sensor which send the on and off state cyclical and a trigger sensor which send only a trigger when an event happend (for example lots of cheap PIR motion detector) (see example configuration below). +The `pilight` binary sensor platform implement the [pilight hub](/components/pilight/) binary sensor functionality. Two type of Pilight binary sensor configuration available. A normal sensor which send the on and off state cyclical and a trigger sensor which send only a trigger when an event happened (for example lots of cheap PIR motion detector). + +To enable a Pilight binary sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yml entry +binary_sensor: + - platform: pilight + variable: 'state' +``` + +Configuration variables: + +- **variable** (*Required*): The variable name in the data stream that defines the sensor value. +- **payload** (*Required*): Message payload identifiers. Only if all identifiers are matched the sensor value is set. +- **name** (*Optional*): Name of the sensor. +- **payload_on** (*Optional*): Variable `on` value. The component will recognize this as logical '1'. +- **payload_off** (*Optional*): Variable `off` value. The component will recognize this as logical '0'. +- **disarm_after_trigger:** (*Optional*): Configure sensor as trigger type. +- **reset_delay_sec** (*Optional*): Seconds before the sensor is disarmed if `disarm_after_trigger` is set to true. Default is 30 seconds. + +A full configuration example could look like this: ```yaml # Example configuration.yml entry @@ -25,13 +45,6 @@ binary_sensor: payload: unitcode: 371399 payload_on: 'closed' - disarm_after_trigger: True <-- use this if you want trigger type behavior + disarm_after_trigger: True + reset_delay_sec: 30 ``` - -Configuration variables: -- **variable** (*Required*): The variable name in the data stream that defines the sensor value. -- **payload** (*Required*): Message payload identifiers. Only if all identifiers are matched the sensor value is set. -- **name** (*Optional*): Name of the sensor. -- **payload_on** (*Optional*): Variable `on` value. The component will recognize this as logical '1'. -- **payload_off** (*Optional*): Variable `off` value. The component will recognize this as logical '0'. -- **disarm_after_trigger:** (*Optional*): Configure sensor as trigger type. diff --git a/source/_components/binary_sensor.raincloud.markdown b/source/_components/binary_sensor.raincloud.markdown new file mode 100644 index 00000000000..b5e1678d53b --- /dev/null +++ b/source/_components/binary_sensor.raincloud.markdown @@ -0,0 +1,30 @@ +--- +layout: page +title: "Melnor Raincloud Binary Sensor" +description: "Instructions on how to integrate your Melnor Raincloud sprinkler system within Home Assistant." +date: 2017-09-04 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raincloud.jpg +ha_category: Binary Sensor +ha_release: "0.55" +ha_iot_class: "Cloud Polling" +--- + +To get your [Melnor RainCloud](https://wifiaquatimer.com) binary sensors working within Home Assistant, please follow the instructions for the general [Raincloud component](/components/raincloud). + +Once you have enabled the [Raincloud component](/components/raincloud), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: raincloud +``` + +Configuration variables: + +- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. If not specified, all conditions below will be enabled by default. The following conditions can be monitored. + - **is_watering**: Return if is currently watering per zone. + - **status**: Return status from the Melnor RainCloud Controller and Melnor RainCloud Faucet. diff --git a/source/_components/binary_sensor.random.markdown b/source/_components/binary_sensor.random.markdown new file mode 100644 index 00000000000..7376d6254d9 --- /dev/null +++ b/source/_components/binary_sensor.random.markdown @@ -0,0 +1,35 @@ +--- +layout: page +title: "Random Binary Sensor" +description: "Instructions how to integrate random state sensors into Home Assistant." +date: 2017-10-27 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Sensor +ha_iot_class: "Local Polling" +ha_release: 0.57 +--- + + +The `random` binary sensor platform is creating random states (`True`, 1, `on` or `False`, 0, `off`). This can be useful if you want to test automation rules. It generates a new state every time it is polled. + +To enable the random binary sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: random +``` + +{% configuration %} + name: + description: Name to use in the frontend. + required: false + type: string +{% endconfiguration %} + +See the [entity component options](/docs/configuration/platform_options/) to control how often the main component polls the random binary sensor. The default is 30 seconds. + diff --git a/source/_components/binary_sensor.raspihats.markdown b/source/_components/binary_sensor.raspihats.markdown index 5a76cbe2559..4815aa2de7b 100644 --- a/source/_components/binary_sensor.raspihats.markdown +++ b/source/_components/binary_sensor.raspihats.markdown @@ -44,4 +44,47 @@ Configuration variables: - **invert_logic** (*Optional*): Inverts the input logic, default is `false`. - **device_class** (*Optional*): See device classes in [binary_sensor component](/components/binary_sensor/), default is `None` +## {% linkable_title Directions for installing smbus support on Raspberry Pi %} + +Enable I2c interface with the Raspberry Pi configuration utility: + +```bash +# pi user environment: Enable i2c interface +$ sudo raspi-config +``` + +Select `Interfacing options->I2C` choose `` and hit `Enter`, then go to `Finish`. + +Install dependencies for use the `smbus-cffi` module and enable your _homeassistant_ user to join the _i2c_ group: + +```bash +# pi user environment: Install i2c dependencies and utilities +$ sudo apt-get install build-essential libi2c-dev i2c-tools python-dev libffi-dev + +# pi user environment: Add homeassistant user to the i2c group +$ sudo usermod -a -G i2c homeassistant +``` + +### {% 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 +``` + +It will output a table like this: + +```text + 0 1 2 3 4 5 6 7 8 9 a b c d e f +00: -- -- -- -- -- -- -- -- -- -- -- -- -- +10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- -- +30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +40: 40 -- -- -- -- -- UU -- -- -- -- -- -- -- -- -- +50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +70: -- -- -- -- -- -- -- 77 +``` + For more details about the `raspihats` add-on boards for Raspberry PI, visit [raspihats.com](http://www.raspihats.com/). diff --git a/source/_components/binary_sensor.rfxtrx.markdown b/source/_components/binary_sensor.rfxtrx.markdown new file mode 100644 index 00000000000..c676c46cec0 --- /dev/null +++ b/source/_components/binary_sensor.rfxtrx.markdown @@ -0,0 +1,139 @@ +--- +layout: page +title: "RFXtrx Binary Sensor" +description: "Instructions how to integrate RFXtrx binary sensors into Home Assistant." +date: 2017-03-26 12:45 +sidebar: true +comments: false +sharing: true +footer: true +logo: rfxtrx.png +ha_category: Binary Sensor +--- + +The `rfxtrx` platform support binary sensors that communicate in the frequency range of 433.92 MHz. The rfxtrx binary sensor component provides support for them. + +Many cheap sensors available on the web today are based on a particular RF chip called *PT-2262*. Depending on the running firmware on the RFXcom box, some of them may be recognized under the X10 protocol but most of them are recognized under the *Lighting4* protocol. The rfxtrx binary sensor component provides some special options for them, while other rfxtrx protocols should work too. + +# Setting up your devices +Once you have set up your [rfxtrx hub](/components/rfxtrx/), the easiest way to find your binary sensors is to add this to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +binary_sensor: + platform: rfxtrx + automatic_add: True +``` + +Open your local home-assistant web UI and go to the "states" page. Then make sure to trigger your sensor. You should see a new entity appear in the *Current entities* list, starting with "binary_sensor." and some hexadecimal digits. Those hexadecimal digits are your device id. + +For example: "binary_sensor.0913000022670e013b70". Here your device id is `0913000022670e013b70`. Then you should update your configuration to: + +```yaml +# Example configuration.yaml entry +binary_sensor: + platform: rfxtrx + devices: + 0913000022670e013b70: + name: device_name +``` + +Do not forget to tweak the configuration variables: + +- **automatic_add** (*Optional*): To enable the automatic addition of new binary sensors. +- **device_class** (*Optional*): The [type or class of the sensor](/components/binary_sensor/) to set the icon in the frontend. +- **off_delay** (*Optional*): For sensors that only sends 'On' state updates, this variable sets a delay after which the sensor state will be updated back to 'Off'. + +

+This component and the [rfxtrx switch](/components/switch/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`. +

+ +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. +- Some doorbells may also only send "on" signals when their toggle switch is pressed, but no "off" signal when the switch is released. + +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*. + + +Example configuration: + +```yaml +# Example configuration.yaml entry +binary_sensor: + platform: rfxtrx + automatic_add: True + devices: + 091300006ca2c6001080: + name: motion_hall + device_class: motion + off_delay: + seconds: 5 +``` + +## Options for PT-2262 devices under the Lighting4 protocol + +When a data packet is transmitted by a PT-2262 device using the Lighting4 protocol, there is no way to automatically extract the device identifier and the command from the packet. Each device has its own id/command length combination and the fields lengths are not included in the data. One device that sends 2 different commands will be seen as 2 devices on Home Assistant. For such cases, the following options are available in order to circumvent the problem: + +- **data_bits** (*Optional*): Defines how many bits are used for commands inside the data packets sent by the device. +- **command_on** (*Optional*): Defines the data bits value that is sent by the device upon an 'On' command. +- **command_off** (*Optional*): Defines the data bits value that is sent by the device upon an 'Off' command. + +Let's try to add a new PT-2262 sensor using the "automatic_add" option and have a look at Home Assistant system log. + +Have your sensor trigger the "On" state for the first time. Some messages will appear: + +``` +INFO (Thread-6) [homeassistant.components.binary_sensor.rfxtrx] Added binary sensor 0913000022670e013970 (Device_id: 22670e Class: LightingDevice Sub: 0) +``` + +Here the sensor has the id *22670e*. + +Now have your sensor trigger the "Off" state and look for the following message in the Home Assistant log. You should see that your device has been detected as a *new* device when triggering its "Off" state: + +``` +INFO (Thread-6) [homeassistant.components.binary_sensor.rfxtrx] Added binary sensor 09130000226707013d70 (Device_id: 226707 Class: LightingDevice Sub: 0) +``` + +Here the device id is *226707*, which is almost similar to the *22670e* we had on the "On" event a few seconds ago. + +From those two values, you can guess that the actual id of your device is *22670*, and that *e* and *7* are commands for "On" and "Off" states respectively. As one hexadecimal digit uses 4 bits, we can conclude that the device is using 4 data bits. + +So here is the actual configuration section for the binary sensor: + +```yaml +platform: rfxtrx +automatic_add: True +devices: + 0913000022670e013b70: + name: window_room2 + device_class: opening + data_bits: 4 + command_on: 0xe + command_off: 0x7 +``` + +The *automatic_add* option makes the rfxtrx binary sensor component calculate and display the configuration options for you in the Home Assistant logs: + +``` +INFO (Thread-6) [homeassistant.components.rfxtrx] rfxtrx: found possible device 226707 for 22670e with the following configuration: +data_bits=4 +command_on=0xe +command_off=0x7 +INFO (Thread-6) [homeassistant.components.binary_sensor.rfxtrx] Found possible matching deviceid 22670e. +``` + +This automatic guess should work most of the time but there is no guarantee on that. You should activate it only when you want +to configure your new devices and leave it off otherwise. + +## Known working devices + +The following devices are known to work with the rfxtrx binary sensor component. There are too many other to list. + +- Motion detectors: + - Kerui P817 and P829. + - Chuango PIR-700. + +- Door / window sensors: + - Kerui D026 door / window sensor: can trigger on "open" and "close". Has a tamper switch. + - Nexa LMST-606. diff --git a/source/_components/binary_sensor.ring.markdown b/source/_components/binary_sensor.ring.markdown index be27ab30d0d..e663d6838cc 100644 --- a/source/_components/binary_sensor.ring.markdown +++ b/source/_components/binary_sensor.ring.markdown @@ -10,6 +10,7 @@ footer: true logo: ring.png ha_category: Binary Sensor ha_release: 0.42 +ha_iot_class: "Cloud Polling" --- To get your [Ring.com](https://ring.com/) binary sensors working within Home Assistant, please follow the instructions for the general [Ring component](/components/ring). @@ -20,15 +21,12 @@ Once you have enabled the [Ring component](/components/ring), add the following # Example configuration.yaml entry binary_sensor: - platform: ring - monitored_conditions: - - ding - - motion ``` Configuration variables: -- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored. +- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. The following conditions can be monitored. If not specified, all conditions below will be enabled. - **ding**: Return a boolean value when the doorbell button was pressed. - - **motion**: Return a boolean value when a moviment was detected by the Ring doorbell. + - **motion**: Return a boolean value when a movement was detected by the Ring doorbell. -Currently only doorbells are supported by this sensor. +Currently it supports doorbell, external chimes and stickup cameras. diff --git a/source/_components/binary_sensor.rpi_gpio.markdown b/source/_components/binary_sensor.rpi_gpio.markdown index 8af41e2a9b1..99a7eda5eb4 100644 --- a/source/_components/binary_sensor.rpi_gpio.markdown +++ b/source/_components/binary_sensor.rpi_gpio.markdown @@ -29,7 +29,7 @@ binary_sensor: Configuration variables: - **ports** array (*Required*): Array of used ports. - - **port: name** (*Required*): Port numbers and corresponding names. + - **port: name** (*Required*): Port numbers (BCM mode pin numbers) and corresponding names. - **pull_mode** (*Optional*): The internal pull to use (UP or DOWN). Default is UP. - **bouncetime** (*Optional*): The time in milliseconds for port debouncing. Default is 50ms. - **invert_logic** (*Optional*): If true, inverts the output logic to ACTIVE LOW. Default is false (ACTIVE HIGH). diff --git a/source/_components/binary_sensor.satel_integra.markdown b/source/_components/binary_sensor.satel_integra.markdown new file mode 100644 index 00000000000..84744aaa9e2 --- /dev/null +++ b/source/_components/binary_sensor.satel_integra.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Satel Integra Binary Sensor" +description: "Instructions how to integrate Satel Integra binary sensors into Home Assistant." +date: 2017-09-07 13:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: satel.jpg +ha_category: Binary Sensor +ha_release: 0.54 +ha_iot_class: "Local Push" +--- + +The `satel_integra` binary sensor allows you to monitor your [SatelIntegra](http://www.satel.pl/en/) alarm zones (inputs). + +Check the [type/class](/components/binary_sensor/) list for a possible visualization of your zone. + +The requirement is that you have setup your [SatelIntegra hub](/components/satel_integra/). diff --git a/source/_components/binary_sensor.skybell.markdown b/source/_components/binary_sensor.skybell.markdown new file mode 100644 index 00000000000..d16766f316d --- /dev/null +++ b/source/_components/binary_sensor.skybell.markdown @@ -0,0 +1,33 @@ +--- +layout: page +title: "Skybell Binary Sensor" +description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." +date: 2017-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: skybell.png +ha_category: Binary Sensor +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + +To get your [Skybell.com](https://skybell.com/) binary sensors working within Home Assistant, please follow the instructions for the general [Skybell component](/components/skybell). + +Once you have enabled the [Skybell component](/components/skybell), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: skybell + monitored_conditions: + - button + - motion +``` + +Configuration variables: + +- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored. + - **button**: Return a boolean value when the doorbell button was pressed. + - **motion**: Return a boolean value when movement was detected by the Skybell doorbell. diff --git a/source/_components/binary_sensor.tellduslive.markdown b/source/_components/binary_sensor.tellduslive.markdown new file mode 100644 index 00000000000..2a73bea7f46 --- /dev/null +++ b/source/_components/binary_sensor.tellduslive.markdown @@ -0,0 +1,16 @@ +--- +layout: page +title: "Telldus Binary Sensor" +description: "Instructions how to integrate Telldus Live binary sensors into Home Assistant." +date: 2017-10-24 10:09 +sidebar: true +comments: false +sharing: true +footer: true +logo: telldus.png +ha_category: Binary Sensor +featured: false +--- + +Integrates Telldus Live binary sensors into Home Assistant. See the [main component](/components/tellduslive/) for configuration instructions. + diff --git a/source/_components/binary_sensor.template.markdown b/source/_components/binary_sensor.template.markdown index 39ea85e7d22..62f2a50b1ba 100644 --- a/source/_components/binary_sensor.template.markdown +++ b/source/_components/binary_sensor.template.markdown @@ -1,108 +1,205 @@ --- layout: page title: "Template Binary Sensor" -description: "Instructions how to integrate Template binary sensors into Home Assistant." +description: "Instructions how to integrate Template Binary Sensors into Home Assistant." date: 2016-02-25 15:00 sidebar: true comments: false sharing: true footer: true ha_category: Binary Sensor +ha_release: 0.12 +ha_iot_class: "Local Push" logo: home-assistant.png --- -The `template` platform supports sensors which breaks 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 sensors which breaks out the `state` and +`state_attributes` from other entities. The state of a Template Binary Sensor +can only be `on` or `off`. -To enable template binary sensors in your installation, add the following to your `configuration.yaml` file: +To enable Template Binary Sensors in your installation, add the following to +your `configuration.yaml` file: +{% raw %} ```yaml # Example configuration.yaml entry binary_sensor: - platform: template sensors: sun_up: - value_template: {% raw %}'{{ states.sun.sun.attributes.elevation > 0}}'{% endraw %} - friendly_name: 'Sun is up' + friendly_name: "Sun is up" + value_template: >- + {{ states.sun.sun.attributes.elevation|float > 0 }} ``` +{% endraw %} -Configuration variables: +{% configuration binary_sensor.template %} + sensors: + description: List of your sensors. + required: true + type: map + keys: + friendly_name: + description: Name to use in the frontend. + required: false + type: string + entity_id: + description: Add a list of entity IDs so the sensor only reacts to state changes of these entities. This will reduce the number of times the sensor will try to update its state. + required: false + type: string, list + device_class: + description: The type/class of the sensor to set the icon in the frontend. + required: false + type: device_class + default: None + value_template: + description: Defines a template to set the state of the sensor. + required: true + type: template + delay_on: + description: The amount of time the template state must be ***met*** before this sensor will switch to `on`. + required: false + type: time + delay_off: + description: The amount of time the template state must be ***not met*** before this sensor will switch to `off`. + required: false + type: time +{% endconfiguration %} -- **sensors** array (*Required*): List of your sensors. - - **friendly_name** (*Optional*): Name to use in the Frontend. - - **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. - - **value_template** (*Optional*): Defines a [template](/topics/templating/) to extract a value from the payload. - - **entity_id** (*Optional*): Add a list of entity IDs so the sensor only reacts to state changes of these entities. This will reduce the number of times the sensor will try to update it's state. +## {% linkable_title Considerations %} + +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. +If you use `is_state()` function in your template, you can avoid this situation. +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 Examples %} In this section you find some real life examples of how to use this sensor. -### {% linkable_title Sensor threshold %} +### {% linkable_title Sensor Threshold %} -This example indicates true if a sensor is above a given threshold. Assuming a sensor of `furnace` that provides a current reading for the fan motor, we can determine if the furnace is running by checking that it is over some threshold: +This example indicates true if a sensor is above a given threshold. Assuming a +sensor of `furnace` that provides a current reading for the fan motor, we can +determine if the furnace is running by checking that it is over some threshold: +{% raw %} ```yaml sensor: - platform: template sensors: furnace_on: - value_template: {% raw %}{{ states.sensor.furnace.state > 2.5 }}{% endraw %} - friendly_name: 'Furnace Running + friendly_name: "Furnace Running" device_class: heat + value_template: "{{ states('sensor.furnace')|float > 2.5 }}" ``` +{% endraw %} -### {% linkable_title Switch as sensor %} +### {% linkable_title Switch as Sensor %} -Some movement sensors and door/window sensors will appear as a switch. By using a template binary sensor, the switch can be displayed as a binary sensors. The original switch can then be hidden by [customizing.](/getting-started/customizing-devices/) +Some movement sensors and door/window sensors will appear as a switch. By using +a Template Binary Sensor, the switch can be displayed as a binary sensors. The +original switch can then be hidden by +[customizing](/getting-started/customizing-devices/). +{% raw %} ```yaml -binary_sensor: - - platform: template +binary_sensor: + - platform: template sensors: movement: - value_template: {% raw %}"{{ states.switch.movement.state == 'on' }}"{% endraw %} device_class: motion + value_template: "{{ is_state('switch.movement', 'on') }}" door: - value_template: {% raw %}"{{ states.switch.door.state == 'on' }}"{% endraw %} device_class: opening + value_template: "{{ is_state('switch.door', 'on') }}" ``` +{% endraw %} +### {% linkable_title Combining Multiple Sensors, and Using `entity_id` %} -### {% linkable_title Combining multiple sensors, and using entity_id: %} - -This example combines multiple CO sensors into a single overall status. It also shows how to use `entity_id` +This example combines multiple CO sensors into a single overall +status. When using templates with binary sensors, you need to return +`true` or `false` explicitly. `entity_id` is used to limit which +sensors are being monitored to update the state, making computing this +sensor far more efficient. +{% raw %} ```yaml -binary_sensor: - - platform: template +binary_sensor: + - platform: template sensors: co: - friendly_name: 'CO' - device_class: 'gas' - value_template: {% raw %}>- - {%- if is_state("sensor.bedroom_co_status", "Ok") - and is_state("sensor.kitchen_co_status", "Ok") - and is_state("sensor.wardrobe_co_status", "Ok") -%} - Off - {%- else -%} - On - {%- endif %}{% endraw %} + friendly_name: "CO" + device_class: gas entity_id: - sensor.bedroom_co_status - sensor.kitchen_co_status - sensor.wardrobe_co_status + value_template: >- + {{ is_state('sensor.bedroom_co_status', 'Ok') + and is_state('sensor.kitchen_co_status', 'Ok') + and is_state('sensor.wardrobe_co_status', 'Ok') }} ``` -### {% linkable_title Change the icon %} +{% endraw %} -This example shows how to change the icon based on the day/night cycle. +### {% linkable_title Washing Machine Running %} +This example creates a washing machine "load running" sensor by monitoring an +energy meter connected to the washer. During the washer's operation, the energy +meter will fluctuate wildly, hitting zero frequently even before the load is +finished. By utilizing `off_delay`, we can have this sensor only turn off if +there has been no washer activity for 5 minutes. + +{% raw %} ```yaml -sensor: +# Determine when the washing machine has a load running. +binary_sensor: - platform: template sensors: - day_night: - friendly_name: 'Day/Night' - value_template: {% raw %}'{% if is_state("sun.sun", "above_horizon") %}Day{% else %}Night{% endif %}'{% endraw %} - icon_template: {% raw %}'{% if is_state("sun.sun", "above_horizon") %}mdi:weather-sunny{% else %}mdi:weather-night{% endif %}'{% endraw %} - + washing_machine: + friendly_name: "Washing Machine" + delay_off: + minutes: 5 + value_template: >- + {{ states('sensor.washing_machine_power')|float > 0 }} ``` +{% endraw %} + +### {% linkable_title Is Anyone Home? %} + +This example is determining if anyone is home based on the combination of device +tracking and motion sensors. It's extremely useful if you have kids/baby sitter/ +grand parents who might still be in your house that aren't represented by a +trackable device in Home Assistant. This is providing a composite of WiFi based +device tracking and Z-Wave multisensor presence sensors. + +{% raw %} +```yaml +binary_sensor: + - platform: template + sensors: + people_home: + entity_id: + - device_tracker.sean + - device_tracker.susan + - binary_sensor.office_124 + - binary_sensor.hallway_134 + - binary_sensor.living_room_139 + - binary_sensor.porch_ms6_1_129 + - binary_sensor.family_room_144 + value_template: >- + {{ is_state('device_tracker.sean', 'home') + or is_state('device_tracker.susan', 'home') + or is_state('binary_sensor.office_124', 'on') + or is_state('binary_sensor.hallway_134', 'on') + or is_state('binary_sensor.living_room_139', 'on') + or is_state('binary_sensor.porch_ms6_1_129', 'on') + or is_state('binary_sensor.family_room_144', 'on') }} +``` +{% endraw %} diff --git a/source/_components/binary_sensor.tesla.markdown b/source/_components/binary_sensor.tesla.markdown new file mode 100644 index 00000000000..c7c1948ae39 --- /dev/null +++ b/source/_components/binary_sensor.tesla.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Tesla Binary Sensor" +description: "Instructions on how to integrate Tesla binary sensors into Home Assistant." +date: 2017-08-30 12:29 +sidebar: true +comments: false +sharing: true +footer: true +logo: tesla.png +ha_category: Binary Sensor +ha_iot_class: "Cloud polling" +ha_release: 0.53 +--- + +The `Tesla` platform allows you to get data from your [Tesla](https://www.tesla.com/) sensors from within Home Assistant. + +They will be automatically discovered if the Tesla component is loaded. + +For more configuration information see the [Tesla component](/components/tesla/) documentation. diff --git a/source/_components/binary_sensor.threshold.markdown b/source/_components/binary_sensor.threshold.markdown index 025b2f2c064..c2e9e875b39 100644 --- a/source/_components/binary_sensor.threshold.markdown +++ b/source/_components/binary_sensor.threshold.markdown @@ -14,7 +14,9 @@ ha_release: 0.34 --- -The `threshold` binary sensor platform is consuming the state from another sensor. If the value is below (`lower`) or higher (`upper`) than the given threshold then state of this sensor change.. +The `threshold` binary sensor platform observes the state of another sensor. If the value is below (`lower`) or higher (`upper`) than the given threshold then state of the threshold sensor is changed. + +If the sensor is configured with no hysteresis and the sensor value is equal to the threshold, the sensor is turned off since it is not `lower` or `upper` with respect to the threshold. It's an alternative to the template binary sensor's `value_template:` to get the abnormal/too high/too low states. @@ -36,7 +38,7 @@ binary_sensor: Configuration variables: - **entity_id** (*Required*): The entity to monitor. Only [sensors](/components/sensor/) are supported. -- **threshold** (*Required*): The value which is the threshold. +- **threshold** (*Required*): The threshold which the observed value is compared against. - **type** (*Required*): `lower` if the value needs to be below the threshold or `upper` if higher. +- **hysteresis** (*Optional*): The distance the observed value must be from the threshold before the state is changed. Defaults to `0.0` - **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `Stats`. - diff --git a/source/_components/binary_sensor.trend.markdown b/source/_components/binary_sensor.trend.markdown index 15f49c2a2fc..41ac39437eb 100644 --- a/source/_components/binary_sensor.trend.markdown +++ b/source/_components/binary_sensor.trend.markdown @@ -13,7 +13,7 @@ ha_release: 0.28 ha_iot_class: "Local Push" --- -The `trend` platform allows you to create sensors which show the trend of numeric `state` or`state_attributes` from other entities. This sensor requires two updates of the underlying sensor to establish a trend. Thus it can take some time to show an accurate state. It can be useful as part of automations, where you want to base an action on a trend. +The `trend` platform allows you to create sensors which show the trend of numeric `state` or`state_attributes` from other entities. This sensor requires at least two updates of the underlying sensor to establish a trend. Thus it can take some time to show an accurate state. It can be useful as part of automations, where you want to base an action on a trend. To enable Trend binary sensors in your installation, add the following to your `configuration.yaml` file: @@ -29,39 +29,54 @@ binary_sensor: Configuration variables: - **sensors** array (*Required*): List of your sensors. - - **friendly_name** (*Optional*): Name to use in the Frontend. - - **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. - **entity_id** (*Required*): The entity that this sensor tracks. - **attribute** (*Optional*): The attribute of the entity that this sensor tracks. If no attribute is specified then the sensor will track the state. - - **invert** (*Optional*): Invert the result (so `true` means descending rather than ascending) + - **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. + - **friendly_name** (*Optional*): Name to use in the Frontend. + - **invert** (*Optional*): Invert the result (so `true` means descending rather than ascending). Defaults to `False` + - **max_samples** (*Optional*): Limit the maximum number of stored samples. Defaults to `2`. + - **min_gradient** (*Optional*): The minimum rate at which the observed value must be changing for this sensor to switch on. Defaults to `0.0` + - **sample_duration** (*Optional*): The duration **in seconds** to store samples for. Samples older than this value will be discarded. Defaults to `0` + +## {% linkable_title Using Multiple Samples %} + +If the optional `sample_duration` and `max_samples` parameters are specified then multiple samples can be stored and used to detect long-term trends. + +Each time the state changes, a new sample is stored along with the sample time. Samples older than `sample_duration` seconds will be discarded. + +A trend line is then fitted to the available samples, and the gradient of this line is compared to `min_gradient` to determine the state of the trend sensor. The gradient is measured in sensor units per second - so if you want to know when the temperature is falling by 2 degrees per hour, use a gradient of (-2) / (60 x 60) = -0.00055 + +The current number of stored samples is displayed on the States page. ## {% linkable_title Examples %} In this section you find some real life examples of how to use this sensor. -### {% linkable_title Temperature trend %} - -This example indicates `true` if the temperature is rising: +This example indicates `true` if the sun is still rising: ```yaml binary_sensor: - platform: trend sensors: - temperature_up: - friendly_name: 'Temp increasing' - entity_id: sensor.skylight_temperature + sun_rising: + entity_id: sun.sun +``` + +This example creates two sensors to indicate whether the temperature is rising or falling at a rate of at least 3 degrees an hour, and collects samples over a two hour period: + +```yaml +binary_sensor: + - platform: trend + sensors: + temp_falling: + entity_id: sensor.outside_temperature + sample_duration: 7200 + min_gradient: -0.0008 + device_class: cold + + temp_rising: + entity_id: sensor.outside_temperature + sample_duration: 7200 + min_gradient: 0.0008 device_class: heat ``` - -And this one indicates `true` if the temperature is falling: - -```yaml -binary_sensor: - - platform: trend - sensors: - temperature_down: - friendly_name: 'Temp decreasing' - entity_id: sensor.skylight_temperature - device_class: cold - invert: Yes -``` diff --git a/source/_components/binary_sensor.velbus.markdown b/source/_components/binary_sensor.velbus.markdown new file mode 100644 index 00000000000..7c9c9ef62dd --- /dev/null +++ b/source/_components/binary_sensor.velbus.markdown @@ -0,0 +1,42 @@ +--- +layout: page +title: "Velbus sensors" +description: "Access and control your Velbus sensors." +date: 2017-06-17 16.58 +sidebar: true +comments: false +sharing: true +footer: true +logo: velbus.png +ha_category: Binary Sensor +ha_iot_class: "Local Push" +ha_release: "0.50" +--- + +The `velbus` binary_sensor allows you to control [Velbus](http://www.velbus.eu) connected wall switches. + +To use your Velbus wall switches in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry + +binary_sensor: + - platform: velbus + devices: + - name: Wall Switch 1 + module: 0xda + channel: 4 + - name: Wall Switch 2 + module: 0xbc + channel: 1 + is_pushbutton: true +``` + +Configuration variables: +- **devices** array (*Required*): The array contains the binary sensors to configure + - **name** (*Required*): Name of the binary sensor. + - **module** (*Required*): The hexadecimal module address + - **channel** (*Required*): The channel number in the module. + - **is_pushbutton** (*Optional*): Boolean to indicate if a wall switch is a push button or not (default: false) + +For hub configuration, see [the Velbus component](/components/velbus/). diff --git a/source/_components/binary_sensor.verisure.markdown b/source/_components/binary_sensor.verisure.markdown new file mode 100644 index 00000000000..026ad16ab46 --- /dev/null +++ b/source/_components/binary_sensor.verisure.markdown @@ -0,0 +1,19 @@ +--- +layout: page +title: "Verisure Binary Sensor" +description: "Instructions how to integrate Verisure binary sensors into Home Assistant." +date: 2016-02-23 21:31 +0100 +sidebar: true +comments: false +sharing: true +footer: true +logo: verisure.png +ha_category: Binary Sensor +ha_iot_class: "Cloud Polling" +--- + +Integrates Verisure binary sensors into Home Assistant. See the [main component](/components/verisure/) for configuration instructions. + +The following binary sensor types are supported: + +Door & Window diff --git a/source/_components/binary_sensor.vultr.markdown b/source/_components/binary_sensor.vultr.markdown new file mode 100644 index 00000000000..a78cb30dc37 --- /dev/null +++ b/source/_components/binary_sensor.vultr.markdown @@ -0,0 +1,54 @@ +--- +layout: page +title: "Vultr Binary Sensor" +description: "Instructions on how to set up Vultr binary sensors within Home Assistant." +date: 2017-10-17 21:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: System Monitor +logo: vultr.png +ha_release: "0.58" +ha_iot_class: "Cloud Polling" +--- + +The `vultr` binary sensor platform allows you to monitor your [Vultr](https://www.vultr.com/) subscription to see if it is powered on or not. + +To use this binary sensor, 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` +

+ +Minimal `configuration.yaml` (produces `binary_sensor.vultr_web_server`): + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: vultr + subscription: 123456 +``` + +{% configuration %} +subscription: + description: The subscription you want to monitor, this can be found in the URL when viewing a server. + required: true + type: string +name: + description: The name you want to give this binary sensor. + required: false + default: "Vultr {subscription label}" + type: string +{% endconfiguration %} + + +Full `configuration.yaml` (produces `binary_sensor.totally_awesome_server`): + +```yaml +binary_sensor: + - platform: vultr + name: totally_awesome_server + subscription: 12345 +``` + diff --git a/source/_components/binary_sensor.wink.markdown b/source/_components/binary_sensor.wink.markdown index aaff7d4e451..862a6b258ec 100644 --- a/source/_components/binary_sensor.wink.markdown +++ b/source/_components/binary_sensor.wink.markdown @@ -25,15 +25,15 @@ The requirement is that you have setup [Wink](/components/wink/). - Window/Door sensors - Motion sensors - Ring Door bells (No hub required) -- Liquid presense sensors +- Liquid presence sensors - Z-wave lock key codes - Lutron connected bulb remote buttons -- Wink Relay buttons and presense detection +- Wink Relay buttons and presence detection - Wink spotter loudness and vibration (No Wink hub required) - Wink hub devices connection status. This includes any paired hubs like Hue, Wink v1, Wink v2, Wink Relay... - Dropcam sensors

-The above devices are confimed to work, but others may work as well. +The above devices are confirmed to work, but others may work as well.

diff --git a/source/_components/binary_sensor.workday.markdown b/source/_components/binary_sensor.workday.markdown index 133b28f1b76..45f1d2386cc 100644 --- a/source/_components/binary_sensor.workday.markdown +++ b/source/_components/binary_sensor.workday.markdown @@ -18,7 +18,7 @@ The `workday` binary sensor indicates, whether the current day is a workday or n To enable the `workday` sensor in your installation, add the following to your `configuration.yaml` file: ```yaml -# Example configuation.yaml entry +# Example configuration.yaml entry binary_sensor: - platform: workday country: DE @@ -30,6 +30,7 @@ Configuration variables: - **province** (*Optional*): Province code according to [holidays](https://pypi.python.org/pypi/holidays/0.8.1) notation. Defaults to None. - **workdays** (*Optional*): List of workdays. Defaults to `mon`, `tue`, `wed`, `thu`, `fri`. - **excludes** (*Optional*): List of workday excludes. Defaults to `sat`, `sun`, `holiday`. +- **days_offset** (*Optional*): Set days offset. Defaults to `0`. Days are specified as follows: `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`. The keyword `holiday` is used for public holidays identified by the holidays module. diff --git a/source/_components/binary_sensor.xiaomi_aqara.markdown b/source/_components/binary_sensor.xiaomi_aqara.markdown new file mode 100644 index 00000000000..a6eb4e95d8e --- /dev/null +++ b/source/_components/binary_sensor.xiaomi_aqara.markdown @@ -0,0 +1,310 @@ +--- +layout: page +title: "Xiaomi Binary Sensor" +description: "Instructions how to setup the Xiaomi binary sensors within Home Assistant." +date: 2017-07-21 16:34 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: Binary Sensor +ha_release: "0.50" +ha_iot_class: "Local Push" +--- + + +The `xiaomi aqara` binary sensor platform allows you to get data from your [Xiaomi](http://www.mi.com/en/) binary sensors. + +The requirement is that you have setup the [`xiaomi aqara` component](/components/xiaomi_aqara/). + + +### {% linkable_title Type of sensors supported %} + +| 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` | | | +| 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 (thru long_click_press), off | `click` | `click_type` | `long_click_press`, `long_click_release`, `hold`, `single`, `double` | +| Button (2nd gen) | sensor_switch.aq2 | 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) | + +### {% linkable_title Automation examples %} + +#### {% linkable_title Motion %} + +```yaml +- alias: If there is motion and its dark turn on the gateway light + trigger: + platform: state + entity_id: binary_sensor.motion_sensor_158d000xxxxxc2 + from: 'off' + to: 'on' + condition: + condition: numeric_state + entity_id: sensor.illumination_34ce00xxxx11 + below: 300 + action: + - service: light.turn_on + entity_id: light.gateway_light_34ce00xxxx11 + data: + brightness: 5 + - service: automation.turn_on + data: + entity_id: automation.MOTION_OFF +- alias: If there no motion for 5 minutes turn off the gateway light + trigger: + platform: state + entity_id: binary_sensor.motion_sensor_158d000xxxxxc2 + from: 'on' + to: 'off' + for: + minutes: 5 + action: + - service: light.turn_off + entity_id: light.gateway_light_34ce00xxxx11 + - service: automation.turn_off + data: + entity_id: automation.Motion_off +``` + +#### {% linkable_title Door and/or Window %} + +```yaml +- alias: If the window is open turn off the radiator + trigger: + platform: state + entity_id: binary_sensor.door_window_sensor_158d000xxxxxc2 + from: 'off' + to: 'on' + action: + service: climate.set_operation_mode + entity_id: climate.livingroom + data: + operation_mode: 'Off' +- alias: If the window is closed for 5 minutes turn on the radiator again + trigger: + platform: state + entity_id: binary_sensor.door_window_sensor_158d000xxxxxc2 + from: 'on' + to: 'off' + for: + minutes: 5 + action: + service: climate.set_operation_mode + entity_id: climate.livingroom + data: + operation_mode: 'Smart schedule' +``` + +#### {% linkable_title Smoke %} + +```yaml +- alias: Send notification on fire alarm + trigger: + platform: state + entity_id: binary_sensor.smoke_sensor_158d0001574899 + from: 'off' + to: 'on' + action: + - service: notify.html5 + data: + title: Fire alarm! + message: Fire/Smoke detected! + - service: xiaomi_aqara.play_ringtone + data: + gw_mac: xxxxxxxxxxxx + ringtone_id: 2 + ringtone_vol: 100 +``` + +#### {% linkable_title Gas %} + +```yaml +- alias: Send notification on gas alarm + trigger: + platform: state + entity_id: binary_sensor.natgas_sensor_158dxxxxxxxxxx + from: 'off' + to: 'on' + action: + - service: notify.html5 + data_template: + title: Gas alarm! + message: 'Gas with a density of {% raw %}{{ states.binary_sensor.natgas_sensor_158dxxxxxxxxxx.attributes.density }}{% endraw %} detected.' +``` + +#### {% linkable_title Xiaomi Wireless Button %} + +Available events are `single`, `double`, `hold`, `long_click_press` and `long_click_release`. For Square version (Aqara brand) only `single` and `double` events are supported. Furthermore the space between two clicks to generate a double click must be quite large now. + +```yaml +- alias: Toggle dining light on single press + trigger: + platform: event + event_type: click + event_data: + entity_id: binary_sensor.switch_158d000xxxxxc2 + click_type: single + action: + service: switch.toggle + entity_id: switch.wall_switch_left_158d000xxxxx01 +- alias: Toggle couch light on double click + trigger: + platform: event + event_type: click + event_data: + entity_id: binary_sensor.switch_158d000xxxxxc2 + click_type: double + action: + service: switch.toggle + entity_id: switch.wall_switch_right_158d000xxxxx01 +- alias: Let a dog bark on long press + trigger: + platform: event + event_type: click + event_data: + entity_id: binary_sensor.switch_158d000xxxxxc2 + click_type: long_click_press + action: + service: xiaomi_aqara.play_ringtone + data: + gw_mac: xxxxxxxxxxxx + ringtone_id: 8 + ringtone_vol: 8 +``` + +#### {% linkable_title Xiaomi Cube %} + +Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swing`, `alert`, `free_fall` and `rotate`. The component stores the last action as the attribute `last_action`. + +```yaml +- alias: Cube event flip90 + trigger: + platform: event + event_type: cube_action + event_data: + entity_id: binary_sensor.cube_15xxxxxxxxxxxx + action_type: flip90 + action: + - service: light.turn_on + entity_id: light.gateway_light_28xxxxxxxxxx + data: + color_name: "springgreen" +- alias: Cube event flip180 + trigger: + platform: event + event_type: cube_action + event_data: + entity_id: binary_sensor.cube_15xxxxxxxxxxxx + action_type: flip180 + action: + - service: light.turn_on + entity_id: light.gateway_light_28xxxxxxxxxx + data: + color_name: "darkviolet" +- alias: Cube event move + trigger: + platform: event + event_type: cube_action + event_data: + entity_id: binary_sensor.cube_15xxxxxxxxxxxx + action_type: move + action: + - service: light.turn_on + entity_id: light.gateway_light_28xxxxxxxxxx + data: + color_name: "gold" +- alias: Cube event tap_twice + trigger: + platform: event + event_type: cube_action + event_data: + entity_id: binary_sensor.cube_15xxxxxxxxxxxx + action_type: tap_twice + action: + - service: light.turn_on + entity_id: light.gateway_light_28xxxxxxxxxx + data: + color_name: "deepskyblue" +- alias: Cube event shake_air + trigger: + platform: event + event_type: cube_action + event_data: + entity_id: binary_sensor.cube_15xxxxxxxxxxxx + action_type: shake_air + action: + - service: light.turn_on + entity_id: light.gateway_light_28xxxxxxxxxx + data: + color_name: "blue" +``` + +#### {% linkable_title Aqara Wireless Switch %} + +The Aqara Wireless Switch is available as single-key and double-key version. Each key behaves like the Wireless Button limited to the click event `single`. The double key version adds a third device called `binary_sensor.wall_switch_both_158xxxxxxxxx12` which reports a click event called `both` if both keys are pressed. + +```yaml +- alias: Decrease brightness of the gateway light + trigger: + platform: event + event_type: click + event_data: + entity_id: binary_sensor.wall_switch_left_158xxxxxxxxx12 + click_type: single + action: + service: light.turn_on + entity_id: light.gateway_light_34xxxxxxxx13 + data_template: + brightness: {% raw %}>- + {% if states.light.gateway_light_34xxxxxxxx13.attributes.brightness %} + {% if states.light.gateway_light_34xxxxxxxx13.attributes.brightness - 60 >= 10 %} + {{states.light.gateway_light_34xxxxxxxx13.attributes.brightness - 60}} + {% else %} + {{states.light.gateway_light_34xxxxxxxx13.attributes.brightness}} + {% endif %} + {% else %} + 10 + {% endif %}{% endraw %} + +- alias: Increase brightness of the gateway light + trigger: + platform: event + event_type: click + event_data: + entity_id: binary_sensor.wall_switch_right_158xxxxxxxxx12 + click_type: single + action: + service: light.turn_on + entity_id: light.gateway_light_34xxxxxxxx13 + data_template: + brightness: {% raw %}>- + {% if states.light.gateway_light_34xxxxxxxx13.attributes.brightness %} + {% if states.light.gateway_light_34xxxxxxxx13.attributes.brightness + 60 <= 255 %} + {{states.light.gateway_light_34xxxxxxxx13.attributes.brightness + 60}} + {% else %} + {{states.light.gateway_light_34xxxxxxxx13.attributes.brightness}} + {% endif %} + {% else %} + 10 + {% endif %}{% endraw %} + +- alias: Turn off the gateway light + trigger: + platform: event + event_type: click + event_data: + entity_id: binary_sensor.wall_switch_both_158xxxxxxxxx12 + click_type: both + action: + service: light.turn_off + entity_id: light.gateway_light_34xxxxxxxx13 +``` diff --git a/source/_components/binary_sensor.zha.markdown b/source/_components/binary_sensor.zha.markdown index 96f607ea5d0..755e4396ed6 100644 --- a/source/_components/binary_sensor.zha.markdown +++ b/source/_components/binary_sensor.zha.markdown @@ -12,4 +12,4 @@ ha_category: Binary Sensor ha_iot_class: "Local Polling" --- -To get your ZigBee binary sensors working with Home Assistant, follow then instructions for the general [ZigBee Home Automationcomponent](/components/zha/). +To get your ZigBee binary sensors working with Home Assistant, follow the instructions for the general [ZigBee Home Automation component](/components/zha/). diff --git a/source/_components/blink.markdown b/source/_components/blink.markdown index 21cd6b4447b..217dcce7438 100644 --- a/source/_components/blink.markdown +++ b/source/_components/blink.markdown @@ -36,9 +36,9 @@ Once loaded, your front end will have the following components: * A camera image for each camera in your system. * A binary_sensor per camera that indicates whether motion detection is enabled. * A binary_sensor for the system that indicates if the system is armed or disarmed. -* A sesnor per camera that reports temperature. +* A sensor per camera that reports temperature. * A sensor per camera that reports battery level. -* A sensor per camera that reports unread notification (ie. detected motion events). +* A sensor per camera that reports unread notification (i.e., detected motion events). Since the cameras are battery operated, the images are only updated in Home Assistant when the user manually forces a new photo. This image can be updated with the `snap_picture` service to force Home Assistant to request an update from Blink's servers. As a note, all of the camera-specific sensors are only polled when a new image is requested from the camera. This means that relying on any of these sensors to provide timely and accurate data is not recommended. @@ -59,7 +59,7 @@ For `arm_system`, the value sent can be either `True` or `False` and will arm an } ``` -Arm camera follows a similar structure, but each indidivual camera can have motion detection enabled or disabled. Because of this, you also need to supply a name. For example, if you have a camera named "Living Room" and you want to turn off motion detection on that camera, you would call the `arm_camera` service with the following payload: +Arm camera follows a similar structure, but each individual camera can have motion detection enabled or disabled. Because of this, you also need to supply a name. For example, if you have a camera named "Living Room" and you want to turn off motion detection on that camera, you would call the `arm_camera` service with the following payload: ```json { diff --git a/source/_components/browser.markdown b/source/_components/browser.markdown index 36bb6176789..c5fa4b424eb 100644 --- a/source/_components/browser.markdown +++ b/source/_components/browser.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: home-assistant.png -ha_category: Other +ha_category: Utility --- @@ -25,7 +25,7 @@ browser: | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `url` | no | The url to open +| `url` | no | The URL to open. ### {% linkable_title Usage %} diff --git a/source/_components/calendar.todoist.markdown b/source/_components/calendar.todoist.markdown new file mode 100644 index 00000000000..65401ebc643 --- /dev/null +++ b/source/_components/calendar.todoist.markdown @@ -0,0 +1,136 @@ +--- +layout: page +title: "Todoist" +description: "Instructions on how to integrate Todoist into Home Assistant." +date: 2017-08-31 2:22 +sidebar: true +comments: false +sharing: true +footer: true +logo: todoist.png +ha_category: Calendar +ha_iot_class: "Cloud Polling" +ha_release: 0.54 +--- + + +This platform allows you to connect to your [Todoist Projects](https://todoist.com) and generate binary sensors. A different sensor will be created for each individual project, or you can specify "custom" projects which match against criteria you set (more on that below). These sensors will be `on` if you have a task due in that project or `off` if all the tasks in the project are completed or if the project doesn't have any tasks at all. All tasks get updated roughly every 15 minutes. + +### {% linkable_title Prerequisites %} + +You need to determine your Todoist API token. This is fairly simple to do; just go [to the Integrations section on your Todoist settings page](https://todoist.com/Users/viewPrefs?page=authorizations) and find the section labeled "API token" at the bottom of the page. Copy that token and use it in your configuration file. + +### {% linkable_title Basic Setup %} + +To integrate Todoist in Home Assistant, add the following section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +calendar: + - platform: todoist + token: API_token_created_from_steps_above +``` + +Configuration variables: + +- **token** (*Required*): The API token used to authorize Home Assistant to access your projects. +- **custom_projects** (*Optional*): Details on any "custom" binary sensor projects you want to create. + - **name** (*Required*): The name of your custom project. Only required if you specify that you want to create a custom project. + - **due_date_days** (*Optional*): Only include tasks due within this many days. If you don't have any tasks with a due date set, this returns nothing. + - **labels** (*Optional*): Only include tasks with at least one of these labels (i.e., this works as an `or` statement).. + - **include_projects** (*Optional*): Only include tasks in these projects. Tasks in all other projects will be ignored. + + +### {% linkable_title Custom Projects %} +Creating custom projects is super-easy and quite powerful. All you need to run the basic Todoist projects is your API token, but if you wanted, you could go even deeper. Here's an example: + +```yaml +# Example configuration.yaml entry +calendar: + - platform: todoist + token: !secret todoist_token + custom_projects: + - name: 'All Projects' + - name: 'Due Today' + due_date_days: 0 + - name: 'Due This Week' + due_date_days: 7 + - name: 'Math Homework' + labels: + - Homework + include_projects: + - Mathematical Structures II + - Calculus II +``` + +(See [here](https://home-assistant.io/docs/configuration/secrets/) for more details about what that `!secret` does -- it's not exclusive to Todoist, and can help keep your API keys and passwords a little safer!) + +As you can see, there are 4 custom projects here: + +- A project containing *all* of the tasks on this account. + +- A project containing *all* the tasks on this account that are due today. + +- A project containing *all* the tasks on this account due within the next week. + +- A project containing everything with the label "Homework", taking only 2 projects into account. + +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). + +### {% linkable_title Sensor attributes %} + + - **offset_reached**: Not used. + + - **all_day**: `True` if the reported task doesn't have a due date. `False` if there is a due date set. + + - **message**: The title of the "most important" task coming up in this project. + + - **description**: A URL pointing to the task on the Todoist website. + + - **location**: Not used. + + - **start_time**: The last time the Todoist component got updated. Usually within the last 15 minutes. + + - **end_time**: When the task is due. + +- **all_tasks**: A list of all tasks in this project, sorted from most important to least important. + +- **priority**: The priority Todoist reports this task as having. 1 means lowest priority, 4 means highest. Note that this is the **opposite** of how things are displayed in the Todoist app! + +- **task_comments**: Any comments added to this task. + +- **task_labels**: All labels associated with this task. + +- **overdue**: Whether the reported task is past its due date. + +- **due_today**: Whether the reported task is due today. + +### {% linkable_title Services %} + +Todoist also comes with access to a service, `todoist.new_task`. This service can be used to create a new Todoist task. You can specify labels and a project, or you can leave them blank, and the task will go to your "Inbox" project. + +Here's an example JSON payload: + +```json +{ + "content": "Pick up the mail", + "project": "Errands", + "labels":"Homework,School", + "priority":3, + "due_date":"2017-09-12 14:00" +} +``` + +- **content** (*Required*): The name of the task you want to create. + +- **project** (*Optional*): The project to put the task in. + +- **labels** (*Optional*): Any labels you want to add to the task, separated by commas. + +- **priority** (*Optional*): The priority of the task, from 1-4. Again, 1 means least important, and 4 means most important. + +- **due_date** (*Optional*): When the task should be due, in either YYYY-MM-DD format or YYYY-MM-DD HH:MM format. + +Note that there's (currently) no way to mark tasks as done through Home Assistant; task names do not necessarily have to be unique, so you could find yourself in a situation where you close the wrong task. diff --git a/source/_components/camera.abode.markdown b/source/_components/camera.abode.markdown new file mode 100644 index 00000000000..a95b6d2fcfb --- /dev/null +++ b/source/_components/camera.abode.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Abode Camera" +description: "Instructions how to integrate Abode cameras into Home Assistant." +date: 2017-08-26 13:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: abode.jpg +ha_release: 0.54 +ha_category: Camera +ha_iot_class: "Cloud Push" +--- + +The `abode` security control panel platform allows you to control your [Abode](https://goabode.com/) alarms. + +This component will automatically add `Cameras` configured in your Abode account. You can request a new still image capture by passing the `entity_id` of your cameras to the [capture_image service](/components/abode/#capture_image). + +The requirement is that you have setup your [Abode hub](/components/abode/). diff --git a/source/_components/camera.amcrest.markdown b/source/_components/camera.amcrest.markdown index ee9d7761118..2c1a042c877 100644 --- a/source/_components/camera.amcrest.markdown +++ b/source/_components/camera.amcrest.markdown @@ -13,33 +13,14 @@ ha_iot_class: "Local Polling" ha_release: 0.34 --- -The `amcrest` platform allows you to integrate your [Amcrest](https://amcrest.com/) IP camera in Home Assistant. +To get your [Amcrest](https://amcrest.com/) cameras working within Home Assistant, please follow the instructions for the general [Amcrest component](/components/amcrest). -To enable your camera in your installation, add the following to your `configuration.yaml` file: +Once you have enabled the [Amcrest component](/components/amcrest), add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry camera: - platform: amcrest - host: IP_ADDRESS - username: USERNAME - password: PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The IP address or hostname of your camera. If using hostname, make sure the DNS works as expected. -- **username** (*Required*): The username for accessing your camera. -- **password** (*Required*): The password for accessing your camera. -- **name** (*Optional*): This parameter allows you to override the name of your camera. The default is "Amcrest Camera". -- **port** (*Optional*): The port that the camera is running on. The default is 80. -- **resolution** (*Optional*): This parameter allows you to specify the camera resolution. For a high resolution (1080/720p), specify the option `high`. For VGA resolution (640x480p), specify the option `low`. If omitted, it defaults to *high*. -- **stream_source** (*Optional*): The data source for the live stream. `mjpeg` will use the camera's native MJPEG stream, whereas `snapshot` will use the camera's snapshot API to create a stream from still images. You can also set the `rtsp` option to generate the streaming via RTSP protocol. If omitted, it defaults to *mjpeg*. -- **ffmpeg_arguments**: (*Optional*): Extra options to pass to ffmpeg, e.g. image quality or video filter options. - -**Note:** Amcrest cameras with newer firmwares no longer have the ability to stream `high` definition video with MJPEG encoding. You may need to use `low` resolution stream or the `snapshot` stream source instead. If the quality seems too poor, lower the `Frame Rate (FPS)` and max out the `Bit Rate` settings in your camera's configuration manager. - -**Note:** If you set the `stream_source` option to `rtsp`, make sure to follow the steps mentioned at -[FFMPEG](https://home-assistant.io/components/ffmpeg/) documentation to install the `ffmpeg`. - To check if your Amcrest camera is supported/tested, visit the [supportability matrix](https://github.com/tchellomello/python-amcrest#supportability-matrix) link from the `python-amcrest` project. diff --git a/source/_components/camera.android_ip_webcam.markdown b/source/_components/camera.android_ip_webcam.markdown new file mode 100644 index 00000000000..04c6e41d8e8 --- /dev/null +++ b/source/_components/camera.android_ip_webcam.markdown @@ -0,0 +1,27 @@ +--- +layout: page +title: "Android IP Webcam Camera" +description: "Instructions how to integrate Android IP Webcam cameras within Home Assistant." +date: 2015-07-11 0:36 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Camera +logo: android_ip_webcam.png +ha_release: "0.40" +ha_iot_class: "Local Polling" +--- + + +The `android_ip_webcam` component adds a camera by default if you choose not to use the component but still want to see the video feed then the [`mjpeg` camera](/components/camera.mjpeg/) platform can be used. + +To enable only the camera in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +camera: + - platform: mjpeg + mjpeg_url: http://IP_ADDRESS:8080/video +``` + diff --git a/source/_components/camera.arlo.markdown b/source/_components/camera.arlo.markdown index 0a659827ea6..1d66a90bbf0 100644 --- a/source/_components/camera.arlo.markdown +++ b/source/_components/camera.arlo.markdown @@ -28,6 +28,6 @@ camera: Configuration variables: -- **ffmpeg_arguments**: (*Optional*): Extra options to pass to ffmpeg, e.g. image quality or video filter options. +- **ffmpeg_arguments**: (*Optional*): Extra options to pass to ffmpeg, e.g., image quality or video filter options. **Note:** To be able to playback the last capture, it is required to install the `ffmpeg` component. Make sure to follow the steps mentioned at [FFMPEG](https://home-assistant.io/components/ffmpeg/) documentation. diff --git a/source/_components/camera.doorbird.markdown b/source/_components/camera.doorbird.markdown new file mode 100644 index 00000000000..55fcb419f8c --- /dev/null +++ b/source/_components/camera.doorbird.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "DoorBird Camera" +description: "Instructions how to integrate DoorBird video doorbell images into Home Assistant." +date: 2017-08-06 11:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: doorbird.png +ha_category: Camera +ha_release: "0.54" +ha_iot_class: "Local Polling" +--- + +The `doorbird` implementation allows you to view the live video and saved images from your [DoorBird](http://www.doorbird.com/) device in Home Assistant. + +

+ You must have the [DoorBird component](/components/doorbird/) configured to use this camera. +

+ +To enable the camera, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +camera: + - platform: doorbird +``` + +Configuration variables: + +- **last_visitor** (*Optional*): Adds a second camera that shows the last picture taken when someone rang the doorbell. Default is `false`. diff --git a/source/_components/camera.generic.markdown b/source/_components/camera.generic.markdown index a090c45235b..69637387a44 100644 --- a/source/_components/camera.generic.markdown +++ b/source/_components/camera.generic.markdown @@ -14,7 +14,7 @@ ha_iot_class: "depends" --- -The `generic` camera platform allows you to integrate any IP camera or other url into Home Assistant. Templates can be used to generate the urls on the fly. +The `generic` camera platform allows you to integrate any IP camera or other URL into Home Assistant. Templates can be used to generate the URLs on the fly. Home Assistant will serve the images via its server, making it possible to view your IP camera's while outside of your network. The endpoint is `/api/camera_proxy/camera.[name]`. @@ -34,7 +34,8 @@ Configuration variables: - **username** (*Optional*): The username for accessing your camera. - **password** (*Optional*): The password for accessing your camera. - **authentication** (*Optional*): Type for authenticating the requests `basic` (default) or `digest`. -- **limit_refetch_to_url_change** (*Optional*): True/false value (default: false). Limits refetching of the remote image to when the url changes. Only relevant if using a template to fetch the remote image. +- **limit_refetch_to_url_change** (*Optional*): True/false value (default: false). Limits re-fetching of the remote image to when the URL changes. Only relevant if using a template to fetch the remote image. +- **content_type** (*Optional*): Set the content type for the IP camera if it is not a jpg file (default: `image/jpeg`). Use `image/svg+xml` to add a dynamic svg file.

@@ -43,3 +44,16 @@ Configuration variables:

+## {% linkable_title Examples %} + +In this section you find some real life examples of how to use this camera platform. + +### {% linkable_title Weather graph from yr.no %} + +```yaml +camera: + - platform: generic + name: Weather + still_image_url: https://www.yr.no/place/Norway/Oslo/Oslo/Oslo/meteogram.svg + content_type: 'image/svg+xml' +``` diff --git a/source/_components/camera.markdown b/source/_components/camera.markdown index 88840ff2112..48d1f58f5f0 100644 --- a/source/_components/camera.markdown +++ b/source/_components/camera.markdown @@ -12,3 +12,44 @@ footer: true The camera component allows you to use IP cameras with Home Assistant. With a little additional work you could use [USB cameras](/blog/2016/06/23/usb-webcams-and-home-assistant/) as well. +### {% linkable_title Service %} + +Once loaded, the `camera` platform will expose services that can be called to perform various actions. + +Available services: `enable_motion_detection`, `disable_motion_detection`, and `snapshot`. + +#### {% linkable_title Service `enable_motion_detection` %} + +Enable the motion detection in a camera. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name(s) of entities to enable motion detection, e.g., `camera.living_room_camera`. | + +#### {% linkable_title Service `disable_motion_detection` %} + +Disable the motion detection in a camera. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name(s) of entities to disable motion detection, e.g., `camera.living_room_camera`. | + +#### {% linkable_title Service `snapshot` %} + +Take a snapshot from a camera. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name(s) of entities to create a snopshot from, e.g., `camera.living_room_camera`. | +| `filename ` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/snapshot_{{ entity_id }}`{% endraw %}. | + +### {% linkable_title Test if it works %} + +A simple way to test if you have set up your `camera` platform correctly, is to use service developer tool icon **Services** from the **Developer Tools**. Choose your service from the dropdown menu **Service**, enter something like the sample below into the **Service Data** field, and hit **CALL SERVICE**. + +```json +{ + "entity_id": "camera.living_room_camera" +} +``` + diff --git a/source/_components/camera.mjpeg.markdown b/source/_components/camera.mjpeg.markdown index a307590ca2a..6a01c708725 100644 --- a/source/_components/camera.mjpeg.markdown +++ b/source/_components/camera.mjpeg.markdown @@ -28,7 +28,7 @@ camera: Configuration variables: - **mjpeg_url** (*Required*): The URL your camera serves the video on, eg. http://192.168.1.21:2112/ -- **still_image_url** (*Optional*): The URL for thumbmail picture if camera support that. +- **still_image_url** (*Optional*): The URL for thumbnail picture if camera support that. - **name** (*Optional*): This parameter allows you to override the name of your camera. - **username** (*Optional*): The username for accessing your camera. - **password** (*Optional*): The password for accessing your camera. @@ -37,3 +37,15 @@ Configuration variables:

There is a known issue in urllib3 that you will get error messages in your logs like [StartBoundaryNotFoundDefect(), MultipartInvariantViolationDefect()], unparsed data: '' but the component still works fine. You can ignore the messages.

+ +## {% linkable_title Examples %} + +Example of using a DCS-930L Wireless N Network Camera from D-Link: + +```yaml +camera: + - platform: mjpeg + name: Livingroom Camera + still_image_url: http://IP/image.jpg + mjpeg_url: http://IP/video/mjpg.cgi +``` diff --git a/source/_components/camera.mqtt.markdown b/source/_components/camera.mqtt.markdown index 5e7c8ce07dd..852140ddf9e 100644 --- a/source/_components/camera.mqtt.markdown +++ b/source/_components/camera.mqtt.markdown @@ -13,7 +13,7 @@ ha_release: 0.43 ha_iot_class: depends --- -The `mqtt` camera platform allows you to integrate the content of an image file sent through MQTT into Home Assistant as a camera. Everytime a message under the `topic` in the configuration is received, the image displayed in Home Assistant will also be updated. +The `mqtt` camera platform allows you to integrate the content of an image file sent through MQTT into Home Assistant as a camera. Every time a message under the `topic` in the configuration is received, the image displayed in Home Assistant will also be updated. This can be used with an application or a service capable of sending images through MQTT, for example [Zanzito](https://play.google.com/store/apps/details?id=it.barbaro.zanzito). diff --git a/source/_components/camera.neato.markdown b/source/_components/camera.neato.markdown index f215a087a79..4fccb0b413b 100644 --- a/source/_components/camera.neato.markdown +++ b/source/_components/camera.neato.markdown @@ -14,8 +14,6 @@ ha_iot_class: "Cloud Polling" --- -The `neato` camera platform allows you to view the latest cleaning map of your [Neato Botvac Connected] -(https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). - -The requirement is that you have setup your [Neato hub](/components/neato/). +The `neato` camera platform allows you to view the latest cleaning map of your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). +To add `neato` camera to your installation, follow instructions in [Neato component](/components/neato/). diff --git a/source/_components/camera.ring.markdown b/source/_components/camera.ring.markdown new file mode 100644 index 00000000000..c383381eaf7 --- /dev/null +++ b/source/_components/camera.ring.markdown @@ -0,0 +1,71 @@ +--- +layout: page +title: "Ring Binary Camera" +description: "Instructions on how to integrate your Ring.com devices within Home Assistant." +date: 2017-10-20 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ring.png +ha_category: Camera +ha_release: 0.57 +ha_iot_class: "Cloud Polling" +--- + +To get your [Ring.com](https://ring.com/) cameras working within Home Assistant, please follow the instructions for the general [Ring component](/components/ring). + +Once you have enabled the [Ring component](/components/ring), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +camera: + - platform: ring +``` + +Configuration variables: + +- **ffmpeg_arguments**: (*Optional*): Extra options to pass to ffmpeg, e.g., image quality or video filter options. +- **scan_interval**: (*Optional*): How frequently to query for new video. Defaults to 90 seconds. + +**Note:** To be able to playback the last capture, it is required to install the `ffmpeg` component. Make sure to follow the steps mentioned at [FFMPEG](https://home-assistant.io/components/ffmpeg/) documentation. + +Currently it supports doorbell and stickup cameras. + + +## {% linkable_title Saving locally the videos captured by your Ring Door Bell %} + +You can save locally the latest video captured by your Ring Door Bell by enabling the [downloader](/components/downloader) and the [python_scripts](/components/python_script) components. + + - Add to the `configuration.yaml` the `downloader` and `python_scripts`. Visit the component page for further details. + +```json +python_script: +downloader: + download_dir: downloads +``` + - Create a file `ring_downloader.py` in the folder `/python_scripts` and give it this content: + +```python +# obtain ring doorbell camera object +# replace the camera.front_door by your camera entity +ring_cam = hass.states.get('camera.front_door') + +subdir_name = 'ring_{}'.format(ring_cam.attributes.get('friendly_name')) + +# get video URL +data = { + 'url': ring_cam.attributes.get('video_url'), + 'subdir': subdir_name, +} + +# call downloader component to save the video +hass.services.call('downloader', 'download_file', data) +``` + + - Start Home Assistant + - Call the server `python_script/ring_downloader` + +You should be able to see a video file saved under `//ring_/`. + +You can also automate the process by integrating it with the (automation)[/components/automation) component. diff --git a/source/_components/camera.skybell.markdown b/source/_components/camera.skybell.markdown new file mode 100644 index 00000000000..a6b1155d173 --- /dev/null +++ b/source/_components/camera.skybell.markdown @@ -0,0 +1,24 @@ +--- +layout: page +title: "Skybell Camera" +description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." +date: 2017-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: skybell.png +ha_category: Camera +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + +To get your [Skybell.com](https://www.skybell.com/) cameras working within Home Assistant, please follow the instructions for the general [Skybell component](/components/skybell). + +Once you have enabled the [Skybell component](/components/skybell), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +camera: + - platform: skybell +``` diff --git a/source/_components/camera.synology.markdown b/source/_components/camera.synology.markdown index d8b9d3f92c2..258bc1e832b 100644 --- a/source/_components/camera.synology.markdown +++ b/source/_components/camera.synology.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Synology Camera" -description: "Instructions how to integrate Synolog Surveillance Station cameras within Home Assistant." +description: "Instructions how to integrate Synology Surveillance Station cameras within Home Assistant." date: 2016-10-13 08:01 sidebar: true comments: false diff --git a/source/_components/camera.usps.markdown b/source/_components/camera.usps.markdown new file mode 100644 index 00000000000..5ed58ee5624 --- /dev/null +++ b/source/_components/camera.usps.markdown @@ -0,0 +1,31 @@ +--- +layout: page +title: USPS Camera +description: "Instructions on how to set up USPS camera within Home Assistant." +date: 2017-07-28 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: usps.png +ha_category: Camera +ha_release: 0.52 +ha_iot_class: "Cloud Polling" +--- + + +The `usps` camera component allows you to view the mail piece images made available through USPS via the Informed Delivery service. You must "Opt-In" to [Informed Delivery](https://informeddelivery.usps.com/box/pages/intro/start.action) to see mail images. This works in concert with [USPS sensors](/components/sensor.usps). + +

+You must have the [USPS component](/components/usps/) configured to use this camera. The camera will be setup if the `usps` component is configured and the required configuration is set. +

+ +To customize the interval that mail images are rotated in the mail camera you can edit your `configuration.yaml` file with the following settings: +```yaml +# Example configuration.yaml entry +camera: + - platform: usps + scan_interval: 5 +``` + +To enable this camera in your installation, set up the [USPS component](/components/usps) with your username and password. diff --git a/source/_components/camera.yi.markdown b/source/_components/camera.yi.markdown new file mode 100644 index 00000000000..98cc2b1f38b --- /dev/null +++ b/source/_components/camera.yi.markdown @@ -0,0 +1,83 @@ +--- +layout: page +title: "Yi Home Camera" +description: "Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant." +date: 2017-10-10 13:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: yi.png +ha_category: Camera +ha_release: 0.56 +ha_iot_class: "Local Polling" +--- + +The `yi` camera platform allows you to utilize [Yi Home Cameras](https://www.yitechnology.com/) within Home Assistant. Specifically, this platform supports the line of Yi Home Cameras that are based on the Hi3518e Chipset. This includes: + +* Yi Home 17CN +* Yi 1080p Home +* Yi Dome +* Yi 1080p Dome + +To successfully implement this platform, the Home Assistant host should be capable of multiple simultaneous reads. For every concurrent Home Assistant user, a connection will be made to the camera every 10 seconds. This should normally not be a problem. + +## {% linkable_title Preparing the Device %} + +### {% linkable_title Installing Alternative Firmware %} + +In order to integrate the camera with Home Assitant, it is necessary to install a custom firmware on the device. Instructions for doing so can be found via the [yi-hack-v3 GitHub project](https://github.com/shadow-1/yi-hack-v3). + +Once installed, please ensure that you have enabled FTP and Telnet on your device. + +

+Some alternative Yi firmwares enable an experimental RTSP server, which will allow you to connect to your camera via other Home Assistant camera platforms. However, this RTSP server disables the ability to use the supremely-useful Yi Home app. In order to maintain both Home Assistant compatibility _and_ the native app, this platform retrieves videos via FTP. +

+ +### {% linkable_title Changing the FTP Password %} + +Once the custom firmware is installed, a password must be added to the FTP +server. To do so: + +1. Telnet into your camera: `telnet `. +2. Enter `root` as the username and `` as the password. +3. Type `passwd` and hit ``. +4. Enter your new password twice. +5. Log out of Telnet. + +## {% linkable_title Configuring the Platform %} + +To enable the platform, add the following lines to your`configuration.yaml` file: + +```yaml +camera: + - platform: yi + name: Camera + host: '192.168.1.100' + password: my_password_123 +``` + +Configuration variables: + +- **name** (*Required*): A human-friendly name for the camera. +- **host** (*Required*): The IP address or hostname of the camera. +- **password** (*Required*): The password to the FTP server on the camera (from above). +- **path** (*Optional*): The path to the raw MP4 files. Defaults to `/tmp/sd/record`. +- **username** (*Optional*): The user that can access the FTP server. Ddefaults to `root`. +- **ffmpeg_arguments** (*Optional*): Extra options to pass to `ffmpeg` (e.g. image quality or video filter options). + +## {% linkable_title Image quality %} + +Any option supported by [`ffmpeg` camera](/components/camera.ffmpeg/) can be utilized via the `ffmpeg_arguments` configuration parameter. + +One particularly useful adjustment deals with video size. Since Yi videos are fairly large (especially on the 1080p cameras), the following configuration will bring them down to a manageable size: + +```yaml +camera: + - platform: yi + name: My Camera + host: '192.168.1.100' + password: my_password_123 + path: /home/camera/feed + ffmpeg_arguments: '-vf scale=800:450' +``` diff --git a/source/_components/climate.ecobee.markdown b/source/_components/climate.ecobee.markdown index a6052218898..4c06cbbf90b 100644 --- a/source/_components/climate.ecobee.markdown +++ b/source/_components/climate.ecobee.markdown @@ -87,7 +87,7 @@ Returns the current temperature measured by the thermostat. | Attribute type | Description | | ---------------| ----------- | -| Integer | Currenly measured temperature +| Integer | Currently measured temperature ### {% linkable_title Attribute `target_temperature` %} @@ -171,7 +171,7 @@ is returned as the user-visible name (rather than the internally used name). ### {% linkable_title Attribute `fan_min_on_time` %} -Returns the current fan mimimum on time. +Returns the current fan minimum on time. | Attribute type | Description | | ---------------| ----------- | @@ -234,7 +234,7 @@ Turns the away mode on or off for the thermostat. ### {% linkable_title Service `set_hold_mode` %} Puts the thermostat into the given hold mode. For 'home', 'away', 'sleep', -and ony other hold based on a reference climate, the +and any other hold based on a reference climate, the target temperature is taken from the reference climate. For 'temp', the current temperature is taken as the target temperature. When None is provided as parameter, the hold_mode is turned off. diff --git a/source/_components/climate.ephember.markdown b/source/_components/climate.ephember.markdown new file mode 100644 index 00000000000..962b34746e2 --- /dev/null +++ b/source/_components/climate.ephember.markdown @@ -0,0 +1,33 @@ +--- +layout: page +title: "EPH Controls Ember Thermostat" +description: "Instructions on how to integrate EPH Controls Ember thermostats within Home Assistant." +date: 2017-10-07 12:40 +sidebar: true +comments: false +sharing: true +footer: true +logo: ephcontrolsember.png +ha_category: Climate +ha_release: "0.55" +ha_iot_class: "Local Polling" +--- + + +The `ephember` climate platform lets you control [EPH Controls](http://emberapp.ephcontrols.com/) thermostats. The module only works if you have a WiFi gateway to control your EPH system and an account on the ember app. + +To set it up, add the following information to your `configuration.yaml` file: + +```yaml +climate: + - platform: ephember + username: YOUR_EMAIL + password: YOUR_PASSWORD +``` + +A single interface can handle up to 32 connected devices. + +Configuration variables: + +- **username** (*Required*): The email address you used to sign up to the ember app +- **password** (*Required*): The password you used to sign up to the ember app diff --git a/source/_components/climate.eq3btsmart.markdown b/source/_components/climate.eq3btsmart.markdown index 5b93fce6ff6..5cfa52ae40c 100644 --- a/source/_components/climate.eq3btsmart.markdown +++ b/source/_components/climate.eq3btsmart.markdown @@ -19,7 +19,7 @@ As the device doesn't contain a temperature sensor ([read more](https://forum.fh we report target temperature also as current one. ### Testing the connectivity ### -Before configuring Home Assistant you should check that connectivity with the thermostat is working, which can can be done with the eq3cli tool: +Before configuring Home Assistant you should check that connectivity with the thermostat is working, which can be done with the eq3cli tool: ```bash eq3cli --mac 00:11:22:33:44:55 diff --git a/source/_components/climate.generic_thermostat.markdown b/source/_components/climate.generic_thermostat.markdown index 2184dc3b2cb..e477044c300 100644 --- a/source/_components/climate.generic_thermostat.markdown +++ b/source/_components/climate.generic_thermostat.markdown @@ -35,7 +35,8 @@ Configuration variables: - **target_temp** (*Optional*): Set initial target temperature. Failure to set this variable will result in target temperature being set to null on startup. - **ac_mode** (*Optional*): Set the switch specified in the *heater* option to be treated as a cooling device instead of a heating device. - **min_cycle_duration** (*Optional*): Set a minimum amount of time that the switch specified in the *heater* option must be in it's current state prior to being switched either off or on. -- **tolerance** (*Optional*): Set a minimum amount of difference between the temperature read by the sensor specified in the *target_sensor* option and the target temperature that must change prior to being switched either off or on. For example, if the target temperature is 25 and the tolerance is 0.5 the heater will start when the sensor goes below 24.5 and it will stop when the sensor goes above 25.5. +- **cold_tolerance** (*Optional*): Set a minimum amount of difference between the temperature read by the sensor specified in the *target_sensor* option and the target temperature that must change prior to being switched on. For example, if the target temperature is 25 and the tolerance is 0.5 the heater will start when the sensor equals or goes below 24.5. +- **hot_tolerance** (*Optional*): Set a minimum amount of difference between the temperature read by the sensor specified in the *target_sensor* option and the target temperature that must change prior to being switched off. For example, if the target temperature is 25 and the tolerance is 0.5 the heater will stop when the sensor equals or goes above 25.5. - **keep_alive** (*Optional*): Set a keep-alive interval. If set, the switch specified in the *heater* option will be triggered every time the interval elapses. Use with heaters and A/C units that shut off if they don't receive a signal from their remote for a while. 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:`. @@ -50,7 +51,8 @@ climate: min_temp: 15 max_temp: 21 target_temp: 17 - tolerance: 0.3 + cold_tolerance: 0.3 + hot_tolerance: 0 min_cycle_duration: seconds: 5 keep_alive: diff --git a/source/_components/climate.knx.markdown b/source/_components/climate.knx.markdown index 6297448c231..1c740bba30c 100644 --- a/source/_components/climate.knx.markdown +++ b/source/_components/climate.knx.markdown @@ -1,14 +1,14 @@ --- layout: page -title: "KNX Thermostat" -description: "Instructions on how to integrate KXN thermostats with Home Assistant." +title: "KNX Climate" +description: "Instructions on how to integrate KNX thermostats with Home Assistant." date: 2016-06-24 12:00 sidebar: true comments: false sharing: true footer: true logo: knx.png -ha_category: DIY +ha_category: Climate ha_release: 0.25 ha_iot_class: "Local Polling" --- @@ -16,22 +16,52 @@ ha_iot_class: "Local Polling" The `knx` climate platform is used as in interface with KNX thermostats. -KNX thermostats use at least 2 group addresses: one for the current temperature and one for the target temperature (named set-point in KNX terms). +The `knx` component must be configured correctly, see [KNX Component](/components/knx). -To use your KNX thermostats in your installation, add the following to your `configuration.yaml` file: +To use your KNX thermostats in your installation, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +climate: + - platform: knx + name: HASS-Kitchen.Temperature + temperature_address: '6/2/1' + setpoint_address: '5/1/2' + target_temperature_address: '5/1/1' + operation_mode_address: '5/1/3' +``` + +Alternatively, if your device has dedicated binary group addresses for frost/night/comfort mode: ```yaml # Example configuration.yaml entry climate: - platform: knx - address : KNX_ADDRESS - temperature_address: 0/1/1 - setpoint_address: 0/1/0 + name: HASS-Kitchen.Temperature + temperature_address: '6/2/1' + setpoint_address: '5/1/2' + target_temperature_address: '5/1/1' + operation_mode_frost_protection_address: '5/1/3' + operation_mode_night_address: '5/1/4' + operation_mode_comfort_address: '5/1/5' ``` -- **address** (*Required*): The KNX group address that is used to turn on/off this actuator channel. -- **temperature_address** (*Required*): The group address that is used to communicate the current temperature. Data format must be datapoint type 9.001 DPT_Value_Temp (2-Octet float value), check [details](http://www.knx.org/fileadmin/template/documents/downloads_support_menu/KNX_tutor_seminar_page/Advanced_documentation/05_Interworking_E1209.pdf). -- **setpoint_address** (*Required*): The group address that is used to set/read the target temperature. Data format must be datapoint type 9.001 DPT_Value_Temp (2-Octet float value). Make sure, you set the read-flag for the thermostat to allow Home Assistant to read the target temperature. -- **name** (*Optional*): A name for this devices used within Home Assistant. +Configuration variables: + +- **name** (*Optional*): A name for this device used within Home Assistant. +- **temperature_address**: KNX group address for reading current room temperature from KNX bus. +- **target_temperature_address**: KNX group address for reading current target temperature from KNX bus. +- **setpoint_address**: KNX group address for basis setpoint + +- **operation_mode_address** (*Optional*): KNX address for operation mode (Frost protection/night/comfort). +- **operation_mode_state_address** (*Optional*): Explicit KNX address for reading operation mode +- **controller_status_address** (*Optional*): KNX address for HVAC controller status (in accordance with KNX AN 097/07 rev 3) +- **controller_status_state_address** (*Optional*): Explicit KNX address for reading HVAC controller status + +- **operation_mode_frost_protection_address** (*Optional*): KNX address for switching on/off frost/heat protection mode. +- **operation_mode_night_address** (*Optional*): KNX address for switching on/off night mode. +- **operation_mode_comfort_address** (*Optional*): KNX address for switching on/off comfort mode. + +`operation_mode_frost_protection_address` / `operation_mode_night_address` / `operation_mode_comfort_address` are not necessary if `operation_mode_address` was specified. + -With the current version of the module, no advanced KNX thermostat functionalities (e.g. HVAC mode) are supported. diff --git a/source/_components/climate.markdown b/source/_components/climate.markdown index d20705eb3da..ce47cc8a3cb 100644 --- a/source/_components/climate.markdown +++ b/source/_components/climate.markdown @@ -222,3 +222,12 @@ automation: entity_id: climate.kitchen swing_mode: 1 ``` +#### {% linkable_title Customization %} + +The step for the setpoint can be adjusted (default to 0,5 increments) by adding the following line into configuration + +```yaml +customize: + - entity_id + target_temp_step: 1 +``` diff --git a/source/_components/climate.maxcube.markdown b/source/_components/climate.maxcube.markdown index ac6e5299ba9..0b918cf1033 100644 --- a/source/_components/climate.maxcube.markdown +++ b/source/_components/climate.maxcube.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "eQ-3 MAX! Cube binary sensors" +title: "eQ-3 MAX! Cube thermostat" description: "Instructions on how to integrate eQ-3 MAX! components with Home Assistant via eQ-3 MAX! Cube." date: 2017-02-04 22:00 sidebar: true diff --git a/source/_components/climate.mqtt.markdown b/source/_components/climate.mqtt.markdown new file mode 100644 index 00000000000..7d624b4d9a9 --- /dev/null +++ b/source/_components/climate.mqtt.markdown @@ -0,0 +1,89 @@ +--- +layout: page +title: "MQTT HVAC" +description: "Instructions how to integrate MQTT HVAC into Home Assistant." +date: 2017-07-31 19:59 +sidebar: true +comments: false +sharing: true +footer: true +logo: heat-control.png +ha_category: Climate +ha_release: 0.55 +ha_iot_class: "Local Polling" +--- + +The `mqtt` climate platform lets you control your MQTT enabled HVAC devices. + +The platform currently works in optimistic mode, which means it does not obtain states from MQTT topics, but it sends and remembers control commands. + +It uses a sensor under the hood to obtain the current temperature. + +```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 variables *except* for MQTT topics: + +- **name** (*Required*): Name of MQTT HVAC. +- **qos** (*Optional*): The maximum QoS level of the state topic. Default is `0` and will also be used to publishing messages. +- **retain** (*Optional*): If the published message should have the retain flag on or not. +- **send_if_off** (*Optional*): Set to `false` to suppress sending of all MQTT messages when the current mode is `Off`. Defaults to `true`. +- **initial** (*Optional*): Set the initial target temperature. Defaults to 21 degrees. +- **payload_on** (*Optional*): For MQTT topics that control an `on` / `off` value (e.g., `aux_command_topic`), set the value that should be sent for `on`. Defaults to 'ON'. +- **payload_off** (*Optional*): For MQTT topics that control an `on` / `off` value (e.g., `aux_command_topic`), set the value that should be sent for `off`. Defaults to 'OFF'. + +Configuration of the MQTT topics: + +- **current_temperature_topic** (*Optional*): The MQTT topic on which to listen for the current temperature +- **power_command_topic** (*Optional*): The MQTT topic to publish commands to change the power state. This is useful if your device has a separate power toggle in addition to mode. +- **mode_command_topic** (*Optional*): The MQTT topic to publish commands to change the HVAC operation mode. +- **mode_state_topic** (*Optional*): The MQTT topic to subscribe for changes of the HVAC operation mode. If this is not set, the operation mode works in optimistic mode (see below). +- **temperature_command_topic** (*Optional*): The MQTT topic to publish commands to change the target temperature. +- **temperature_state_topic** (*Optional*): The MQTT topic to subscribe for changes in the target temperature. If this is not set, the target temperature works in optimistic mode (see below). +- **fan_mode_command_topic** (*Optional*): The MQTT topic to publish commands to change the fan mode. +- **fan_mode_state_topic** (*Optional*): The MQTT topic to subscribe for changes of the HVAC fan mode. If this is not set, the fan mode works in optimistic mode (see below). +- **swing_mode_command_topic** (*Optional*): The MQTT topic to publish commands to change the swing mode. +- **swing_mode_state_topic** (*Optional*): The MQTT topic to subscribe for changes of the HVAC swing mode. If this is not set, the swing mode works in optimistic mode (see below). +- **away_mode_command_topic** (*Optional*): The MQTT topic to publish commands to change the away mode. +- **away_mode_state_topic** (*Optional*): The MQTT topic to subscribe for changes of the HVAC away mode. If this is not set, the away mode works in optimistic mode (see below). +- **hold_command_topic** (*Optional*): The MQTT topic to publish commands to change the hold mode. +- **hold_state_topic** (*Optional*): The MQTT topic to subscribe for changes of the HVAC hold mode. If this is not set, the hold mode works in optimistic mode (see below). +- **aux_command_topic** (*Optional*): The MQTT topic to publish commands to switch auxiliary heat. +- **aux_state_topic** (*Optional*): The MQTT topic to subscribe for changes of the auxiliary heat mode. If this is not set, the auxiliary heat mode works in optimistic mode (see below). + +#### Optimistic mode + +If a property works in *optimistic mode* (when the corresponding state topic is not set), home assistant will assume that any state changes published to the command topics did work and change the internal state of the entity immediately after publishing to the command topic. If it does not work in optimistic mode, the internal state of the entity is only updated when the requested update is confirmed by the device through the state topic. + +### {% linkable_title Example %} + +A full configuration example looks like the one below. + +```yaml +# Full example configuration.yaml entry +climate: + - platform: mqtt + name: Study + modes: + - off + - cool + - fan_only + swing_modes: + - on + - off + fan_modes: + - high + - medium + - low + power_command_topic: "study/ac/power/set" + mode_command_topic: "study/ac/mode/set" + temperature_command_topic: "study/ac/temperature/set" + fan_mode_command_topic: "study/ac/fan/set" + swing_mode_command_topic: "study/ac/swing/set" +``` diff --git a/source/_components/climate.mysensors.markdown b/source/_components/climate.mysensors.markdown index c629b0083fc..a61fae33f90 100644 --- a/source/_components/climate.mysensors.markdown +++ b/source/_components/climate.mysensors.markdown @@ -98,6 +98,8 @@ MyMessage msgHVACSetPointC(CHILD_ID_HVAC, V_HVAC_SETPOINT_COOL); MyMessage msgHVACSpeed(CHILD_ID_HVAC, V_HVAC_SPEED); MyMessage msgHVACFlowState(CHILD_ID_HVAC, V_HVAC_FLOW_STATE); +bool initialValueSent = false; + void presentation() { sendSketchInfo("Heatpump", "2.1"); present(CHILD_ID_HVAC, S_HVAC, "Thermostat"); @@ -108,6 +110,13 @@ void setup() { void loop() { // put your main code here, to run repeatedly: + if (!initialValueSent) { + send(msgHVACSetPointC.set(20)); + send(msgHVACSpeed.set("Auto")); + send(msgHVACFlowState.set("Off")); + + initialValueSent = true; + } } void receive(const MyMessage &message) { diff --git a/source/_components/climate.proliphix.markdown b/source/_components/climate.proliphix.markdown index d2c048762d3..74227c0a98b 100644 --- a/source/_components/climate.proliphix.markdown +++ b/source/_components/climate.proliphix.markdown @@ -36,6 +36,6 @@ Configuration variables: - **username** (*Required*): Username for the thermostat. - **password** (*Required*): Password for the thermostat. -The Proliphix NT Thermostat series are ethernet connected thermostats. They have a local HTTP interface that is based on get/set +The Proliphix NT Thermostat series are Ethernet connected thermostats. They have a local HTTP interface that is based on get/set of OID values. A complete collection of the API is available in this [API documentation](https://github.com/sdague/thermostat.rb/blob/master/docs/PDP_API_R1_11.pdf). diff --git a/source/_components/climate.sensibo.markdown b/source/_components/climate.sensibo.markdown index 71111a88477..9b9771bc42d 100644 --- a/source/_components/climate.sensibo.markdown +++ b/source/_components/climate.sensibo.markdown @@ -27,7 +27,7 @@ climate: Configuration variables: - **api_key** (*Required*): Your API key. -- **id** (*Optional*): A unit ID or a list of IDs. If none specified then all units acessible by the `api_key` will be used. +- **id** (*Optional*): A unit ID or a list of IDs. If none specified then all units accessible by the `api_key` will be used. To get your API key visit diff --git a/source/_components/climate.tesla.markdown b/source/_components/climate.tesla.markdown new file mode 100644 index 00000000000..1d5720f65a9 --- /dev/null +++ b/source/_components/climate.tesla.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Tesla HVAC" +description: "Instructions on how to integrate Tesla climate system (HVAC) into Home Assistant." +date: 2017-08-30 12:20 +sidebar: true +comments: false +sharing: true +footer: true +logo: tesla.png +ha_category: Climate +ha_iot_class: "Cloud push" +ha_release: 0.53 +--- + +The `Tesla` climate platform allows you to control your [Tesla](https://www.tesla.com/) climate from within Home Assistant. + +The climate platform will be automatically configured if Tesla component is configured. + +For more configuration information see the [Tesla component](/components/tesla/) documentation. diff --git a/source/_components/climate.toon.markdown b/source/_components/climate.toon.markdown new file mode 100644 index 00000000000..57d8708aa38 --- /dev/null +++ b/source/_components/climate.toon.markdown @@ -0,0 +1,27 @@ +--- +layout: page +title: "Toon Thermostat" +description: "Instructions how to integrate Toon thermostats within Home Assistant." +date: 2017-10-22 12:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Climate +ha_release: 0.56 +logo: toon.png +ha_iot_class: "Cloud Polling" +--- + +The `toon` climate platform allows you to interact with your Toon thermostat. For compatibility reasons, the states in Home Assistant are different from the states displayed on your Toon device and are mapped as follows: + + +| Home Assistant | Toon | +|:---------------|:--------| +| Performance | Comfort | +| Heat | Thuis | +| Eco | Weg | +| Cool | Slapen | + + +Please refer to the [hub component](/components/toon/) for setup instructions. diff --git a/source/_components/climate.wink.markdown b/source/_components/climate.wink.markdown index d7fac5462fc..3a41d2c81d5 100644 --- a/source/_components/climate.wink.markdown +++ b/source/_components/climate.wink.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Wink Thermostat" -description: "Instructions how to setup the Wink binary sensors within Home Assistant." +title: "Wink Climate" +description: "Instructions how to setup the Wink climate devices within Home Assistant." date: 2016-11-01 22:36 sidebar: true comments: false @@ -14,22 +14,23 @@ ha_iot_class: "Cloud Polling" --- -The Wink climate platform allows you to get data from your [Wink](http://www.wink.com/) thermostats. +The Wink climate platform allows you to get data from your [Wink](http://www.wink.com/) thermostats, Air Conditioners, and Water Heaters. The requirement is that you have setup [Wink](/components/wink/). ### {% linkable_title Supported climate devices %} -- Nest (No wink hub required) -- Ecobee (No wink hub required) -- Sensi (No wink hub required) +- Nest (No Wink hub required) +- Ecobee (No Wink hub required) +- Sensi (No Wink hub required) - Carrier (Unconfirmed) -- Honeywell (No wink hub required) +- Honeywell (No Wink hub required) - Generic Z-Wave - Quirky Aros window AC unit +- Rheem Econet water heaters (No Wink hub required)

-The above devices are confimed to work, but others may work as well. +The above devices are confirmed to work, but others may work as well.

diff --git a/source/_components/comfoconnect.markdown b/source/_components/comfoconnect.markdown new file mode 100644 index 00000000000..fcce2b619f0 --- /dev/null +++ b/source/_components/comfoconnect.markdown @@ -0,0 +1,55 @@ +--- +layout: page +title: "Zehnder ComfoAir Q Ventilation" +description: "Instructions how to integrate Zehnder ComfoAir Q350/450/600 ventilation systems into Home Assistant." +date: 2017-06-28 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: zehnder.png +ha_category: Hub +ha_release: "0.48" +--- + +The `comfoconnect` component lets you control Zehnder ComfoAir [Q350](http://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q350-st)/[450](http://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q450-st)/[600](http://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q600-st) +ventilation units from Home Assistant. You need a [ComfoConnect LAN C](http://www.zehnder.co.uk/products-and-systems/comfortable-indoor-ventilation/ms-comfoair-q/ideal-control#node-21233) +bridge to connect the unit to your local network. + +There is an official iPhone and Android app to configure and control your unit. This platform connects with the help of +the unofficial [pycomfoconnect](https://github.com/michaelarnauts/comfoconnect) library. + +The component has a fan platform to view and control the ventilation speed, and a sensors platform to read out the outdoor temperature and humidity, the indoor temperature and humidity, and the extract and supply air flow (in m³ per hour). + +To set it up, add the following information to your `configuration.yaml` file: + +```yaml +comfoconnect: + host: 192.168.1.213 +``` + +Configuration variables: + +- **host** (*Required*): The ip or hostname of the ComfoConnect LAN C bridge. +- **name** (*Optional*): The name of this device as you want to see it in Home Assistant. +- **token** (*Optional*): The token you want to use when registering with the device. This is a random 32 char hexadecimal string. The default value is `00000000000000000000000000000001`. +- **user_agent** (*Optional*): The name you want to supply when registering with the device. The default value is `Home Assistant`. +- **pin** (*Optional*): The pin code to use when registering. This is `0000` by default. You only need to change this if you have changed the factory default pin. + +To register the sensors, add the following to your `configuration.yaml` file: + +```yaml +sensor: + - platform: comfoconnect + resources: + - current_temperature + - current_humidity + - outside_temperature + - outside_humidity + - air_flow_supply + - air_flow_exhaust +``` + +

+Note that it's not possible to have multiple connection to the bridge at the same time. This component will keep the connection open, and if you open the app, it will ask you to disconnect Home Assistant. If you close the app again, Home Assistant will reconnect automatically. +

diff --git a/source/_components/config.markdown b/source/_components/config.markdown index 1de117ef841..514840e7f73 100644 --- a/source/_components/config.markdown +++ b/source/_components/config.markdown @@ -1,14 +1,14 @@ --- layout: page title: "Config" -description: "Instructions how to setup the configuration panel Home Assistant." +description: "Instructions how to setup the configuration panel for Home Assistant." date: 2017-02-24 20:00 sidebar: true comments: false sharing: true footer: true logo: home-assistant.png -ha_category: Other +ha_category: Front end ha_release: 0.39 --- @@ -21,16 +21,7 @@ To enable the configuration panel, add the following to your `configuration.yaml config: ``` -### {% linkable_title Group & Views %} - -The **Groups & Views** sections allows you to re-arrange your [groups](/components/group/). Also, you can edit the group's setting and switch between "view" and "group". - -

- -

- - -### {% linkable_title Server Management %} +### {% linkable_title General %} This section enables you to control Home Assistant from within Home Assistant. Check your configuration, reload the core, groups, and automation, and the Home Assistant process itself. With a single mouse click. @@ -38,4 +29,18 @@ This section enables you to control Home Assistant from within Home Assistant. C

+### {% linkable_title Customization %} +This section enables you to customize entities within Home Assistant. Use this to set friendly names, change icons, hide entities, and modify other attributes. + +### {% linkable_title Automation %} + +This section enables you to create and modify automations from within Home Assistant, without needing to write out the yaml code. + +### {% linkable_title Script %} + +Similar to the automation editor, this section enables you to create and modify scripts from within Home Assistant, without needing to write out the yaml code. + +### {% linkable_title Z-Wave %} + +This section enables you to control your Z-Wave network and devices from within Home Assistant. You can add and remove devices, as well as change device specific configuration variables. diff --git a/source/_components/conversation.markdown b/source/_components/conversation.markdown index 3b9bb80892f..55b9fbb19a7 100644 --- a/source/_components/conversation.markdown +++ b/source/_components/conversation.markdown @@ -12,14 +12,37 @@ ha_category: "Voice" --- -The conversation component can process sentences into commands for Home Assistant. It is currently limited to parsing commands in the format `turn `. +The `conversation` component can process sentences into commands for Home Assistant. It currently has built in functionality to recognize `turn `, but custom phrases can be added through configuration. To enable the conversation option in your installation, add the following to your `configuration.yaml` file: +```yaml +# Example base configuration.yaml entry +conversation: +``` + +To add custom phrases to be recognized: + +```yaml +# Example configuration.yaml entry with custom phrasesconversation +conversation: + boolean_test: + sentence: switch boolean # The phrase it will recognize + action: + service: input_boolean.toggle +``` + +The action keyword uses [script syntax](https://home-assistant.io/docs/scripts/). + +To use the `conversation` component with the [`shopping list` component](/components/shopping_list/) add an intent. + ```yaml # Example configuration.yaml entry conversation: + intents: + ShoppingListAddItem: + - Add {item} to my shopping list ``` When this component is active and you are using a supported browser voice commands will be activated in the frontend. Browse to [the demo](/demo/) using Chrome or Chromium to see it in action. diff --git a/source/_components/counter.markdown b/source/_components/counter.markdown new file mode 100644 index 00000000000..76a11fbb897 --- /dev/null +++ b/source/_components/counter.markdown @@ -0,0 +1,75 @@ +--- +layout: page +title: "Counter" +description: "Instructions how to integrate counters into Home Assistant." +date: 2017-08-26 06:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Automation +ha_release: 0.53 +--- + +The `counter` component allows one to count occurrences fired by automations. + +To add a counter to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +counter: + counter: + initial: 30 + step: 1 +``` + +Configuration variables: + +- **[alias]** (*Required*): Alias for the counter. Multiple entries are allowed. + - **name** (*Optional*): Friendly name of the counter. + - **initial** (*Optional*): Initial value when Home Assistant starts. Defaults to 0. + - **step** (*Optional*): Incremental/step value for the counter. Defaults to 1 (increments by 1). + - **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`. + +## {% linkable_title Services %} + +Available services: `increment`, `decrement`, and `reset`. + +#### {% linkable_title Service `counter.increment` %} + +Increments the counter with 1 or the given value for the steps. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name of the entity to take action, e.g., `counter.count0`. | + +#### {% linkable_title Service `counter.decrement` %} + +Decrements the counter with 1 or the given value for the steps. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name of the entity to take action, e.g., `counter.count0`. | + +#### {% linkable_title Service `counter.reset` %} + +With this service the counter is reset to its initial value. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name of the entity to take action, e.g., `counter.count0`. | + + +### {% linkable_title Use the service %} + +Select service developer tool icon **Services** from the **Developer Tools**. Choose **counter** from the list of **Domains**, select the **Service**, enter something like the sample below into the **Service Data** field, and hit **CALL SERVICE**. + +```json +{ + "entity_id": "counter.count0" +} +``` + diff --git a/source/_components/cover.abode.markdown b/source/_components/cover.abode.markdown new file mode 100644 index 00000000000..e67998bf0b7 --- /dev/null +++ b/source/_components/cover.abode.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Abode Cover" +description: "Instructions how to integrate Abode covers into Home Assistant." +date: 2017-08-26 13:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: abode.jpg +ha_release: 0.52 +ha_category: Cover +ha_iot_class: "Cloud Push" +--- + +The `abode` security control panel platform allows you to control your [Abode](https://goabode.com/) alarms. + +This component will automatically add `Secure Barriers` configured in your Abode account. + +The requirement is that you have setup your [Abode hub](/components/abode/). diff --git a/source/_components/cover.garadget.markdown b/source/_components/cover.garadget.markdown index 565aacccd10..1d34384fffa 100644 --- a/source/_components/cover.garadget.markdown +++ b/source/_components/cover.garadget.markdown @@ -67,10 +67,10 @@ sensor: value_template: {% raw %}'{{ states.cover.garage_door.state }}'{% endraw %} garage_door_time_in_state: friendly_name: 'Since' - value_template: {% raw %}'{{ states.cover.garage_door.attributes["time in state"] }}'{% endraw %} + value_template: {% raw %}'{{ states.cover.garage_door.attributes.time_in_state }}'{% endraw %} garage_door_wifi_signal_strength: friendly_name: 'WiFi strength' - value_template: {% raw %}'{{ states.cover.garage_door.attributes["wifi signal strength (dB)"] }}'{% endraw %} + value_template: {% raw %}'{{ states.cover.garage_door.attributes.wifi_signal_strength }}'{% endraw %} unit_of_measurement: 'dB' group: diff --git a/source/_components/cover.knx.markdown b/source/_components/cover.knx.markdown new file mode 100644 index 00000000000..cd620f15634 --- /dev/null +++ b/source/_components/cover.knx.markdown @@ -0,0 +1,49 @@ +--- +layout: page +title: "KNX Cover" +description: "Instructions on how to integrate KNX covers with Home Assistant." +date: 2017-06-18 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: knx.png +ha_category: Cover +ha_release: 0.48 +ha_iot_class: "Local Polling" +--- + + +The `knx` cover platform is used as in interface with KNX covers. + +The `knx` component must be configured correctly, see [KNX Component](/components/knx). + +To use your KNX covers in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +cover: + - platform: knx + name: "Kitchen.Shutter" + move_long_address: '3/0/0' + move_short_address: '3/0/1' + position_address: '3/0/3' + position_state_address: '3/0/2' + travelling_time_down: 51 + travelling_time_up: 61 +``` + +Configuration variables: + +- **name** (*Optional*): A name for this device used within Home Assistant. +- **move_long_address**: KNX group address for moving the cover full up or down. +- **move_short_address** (*Optional*): KNX group address for moving the cover short time up or down. +- **position_address** (*Optional*): KNX group address for moving the cover to the dedicated position. +- **position_state_address** (*Optional*): Separate KNX group address for requesting the current position of the cover. +- **angle_address** (*Optional*): KNX group address for moving the cover to the dedicated angle. +- **angle_state_address** (*Optional*): Separate KNX group address for requesting the current angle of cover. +- **travelling_time_down** (*Optional*): Time cover needs to travel down in seconds. Needed to calculate the intermediate positions of cover while traveling. Defaults to 25. +- **travelling_time_up** (*Optional*): Time cover needs to travel up in seconds. Needed to calculate the intermediate positions of cover while traveling. Defaults to 25. +- **invert_position** (*Optional*): Set this to true if your actuator report fully closed as 100%. +- **invert_angle** (*Optional*): Set this to true if your actuator reports tilt fully closed as 100%. + diff --git a/source/_components/cover.lutron_caseta.markdown b/source/_components/cover.lutron_caseta.markdown index 5a1f315011e..713c4544728 100644 --- a/source/_components/cover.lutron_caseta.markdown +++ b/source/_components/cover.lutron_caseta.markdown @@ -10,6 +10,13 @@ footer: true logo: lutron.png ha_category: Cover ha_iot_class: "Local Polling" +ha_release: 0.45 --- -To get your Lutron Caseta covers working with Home Assistant, follow the instructions for the general [Lutron Caseta component](/components/lutron_caseta/). +To get Lutron Caseta roller and honeycomb shades working with Home Assistant, first follow the instructions for the general [Lutron Caseta component](/components/lutron_caseta/). + +After setup, shades will appear in Home Assistant using an `entity_id` based on the name used in the Lutron mobile app. For example, a shade called 'Living Room Window' will appear in Home Assistant as `cover.living_room_window`. + +For more information on working with shades in Home Assistant, see the [Covers component](/components/cover/). + +Available services: `cover.open_cover`, `cover.close_cover` and `cover.set_cover_position`. Cover `position` ranges from `0` for fully closed to `100` for fully open. \ No newline at end of file diff --git a/source/_components/cover.markdown b/source/_components/cover.markdown index 5e656ad7f59..8024b67a3b7 100644 --- a/source/_components/cover.markdown +++ b/source/_components/cover.markdown @@ -11,11 +11,12 @@ footer: true Home Assistant can give you an interface to control covers such as rollershutters, blinds, and garage doors. -The display style of each entity can be modified in the [customize section](/getting-started/customizing-devices/). The following device classes are supported for covers: - -- **None**: Generic cover device -- **window**: Window controller -- **garage**: Garage door controller +The display style of each entity can be modified in the [customize section](/getting-started/customizing-devices/). Besides the basic ones like `friendly_name` or `hidden`, the following attributes are supported for covers: + +| Attribute | Default | Description | +| --------- | ------- | ----------- | +| `device_class` | | `none` Generic cover device
`window` Window controller
`garage` Garage door controller +| `assumed_state` | `false` | If set to `true`, cover buttons will always be enabled ## {% linkable_title Services %} diff --git a/source/_components/cover.mqtt.markdown b/source/_components/cover.mqtt.markdown index 426fd7f1a6b..e466514cadd 100755 --- a/source/_components/cover.mqtt.markdown +++ b/source/_components/cover.mqtt.markdown @@ -13,39 +13,44 @@ ha_iot_class: "depends" ha_release: 0.18 --- -The `mqtt` cover platform enables the possibility to control an MQTT cover. The device state will be updated only after receiving the a new -state from `state_topic`. If these messages are published with `RETAIN` flag, the MQTT device will receive an instant state update after subscription and will start with correct state. Otherwise, the initial state will be `unknown`. +The `mqtt` cover platform allows you to control an MQTT cover (such as blinds, a rollershutter, or a garage door). -There is a state attribute that stores the relative position of the device, where 0 means the device is `closed` and all other intermediate positions means the device is `open`. +The device state (`open` or `closed`) will be updated only after a new message is published on `state_topic` matching `state_open` or `state_closed`. If these messages are published with the `retain` flag set, the cover 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`. -When a state topic is not available, the cover will work in optimistic mode. In this mode, the cover will immediately change state after every command. Otherwise, the cover will wait for state confirmation from device (message from `state_topic`). +There is an attribute that stores the relative position of the device, where 0 means the device is `closed` and all other intermediate positions means the device is `open`. -Optimistic mode can be forced, even if `state_topic` is available. Try to enable it, if experiencing incorrect cover operation. +If a state topic is not defined, the cover will work in optimistic mode. In this mode, the cover will immediately change state (`open` or `closed`) after every command sent by Home Assistant. If a state topic is defined, the cover will wait for a message on `state_topic` matching `state_open` or `state_closed` before changing state in Home Assistant. + +Optimistic mode can be forced, even if a `state_topic` is defined. Try to enable it if experiencing incorrect cover operation. + +The `mqtt` cover platform optionally supports an `availability_topic` to receive online and offline messages (birth and LWT messages) from the MQTT cover 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 cover as "unavailable". If these messages are published with the `retain` flag set, the cover will receive an instant update after subscription and Home Assistant will display correct availability state of the cover when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the cover as "unavailable" when Home Assistant starts up. To use your MQTT cover in your installation, add the following to your `configuration.yaml` file: ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry cover: - platform: mqtt name: "MQTT Cover" - state_topic: "home-assistant/cover" command_topic: "home-assistant/cover/set" ``` Configuration variables: - **name** (*Optional*): The name of the sensor. Default is `MQTT Cover`. -- **state_topic** (*Optional*): The MQTT topic subscribed to receive sensor values. -- **command_topic** (*Required*): The MQTT topic to publish commands to control the rollershutter. +- **command_topic** (*Optional*): The MQTT topic to publish commands to control the cover. - **payload_open** (*Optional*): The payload that opens the cover. Default is `OPEN`. - **payload_close** (*Optional*): The payload that closes the cover. Default is `CLOSE`. -- **payload_stop** (*Optional*): The payload that stops the rollershutter. default is `STOP`. -- **state_open** (*Optional*): The payload that represents open state. Default is `open`. -- **state_closed** (*Optional*): The payload that represents closed state. Default is `closed`. +- **payload_stop** (*Optional*): The payload that stops the cover. default is `STOP`. +- **state_topic** (*Optional*): The MQTT topic subscribed to receive cover state messages. +- **state_open** (*Optional*): The payload that represents the open state. Default is `open`. +- **state_closed** (*Optional*): The payload that represents the closed state. Default is `closed`. +- **availability_topic** (*Optional*): The MQTT topic subscribed to to receive birth and LWT messages from the MQTT cover device. If `availability_topic` is not defined, the cover availability state will always be "available". If `availability_topic` is defined, the cover availability state will be "unavailable" by default. +- **payload_available** (*Optional*): The payload that represents the online state. Default is `online`. +- **payload_not_available** (*Optional*): The payload that represents the offline state. Default is `offline`. - **optimistic** (*Optional*): Flag that defines if switch works in optimistic mode. Default is `true` if no state topic defined, else `false`. -- **qos** (*Optional*): The maximum QoS level of the state topic. Default is `0`. Will also be used when publishing messages. -- **retain** (*Optional*): If the published message should have the retain flag on or not. Default is `false`. +- **qos** (*Optional*): The maximum QoS level to be used when receiving and publishing messages. Default is `0`. +- **retain** (*Optional*): Defines if published messages should have the retain flag set. Default is `false`. - **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. - **set_position_topic** (*Optional*): The MQTT topic to publish position commands to. - **set_position_template** (*Optional*): Defines a [template](/topics/templating/) to define the position to be sent to the `set_position_topic` topic. Incoming position value is available for use in the template `{{position}}`. If no template is defined, the numeric position (0-100) will be written directly to the topic. @@ -55,12 +60,12 @@ Configuration variables: - **tilt_max** (*Optional*): The maximum tilt value. Default is `100` - **tilt_closed_value** (*Optional*): The value that will be sent on a `close_cover_tilt` command. Default is `0` - **tilt_opened_value** (*Optional*): The value that will be sent on an `open_cover_tilt` command. Default is `100` -- **tilt_status_optimistic** (*Optional*): Flag that determines if tilt works in optimistic mode. Default is `true` if `tilt_status_topic` is not deinfed, else `false` +- **tilt_status_optimistic** (*Optional*): Flag that determines if tilt works in optimistic mode. Default is `true` if `tilt_status_topic` is not defined, else `false` - **tilt_invert_state** (*Optional*): Flag that determines if open/close are flipped; higher values toward closed and lower values toward open. Default is `False` ## {% linkable_title Examples %} -In this section you 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 platform. ### {% linkable_title Full configuration without tilt %} @@ -70,16 +75,19 @@ The example below shows a full configuration for a cover without tilt. # Example configuration.yml entry cover: - platform: mqtt - state_topic: "home-assistant/cover" - command_topic: "home-assistant/cover/set" name: "MQTT Cover" + command_topic: "home-assistant/cover/set" + state_topic: "home-assistant/cover/state" + availability_topic: "home-assistant/cover/availability" qos: 0 retain: true payload_open: "OPEN" payload_close: "CLOSE" payload_stop: "STOP" - state_open: "OPEN" - state_closed: "STATE" + state_open: "open" + state_closed: "closed" + payload_available: "online" + payload_not_available: "offline" optimistic: false value_template: '{% raw %}{{ value.x }}{% endraw %}' ``` @@ -92,27 +100,30 @@ The example below shows a full configuration for a cover. # Example configuration.yml entry cover: - platform: mqtt - state_topic: "home-assistant/cover" - command_topic: "home-assistant/cover/set" name: "MQTT Cover" + command_topic: "home-assistant/cover/set" + state_topic: "home-assistant/cover/state" + availability_topic: "home-assistant/cover/availability" qos: 0 retain: true payload_open: "OPEN" payload_close: "CLOSE" payload_stop: "STOP" - state_open: "OPEN" - state_closed: "STATE" + state_open: "open" + state_closed: "closed" + payload_available: "online" + payload_not_available: "offline" optimistic: false value_template: '{% raw %}{{ value.x }}{% endraw %}' tilt_command_topic: 'home-assistant/cover/tilt' - tilt_status_topic: 'home-assistant/cover/tilt-status' + tilt_status_topic: 'home-assistant/cover/tilt-state' tilt_min: 0 tilt_max: 180 tilt_closed_value: 70 tilt_opened_value: 180 ``` -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 cover manually: +To test, you can use the command line tool `mosquitto_pub` shipped with `mosquitto` or the `mosquitto-clients` package to send MQTT messages. This allows you to operate your cover manually: ```bash $ mosquitto_pub -h 127.0.0.1 -t home-assistant/cover/set -m "CLOSE" diff --git a/source/_components/cover.myq.markdown b/source/_components/cover.myq.markdown index 1896f2e42d6..405065d88ab 100644 --- a/source/_components/cover.myq.markdown +++ b/source/_components/cover.myq.markdown @@ -10,6 +10,7 @@ footer: true logo: myq.png ha_category: Cover ha_release: 0.39 +ha_iot_class: Cloud Polling --- The `myq` cover platform lets you control MyQ-Enabled garage doors through Home Assistant. Device names in Home Assistant are generated based on the names defined in your MyQ Device mobile app. diff --git a/source/_components/cover.rflink.markdown b/source/_components/cover.rflink.markdown new file mode 100644 index 00000000000..5bbe5e2f6ed --- /dev/null +++ b/source/_components/cover.rflink.markdown @@ -0,0 +1,100 @@ +--- +layout: page +title: "RFLink Cover" +description: "Instructions how to integrate RFLink Somfy RTS Cover into Home Assistant." +date: 2017-08-08 +sidebar: true +comments: false +sharing: true +footer: true +logo: rflink.png +ha_category: Cover +ha_release: 0.55 +--- + + +The `rflink` cover platform 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). + +First, you have to set up your [rflink hub](/components/rflink/). + +After configuring the RFLink hub covers will be automatically discovered and added. Except the Somfy RTS devices. + +### {% linkable_title Setting up a Somfy RTS device %} + +You have to add the Somfy RTS manually with the supplied RFlinkLoader (Windows only). + +Press the Learn button on the original Somfy remote enter the following code within 3 seconds. Your blinds will go up and down shortly: + +```` +10;RTS;02FFFF;0412;3;PAIR; +```` + +Your blinds will go up and down again. This means your Rflink is now paired with your RTS motor. +To check this enter the following code again and see if there is a record. + +```` +10;RTSSHOW; +```` +```` +RTS Record: 0 Address: FFFFFF RC: FFFF +RTS Record: 1 Address: FFFFFF RC: FFFF +RTS Record: 2 Address: FFFFFF RC: FFFF +RTS Record: 3 Address: 02FFFF RC: 0018 +RTS Record: 4 Address: FFFFFF RC: FFFF +RTS Record: 5 Address: FFFFFF RC: FFFF +RTS Record: 6 Address: FFFFFF RC: FFFF +RTS Record: 7 Address: FFFFFF RC: FFFF +RTS Record: 8 Address: FFFFFF RC: FFFF +RTS Record: 9 Address: FFFFFF RC: FFFF +RTS Record: 10 Address: FFFFFF RC: FFFF +RTS Record: 11 Address: FFFFFF RC: FFFF +RTS Record: 12 Address: FFFFFF RC: FFFF +RTS Record: 13 Address: FFFFFF RC: FFFF +RTS Record: 14 Address: FFFFFF RC: FFFF +RTS Record: 15 Address: FFFFFF RC: FFFF +```` + +After configuring the RFLink Somfy RTS you have to add the cover to the `configuration.yaml` file like any other RFlink device. + +RFLink cover ID's are composed of: protocol, id, and gateway. For example: `RTS_0100F2_0`. + +Once the ID of a cover is known, it can be used to configure the cover in Home Assistant, for example, to add it to a different group, hide it or set a nice name. + +Assigning a name to a cover: + +```yaml +# Example configuration.yaml entry +cover: + - platform: rflink + devices: + RTS_0100F2_0: + name: SunShade + bofumotor_455201_0f: + name: Sovrumsgardin +``` + +Configuration variables: + +- **automatic_add** (*Optional*): Automatically add new/unconfigured devices to Home Assistant if detected (default: True). +- **devices** (*Optional*): A list of devices with their name to use in the frontend. +- **device_defaults**: (*Optional*) + - **fire_event** (*Optional*): Set default `fire_event` for Rflink switch devices (see below). + - **signal_repetitions** (*Optional*): Set default `signal_repetitions` for Rflink switch devices (see below). + +Device configuration variables: + +- **name** (*Optional*): Name for the device, defaults to Rflink ID. +- **aliases** (*Optional*): Alternative Rflink ID's this device is known by. +- **fire_event** (*Optional*): Fire an `button_pressed` event if this device is turned on or off (default: False). +- **signal_repetitions** (*Optional*): Repeat every Rflink command this number of times (default: 1). +- **fire_event_** (*Optional*): Set default `fire_event` for RFLink switch devices (see below). +- **signal_repetitions** (*Optional*): Set default `signal_repetitions` for RFLink switch devices (see below). +- **group** (*Optional*): Allow light to respond to group commands (ALLON/ALLOFF). (default: yes) +- **group_aliases** (*Optional*): `aliases` which only respond to group commands. +- **no_group_aliases** (*Optional*): `aliases` which do not respond to group commands. + + +### {% linkable_title Device support %} + +See [device support](/components/rflink/#device-support) + diff --git a/source/_components/cover.rpi_gpio.markdown b/source/_components/cover.rpi_gpio.markdown index 7b0fd775aca..581c6f36989 100644 --- a/source/_components/cover.rpi_gpio.markdown +++ b/source/_components/cover.rpi_gpio.markdown @@ -36,7 +36,9 @@ cover: Configuration variables: - **relay_time** (*Optional*): The time that the relay will be on for in seconds. Default is 0.2 seconds. +- **invert_relay** (*Optional*): Invert the relay pin output so that it is active-high. Default is False (active-low). - **state_pull_mode** (*Optional*): The direction the State pin is pulling. It can be UP or DOWN. Default is UP. +- **invert_state** (*Optional*): Invert the value of the State pin so that 0 means closed. Default is False. - **covers** array (*Required*): List of your doors. - **relay_pin** (*Required*): The pin of your Raspberry Pi where the relay is connected. - **state_pin** (*Required*): The pin of your Raspberry Pi to retrieve the state. @@ -49,7 +51,9 @@ Full example: cover: - platform: rpi_gpio relay_time: 0.2 + invert_relay: False state_pull_mode: 'UP' + invert_state: True covers: - relay_pin: 10 state_pin: 11 diff --git a/source/_components/cover.template.markdown b/source/_components/cover.template.markdown new file mode 100644 index 00000000000..6234334c082 --- /dev/null +++ b/source/_components/cover.template.markdown @@ -0,0 +1,319 @@ +--- +layout: page +title: "Template Cover" +description: "Instructions how to integrate Template Covers into Home Assistant." +date: 2017-06-19 20:32 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Cover +ha_release: 0.48 +ha_iot_class: "Local Push" +logo: home-assistant.png +--- + +The `template` platform can create covers that combine components and provides +the ability to run scripts or invoke services for each of the open, close, +stop, position, and tilt commands of a cover. + +To enable Template Covers in your installation, add the following to your +`configuration.yaml` file: + +{% raw %} +```yaml +# Example configuration.yaml entry +cover: + - platform: template + covers: + garage_door: + friendly_name: "Garage Door" + value_template: "{{ states('sensor.garage_door')|float > 0 }}" + open_cover: + service: script.open_garage_door + close_cover: + service: script.close_garage_door + stop_cover: + service: script.stop_garage_door +``` +{% endraw %} + +{% configuration %} + covers: + description: List of your covers. + required: true + type: map + keys: + friendly_name: + description: Name to use in the frontend. + required: false + type: string + entity_id: + description: Add a list of entity IDs so the switch only reacts to state changes of these entities. This will reduce the number of times the cover will try to update its state. + required: false + type: [string, list] + value_template: + description: Defines a template to get the state of the cover. Valid values are `open`/`true` or `closed`/`false`. [`value_template`](#value_template) and [`position_template`](#position_template) cannot be specified concurrently. + required: exclusive + type: template + position_template: + description: Defines a template to get the state of the cover. Legal values are numbers between `0` (closed) and `100` (open). [`value_template`](#value_template) and [`position_template`](#position_template) cannot be specified concurrently. + required: exclusive + type: template + icon_template: + description: Defines a template to specify which icon to use. + required: false + type: template + open_cover: + description: Defines an action to run when the cover is opened. If [`open_cover`](#open_cover) is specified, [`close_cover`](#close_cover) must also be specified. At least one of [`open_cover`](#open_cover) and [`set_cover_position`](#set_cover_position) must be specified. + required: inclusive + type: action + close_cover: + description: Defines an action to run when the cover is closed. + required: inclusive + type: action + stop_cover: + description: Defines an action to run when the cover is stopped. + required: false + type: action + set_cover_position: + description: Defines an action to run when the cover is set to a specific value (between `0` and `100`). + required: false + type: action + set_cover_tilt_position: + description: Defines an action to run when the cover tilt is set to a specific value (between `0` and `100`). + required: false + type: action + optimistic: + description: Force cover position to use [optimistic mode](#optimistic-mode). + required: false + type: bool + default: false + tilt_optimistic: + description: Force cover tilt position to use [optimistic mode](#optimistic-mode). + required: false + type: bool + default: false + tilt_template: + description: Defines a template to get the tilt state of the cover. Legal values are numbers between `0` (closed) and `100` (open). + required: false + type: template +{% endconfiguration %} + +## {% linkable_title Considerations %} + +If you are using the state of a platform that takes extra time to load, the +Template Cover may get an `unknown` state during startup. This results +in error messages in your log file until that platform has completed loading. +If you use `is_state()` function in your template, you can avoid this situation. +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 Optimistic Mode %} + +In optimistic mode, the cover position state is maintained internally. This +mode is automatically enabled if neither [`value_template`](#value_template) or +[`position_template`](#position_template) are specified. Note that this is +unlikely to be very reliable without some feedback mechanism, since there is +otherwise no way to know if the cover is moving properly. The cover can be +forced into optimistic mode by using the [`optimistic`](#optimistic) +attribute. There is an equivalent mode for `tilt_position` that is enabled +when [`tilt_template`](#tilt_template) is not specified or when the +[`tilt_optimistic`](#tilt_optimistic) attribute is used. + +## {% linkable_title Examples %} + +In this section you will find some real life examples of how to use this cover. + +### {% linkable_title Garage Door %} + +This example converts a garage door with a controllable switch and position +sensor into a cover. + +{% raw %} +```yaml +cover: + - platform: template + covers: + garage_door: + friendly_name: "Garage Door" + position_template: "{{ states('sensor.garage_door') }}" + open_cover: + service: switch.turn_on + data: + entity_id: switch.garage_door + close_cover: + service: switch.turn_off + data: + entity_id: switch.garage_door + stop_cover: + service: switch.turn_on + data: + entity_id: switch.garage_door + icon_template: >- + {% if states('sensor.garage_door')|float > 0 %} + mdi:garage-open + {% else %} + mdi:garage + {% endif %} +``` +{% endraw %} + +### {% linkable_title Multiple Covers %} + +This example allows you to control two or more covers at once. + +{% raw %} +```yaml +homeassistant: + customize: + cover_group: + assume_state: true + +cover: + - platform: template + covers: + cover_group: + friendly_name: "Cover Group" + open_cover: + service: script.cover_group + data: + modus: 'open' + close_cover: + service: script.cover_group + data: + modus: 'close' + stop_cover: + service: script.cover_group + data: + modus: 'stop' + set_cover_position: + service: script.cover_group_position + data_template: + position: "{{position}}" + value_template: "{{is_state('sensor.cover_group', 'open')}}" + icon_template: >- + {% if is_state('sensor.cover_group', 'open') %} + mdi:window-open + {% else %} + mdi:window-closed + {% endif %} + entity_id: + - cover.bedroom + - cover.livingroom + +sensor: + - platform: template + sensors: + cover_group: + value_template: >- + {% if is_state('cover.bedroom', 'open') %} + open + {% elif is_state('cover.livingroom', 'open') %} + open + {% else %} + closed + {% endif %} + entity_id: + - cover.bedroom + - cover.livingroom + +script: + cover_group: + sequence: + - service_template: "cover.{{modus}}_cover" + data: + entity_id: + - cover.bedroom + - cover.livingroom + cover_group_position: + sequence: + - service: cover.set_cover_position + data_template: + entity_id: + - cover.bedroom + - cover.livingroom + position: "{{position}}" + +automation: + - alias: "Close covers at night" + trigger: + - platform: sun + event: sunset + offset: '+00:30:00' + action: + - service: cover.set_cover_position + data: + entity_id: cover.cover_group + position: 25 +``` +{% endraw %} + +### {% linkable_title Change The Icon %} + +This example shows how to change the icon based on the cover state. + +{% raw %} +```yaml +cover: + - platform: template + covers: + cover_group: + friendly_name: "Cover Group" + open_cover: + service: script.cover_group + data: + modus: 'open' + close_cover: + service: script.cover_group + data: + modus: 'close' + stop_cover: + service: script.cover_group + data: + modus: 'stop' + value_template: "{{is_state('sensor.cover_group', 'open')}}" + icon_template: >- + {% if is_state('sensor.cover_group', 'open') %} + mdi:window-open + {% else %} + mdi:window-closed + {% endif %} +``` +{% endraw %} + +### {% linkable_title Change The Entity Picture %} + +This example shows how to change the entity picture based on the cover state. + +{% raw %} +```yaml +cover: + - platform: template + covers: + cover_group: + friendly_name: "Cover Group" + open_cover: + service: script.cover_group + data: + modus: 'open' + close_cover: + service: script.cover_group + data: + modus: 'close' + stop_cover: + service: script.cover_group + data: + modus: 'stop' + value_template: "{{is_state('sensor.cover_group', 'open')}}" + icon_template: >- + {% if is_state('sensor.cover_group', 'open') %} + /local/cover-open.png + {% else %} + /local/cover-closed.png + {% endif %} +``` +{% endraw %} diff --git a/source/_components/cover.wink.markdown b/source/_components/cover.wink.markdown index 10cbe4f98ee..758f01b8441 100644 --- a/source/_components/cover.wink.markdown +++ b/source/_components/cover.wink.markdown @@ -31,6 +31,6 @@ The requirement is that you have setup [Wink](/components/wink/). - Chamberlain (Limited functionality) (No Wink hub required)

-The above devices are confimed to work, but others may work as well. +The above devices are confirmed to work, but others may work as well.

diff --git a/source/_components/cover.xiaomi_aqara.markdown b/source/_components/cover.xiaomi_aqara.markdown new file mode 100644 index 00000000000..d2bbdf5fa9d --- /dev/null +++ b/source/_components/cover.xiaomi_aqara.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Xiaomi Cover" +description: "Instructions how to setup the Xiaomi cover within Home Assistant." +date: 2017-07-21 16:34 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: Cover +ha_release: "0.50" +ha_iot_class: "Local Push" +--- + + +The `xiaomi aqara` cover platform allows you to get data from your [Xiaomi](http://www.mi.com/en/) covers. + +The requirement is that you have setup [Xiaomi aqara](/components/xiaomi_aqara/). + diff --git a/source/_components/demo.markdown b/source/_components/demo.markdown index 5210b128839..b399c9485cd 100644 --- a/source/_components/demo.markdown +++ b/source/_components/demo.markdown @@ -31,6 +31,7 @@ Available demo platforms: - [Switch](/components/switch/) (`switch`) - [Text-to-speech](/components/tts/) (`tts`) - [Weather](/components/weather/) (`weather`) +- [Mailbox](/components/mailbox/) (`mailbox`) To integrate a demo platform in Home Assistant, add the following section to your `configuration.yaml` file: diff --git a/source/_components/device_tracker.automatic.markdown b/source/_components/device_tracker.automatic.markdown index 67569e4c62a..dff0b45fec9 100644 --- a/source/_components/device_tracker.automatic.markdown +++ b/source/_components/device_tracker.automatic.markdown @@ -16,9 +16,9 @@ ha_iot_class: "Cloud Push" The `automatic` platform offers presence detection by retrieving your car's information from the [Automatic](http://automatic.com/) cloud service. -To use Automatic with Home Assistant, first you must [create a free development account](https://developer.automatic.com/). Automatic will generate a Client ID and Secret for you to use in your Home Assistant configuration. You will also need to update your Event Delivery preferences to ensure Home Assistant can receive updates. On the developer page, under App Settings / Event Delivery, select "Websocket" for Event Delivery Preference. +To use Automatic with Home Assistant, first you must [create a free development account](https://developer.automatic.com/). Automatic will generate a Client ID and Secret for you to use in your Home Assistant configuration. You will need to update your Event Delivery preferences to ensure Home Assistant can receive updates. On the developer page, under App Settings / Event Delivery, select "Websocket" for Event Delivery Preference. Next, specify the OAuth Redirect URL in the developer page. This should be configured to `/api/automatic/callback`. (Example: `http://hassio.local:8123/api/automatic/callback`) Note that this URL only needs to be accessible from the browser you use to perform the authentication. -Home Assistant will also take advantage of `scope:current_location` if available. This will allow Home Assistant to receive periodic location updates during a trip. In order to use this functionality, you must request the scope for your application from Automatic. Once `scope:current_location` is available, Home Assistant will automatically make use of it after the next restart. +Home Assistant can also take advantage of `scope:current_location` if available. This will allow Home Assistant to receive periodic location updates during a trip. In order to use this functionality, you must request the scope for your application from Automatic. Once `scope:current_location` is available, change `current_location` to `true` in your configuration.yaml. Once your developer account is created, add the following to your `configuration.yaml` file: @@ -28,8 +28,6 @@ device_tracker: - platform: automatic client_id: 1234567 secret: 0987654321 - username: your@email.com - password: your_password devices: - 2007 Honda Element - 2004 Subaru Impreza @@ -39,8 +37,7 @@ Configuration variables: - **client_id** (*Required*): The OAuth client id (get from https://developer.automatic.com/). - **secret** (*Required*): The OAuth client secret (get from https://developer.automatic.com/). -- **username** (*Required*): The username associated with your ODB reader. -- **password** (*Required*): The password for your given ODB reader account. +- **current_location** (*Optional*): Set to `true` if you have requested `scope:current_location` for your account. Home Assistant will then be able to receive periodic location updates during trips. - **devices** (*Optional*): The list of vehicle display names you wish to track. If not provided, all vehicles will be tracked. Home Assistant will also fire events when an update is received from Automatic. These can be used to trigger automations, as shown in the example below. A list of available event types can be found in the [Automatic Real-Time Events documentation](https://developer.automatic.com/api-reference/#real-time-events). @@ -54,6 +51,8 @@ automation: event_type: automatic_update event_data: type: "ignition:on" + vehicle: + id: "C_1234567890abcdefc" action: - service: light.turn_off ``` diff --git a/source/_components/device_tracker.bluetooth_le_tracker.markdown b/source/_components/device_tracker.bluetooth_le_tracker.markdown index ccd8bbddaf3..e0da81a826a 100644 --- a/source/_components/device_tracker.bluetooth_le_tracker.markdown +++ b/source/_components/device_tracker.bluetooth_le_tracker.markdown @@ -17,7 +17,7 @@ ha_release: 0.27 We have received numerous reports that this integration will have a big impact on the performance of the server.

-This tracker discovers new devices on boot and in regular intervals and tracks bluetooth low-energy devices periodically based on interval_seconds value. It is not required to pair the devices with each other. +This tracker discovers new devices on boot and in regular intervals and tracks Bluetooth low-energy devices periodically based on interval_seconds value. It is not required to pair the devices with each other. Devices discovered are stored with 'BLE_' as the prefix for device mac addresses in `known_devices.yaml`. @@ -42,12 +42,12 @@ device_tracker: Configuration variables: -- **device_id** (*Optional*): The device ID for the bluetooth device to be used for tracking. Defaults to `hci0`. +- **device_id** (*Optional*): The device ID for the Bluetooth device to be used for tracking. Defaults to `hci0`. As some BT LE devices change their MAC address regularly, a new device is only discovered when it has been seen 5 times. Some BTLE devices (e.g. fitness trackers) are only visible to the devices that they are paired with. In this case, the BTLE tracker won't see this device. -For running Home Assistant as non root user we can give python3 the missing capabilities to access the bluetooth stack. Quite like setting the setuid bit (see [Stack Exchange](http://unix.stackexchange.com/questions/96106/bluetooth-le-scan-as-non-root) for more information). +For running Home Assistant as non root user we can give python3 the missing capabilities to access the Bluetooth stack. Quite like setting the setuid bit (see [Stack Exchange](http://unix.stackexchange.com/questions/96106/bluetooth-le-scan-as-non-root) for more information). ```bash $ sudo apt-get install libcap2-bin diff --git a/source/_components/device_tracker.bluetooth_tracker.markdown b/source/_components/device_tracker.bluetooth_tracker.markdown index c29f4c92b35..0a2a2d06323 100644 --- a/source/_components/device_tracker.bluetooth_tracker.markdown +++ b/source/_components/device_tracker.bluetooth_tracker.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Bluetooth Tracker" -description: "Instructions for integrating bluetooth tracking within Home Assistant." +description: "Instructions for integrating Bluetooth tracking within Home Assistant." date: 2016-04-10 17:24 sidebar: true comments: false @@ -13,7 +13,11 @@ ha_iot_class: "Local Polling" ha_release: 0.18 --- -This tracker discovers new devices on boot and tracks bluetooth devices periodically based on interval_seconds value. It is not required to pair the devices with each other! Devices discovered are stored with 'bt_' as the prefix for device mac addresses in `known_devices.yaml`. +This tracker discovers new devices on boot and tracks Bluetooth devices periodically based on `interval_seconds` value. It is not required to pair the devices with each other! Devices discovered are stored with 'bt_' as the prefix for device MAC addresses in `known_devices.yaml`. + +

+[Hass.io](/hassio/) only supports Bluetooth on Raspberry Pi 3 via the Bluetooth BCM43xx (/addons/bluetooth_bcm43xx/) addon. [Hass.io](/hassio/) doesn't support external Bluetooth dongles. +

To use the Bluetooth tracker in your installation, add the following to your `configuration.yaml` file: @@ -23,6 +27,6 @@ device_tracker: - platform: bluetooth_tracker ``` -In some cases it can be that your device is not discovered. In that case let your phone scan for BT 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`. +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`. For additional configuration variables check the [Device tracker page](/components/device_tracker/). diff --git a/source/_components/device_tracker.geofency.markdown b/source/_components/device_tracker.geofency.markdown new file mode 100644 index 00000000000..320b59d4883 --- /dev/null +++ b/source/_components/device_tracker.geofency.markdown @@ -0,0 +1,46 @@ +--- +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.53 +--- + +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. + +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 variables: + +- **mobile_beacons** (*Optional*): 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*. + +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. + +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`. + +When you enter a geofence or stationary beacon, your location name in Home Assistant will be set to the name of the geofence or beacon location in Geofency. When you exit a geofence or stationary beacon, your location name in Home Assistant will be set to 'not home'. For mobile beacons, the location name will be 'not_home' whenever the beacon is entered or exited outside of a [zone](https://home-assistant.io/components/zone/), otherwise, it will be set to the name of the zone. + +To make Geofency work better with the [proximity](https://home-assistant.io/components/proximity/) component, you should enable the 'Send Current Location' feature in the Webhook configuration screen. This ensures that the _current_ GPS coordinates are included in exit events instead of the coordinates of the (center of) the zone that was exited. \ No newline at end of file diff --git a/source/_components/device_tracker.gpslogger.markdown b/source/_components/device_tracker.gpslogger.markdown index d0f92db962b..6b6a439cdee 100644 --- a/source/_components/device_tracker.gpslogger.markdown +++ b/source/_components/device_tracker.gpslogger.markdown @@ -11,7 +11,7 @@ ha_category: Presence Detection ha_release: 0.34 --- -This 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. +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. To integrate GPSLogger in Home Assistant, add the following section to your `configuration.yaml` file: @@ -23,34 +23,52 @@ device_tracker: ## {% linkable_title Setup on your smartphone %} -- [GPSLogger for Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) +Install [GPSLogger for Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) on your device. -To configure GPSLogger, you must set up the app to send a `GET` request to your Home Assistant server at -```yaml -http:///api/gpslogger?latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC&battery=%BATT&speed=%SPD&direction=%DIR&altitude=%ALT&provider=%PROV&activity=%ACT +After the launch, go to **General Options**. Enable **Start on bootup** and **Start on app launch**. + +

+ + GPSLogger Settings +

+ +Go to **Logging details** and disable **Log to GPX**. **Log to KML**, and **Log to NMEA**. Enable **Log to custom URL**. + +

+ + Logging Details +

+ +Right after enabling, the app will take you to the **Log to custom URL** settings. + +

+ + Log to custom URL details +

+ +The relevant endpoint is: `/api/gpslogger` + +```text +http://[IP address Home Assistant]:[Port]/api/gpslogger? + latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC + &battery=%BATT&speed=%SPD&direction=%DIR + &altitude=%ALT&provider=%PROV&activity=%ACT ``` -. 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). Configure that options under "General Options": -- Start on boot: yes -- Start on app launch: yes +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. -Set the URL under "General Options -> Logging details": +- It's HIGHLY recommended to use SSL/TLS. +- Use the domain that Home Assistant is available on the internet or the public IP address. Can be a local IP address if you are using a VPN setup. +- Only remove `[Port]` if your Home Assistant instance is using port 80. Otherwise set it to 8123. +- Click on **Parameters** in the app and you will see all available parameters for the URL. For Home Assistant only the above URL will work. +- Make sure to include your [API password](/components/http/) if you have configured a password. Add `&api_password=[Your pasword]` to the end of the URL. +- You can change the name of your device name by replacing `&device=%SER` with `&device=[Devicename]`. -- Log to GPX: no -- Log to KML: no -- Log to custom URL: yes and set -```yaml -http:///api/gpslogger?latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC&battery=%BATT&speed=%SPD&direction=%DIR&altitude=%ALT&provider=%PROV&activity=%ACT -``` -(be sure you include API password (`&api_password=`) if needed, or you can also use HTTP Basic authentication `http://:@/api/gpslogger...`) -- Log to OpenGTS Server: no -- Log to Plain Text: no -- Log to NMEA: no +If your battery drains fast then you can tune the performence of GPSLogger under **Performance** -> **Location providers** -You should also tune GPSLogger performance to save your battery under "General Options -> Logging details -> Performance -> Location providers": +

+ + Performance +

-- GPS: no -- Network: no -- Passive: yes - -A request can be forced from the app to test if everything is working fine. A succesfull request will update `known_devices.yaml` with device serial number. +A request can be forced from the app to test if everything is working fine. A succesful request will update the `known_devices.yaml` file with the device's serial number. diff --git a/source/_components/device_tracker.huawei_router.markdown b/source/_components/device_tracker.huawei_router.markdown new file mode 100644 index 00000000000..42c7b22a4e4 --- /dev/null +++ b/source/_components/device_tracker.huawei_router.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "Huawei Router" +description: "Instructions how to integrate Huawei Routers into Home Assistant." +date: 2017-07-16 01:40 +sidebar: true +comments: false +sharing: true +footer: true +logo: huawei.png +ha_category: Presence Detection +ha_release: 0.51 +--- + +This component offers presence detection by looking at connected devices to a [Huawei router](http://m.huawei.com/enmobile/enterprise/products/network/access/pon-one/hw-371813.htm). +Currently, this was only tested with the Huawei HG8247H (used by Vodafone Portugal). + +To use a Huawei router in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: huawei_router + host: 192.168.1.1 + username: user + password: pass +``` + +Configuration variables: + +- **host** (*Required*): The IP address of your router, e.g. 192.168.1.1. +- **username** (*Required*): The username to login into the router (the same used trough the router's web interface). +- **password** (*Required*): The password for the specified username. + + +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.keenetic_ndms2.markdown b/source/_components/device_tracker.keenetic_ndms2.markdown new file mode 100644 index 00000000000..3dbd197b771 --- /dev/null +++ b/source/_components/device_tracker.keenetic_ndms2.markdown @@ -0,0 +1,37 @@ +--- +layout: page +title: "Keenetic NDMS2 Routers" +description: "Instructions how to integrate Keenetic NDMS2 Routers into Home Assistant." +date: 2017-09-15 15:40 +sidebar: true +comments: false +sharing: true +footer: true +logo: keenetic.png +ha_category: Presence Detection +ha_release: 0.54 +--- + +This component offers presence detection by examining devices connected to a [Keenetic](https://keenetic.net/) +Router running NDMS2 firmware. + +To use a Keenetic router in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: keenetic_ndms2 + host: !secret router_ip + username: !secret router_username + password: !secret router_password +``` + +Configuration variables: + +- **host** (*Required*): The IP address of your router, e.g. 192.168.1.1. +- **username** (*Required*): The username to login into the router (user should have read access to web interface of the router). +- **password** (*Required*): The password for the specified username. +- **interface** (*Optional*): Ihe internal name of the interface to get devices connected to. Default is 'Home'. For expert users only. + + +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.linksys_smart.markdown b/source/_components/device_tracker.linksys_smart.markdown new file mode 100644 index 00000000000..0e1827c6806 --- /dev/null +++ b/source/_components/device_tracker.linksys_smart.markdown @@ -0,0 +1,39 @@ +--- +layout: page +title: "Linksys Smart Wifi Router" +description: "Instructions how to integrate Linksys Smart Wifi Router into Home Assistant." +date: 2017-06-22 01:40 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Presence Detection +logo: linksys.png +ha_release: 0.48 +--- + +The `linksys_smart` platform offers presence detection by looking at connected devices to a Linksys Smart Wifi based router. + +Tested routers: + LINKSYS WRT3200ACM MU-MIMO Gigabit Wi-Fi Wireless Router + LINKSYS WRT1900ACS Dual-band Wi-Fi Router + + +

+For this platform to work correctly, it is necessary to disable the "Access via wireless" feature in the Local Management Access section of the router administration page. If "Access via wireless" is not disabled, a connectivity conflict arises because the Home Assistant integration is trying to pass userid and password, but the router is only expecting a password. +

+ +To use a Linksys Smart Wifi Router in your Home Assistant installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: linksys_smart + host: 192.168.1.1 +``` + +Configuration variables: + +- **host** (*Required*): The hostname or IP address of your router, eg. `192.168.1.1`. + +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.locative.markdown b/source/_components/device_tracker.locative.markdown index 7409c6960b2..2a185c924e4 100644 --- a/source/_components/device_tracker.locative.markdown +++ b/source/_components/device_tracker.locative.markdown @@ -11,6 +11,10 @@ logo: locative.png ha_category: Presence Detection --- +

+Locative is no longer under active development. See https://blog.locative.io/bye-everyone-df01871fe949 +

+ This platform allows you to detect presence using [Locative](https://my.locative.io/). Locative is an open source app for [iOS](https://github.com/LocativeHQ/ios-app) and [Android](https://github.com/LocativeHQ/Locative-Android) that allows users to set up a `GET` or `POST` request when a geofence is entered or exited. This can be configured with Home Assistant to update your location. To integrate Locative in Home Assistant, add the following section to your `configuration.yaml` file: diff --git a/source/_components/device_tracker.markdown b/source/_components/device_tracker.markdown index 45d58877d7a..105dec1e7f3 100644 --- a/source/_components/device_tracker.markdown +++ b/source/_components/device_tracker.markdown @@ -68,11 +68,11 @@ devicename: | Parameter | Default | Description | |----------------|-------------------------------|---------------------------------------------------------------------------------------------------------| -| `name` | Host name or "Unnamed Device" | The friendly name of the device | -| `mac` | None | The MAC address of the device. Add this if you are using a network device tracker like Nmap or SNMP | +| `name` | Host name or "Unnamed Device" | The friendly name of the device. | +| `mac` | None | The MAC address of the device. Add this if you are using a network device tracker like Nmap or SNMP. | | `picture` | None | A picture that you can use to easily identify the person or device. You can also save the image file in a folder "www" in the same location (can be obtained from developer tools) where you have your configuration.yaml file and just use `picture: /local/favicon-192x192.png`. | | `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 | -| `consider_home` | [uses platform setting] | Allows you to override the global `consider_home` setting from the platform configuration on a per device level | +| `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. | +| `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. | diff --git a/source/_components/device_tracker.mikrotik.markdown b/source/_components/device_tracker.mikrotik.markdown index efb52eb46c6..e3e49c48469 100644 --- a/source/_components/device_tracker.mikrotik.markdown +++ b/source/_components/device_tracker.mikrotik.markdown @@ -15,6 +15,21 @@ ha_release: 0.44 The `mikrotik` platform offers presence detection by looking at connected devices to a [Mikrotik Routerboard](http://routerboard.com) based router. +You need to enable the RouterOS API to use this platform. + +Terminal: + +```bash +/ip service +set api disabled=no port=8728 +``` + +Web Frontend: + +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: ```yaml @@ -31,6 +46,6 @@ Configuration variables: - **host** (*Required*): The IP address of your router. - **username** (*Required*: The username of an user with administrative privileges. - **password** (*Required*): The password for your given admin account. -- **port** (*Optional*): Mikrotik API port (see IP -> Services -> api ). Defaults to `8728`. +- **port** (*Optional*): Mikrotik API port. Defaults to `8728`. 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.mqtt.markdown b/source/_components/device_tracker.mqtt.markdown index 2b1bd0d519a..d60b895c50e 100644 --- a/source/_components/device_tracker.mqtt.markdown +++ b/source/_components/device_tracker.mqtt.markdown @@ -22,8 +22,8 @@ To use this device tracker in your installation, add the following to your `conf device_tracker: - platform: mqtt devices: - paulus_oneplus: /location/paulus - annetherese_n4: /location/annetherese + paulus_oneplus: 'location/paulus' + annetherese_n4: 'location/annetherese' ``` Configuration variables: diff --git a/source/_components/device_tracker.mysensors.markdown b/source/_components/device_tracker.mysensors.markdown index be28b220e80..14db68931ad 100644 --- a/source/_components/device_tracker.mysensors.markdown +++ b/source/_components/device_tracker.mysensors.markdown @@ -47,7 +47,7 @@ For more information, visit the [serial api] of MySensors. #define SN "GPS Sensor" #define SV "1.0" -// GPS position send interval (in millisectonds) +// GPS position send interval (in milliseconds) #define GPS_SEND_INTERVAL 30000 // The child id used for the gps sensor #define CHILD_ID_GPS 1 diff --git a/source/_components/device_tracker.netgear.markdown b/source/_components/device_tracker.netgear.markdown index 4a5a94f638a..70dbbce1025 100644 --- a/source/_components/device_tracker.netgear.markdown +++ b/source/_components/device_tracker.netgear.markdown @@ -29,9 +29,13 @@ device_tracker: Configuration variables: -- **host** (*Required*): The IP address of your router, e.g. `192.168.1.1`. -- **username** (*Required*): The username of an user with administrative privileges, usually `admin`. +- **host** (*Optional*): The IP address of your router, e.g. `192.168.1.1`. If not provided `routerlogin.net` will be used. +- **username** (*Optional*): The username of an user with administrative privileges. If not provided `admin` will be used. +- **port** (*Optional*): The port your router communicates with (defaults to `5000`, but `80` is also known to be used on some models). - **password** (*Required*): The password for your given admin account. -- **port** (*Optional*): The port your router communicates with (defaults to 5000, but 80 is also known to be used on some models) + +List of models that are known to use port 80: +- Nighthawk X4S - AC2600 (R7800) +- Orbi 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.nmap_tracker.markdown b/source/_components/device_tracker.nmap_tracker.markdown index 26e4a3fabd6..74b40f25eed 100644 --- a/source/_components/device_tracker.nmap_tracker.markdown +++ b/source/_components/device_tracker.nmap_tracker.markdown @@ -17,6 +17,10 @@ As an alternative to the router-based device tracking, it is possible to directl If you're on Debian or Ubuntu, you might have to install the packages for `arp` and `nmap`. Do so by running `$ sudo apt-get install net-tools nmap`. On a Fedora host run `$ sudo dnf -y install nmap`. +

+If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. +

+ Host detection is done via Nmap's "fast scan" (`-F`) of the most frequently used 100 ports, with a host timeout of 5 seconds. To use this device tracker in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/device_tracker.owntracks.markdown b/source/_components/device_tracker.owntracks.markdown index f7fc9192a8a..20cf68ab97a 100644 --- a/source/_components/device_tracker.owntracks.markdown +++ b/source/_components/device_tracker.owntracks.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: owntracks.png ha_category: Presence Detection -featured: true +featured: false ha_release: 0.7.4 --- @@ -30,8 +30,8 @@ Configuration variables: - **max_gps_accuracy** (*Optional*): Sometimes Owntracks can report GPS location with a very low accuracy (few kilometers). That can trigger false zoning in your Home Assistant installation. With the parameter, you can filter these GPS reports. The number has to be in meter. For example, if you put 200 only GPS report with an accuracy under 200 will be take in account. - **waypoints** (*Optional*): Owntracks users can define [waypoints](http://owntracks.org/booklet/features/waypoints/) (a.k.a regions) which are similar in spirit to Home Assistant zones. If this configuration variable is `True`, the Owntracks users who are in `waypoint_whitelist` can export waypoints from the device and Home Assistant will import them as zone definitions. Defaults to `True`. -- **waypoint_whitelist** (*Optional*): A list of user names (as defined for [Owntracks](/components/device_tracker.owntracks/)) who can export their waypoints from Owntracks to Home Assistant. Defaults to all users who are connected to Home Assistant via Owntracks. -- **secret** (*Optional*): [Payload encryption key](http://owntracks.org/booklet/features/encrypt/). This is usable when communicating with a third-party untrusted server or a public server (where anybody can subscribe to any topic). By default the payload is assumed to be unecrypted (although the comunication between Home Assistant and the server might still be encrypted). This feature requires the `libsodium` library to be present. +- **waypoint_whitelist** (*Optional*): A list of user names (as defined for [Owntracks](/components/device_tracker.owntracks/)) who can export their waypoints from Owntracks to Home Assistant. This would be the `username` portion of the Base Topic Name, (e.g. owntracks/**username**/iPhone). Defaults to all users who are connected to Home Assistant via Owntracks. +- **secret** (*Optional*): [Payload encryption key](http://owntracks.org/booklet/features/encrypt/). This is usable when communicating with a third-party untrusted server or a public server (where anybody can subscribe to any topic). By default the payload is assumed to be unencrypted (although the communication between Home Assistant and the server might still be encrypted). This feature requires the `libsodium` library to be present. A full sample configuration for the `owntracks` platform is shown below: @@ -71,13 +71,13 @@ When you exit a zone, Home Assistant will start using location updates to track ### {% linkable_title Using Owntracks regions - forcing Owntracks to update using %}iBeacons 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. -iBeacons are simple bluetooth devices that send out an "I'm here" message. They are supported by IOS and some Android devices. Owntracks explain more [here](http://owntracks.org/booklet/guide/beacons/). +iBeacons are simple Bluetooth devices that send out an "I'm here" message. They are supported by IOS and some Android devices. Owntracks explain more [here](http://owntracks.org/booklet/guide/beacons/). When you enter an iBeacon region, Owntracks will send a `region enter` message to HA as described above. So if you want to have an event triggered when you arrive home, you can put an iBeacon outside your front door. If you set up an OwnTracks iBeacon region called `home` then getting close to the beacon will trigger an update to HA that will set your zone to be `home`. When you exit an iBeacon region HA will switch back to using GPS to determine your location. Depending on the size of your zone, and the accuracy of your GPS location this may change your HA zone. -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 recognise it as `home`, but you will have a more stable iBeacon connection. +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 %} iBeacons don't need to be stationary. You could put one on your key ring, or in your car. diff --git a/source/_components/device_tracker.owntracks_http.markdown b/source/_components/device_tracker.owntracks_http.markdown new file mode 100644 index 00000000000..7e91746e55a --- /dev/null +++ b/source/_components/device_tracker.owntracks_http.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "OwnTracks (via HTTP)" +description: "Instructions 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. diff --git a/source/_components/device_tracker.snmp.markdown b/source/_components/device_tracker.snmp.markdown index d8559db08c0..b6a140f3920 100644 --- a/source/_components/device_tracker.snmp.markdown +++ b/source/_components/device_tracker.snmp.markdown @@ -13,23 +13,26 @@ ha_release: 0.7.5 --- -A lot WiFi access points and WiFi routers support the Simple Network Management Protocol (SNMP). This is a standardized method for monitoring/manageing network connected devices. SNMP uses a tree-like hierarchy where each node is an object. Many of these objects contain (live) lists of insances and metrics, like network interfaces, disks, and wifi registrations. +A lot WiFi access points and WiFi routers support the Simple Network Management Protocol (SNMP). This is a standardized method for monitoring/manageing network connected devices. SNMP uses a tree-like hierarchy where each node is an object. Many of these objects contain (live) lists of instances and metrics, like network interfaces, disks, and WiFi registrations.

-This device tracker needs SNMP to be enabled on the router. +This device tracker needs SNMP to be enabled on the router. It could be that you need to install the SNMP support manually.

OID examples: -- Mikrotik: `1.3.6.1.4.1.14988.1.1.1.2.1.1` (confirmed, unknown RouterOS version/model) -- Mikrotik: `1.3.6.1.2.1.4.22.1.2` (confirmed, RouterOS 6.x on RB2011) -- Aruba: `1.3.6.1.4.1.14823.2.3.3.1.2.4.1.2` (untested) -- BiPAC 7800DXL: `1.3.6.1.2.1.17.7.1.2.2.1.1` (confirmed on firmware 2.32e) -- OpenWrt: `1.3.6.1.2.1.4.22.1.2` (tested on Chaos Calmer 15.05 firmware, need to install snmpd package) -- pfSense: `1.3.6.1.2.1.4.22.1.2` (tested on 2.2.4-RELEASE, need to enable SNMP service) -- TPLink: `1.3.6.1.2.1.3.1.1.2.19.1` (Archer VR2600v, need to enable SNMP service) -- EdgeRouter `1.3.6.1.2.1.4.22.1.2` (EdgeRouter Lite v1.9.0, need to enable SNMP service) -- Ruckus: `1.3.6.1.4.1.25053.1.2.2.1.1.3.1.1.1.6` (Ruckus ZoneDirector, tested on 9.13.3) +| Brand | Device/Firmware | OID | +|---|---|---|---| +| Mikrotik | unknown RouterOS version/model | `1.3.6.1.4.1.14988.1.1.1.2.1.1` | +| Mikrotik | RouterOS 6.x on RB2011 | `1.3.6.1.2.1.4.22.1.2` | +| Aruba | (untested) | `1.3.6.1.4.1.14823.2.3.3.1.2.4.1.2` | +| pfSense | 2.2.4 | `1.3.6.1.2.1.4.22.1.2` | +| BiPAC | 7800DXL Firmware 2.32e | `1.3.6.1.2.1.17.7.1.2.2.1.1` | +| OpenWrt | Chaos Calmer 15.05 | `1.3.6.1.2.1.4.22.1.2` | +| TP-Link | Archer VR2600v | `1.3.6.1.2.1.3.1.1.2.19.1` | +| TP-Link | Archer VR600 | `1.3.6.1.2.1.3.1.1.2` | +| EdgeRouter | Lite v1.9.0 | `1.3.6.1.2.1.4.22.1.2` | +| Ruckus | ZoneDirector 9.13.3 | `1.3.6.1.4.1.25053.1.2.2.1.1.3.1.1.1.6` | To use the SNMP version 1 platform in your installation, add the following to your `configuration.yaml` file: @@ -58,7 +61,7 @@ device_tracker: Configuration variables: - **host** (*Required*): The IP address of the router, eg. 192.168.1.1. -- **community** (*Required*): The SNMP community which is set for the device. Most devices have a default community set to to `public` with read-only permission (which is sufficient). +- **community** (*Required*): The SNMP community which is set for the device. Most devices have a default community set to `public` with read-only permission (which is sufficient). - **baseoid** (*Required*): The OID prefix where wireless client registrations can be found, usually vendor specific. It's advised to use the numerical notation. To find this base OID, check vendor documentation or check the MIB file for your device. - **authkey** (*Inclusive*): Authentication key for SNMPv3. Variable privkey must also be set. - **privkey** (*Inclusive*): Privacy key SNMPv3. Variable authkey must also be set. diff --git a/source/_components/device_tracker.tado.markdown b/source/_components/device_tracker.tado.markdown index fdbba6cdcf7..446c79131d6 100644 --- a/source/_components/device_tracker.tado.markdown +++ b/source/_components/device_tracker.tado.markdown @@ -14,8 +14,7 @@ ha_release: 0.37 The `tado` device tracker is using the [Tado Smart Thermostat](https://www.tado.com/) and it's support for person presence detection based on smartphone location by geofencing. -This tracker uses the Tado API to determine if a mobile device is at home. -It tracks all devices in your home that Tado knows about. +This tracker uses the Tado API to determine if a mobile device is at home. It tracks all devices in your home that Tado knows about. To use the Tado platform in your installation, add the following to your `configuration.yaml` file: @@ -37,15 +36,25 @@ Configuration variables: After configuration, your device has to be at home at least once before showing up as *home* or *away*. Polling Tado API for presence information will happen at most once every 30 seconds. -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. Beware that the Tado (v2) API does not provide GPS location of devices, only a bearing, therefore Home Assistant only uses `home`/`not-home` status. ### {% linkable_title Finding your `home_id` %} Find your `home_id` by browsing to `https://my.tado.com/api/v2/me?username=YOUR_USERNAME&password=YOUR_PASSWORD`. There you'll see something like the following: ```json -{"name":"Mark","email":"your@email.tld","username":"your@email.tld", -"homes":[{"id":12345,"name":"Home Sweet Home"}],"locale":"en_US", -"mobileDevices":[]} +{ + "name": "Mark", + "email": "your@email.tld", + "username": "your@email.tld", + "homes": [ + { + "id": 12345, + "name": "Home Sweet Home" + } + ], + "locale": "en_US", + "mobileDevices": [] +} ``` In this example `12345` is the `home_id` you'll need to configure. diff --git a/source/_components/device_tracker.tesla.markdown b/source/_components/device_tracker.tesla.markdown new file mode 100644 index 00000000000..68307d1057f --- /dev/null +++ b/source/_components/device_tracker.tesla.markdown @@ -0,0 +1,19 @@ +--- +layout: page +title: "Tesla" +description: "Instructions on for how to integrate Tesla into Home Assistant." +date: 2017-08-02 12:20 +sidebar: true +comments: false +sharing: true +footer: true +logo: tesla.png +ha_category: Presence Detection +ha_release: 0.53 +--- + +The `Tesla` platform allows you to get data about the location of your [Tesla](https://www.tesla.com/) car within Home Assistant. + +The device tracker platform will be automatically configured if Tesla component is configured. + +For more configuration information see the [Tesla component](/components/tesla/) documentation. diff --git a/source/_components/device_tracker.trackr.markdown b/source/_components/device_tracker.trackr.markdown index 19ced73c084..6337b8f7870 100644 --- a/source/_components/device_tracker.trackr.markdown +++ b/source/_components/device_tracker.trackr.markdown @@ -16,7 +16,7 @@ ha_iot_class: "Cloud Polling" The `trackr` platform allows you to detect presence using [TrackR](https://www.thetrackr.com/) devices. -The offical TrackR mobile app handles the tracking of the TrackR devices using your phones bluetooth and GPS. +The official TrackR mobile app handles the tracking of the TrackR devices using your phones Bluetooth and GPS. To integrate TrackR in Home Assistant, add the following section to your `configuration.yaml` file: diff --git a/source/_components/device_tracker.ubus.markdown b/source/_components/device_tracker.ubus.markdown index 28bff580c35..d408fec5448 100644 --- a/source/_components/device_tracker.ubus.markdown +++ b/source/_components/device_tracker.ubus.markdown @@ -68,6 +68,8 @@ Configuration variables: - **host** (*Required*): The IP address of your router, eg. 192.168.1.1. - **username** (*Required*): The username of an user with administrative privileges, usually *root*. - **password** (*Required*): The password for your given account. +- **dhcp_software** (*Optional*): The DHCP software used in your router: `dnsmasq` or `dhcpd`. Defaults to `dnsmasq`. + 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.unifi.markdown b/source/_components/device_tracker.unifi.markdown index f70e877e401..af017915885 100644 --- a/source/_components/device_tracker.unifi.markdown +++ b/source/_components/device_tracker.unifi.markdown @@ -33,5 +33,6 @@ Configuration variables: - **password** (*Required*): The password for your given admin account. - **site_id** (*Optional*): Allows you to specify a `site_id` for device tracking. Defaults to `default`. Found in the URL of the controller (i.e. https://CONTROLLER:PORT/manage/site/SITE_ID/dashboard). - **verify_ssl** (*Optional*): Controls if the SSL certificate running on your Unifi webserver must be trusted by a known Certificate Authority on the server running Home Assistant. Defaults to 'True' but can also be a value that points to your custom cert "path/to/custom_cert.pem". +- **detection_time** (*Optional*): The Unifi component will not return a device that has not been seen by the controller in the last 180 seconds. You can adjust this threshold with this variable and accepts seconds or `00:00:00` time formats. See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.upc_connect.markdown b/source/_components/device_tracker.upc_connect.markdown index bb5261269a5..d58a1878e93 100644 --- a/source/_components/device_tracker.upc_connect.markdown +++ b/source/_components/device_tracker.upc_connect.markdown @@ -21,12 +21,10 @@ To use a Connect Box in your installation, add the following to your `configurat # Example configuration.yaml entry device_tracker: - platform: upc_connect - password: YOUR_PASSWORD ``` Configuration variables: -- **password** (*Required*): The password for your Connect Box. - **host** (*Optional*): The IP address of your router. Set it if you are not using `192.168.0.1`. See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/dialogflow.markdown b/source/_components/dialogflow.markdown new file mode 100644 index 00000000000..a034f72e28c --- /dev/null +++ b/source/_components/dialogflow.markdown @@ -0,0 +1,120 @@ +--- +layout: page +title: "Dialogflow" +description: "Instructions how integrate Dialogflow with Home Assistant." +date: 2017-01-27 11:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: dialogflow.png +ha_category: Voice +featured: false +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). + +Dialogflow could be [integrated](https://dialogflow.com/docs/integrations/) with many popular messaging, virtual assistant and IoT platforms. + +Using Dialogflow will be easy to create conversations like: + + > User: What is the temperature at home? + > + > Bot: The temperature is 34 degrees + + > User: Turn on the light + > + > Bot: In which room? + > + > User: In the kitchen + > + > Bot: Turning on kitchen light + +To use this integration, you should define a conversation (intent) in Dialogflow, configure Home Assistant with the speech to return and, optionally, the action to execute. + +### {% linkable_title Configuring your Dialogflow account %} + +- [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` +- 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?` +- In "Action" set some key (this will be the bind with Home Assistant configuration), eg.: GetTemperature +- In "Response" set "Cannot connect to Home Assistant or it is taking to long" (fall back response) +- At the end of the page, click on "Fulfillment" and check "Use webhook" +- Click "Save" +- On the top right, where is written "Try it now...", write, or say, the phrase you have previously defined and hit enter +- Dialogflow has send a request to your Home Assistant server + +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. + +## {% linkable_title Examples %} + +Download [this zip](https://github.com/home-assistant/home-assistant.github.io/blob/next/source/assets/HomeAssistant_APIAI.zip) and load it in your Dialogflow agent (**Settings** -> **Export and Import**) for examples intents to use with this configuration: + +{% raw %} +```yaml +# Example configuration.yaml entry +dialogflow: + +intent_script: + Temperature: + speech: + text: The temperature at home is {{ states('sensor.home_temp') }} degrees + LocateIntent: + speech: + text: > + {%- for state in states.device_tracker -%} + {%- if state.name.lower() == User.lower() -%} + {{ state.name }} is at {{ state.state }} + {%- elif loop.last -%} + I am sorry, I do not know where {{ User }} is. + {%- endif -%} + {%- else -%} + Sorry, I don't have any trackers registered. + {%- endfor -%} + WhereAreWeIntent: + speech: + text: > + {%- if is_state('device_tracker.adri', 'home') and + is_state('device_tracker.bea', 'home') -%} + You are both home, you silly + {%- else -%} + Bea is at {{ states("device_tracker.bea") }} + and Adri is at {{ states("device_tracker.adri") }} + {% endif %} + TurnLights: + speech: + text: Turning {{ Room }} lights {{ OnOff }} + action: + - service: notify.pushbullet + data_template: + message: Someone asked via apiai to turn {{ Room }} lights {{ OnOff }} + - service_template: > + {%- if OnOff == "on" -%} + switch.turn_on + {%- else -%} + switch.turn_off + {%- endif -%} + data_template: + entity_id: "switch.light_{{ Room | replace(' ', '_') }}" +``` +{% endraw %} + diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown index c93c0927cc3..62f9c0c1b34 100644 --- a/source/_components/discovery.markdown +++ b/source/_components/discovery.markdown @@ -12,27 +12,31 @@ ha_category: Other --- -Home Assistant can discover and automatically configure zeroconf/mDNS and uPnP devices on your network. Currently the `discovery` component can detect: +Home Assistant can discover and automatically configure [zeroconf](https://en.wikipedia.org/wiki/Zero-configuration_networking)/[mDNS](https://en.wikipedia.org/wiki/Multicast_DNS) and [uPnP](https://en.wikipedia.org/wiki/Universal_Plug_and_Play) devices on your network. Currently the `discovery` component can detect: - * Google Chromecast - * Belkin WeMo switches - * Philips Hue - * Netgear routers - * Plex media server - * Panasonic Viera - * Roku media player - * Sonos Speakers - * Yamaha media player - * Logitech media server (Squeezebox) - * DirecTV - * Apple TV - * Yeelight Sunflower Bulb - * Flux Led/MagicLight - * Linn / Openhome - * Denon Network Receivers - * Bose Soundtouch speakers - * Axis Communications security devices - * IKEA Trådfri (Tradfri) + * [Apple TV](https://home-assistant.io/components/apple_tv/) + * [Axis Communications security devices](https://home-assistant.io/components/axis/) + * [Belkin WeMo switches](https://home-assistant.io/components/wemo/) + * [Bluesound speakers](https://home-assistant.io/components/media_player.bluesound/) + * [Bose Soundtouch speakers](https://home-assistant.io/components/media_player.soundtouch/) + * [Denon network receivers](https://home-assistant.io/components/media_player.denonavr/) + * [DirecTV receivers](https://home-assistant.io/components/media_player.directv/) + * [Frontier Silicon internet radios](https://home-assistant.io/components/media_player.frontier_silicon/) + * [Google Cast](https://home-assistant.io/components/media_player.cast/) + * [IKEA Trådfri (Tradfri)](https://home-assistant.io/components/tradfri/) + * [Linn / Openhome](https://home-assistant.io/components/media_player.openhome/) + * [Logitech Harmony Hub](https://home-assistant.io/components/remote.harmony/) + * [Logitech media server (Squeezebox)](https://home-assistant.io/components/media_player.squeezebox/) + * [Netgear routers](https://home-assistant.io/components/device_tracker.netgear/) + * [Panasonic Viera](https://home-assistant.io/components/media_player.panasonic_viera/) + * [Philips Hue](https://home-assistant.io/components/light.hue/) + * [Plex media server](https://home-assistant.io/components/media_player.plex/) + * [Roku media player](https://home-assistant.io/components/media_player.roku/) + * [SABnzbd downloader](https://home-assistant.io/components/sensor.sabnzbd/) + * [Samsung TVs](https://home-assistant.io/components/media_player.samsungtv/) + * [Sonos speakers](https://home-assistant.io/components/media_player.sonos/) + * [Yamaha media player](https://home-assistant.io/components/media_player.yamaha/) + * [Yeelight Sunflower bulb](https://home-assistant.io/components/light.yeelightsunflower/) It will be able to add Google Chromecasts and Belkin WeMo switches automatically, for Philips Hue it will require some configuration from the user. @@ -53,38 +57,44 @@ Configuration variables: Valid values for ignore are: * `apple_tv`: Apple TV - * `axis`: (Axis Communications security devices) - * `denonavr`: Denon Network Receivers - * `directv`: DirecTV - * `flux_led`: Flux Led/MagicLight - * `google_cast`: Google Chromecast - * `ikea_tradfri`: IKEA Trådfri - * `logitech_mediaserver`: Logitech media server - Squeezebox player + * `axis`: Axis Communications security devices + * `belkin_wemo`: Belkin WeMo switches + * `bluesound`: Bluesound speakers + * `bose_soundtouch`: Bose Soundtouch speakers + * `denonavr`: Denon network receivers + * `directv`: DirecTV receivers + * `frontier_silicon`: Frontier Silicon internet radios + * `google_cast`: Google Cast + * `harmony`: Logitech Harmony Hub + * `ikea_tradfri`: IKEA Trådfri (Tradfri) + * `logitech_mediaserver`: Logitech media server (Squeezebox) + * `netgear_router`: Netgear routers * `openhome`: Linn / Openhome * `panasonic_viera`: Panasonic Viera * `philips_hue`: Philips Hue * `plex_mediaserver`: Plex media server * `roku`: Roku media player - * `samsung_tv`: (Samsung TV - * `sonos`: Sonos Speakers + * `sabnzbd`: SABnzbd downloader + * `samsung_tv`: Samsung TVs + * `sonos`: Sonos speakers * `yamaha`: Yamaha media player - * `yeelight`: Yeelight Sunflower Bulb - + * `yeelight`: Yeelight Sunflower bulb +

Home Assistant must be on the same network as the devices for uPnP discovery to work. -If running Home Assistant in a Docker container use switch `--net=host` to put it on the host's network. +If running Home Assistant in a [Docker container](/docs/installation/docker/) use switch `--net=host` to put it on the host's network.

-If you are developing a new platform, please read [how to make your platform discoverable]({{site_root}}/developers/add_new_platform/#discovery). -

-There is currently a known issue with running this platform on a 64-bit version of Python and Windows. +There is currently a known issue with running this component on a 64-bit version of Python and Windows.

-If you are on Windows and you're using Python 3.5, download the Netifaces dependency here. +If you are on Windows and you're using Python 3.5, download the [Netifaces](http://www.lfd.uci.edu/~gohlke/pythonlibs/#netifaces) dependency.

If you see `Not initializing discovery because could not install dependency netdisco==0.6.1` in the logs, you will need to install the `python3-dev` or `python3-devel` package on your system manually (eg. `sudo apt-get install python3-dev` or `sudo dnf -y install python3-devel`). On the next restart of home-assistant, discovery should work. If you still get an error, check if you have a compiler (`gcc`) available on your system.

+ +If you are developing a new platform, please read [how to make your platform discoverable](/developers/component_discovery/) for further details. diff --git a/source/_components/doorbird.markdown b/source/_components/doorbird.markdown new file mode 100644 index 00000000000..0b7f1e4120a --- /dev/null +++ b/source/_components/doorbird.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "DoorBird" +description: "Instructions on how to integrate your DoorBird video doorbell with Home Assistant." +date: 2017-08-06 11:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: doorbird.png +ha_category: Hub +ha_release: "0.54" +ha_iot_class: "Local Polling" +--- + +The `doorbird` implementation allows you to integrate your [DoorBird](http://www.doorbird.com/) device in Home Assistant. + +To connect your device, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +doorbird: + host: IP_OR_HOSTNAME + username: abcdef0001 + password: xxxxxxxxxx +``` + +Configuration variables: + +- **host** (*Required*): The LAN IP address or hostname of your device. You can find this by going to the [DoorBird Online check](http://www.doorbird.com/checkonline) and entering the information from the paper that was included in the box. +- **username** (*Required*): The username of a non-administrator user account on the device. +- **password** (*Required*): The password for the user specified. diff --git a/source/_components/downloader.markdown b/source/_components/downloader.markdown index e77b2308d57..53063587d69 100644 --- a/source/_components/downloader.markdown +++ b/source/_components/downloader.markdown @@ -28,7 +28,7 @@ Configuration variables: ### {% linkable_title Use the service %} -Go the the "Developer Tools", then to "Call Service", and choose `downloader/download_file` from the list of available services. Fill the "Service Data" field as shown in the example below and hit "CALL SERVICE". +Go to the "Developer Tools", then to "Call Service", and choose `downloader/download_file` from the list of available services. Fill the "Service Data" field as shown in the example below and hit "CALL SERVICE". ```json {"url":"http://domain.tld/path/to/file"} @@ -36,7 +36,9 @@ Go the the "Developer Tools", then to "Call Service", and choose `downloader/dow This will download the file from the given URL. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `url` | no | The url of the file to download. - +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------- | +| `url` | no | The URL of the file to download. | +| `subdir` | yes | Download into subdirectory of **download_dir** | +| `filename` | yes | Determine the filename. | +| `overwrite` | yes | Whether to overwrite the file or not, defaults to `false`. | diff --git a/source/_components/duckdns.markdown b/source/_components/duckdns.markdown new file mode 100644 index 00000000000..bd18114a18e --- /dev/null +++ b/source/_components/duckdns.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "DuckDNS" +description: "Keep your computer registered with the DuckDNS dynamic DNS." +date: 2017-09-23 07:08 +sidebar: true +comments: false +sharing: true +footer: true +logo: duckdns.png +ha_category: Utility +featured: false +ha_release: 0.55 +--- + +With the DuckDNS component you can keep your DuckDNS record up to date. DuckDNS is a free dynamic DNS service that allows you to point a subdomain under `duckdns.org` at your computer. + +To use the component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +duckdns: + domain: mysubdomain + access_token: abcdefgh +``` + +{% configuration duckdns %} + domain: + description: Your duckdns subdomain (without the `.duckdns.org` suffix). + required: true + type: string + access_token: + description: Your DuckDNS access token. Log in to the site to get one. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/dweet.markdown b/source/_components/dweet.markdown index ae2fabf2376..fdfab021d8f 100644 --- a/source/_components/dweet.markdown +++ b/source/_components/dweet.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Dweet.io" -description: "Record events in InfluxDB." +description: "Transfer events to Dweet.io." date: 2016-05-07 07:08 sidebar: true comments: false @@ -24,14 +24,14 @@ The `dweet` component makes it possible to transfer details collected with Home The publishing interval is limited to 1 second. This means that it's possible to miss fast changes.

-To use the `deweet` component in your installation, add the following to your `configuration.yaml` file: +To use the `dweet` component in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry dweet: name: HAExport whitelist: - - input_slider.brightness + - input_number.brightness - input_boolean.notify_home - sensor.weather_temperature - sensor.cpu diff --git a/source/_components/dyson.markdown b/source/_components/dyson.markdown index ef77841c847..a3d015001ce 100644 --- a/source/_components/dyson.markdown +++ b/source/_components/dyson.markdown @@ -13,9 +13,7 @@ ha_iot_class: "Cloud Polling" ha_release: 0.47 --- -The `dyson` component is the main component to integrate all [Dyson](https://dyson.com) related platforms. - -Currently limited to Cool Link Purifier. +The `dyson` component is the main component to integrate all [Dyson](https://dyson.com) related platforms: [Fans](/components/fan/dyson/) and [Robot vacuum](/components/vacuum/dyson/). To enable this component, add the following lines to your `configuration.yaml`: @@ -25,9 +23,9 @@ dyson: password: language: devices: - - device_id: + - device_id: # eg: Pure Cool Link device device_ip: - - device_id: + - device_id: # eg: Eye 360 robot vacuum device_ip: ... ``` @@ -36,12 +34,14 @@ Configuration variables: - **username** (*Required*): Dyson account username (email address) - **password** (*Required*): Dyson account password -- **language** (*Required*): Dyson account language country code. Known working codes: `FR`, `NL`, `UK`, `AU`. But others codes should work. +- **language** (*Required*): Dyson account language country code. Known working codes: `FR`, `NL`, `GB`, `AU`. But others codes should work. - **devices** (*Optional*): List of devices - **device_id** (*Required*): Device ID. Available in the mobiles applications (*Settings* page) - **device_ip** (*Required*): Device IP address `devices` list is optional but you'll have to provide them if discovery is not working (warnings in the logs and the devices are not available in Home Assistant web interface). +*If your are using a robot vacuum (Dyson 360 Eye), discovery is not yet supported so you have to provide `devices` list.* + To find devices IP address, you can use your router or `nmap`: ```bash diff --git a/source/_components/ecobee.markdown b/source/_components/ecobee.markdown index 6b5fd1d61e4..a3e6da2ceef 100644 --- a/source/_components/ecobee.markdown +++ b/source/_components/ecobee.markdown @@ -42,7 +42,7 @@ The PIN can be found from the Home Assistant portal on the Ecobee card or from t - If you do not have an ecobee card, you may be using groups with `default_view` that don't show the card. To get around this you can temporarily comment out the `default_view` section or add the `configurator.ecobee` component to your `default_view` and restart Home Assistant. -Once you enter the PIN on the ecobee site, wait approximately 5 minutes and then click on the **I have authorized the app** link at the bottom of the ecobee popup window. If everything worked correctly, you should now be able to restart Home Assistant again to see the full ecobee card with all of the sensors populated or see the list of sensors in the developer tools. Now you can re-enable your `default_view` (if you had to disable it) and add the ecobee sensors to a group and/or view. +Once you enter the PIN on the ecobee site, wait approximately 5 minutes and then click on the **I have authorized the app** link at the bottom of the ecobee pop-up window. If everything worked correctly, you should now be able to restart Home Assistant again to see the full ecobee card with all of the sensors populated or see the list of sensors in the developer tools. Now you can re-enable your `default_view` (if you had to disable it) and add the ecobee sensors to a group and/or view. To set it up, add the following information to your `configuration.yaml` file: diff --git a/source/_components/emulated_hue.markdown b/source/_components/emulated_hue.markdown index c50f15861ed..0244bc546aa 100644 --- a/source/_components/emulated_hue.markdown +++ b/source/_components/emulated_hue.markdown @@ -13,12 +13,20 @@ ha_release: 0.27 ha_iot_class: "Local Push" --- +

+At this time `emulated_hue` doesn't appear to be working for new Google Home users. +

+ The `emulated_hue` component provides a virtual Philips Hue bridge, written entirely in software, that allows services that work with the Hue API to interact with Home Assistant entities. The driving use case behind this functionality is to allow Home Assistant to work with an Amazon Echo or Google Home with no set up cost outside of configuration changes. The virtual bridge has the ability to turn entities on or off, or change the brightness of dimmable lights. The volume level of media players can be controlled as brightness.

- It is recommended to assign a static IP address to the computer running Home Assistant. This is because the Amazon Echo discovers devices by IP addresses, and if the IP changes, the Echo won't be able to control it. This is easiest done from your router, see your router's manual for details. +A physical Hue Bridge is required for the lights to function - this virtual bridge will not replace a physical bridge. +

+ +

+It is recommended to assign a static IP address to the computer running Home Assistant. This is because the Amazon Echo discovers devices by IP addresses, and if the IP changes, the Echo won't be able to control it. This is easiest done from your router, see your router's manual for details.

### {% linkable_title Configuration %} @@ -28,7 +36,6 @@ To enable the emulated Hue bridge, add one of the following configs to your `con ```yaml # Google Home example configuration.yaml entry emulated_hue: - type: google_home listen_port: 80 # Google Home does not work on different ports. ``` @@ -36,13 +43,11 @@ emulated_hue: ```yaml # Amazon Echo example configuration.yaml entry emulated_hue: - type: alexa - listen_port: 80 ``` Configuration variables: -- **type** (*Optional*): The type of assistant who we are emulated for. Either `alexa` or `google_home`, defaults to `google_home`. +- **type** (*Optional*): The type of assistant who we are emulated for. Either `alexa` or `google_home`, defaults to `google_home`. **This configuration option is deprecated and will be removed in a future release. It is no longer necessary to define type.** - **host_ip** (*Optional*): The IP address that your Home Assistant installation is running on. If you do not specify this option, the component will attempt to determine the IP address on its own. - **listen_port** (*Optional*): The port the Hue bridge API web server will run on. If not specified, this defaults to 8300. This can be any free port on your system. @@ -52,11 +57,11 @@ Configuration variables: - **upnp_bind_multicast** (*Optional*): Whether or not to bind the UPNP (SSDP) listener to the multicast address (239.255.255.250) or instead to the (unicast) host_ip address specified above (or automatically determined). The default is true, which will work for most situations. In special circumstances, like running in a FreeBSD or FreeNAS jail, you may need to disable this. - **off_maps_to_on_domains** (*Optional*): The domains that maps an "off" command to an "on" command. - + For example, if `script` is included in the list, and you ask Alexa to "turn off the *water plants* script," the command will be handled as if you asked her to turn on the script. - + If not specified, this defaults to the following list: - + - `script` - `scene` @@ -87,7 +92,7 @@ emulated_hue: - light ``` -With additional customization you will be able to specify the behaviour of the existing entities. +With additional customization you will be able to specify the behavior of the existing entities. ```yaml # Example customization @@ -95,7 +100,7 @@ homeassistant: customize: light.bedroom_light: # Don't allow light.bedroom_light to be controlled by the emulated Hue bridge - emulated_hue: false + emulated_hue_hidden: true light.office_light: # Address light.office_light as "back office light" emulated_hue_name: "back office light" @@ -103,7 +108,7 @@ homeassistant: The following are attributes that can be applied in the `customize` section: -- **emulated_hue** (*Optional*): Whether or not the entity should be exposed by the emulated Hue bridge. The default value for this attribute is controlled by the `expose_by_default` option. +- **emulated_hue_hidden** (*Optional*): Whether or not the entity should be exposed by the emulated Hue bridge. Adding `emulated_hue_hidden: false` will expose the entity to Alexa. The default value for this attribute is controlled by the `expose_by_default` option. - **emulated_hue_name** (*Optional*): The name that the emulated Hue will use. The default for this is the entity's friendly name. ### {% linkable_title Troubleshooting %} @@ -113,13 +118,14 @@ You can verify that the `emulated_hue` component has been loaded and is respondi - `http://:8300/description.xml` - This URL should return a descriptor file in the form of an XML file. - `http://:8300/api/pi/lights` - This will return a list of devices, lights, scenes, groups, etc.. that `emulated_hue` is exposing to Alexa. -For Google Home, verify that the URLs above are using port 80, rather than port 8300 (i.e. http://:80/description.xml). +For Google Home, verify that the URLs above are using port 80, rather than port 8300 (i.e. `http://:80/description.xml`). An additional step is required to run Home Assistant as non-root user and use port 80 when using the AiO script. Execute the following command to allow `emulated_hue` to use port 80 as non-root user. ```bash sudo setcap 'cap_net_bind_service=+ep' /srv/homeassistant/homeassistant_venv/bin/python3 ``` +Please note that your path may be different depending on your installation method. For example, if you followed the [Virtualenv instructions](https://home-assistant.io/docs/installation/virtualenv/), your path will be `/srv/homeassistant/bin/python3`. ### {% linkable_title License %} diff --git a/source/_components/envisalink.markdown b/source/_components/envisalink.markdown index 238a9b3066c..02d0746982c 100644 --- a/source/_components/envisalink.markdown +++ b/source/_components/envisalink.markdown @@ -65,7 +65,7 @@ Configuration variables: - **evl_version** (*Optional*): 3 for evl3, or 4 for evl4. Default: `3` - **keepalive_interval** (*Optional*): This is a periodic heartbeat signal (measured in seconds) sent to your Envisalink board to keep it from restarting. This is required for DSC and Honeywell systems. Defaults to `60` seconds. - **zonedump_interval** (*Optional*): This is an interval (measured in seconds) where the evl will dump out all zone statuses. This is required for Honeywell systems, which do not properly send zone closure events. DSC boards do not technically need this. Default: `30` -- **panic_type** (*Optional*): 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. Default = Police. Valid values are: Police, Fire, Ambulance +- **panic_type** (*Optional*): 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. Default = Police. Valid values are: Police, Fire, Ambulance - **zones** (*Optional*): Envisalink boards have no way to tell us which zones are actually in use, so each zone must be configured in Home Assistant. For each zone, at least a name must be given. For more information on the available zone types, take a look at the [Binary Sensor](/components/binary_sensor.envisalink/) docs. *Note: If no zones are specified, Home Assistant will not load any binary_sensor components.* - **partitions** (*Optional*): Again, Envisalink boards do not tell us what is in use and what is not, so each partition must be configured with a partition name. If no partition parameter is specified, then no alarm_panel or sensor components are loaded. diff --git a/source/_components/fan.comfoconnect.markdown b/source/_components/fan.comfoconnect.markdown new file mode 100644 index 00000000000..d24d4eb1845 --- /dev/null +++ b/source/_components/fan.comfoconnect.markdown @@ -0,0 +1,17 @@ +--- +layout: page +title: "Zehnder ComfoAir Q Ventilation fans" +description: "Instructions how to integrate Zehnder ComfoAir Q350/450/600 fans into Home Assistant." +date: 2017-06-28 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: zehnder.png +ha_category: Fan +ha_release: "0.48" +--- + +Please see the [main component] for information how to set it up. + +[main component]: /components/comfoconnect/ diff --git a/source/_components/fan.insteon_local.markdown b/source/_components/fan.insteon_local.markdown new file mode 100644 index 00000000000..8476fc43d06 --- /dev/null +++ b/source/_components/fan.insteon_local.markdown @@ -0,0 +1,34 @@ +--- +layout: page +title: "Insteon (Local) Fan" +description: "Instructions how to setup the Insteon Hub Fans locally within Home Assistant." +date: 2017-04-06 11:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: insteon.png +ha_category: Fan +ha_version: 0.48 +--- + +The `insteon_local` fan component lets you control your fan connected to an [Insteon Hub](http://www.insteon.com/insteon-hub/) with Home Assistant. + +To integrate add a fan, configure your hub Insteon(local) with Home Assistant, add the following section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml platform entry +insteon_local: + host: YOUR HUB IP + username: YOUR HUB USERNAME + password: YOUR HUB PASSWORD + timeout: 10 + port: 25105 +``` + +To add fans to your set-up, add the platform to your light configuration: +```yaml +fan: + - platform: insteon_local +``` + diff --git a/source/_components/fan.mqtt.markdown b/source/_components/fan.mqtt.markdown index 43e2da29363..82c5193ba30 100644 --- a/source/_components/fan.mqtt.markdown +++ b/source/_components/fan.mqtt.markdown @@ -13,9 +13,9 @@ ha_release: 0.27 ha_iot_class: depends --- -The `mqtt` fan platform let you control your MQTT enabled fans. +The `mqtt` fan platform lets you control your MQTT enabled fans. -In an ideal scenario, the MQTT device will have a `state_topic` to publish state changes. If these messages are published with `RETAIN` flag, the MQTT fan will receive an instant state update after subscription and will start with correct state. Otherwise, the initial state of the fan will be `false`. +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 fan will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the fan will be `false` / `off`. When a `state_topic` is not available, the fan will work in optimistic mode. In this mode, the fan will immediately change state after every command. Otherwise, the fan will wait for state confirmation from the device (message from `state_topic`). @@ -56,7 +56,7 @@ Configuration variables: - **speeds** array (*Optional*): Valid entries for the list are `off`, `low`, `medium`, and `high`.

-Make sure that your topic is an exact match. `some-topic/` and `some-topic` are different topics. +Make sure that your topics match exactly. `some-topic/` and `some-topic` are different topics.

## {% linkable_title Examples %} diff --git a/source/_components/fan.velbus.markdown b/source/_components/fan.velbus.markdown new file mode 100644 index 00000000000..ff0652f233f --- /dev/null +++ b/source/_components/fan.velbus.markdown @@ -0,0 +1,41 @@ +--- +layout: page +title: "Velbus Fans" +description: "Access and control your Velbus fans." +date: 2017-06-17 16.58 +sidebar: true +comments: false +sharing: true +footer: true +logo: velbus.png +ha_category: Fan +ha_iot_class: "Local Push" +ha_release: "0.50" +--- + +The `velbus` fan allows you to control [Velbus](http://www.velbus.eu) connected fans. + +To use your Velbus fans in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry + +fan: + - platform: velbus + devices: + - name: Fan 1 + module: 0xda + channel_low: 4 + channel_medium: 3 + channel_high: 2 +``` + +Configuration variables: +- **devices** array (*Required*): The array contains the fans to configure + - **name** (*Required*): Name of the fan. + - **module** (*Required*): The hexadecimal module address + - **channel_low** (*Required*): The channel number in the module for low-speed. + - **channel_medium** (*Required*): The channel number in the module for medium-speed. + - **channel_high** (*Required*): The channel number in the module for high-speed. + +For hub configuration, see [the Velbus component](/components/velbus/). diff --git a/source/_components/fan.wink.markdown b/source/_components/fan.wink.markdown index df8fa5a4556..23369dfad2e 100644 --- a/source/_components/fan.wink.markdown +++ b/source/_components/fan.wink.markdown @@ -21,10 +21,12 @@ The requirement is that you have setup [Wink](/components/wink/). ### {% linkable_title Supported fan devices %} -- Gardinier +- Home Decorator Wink-enabled Gardinier ceiling fan +- Hampton Bay ceiling fan module

The above devices are confimed to work, but others may work as well.

+ diff --git a/source/_components/fan.xiaomi_miio.markdown b/source/_components/fan.xiaomi_miio.markdown new file mode 100644 index 00000000000..7acf1291e45 --- /dev/null +++ b/source/_components/fan.xiaomi_miio.markdown @@ -0,0 +1,111 @@ +--- +layout: page +title: "Xiaomi Air Purifier 2" +description: "Instructions how to integrate your Xiaomi Air Purifier 2 within Home Assistant." +date: 2017-10-13 12:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: Switch +ha_version: 0.57 +ha_iot_class: "Local Polling" +--- + +The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier 2. The Air Purifier Pro isn't supported right now. + +Currently, the supported features are + +* On, Off +* Operation modes (auto, silent, favorite, idle) +* Buzzer (on, off) +* LED (on, off), LED brightness (bright, dim, off) +* Favorite Level +* States + - power + - aqi + - humidity + - temperature + - mode + - led + - led_brightness + - buzzer + - child_lock + - brightness + - favorite_level + - filter1_life + - f1_hour_used + - use_time + - motor1_speed + +## {% linkable_title Setup %} + +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 Air Purifier to your installation, add the following to your `configuration.yaml` file: + +```yaml +fan: + - platform: xiaomi_miio + name: Xiaomi Air Purifier 2 + host: 192.168.130.66 + token: YOUR_TOKEN +``` + +Configuration variables: +- **host** (*Required*): The IP of your plug. +- **token** (*Required*): The API token of your plug. +- **name** (*Optional*): The name of your plug. + +## {% linkable_title Platform Services %} + +### Service fan/xiaomi_miio_set_buzzer_on + +Turn the buzzer on. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific air purifier. Else targets all. | + +### Service fan/xiaomi_miio_set_buzzer_off + +Turn the buzzer off. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific air purifier. Else targets all. | + +### Service fan/xiaomi_miio_set_led_on + +Turn the led on. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific air purifier. Else targets all. | + +### Service fan/xiaomi_miio_set_led_off + +Turn the led off. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific air purifier. Else targets all. | + +### Service fan/xiaomi_miio_set_led_brightness + +Set the led brightness. Supported values are 0 (Bright), 1 (Dim), 2 (Off). + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific air purifier. Else targets all. | +| `brightness` | no | Brightness, between 0 and 2. | + +### Service fan/xiaomi_miio_set_favorite_level + +Set the favorite level of the operation mode "favorite". + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific air purifier. Else targets all. | +| `level` | no | Level, between 0 and 16. | diff --git a/source/_components/feedreader.markdown b/source/_components/feedreader.markdown index efaee1fb50a..15b72129655 100644 --- a/source/_components/feedreader.markdown +++ b/source/_components/feedreader.markdown @@ -22,6 +22,7 @@ feedreader: urls: - https://home-assistant.io/atom.xml - https://github.com/blog.atom + - https://hasspodcast.io/feed/podcast ``` Configuration variables: @@ -48,11 +49,14 @@ automation: platform: event event_type: feedreader action: - service: notify.notify - data_template: "{{ trigger.event.data.title }}" + service: persistent_notification.create + data_template: + title: "New HA Podcast available" + message: {% raw %}"New Podcast available - {{ as_timestamp(now()) | timestamp_custom('%I:%M:%S %p %d%b%Y', true) }}"{% endraw %} + notification_id: {% raw %}"{{ trigger.event.data.title }}"{% endraw %} ``` -*Any field under the `` tag in the feed can be used for example `trigger.event.data.content` will get the body of the feed entry. +Any field under the `` tag in the feed can be used for example `trigger.event.data.content` will get the body of the feed entry. For more advanced use cases, a custom component registering to the `feedreader` event type could be used instead: @@ -62,3 +66,5 @@ hass.bus.listen(EVENT_FEEDREADER, event_listener) ``` To get started developing custom components, please refer to the [developers](/developers) documentation + +For a drop in packaged complete example of Feedreader, you can use the [PodCast notifier](https://github.com/CCOSTAN/Home-AssistantConfig/blob/master/packages/hasspodcast.yaml). diff --git a/source/_components/ffmpeg.markdown b/source/_components/ffmpeg.markdown index caa322b587b..56fd9779aed 100644 --- a/source/_components/ffmpeg.markdown +++ b/source/_components/ffmpeg.markdown @@ -1,7 +1,7 @@ --- layout: page title: "FFmpeg" -description: "Instructions for how to integrate FFmpeg within Home Assistant." +description: "Instructions on how to integrate FFmpeg within Home Assistant." date: 2016-09-14 00:00 sidebar: true comments: false @@ -11,12 +11,16 @@ logo: ffmpeg.png ha_category: Hub --- -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 a older version, please update. +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.

+

+If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. +

+ To set it up, add the following information to your `configuration.yaml` file: ```yaml @@ -48,7 +52,7 @@ ffmpeg: In most cases, `ffmpeg` automatically detects all needed options to read a video or audio stream or file. But it is possible in rare cases that you will need to set options to help `ffmpeg` out. -First check that your stream is playable by `ffmpeg` outside of Home Assistant with (use option `-an` or `-vn` to disable video or audio stream): +First, check that your stream is playable by `ffmpeg` outside of Home Assistant with (use option `-an` or `-vn` to disable video or audio stream): ``` $ ffmpeg -i INPUT -an -f null - @@ -57,19 +61,19 @@ $ ffmpeg -i INPUT -an -f null - Now you should be able to see what is going wrong. The following list contains some common problems and solutions: - `[rtsp @ ...] UDP timeout, retrying with TCP`: You need to set an RTSP transport in the configuration with: `input: -rtsp_transport tcp -i INPUT` -- `[rtsp @ ...] Could not find codec parameters for stream 0 (Video: ..., none): unspecified size`: FFmpeg needs more data or time for autodetection (the default is 5 seconds). You can set the `analyzeduration` and/or `probesize` options to experiment with giving FFmpeg more leeway. If you find the needed value, you can set it with: `input: -analyzeduration xy -probesize xy -i INPUT`. More information about this can be found [here](https://www.ffmpeg.org/ffmpeg-formats.html#Description). +- `[rtsp @ ...] Could not find codec parameters for stream 0 (Video: ..., none): unspecified size`: FFmpeg needs more data or time for autodetection (the default is 5 seconds). You can set the `analyzeduration` and/or `probesize` options to experiment with giving FFmpeg more leeway. If you find the needed value, you can set it with: `input: -analyzeduration xy -probesize xy -i INPUT`. More information about this can be found [here](https://www.ffmpeg.org/ffmpeg-formats.html#Description). #### {% linkable_title USB cameras %} -For `INPUT` a valid source is needed. USB camera are an easy way to test your video setup. To get all available USB cameras connected to the system, eg. use the v4l2 tools on a Linux machine. +For `INPUT` a valid source is needed. A USB camera is an easy way to test your video setup. To get all available USB cameras connected to the system, e.g., use the v4l2 tools on a Linux machine. ```bash $ v4l2-ctl --list-devices UVC Camera (046d:0825) (usb-0000:00:14.0-1): - /dev/video1 + /dev/video1 Integrated Camera (usb-0000:00:14.0-10): - /dev/video0 + /dev/video0 ``` Record a test video with your USB device `/dev/video1`: diff --git a/source/_components/foursquare.markdown b/source/_components/foursquare.markdown index c8070eff9a2..10b5d6ebe61 100644 --- a/source/_components/foursquare.markdown +++ b/source/_components/foursquare.markdown @@ -46,7 +46,7 @@ After that, you will get redirected to your `REDIRECT_URL` with the `access_toke The component accepts pushes from Foursquare at `/api/foursquare`. The route does not require authentication. -Foursquare checkin events can be used out of the box to trigger automation actions, e.g.: +Foursquare check-in events can be used out of the box to trigger automation actions, e.g.: ```yaml automation: @@ -69,7 +69,7 @@ Parameters: - **eventId** (*Optional*): The event the user is checking in to. - **shout** (*Optional*): A message about your check-in. The maximum length of this field is 140 characters. - **mentions** (*Optional*): Mentions in your check-in. This parameter is a semicolon-delimited list of mentions. A single mention is of the form "start,end,userid", where start is the index of the first character in the shout representing the mention, end is the index of the first character in the shout after the mention, and userid is the userid of the user being mentioned. If userid is prefixed with "fbu-", this indicates a Facebook userid that is being mention. Character indices in shouts are 0-based. -- **broadcast** (*Optional*): "Who to broadcast this check-in to. Accepts a comma-delimited list of values: private (off the grid) or public (share with friends), facebook share on facebook, twitter share on twitter, followers share with followers (celebrity mode users only), If no valid value is found, the default is public." +- **broadcast** (*Optional*): "Who to broadcast this check-in to. Accepts a comma-delimited list of values: private (off the grid) or public (share with friends), Facebook share on Facebook, twitter share on twitter, followers share with followers (celebrity mode users only), If no valid value is found, the default is public." - **ll** (*Optional*): Latitude and longitude of the user's location. Only specify this field if you have a GPS or other device reported location for the user at the time of check-in. - **llAcc** (*Optional*): Accuracy of the user's latitude and longitude, in meters. - **alt** (*Optional*): Altitude of the user's location, in meters. diff --git a/source/_components/frontend.markdown b/source/_components/frontend.markdown index 47027c322bf..dc48dd837fb 100644 --- a/source/_components/frontend.markdown +++ b/source/_components/frontend.markdown @@ -17,3 +17,105 @@ This offers the official frontend to control Home Assistant. # Example configuration.yaml entry frontend: ``` + +{% configuration %} + themes: + description: Allow to define different themes. See below for further details. + required: false + type: map + keys: + "[identifier]": + description: Name to use in the frontend. + required: true + type: [list, map] + keys: + "[css-identifier]": + description: The CSS identifier. + required: true + type: [list, string] + extra_html_url: + description: "List of addtional [resources](/developers/frontend_creating_custom_ui/) to load." + required: false + type: list + development_repo: + description: Allow to point to a directory containing frontend files instead of taking them from a pre-built PyPI package. Useful for Frontend development. + required: false + type: string +{% endconfiguration %} + + +## {% linkable_title Themes %} + +Starting with version 0.49 you can define themes: + +Example: + +```yaml +# Example configuration.yaml entry +frontend: + themes: + happy: + primary-color: pink + sad: + 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.html](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/resources/ha-style.html). + +There are 2 themes-related services: + + - `frontend.reload_themes`: reloads theme configuration from your `configuration.yaml` file. + - `frontend.set_theme(name)`: sets backend-preferred theme name. + +Example in automation: + +Set a theme at the startup of Home Assistant: + +```yaml +automation: + - alias: 'Set theme at startup' + initial_state: 'on' + trigger: + - platform: homeassistant + event: start + action: + service: frontend.set_theme + data: + name: happy +``` + +To enable "night mode": + +```yaml +automation: + - alias: 'Set dark theme for the night' + initial_state: True + trigger: + - platform: time + at: '21:00' + action: + - service: frontend.set_theme + data: + name: darkred +``` + +### {% linkable_title Manual Theme Selection %} + +When themes are enabled in the `configuration.yaml` file, a new option will show up in the Configuration panel under `configuration.yaml` called "Set a theme." You can then choose any installed theme from the dropdown list and it will be applied immediately. + + +## {% linkable_title Loading extra HTML %} + +Starting with version 0.53 you can specify extra HTML files to load. + +Example: + +```yaml +# Example configuration.yaml entry +frontend: + extra_html_url: + - https://example.com/file1.html + - /file2.html +``` + +Those will be loaded via `` on any page (states and panels) diff --git a/source/_components/gc100.markdown b/source/_components/gc100.markdown new file mode 100644 index 00000000000..063dddcab09 --- /dev/null +++ b/source/_components/gc100.markdown @@ -0,0 +1,31 @@ +--- +layout: page +title: "gc100" +description: "Instructions on how to integrate gc100 with Home Assistant." +date: 2017-10-26 17:20 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Hub +ha_release: 0.57 +--- + +The Global Caché [GC-100](https://www.globalcache.com/products/gc-100/) can be integrated into Home Assistant. GC-100 is a TCP-controllable +hardware device which has an array of relays, RS232 serial ports, and flexible ports which can be programmed to be either digital inputs or IR blaster outputs. There are a variety of submodels of the GC-100 which have different amounts of each I/O type. + +Currently, only relays and ports configured to be digital inputs are supported in Home Assistant. For IR support, please use the iTach remote platform (https://home-assistant.io/components/remote.itach/), but note that it will likely not function concurrently on the same GC100 due to limitations in the TCP socket server implementation used by Global Caché. + +To enable this device, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +gc100: + host: 192.168.1.114 + port: 4998 +``` + +Configuration variables: + +- **host** (*Required*): The hostname/IP address of your GC100 device. +- **port** (*Optional*): The port on which the GC100 is listening. diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown new file mode 100644 index 00000000000..23c1ce73397 --- /dev/null +++ b/source/_components/google_assistant.markdown @@ -0,0 +1,125 @@ +--- +layout: page +title: "Google Assistant" +description: "Setup for Google Assistant integration" +date: 2017-10-17 12:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: google-assistant.png +ha_category: Voice +featured: true +ha_release: 0.56 +--- + +# Google Assistant Docs +The Google Assistant component requires a bit more setup than most due to the way Google requires Assistant Apps to be set up. + +

+To use Google Assistant your Home Assistant configuration has to be externally accessible, with a hostname and SSL certificate. If you haven't already configured that you should do so before continuing. +

+ +### {% linkable_title Configuration %} + +```yaml +# Example configuration.yaml entry +google_assistant: + project_id: someproject-2d0b8 + client_id: [long URL safe random string] + access_token: [a different long URL safe random string] + exposed_domains: + - switch + - light + - group +``` + +*Note:* It's very important that you use very long strings for `client_id` and `access_token`. Those are essentially the credentials to your Home Assistant instance. You can generate them with the following command: + +`cat /dev/urandom|fold -w 120|head -n 1|base64 -w 0|tr -dc '0-9A-Za-z'|cut -c -80` + +*Configuration Variables:* +* *expose_by_default* (Optional): Expose devices in all supported domains by default. +* *project_id* (Required): Project ID from the Google Developer console (looks like `words-2ab12`) +* *client_id* (Required): A long random URL safe string (no spaces or special characters) that will be used for Implicit OAuth. +* *access_token* (Required): Another different long random URL safe string. +* *exposed_domains* (Optional): An array of Home Assistant domains to expose to Google Assistant. Options include: + - `switch` + - `light` + - `cover` + - `media_player` + - `group` + - `fan` + - `scene` + - `script` + +You can also customize your devices similar to other components by adding keys to entities: + +```yaml +homeassistant: + customize: + master_bedroom_light: + google_assistant: true + google_assistant_name: bedroom light + bedroom_blinds: + aliases: + - bedroom shades + - bedroom covers + hallway_ceiling_switch: + google_assistant: true + google_assistant_type: light +``` + +*Entity Customization Keys:* +* *google_assistant*: True exposes entity, false will hide it +* *google_assistant_name*: Can be used to override the primary name of an entity. By default the `friendly_name` of an entity is used. +* *google_assistant_type*: Can be used to override the domain/type of an entity. For example a switch can be treated as a light +* *aliases*: Provides "nicknames" to Google Assistant. These function as alternate names for an entity that Assistant will understand when spoken. + +### {% linkable_title Setup %} + +1. Install the [gactions CLI](https://developers.google.com/actions/tools/gactions-cli) (you'll use this later) - you can download this anywhere, just remember where you put it for later (and don't forget to run `chmod +x gactions`) +2. Create a new file named `project.json` (in the same directory you downloaded `gactions` to) and replace the `[YOUR HOME ASSISTANT URL]` below with the URL you use to access Home Assistant. + Note: This must be an HTTPS URL to work. + +```json +{ + "actions": [{ + "name": "actions.devices", + "deviceControl": { + }, + "fulfillment": { + "conversationName": "automation" + } + }], + "conversations": { + "automation" : + { + "name": "automation", + "url": "https://[YOUR HOME ASSISTANT URL]/api/google_assistant" + } + } +} +``` + +3. Create a new project in the [developer console](https://console.actions.google.com/). + 1. Add/Import project + 2. Go to Build under the Actions SDK box + 3. Copy the command that looks like: + `gactions update --action_package PACKAGE_NAME --project doctest-2d0b8` +4. Replace `PACKAGE_NAME` with `project.json` and run that command from the same directory you saved `project.json` in (you'll need to put `./` before `gactions` so that it reads `./gactions`). It should output a URL like `https://console.actions.google.com/project/doctest-2d0b8/overview` - go there. +5. You'll need to fill out most of the information on that page, but none of it really matters since you won't be addressing the App directly, only through the Smart Home functionality built into Google Assistant. +6. The final item on that page `Account linking` is required for your app to interact with Home Assistant. + 1. Grant type: `Implicit` + 2. Client ID: Should be the same as `client_id` from your hass config above + 3. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL]/api/google_assistant/auth` + 4. Configure your client. Add scopes for `email` and `name` + 5. Testing instructions: doesn't matter since you won't submit this app +7. Back on the main app draft page. Click `Test Draft`. That will take you to the simulator (which won't work) so just close that window. +8. Open the Google Assistant app and go into `Settings > Home Control` +9. Click the `+` sign, and near the bottom, you should have `[test] your app name`. Selecting that should lead to you the screen where you can set rooms for your devices or nicknames for your devices. +10. If you want to allow other houshold users to control the devices: + 1. Go to the developer console using address from point 4. + 2. Under the gear icon, click `Permissions` + 3. Click `Add`, type the new user's e-mail address and choose `Project -> Editor` role + 4. Have the new user go to [developer console](https://console.actions.google.com/) and repeat steps starting from point 7. diff --git a/source/_components/google_domains.markdown b/source/_components/google_domains.markdown new file mode 100644 index 00000000000..df42475a519 --- /dev/null +++ b/source/_components/google_domains.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "Google Domains" +description: "Keep your computer registered with the Google Domains dynamic DNS." +date: 2017-10-23 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: google_domains.png +ha_category: Utility +ha_release: 0.57 +--- + +With the Google Domains component you can keep your Google Domains record up to date. + +To use the component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +google_domains: + domain: subdomain.domain.com + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} + domain: + description: Your FQDN. + required: true + type: string + username: + description: The generated username for this DDNS record. + required: true + type: string + password: + description: The generated password for this DDNS record. + required: true + type: string + timeout: + description: Timeout (in seconds) for the API calls. + required: false + type: number + default: 10 +{% endconfiguration %} diff --git a/source/_components/group.markdown b/source/_components/group.markdown index 78005f8fb4c..5dd01ab44c5 100644 --- a/source/_components/group.markdown +++ b/source/_components/group.markdown @@ -58,8 +58,8 @@ Configuration variables: - **view** (*Optional*): If yes then the entry will be shown as a view (tab) at the top. - **name** (*Optional*): Name of the group. -- **icon** (*Optional*): If the group is a view, this icon will show at the top in the frontend instead of the name. If it's not a view, then the icon shows when this group is used in another group. -- **control** (*Optional*): If hidden then the group switch will be hidden. +- **icon** (*Optional*): If the group is a view, this icon will show at the top in the frontend instead of the name. If the group is a view and both name and icon have been specified, the icon will appear at the top of the frontend and the name will be displayed as the mouse-over text. If it's not a view, then the icon shows when this group is used in another group. +- **control** (*Optional*): Set value to `hidden`. If hidden then the group switch will be hidden. - **entities** (*Required*): array or comma delimited string, list of entities to group.

@@ -89,3 +89,38 @@ Notice in the example below that in order to refer to the group "Living Room", y - group.living_room - group.bedroom ``` + +## {% linkable_title Default groups %} + +Some components automatically create special groups containing component entities. These groups are named like `group.all_...`, for example: +- `group.all_switches` +- `group.all_lights` +- `group.all_devices` +- `group.all_scripts` +- `group.all_automations` + +You can see list of these groups in **State** page of the **Developer Tools**. + +Default groups appear in the HOME tab, if not overridden by user views and groups. Default groups are hidden by default, so you must [customize](/docs/configuration/customizing-devices/) them to be visible in your custom groups and views. + +```yaml +# Example configuration.yaml to include default groups in custom view + +customize: + group.all_automations: + hidden: false + group.all_scripts: + hidden: false + +group: + automation_view: + name: Automation + view: yes + entities: + - group.all_automations + - group.all_scripts +``` + +## {% linkable_title Group behaviour %} + +When any member of a group is `on` then the group will also be `on`. Similarly with a device tracker, when any member of the group is `home` then the group is `home`. diff --git a/source/_components/ha.markdown b/source/_components/ha.markdown deleted file mode 100644 index a3ae92104a6..00000000000 --- a/source/_components/ha.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Home Assistant 0.47" -description: "" -date: 2016-12-16 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Other -ha_release: 0.47 ---- - -Details about the latest release can always be found at: - -- [Release blog posts](https://home-assistant.io/blog/categories/release-notes/) -- [GitHub releases](https://github.com/home-assistant/home-assistant/releases) -- [Python Package Index](https://pypi.python.org/pypi/homeassistant/) diff --git a/source/_components/hdmi_cec.markdown b/source/_components/hdmi_cec.markdown index 18b4f7b12d9..43c95c45ada 100644 --- a/source/_components/hdmi_cec.markdown +++ b/source/_components/hdmi_cec.markdown @@ -13,7 +13,7 @@ ha_release: 0.23 ha_iot_class: "Local Push" --- -The HDMI CEC component provides services that allow selecting the active device, powering on all devices, setting all devices to standby and creates switch entites 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 Soundbars 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. +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. ## {% linkable_title CEC Setup %} @@ -25,6 +25,10 @@ The computer running Home Assistant must support CEC, and of course be connected [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. +

+If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. +

+ #### {% linkable_title Symlinking into virtual environment %} Create a symlink to the `cec` installation. Keep in mind different installation methods will result in different locations of cec. @@ -231,7 +235,7 @@ Toggle mute: {"mute": ""} ``` -value is ignores. +value is ignored. ## {% linkable_title Useful References %} diff --git a/source/_components/history_graph.markdown b/source/_components/history_graph.markdown new file mode 100644 index 00000000000..f38cd482907 --- /dev/null +++ b/source/_components/history_graph.markdown @@ -0,0 +1,62 @@ +--- +layout: page +title: "History Graph" +description: "Instructions for setting up History Graph." +date: 2017-09-20 15:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: History +logo: home-assistant.png +ha_release: "0.55" +--- +

+ +

+ +The `history_graph` component will make the UI display a graph similar to the graphs in `more-info` popups and the [history](/components/history/) panel. + +To use this component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Minimal configuration.yaml entry +history_graph: + gr1: + entities: + - light.ceiling.lights + +``` + +### {% linkable_title Configuration variables %} + +| Attribute | Optional | Default | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entities` | no | | List of entities whose history to show as a graph. | +| `name` | yes | ID | Name to display. | +| `hours_to_show` | yes | 24 | Number of hours to show. | +| `refresh` | yes | 0 | Number of seconds between graph refreshes. 0 for no refreshes. | + +### {% linkable_title Full Example %} + +```yaml +# Full configuration.yaml entry +history_graph: + gr1: + name: Lights Graph + entities: + - light.ceiling.lights + - light.bed_light + hours_to_show: 240 + refresh: 60 + gr2: + name: Temperature + entities: + - sensor.outside_temperature + - sensor.inside_temperature + hours_to_show: 120 + # refresh: 0 + +``` + + diff --git a/source/_components/homematic.markdown b/source/_components/homematic.markdown index 02de009442a..93cf903eb44 100644 --- a/source/_components/homematic.markdown +++ b/source/_components/homematic.markdown @@ -14,9 +14,10 @@ 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. +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. +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`. 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. @@ -35,14 +36,13 @@ homematic: Configuration variables (global): - **hosts** (*Required*): Configuration for each host to integrate into Home Assistant. -- **local_ip** (*Optional*): IP of device running Home Assistant. Override autodetected value for exotic network setups. +- **local_ip** (*Optional*): IP of device running Home Assistant. Override auto-detected value for exotic network setups. - **local_port** (*Optional*): Port for connection with Home Assistant. By default it is randomly assigned. -- **delay** (*Optional*): [Float] Delay fetching of current state per device on startup. Used to prevent overloading of the CCU. Defaults to 0.5. Configuration variables (host): - **ip** (*Required*): IP address of CCU/Homegear device. -- **port** (*Optional*): Port of CCU/Homegear XML-RPC Server. Default is 2001, use 2000 for wired and 2010 for IP. +- **port** (*Optional*): Port of CCU/Homegear XML-RPC Server. Wireless: 2001, wired: 2000, IP: 2010, thermostatgroups: 9292. - **callback_ip** (*Optional*): Set this, if Home Assistant is reachable under a different IP from the CCU (NAT, Docker etc.). - **callback_port** (*Optional*): Set this, if Home Assistant is reachable under a different port from the CCU (NAT, Docker etc.). - **resolvenames** (*Optional*): [`metadata`, `json`, `xml`] Try to fetch device names. Defaults to `false` if not specified. @@ -50,12 +50,12 @@ Configuration variables (host): - **password** (*Optional*): When fetching names via JSON-RPC, you need to specify the password of the user you have configured above. - **primary** (*Optional*): Set to `true` when using multiple hosts and this host should provide the services and variables. - **variables** (*Optional*): Set to `true` if you want to use CCU2/Homegear variables. Should only be enabled for the primary host. When using a CCU credentials are required. +- **path** (*Optional*): Set to `/groups` when using port 9292. #### Example configuration with multiple protocols and some other options set: ```yaml homematic: - delay: 1.0 hosts: rf: ip: 127.0.0.1 @@ -73,6 +73,13 @@ homematic: ip: ip: 127.0.0.1 port: 2010 + groups: + ip: 127.0.0.1 + port: 9292 + resolvenames: json + username: Admin + password: secret + path: /groups ``` ### {% linkable_title The `resolvenames` option %} @@ -89,7 +96,7 @@ Resolving names can take some time. So when you start Home Assistant you won't s In order to allow communication with multiple hosts or different protocols in parallel (wireless, wired and ip), multiple connections will be established, each to the configured destination. The name you choose for the host has to be unique and limited to ASCII letters. Using multiple hosts has the drawback, that the services (explained below) may not work as expected. Only one connection can be used for services, which limits the devices/variables a service can use to the scope/protocol of the host. -This does *not* affect the entites in Home Assistant. They all use their own connection and work as expected. +This does *not* affect the entities in Home Assistant. They all use their own connection and work as expected. ### {% linkable_title Reading attributes of entities %} diff --git a/source/_components/http.markdown b/source/_components/http.markdown index be058d6a342..e6e396109c0 100644 --- a/source/_components/http.markdown +++ b/source/_components/http.markdown @@ -14,7 +14,7 @@ ha_category: "Other" The `http` component serves all files and data required for the Home Assistant frontend. You only need to add this to your configuration file if you want to change any of the default settings.

-It's HIGHLY recommended that you set the `api_password`, especially if you are planning to expose your installation to the internet. +It is HIGHLY recommended that you set the `api_password`, especially if you are planning to expose your installation to the internet.

```yaml @@ -26,17 +26,16 @@ http: Configuration variables: - **api_password** (*Optional*): Protect Home Assistant with a password. -- **server_host** (*Optional*): Only listen to incoming requests on specific ip/host (default: accept all) +- **server_host** (*Optional*): Only listen to incoming requests on specific IP/host (default: accept all) - **server_port** (*Optional*): Let you set a port to use. Defaults to 8123. -- **base_url** (*Optional*): The URL that Home Assistant is available on the internet. For example: `hass-example.duckdns.org:8123`. Defaults to local IP address. 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. -- **development** (*Optional*): Disable caching and load unvulcanized assets. Useful for Frontend development. +- **base_url** (*Optional*): The URL that Home Assistant is available on the internet. For example: `hass-example.duckdns.org:8123`. Defaults to the local IP address. 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. - **ssl_certificate** (*Optional*): Path to your TLS/SSL certificate to serve Home Assistant over a secure connection. - **ssl_key** (*Optional*): Path to your TLS/SSL key to serve Home Assistant over a secure connection. - **cors_allowed_origins** (*Optional*): A list of origin domain names to allow [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) requests from. Enabling this will set the `Access-Control-Allow-Origin` header to the Origin header if it is found in the list, and the `Access-Control-Allow-Headers` header to `Origin, Accept, X-Requested-With, Content-type, X-HA-access`. You must provide the exact Origin, i.e. `https://home-assistant.io` will allow requests from `https://home-assistant.io` but __not__ `http://home-assistant.io`. - **use_x_forwarded_for** (*Optional*): Enable parsing of the `X-Forwarded-For` header, passing on the client's correct IP address in proxied setups. You should only enable this in a trustworthy network environment, as clients passing that header could easily spoof their source IP address. Defaults to False. -- **trusted_networks** (*Optional*): List of trusted networks, consisting of IP addresses or networks, that are allowed to bypass password protection when accessing Home Assistant. It should be noted that if you use a reverse proxy, all requests to home assistant, regardless of source, will arrive from the reverse proxy IP address. Therefore in a reverse proxy scenario this option should be used with extreme care. +- **trusted_networks** (*Optional*): List of trusted networks, consisting of IP addresses or networks, that are allowed to bypass password protection when accessing Home Assistant. It should be noted that if you use a reverse proxy, all requests to Home Assistant, regardless of source, will arrive from the reverse proxy IP address. Therefore in a reverse proxy scenario, this option should be used with extreme care. - **ip_ban_enabled** (*Optional*): Flag indicating whether additional IP filtering is enabled. Defaults to False. -- **login_attempts_threshold** (*Optional*): Number of failed login attemt from single IP after which it will be automatically banned if `ip_ban_enabled` is True. Defaults to -1, meaning that no new automatic bans will be added. +- **login_attempts_threshold** (*Optional*): Number of failed login attempt from single IP after which it will be automatically banned if `ip_ban_enabled` is True. Defaults to -1, meaning that no new automatic bans will be added. The sample below shows a configuration entry with possible values: @@ -62,6 +61,8 @@ http: The [Set up encryption using Let's Encrypt](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) blog post gives you details about the encryption of your traffic using free certificates from [Let's Encrypt](https://letsencrypt.org/). +Or use a self signed certificate following the instructions here [Self-signed certificate for SSL/TLS](/docs/ecosystem/certificates/tls_self_signed_certificate/) + On top of the `http` component is a [REST API](/developers/rest_api/) and a [Python API](/developers/python_api/) available. There is also support for [Server-sent events](/developers/server_sent_events/). The `http` platforms are not real platforms within the meaning of the terminology used around Home Assistant. Home Assistant's [REST API](/developers/rest_api/) sends and receives messages over HTTP. @@ -72,7 +73,7 @@ All [requests](/developers/rest_api/#post-apistatesltentity_id) need to be sent If you want to use Home Assistant to host or serve static files then create a directory called `www` under the `.homeassistant` configuration path. The static files in `.homeassistant/www/` can be accessed by the following URL `http://your.domain:8123/local/`. -If you want to apply additional IP filtering, and automatically ban bruteforce attempts, set `ip_ban_enabled` to `True` and select number of attempts. After first ban file `ip_bans.yaml` will be created in the root configuration folder. It will have IP address and time in UTC when it was added: +If you want to apply additional IP filtering, and automatically ban brute force attempts, set `ip_ban_enabled` to `True` and the maximum number of attempts. After the first ban, an `ip_bans.yaml` file will be created in the root configuration folder. It will have the banned IP address and time in UTC when it was added: ```yaml 127.0.0.1: diff --git a/source/_components/ifttt.manything.markdown b/source/_components/ifttt.manything.markdown index 5113b8bbcb7..7288afb90b9 100644 --- a/source/_components/ifttt.manything.markdown +++ b/source/_components/ifttt.manything.markdown @@ -11,7 +11,7 @@ logo: manything.png ha_category: Camera --- -[Manything](https://manything.com) is a smart app that turns your Android device, iPhone, iPod, or iPad into a wifi camera for monitoring your home, your pets, anything! Comes with live streaming, motion activated alerts, cloud video recording, and more. +[Manything](https://manything.com) is a smart app that turns your Android device, iPhone, iPod, or iPad into a WiFi camera for monitoring your home, your pets, anything! Comes with live streaming, motion activated alerts, cloud video recording, and more. To get manything support, HA will use IFTTT's [Maker Channel](https://ifttt.com/maker) and the [ManyThing Channel](https://ifttt.com/manything). Use the [IFTTT Setup instructions](/components/ifttt/) to activate the IFTTT Platform. diff --git a/source/_components/ifttt.markdown b/source/_components/ifttt.markdown index 8aa8aa16b57..fc330b5f799 100644 --- a/source/_components/ifttt.markdown +++ b/source/_components/ifttt.markdown @@ -13,15 +13,15 @@ featured: true ha_iot_class: "Cloud Push" --- -[IFTTT](https://ifttt.com) is a web service that allows users to create chains of simple conditional statements, so called "Applets". With the IFTTT component you can trigger applets through the **"Maker"** channel. See the [announcement blog post](/blog/2015/09/13/home-assistant-meets-ifttt/) for examples how to use it. +[IFTTT](https://ifttt.com) is a web service that allows users to create chains of simple conditional statements, so called "Applets". With the IFTTT component you can trigger applets through the **"Webhooks"** service (which was previously the **"Maker"** channel). See the [announcement blog post](/blog/2015/09/13/home-assistant-meets-ifttt/) for examples how to use it. ```yaml # Example configuration.yaml entry ifttt: - key: xxxxx-x-xxxxxxxxxxxxx + key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ``` -`key` is your API key which can be obtained by viewing the **Settings** of the [Maker Channel](https://ifttt.com/services/maker_webhooks/settings). It's the last part of the URL (e.g. https://maker.ifttt.com/use/MYAPIKEY) you will find under **Settings** > **Account Info**. +`key` is your API key which can be obtained by viewing the **Settings** of the [Webhooks applet](https://ifttt.com/services/maker_webhooks/settings). It's the last part of the URL (e.g. https://maker.ifttt.com/use/MYAPIKEY) you will find under **My Applets** > **Webhooks** > **Settings**.

@@ -37,7 +37,7 @@ After restarting the server, be sure to watch the console for any logging errors ### {% linkable_title Testing your trigger %} -You can use the **Developer tools** to test your [Maker Channel](https://ifttt.com/maker) trigger. To do this, open the Home Assistant frontend, open the sidebar, click on the first icon in the developer tools. This should get you to the **Call Service** screen. Fill in the following values: +You can use the **Developer tools** to test your [Webhooks](https://ifttt.com/maker_webhooks) trigger. To do this, open the Home Assistant frontend, open the sidebar, click on the first icon in the developer tools. This should get you to the **Call Service** screen. Fill in the following values: Field | Value ----- | ----- @@ -52,11 +52,11 @@ When your screen looks like this, click the 'call service' button. ### {% linkable_title Setting up a recipe %} -Press the *New applet* button and search for *Maker* . +Press the *New applet* button and search for *Webhooks*.

-Choose "Maker" as service. +Choose "Webhooks" as service.

diff --git a/source/_components/image_processing.dlib_face_detect.markdown b/source/_components/image_processing.dlib_face_detect.markdown index e6a9fc48981..6673146847d 100644 --- a/source/_components/image_processing.dlib_face_detect.markdown +++ b/source/_components/image_processing.dlib_face_detect.markdown @@ -13,9 +13,9 @@ featured: false ha_release: 0.44 --- -The `dlib_face_detect` image processing platform allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform enables you do detect face on camera and fire a event with attributes. +The `dlib_face_detect` image processing platform allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform enables face detection from cameras, and can fire events with attributes. -For using the result inside an automation rule, take a look at the [component](/components/image_processing/) page. +This can be used to trigger an automation rule. Further info is on the [component](/components/image_processing/) page. ### {% linkable_title Configuration Home Assistant %} diff --git a/source/_components/image_processing.dlib_face_identify.markdown b/source/_components/image_processing.dlib_face_identify.markdown index f7f1ab1e75b..1e47bf13e40 100644 --- a/source/_components/image_processing.dlib_face_identify.markdown +++ b/source/_components/image_processing.dlib_face_identify.markdown @@ -13,7 +13,7 @@ featured: false ha_release: 0.44 --- -The `dlib_face_identify` image processing platform allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform allow you do identify persons on camera and fire a event with identify persons. +The `dlib_face_identify` image processing platform allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform allow you to identify persons on camera and fire a event with identify persons. For using the result inside an automation rule, take a look at the [component](/components/image_processing/) page. diff --git a/source/_components/image_processing.markdown b/source/_components/image_processing.markdown index 41f36134250..e74ef6ec5c8 100644 --- a/source/_components/image_processing.markdown +++ b/source/_components/image_processing.markdown @@ -15,7 +15,7 @@ Image processing enables Home Assistant to process images from [cameras](/compon For interval control, use `scan_interval` in platform.

-If you are running Home Assistant over SSL or from within a container, you will have to setup a base url inside the [http component](/components/http/). +If you are running Home Assistant over SSL or from within a container, you will have to setup a base URL (`base_url`) inside the [http component](/components/http/).

## {% linkable_title ALPR %} diff --git a/source/_components/image_processing.openalpr_cloud.markdown b/source/_components/image_processing.openalpr_cloud.markdown index 7049a3e0ed9..3a13097c872 100644 --- a/source/_components/image_processing.openalpr_cloud.markdown +++ b/source/_components/image_processing.openalpr_cloud.markdown @@ -28,6 +28,7 @@ image_processing: source: - entity_id: camera.garage ``` + Configuration variables: - **region** (*Required*): Country or region. List of supported [values](https://github.com/openalpr/openalpr/tree/master/runtime_data/config). diff --git a/source/_components/image_processing.openalpr_local.markdown b/source/_components/image_processing.openalpr_local.markdown index 76e00486710..593a9212614 100644 --- a/source/_components/image_processing.openalpr_local.markdown +++ b/source/_components/image_processing.openalpr_local.markdown @@ -22,7 +22,7 @@ For using inside automation look on [component](/components/image_processing) pa If you want process all data locally, you need version 2.3.1 or higher of the `alpr` commandline tool. -If you don't find binaries for your distribution you can compile from source. Documention of how to build OpenALPR is found [here](https://github.com/openalpr/openalpr/wiki). +If you don't find binaries for your distribution you can compile from source. Documentation of how to build OpenALPR is found [here](https://github.com/openalpr/openalpr/wiki). On a Debian system you can use this `cmake` command to build only the command line tool: diff --git a/source/_components/image_processing.opencv.markdown b/source/_components/image_processing.opencv.markdown index de29cbee745..db6bfd2d5cb 100644 --- a/source/_components/image_processing.opencv.markdown +++ b/source/_components/image_processing.opencv.markdown @@ -15,9 +15,7 @@ ha_release: 0.47 [OpenCV](http://www.opencv.org) is an open source computer vision image and video processing library. -Some pre-defined classifiers can be found here: https://github.com/opencv/opencv/tree/master/data - -### {% linkable_title Configuration %} +Some pre-defined classifiers can be found [here](https://github.com/opencv/opencv/tree/master/data). To setup OpenCV with Home Assistant, add the following section to your `configuration.yaml` file: @@ -36,7 +34,7 @@ image_processing: - **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. -- **classifier** (*Optional*): Dictionary of name to path to the classifier xml file. If this field is not provided, a face classifier will be downloaded from OpenCV's github repo. +- **classifier** (*Optional*): Dictionary of name to path to the classifier xml file. If this field is not provided, a face classifier will be downloaded from OpenCV's Github repo. **classifier** may also be defined as a dictionary of names to classifier configurations: @@ -51,3 +49,5 @@ image_processing: - **file** (*Required*): The path to the classifier xml file. - **scale** (*Optional*): The scale to perform when processing, this is a `float` value that must be greater than or equal to `1.0`, default is `1.1`. - **neighbors** (*Optional*): The minimum number of neighbors required for a match, default is `4`. The higher this number, the more picky the matching will be; lower the number, the more false positives you may experience. + +If you would like to see the regions that OpenCV has detected, add this OpenCV camera to your config's `custom_components/camera` directory: [https://gist.github.com/Teagan42/bf4b941b34a79a3e184e149ff1efd82f](https://gist.github.com/Teagan42/bf4b941b34a79a3e184e149ff1efd82f) diff --git a/source/_components/image_processing.seven_segments.markdown b/source/_components/image_processing.seven_segments.markdown index e56eda3bdd5..db0ebf4f1b7 100644 --- a/source/_components/image_processing.seven_segments.markdown +++ b/source/_components/image_processing.seven_segments.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Seven segments display" -description: "Instructions how to use OCR for seven segemnts displays into Home Assistant." +description: "Instructions how to use OCR for seven segments displays into Home Assistant." date: 2017-05-18 08:00 sidebar: true comments: false @@ -15,17 +15,26 @@ og_image: /images/screenshots/ssocr.png ha_iot_class: "Local Polling" --- -The `seven_segments` image processing platform allows you to read physical seven segments displays through Home Assistant. [`ssocr`](https://www.unix-ag.uni-kl.de/~auerswal/ssocr/) is used to extract the value shown on the display which is observed by a [camera](/components/camera/). `ssocr` need to be available on your system. Check the installation instruction for Fedora below or use `$ sudo apt-get install ssocr` on a Debian-based system: +The `seven_segments` image processing platform allows you to read physical seven segments displays through Home Assistant. [`ssocr`](https://www.unix-ag.uni-kl.de/~auerswal/ssocr/) is used to extract the value shown on the display which is observed by a [camera](/components/camera/). + +

+If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. +

+ +`ssocr` needs to be available on your system. Check the installation instruction below: ```bash -$ sudo dnf -y install imlib2-devel +$ sudo dnf -y install imlib2-devel # Fedora +$ sudo apt install libimlib2-dev # Ubuntu +$ brew install imlib2 # macOS $ git clone https://github.com/auerswal/ssocr.git $ cd ssocr $ make -$ sudo make PREFIX=/usr install +$ sudo make PREFIX=/usr install # On most systems +$ make deb # (Optional) This allows you to make a deb so that you apt is aware of ssocr ``` -To enable the OCR of a seven segement display in your installation, add the following to your `configuration.yaml` file: +To enable the OCR of a seven segment display in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -89,7 +98,7 @@ sensor: - platform: template sensors: power_meter: - value_template: '{{ states.image_processing.sevensegement_ocr_seven_segments.state }}' + value_template: '{{ states.image_processing.sevensegment_ocr_seven_segments.state }}' friendly_name: 'Ampere' unit_of_measurement: 'A' ``` diff --git a/source/_components/influxdb.markdown b/source/_components/influxdb.markdown index c046bf0edbc..60bd6cac432 100644 --- a/source/_components/influxdb.markdown +++ b/source/_components/influxdb.markdown @@ -36,6 +36,8 @@ Configuration variables: - **verify_ssl** (*Optional*): Verify SSL certificate for https request. Defaults to false. - **default_measurement** (*Optional*): Measurement name to use when an entity doesn't have a unit. Defaults to entity id. - **override_measurement** (*Optional*): Measurement name to use instead of unit or default measurement. This will store all data points in a single measurement. +- **component_config**, **component_config_domain**, **component_config_glob** (*Optional*): These attributes contains component-specific override values. See [Customizing devices and services](https://home-assistant.io/getting-started/customizing-devices/) for format. + - **override_measurement** (*Optional*): Measurement name to use for this component, takes precedence over the global 'override_measurement' and component-specific 'unit_of_measurement' attribute. - **exclude** (*Optional*): Configure which components should be excluded from recording to InfluxDB. - **entities** (*Optional*): The list of entity ids to be excluded from recording to InfluxDB. - **domains** (*Optional*): The list of domains to be excluded from recording to InfluxDB. @@ -43,6 +45,7 @@ Configuration variables: - **entities** (*Optional*): The list of entity ids to be included from recordings to InfluxDB. - **domains** (*Optional*): The list of domains to be included from recordings to InfluxDB. - **tags** (*Optional*): Tags to mark the data. +- **tags_attributes** (*Optional*): The list of attribute names which should be reported as tags and not fields to InfluxDB. For example, if set to `friendly_name`, it will be possible to group by entities' friendly names as well, in addition to their ids. ## {% linkable_title Data migration %} @@ -106,10 +109,10 @@ optional arguments: 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`. +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 commandline options `--exclude_entities` and `--exclude_domains`. +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. diff --git a/source/_components/input_boolean.markdown b/source/_components/input_boolean.markdown index fa05489a7fa..61e82ff846c 100644 --- a/source/_components/input_boolean.markdown +++ b/source/_components/input_boolean.markdown @@ -13,6 +13,8 @@ ha_category: Automation The `input_boolean` component allows the user to define boolean values that can be controlled via the frontend and can be used within conditions of automation. This can for example be used to disable or enable certain automations. +To enable input booleans in your installation, add the following lines to your `configuration.yaml`: + ```yaml # Example configuration.yaml entry input_boolean: @@ -25,9 +27,9 @@ input_boolean: Configuration variables: - **[alias]** (*Required*): Alias for the input. -- **name** (*Optional*): Friendly name of the input. -- **initial** (*Optional*): Initial value when Home Assistant starts. -- **icon** (*Optional*): Icon for entry. + - **name** (*Optional*): Friendly name of the input. + - **initial** (*Optional*): Initial value when Home Assistant starts. Defaults to `False`. + - **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`. diff --git a/source/_components/input_datetime.markdown b/source/_components/input_datetime.markdown new file mode 100644 index 00000000000..f9351f09848 --- /dev/null +++ b/source/_components/input_datetime.markdown @@ -0,0 +1,50 @@ +--- +layout: page +title: "Input Datetime" +description: "Instructions how to integrate the Input Datetime component into Home Assistant." +date: 2017-09-14 16:01 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Automation +ha_release: 0.55 +--- + +The `input_datetime` component allows the user to define date and time values that can be controlled via the frontend and can be used within automations and templates. + +To add three datetime inputs to your installation, one with both date and time, and one with date or time each, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +input_datetime: + both_date_and_time: + name: Input with both date and time + has_date: true + has_time: true + only_date: + name: Input with only date + has_date: true + has_time: false + only_time: + name: Input with only time + has_date: false + has_time: true +``` + +Configuration variables: + +- **[alias]** (*Required*): Alias for the datetime input. Multiple entries are allowed. + - **name** (*Optional*): Friendly name of the datetime input. + - **has_time** (*Optional*): Set to `true` if this input should have time. Defaults to `false`. + - **has_date** (*Optional*): Set to `true` if this input should have a date. Defaults to `false`. + - **initial** (*Optional*): Set the initial value of this input. Defaults to '1970-01-01 00:00'. + +A datetime input entity's state exports several attributes that can be useful in automations and templates: + +- **has_time**: `true` if this entity has time. +- **has_date**: `true` if this entity has a date. +- **year**, **month**, **day** (Only available if *has_date* is true): The year, month and day of the date. +- **hour**, **minute**, **second** (Only available if *has_time* is true): The hour, minute and second of the time. +- **timestamp**: A timestamp representing the time held in the input. If *has_date* is true, this is the UNIX timestamp of the date / time held by the input. Otherwise (i.e., if only *has_time* is true) the number of seconds since midnight representing the time held by the input. diff --git a/source/_components/input_slider.markdown b/source/_components/input_number.markdown similarity index 52% rename from source/_components/input_slider.markdown rename to source/_components/input_number.markdown index beb458a5b25..e043b924696 100644 --- a/source/_components/input_slider.markdown +++ b/source/_components/input_number.markdown @@ -1,49 +1,66 @@ --- layout: page -title: "Input Slider" -description: "Instructions how to integrate the Input Slider component into Home Assistant." -date: 2016-03-15 06:00 +title: "Input Number" +description: "Instructions how to integrate the Input Number component into Home Assistant." +date: 2017-09-19 03:30 sidebar: true comments: false sharing: true footer: true logo: home-assistant.png ha_category: Automation -ha_release: 0.16 +ha_release: 0.55 +redirect_from: /components/input_slider/ --- -The `input_slider` component allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. Changes to the slider generate state events. These state events can be utilized as `automation` triggers as well. +

+Before version 0.55 this component was known as `input_slider` and did not have the `mode` configuration option. +

+ +The `input_number` component allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. The frontend can display a slider, or a numeric input box. Changes to the slider or numeric input box generate state events. These state events can be utilized as `automation` triggers as well. + +To enable this input number in your installation, add the following lines to your `configuration.yaml`: ```yaml # Example configuration.yaml entry -input_slider: +input_number: slider1: - name: Slider 1 + name: Slider initial: 30 min: -20 max: 35 step: 1 + box1: + name: Numeric Input Box + initial: 30 + min: -20 + max: 35 + step: 1 + mode: box ``` Configuration variables: -- **[alias]** (*Required*): Alias for the slider input. -- **min** (*Required*): Minimum value for the slider. -- **max** (*Required*): Maximum value for the slider. -- **name** (*Optional*): Friendly name of the slider input. -- **initial** (*Optional*): Initial value when Home Assistant starts. -- **step** (*Optional*): Step value for the slider. +- **[alias]** (*Required*): Alias for the input. Multiple entries are allowed. + - **min** (*Required*): Minimum value. + - **max** (*Required*): Maximum value. + - **name** (*Optional*): Friendly name of the input. + - **initial** (*Optional*): Initial value when Home Assistant starts. Defaults to 0. + - **step** (*Optional*): Step value for the slider. Defaults to 1. + - **mode** (*Optional*): Can specify `box`, or `slider`. Defaults to `slider`. + - **unit_of_measurement** (*Optional*): Unit of measurement in which the value of the slider is expressed in. + - **icon** (*Optional*): Icon to display in front of the box/slider in the frontend. Refer to the [Customizing devices](https://home-assistant.io/docs/configuration/customizing-devices/#possible-values) page for possible values. ## {% linkable_title Automation Examples %} -Here's an example of `input_slider` being used as a trigger in an automation. +Here's an example of `input_number` being used as a trigger in an automation. ```yaml {% raw %} -# Example configuration.yaml entry using 'input_slider' as a trigger in an automation +# Example configuration.yaml entry using 'input_number' as a trigger in an automation -# Define input_slider -input_slider: +# Define input_number +input_number: bedroom_brightness: name: Brightness initial: 254 @@ -56,7 +73,7 @@ automation: - alias: Bedroom Light - Adjust Brightness trigger: platform: state - entity_id: input_slider.bedroom_brightness + entity_id: input_number.bedroom_brightness action: - service: light.turn_on # Note the use of 'data_template:' below rather than the normal 'data:' if you weren't using an input variable @@ -66,11 +83,11 @@ automation: {% endraw %} ``` -Another code example using `input_slider`, this time being used in an action in an automation. +Another code example using `input_number`, this time being used in an action in an automation. ```yaml {% raw %} -# Example configuration.yaml entry using 'input_slider' in an action in an automation +# Example configuration.yaml entry using 'input_number' in an action in an automation # Define 'input_select' input_select: @@ -85,8 +102,8 @@ input_select: - 'OFF' initial: 'Select' -# Define input_slider -input_slider: +# Define input_number +input_number: bedroom_brightness: name: Brightness initial: 254 @@ -106,19 +123,19 @@ automation: # Again, note the use of 'data_template:' rather than the normal 'data:' if you weren't using an input variable. data_template: entity_id: light.bedroom - brightness: '{{ states.input_slider.bedroom_brightness.state | int }}' + brightness: '{{ states.input_number.bedroom_brightness.state | int }}' {% endraw %} ``` -Example of `input_slider` being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation. +Example of `input_number` being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation. ```yaml {% raw %} -# Example configuration.yaml entry using 'input_slider' in an action in an automation +# Example configuration.yaml entry using 'input_number' in an action in an automation -# Define input_slider -input_slider: +# Define input_number +input_number: target_temp: name: Target Heater Temperature Slider min: 1 @@ -134,11 +151,11 @@ input_slider: trigger: platform: mqtt topic: "setTemperature" - # entity_id: input_slider.target_temp + # entity_id: input_number.target_temp action: - service: input_slider.select_value + service: input_number.set_value data_template: - entity_id: input_slider.target_temp + entity_id: input_number.target_temp value: '{{ trigger.payload}}' # This automation script runs when the target temperature slider is moved. @@ -146,12 +163,12 @@ input_slider: - alias: Temp slider moved trigger: platform: state - entity_id: input_slider.target_temp + entity_id: input_number.target_temp action: service: mqtt.publish data_template: topic: "setTemperature" retain: true - payload: '{{ states.input_slider.target_temp.state | int }}' + payload: '{{ states.input_number.target_temp.state | int }}' {% endraw %} ``` diff --git a/source/_components/input_select.markdown b/source/_components/input_select.markdown index 45dbc19c0d8..e8cf94f94d1 100644 --- a/source/_components/input_select.markdown +++ b/source/_components/input_select.markdown @@ -14,7 +14,7 @@ ha_release: 0.13 The `input_select` component allows the user to define a list of values that can be selected via the frontend and can be used within conditions of automation. When a user selects a new item, a state transition event is generated. This state event can be used in an `automation` trigger. -To enable this platform, add the following lines to your `configuration.yaml`: +To enable this platform in your installation, add the following lines to your `configuration.yaml`: ```yaml # Example configuration.yaml entry @@ -35,14 +35,18 @@ input_select: Configuration variables: -- **[alias]** (*Required*): Alias for the input. -- **name** (*Optional*): Friendly name of the input. -- **options** array: List of options to choose from -- **initial** (*Optional*): Initial value when Home Assistant starts. -- **icon** (*Optional*): Icon for entry. +- **[alias]** array (*Required*): Alias for the input. Multiple entries are allowed.. + - **name** (*Optional*): Friendly name of the input. + - **options** array (*Required*): List of options to choose from. + - **initial** (*Optional*): Initial value when Home Assistant starts. + - **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`. +

+Because YAML defines [booleans](http://yaml.org/type/bool.html) as equivalent, any variations of 'On', 'Yes', 'Y', 'Off', 'No', or 'N' (regardless of case) used as option names will be replaced by True and False unless they are defined in quotation marks. +

+ ### {% linkable_title Services %} This components provide three services to modify the state of the `input_select`: @@ -67,6 +71,22 @@ automation: option: Paulus ``` +To dynamically set the `input_select` options you can call `input_select.set_options`. The following example can be used in an automation rule: + +```yaml +# Example configuration.yaml entry +automation: + - alias: example automation + trigger: + platform: event + event_type: MY_CUSTOM_EVENT + action: + - service: input_select.set_options + data: + entity_id: input_select.who_cooks + options: ["Item A", "Item B", "Item C"] +``` + ### {% linkable_title Scenes %} To specify a target option in a [Scene](/components/scene/) you have to specify the target as `option` attribute: diff --git a/source/_components/input_text.markdown b/source/_components/input_text.markdown new file mode 100644 index 00000000000..26ad4846a74 --- /dev/null +++ b/source/_components/input_text.markdown @@ -0,0 +1,39 @@ +--- +layout: page +title: "Input Text" +description: "Instructions how to integrate the Input Text component into Home Assistant." +date: 2016-03-15 06:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Automation +ha_release: 0.53 +--- + +The `input_text` component allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. Changes to the value stored in the text box generate state events. These state events can be utilized as `automation` triggers as well. + +```yaml +# Example configuration.yaml entries +input_text: + text1: + name: Text 1 + initial: Some Text + text2: + name: Text 2 + min: 8 + max: 40 + text3: + name: Text 3 + pattern: '[a-fA-F0-9]*' +``` + +Configuration variables: + +- **[alias]** (*Required*): Alias for the text input. +- **min** (*Optional*): Minimum length for the text value. Default is `0`. +- **max** (*Optional*): Maximum length for the text value. Default is `100`. +- **name** (*Optional*): Friendly name of the text input. +- **initial** (*Optional*): Initial value when Home Assistant starts. Default is empty string. +- **pattern** (*Optional*): Regex pattern for client side validation. Default is empty string, which is treated same as `.*`. diff --git a/source/_components/insteon_hub.markdown b/source/_components/insteon_hub.markdown index 7318b88ee15..03bf4b8a6ec 100644 --- a/source/_components/insteon_hub.markdown +++ b/source/_components/insteon_hub.markdown @@ -32,6 +32,6 @@ insteon_hub: Configuration variables: -- **username** (*Required*): The username used to access the Insteon interface (e.g. the [connect.insteon.com](connect.insteon.com) site). +- **username** (*Required*): The username used to access the Insteon interface (e.g. the [connect.insteon.com](http://connect.insteon.com/) site). - **password** (*Required*): The password used to access the Insteon interface. - **api_key** (*Required*): The Insteon REST API key emailed to you once you are approved in the Insteon Developer program. diff --git a/source/_components/insteon_local.markdown b/source/_components/insteon_local.markdown index 1b1343083a3..96a339f0f03 100644 --- a/source/_components/insteon_local.markdown +++ b/source/_components/insteon_local.markdown @@ -50,5 +50,8 @@ light: switch: - platform: insteon_local + +fan: + - platform: insteon_local ``` diff --git a/source/_components/insteon_plm.markdown b/source/_components/insteon_plm.markdown index 8949d4872ed..f28db9b74cd 100644 --- a/source/_components/insteon_plm.markdown +++ b/source/_components/insteon_plm.markdown @@ -63,7 +63,7 @@ unambiguous, but sometimes the component will not be able to guess the actual usage of the device. For example, there might be a table lamp plugged into an INSTEON appliance relay module. By default, this will show as a 'switch' device in Home Assistant, but it really should be a 'light' device. For -exceptions like this, the component supports a device plaform override. You +exceptions like this, the component supports a device platform override. You can set any device (by address) to explicitly use a specific platform if the default is not correct. diff --git a/source/_components/intent_script.markdown b/source/_components/intent_script.markdown new file mode 100644 index 00000000000..68336fd79d5 --- /dev/null +++ b/source/_components/intent_script.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "Intent Script" +description: "Instructions on how to setup scripts to run on intents." +date: 2016-02-10 17:11 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Intent +ha_release: "0.50" +--- + +The intent_script component allows users to configure actions and responses to intents. Intents can be fired by any component that supports it. Examples are Alexa (Amazon Echo), API.ai (Google Assistant) and Snips. + +```yaml +# Example configuration.yaml entry +intent_script: + GetTemperature: # Intent type + speech: + text: We have {% raw %}{{ states.sensor.temperature }}{% endraw %} degrees + action: + service: notify.notify + 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. + diff --git a/source/_components/isy994.markdown b/source/_components/isy994.markdown index bcdbc50d6f6..8cf050f2383 100644 --- a/source/_components/isy994.markdown +++ b/source/_components/isy994.markdown @@ -88,7 +88,7 @@ A device is created by creating a directory, with the name for the device, under * *HA.lock* will create a lock * *HA.switch* will create a switch -A program, named *status*, is required under the program device directory. A program, named *actions*, is required for all program devices except for binary_sensor. Any other programs in these device directories will be ignored. +A program, named *status*, is required under the program device directory. A program, named *actions*, is required for all program devices except for binary_sensor. Any other programs in these device directories will be ignored. The *status* program requires that you create a variable with the name of your choice. This variable will store the actual status of the new device and will be updated by the *action* program.

diff --git a/source/_components/joaoapps_join.markdown b/source/_components/joaoapps_join.markdown index a66389a6c88..e27aa82e1a1 100644 --- a/source/_components/joaoapps_join.markdown +++ b/source/_components/joaoapps_join.markdown @@ -13,7 +13,7 @@ ha_release: "0.24" --- -The Join platform exposes services from [Join](http://joaoapps.com/join). In Home Assistant, the Join features are divided up in two locations, the Join component, and the Join notify platform. The notify platform allows us to send messages to Join devices, the the component allows us to access the other special features that Join offers. +The Join platform exposes services from [Join](http://joaoapps.com/join). In Home Assistant, the Join features are divided up in two locations, the Join component, and the Join notify platform. The notify platform allows us to send messages to Join devices, the component allows us to access the other special features that Join offers. In the `configuration.yaml` file you need to provide the api key and device id or name of the target device. You can find your device id and api key [here](https://joinjoaomgcd.appspot.com/). diff --git a/source/_components/keyboard_remote.markdown b/source/_components/keyboard_remote.markdown index 5c6a3502ad0..f1d80bfa973 100644 --- a/source/_components/keyboard_remote.markdown +++ b/source/_components/keyboard_remote.markdown @@ -69,7 +69,7 @@ automation: ``` ## {% linkable_title Disconnections %} -This component manages disconnections and re-connections of the keyboard, for example in the case of a bluetooth device that turns off automatically to preserve battery. +This component manages disconnections and re-connections of the keyboard, for example in the case of a Bluetooth device that turns off automatically to preserve battery. If the keyboard disconnects, the component will fire an event `keyboard_remote_disconnected`. When the keyboard reconnects, an event `keyboard_remote_connected` will be fired. diff --git a/source/_components/knx.markdown b/source/_components/knx.markdown index 89137d2ee90..b813ac3aee4 100644 --- a/source/_components/knx.markdown +++ b/source/_components/knx.markdown @@ -1,34 +1,100 @@ --- layout: page title: "KNX" -description: "Instructions on how to integrate KXN components with Home Assistant." +description: "Instructions on how to integrate KNX components with Home Assistant." date: 2016-06-08 12:00 sidebar: true comments: false sharing: true footer: true logo: knx.png -ha_category: DIY +ha_category: Hub ha_release: 0.24 ha_iot_class: "Local Polling" --- -[KNX/EIB](http://www.knx.org) integration for Home Assistant allows you to connect to a KNX bus. The component requires a local KNX/IP interface like the [Weinzierl 730](http://www.weinzierl.de/index.php/en/all-knx/knx-devices-en/knx-ip-interface-730-en). Through this it will send and receive commands to and from other devices to the KNX bus. + +The [KNX](http://www.knx.org) integration for Home Assistant allows you to connect to a KNX/IP devices. + +The component requires a local KNX/IP interface like the [Weinzierl 730](http://www.weinzierl.de/index.php/en/all-knx/knx-devices-en/knx-ip-interface-730-en). Through this, it will send and receive commands to and from other devices to the KNX bus. There is currently support for the following device types within Home Assistant: - + - [Binary Sensor](/components/binary_sensor.knx) +- [Cover](/components/cover.knx) - [Sensor](/components/sensor.knx) - [Switch](/components/switch.knx) - [Light](/components/light.knx) - [Thermostat](/components/climate.knx) +- [Notify](/components/notify.knx) -A `knx` section must be present in the `configuration.yaml` file and contain the following options as required: +### {% linkable_title Configuration %} + +To use your KNX in your installation, add the following lines to your `configuration.yaml` file: ```yaml -# Example configuration.yaml entry knx: ``` -- **host** (*Optional*): The IP address of the KNX/IP interface to use. It defaults to `0.0.0.0` which will start discovery for your KNX/IP gateway. -- **port** (*Optional*): The UDP port number. Defaults to `3671`. +Optional, recommended for large KNX installations (>100 devices) and/or if you want to use the XKNX abstraction also for other scripted tools outside of Home Assistant: + +```yaml +knx: + config_file: '/path/to/xknx.yaml' +``` + +- **config_file** (*Optional*): The path for XKNX configuration file. + +If the auto detection of the KNX/IP device does not work you can specify ip/port of the tunneling device: + +```yaml +knx: + tunneling: + host: '192.168.2.23' + port: 3671 + local_ip: '192.168.2.109' +``` + +- **host**: Host of the KNX/IP tunneling device. +- **port**: Port of the KNX/IP tunneling device. +- **local_ip**: IP of the local interface. + +Explicit connection to a KNX/IP routing device: + +```yaml +knx: + config_file: '/path/to/xknx.yaml' + routing: + local_ip: '192.168.2.109' +``` + +- **local_ip**: The local IP address of interface (which should be used for multicasting). + +```yaml +knx: + fire_event: True + fire_event_filter: ["1/0/*", "6/2,3,4-6/*"] +``` + +- **fire_event** (*Optional*): If set to True, platform will write all received KNX messages to event bus +- **fire_event_filter** (*Optional*): If `fire_event` is set `fire_event_filter` has to be specified. `fire_event_filter` defines a list of patterns for filtering KNX addresses. Only telegrams which match this pattern are sent to the HOme Assistant event bus. +- **state_updater** (*Optional*): The component will collect the current state of each configured device from the KNX bus to display it correctly within Home-Assistant. Set this option to False to prevent this behaviour. + +### {% linkable_title Services %} + +In order to directly interact with the KNX bus, you can now use the following service: + +``` +Domain: knx +Service: send +Service Data: {"address": "1/0/15", "payload": 0} +``` + +* **address**: KNX group address +* **payload**: Payload, either an integer or an array of integers + + +### {% linkable_title Known issues %} + +Due to lame multicast support the routing abstraction and the gateway scanner only work with Python >=3.5. + diff --git a/source/_components/lametric.markdown b/source/_components/lametric.markdown new file mode 100644 index 00000000000..6431b954542 --- /dev/null +++ b/source/_components/lametric.markdown @@ -0,0 +1,28 @@ +--- +layout: page +title: "LaMetric" +description: "Instructions on how to integrate LaMetric with Home Assistant." +date: 2017-04-02 13:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: lametric.png +ha_category: Hub +ha_release: 0.49 +--- + +[LaMetric Time](http://lametric.com) is a smart clock that can be used to access applications, listen to web radio and display notifications. + +There is currently support for the following device types within Home Assistant: + +- [Notify](/components/notify.lametric) + +The LaMetric Time can only be accessed by authorized applications. Therefore, each application that wants to access the LaMetric time needs to be registered at the LaMetric Developer web page. Sign Up and login to the developer web page. Click the Create button in the upper right corner, then select Notification App and click Create again. Enter an app name, a description and a redirect URL. Finally, click Save to create the application. For the newly created app you will obtain a client id and a client secret that is required in the following configuration. + +```yaml +# configuration.yaml example +lametric: + client_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx + client_secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +``` diff --git a/source/_components/light.abode.markdown b/source/_components/light.abode.markdown new file mode 100644 index 00000000000..bb6d597deef --- /dev/null +++ b/source/_components/light.abode.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Abode Light" +description: "Instructions how to integrate Abode lights into Home Assistant." +date: 2017-08-26 13:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: abode.jpg +ha_release: 0.54 +ha_category: Light +ha_iot_class: "Cloud Push" +--- + +The `abode` security control panel platform allows you to control your [Abode](https://goabode.com/) alarms. + +This component will automatically add `Lights` configured in your Abode account. You can reclassify `Switches` to show up within Home Assistant as lights by listing the Abode device ID in your [configuration](/components/abode/#configuration). + +The requirement is that you have setup your [Abode hub](/components/abode/). diff --git a/source/_components/light.avion.markdown b/source/_components/light.avion.markdown index 6fbcab8a579..74260e93957 100644 --- a/source/_components/light.avion.markdown +++ b/source/_components/light.avion.markdown @@ -19,6 +19,27 @@ To enable these lights, add the following lines to your `configuration.yaml` fil ```yaml # Example configuration.yaml entry +light: + - platform: avion + username: testuser@fakedomain.com + password: foobar +``` + +Configuration variables: + +- **username** (*Optional*): The username used in the Avion app. If username and password are both provided, any associated switches will automatically be added to your configuration. +- **password** (*Optional*): The password used in the Avion app. +- **devices** (*Optional*): An optional list of devices with their Bluetooth address, a custom name to use in the frontend and the API key. The API key can be obtained by executing the following command: +``` +curl -X POST -H "Content-Type: application/json" -d '{"email": "fakename@example.com", "password": "password"}' https://admin.avi-on.com/api/sessions | jq +``` + +with the email and password fields replaced with those used when registering the device via the mobile app. The pass phrase field of the output should be used as the API key in the configuration. + +If username and password are not supplied, devices must be configured manually like so: + +```yaml +# Manual device configuration.yaml entry light: - platform: avion devices: @@ -26,16 +47,6 @@ light: name: Light 1 api_key: Gr35a/rt3RgaRenl9ag8Ba== 00:21:3D:20:00:a1: - name: Bulb 2 + name: Light 2 api_key: Gr35a/rt3RgaRenl9ag8Ba== ``` - -Configuration variables: - -- **devices**: A list of devices with their bluetooth address, a custom name to use in the frontend and the API key. The API key can be obtained by executing the following command: - -``` -curl -X POST -H "Content-Type: application/json" -d '{"email": "fakename@example.com", "password": "password"}' https://admin.avi-on.com/api/sessions | jq -``` - -with the email and password fields replaced with those used when registering the device via the mobile app. The passphrase field of the output should be used as the API key in the configuration. diff --git a/source/_components/light.decora.markdown b/source/_components/light.decora.markdown index d40acae2bac..b9f0063e3f5 100644 --- a/source/_components/light.decora.markdown +++ b/source/_components/light.decora.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Decora" +title: "Leviton Decora" description: "Instructions on how to setup Leviton Decora Bluetooth dimmers within Home Assistant." date: 2017-01-18 22:45 sidebar: true @@ -33,4 +33,24 @@ Configuration variables: - **devices** array (*Required*): A list of lights to use. - **[mac address]** (*Required*): The bluetooth address of the switch. - **name** (*Optional*): The custom name to use in the frontend. - - **api_key** (*Required*): The API key to acces the device. + - **api_key** (*Required*): The API key to access the device. + +

+If you get an error looking like this: + +```bash +Jun 20 19:41:18 androlapin hass[29588]: ERROR:homeassistant.components.light:Error while setting up platform decora +[...] +Jun 20 19:41:18 androlapin hass[29588]: File "/usr/lib/python3.6/concurrent/futures/thread.py", line 55, in run +Jun 20 19:41:18 androlapin hass[29588]: result = self.fn(*self.args, **self.kwargs) +Jun 20 19:41:18 androlapin hass[29588]: File "/opt/homeassistant/custom_components/light/decora.py", line 68, in setup_platform +Jun 20 19:41:18 androlapin hass[29588]: light = DecoraLight(device) +[...] +Jun 20 19:41:18 androlapin hass[29588]: OSError: [Errno 8] Exec format error +``` + +1. Go to your `.homeassistant` folder +2. Then go to `deps/bluepy` subfolder. +3. Then run `make all` +4. Restart Home Assistant +

diff --git a/source/_components/light.decora_wifi.markdown b/source/_components/light.decora_wifi.markdown new file mode 100644 index 00000000000..85dbcd0e575 --- /dev/null +++ b/source/_components/light.decora_wifi.markdown @@ -0,0 +1,37 @@ +--- +layout: page +title: "Leviton Decora Wi-Fi" +description: "Instructions on how to setup Leviton Decora Smart Wi-Fi switches/dimmers within Home Assistant." +date: 2017-07-19 12:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Light +ha_iot_class: "Local Polling" +logo: leviton.png +ha_release: 0.51 +--- + +Support for [Leviton Decora Wi-Fi](http://www.leviton.com/en/products/lighting-controls/decora-smart-with-wifi) dimmers/switches. + +Supported devices (tested): + +- [DW6HD1-BZ](https://www.leviton.com/en/products/dw6hd) (Decora Smart Wi-Fi 600W Dimmer) + +To enable these lights, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - platform: decora_wifi + username: my_leviton_user_email@email.com + password: my_leviton_password +``` + +Configuration variables: + +- **username** (*Required*): Your "My Leviton" app email address/user name. +- **password** (*Required*): Your "My Leviton" app password. + + diff --git a/source/_components/light.hue.markdown b/source/_components/light.hue.markdown index f5ee01556dd..871972d4f0c 100644 --- a/source/_components/light.hue.markdown +++ b/source/_components/light.hue.markdown @@ -16,33 +16,51 @@ ha_release: pre 0.7 Philips Hue support is integrated into Home Assistant as a light platform. The preferred way to setup the Philips Hue platform is by enabling the [discovery component](/components/discovery/). -Once discovered, if you have a custom default view, locate `configurator.philips_hue` in the entities list ( < > ) and add it to a group in `configuration.yaml`. Restart Home Assistant so that the configurator is visible in the Home Assistant dashboard. Once Home Assistant is restarted, locate and click on `configurator.philips_hue` to bring up the initiation dialog. This will prompt you to press the Hue button to register the Hue hub in home assistant. Once complete, the configurator entity isn't needed anymore and can be removed from any visible group in `configuration.yaml`. +Once discovered, if you have a custom default view, locate `configurator.philips_hue` in the entities list ( < > ) and add it to a group in `configuration.yaml`. Restart Home Assistant so that the configurator is visible in the Home Assistant dashboard. Once Home Assistant is restarted, locate and click on `configurator.philips_hue` to bring up the initiation dialog. This will prompt you to press the Hue button to register the Hue hub in Home Assistant. Once complete, the configurator entity isn't needed anymore and can be removed from any visible group in `configuration.yaml`. -Restarting Home Assistant once more should result in the Hue lights listed as "light" entities. Add these light entities to configuration.yaml and restart home assistant once more to complete the installation. +When you configure the Hue bridge from Home Assistant, it writes a token to a file in your Home Assistant [configuration directory](/docs/configuration/). That token authenticates the communication with the Hue bridge. This token uses the IP Address of the Hue Bridge. If the IP address for the Hue Bridge changes, you will need to register the Hue Bridge with Home Assistant again. To avoid this you may set up DHCP registration for your Hue Bridge, so that it always has the same IP address. -If you want to enable the component without relying on the [discovery component](/components/discovery/), add the following lines to your `configuration.yaml`: +Restarting Home Assistant once more should result in the Hue lights listed as "light" entities. Add these light entities to configuration.yaml and restart Home Assistant once more to complete the installation. + +If you want to enable the component without relying on the [discovery component](/components/discovery/), add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry light: - platform: hue - host: DEVICE_IP_ADDRESS + - platform: hue + host: DEVICE_IP_ADDRESS ``` Configuration variables: - **host** (*Optional*): IP address of the device, eg. 192.168.1.10. Required if not using the `discovery` component to discover Hue bridges. - - **allow_unreachable** (*Optional*): (true/false) This will allow unreachable bulbs to report their state correctly. - **filename** (*Optional*): Make this unique if specifying multiple Hue hubs. - **allow_in_emulated_hue** (*Optional*): )true/false) Enable this to block all Hue entities from being added to the `emulated_hue` component. - **allow_hue_groups** (*Optional*): (true/false) Enable this to stop Home Assistant from importing the groups defined on the Hue bridge. +### {% linkable_title Multiple Hue bridges %} + +If you use multiple Hue bridges then it's needed that you provide a configuration file for every bridge. The bridges can't share a single configuration file. + +Add `filename` to your Hue configuration entry in your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - platform: hue + host: BRIDGE1_IP_ADDRESS + filename: phue.conf + - platform: hue + host: BRIDGE2_IP_ADDRESS + filename: phue2.conf +``` + ### {% linkable_title Using Hue Groups in Home Assistant %} -The Hue API allows you to group lights. Home Assistant also supports grouping of entities natively, but sometimes it can be usefull to use Hue Groups to group light bulbs. By doing so, Home Assistant only needs to send one API call to change the state of all the bulbs in those groups instead of one call for every light in the group. This causes all the bulbs to change state simultaniously. +The Hue API allows you to group lights. Home Assistant also supports grouping of entities natively, but sometimes it can be useful to use Hue Groups to group light bulbs. By doing so, Home Assistant only needs to send one API call to change the state of all the bulbs in those groups instead of one call for every light in the group. This causes all the bulbs to change state simultaneously. -These Hue Groups can be a `Luminaire`, `Lightsource`, `LightGroup` or `Room`. The `Luminaire` and `Lightsource` can't be created manually since the Hue bridge manages these automatically based on the discovered bulbs. The `Room` and `LightGroup` can be created manually through the API, or the mobile app. A bulb can only exist in one `Room`, but can exist in multiple `LightGroup`. The `LightGroup` can be usefull to link certain bulbs together since. +These Hue Groups can be a `Luminaire`, `Lightsource`, `LightGroup` or `Room`. The `Luminaire` and `Lightsource` can't be created manually since the Hue bridge manages these automatically based on the discovered bulbs. The `Room` and `LightGroup` can be created manually through the API, or the mobile app. A bulb can only exist in one `Room`, but can exist in multiple `LightGroup`. The `LightGroup` can be useful to link certain bulbs together since. The 2nd generation Hue app only allows to create a `Room`. You need to use the first generation app or the API to create a `LightGroup`. @@ -73,10 +91,11 @@ More information can be found on the [Philips Hue API documentation](https://www ### {% linkable_title Using Hue Scenes in Home Assistant %} -The Hue platform has it's own concept of Scenes for setting the colors of a group of lights at once. Hue Scenes are very cheap, get created by all kinds of apps (as it is the only way to have 2 or more lights change at the same time), and are rarely deleted. A typical Hue hub might have hundreds of scenes stored in them, many that you've never used, almost all very poorly named. +The Hue platform has it's own concept of scenes for setting the colors of a group of lights at once. Hue Scenes are very cheap, get created by all kinds of apps (as it is the only way to have 2 or more lights change at the same time), and are rarely deleted. A typical Hue hub might have hundreds of scenes stored in them, many that you've never used, almost all very poorly named. -To avoid user interface overload we don't expose Scenes directly. Instead there is a [light.hue_activate_scene](/components/light/#service-lighthue_activate_scene) service which can be used by `automation` or `script` components. +To avoid user interface overload we don't expose scenes directly. Instead there is a [light.hue_activate_scene](/components/light/#service-lighthue_activate_scene) service which can be used by `automation` or `script` components. This will have all the bulbs transitioned at once, instead of one at a time using standard scenes in Home Assistant. + For instance: ```yaml @@ -92,7 +111,7 @@ script: | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `group_name` | no | The group/room name of the lights. Find this in the Hue official app. -| `scene_name` | no | The name of the Scene. Find this in the Hue official app. +| `scene_name` | no | The name of the scene. Find this in the Hue official app. *Note*: `group_name` is not linked to Home Assistant group name. @@ -100,15 +119,14 @@ script: How do you find these names? -The easiest way to do this is only use the scenes from the 2nd generation Hue app. That is organized by Room (Group) and Scene -Name. Use the values of Room name and Scene name that you see in the app. You can test these work on the `dev-service` console of your Home Assistant instance. +The easiest way to do this is only use the scenes from the 2nd generation Hue app. That is organized by room (group) and scene Name. Use the values of room name and scene name that you see in the app. You can test these work on the `dev-service` console of your Home Assistant instance. Alternatively, you can dump all rooms and scene names using this [gist](https://gist.github.com/sdague/5479b632e0fce931951c0636c39a9578). This does **not** tell you which groups and scenes work together but it's sufficient to get values that you can test in the `dev-service` console. *** Caveats *** -The Hue API doesn't activate Scenes directly, only on a Hue Group (typically Rooms, especially if using the 2nd gen app). But Hue Scenes don't actually reference their group. So heuristic matching is used. +The Hue API doesn't activate scenes directly, only on a Hue Group (typically rooms, especially if using the 2nd gen app). But Hue Scenes don't actually reference their group. So heuristic matching is used. -Neither Group names or Scene names are guaranteed unique in Hue. If you are getting non deterministic behavior, adjust your Hue scenes via the App to be more identifying. +Neither group names or scene names are guaranteed unique in Hue. If you are getting non deterministic behavior, adjust your Hue scenes via the App to be more identifying. -The Hue hub has limitted spaces for Scenes, and will delete Scenes if new ones get created that would overflow that space. The API docs say this is based on Least Recently Used. +The Hue hub has limited spaces for scenes, and will delete scenes if new ones get created that would overflow that space. The API docs say this is based on "Least Recently Used". diff --git a/source/_components/light.hyperion.markdown b/source/_components/light.hyperion.markdown index 4c255336654..eccb243e37d 100644 --- a/source/_components/light.hyperion.markdown +++ b/source/_components/light.hyperion.markdown @@ -29,4 +29,5 @@ Configuration variables: - **host** (*Required*): The IP address of the device the Hyperion service is running on. - **port** (*Optional*): The port used to communicate with the Hyperion service. Defaults to `19444`. - **name** (*Optional*): The name of the device used in the frontend. +- **priority** (*Optional*): The priority of the hyperion instance. Defaults to `128`. - **default_color** (*Optional*): The color of the light. Defaults to `[255, 255, 255]`. diff --git a/source/_components/light.knx.markdown b/source/_components/light.knx.markdown index 359912a3777..b3cf614a1c9 100644 --- a/source/_components/light.knx.markdown +++ b/source/_components/light.knx.markdown @@ -1,14 +1,14 @@ --- layout: page title: "KNX Light" -description: "Instructions on how to integrate KXN lights with Home Assistant." +description: "Instructions on how to integrate KNX lights with Home Assistant." date: 2016-06-24 12:00 sidebar: true comments: false sharing: true footer: true logo: knx.png -ha_category: DIY +ha_category: Light ha_release: 0.44 ha_iot_class: "Local Polling" --- @@ -16,18 +16,26 @@ ha_iot_class: "Local Polling" The `knx` light component is used as in interface to switching/light actuators. -To use your KNX light in your installation, add the following to your `configuration.yaml` file: +The `knx` component must be configured correctly, see [KNX Component](/components/knx). + +To use your KNX light in your installation, add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry light: - platform: knx - name: KNX light - address: 0/0/1 + name: Kitchen-Light-1 + address: '1/0/9' + brightness_address: '1/0/11' ``` -- **name** (*Optional*): A name for this devices used within Home assistant -- **address** (*Required*): The KNX group address that is used to turn on/off this actuator channel -- **state_address** (*Optional*): Some KNX devices can change their state internally without any messages on the KXN bus, e.g. if you configure a timer on a channel. The optional `state_address` can be used to inform Home Assistant about these state changes. If a KNX message is seen on the bus addressed to the given state address, this will overwrite the state of the switch object. -For switching/light actuators that are only controlled by a single group address and can't change their state internally, you don't have to configure the state address. +Configuration variables: +- **name** (*Optional*): A name for this device used within Home Assistant. +- **address**: KNX group address for switching the light on and off. +- **brightness_address** (Optional): KNX group address for dimming light. +- **state_address** (*Optional*): separate KNX group address for retrieving the switch state of the light. +- **brightness_state_address** (*Optional*): separate KNX group address for retrieving the dimmed state of the light. + +Some KNX devices can change their state internally without any messages on the KNX bus, e.g., if you configure a timer on a channel. The optional `state_address` can be used to inform Home Assistant about these state changes. If a KNX message is seen on the bus addressed to the given state address, this will overwrite the state of the switch object. +For switching/light actuators that are only controlled by a single group address and can't change their state internally, you don't have to configure the state address. diff --git a/source/_components/light.lifx.markdown b/source/_components/light.lifx.markdown index f44445a186d..805cb67e680 100644 --- a/source/_components/light.lifx.markdown +++ b/source/_components/light.lifx.markdown @@ -21,11 +21,11 @@ _Please note, the `lifx` platform does not support Windows. The `lifx_legacy` pl # Example configuration.yaml entry light: - platform: lifx - server: 192.168.1.10 ``` Configuration variables: -- **server** (*Optional*): Your server address. Only needed if using more than one network interface. Omit if you are unsure. +- **broadcast** (*Optional*): The broadcast address for discovering lights. Only needed if using more than one network interface. Omit if you are unsure. +- **server** (*Optional*): Your server address. Will listen on all interfaces if omitted. Omit if you are unsure. ## {% linkable_title Set state %} @@ -41,6 +41,7 @@ Change the light to a new state. | ---------------------- | ----------- | | `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. | `transition` | Duration (in seconds) for the light to fade to the new state. +| `zones` | List of integers for the zone numbers to affect (each LIFX Z strip has 8 zones, starting at 0). | `infrared` | Automatic infrared level (0..255) when light brightness is low (for compatible bulbs). | `power` | Turn the light on (`True`) or off (`False`). Leave out to keep the power as it is. | `...` | Use `color_name`, `brightness` etc. from [`light.turn_on`]({{site_root}}/components/light/#service-lightturn_on) to specify the new state. diff --git a/source/_components/light.limitlessled.markdown b/source/_components/light.limitlessled.markdown index 4dd76e750f5..bc0849cbcaf 100644 --- a/source/_components/light.limitlessled.markdown +++ b/source/_components/light.limitlessled.markdown @@ -18,7 +18,7 @@ ha_release: pre 0.7 ### {% linkable_title Setup %} -Before configuring Home Assistant, make sure you can control your bulbs or LEDs with the MiLight mobile application. 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)). Keep in mind that LimitlessLED bulbs are controlled via groups. You can not control an individual bulb via the bridge, unless it is in a group by itself. Note that you can assign an `rgbw`, `rgbww` and `white` group to the same group number, effectively allowing 12 groups (4 `rgbww`, 4 `rgbw` and 4 `white`) per bridge. +Before configuring Home Assistant, make sure you can control your bulbs or LEDs with the MiLight mobile application. 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)). Keep in mind that LimitlessLED bulbs are controlled via groups. You can not control an individual bulb via the bridge, unless it is in a group by itself. Note that you can assign an `rgbw`, `rgbww` and `white` group to the same group number, effectively allowing 12 groups (4 `rgbww`, 4 `rgbw` and 4 `white`) per bridge. To add `limitlessled` to your installation, add the following to your `configuration.yaml` file: @@ -34,6 +34,10 @@ light: - number: 2 type: rgbw name: Bathroom + - number: 3 + type: rgbw + name: Kitchen + fade: on - host: 192.168.1.11 groups: - number: 1 @@ -53,6 +57,7 @@ Configuration variables: - **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`, or `bridge-led`. `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. ### {% linkable_title Properties %} @@ -66,7 +71,7 @@ Refer to the [light]({{site_root}}/components/light/) documentation for general - *Color*: There are 256 color possibilities along the LimitlessLED color spectrum. Color properties like saturation and lightness can not be used - only Hue can. The only exception is white (which may be warm or cold depending on the type of RGBW bulb). If you select a color with saturation or lightness, Home Assistant will calculate the nearest valid LimitlessLED color. - *Brightness*: Wifi bridge v6 supports 101 brightness steps; older versions only 25. - **White** - - When using a legacy wifi bridge (before v6), you can observe on the MiLight mobile application, you can not select a specific brightness or temperature - you can only step each property up or down. There is no indication of which step you are on. This restriction, combined with the unreliable nature of LimitlessLED transmissions, means that setting white bulb properties is done on a best-effort basis. The only very reliable settings are the minimum and maximum of each property. + - When using a legacy WiFi bridge (before v6), you can observe on the MiLight mobile application, you can not select a specific brightness or temperature - you can only step each property up or down. There is no indication of which step you are on. This restriction, combined with the unreliable nature of LimitlessLED transmissions, means that setting white bulb properties is done on a best-effort basis. The only very reliable settings are the minimum and maximum of each property. - *Temperature*: Wifi bridge v6 supports 101 temperature steps; older versions only 10. - *Brightness*: Wifi bridge v6 supports 101 brightness steps; older versions only 10. - **Transitions** diff --git a/source/_components/light.lutron_caseta.markdown b/source/_components/light.lutron_caseta.markdown index 7edfca003d5..02e15710d62 100644 --- a/source/_components/light.lutron_caseta.markdown +++ b/source/_components/light.lutron_caseta.markdown @@ -12,4 +12,12 @@ ha_category: Light ha_iot_class: "Local Polling" --- -To get your Lutron Caseta lights working with Home Assistant, follow the instructions for the general [Lutron Caseta component](/components/lutron_caseta/). +To get Lutron Caseta lights working with Home Assistant, follow the instructions for the general [Lutron Caseta component](/components/lutron_caseta/). + +After setup, dimmable lights including wall and plug-in dimmers will appear in Home Assistant using an `entity_id` based on the name used in the Lutron mobile app. For example, a light called 'Bedroom Lamp' will appear in Home Assistant as `light.bedroom_lamp`. + +For non-dimmable lights or switched loads, see [Lutron Caseta Switch](/components/switch.lutron_caseta/). + +For more information on working with lights in Home Assistant, see the [Lights component](/components/light/). + +Available services: `light.turn_on`, `light.turn_off` and `light.toggle`. The `light.turn_on` service supports attributes `brightness` and `brightness_pct`. \ No newline at end of file diff --git a/source/_components/light.markdown b/source/_components/light.markdown index 688cb0732f8..43706748906 100644 --- a/source/_components/light.markdown +++ b/source/_components/light.markdown @@ -24,11 +24,12 @@ Most lights do not support all attributes. You can check the platform documentat | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | no | String or list of strings that point at `entity_id`s of lights. Else targets all. -| `transition` | yes | Integer that represents the time the light should take to transition to the new state in seconds. -| `profile` | yes | String with the name of one of the [built-in profiles](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/light/light_profiles.csv) (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define a xy color and a brightness. If a profile is given and a brightness or xy color then the profile values will be overwritten. +| `transition` | yes | Number that represents the time (in seconds) the light should take to transition to the new state. +| `profile` | yes | String with the name of one of the [built-in profiles](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/light/light_profiles.csv) (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define a xy color and a brightness. If a profile is given and a brightness then the profile brightness will be overwritten. | `xy_color` | yes | A list containing two floats representing the xy color you want the light to be. Two comma separated floats that represent the color in XY. | `rgb_color` | yes | A list containing three integers representing the rgb color you want the light to be. Three comma separated integers that represent the color in RGB. You can find a great chart here: [Hue Color Chart](http://www.developers.meethue.com/documentation/hue-xy-values) -| `color_temp` | yes | An INT in mireds representing the color temperature you want the light to be. +| `white_value` | yes | Integer between 0 and 255 for how bright a dedicated white LED should be. +| `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/2010/PR-css3-color-20101028/#svg-color) are supported. | `brightness` | yes | Integer between 0 and 255 for how bright the color should be. diff --git a/source/_components/light.mochad.markdown b/source/_components/light.mochad.markdown new file mode 100644 index 00000000000..0bf8b817fe6 --- /dev/null +++ b/source/_components/light.mochad.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "Mochad Light" +description: "Instructions how to integrate X10 Mochad switches into Home Assistant." +date: 2017-07-14 11:29 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Light +ha_release: 0.51 +--- + +The `mochad` switch platform lets you control an X10 enabled dimmer/light +device. + +To enable this sensor, you first have to set up the [mochad component](/components/mochad/) and then add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yml entry +light: + - platform: mochad + devices: + - address: a1 + - address: a5 +``` + +Configuration variables: + +- **address** (*Required*): The X10 address of the light. +- **name** (*Optional*): The name of the switch. Default is: x10_light_dev_*address*. +- **comm_type** (*Optional*): pl (powerline) or rf (radio frequency). Default is pl. diff --git a/source/_components/light.mqtt.markdown b/source/_components/light.mqtt.markdown index 308e9282a64..99a1746623c 100644 --- a/source/_components/light.mqtt.markdown +++ b/source/_components/light.mqtt.markdown @@ -14,11 +14,11 @@ ha_iot_class: depends 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. -In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with RETAIN flag, the MQTT light will receive an instant state update after subscription and will start with correct state. Otherwise, the initial state of the switch will be false/off. +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`. -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 device (message from `state_topic`). +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 to enable it, if experiencing incorrect light operation. +Optimistic mode can be forced, even if the `state_topic` is available. Try to enable it, if experiencing incorrect light operation. ```yaml # Example configuration.yml entry @@ -42,11 +42,13 @@ Configuration variables: - **effect_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the effect value. - **effect_list** (*Optional*): The list of effects the light supports. - **name** (*Optional*): The name of the switch. Default is 'MQTT Switch'. +- **on_command_type** (*Optional*): Defines when on the payload_on is sent. Using `last` (the default) will send any style (brightness, color, etc) topics first and then a `payload_on` to the `command_topic`. Using `first` will send the `payload_on` and then any style topics. Using `brightness` will only send brightness commands instead of the `payload_on` to turn the light on. - **optimistic** (*Optional*): Flag that defines if switch works in optimistic mode. Default is true if no state topic defined, else false. - **payload_off** (*Optional*): The payload that represents disabled state. Default is "OFF". - **payload_on** (*Optional*): The payload that represents enabled state. Default is "ON". - **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages. - **retain** (*Optional*): If the published message should have the retain flag on or not. +- **rgb_command_template** (*Optional*): 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`. - **rgb_command_topic** (*Optional*): The MQTT topic to publish commands to change the light's RGB state. - **rgb_state_topic** (*Optional*): The MQTT topic subscribed to receive RGB state updates. - **rgb_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the RGB value. @@ -60,7 +62,7 @@ Configuration variables: - **xy_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the XY value.

- Make sure that your topics match exact. `some-topic/` and `some-topic` are different topics. + Make sure that your topics match exactly. `some-topic/` and `some-topic` are different topics.

@@ -82,7 +84,7 @@ Configuration variables: ## {% linkable_title Examples %} -In this section you 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 Brightness and RGB support %} @@ -127,6 +129,24 @@ light: optimistic: false ``` +### {% linkable_title Brightness without on commands %} + +To enable a light that sends only brightness topics to turn it on, add the following to your `configuration.yaml` file. The `command_topic` is only used to send an off command in this case: + +```yaml +# Example configuration.yml entry +light: + - platform: mqtt + name: "Brightness light" + state_topic: "office/light/status" + command_topic: "office/light/switch" + payload_off: "OFF" + brightness_state_topic: 'office/rgb1/light/brightness' + brightness_command_topic: 'office/rgb1/light/brightness/set' + on_command_type: 'brightness' +``` + + ### {% linkable_title 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). diff --git a/source/_components/light.rflink.markdown b/source/_components/light.rflink.markdown index 705d7073c66..0bd73b588ef 100644 --- a/source/_components/light.rflink.markdown +++ b/source/_components/light.rflink.markdown @@ -49,18 +49,20 @@ Device configuration variables: - **name** (*Optional*): Name for the device, defaults to Rflink ID. - **type** (*Optional*): Override automatically detected type of the light device, can be: switchable, dimmable, hybrid or toggle. See 'Light Types' below. (default: Switchable) -- **aliasses** (*Optional*): Alternative Rflink ID's this device is known by. +- **aliases** (*Optional*): Alternative Rflink ID's this device is known by. - **fire_event** (*Optional*): Fire an `button_pressed` event if this device is turned on or off (default: False). - **signal_repetitions** (*Optional*): Repeat every Rflink command this number of times (default: 1). - **fire_event_** (*Optional*): Set default `fire_event` for RFLink switch devices (see below). - **signal_repetitions** (*Optional*): Set default `signal_repetitions` for RFLink switch devices (see below). - +- **group** (*Optional*): Allow light to respond to group commands (ALLON/ALLOFF). (default: yes) +- **group_aliases** (*Optional*): `aliases` which only respond to group commands. +- **no_group_aliases** (*Optional*): `aliases` which do not respond to group commands. ### {% linkable_title Light state %} Initially the state of a light is unknown. When the light is turned on or off (via frontend or remote) the state is known and will be shown in the frontend. -Sometimes a light is controlled by multiple remotes, each remote has its own code programmed in the light. To allow tracking of the state when switched via other remotes add the corresponding remote codes as aliasses: +Sometimes a light is controlled by multiple remotes, each remote has its own code programmed in the light. To allow tracking of the state when switched via other remotes add the corresponding remote codes as aliases: ```yaml # Example configuration.yaml entry @@ -69,7 +71,7 @@ light: devices: newkaku_0000c6c2_1: name: Living room - aliasses: + aliases: - newkaku_000000001_2 - kaku_000001_a Ansluta_ce30_0: @@ -78,7 +80,7 @@ light: name: Bedroom Lamp ``` -Any on/off command from any allias ID updates the current state of the light. 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 light. However when sending a command through the frontend only the primary ID is used. ### {% linkable_title Light types %} diff --git a/source/_components/light.skybell.markdown b/source/_components/light.skybell.markdown new file mode 100644 index 00000000000..15723eaf076 --- /dev/null +++ b/source/_components/light.skybell.markdown @@ -0,0 +1,24 @@ +--- +layout: page +title: "Skybell Light" +description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." +date: 2017-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: skybell.png +ha_category: Light +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + +To get your [Skybell.com](https://skybell.com/) LED light working within Home Assistant, please follow the instructions for the general [Skybell component](/components/skybell). + +Once you have enabled the [Skybell component](/components/skybell), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - platform: skybell +``` diff --git a/source/_components/light.template.markdown b/source/_components/light.template.markdown index 08ab8cdb409..69f0315c940 100755 --- a/source/_components/light.template.markdown +++ b/source/_components/light.template.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Template Light" -description: "Instructions how to integrate Template lights into Home Assistant." +description: "Instructions how to integrate Template Lights into Home Assistant." date: 2016-05-18 20:32 sidebar: true comments: false @@ -13,10 +13,14 @@ ha_iot_class: "Local Push" logo: home-assistant.png --- -The `template` platform creates lights that combine components and provides the ability to run scripts or invoke services for each of the on, off, and brightness commands of a light. +The `template` platform creates lights that combine components and provides the +ability to run scripts or invoke services for each of the on, off, and +brightness commands of a light. -To enable Template lights in your installation, add the following to your `configuration.yaml` file: +To enable Template Lights in your installation, add the following to your +`configuration.yaml` file: +{% raw %} ```yaml # Example configuration.yaml entry light: @@ -24,7 +28,8 @@ light: lights: theater_lights: friendly_name: "Theater Lights" - value_template: "{% raw %}{{is_state('sensor.theater_brightness.attributes.lux > 0'}}{% endraw %}" + level_template: "{{ sensor.theater_brightness.attributes.lux|int }}" + value_template: "{{ sensor.theater_brightness.attributes.lux|int > 0 }}" turn_on: service: script.theater_lights_on turn_off: @@ -32,26 +37,59 @@ light: set_level: service: script.theater_lights_level data_template: - volume_level: "{% raw %}{{brightness}}{% endraw %}" - level_template: "{% raw %}{{is_state('sensor.theater_brightness.attributes.lux'}}{% endraw %}" + brightness: "{{ brightness }}" ``` +{% endraw %} -Configuration variables: - -- **lights** array (*Required*): List of your lights. - - **friendly_name** (*Optional*): Name to use in the Frontend. - - **value_template** (*Optional*): Defines a [template](/topics/templating/) to get the state of the light. If not provided the component defaults to optimisitc state determination. - - **turn_on** (*Required*): Defines an [action](/getting-started/automation/) to run when the light is turned on. - - **turn_off** (*Required*): Defines an [action](/getting-started/automation/) to run when the light is turned off. - - **set_level** (*Optional*): Defines an [action](/getting-started/automation/) to run when the light is given a brightness command. - - **level_template** (*Optional): Defines a [template](/topics/templating/) to get the brightness of the light. If not provided the component defaults to optimisitc brightness determination. - - **entity_id** (*Optional*): Add a list of entity IDs so the switch only reacts to state changes of these entities. This will reduce the number of times the light will try to update it's state. - +{% configuration %} + switches: + description: List of your lights. + required: true + type: map + keys: + friendly_name: + description: Name to use in the frontend. + required: false + type: string + entity_id: + description: Add a list of entity IDs so the switch only reacts to state changes of these entities. This will reduce the number of times the light will try to update its state. + required: false + type: [string, list] + value_template: + description: Defines a template to get the state of the light. + required: false + type: template + default: optimistic + level_template: + description: Defines a template to get the brightness of the light. + required: false + type: template + default: optimistic + turn_on: + description: Defines an action to run when the light is turned on. + required: true + type: action + turn_off: + description: Defines an action to run when the light is turned off. + required: true + type: action + set_level: + description: Defines an action to run when the light is given a brightness command. + required: false + type: action +{% endconfiguration %} ## {% linkable_title Considerations %} -If you are using the state of a platform that takes extra time to load, the template light may get an 'unknown' state during startup. This results in error messages in your log file until that platform has completed loading. If you use is_state() function in your template, you can avoid this situation. For example, you would replace {% raw %}'{{ states.switch.source.state }}'{% endraw %} with this equivalent that returns true/false and never gives an unknown result: -{% raw %}'{{ is_state('switch.source', 'on') }}'{% endraw %} +If you are using the state of a platform that takes extra time to load, the +Template Light may get an `unknown` state during startup. This results +in error messages in your log file until that platform has completed loading. +If you use `is_state()` function in your template, you can avoid this situation. +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 Examples %} @@ -59,26 +97,29 @@ In this section you will find some real life examples of how to use this light. ### {% linkable_title Theater Volume Control %} -This example shows a light that is actually a home theater's volume. This component gives you the flexibility to provide whatever you'd like to send as the payload to the consumer including any scale conversions you may need to make; the media_player component needs a floating point percentage value 0.0-1.0 +This example shows a light that is actually a home theater's volume. This +component gives you the flexibility to provide whatever you'd like to send as +the payload to the consumer including any scale conversions you may need to +make; the [Media Player component](/components/media_player/) needs a floating +point percentage value from `0.0` to `1.0`. +{% raw %} ```yaml light: - platform: template lights: theater_volume: - friendly_name: 'Receiver Volume' + friendly_name: "Receiver Volume" value_template: >- - {% raw %} - {%- if is_state("media_player.receiver", "on") -%} - {%- if states.media_player.receiver.attributes.is_volume_muted -%} - off - {%- else -%} - on - {%- endif -%} - {%- else -%} + {% if is_state('media_player.receiver', 'on') %} + {% if states.media_player.receiver.attributes.is_volume_muted %} + off + {% else %} + on + {% endif %} + {% else %} off - {%- endif -%} - {% endraw %} + {% endif %} turn_on: service: media_player.volume_mute data: @@ -91,16 +132,102 @@ light: is_volume_muted: true set_level: service: media_player.volume_set + data_template: + entity_id: media_player.receiver + volume_level: "{{ (brightness / 255 * 100)|int / 100 }}" + level_template: >- + {% if is_state('media_player.receiver', 'on') %} + {{ (states.media_player.receiver.attributes.volume_level|float * 255)|int }} + {% else %} + 0 + {% endif %} +``` +{% endraw %} + +### {% linkable_title Change The Icon %} + +This example shows how to change the icon based on the light state. + +{% raw %} +```yaml +light: + - platform: template + lights: + theater_volume: + friendly_name: "Receiver Volume" + value_template: >- + {% if is_state('media_player.receiver', 'on') %} + {% if states.media_player.receiver.attributes.is_volume_muted %} + off + {% else %} + on + {% endif %} + {% else %} + off + {% endif %} + icon_template: >- + {% if is_state('media_player.receiver', 'on') %} + {% if states.media_player.receiver.attributes.is_volume_muted %} + mdi:lightbulb-off + {% else %} + mdi:lightbulb-on + {% endif %} + {% else %} + mdi:lightbulb-off + {% endif %} + turn_on: + service: media_player.volume_mute data: entity_id: media_player.receiver - data_template: - volume_level: '{% raw %}{{((brightness / 255 * 100) | int)/100}}{% endraw %}' - level_template: >- - {% raw %} - {%- if is_state("media_player.receiver", "on") -%} - {{(255 * states.media_player.receiver.attributes.volume_level) | int}} - {%- else -%} - 0 - {%- endif -%} - {% endraw %} -``` \ No newline at end of file + is_volume_muted: false + turn_off: + service: media_player.volume_mute + data: + entity_id: media_player.receiver + is_volume_muted: true +``` +{% endraw %} + +### {% linkable_title Change The Entity Picture %} + +This example shows how to change the entity picture based on the light state. + +{% raw %} +```yaml +light: + - platform: template + lights: + theater_volume: + friendly_name: "Receiver Volume" + value_template: >- + {% if is_state('media_player.receiver', 'on') %} + {% if states.media_player.receiver.attributes.is_volume_muted %} + off + {% else %} + on + {% endif %} + {% else %} + off + {% endif %} + icon_template: >- + {% if is_state('media_player.receiver', 'on') %} + {% if states.media_player.receiver.attributes.is_volume_muted %} + /local/lightbulb-off.png + {% else %} + /local/lightbulb-on.png + {% endif %} + {% else %} + /local/lightbulb-off.png + {% endif %} + turn_on: + service: media_player.volume_mute + data: + entity_id: media_player.receiver + is_volume_muted: false + turn_off: + service: media_player.volume_mute + data: + entity_id: media_player.receiver + is_volume_muted: true +``` +{% endraw %} diff --git a/source/_components/light.tplink.markdown b/source/_components/light.tplink.markdown new file mode 100644 index 00000000000..68fff983950 --- /dev/null +++ b/source/_components/light.tplink.markdown @@ -0,0 +1,40 @@ +--- +layout: page +title: "TPLink Bulb" +description: "Instructions how to integrate TPLink bulbs into Home Assistant." +date: 2017-07-25 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: tp-link.png +ha_category: Light +ha_iot_class: "Local Polling" +ha_release: "0.50" +--- + + +The `tplink` light platform allows you to control the state of your [TPLink smart bulb](http://www.tp-link.com/en/products/list-5609.html). + +Supported units: + +- LB100 +- LB110 +- LB120 +- LB130 + +To use your TPLink light in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - platform: tplink + host: IP_ADDRESS +``` + +Configuration variables: + +- **host** (*Required*): The IP address of your TP-Link bulb, eg. `192.168.1.32`. +- **name** (*Optional*): The name to use when displaying this bulb. + + diff --git a/source/_components/light.velbus.markdown b/source/_components/light.velbus.markdown new file mode 100644 index 00000000000..662b788ca41 --- /dev/null +++ b/source/_components/light.velbus.markdown @@ -0,0 +1,40 @@ +--- +layout: page +title: "Velbus lights" +description: "Access and control your Velbus lights." +date: 2017-06-17 16.58 +sidebar: true +comments: false +sharing: true +footer: true +logo: velbus.png +ha_category: Light +ha_iot_class: "Local Push" +ha_release: "0.50" +--- + +The `velbus` light allows you to control [Velbus](http://www.velbus.eu) lights. + +To use your Velbus lights in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry + +light: + - platform: velbus + devices: + - name: Light 1 + module: 0xda + channel: 4 + - name: Light 2 + module: 0xbc + channel: 1 +``` + +Configuration variables: +- **devices** array (*Required*): The array contains the lights to configure + - **name** (*Required*): Name of the light. + - **module** (*Required*): The hexadecimal module address + - **channel** (*Required*): The channel number in the module. + +For hub configuration, see [the Velbus component](/components/velbus/). diff --git a/source/_components/light.wink.markdown b/source/_components/light.wink.markdown index b5a76c090cd..5e7b74771ed 100644 --- a/source/_components/light.wink.markdown +++ b/source/_components/light.wink.markdown @@ -25,8 +25,10 @@ The requirement is that you have setup [Wink](/components/wink/). - Hue - Lightify - GE link +- Wink light groups (User created groups of lights)

-The above devices are confimed to work, but others may work as well. +The above devices are confirmed to work, but others may work as well.

+ diff --git a/source/_components/light.x10.markdown b/source/_components/light.x10.markdown index 19e6dbe43cd..7e0a52fd58a 100644 --- a/source/_components/light.x10.markdown +++ b/source/_components/light.x10.markdown @@ -31,5 +31,5 @@ light: Configuration variables: -- **id** (*Required*): Device identifier. Composed of house code und unit id. +- **id** (*Required*): Device identifier. Composed of house code and unit id. - **name** (*Optional*): A friendly name for the device. By default *id* from the device is used. diff --git a/source/_components/light.xiaomi_aqara.markdown b/source/_components/light.xiaomi_aqara.markdown new file mode 100644 index 00000000000..25e01ba22c7 --- /dev/null +++ b/source/_components/light.xiaomi_aqara.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Xiaomi Light" +description: "Instructions how to setup the Xiaomi light within Home Assistant." +date: 2017-07-21 16:34 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: Light +ha_release: "0.50" +ha_iot_class: "Local Push" +--- + + +The `xiaomi aqara` light platform allows you to control the internal light of the xiaomi gateway. The component will be loaded automatically and provides a device called `light.gateway_light_28ffffffffff`. + +The requirement is that you have setup [Xiaomi aqara](/components/xiaomi_aqara/). + diff --git a/source/_components/light.xiaomi_miio.markdown b/source/_components/light.xiaomi_miio.markdown new file mode 100644 index 00000000000..5f76deb341e --- /dev/null +++ b/source/_components/light.xiaomi_miio.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "Xiaomi Philips Light" +description: "Instructions how to integrate your Xiaomi Philips Lights within Home Assistant." +date: 2017-08-26 08:45 +sidebar: true +comments: false +sharing: true +footer: true +logo: philips.png +ha_category: Light +ha_version: 0.53 +ha_iot_class: "Local Polling" +--- + +The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philips LED Ball Lamp and Xiaomi Philips LED Ceiling Lamp. + +Currently, the supported features are `on`, `off`, `set_cct` (colortemp) , `set_bright` (brightness). + +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: + +```yaml +# Example configuration.yaml entries +light: + - platform: xiaomi_miio + name: Xiaomi Philips Smart LED Ball + host: 192.168.130.67 + token: YOUR_TOKEN +``` + +Configuration variables: +- **host** (*Required*): The IP of your light. +- **token** (*Required*): The API token of your light. +- **name** (*Optional*): The name of your light. diff --git a/source/_components/light.yeelight.markdown b/source/_components/light.yeelight.markdown index 056b6246da2..426b4754b0b 100644 --- a/source/_components/light.yeelight.markdown +++ b/source/_components/light.yeelight.markdown @@ -48,11 +48,19 @@ Per default the bulb limits the amount of requests per minute to 60, a limitatio

Before trying to control your light through Home Assistant, you have to setup your bulb using Yeelight app. ( [Android](https://play.google.com/store/apps/details?id=com.yeelight.cherry&hl=fr), [IOS](https://itunes.apple.com/us/app/yeelight/id977125608?mt=8) ). In the bulb property, you have to enable "Developer Mode" Developer mode may only be available with the latest firmware installed on your bulb. Firmware can be updated in the application after connecting the bulb. -Determine your bulb ip (using router, software, ping ...) +Determine your bulb IP (using router, software, ping ...)

-This component is tested to work with models YLDP01YL, YLDP02YL and YLDP03YL. If you have a different model and it is working please let us know. +This component is tested to work with the following models. If you have a different model and it is working please let us know.

+- **YLDP01YL**: LED Bulb (White) +- **YLDP02YL**: LED Bulb (Color) +- **YLDP03YL**: LED Bulb (Color) - E26 +- **YLDD02YL**: Lightstrip (Color) + + + + diff --git a/source/_components/light.yeelightsunflower.markdown b/source/_components/light.yeelightsunflower.markdown index 97d2a0a6d2e..1b0e441970d 100644 --- a/source/_components/light.yeelightsunflower.markdown +++ b/source/_components/light.yeelightsunflower.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +logo: yeelight.png ha_category: Light ha_release: 0.39 ha_iot_class: "Local Polling" diff --git a/source/_components/linode.markdown b/source/_components/linode.markdown new file mode 100644 index 00000000000..49336ba74a1 --- /dev/null +++ b/source/_components/linode.markdown @@ -0,0 +1,38 @@ +--- +layout: page +title: "Linode" +description: "Instructions on how to set up Linode within Home Assistant." +date: 2017-10-20 08:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Hub +logo: linode.png +ha_release: 0.57 +ha_iot_class: "Cloud Polling" +--- + +The `linode` component allows you to access the information about your [Linode](https://www.linode.com) systems from Home Assistant. + +Obtain your oAuth2 Access Token from Linode account. +* +* Log in +* Select API Tokens +* Create a Personal Access Token, +* Assigned scope (Please choose the least possible access required.) + +To integrate Linode with Home Assistant, add the following section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +linode: + access_token: YOUR_ACCESS_TOKEN +``` + +{% configuration %} + access_token: + description: The Linode access token. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/lock.abode.markdown b/source/_components/lock.abode.markdown new file mode 100644 index 00000000000..c1e28603708 --- /dev/null +++ b/source/_components/lock.abode.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Abode Lock" +description: "Instructions how to integrate Abode locks into Home Assistant." +date: 2017-08-26 13:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: abode.jpg +ha_release: 0.52 +ha_category: Lock +ha_iot_class: "Cloud Push" +--- + +The `abode` security control panel platform allows you to control your [Abode](https://goabode.com/) alarms. + +This component will automatically add `Door Locks` configured in your Abode account. + +The requirement is that you have setup your [Abode hub](/components/abode/). diff --git a/source/_components/lock.markdown b/source/_components/lock.markdown index dcad2d30566..c2c3cc55301 100644 --- a/source/_components/lock.markdown +++ b/source/_components/lock.markdown @@ -16,7 +16,7 @@ Keeps track which locks are in your environment, their state and allows you to c ### {% linkable_title Use the services %} -Go the the **Developer Tools**, then to **Call Service** in the frontend, and choose `lock/lock` or `lock/unlock` from the list of available services (**Available 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` or `lock/unlock` from the list of available services (**Available 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 d66c4c8c76b..6f91de7d133 100644 --- a/source/_components/lock.mqtt.markdown +++ b/source/_components/lock.mqtt.markdown @@ -13,9 +13,9 @@ ha_release: 0.15 ha_iot_class: depends --- -The `mqtt` lock platform let you control your MQTT enabled locks. +The `mqtt` lock platform lets you control your MQTT enabled locks. -In an ideal scenario, the MQTT device will have a `state_topic` to publish state changes. If these messages are published with `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. +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`). @@ -43,12 +43,12 @@ Configuration variables: - **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload.

-Make sure that your topic match exact. `some-topic/` and `some-topic` are different topics. +Make sure that your topics match exactly. `some-topic/` and `some-topic` are different topics.

## {% linkable_title Examples %} -In this section you find some real life examples of how to use this lock. +In this section you will find some real life examples of how to use this lock. ### {% linkable_title Full configuration %} diff --git a/source/_components/lock.nello.markdown b/source/_components/lock.nello.markdown new file mode 100644 index 00000000000..53f2e26e79b --- /dev/null +++ b/source/_components/lock.nello.markdown @@ -0,0 +1,52 @@ +--- +layout: page +title: "Nello Lock" +description: "Instructions on how to integrate Nello intercom devices." +date: 2017-08-13 17:25 +sidebar: true +comments: false +sharing: true +footer: true +logo: nello.png +ha_category: Lock +featured: false + +ha_release: 0.52 +ha_iot_class: "Cloud Polling" +--- + +The `nello` platform allows you to control [Nello](https://nello.io) intercoms. +To get started you need to create a secondary Nello account and authorize it to access your lock(s). + +

+Be aware that if you use your main account for Home Assistant you may not be able to use it with the App. +

+ +## {% linkable_title Configuration %} + +```yaml +# Example configuration.yaml entry +lock: + - platform: nello + username: mail@example.com + password: mySecretPassword +``` + +Configuration variables: + +- **username** (*Required*): The username of your Nello account. +- **password** (*Required*): The password of your Nello account. + +## {% linkable_title Events %} + +### {% linkable_title Event `nello_bell_ring` %} + +Every time someone rings the bell, a `nello_bell_ring` event will be fired. + +Field | Description +----- | ----------- +`address` | Postal address of the lock. +`date` | Date when the event occurred. +`description` | Human readable string describing the event. +`location_id` | Nello ID of the location where the bell has been rung. +`short_id` | Shorter Nello ID. diff --git a/source/_components/lock.nuki.markdown b/source/_components/lock.nuki.markdown index e45282da128..6d10c73f9ad 100644 --- a/source/_components/lock.nuki.markdown +++ b/source/_components/lock.nuki.markdown @@ -45,3 +45,23 @@ lock: port: 8080 token: fe2345ef ``` + +## {% linkable_title Services %} + +### {% linkable_title Service `nuki_unlatch` %} + +This will unlatch the door, ie. open it (provided this works with your type of door). + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | String or list of strings that point at `entity_id`s Nuki Locks. + +### {% linkable_title Service `nuki_lock_n_go` %} + +This will first unlock, wait a few seconds (20 by default) then re-lock. The wait period can be customized through the app. +See the [Nuki Website](https://nuki.io/en/support/smart-lock/sl-features/locking-with-the-smart-lock/) for more details about this feature. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | String or list of strings that point at `entity_id`s Nuki Locks. +| `unlatch` | yes | Boolean - Whether to unlatch the door when first opening it. diff --git a/source/_components/lock.tesla.markdown b/source/_components/lock.tesla.markdown new file mode 100644 index 00000000000..9708ea52205 --- /dev/null +++ b/source/_components/lock.tesla.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Tesla Lock" +description: "Instructions on how to integrate Tesla door lock into Home Assistant." +date: 2017-08-30 12:20 +sidebar: true +comments: false +sharing: true +footer: true +logo: tesla.png +ha_category: Lock +ha_iot_class: "Cloud Push" +ha_release: 0.53 +--- + +The `Tesla` platform allows you to control your [Tesla](https://www.tesla.com/) door lock from within Home Assistant. + +The lock platform will be automatically configured if Tesla component is configured. + +For more configuration information see the [Tesla component](/components/tesla/) documentation. diff --git a/source/_components/lock.wink.markdown b/source/_components/lock.wink.markdown index cc13cda757b..1f51751b3f4 100644 --- a/source/_components/lock.wink.markdown +++ b/source/_components/lock.wink.markdown @@ -23,6 +23,7 @@ The requirement is that you have setup [Wink](/components/wink/). - Kwikset - Schlage +- August (No Wink hub required) (August Connect required) - Generic Z-wave

@@ -86,7 +87,7 @@ script: sequence: - service: wink.wink_set_lock_alarm_state data: - enabled: false + enabled: false ``` ### {% linkable_title Service `wink_set_lock_beeper_state` %} @@ -129,6 +130,20 @@ script: enabled: false ``` +### {% linkable_title Service `wink_add_new_lock_key_code` %} + +You can use the service wink/wink_add_new_lock_key_code to add a new user code to your Wink lock. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of strings that point at `entity_id`s of locks. +| `name` | no | the name of the new key code +| `code` | no | The new code. Must match length of existing codes. + + +

+Calling service wink/pull_newly_added_wink_devices will add the new key code to Home Assistant. The device will also show up on the next restart of Home Assistant. +

If supported by your lock, a binary sensor will be created for each user key code you have defined. These key codes will turn on when the code is entered and automatically turn off after a few seconds. diff --git a/source/_components/logger.markdown b/source/_components/logger.markdown index 09cb599aca5..70168cf440b 100644 --- a/source/_components/logger.markdown +++ b/source/_components/logger.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: home-assistant.png -ha_category: "Other" +ha_category: "Utility" --- The logger component lets you define the level of logging activities in Home Assistant. @@ -68,8 +68,16 @@ data: homeassistant.components.media_player.yamaha: debug ``` -The log information are stored in the [configuration directory](/docs/configuration/) as `home-assistant.log` and you can read it with the command-line tool `cat` or follow it dynamically with `tail -f`. If you are a Hassbian user you can use the example below: +The log information are stored in the [configuration directory](/docs/configuration/) as `home-assistant.log` and you can read it with the command-line tool `cat` or follow it dynamically with `tail -f`. + +If you are a Hassbian user you can use the example below: ```bash $ tail -f /home/homeassistant/.homeassistant/home-assistant.log ``` + +If you are a Hass.io user you can use the example below, whenlogged in through the ssh addon: + +```bash +$ tail -f /config/home-assistant.log +``` diff --git a/source/_components/lutron_caseta.markdown b/source/_components/lutron_caseta.markdown index e1781b73734..c2a3f41f7c6 100644 --- a/source/_components/lutron_caseta.markdown +++ b/source/_components/lutron_caseta.markdown @@ -14,17 +14,20 @@ ha_release: 0.41 ha_iot_class: "Local Polling" --- -[Lutron](http://www.lutron.com/) is an American lighting control company. They have several lines of home automation devices that manage light switches/dimmers, occupancy sensors, HVAC controls, etc. The `lutron_caseta` component in Home Assistant is responsible for communicating with the Lutron SmartBridge for these systems. Both 'pro' and 'standard' models are supported. +[Lutron](http://www.lutron.com/) is an American lighting control company. They have several lines of home automation devices that manage light switches, dimmers, occupancy sensors, HVAC controls, etc. The `lutron_caseta` component in Home Assistant is responsible for communicating with the Lutron Caseta Smart Bridge for the [Caseta](http://www.casetawireless.com) product line of dimmers, switches and shades. -This component only supports the Caseta line of products. The current supported Caseta devices are: +This component only supports the [Caseta](http://www.casetawireless.com) line of products. Both Smart Bridge (L-BDG2-WH) and Smart Bridge PRO (L-BDGPRO2-WH) models are supported. For the RadioRA 2 product line, see the [Lutron component](/components/lutron/). -- Dimmers as Home Assistant lights -- Wall switches as Home Assistant switches -- Serena shades as Home Assistant covers +The currently supported Caseta devices are: -When configured, the `lutron_caseta` component will automatically discover the currently support devices as setup in the Lutron SmartBridge. +- Wall and plug-in dimmers as Home Assistant [lights](/components/light.lutron_caseta/) +- Wall switches as Home Assistant [switches](/components/switch.lutron_caseta/) +- Scenes as Home Assistant [scenes](/components/scene.lutron_caseta/) +- Lutron shades as Home Assistant [covers](/components/cover.lutron_caseta/) -To use Lutron Caseta devices in your installation, add the following to your `configuration.yaml` file using the IP of your lutron Smartbridge: +When configured, the `lutron_caseta` component will automatically discover the currently supported devices as setup in the Lutron Smart Bridge. The name assigned in the Lutron mobile app will be used to form the `entity_id` used in Home Assistant. e.g. a dimmer called 'Bedroom Lamp' becomes `light.bedroom_lamp` in Home Assistant. + +To use Lutron Caseta devices in your installation, add the following to your `configuration.yaml` file using the IP of your Smart Bridge: ```yaml # Example configuration.yaml entry @@ -34,8 +37,10 @@ lutron_caseta: Configuration variables: -- **host** (*Required*): The IP address of the Lutron SmartBridge. +- **host** (*Required*): The IP address of the Lutron Smart Bridge.

-It is recommended to assign a static IP address to your Lutron SmartBridge. This ensures that it won't change IP address, so you won't have to change the `host` if it reboots and comes up with a different IP address. +It is recommended to assign a static IP address to your Lutron Smart Bridge. This ensures that it won't change IP address, so you won't have to change the `host` if it reboots and comes up with a different IP address. +
+Use a DHCP reservation on your router to reserve the address or in the PRO model of the Smart Bridge, set the IP address under Network Settings in the Advanced / Integration menu in the mobile app.

diff --git a/source/_components/mailbox.asterisk_mbox.markdown b/source/_components/mailbox.asterisk_mbox.markdown new file mode 100644 index 00000000000..25a0859aa92 --- /dev/null +++ b/source/_components/mailbox.asterisk_mbox.markdown @@ -0,0 +1,15 @@ +--- +layout: page +title: "Asterisk Voicemail Mailbox" +description: "Instructions how to integrate an Asterisk Voicemail within Home Assistant." +date: 2017-06-30 18:30 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Mailbox +ha_version: 0.51 +--- + +The Asterisk Voicemail Mailbox provides visual and audio access to voicemail on the Asterisk PBX server. This mailbox is enabled automatically through the [Asterisk Voicemail component](/components/asterisk_mbox) configuration. + diff --git a/source/_components/mailbox.markdown b/source/_components/mailbox.markdown new file mode 100644 index 00000000000..88ff203523f --- /dev/null +++ b/source/_components/mailbox.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "Mailbox" +description: "Instructions how to setup your mailboxes with Home Assistant." +date: 2017-06-30 18:30 +sidebar: true +comments: false +sharing: true +ha_version: 0.51 +footer: true +--- + +Mailboxes provide an list of messages with short information about each. Mailbox messages appear on a separate panel in the frontend. + +Home Assistant currently supports only the [Asterisk Voicemail](/component/mailbox.asterisk_mbox) mailbox. + +Each mailbox also provides an entity to indicate the number of messages available on the main page. + diff --git a/source/_components/mailgun.markdown b/source/_components/mailgun.markdown new file mode 100644 index 00000000000..835464dfd06 --- /dev/null +++ b/source/_components/mailgun.markdown @@ -0,0 +1,35 @@ +--- +layout: page +title: "Mailgun" +description: "Instructions how to add Mailgun mail notifications to Home Assistant." +date: 2017-02-06 16:52 +sidebar: true +comments: false +sharing: true +footer: true +logo: mailgun.png +ha_category: Notifications +ha_release: 0.38 +--- + +The component supports push messages and generates events based on inbound data. To use, add a Route set to Store and Notify with a URL of the following form: `https:///api/mailgun?api_password=` + +To send messages, use the [Mailgun notify platform][notify]. + +[notify]: /components/notify.mailgun/ + +## {% linkable_title Sample configuration %} + +```yaml +# Example configuration.yaml entry +mailgun: + domain: mg.example.com + api_key: token-XXXXXXXXX + sandbox: False +``` + +Configuration variables: + +- **domain** (*Optional*): This is the domain name to be used when sending out mail. Defaults to the first custom domain you have set up. +- **sandbox** (*Optional*): Whether to use the sandboxed domain for outgoing mail. The `domain` item takes precedence over this. Defaults to `False`. +- **api_key** (*Required*): This is the API token that has been generated in your Mailgun account. diff --git a/source/_components/map.markdown b/source/_components/map.markdown new file mode 100755 index 00000000000..deacb922222 --- /dev/null +++ b/source/_components/map.markdown @@ -0,0 +1,22 @@ +--- +layout: page +title: "Map" +description: "Offers a map to show tracked devices." +date: 2017-10-11 10:01 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: "Other" +--- + +This offers a map on the frontend to display the location of tracked devices. To set up tracked devices, look at the [device tracker](/components/device_tracker/) documentation. + +```yaml +# Example configuration.yaml entry +map: +``` +

+Devices that are currently at home won't show on the map. +

diff --git a/source/_components/media_extractor.markdown b/source/_components/media_extractor.markdown new file mode 100644 index 00000000000..114d70f3fe7 --- /dev/null +++ b/source/_components/media_extractor.markdown @@ -0,0 +1,74 @@ +--- +layout: page +title: "Media Extractor" +description: "Instructions how to integrate the Media Extractor into Home Assistant." +date: 2017-07-12 07:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Media Player +ha_release: 0.49 +--- + + +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. + +

+Media extractor doesn't transcode streams, it just tries to find stream that match requested query. +

+ +To use the media extractor service in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +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: + +```yaml +# Example configuration.yaml entry +media_extractor: + default_query: worst + customize: + media_player.my_sonos: + video: bestvideo + music: bestaudio[ext=mp3] +``` + +This configuration sets query for all service calls like to 'bestaudio' with the mp3 extension: + +```json +{ + "entity_id": "media_player.my_sonos", + "media_content_id": "https://soundcloud.com/bruttoband/brutto-11", + "media_content_type": "music" +} +``` + +Query examples with explanations: + + * **bestvideo**: Best video only stream + * **best**: Best video + audio stream + * **bestaudio[ext=m4a]**: Best audio stream with m4a extension + * **worst**: Worst video + audio stream + * **bestaudio[ext=m4a]/bestaudio[ext=ogg]/bestaudio**: Best m4a audio, otherwise best ogg audio and only then any best audio + +More info about queries [here](https://github.com/rg3/youtube-dl#format-selection) + +### {% linkable_title Use the service %} + +Use service developer tool icon **Services** from the **Developer Tools**. Choose `media_extractor` from the dropdown menu **Domain** and `play_media` from **Service**, enter something like the JSON sample from above into the **Service Data** field, and hit **CALL SERVICE**. + +This will download the file from the given URL. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | Name(s) of entities to seek media on, e.g., `media_player.living_room_chromecast`. Defaults to all. +| `media_content_id` | no | The ID of the content to play. Platform dependent. +| `media_content_type` | no | The type of the content to play. Must be one of MUSIC, TVSHOW, VIDEO, EPISODE, CHANNEL or PLAYLIST MUSIC. diff --git a/source/_components/media_player.anthemav.markdown b/source/_components/media_player.anthemav.markdown index b6223df3fd8..945fdc0c648 100644 --- a/source/_components/media_player.anthemav.markdown +++ b/source/_components/media_player.anthemav.markdown @@ -13,7 +13,7 @@ ha_iot_class: "Local Push" ha_release: 0.37 --- -Both [Anthem]'s current and last generation of A/V Receivers and and Processors support IP-based, network control. This Home Assistant platform adds proper "local push" support for any of these receivers on your network. +Both [Anthem]'s current and last generation of A/V Receivers and Processors support IP-based, network control. This Home Assistant platform adds proper "local push" support for any of these receivers on your network. ## {% linkable_title Supported Models %} diff --git a/source/_components/media_player.apple_tv.markdown b/source/_components/media_player.apple_tv.markdown index 9b49da82a6c..383afdae981 100644 --- a/source/_components/media_player.apple_tv.markdown +++ b/source/_components/media_player.apple_tv.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Apple TV" +title: "Apple TV Media Player" description: "Instructions how to integrate Apple TV devices into Home Assistant." date: 2017-02-08 07:11 sidebar: true @@ -9,43 +9,8 @@ sharing: true footer: true logo: apple.png ha_category: Media Player -ha_iot_class: "Local Polling" +ha_iot_class: "Local Push" ha_release: 0.38 -featured: true --- -The `apple_tv` platform allows you to control an Apple TV (3rd and 4th generation). - -

-Currently you must have Home Sharing enabled for this to work. Support for pairing Home Assistant with your device will be supported in a later release. -

- -If you want to automatically discover new devices, just make sure you have `discovery:` in your `configuration.yaml` file. To manually add an Apple TV to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: apple_tv - host: IP_ADDRESS - login_id: LOGIN_ID -``` - -Configuration variables: - -- **host** (*Required*): The IP-address of the device -- **login_id** (*Required*): An identifier used to login to the device, see below -- **name** (*Optional*): The name of the device used in the frontend - -In order to connect to the device you need a *login id*. The easiest way to obtain this identifier is to use the application ``atvremote``. It should be available in the same environment as you installed Home-Assistant. To install this utility, run ``pip3 install --upgrade pyatv``. The run atvremote scan for all devices (try again if a device is missing): - -```bash -$ atvremote scan -Found Apple TVs: - - Apple TV at 10.0.10.22 (login id: 00000000-1234-5678-9012-345678901234) -``` - -Just copy and paste the login id from the device you want to add. For more details about `atvremote`, see: [this page](https://github.com/postlund/pyatv/blob/master/docs/atvremote.rst). - -## {% linkable_title Notes and Limitations %} - -- Pairing is currently not supported +To setup the `apple_tv` media player platform, please follow the instructions on the [Apple TV Component page](/components/apple_tv/). diff --git a/source/_components/media_player.aquostv.markdown b/source/_components/media_player.aquostv.markdown index e6f48815641..2c764f46873 100644 --- a/source/_components/media_player.aquostv.markdown +++ b/source/_components/media_player.aquostv.markdown @@ -29,10 +29,10 @@ media_player: Configuration variables: -- **host** (*Required*): The IP/Hostname of the Samsung Smart TV, eg. `192.168.0.10`. -- **port** (*Optional*): The port of the Samsung Smart TV. Defaults to 10002. -- **username** (*Optional*): The username of the Samsung Smart TV. Defaults to admin. -- **password** (*Optional*): The password of the Samsung Smart TV. Defaults to password. +- **host** (*Required*): The IP/Hostname of the Sharp Aquos TV, eg. `192.168.0.10`. +- **port** (*Optional*): The port of the Sharp Aquos TV. Defaults to 10002. +- **username** (*Optional*): The username of the Sharp Aquos TV. Defaults to admin. +- **password** (*Optional*): The password of the Sharp Aquos TV. Defaults to password. - **name** (*Optional*): The name you would like to give to the Sharp Aquos TV. - **power_on_enabled** (*Optional*): If you want to be able to turn on your TV. Defaults to False. diff --git a/source/_components/media_player.bluesound.markdown b/source/_components/media_player.bluesound.markdown new file mode 100644 index 00000000000..f711cbe8971 --- /dev/null +++ b/source/_components/media_player.bluesound.markdown @@ -0,0 +1,48 @@ +--- +layout: page +title: "Bluesound" +description: "Instructions how to integrate Bluesound devices into Home Assistant." +date: 2017-04-21 19:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: bluesound.png +ha_category: Media Player +featured: false +ha_release: 0.51 +ha_iot_class: "Local Polling" +--- + +The `bluesound` platform allows you to control your [Bluesound](http://www.bluesound.com/) HiFi wireless speakers and audio components from Home Assistant. + +If you want to automatically discover new devices, just make sure you have discovery: in your configuration.yaml file. To manually add a Bluesound device to your installation, add the following to your configuration.yaml file: + + +```yaml +# Example configuration.yaml +media_player: + - platform: bluesound + hosts: + - host: 192.168.1.100 +``` + +Configuration variables: + +- **hosts** (*Optional*): List with your bluesound devices + - **host** (*Required*): IP-address or hostname of the player + - **name** (*Optional*): The name of the device used in the frontend + - **port** (*Optional*): Port of communication to the device (default: 11000) + +## Advanced configuration example + +```yaml +# Example configuration.yaml entry with manually specified addresses +media_player: + - platform: bluesound + hosts: + - host: 192.168.1.100 + name: bluesound_kitchen + port: 11000 + - host: 192.168.1.131 +``` diff --git a/source/_components/media_player.braviatv.markdown b/source/_components/media_player.braviatv.markdown index 11ccf5247d0..cf6bd2a4172 100644 --- a/source/_components/media_player.braviatv.markdown +++ b/source/_components/media_player.braviatv.markdown @@ -15,7 +15,7 @@ ha_iot_class: "Local Polling" The `braviatv` platform allows you to control a [Sony Bravia TV](http://www.sony.com). -Almost all [Sony Bravia TV 2013 and newer](http://info.tvsideview.sony.net/en_ww/home_device.html#bravia) are supported. +Almost all [Sony Bravia TV 2013 and newer](http://info.tvsideview.sony.net/en_ww/home_device.html#bravia) are supported. A more generic method for older TVs connected to a Raspberry Pi with HDMI-CEC is explained further below. You will need to configure your TV to allow the Home Assistant for remote usage. To do that, ensure that your TV is turned on. Open the configuration popup on Home Assistant and enter a random PIN (for example 0000). After that, the TV will show you a PIN and Home Assistant will allow you to re-enter that PIN. Enter the PIN shown on your TV and Home Assistant will be able to control your Sony Bravia TV. @@ -33,8 +33,43 @@ Configuration variables: - **host** (*Required*): The IP of the Sony Bravia TV, eg. 192.168.0.10 - **name** (*Optional*): The name to use on the frontend. -You are also able to configure the TV manually by placing a `bravia.conf` file in your `.homeassistant` config directory with the following information - please update the details to match your setup: +You are also able to configure the TV manually by placing a `bravia.conf` file in your [configuration directory](/docs/configuration/) with the following information - please update the details to match your setup: ```json {"192.168.0.10": {"pin": "7745", "mac": "ac:1e:0a:e1:0c:01"}} ``` + +## {% linkable_title For TVs older than 2013 %} + +Users of TVs older than 2013 have another option for controlling their TV via Home Assistant. + +### {% linkable_title Using HDMI-CEC %} + +If you have a Raspberry Pi connected to your TV: + +```yaml +switch: + - platform: command_line + switches: + tv_rpi: + command_on: ssh root@[IP] "echo 'on 0' | cec-client -s" + command_off: ssh root@[IP] "echo 'standby 0' | cec-client -s" + command_state: ssh root@[IP] "echo 'pow 0' | cec-client -s |grep 'power status:'" + value_template: {% raw %}'{{ value == "power status: on" }}{% endraw %}' +``` + +Using `cec-client` is a great method to turn your TV off/on, however the trade off is if you're using Kodi, it will no longer be able to control your TV using the TV Remote. + +This is because only one process can control the CEC functionality within the Raspberry Pi at a time and running the above commands terminates the functionality inside libCEC within Kodi. Kodi must be restarted for TV remove functionality to work again. + +**Workaround:** + +If your desire is only to turn on your TV, the following "workaround" may be desirable: + +Change the 'on' command to a restart for Kodi. This doesn't reboot the Kodi device. + +Restarting Kodi will trigger a HDMI-CEC event to bring the TV out of standby. The following can replace your TV 'on' command. + +```yaml +command_on: ssh root@[IP] "systemctl restart kodi" +``` diff --git a/source/_components/media_player.clementine.markdown b/source/_components/media_player.clementine.markdown index 7b138c22a18..c730daf5d96 100644 --- a/source/_components/media_player.clementine.markdown +++ b/source/_components/media_player.clementine.markdown @@ -16,8 +16,7 @@ ha_iot_class: "Local Polling" The `clementine` platform allows you to control a [Clementine Music Player](https://www.clementine-player.org). -To add a Clementine Player to your Home Assistant installation, add the following to -your `configuration.yaml` file: +To add a Clementine Player to your Home Assistant installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -33,10 +32,8 @@ Configuration variables: - **access_token** (*Optional*): The authorization code needed to connect. - **name** (*Optional*): The name you would like to give to the Clementine player. The default is "Clementine Remote". -Remember that Clementine must be configured to accept connections through its -network remote control protocol. +Remember that Clementine must be configured to accept connections through its network remote control protocol. -You can configure this through Clementine `Tools > Preferences > Network remote control` -configuration menu. Enable `Use network remote control` and configure the other options -for your use case. +You can configure this through Clementine `Tools > Preferences > Network remote control` configuration menu. Enable `Use network remote control` and configure the other options for your use case. +This component does not implement the `play_media` service so you cannot add tracks to the playlist. diff --git a/source/_components/media_player.denon.markdown b/source/_components/media_player.denon.markdown index f6c4ec6ac4c..b8c0e380133 100644 --- a/source/_components/media_player.denon.markdown +++ b/source/_components/media_player.denon.markdown @@ -13,8 +13,7 @@ ha_iot_class: "Local Polling" ha_release: 0.7.2 --- - -The `denon` platform allows you to control a [Denon Network Receivers](http://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. +The `denon` platform allows you to control a [Denon Network Receivers](http://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. It might be that your device is supported by the [Denon AVR] platform. Supported devices: @@ -22,22 +21,6 @@ Supported devices: - Denon RCD-N8 (untested) - Denon RCD-N9 (partial support) - Denon AVR receivers with integrated Network support (partial support) -- Denon AVR-X2000 (via denonavr platform) -- Denon AVR-X2100W (via denonavr platform) -- Denon AVR-X4100W (via denonavr platform) -- Denon AVR-1912 (via denonavr platform) -- Denon AVR-2312CI (via denonavr platform) -- Denon AVR-3311CI (via denonavr platform) -- Marantz M-CR603 (via denonavr platform) -- Marantz M-RC610 (via denonavr platform) -- Marantz SR5008 (via denonavr platform) -- Marantz NR1604 (via denonavr platform) -- Other Denon AVR receivers (via denonavr platform (untested)) -- Marantz receivers (experimental via denonavr platform) - -
-If you have something else using the IP controller for your Denon AVR 3808CI, such as your URC controller, it will not work! There is either a bug or security issue with some models where only one device could be controlling the IP functionality.
-
To add a Denon Network Receiver to your installation, add the following to your `configuration.yaml` file: @@ -55,36 +38,11 @@ Configuration variables: - **name** (*Optional*): Name of the device. A few notes for platform: denon + - The receiver handles only one telnet connection and refuses others. - Be careful with the volume. 100% or even 50% is very loud. - To be able to wake up the receiver, activate the "remote" setting in the receiver's settings. - Play and pause are supported, toggling is not possible. - Seeking cannot be implemented as the UI sends absolute positions. Only seeking via simulated button presses is possible. - -**denonavr platform** -```yaml -# Example configuration.yaml entry -media_player: - - platform: denonavr - host: IP_ADDRESS - name: NAME - show_all_sources: True / False - 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 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. -- **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 suffix is taken. - -A few notes for platform: denonavr -- Additional option the control Denon AVR receivers with a builtin web server is using the HTTP interface with denonavr platform. -- denonavr platform supports some additional functionalities like album covers, custom input source names and auto discovery. -- Marantz receivers seem to a have quite simliar interface. Thus if you own one, give it a try. +[Denon AVR]: /components/media_player.denonavr/ diff --git a/source/_components/media_player.denonavr.markdown b/source/_components/media_player.denonavr.markdown new file mode 100644 index 00000000000..a64c85c44b3 --- /dev/null +++ b/source/_components/media_player.denonavr.markdown @@ -0,0 +1,71 @@ +--- +layout: page +title: "Denon AVR Network Receivers" +description: "Instructions how to integrate Denon AVR Network Receivers into Home Assistant." +date: 2015-09-08 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: denon.png +ha_category: Media Player +ha_iot_class: "Local Polling" +ha_release: 0.7.2 +--- + + +The `denonavr` platform allows you to control a [Denon Network Receivers](http://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. It might be that your device is supported by the [Denon] platform. + +Supported devices: + +- Denon AVR-X2000 +- Denon AVR-X2100W +- Denon AVR-X4100W +- Denon AVR-1912 +- Denon AVR-2312CI +- Denon AVR-3311CI +- Denon AVR-4810 +- Marantz M-CR603 +- Marantz M-RC610 +- Marantz SR5008 +- Marantz SR6007 - SR6010 +- Marantz NR1604 +- Other Denon AVR receivers (untested) +- Marantz receivers (experimental) + +
+If you have something else using the IP controller for your Denon AVR 3808CI, such as your URC controller, it will not work! There is either a bug or security issue with some models where only one device could be controlling the IP functionality.
+
+ +To add a Denon Network Receiver to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: denonavr + host: IP_ADDRESS + name: NAME + show_all_sources: True / False + 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 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 suffix is taken. + +A few notes: + +- Additional option the control Denon AVR receivers with a builtin web server is using the HTTP interface with denonavr platform. +- denonavr platform supports some additional functionalities like album covers, custom input source names and auto discovery. +- Marantz receivers seem to a have quite simliar interface. Thus if you own one, give it a try. + +[Denon]: /components/media_player.denon/ diff --git a/source/_components/media_player.directv.markdown b/source/_components/media_player.directv.markdown index acfb4995368..2cd2c7f44dd 100644 --- a/source/_components/media_player.directv.markdown +++ b/source/_components/media_player.directv.markdown @@ -13,19 +13,63 @@ ha_release: 0.25 ha_iot_class: "Local Polling" --- -The [DirecTV](http://www.directv.com/) receivers will be automatically discovered if you enable the [discovery component](/components/discovery/). +Master [DirecTV](http://www.directv.com/) receivers (ie: those that have tuners) will be automatically discovered if you enable the [discovery component](/components/discovery/) and the receiver is powered-on. Slave/RVU client/Genie boxes will also be discovered, but only if they are also online at the time of discovery. -The `directv` media player platform can also be forced to load by adding the following lines to your `configuration.yaml`: +To ensure that your DirecTV boxes are always found and configured, they should be added into your `configuration.yaml`. ```yaml # Example configuration.yaml entry media_player: - platform: directv ``` - Configuration variables: - **host** (*Optional*): Use only if you don't want to scan for devices. - **port** (*Optional*): The port your receiver is using. Defaults to `8080`. - **name** (*Optional*): Use to give a specific name to the device. +- **device** (*Optional*): Use to specify a particular receiver in a Genie setup. + +To find valid device IDs, open `http://:8080/info/getLocations` in a web browser. For each Genie slave, you will find a variable `clientAddr` in the response, and this should be used for `device` in `configuration.yaml` + +For example, a response such as: + +```json +{ + "locations": [ + { + "clientAddr": "0", + "locationName": "MASTER GENIE SERVER", + "tunerBond": true + }, + { + "clientAddr": "5009591D6969", + "locationName": "SOME SLAVE GENIE" + } + ], + "status": { + "code": 200, + "commandResult": 0, + "msg": "OK.", + "query": "/info/getLocations" + } +} +``` + +Could be formatted into `configuration.yaml` like so: + +```yaml +media_player: +  - platform: directv + host: 192.168.1.10 + port: 8080 + name: Main DirecTV Box + device: 0 + - platform: directv + host: 192.168.1.10 + port: 8080 + name: Bedroom DirecTV + device: 5009591D6969 +``` + +It is important to notice that the host and port variables for slave/Genie receivers are the same as the master receiver. diff --git a/source/_components/media_player.firetv.markdown b/source/_components/media_player.firetv.markdown index aab8c253e0f..855333def81 100644 --- a/source/_components/media_player.firetv.markdown +++ b/source/_components/media_player.firetv.markdown @@ -1,7 +1,7 @@ --- layout: page title: "FireTV" -description: "Instructions how to integrate FIre-TV into Home Assistant." +description: "Instructions how to integrate Fire-TV into Home Assistant." date: 2015-10-23 18:00 sidebar: true comments: false diff --git a/source/_components/media_player.frontier_silicon.markdown b/source/_components/media_player.frontier_silicon.markdown index 3300f8dffd1..0c6a5843fa9 100644 --- a/source/_components/media_player.frontier_silicon.markdown +++ b/source/_components/media_player.frontier_silicon.markdown @@ -24,7 +24,7 @@ This component was developed and tested with a Hama [DIR3110] and a Medion [MD 8 ## Configuration -Your Frontier Silicon based device should be automatically discovered by home assistant. The auto-discovery service assumes that the device uses the default PIN code: *1234*. If you have changed the PIN code, the auto-discovery will fail as home assistant will not be able to connect to the device. You can set the PIN code of your device (depending on manufacturer) under: +Your Frontier Silicon based device should be automatically discovered by Home Assistant. The auto-discovery service assumes that the device uses the default PIN code: *1234*. If you have changed the PIN code, the auto-discovery will fail as Home Assistant will not be able to connect to the device. You can set the PIN code of your device (depending on manufacturer) under: *MENU button > Main Menu > System setting > Network > NetRemote PIN setup* @@ -43,7 +43,7 @@ Configuration variables: - **port** (*Optional*): The port number. Defaults to 80. - **password** (*Optional*): PIN code of the Internet Radio. Defaults to 1234. -Some models use a seperate port (2244) for API access, this can be verified by visiting http://[host]:[port]/device. +Some models use a separate port (2244) for API access, this can be verified by visiting http://[host]:[port]/device. In case your device (friendly name) is called *badezimmer*, an example automation can look something like this: @@ -80,8 +80,8 @@ is based on [tiwillam]'s fsapi project. Special thanks to both developers, this ## Notes and Limitations

-The Frontier Silicon API does not provide a multi-user environment. There is always a single user (session) controlling a device, which means that once home assistant connects to a device all other sessions will be invalidated. This renders the usage of [UNDOK] almost impossible, as the home assistant component polls the device state every 30 seconds or issues a command by creating a new session. -*If you want to prevent home assistant to auto connect to your device, simply change the PIN code of the device to something else than: 1234* +The Frontier Silicon API does not provide a multi-user environment. There is always a single user (session) controlling a device, which means that once Home Assistant connects to a device all other sessions will be invalidated. This renders the usage of [UNDOK] almost impossible, as the Home Assistant component polls the device state every 30 seconds or issues a command by creating a new session. +*If you want to prevent Home Assistant to auto connect to your device, simply change the PIN code of the device to something else than: 1234*

[Frontier Silicon chipset]: http://www.frontier-silicon.com/digital-radio-solutions diff --git a/source/_components/media_player.kodi.markdown b/source/_components/media_player.kodi.markdown index 9087ca2a758..556812292c6 100644 --- a/source/_components/media_player.kodi.markdown +++ b/source/_components/media_player.kodi.markdown @@ -35,7 +35,8 @@ Configuration variables: - **proxy_ssl** (*Optional*): Connect to kodi with HTTPS and WSS. Defaults to `false`. Useful if Kodi is behind an SSL proxy. - **username** (*Optional*): The XBMC/Kodi HTTP username. - **password** (*Optional*): The XBMC/Kodi HTTP password. -- **turn_off_action** (*Optional*): The desired turn off action. Options are `none`, `quit`, `hibernate`, `suspend`, `reboot`, or `shutdown`. Default `none`. +- **turn_on_action** (*Optional*): Home Assistant script sequence to call when turning on. +- **turn_off_action** (*Optional*): Home Assistant script sequence to call when turning off. - **enable_websocket** (*Optional*): Enable websocket connections to Kodi via the TCP port. Defaults to `true`. The websocket connection allows Kodi to push updates to Home Assistant and removes the need for Home Assistant to poll. If websockets don't work on your installation this can be set to `false`. - **timeout** (*Optional*): Set timeout for connections to Kodi. Defaults to 5 seconds. @@ -75,23 +76,174 @@ input: result: ``` +### {% linkable_title Kodi turn on/off samples %} + +With the `turn_on_action` and `turn_off_action` parameters you can run any combination of Home Assistant actions to turn on/off your Kodi instance. Here are a few examples of this usage, including the **migration instructions for the old `turn_off_action` list of options**. + +#### Turn on Kodi with Wake on LAN + +With this configuration, when calling `media_player/turn_on` on the Kodi device, a _magic packet_ will be sent to the specified MAC address. To use this service, first you need to config the [`wake_on_lan`](/components/wake_on_lan) component in Home Assistant, which is achieved simply by adding `wake_on_lan:` to your `configuration.yaml`. + +```yaml +media_player: + - platform: kodi + host: 192.168.0.123 + turn_on_action: + - service: wake_on_lan.send_magic_packet + data: + mac: aa:bb:cc:dd:ee:ff + broadcast_address: 192.168.255.255 +``` + +#### Turn off Kodi with API calls + +Here are the equivalent ways to configure each of the old options to turn off Kodi (`quit`, `hibernate`, `suspend`, `reboot`, or `shutdown`): + +- **Quit** method (before was `turn_off_action: quit`) + +```yaml +media_player: + - platform: kodi + host: 192.168.0.123 + turn_off_action: + service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: Application.Quit +``` + +- **Hibernate** method (before was `turn_off_action: hibernate`) + +```yaml +media_player: + - platform: kodi + host: 192.168.0.123 + turn_off_action: + service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: System.Hibernate +``` + +- **Suspend** method (before was `turn_off_action: suspend`) + +```yaml +media_player: + - platform: kodi + host: 192.168.0.123 + turn_off_action: + service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: System.Suspend +``` + +- **Reboot** method (before was `turn_off_action: reboot`) + +```yaml +media_player: + - platform: kodi + host: 192.168.0.123 + turn_off_action: + service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: System.Reboot +``` + +- **Shutdown** method (before was `turn_off_action: shutdown`) + +```yaml +media_player: + - platform: kodi + host: 192.168.0.123 + turn_off_action: + service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: System.Shutdown +``` + +#### Turn on and off the TV with the Kodi JSON-CEC Add-on + +For Kodi devices running 24/7 attached to a CEC capable TV (OSMC / OpenElec and systems alike running in Rasperry Pi's, for example), this configuration enables the optimal way to turn on/off the attached TV from Home Assistant while Kodi is always active and ready: + +```yaml +media_player: + - platform: kodi + host: 192.168.0.123 + turn_on_action: + service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: Addons.ExecuteAddon + addonid: script.json-cec + params: + command: activate + turn_off_action: + - service: media_player.media_stop + data: + entity_id: media_player.kodi + - service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: Addons.ExecuteAddon + addonid: script.json-cec + params: + command: standby +``` + +

+This example and the following requires to have the [script.json-cec](https://github.com/joshjowen/script.json-cec) plugin installed on your kodi player. It'll also expose th endpoints standy, toggle and activate without authentication on your kodi player. Use this with caution. +

+ ### {% linkable_title Kodi services samples %} -#### Simple script to turn on the TV with the Kodi JSON-CEC Addon +#### Simple script to turn on the PVR in some channel as a time function ```yaml script: - activate_tv: - alias: Turn on TV + play_kodi_pvr: + alias: Turn on the silly box sequence: - alias: TV on - service: media_player.kodi_call_method + service: media_player.turn_on data: - entity_id: media_player.kodi - method: Addons.ExecuteAddon - addonid: script.json-cec - params: - command: activate + 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)) %} + 10 + {% elif (now().hour < 16) %} + 15 + {% elif (now().hour < 20) %} + 2 + {% elif (now().hour == 20) and (now().minute < 50) %} + 10 + {% elif (now().hour == 20) or ((now().hour == 21) and (now().minute < 15)) %} + 15 + {% else %} + 10 + {% endif %}{% endraw %} ``` -For a more complex usage of the `kodi_call_method` service, with event triggering of Kodi API results, you can have a look at this [example](/cookbook/kodi_dynamic_input_select/) +#### Trigger a Kodi video library update + +```yaml +script: + update_library: + alias: Update Kodi Library + sequence: + - alias: Call Kodi update + service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: VideoLibrary.Scan +``` + +For a more complex usage of the `kodi_call_method` service, with event triggering of Kodi API results, you can have a look at this [example](/cookbook/automation_kodi_dynamic_input_select/) diff --git a/source/_components/media_player.markdown b/source/_components/media_player.markdown index e0a5fc8ff94..18350ce1326 100644 --- a/source/_components/media_player.markdown +++ b/source/_components/media_player.markdown @@ -32,7 +32,7 @@ Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, | Service data attribute | Optional | Description | |------------------------|----------|--------------------------------------------------| | `entity_id` | yes | Target a specific media player. Defaults to all. | -| `volume_level` | no | Float for volume level | +| `volume_level` | no | Float for volume level | #### {% linkable_title Service `media_player/media_seek` %} @@ -57,9 +57,12 @@ Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, | `source` | no | Name of the source to switch to. Platform dependent. | #### {% linkable_title Service `media_player/shuffle_set` %} -Currently only supports Spotify. + +Currently only supported on [Spotify](/components/media_player.spotify/), [MPD](/components/media_player.mpd/), [Kodi](/components/media_player.kodi/), and [Universal](/components/media_player.universal/). | Service data attribute | Optional | Description | | ---------------------- | -------- | ---------------------------------------------------- | | `entity_id` | no | Target a specific media player. For example `media_player.spotify`| -| `shuffle` | no | `true`/`false` for enabling/disabling shuffle | +| `shuffle` | no | `true`/`false` for enabling/disabling shuffle | + + diff --git a/source/_components/media_player.monoprice.markdown b/source/_components/media_player.monoprice.markdown new file mode 100644 index 00000000000..7487e75b1e8 --- /dev/null +++ b/source/_components/media_player.monoprice.markdown @@ -0,0 +1,49 @@ +--- +layout: page +title: "Monoprice 6-Zone Amplifier" +description: "Instructions on how to integrate Monoprice 6-Zone Home Audio Controller into Home Assistant." +date: 2017-10-02 11:45 +sidebar: true +comments: false +sharing: true +footer: true +logo: monoprice.svg +ha_category: Media Player +ha_release: 0.56 +ha_iot_class: "Local Polling" +--- + +The `monoprice` platform allows you to control [Monoprice 6-Zone Amplifier](https://www.monoprice.com/product?p_id=10761) using a serial connection. + +To add a Monoprice device to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: monoprice + port: /dev/ttyUSB0 + zones: + 11: + name: Main Bedroom + 12: + name: Living Room + 13: + name: Kitchen + 14: + name: Bathroom + 15: + name: Dining Room + 16: + name: Guest Bedroom + sources: + 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. diff --git a/source/_components/media_player.onkyo.markdown b/source/_components/media_player.onkyo.markdown index b8ba67fa4d7..e78075c01a5 100644 --- a/source/_components/media_player.onkyo.markdown +++ b/source/_components/media_player.onkyo.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Onkyo" -description: "Instructions how to integrate Onkyo receivers into Home Assistant." +description: "Instructions how to integrate Onkyo and some Pioneer receivers into Home Assistant." date: 2016-03-30 08:00 sidebar: true comments: false @@ -14,9 +14,9 @@ ha_iot_class: "Local Polling" --- -The `onkyo` platform allows you to control a [Onkyo receiver](http://www.onkyo.com/) from Home Assistant. +The `onkyo` platform allows you to control a [Onkyo](http://www.onkyo.com/) and some recent [Pioneer](http://www.pioneerelectronics.com) receivers from Home Assistant. Please be aware that you need to enable "Network Standby" for this component to work in your Hardware. -To add an Onkyo receiver to your installation, add the following to your `configuration.yaml` file: +To add an Onkyo or Pioneer receiver to your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_components/media_player.panasonic_viera.markdown b/source/_components/media_player.panasonic_viera.markdown index aa3c4edcc88..38cf5f1f8bd 100644 --- a/source/_components/media_player.panasonic_viera.markdown +++ b/source/_components/media_player.panasonic_viera.markdown @@ -23,6 +23,10 @@ Currently known supported models: - TX-55CX700E - TX-49DX650B - TX-50DX700B +- TX-L42ET50 +- TX-P50GT60E +- TX-65EXW784 +- TX-32AS520E If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.io). diff --git a/source/_components/media_player.pandora.markdown b/source/_components/media_player.pandora.markdown index bcddae6bde7..5f0098cff83 100644 --- a/source/_components/media_player.pandora.markdown +++ b/source/_components/media_player.pandora.markdown @@ -19,12 +19,18 @@ If you have a Pandora account, you can control it from Home Assistant with this ### {% linkable_title Installation of Pianobar %} -This media player uses the [Pianobar command-line Pandora client](https://github.com/PromyLOPh/pianobar), which you have to install separately. This can be done on a Raspberry Pi 2 with Raspbian Jesse as follows . _(Note: Other platforms may have different installation processes)_ +This media player uses the [Pianobar command-line Pandora client](https://github.com/PromyLOPh/pianobar), which you have to install separately. This can be done on a Raspberry Pi 2/3 with Raspbian Jessie as follows . _(Note: Other platforms may have different installation processes)_ -Install the following dependencies: +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](https://home-assistant.io/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 libav-tools libavcodec-extra libavcodec-dev libcurl4-openssl-dev libavfilter-dev libavformat-dev +$ sudo apt-get install git libao-dev libgcrypt11-dev libfaad-dev libmad0-dev libjson0-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): + +```bash +$ sudo apt-get -t jessie-backports install libav-tools libavcodec-extra libavcodec-dev libavfilter-dev libavformat-dev ``` Now clone the Pianobar repo and build pianobar: diff --git a/source/_components/media_player.pioneer.markdown b/source/_components/media_player.pioneer.markdown index 720241193d9..66086c5ded3 100644 --- a/source/_components/media_player.pioneer.markdown +++ b/source/_components/media_player.pioneer.markdown @@ -14,7 +14,7 @@ ha_release: 0.19 ha_iot_class: "Local Polling" --- -The `pioneer` platform allows you to control Pioneer Network Receivers. +The `pioneer` platform allows you to control Pioneer Network Receivers. Please note, however, that the more recent Pioneer models work with [Onkyo](/components/media_player.onkyo/) platform instead. To add a Pioneer receiver to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/media_player.plex.markdown b/source/_components/media_player.plex.markdown index f7184f07a68..ddaf3a611bf 100644 --- a/source/_components/media_player.plex.markdown +++ b/source/_components/media_player.plex.markdown @@ -17,7 +17,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. -## Setup +## {% linkable_title Setup %} The preferred way to setup the Plex platform is by enabling the [discovery component](/components/discovery/) which requires GDM enabled on your Plex server. @@ -29,6 +29,8 @@ If your Plex server has local authentication enabled or multiple users defined, If you don't know your token, see [Finding your account token / X-Plex-Token](https://support.plex.tv/hc/en-us/articles/204059436). +If your server enforces SSL connections, write "`on`" or "`true`" in the _"Use SSL"_ field. If it does not have a valid SSL certificate available but you still want to use it, write "`on`" or "`true`" in the _"Do not verify SSL"_ field as well. +

@@ -44,15 +46,19 @@ media_player: In case [discovery](/components/discovery/) does not work (GDM disabled or non-local plex server), you can create `~/.homeassistant/plex.conf` manually. ```json -{"IP_ADDRESS:PORT": {"token": "TOKEN"}} +{"IP_ADDRESS:PORT": {"token": "TOKEN", "ssl": false, "verify": true}} ``` -- **IP_ADDRESS** (*Required*): IP address of the Plex Media Server -- **PORT** (*Required*): Port where Plex is listening. Default is 32400 +- **IP_ADDRESS** (*Required*): IP address of the Plex Media Server. +- **PORT** (*Required*): Port where Plex is listening. Default is 32400. - **TOKEN** (*Optional*): Only if authentication is required. Set to `null` (without quotes) otherwise. +- **ssl** (*Optional*): Whether to use SSL/TLS or not. Defaults to `False` if not present. +- **verify** (*Optional*): Perform a verification of the certificate. To allow invalid or self-signed SSL certificates set it to `False`. Defaults to `True` if not present. + +## {% linkable_title Customization %} -## Customization You can customize the Plex component by adding any of the variables below to your configuration: + ```yaml # Example configuration.yaml entry media_player: @@ -120,7 +126,8 @@ Plays a song, playlist, TV episode, or video on a connected client. | Plex Web | None | | Tivo Plex App | Only play, pause, stop/off controls enabled | -### Notes +### {% linkable_title Notes %} + * At this moment, the Plex platform only supports one Plex Media Server. * It is possible to get errors that look like the following. @@ -129,4 +136,4 @@ Plays a song, playlist, TV episode, or video on a connected client. INFO:homeassistant.components.media_player.plex:No server found at: http://192.168.1.10:32400 ``` - If this occurs, try changing the setting `Secure connections` in your Plex Media Server to `Preferred` (instead of `Required`). The Plex component does not currently support HTTPS. + 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. diff --git a/source/_components/media_player.russound_rio.markdown b/source/_components/media_player.russound_rio.markdown new file mode 100644 index 00000000000..7a63ab7c666 --- /dev/null +++ b/source/_components/media_player.russound_rio.markdown @@ -0,0 +1,34 @@ +--- +layout: page +title: "Russound RIO" +description: "Instructions on how to integrate Russound RIO devices into Home Assistant." +date: 2017-07-12 22:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: russound.png +ha_category: Media Player +ha_release: 0.49 +ha_iot_class: "Local Push" +--- + +The `russound_rio` platform allows you to control Russound devices that make use of the RIO protocol. + +The platform automatically discovers all enabled zones and sources. Each zone is added as a media player device with the enabled sources available as inputs. Media information is supported if the selected source reports it. + +To add a device to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: russound_rio + host: 192.168.1.10 + 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 diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index 741b9f1331c..511bdeee001 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -38,6 +38,7 @@ Configuration variables: Currently known supported models: - C7700 +- D6500 - D7000 - D8000 - ES5500 @@ -47,11 +48,14 @@ Currently known supported models: - EH5300 - EH5600 - F6400AF +- F6400 - D6505 - D6300SF - U6000 (port must be set to 8001) +- U6300 (port must be set to 8001, and `pip3 install websocket-client` must be executed) - K6500AF (port must be set to 8001) - KS8005 (port must be set to 8001, and `pip3 install websocket-client` must be executed) +- KS7502 (port must be set to 8001, and `pip3 install websocket-client` must be executed, turn on doesn't work, turn off works fine) - K5600AK (partially supported, turn on works but state is not updated) Currently tested but not working models: @@ -59,6 +63,9 @@ Currently tested but not working models: - J5200 - Unable to see state and unable to control - JU7000 - Unable to see state and unable to control (but port 8001 *is* open) - JU7500 - Unable to see state and unable to control +- 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) +- MU6170UXZG (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).) If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/media_player.samsungtv.markdown). 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. @@ -66,4 +73,4 @@ If you add your model remember to remove these before adding them to the list. Currently the ability to select a source is not implemented. -There's currently a [known issue](https://github.com/home-assistant/home-assistant/issues/2098) with some TVs receiving a *Key press UP* that can interrupt certain applications. +There's currently a [known issue](https://github.com/home-assistant/home-assistant/issues/2098) with some TVs receiving a *Key press UP* that can interrupt certain applications. This should be fixed as of March 2017. diff --git a/source/_components/media_player.sonos.markdown b/source/_components/media_player.sonos.markdown index 2938c1e2fda..9f54fa81732 100644 --- a/source/_components/media_player.sonos.markdown +++ b/source/_components/media_player.sonos.markdown @@ -61,7 +61,7 @@ Take a snapshot of what is currently playing on one or more speakers. This servi | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | no | String or list of strings that point at `entity_id`s of coordinator speakers. +| `entity_id` | yes | String or list of strings that point at `entity_id`s of coordinator speakers. | `with_group` | yes | Should be also snapshot the group state of the speaker. ### {% linkable_title Service `sonos_restore` %} @@ -70,7 +70,7 @@ Restore a previously taken snapshot of one or more speakers. If no `entity_id` i | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | no | String or list of strings that point at `entity_id`s of coordinator speakers. +| `entity_id` | yes | String or list of strings that point at `entity_id`s of coordinator speakers. | `with_group` | yes | Should be also restore the group state of the speaker. Only if was snapshot with group. ### {% linkable_title Service `sonos_join` %} diff --git a/source/_components/media_player.soundtouch.markdown b/source/_components/media_player.soundtouch.markdown index 897fa228399..fa2a550b024 100644 --- a/source/_components/media_player.soundtouch.markdown +++ b/source/_components/media_player.soundtouch.markdown @@ -52,7 +52,7 @@ Configuration variables: You can switch between one of your 6 pre-configured presets using ```media_player.play_media``` ```yaml -# Play media in configuration.yaml +# Play media preset - service: media_player.play_media data: entity_id: media_player.soundtouch_living_room @@ -60,6 +60,23 @@ You can switch between one of your 6 pre-configured presets using ```media_playe media_content_type: PLAYLIST ``` +You can also play HTTP (not HTTPS) URLs: + +```yaml +# Play media URL +- service: media_player.play_media + data: + entity_id: media_player.soundtouch_living_room + media_content_id: http://example.com/music.mp3 + media_content_type: MUSIC +``` + +### {% linkable_title Text-to-Speech services %} + +You can use TTS services like [Google Text-to-Speech](/components/tts.google/) or [Amazon Polly](/components/tts.amazon_polly) only if your Home Assistant is configured in HTTP and not HTTPS (current device limitation, a firmware upgrade is planned). + +A workaround if you want to publish your Home Assistant installation on Internet in SSL is to configure an HTTPS Web Server as a reverse proxy ([nginx](/docs/ecosystem/nginx/) for example) and let your Home Assistant configuration in HTTP on your local network. The Soundtouch devices will be available to access the TTS files in HTTP in local and your configuration will be in HTTPS on the Internet. + ### {% linkable_title Service `soundtouch_play_everywhere` %} Create a multi-room (zone) from a master and play same content on all other diff --git a/source/_components/media_player.spotify.markdown b/source/_components/media_player.spotify.markdown index f6b1cfe51e4..ec347498342 100644 --- a/source/_components/media_player.spotify.markdown +++ b/source/_components/media_player.spotify.markdown @@ -68,7 +68,7 @@ Configuration variables: 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 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. +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. ## {% 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 media_player.play_media service, you can test this from the services control panel in the Home Assistant frontend. diff --git a/source/_components/media_player.universal.markdown b/source/_components/media_player.universal.markdown index 09c8adebfa7..1d19ddadcf6 100644 --- a/source/_components/media_player.universal.markdown +++ b/source/_components/media_player.universal.markdown @@ -60,7 +60,7 @@ It is recommended that the command *turn_on*, the command *turn_off*, and the at It is also recommended that the command *volume_up*, the command *volume_down*, the command *volume_mute*, and the attribute *is_volume_muted* all be provided together. The attribute *is_volume_muted* should return either True or the on state when the volume is muted. The *volume_mute* service should toggle the mute setting. -When providing *select_source* as a command, it is recomended to also provide the attributes *source*, and *source_list*. The *source* attribute is the currently select source, while the *source_list* attribute is a list of all available sources. +When providing *select_source* as a command, it is recommended to also provide the attributes *source*, and *source_list*. The *source* attribute is the currently select source, while the *source_list* attribute is a list of all available sources. Below is an example configuration. @@ -96,12 +96,12 @@ media_player: service: media_player.select_source data_template: entity_id: media_player.receiver - source: '{{ source }}' + source: '{% raw %}{{ source }}{% endraw %}' volume_set: service: media_player.volume_set data_template: entity_id: media_player.receiver - volume_level: '{{ volume_level }}' + volume_level: '{% raw %}{{ volume_level }}{% endraw %}' attributes: state: switch.living_room_tv diff --git a/source/_components/media_player.vizio.markdown b/source/_components/media_player.vizio.markdown new file mode 100644 index 00000000000..ae68385e13a --- /dev/null +++ b/source/_components/media_player.vizio.markdown @@ -0,0 +1,100 @@ +--- +layout: page +title: "Vizio SmartCast TV" +description: "Instructions how to integrate Vizio SmartCast TV into Home Assistant." +date: 2017-07-10 19:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: vizio-smartcast.png +ha_category: Media Player +featured: false +ha_release: 0.49 +ha_iot_class: "Local Polling" +--- + +The `vizio` component will allow you to control [SmartCast](https://www.vizio.com/smartcast-app) compatible TVs (2016+ models). + +## Pairing + +Before adding your TV to Home Assistant you'll need to pair it manually. To do so follow these steps: + +Install the command-line tool using `pip` (or you can choose to download it manually): + +```bash +$ pip3 install git+https://github.com/vkorn/pyvizio.git@master +``` + +or + +```bash +$ pip3 install -I . +``` + +Make sure that your TV is on before continuing. + +If you don't know IP address of your TV run following command: + +```bash +$ pyvizio --ip=0 --auth=0 discover +``` + +Enter the following command to initiate pairing: + +```bash +$ pyvizio --ip={ip} pair +``` + +Initiation will show you two different values: + +| Value | Description | +|:----------------|:---------------------| +| Challenge type | Usually it should be `"1"`. If not, use the additional parameter `--ch_type=your_type` in the next step | +| Challenge token | Token required to finalize pairing in the next step | + +Finally, at this point a PIN code should be displayed at the top of your TV. With all these values, you can now finish pairing: + +```bash +$ pyvizio --ip={ip} pair_finish --token={challenge_token} --pin={tv_pin} +``` + +You will need the authentication token returned by this command to configure Home Assistant. + +## Configuration + +To add your Vizio TV to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: vizio + host: IP_ADDRESS + access_token: AUTH_TOKEN +``` + +Configuration variables: + +- **host** (*Required*): IP address of your TV. +- **access_token** (*Required*): Authentication token you received in the last step of the pairing process. + +## Notes and limitations + +### Turning TV on + +If the `Power Mode` of your TV is set to `Eco Mode`, turning the device ON won't work. + +### Changing tracks + +Changing tracks works like channels switching. If you have source other than regular TV it might end do nothing. + +### Sources + +Source list shows all external devices connected to the TV through HDMI plus list of internal devices (TV mode, Chrome Cast, etc.). + +

+Vizio SmartCast service is accessible through HTTPS with self-signed certificate. If you have low LOGLEVEL in your Home Assistant configuration, you'll see a lot of warnings like this: +`InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised.` + +You can adjust the log level for `media_player` components with the [logger](https://home-assistant.io/components/logger/) component, or if you need to keep a low log level for `media_player` you could proxy calls to your TV through an NGINX reverse proxy. +

diff --git a/source/_components/media_player.webostv.markdown b/source/_components/media_player.webostv.markdown index 0da2e8b44fc..3775ae8260c 100644 --- a/source/_components/media_player.webostv.markdown +++ b/source/_components/media_player.webostv.markdown @@ -15,7 +15,16 @@ ha_release: 0.18 The `webostv` platform allows you to control a [LG](http://www.lg.com/) webOS Smart TV. -When the TV is first connected, you will need to accept Home Assistant on the TV to allow communication. +### {% linkable_title Setup %} + +To begin with enable *LG Connect Apps* feature in *Network* settings of the TV [instructions](http://www.lg.com/uk/support/product-help/CT00008334-1437131798537-others). + +Once basic configuration is added to your `configuration.yaml` *Configuration* card should prompt on your HA's States. Follow the instructions and accept pairing request on your TV. + +Pairing information will be saved to the `filename:` provided in configuration; this process is IP sensitive, in case the IP address of your TV would change in future. + + +### {% linkable_title Configuration %} To add a TV to your installation, add the following to your `configuration.yaml` file: @@ -28,14 +37,14 @@ media_player: Configuration variables: - **host** (*Optional*): The IP of the LG webOS Smart TV, e.g. `192.168.0.10`. -- **mac** (*Optional*): The MAC address of the TV, e.g. `C8:08:E9:99:99:1A`. +- **turn_on_action** (*Optional*): Defines an [action](/docs/automation/action/) to turn the TV on. - **name** (*Optional*): The name you would like to give to the LG webOS Smart TV. +- **timeout** (*Optional*): The timeout for connections to the TV in seconds. - **filename** (*Optional*): The filename where the pairing key with the TV should be stored. This path is relative to Home Assistant's config directory. It defaults to `webostv.conf`. - **customize** array (*Optional*): List of options to customize. - - ***sources** array (*Optional*): List of hardware inputs. + - ***sources** array (*Optional*): List of hardware and webOS App inputs. -If you do not specify `host:`, all LG webOS Smart TVs within your network will be auto-discovered if they use the default name setting of `[LG] webOS TV`. -Home Assistant is able to turn on a LG webOS Smart TV if you specify its MAC address with `mac:`. Some models require the **Mobile TV On** setting and/or a wired network connection to use Wake-on-LAN. +If you do not specify `host:`, all LG webOS Smart TVs within your network will be auto-discovered. A full configuration example will look like the sample below: @@ -44,9 +53,13 @@ A full configuration example will look like the sample below: media_player: - platform: webostv host: 192.168.0.10 - mac: C8:08:E9:99:99:1A - name: Living Room TV + name: Living Room TV + timeout: 5 filename: webostv.conf + turn_on_action: + service: persistent_notification.create + data: + message: "Turn on action" customize: sources: - livetv @@ -54,3 +67,32 @@ media_player: - makotv - netflix ``` +** avoid using `[ ]` in the `name:` of your device. + + +*Turn On Action* + +Home Assistant is able to turn on a LG webOS Smart TV if you specify an action, like HDMI-CEC or WakeOnLan. + +Common for webOS 3.0 and higher would be to use WakeOnLan feature. +To use this feature your TV should be connected to your network via Ethernet rather than Wireless and you should enable *LG Connect Apps* feature in *Network* settings of the TV [instructions](http://www.lg.com/uk/support/product-help/CT00008334-1437131798537-others) (or *Mobile App* in *General* settings for older models) (*may vary by version). + +```yaml +# Example configuration.yaml entry +wake_on_lan: # enables `wake_on_lan` domain + +media_player: + - platform: webostv + host: 192.168.0.10 + #other settings + turn_on_action: + service: wake_on_lan.send_magic_packet + data: + mac: B4:E6:2A:1E:11:0F +``` +Any other [actions](/docs/automation/action/) to power on the device can be configured. + + +*Sources* + +To obtain complete list of available sources currently configured on the TV, once the webOS TV is configured and linked, while its powered on head to the **Developer Tools** > **States**, find your `media_player.` and use the sources listed in `source_list:` remembering to split them per line into your `sources:` configuration. diff --git a/source/_components/media_player.yamaha.markdown b/source/_components/media_player.yamaha.markdown index 3285d021d7b..8ab1d511144 100644 --- a/source/_components/media_player.yamaha.markdown +++ b/source/_components/media_player.yamaha.markdown @@ -32,18 +32,37 @@ media_player: ``` Configuration variables: -- **name** (*Optional*): Name of the device +- **name** (*Optional*): Name of the device. This overrides the + default name (often model number) that is returned by the device. - **host** (*Optional*): IP address or hostname of the device - **source_ignore** (*Optional*): List of sources to hide in the front-end - **source_names** (*Optional*): Mapping of internal AVR source names to custom ones, allowing to rename e.g. `HDMI1` to `ChromeCast` -A few notes: +### {% linkable_title Discovery notes %} -- Not specifying the host variable will result in automatically searching your network for Yamaha Receivers. It will add a media player device for each one. -- For receivers that support more than one zone, Home Assistant will add one media player per zone supported by the player, named "$name Zone 2" and "$name Zone 3". -- In some cases, autodiscovery fails due to a known bug in the receiver's firmware. It is possible to manually specify the receiver's IP address or via it's hostname (if it is discoverably by your DNS) then. -- Please note: If adding the IP address or hostname manually, you **must** enable network standby on your receiver, or else startup of Home Assistant will hang if you have your receiver switched off. -- Currently, this component supports powering on/off, mute, volume control and source selection. Playback controls, for instance play and stop are available for sources that supports it. +- If the `discovery` component is enabled, all units on the network + will be discovered using UPNP. +- For receivers that support more than one zone, Home Assistant will + add one media player per zone supported by the player, named "$name + Zone 2" and "$name Zone 3". +- If you specify `host` manually, you **must** enable network standby + on your receiver, or else startup of Home Assistant will hang if you + have your receiver switched off. +- In some cases, auto-discovery fails due to a known bug in the + receiver's firmware. It is possible to manually specify the + receiver's IP address or via it's hostname (if it is discoverable by + your DNS) then. + +### {% linkable_title Supported operations %} + +- Media players created by yamaha support powering on/off, mute, + volume control and source selection. Playback controls, for instance + play and stop are available for sources that supports it. +- The `play_media` service is implemented for `NET RADIO` source + only. The `media_id` is a `>` separted string of the menu path on + the vtuner service. For instance `Bookmarks>Internet>WAMC 90.3 FM`. + +### {% linkable_title Example configuration %} A full configuration example will look like the sample below: ```yaml @@ -58,3 +77,33 @@ media_player: HDMI1: "ChromeCast" AV4: "Vinyl" ``` + +### {% linkable_title Example `play_media` script %} + +The `play_media` function can be used in scripts easily to build media +player presets. When done in scripts, the sequence will also allow you +to set volume per source. + +```yaml +# Example play_media script +# +# This is for an environment where Zone 2 of the receiver named +# `Living Room Stereo` drives outdoor speakers on the porch. +script: + rp_porch: + alias: "Radio Paradise Porch" + sequence: + - service: media_player.turn_on + data: + entity_id: media_player.living_room_stereo_zone_2 + - service: media_player.volume_set + data: + entity_id: media_player.living_room_stereo_zone_2 + volume_level: 0.48 + - service: media_player.play_media + data: + entity_id: media_player.living_room_stereo_zone_2 + media_content_type: "NET RADIO" + media_content_id: "Bookmarks>Internet>Radio Paradise" + +``` diff --git a/source/_components/media_player.yamaha_musiccast.markdown b/source/_components/media_player.yamaha_musiccast.markdown new file mode 100644 index 00000000000..121687b9827 --- /dev/null +++ b/source/_components/media_player.yamaha_musiccast.markdown @@ -0,0 +1,44 @@ +--- +layout: page +title: "Yamaha MusicCast Receivers" +description: "Instructions on how to integrate Yamaha MusicCast Receivers into Home Assistant." +date: 2017-09-02 22:00 +0100 +sidebar: true +comments: false +sharing: true +footer: true +logo: yamaha.png +ha_category: Media Player +ha_release: 0.53 +--- + +The `yamaha_musiccast` platform allows you to control [Yamaha MusicCast Receivers](https://usa.yamaha.com/products/audio_visual/hifi_components/index.html) from Home Assistant. + +Supported devices are listed on their [German site](https://de.yamaha.com/de/products/contents/audio_visual/musiccast/products.html). + +To add a Yamaha Network Receiver to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: yamaha_musiccast + host: 192.168.xx.xx +``` +Configuration variables: + +- **host** (*Required*): IP address or hostname of the device +- **port** (*Optional*): UDP Port +- **interval_seconds** (*Optional*): Polling interval (default: 480 seconds = 8 minutes) + +A few notes: + +- Currently, this component supports powering on/off, mute, volume control, and source selection. Playback controls, for instance, play and stop are available for sources that support it. + +A full configuration example will look like the sample below: +```yaml +# Example configuration.yaml entry +media_player: + - platform: yamaha_musiccast + host: 192.168.178.97 + port: 5005 +``` diff --git a/source/_components/microsoft_face.markdown b/source/_components/microsoft_face.markdown index 8b9f95c28ad..d7d8cdc7ed0 100644 --- a/source/_components/microsoft_face.markdown +++ b/source/_components/microsoft_face.markdown @@ -14,9 +14,9 @@ ha_release: "0.37" The `microsoft_face` component platform is the main component for Microsoft Azure Cognitive service [Face](https://www.microsoft.com/cognitive-services/en-us/face-api). All data are stored in your own private instance in the Azure cloud. -You need an API key which is free but requires a [Azure registration](https://azure.microsoft.com/de-de/free/) using your microsoft ID. The free resource (*F0*) is limited to 20 requests per minute and 30k requests in a month. If you don't want to use the Azure cloud, you can also get an API key by registering with [cognitive-services](https://www.microsoft.com/cognitive-services/en-us/subscriptions). However, all keys on cognitive services must be recreated every 90 days. +You need an API key, which is free, but requires an [Azure registration](https://azure.microsoft.com/de-de/free/) using your Microsoft ID. The free resource (*F0*) is limited to 20 requests per minute and 30k requests in a month. If you don't want to use the Azure cloud, you can also get an API key by registering with [cognitive-services](https://www.microsoft.com/cognitive-services/en-us/subscriptions). Please note that all keys on cognitive services must be recreated every 90 days. -To enable the Microsoft Face component, add the following lines to your `configuration.yaml`: +To enable the Microsoft Face component, add the following to your `configuration.yaml`: ```yaml # Example configuration.yaml entry @@ -33,9 +33,9 @@ Configuration variables: ### {% linkable_title Person and Groups %} -For most services, you need to set up a group or a person. This limits the processing and detection to elements provided by the group. Home Assistent creates an entty for all groups and allows you to show the state, person and IDs directly on the frontend. +For most services, you need to set up a group or a person. This limits the processing and detection to elements provided by the group. Home Assistant creates an entity for all groups and allows you to show the state, person, and IDs directly on the frontend. -The following services are available for managing this feature. They can be called via the Frontend, a script, or the REST API. +The following services are available for managing this feature and can be called via the Frontend, a script, or the REST API. - *microsoft_face.create_group* - *microsoft_face.delete_group* diff --git a/source/_components/modbus.markdown b/source/_components/modbus.markdown index e4efe057bfd..f673298d82e 100644 --- a/source/_components/modbus.markdown +++ b/source/_components/modbus.markdown @@ -31,8 +31,9 @@ modbus: Configuration variables: - **type** (*Required*): Type of the connection to Modbus. -- **host** (*Required*): The IP address of your router, eg. 192.168.1.1. +- **host** (*Required*): The IP address of your Modbus device, eg. 192.168.1.1. - **port** (*Required*): The port for the communication. +- **timeout** (*Optional*): Timeout for slave response in seconds. (default: 3) For a serial connection: @@ -57,6 +58,7 @@ Configuration variables: - **stopbits** (*Required*): The stopbits for the serial connection. - **bytesize** (*Required*): The bytesize for the serial connection. - **parity** (*Required*): The parity for the serial connection. +- **timeout** (*Optional*): Timeout for slave response in seconds. (default: 3) ### {% linkable_title Services %} diff --git a/source/_components/mqtt_statestream.markdown b/source/_components/mqtt_statestream.markdown new file mode 100644 index 00000000000..1fa88b4469f --- /dev/null +++ b/source/_components/mqtt_statestream.markdown @@ -0,0 +1,49 @@ +--- +layout: page +title: "MQTT Statestream" +description: "Instructions how to setup MQTT Statestream within Home Assistant." +date: 2017-10-01 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: mqtt.png +ha_category: Other +ha_release: 0.54 +ha_iot_class: depends +--- + +The `mqtt_statestream` component publishes state changes in Home Assistant to individual MQTT topics. + +To enable MQTT Statestream in Home Assistant, add the following section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +mqtt_statestream: + base_topic: homeassistant + publish_attributes: true + publish_timestamps: true +``` + +Configuration variables: + +- **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. + +## Operation + +When any Home Assistant entity changes, this component will publish that change to MQTT. + +The topic for each entity is different, so you can easily subscribe other systems to just the entities you are interested in. +The topic will be in the form `base_topic/domain/entity/state`. + +For example, with the example configuration above, if an entity called 'light.master_bedroom_dimmer' is turned on, this component will publish `on` to `homeassistant/light/master_bedroom_dimmer/state`. + +If that entity also has an attribute called `brightness`, the component will also publish the value of that attribute to `homeassistant/light/master_bedroom_dimmer/brightness`. + +All states and attributes are passed through JSON serialization before publishing. **Please note** that this causes strings to be quoted (e.g., the string 'on' will be published as '"on"'). You can access the JSON deserialized values (as well as unquoted strings) at many places by using `value_json` instead of `value`. + +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`. diff --git a/source/_components/mycroft.markdown b/source/_components/mycroft.markdown new file mode 100644 index 00000000000..50241b7a2f1 --- /dev/null +++ b/source/_components/mycroft.markdown @@ -0,0 +1,31 @@ +--- +layout: page +title: "Mycroft" +description: "Instructions how to setup Mycroft AI within Home Assistant." +date: 2017-08-26 17:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: mycroft.png +ha_category: Voice +ha_release: 0.53 +--- + +[Mycroft](https://mycroft.ai) is a open source voice assistant that allows you to send notifications and more to Mycroft from Home Assistant. + +```yaml +# Example configuration.yaml entry +mycroft: + host: 0.0.0.0 +``` + +`host` is your IP address of your mycroft instance. Once you have added your host to your `configuration.yaml` file, restart your Home Assistant server. This will load up the Mycroft component and make a service available to notify on Mycroft and more eventually. + + +The `mycroft` notification platform allows you to deliver notifications from Home Assistant to [Mycroft AI](https://mycroft.ai/). + +To use this notification platform you simply need to input into the configuration that mycroft is your notification platform like seen above. + + +To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/mysensors.markdown b/source/_components/mysensors.markdown index e7e3ac4c8c4..c91f5a123e6 100644 --- a/source/_components/mysensors.markdown +++ b/source/_components/mysensors.markdown @@ -26,6 +26,11 @@ mysensors: - device: '/dev/ttyUSB0' persistence_file: 'path/mysensors.json' baud_rate: 38400 + nodes: + 1: + name: 'kitchen' + 3: + name: 'living_room' - device: '/dev/ttyACM0' persistence_file: 'path/mysensors2.json' baud_rate: 115200 @@ -39,22 +44,78 @@ mysensors: optimistic: false persistence: true retain: true - version: 2.0 + version: '2.0' ``` -Configuration variables: - -- **device** (*Required*): The path to the serial gateway where it is connected to your Home Assistant host, or the address of the tcp ethernet gateway, or `mqtt` to setup the MQTT gateway. Resolving DNS addresses is theoretically supported but not tested. -- **baud_rate** (*Optional*): Specifies the baud rate of the connected serial gateway. Default is 115200. -- **tcp_port** (*Optional*): Specifies the port of the connected tcp ethernet gateway. Default is 5003. -- **topic_in_prefix** (*Optional*): Set the prefix of the MQTT topic for messages coming from the MySensors gateway in to Home Assistant. Default is an empty string. -- **topic_out_prefix** (*Optional*): Set the prefix of the MQTT topic for messages going from Home Assistant out to the MySensors gateway. Default is an empty string. -- **debug** (*DEPRECATED*): This option has been deprecated. Please remove this from your config is you have it included. Use the logger component to filter log messages on log level. -- **persistence** (*Optional*): Enable or disable local persistence of sensor information. If this is disabled, then each sensor will need to send presentation messages after Home Assistant starts. Default is true. -- **persistence_file** (*Optional*): The path to a file to save sensor information. The file extension determines the file type. Currently supported file types are 'pickle' and 'json'. -- **version** (*Optional*): Specifies the MySensors protocol version to use. Supports 1.4, 1.5 and 2.0. Default is 1.4. -- **optimistic** (*Optional*): Enable or disable optimistic mode for actuators (switch/light). Default is false. Set this to true if no state feedback from actuators is possible. Home Assistant will assume that the command succeeded and change state. -- **retain** (*Optional*): Enable or disable retain flag for published messages from Home Assistant when using the MQTT gateway. Default is true. +{% configuration %} + gateways: + description: A list of gateways to set up. + required: true + type: map + keys: + device: + description: The path to the serial gateway where it is connected to your Home Assistant host, or the address of the TCP Ethernet gateway, or `mqtt` to setup the MQTT gateway. Resolving DNS addresses is theoretically supported but not tested. + required: true + type: string + baud_rate: + description: Specifies the baud rate of the connected serial gateway. + required: false + type: int + default: 115200 + tcp_port: + description: Specifies the port of the connected TCP Ethernet gateway. + required: false + type: int + default: 5003 + topic_in_prefix: + description: Set the prefix of the MQTT topic for messages coming from the MySensors gateway in to Home Assistant. + required: false + type: string + default: '' + topic_out_prefix: + description: Set the prefix of the MQTT topic for messages going from Home Assistant out to the MySensors gateway. + required: false + type: string + default: '' + nodes: + description: A mapping of node ids to node settings, eg custom name. + required: false + type: map + keys: + name: + description: The name the node will be renamed to. This nodename becomes part of the entity_id. Default entity_id is [sketch_name]\_[node_id]\_[child_id] and when this name is set, the entity_id becomes [name]\_[child_id]. + required: true + type: string + debug: + description: This option has been deprecated. Please remove this from your config if you have it included. Use the [logger component](/components/logger/) to filter log messages on log level. + required: false + type: int + persistence: + description: Enable or disable local persistence of sensor information. If this is disabled, then each sensor will need to send presentation messages after Home Assistant starts. + required: false + type: int + default: true + persistence_file: + description: The path to a file to save sensor information. The file extension determines the file type. Currently supported file types are 'pickle' and 'json'. + required: false + type: string + default: path/to/config/directory/mysensors.pickle + version: + description: Specifies the MySensors protocol version to use. Supports 1.4, 1.5 and 2.0. + required: false + type: string + default: '1.4' + optimistic: + description: Enable or disable optimistic mode for actuators (switch/light). Set this to true if no state feedback from actuators is possible. Home Assistant will assume that the command succeeded and change state. + required: false + type: int + default: false + retain: + description: Enable or disable retain flag for published messages from Home Assistant when using the MQTT gateway. + required: false + type: int + default: true +{% endconfiguration %}

Not all features of MySensors 2.0 are yet supported by Home Assistant. As more features are added, they will be described here in the documentation. Go to the MySensors platform pages under "related components" to see what message types are currently supported. @@ -81,7 +142,7 @@ The MQTT gateway requires MySensors version 2.0 and only the MQTT client gateway Present a MySensors sensor or actuator, by following these steps: -1. Connect the serial gateway to your computer or the ethernet or MQTT gateway to your network. +1. Connect the serial gateway to your computer or the Ethernet or MQTT gateway to your network. 2. Configure the MySensors component in `configuration.yaml`. 3. Start hass. 4. Write and upload your MySensors sketch to the sensor. Make sure you: @@ -172,7 +233,23 @@ void receive(const MyMessage &message) { ### {% linkable_title Heartbeats %} -Sending a heartbeat from the MySensors device to Home Assistant activates the SmartSleep functionality in Home Assistant. This means that messages are buffered and only sent to the device upon receiving a heartbeat from the device. State changes are stored so that only the last requested state change is sent to the device. Other types of messages are queued in a FIFO queue. SmartSleep is useful for battery powered actuators that are waiting for commands. See the MySensors library API for information on how to send heartbeats and sleep device. +Sending a heartbeat from the MySensors device to Home Assistant activates the SmartSleep functionality in Home Assistant. This means that messages are buffered and only sent to the device upon receiving a heartbeat from the device. State changes are stored so that only the last requested state change is sent to the device. Other types of messages are queued in a FIFO queue. SmartSleep is useful for battery powered actuators that are waiting for commands. See the MySensors library API for information on how to send heartbeats and sleep device. + +### {% linkable_title Message validation %} + +Messages sent to or from Home Assistant from or to a MySensors device will be validated according to the MySensors [serial API](https://www.mysensors.org/download/serial_api_20). If a message doesn't pass validation, it will be dropped and not be passed forward either to or from Home Assistant. Make sure you follow the serial API for your version of MySensors when writing your Arduino sketch. + +If you experience dropped messages or that a device is not added to Home Assistant, please turn on debug logging for the `mysensors` component and the `mysensors` package. +```yaml +logger: + default: info + logs: + homeassistant.components.mysensors: debug + mysensors: debug +``` +The log should inform you of messages that failed validation or if a child value is missing that is required for a certain child type. Note that the log will log all possible combinations of platforms for a child type that failed validation. It is normal to see some platforms fail validation if the child type supports multiple platforms and your sketch doesn't send all corresponding value types. Eg. the S_BARO child type supports both V_PRESSURE and V_FORECAST value types. If you only send a V_PRESSURE value, an S_BARO entity with V_PRESSURE value will be set up for the sensor platform. But the log will inform of a sensor platform that failed validation due to missing V_FORECAST value type for the S_BARO child. Home Assistant will log failed validations of child values at warning level if one required value type for a platform has been received, but other required value types are missing. Most failed validations are logged at debug level. + +Message validation was introduced in version 0.52 of Home Assistant. Visit the [library api][MySensors library api] of MySensors for more information. diff --git a/source/_components/namecheapdns.markdown b/source/_components/namecheapdns.markdown new file mode 100644 index 00000000000..3331080fa93 --- /dev/null +++ b/source/_components/namecheapdns.markdown @@ -0,0 +1,46 @@ +--- +layout: page +title: "NamecheapDNS" +description: "Keep your namecheap dynamic DNS up to date" +date: 2017-10-11 20:16 +sidebar: true +comments: false +sharing: true +footer: true +logo: namecheap.png +ha_category: Utility +featured: false +ha_release: 0.56 +--- + +With the `namecheapdns` component you can automatically update your dynamic DNS entry at [namecheapdns](https://www.namecheap.com/store/domains/freedns/). + +

+Namecheap only supports IPv4 adresses to update. +

+ +To use the component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +namecheapdns: + domain: example.com + password: YOUR_PASSWORD +``` + +{% configuration %} + host: + description: The host part or "subdomain" part you want to update. + required: false + type: string + domain: + description: Your namecheap TLD (example.com). + required: true + type: string + password: + description: The namecheap "Dynamic DNS Password" you can find under the "Advanced DNS" tab. + required: true + type: string +{% endconfiguration %} + +See the [How do I set up a Host for Dynamic DNS?](https://www.namecheap.com/support/knowledgebase/article.aspx/43/11/how-do-i-set-up-a-host-for-dynamic-dns) for further instructions diff --git a/source/_components/nest.markdown b/source/_components/nest.markdown index 389bc14d1e8..b3d376c50fc 100644 --- a/source/_components/nest.markdown +++ b/source/_components/nest.markdown @@ -25,7 +25,7 @@ The Nest component is the main component to integrate all [Nest](https://nest.co 5. Click "[Create New Product](https://developers.nest.com/products/new)" 6. Fill in details: - Product name must be unique. We recommend [email] - Home Assistant. - - The description, users, urls can all be anything you want. + - The description, users, URLs can all be anything you want. - Leave the "Redirect URI" Field blank 7. For permissions check every box and if it's an option select the read/write option. - The description requires a specific format to be accepted. @@ -34,6 +34,8 @@ The Nest component is the main component to integrate all [Nest](https://nest.co 9. Once the new product page opens the "Product ID" and "Product Secret" are located on the right side. These will be used as `client_id` and `client_secret` below. 10. Once Home Assistant is started, a configurator will pop up asking you to log into your Nest account and copy a PIN code into Home Assistant. +Connecting to the Nest Developer API requires outbound port 8553 on your firewall. The configuration will fail if this is not accessible. + ### {% linkable_title Configuration %} ```yaml @@ -58,3 +60,29 @@ Configuration variables: - **client_id** (*Required*): Your Nest developer client ID. - **client_secret** (*Required*): Your Nest developer client secret. - **structure** (*Optional*): The structure or structures you would like to include devices from. If not specified, this will include all structures in your Nest account. + +### {% linkable_title Services %} + +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. + +```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 +``` + +```yaml +# Example script to set home, structure specified +set_nest_home: + sequence: + - service: nest.set_mode + data: + home_mode: home + structure: + - Building +``` diff --git a/source/_components/netatmo.markdown b/source/_components/netatmo.markdown index e502e50e4fc..a7b6a30a0c0 100644 --- a/source/_components/netatmo.markdown +++ b/source/_components/netatmo.markdown @@ -21,23 +21,23 @@ To enable the Netatmo component, add the following lines to your `configuration. ```yaml # Example configuration.yaml entry netatmo: - api_key: YOUR_API_KEY - secret_key: YOUR_SECRET_KEY + api_key: YOUR_CLIENT_ID + secret_key: YOUR_CLIENT_SECRET username: YOUR_USERNAME password: YOUR_PASSWORD ``` Configuration variables: -- **api_key** (*Required*): The API key for your Netatmo account. -- **secret_key** (*Required*): Your Netatmo secret key +- **api_key** (*Required*): The `client id` form your Netatmo app. +- **secret_key** (*Required*): The `client secret` form your Netatmo app. - **username** (*Required*): Username for the Netatmo account. - **password** (*Required*): Password for the Netatmo account. - **discovery** (*Optional)*: Whether to discover Netatmo devices. Set it to False, if you want to choose which Netatmo device you want to add (default True). ### {% linkable_title Get API and Secret Key %} -To get your API credentials, you have to declare a new application in the [NetAtmo Developer Page](https://dev.netatmo.com/). Sign in using your username and password from your regular Netatmo account. +To get your API credentials, you have to declare a new application in the [Netatmo Developer Page](https://dev.netatmo.com/). Sign in using your username and password from your regular Netatmo account. Click on 'Create an App' at the top of the page.

@@ -49,12 +49,12 @@ You have to fill the form, but only two fields are required : Name and Descripti

-That's it. You can copy and paste your new API and secret keys in your Home Assistant configuration file just as said above. +That's it. You can copy and paste your new `client id` and `client secret` in your Home Assistant configuration file just as described above, in the configuration example.

-The Home Assistant Netatmo platform has only be tested with the classic indoor, outdoor module and rainmeter. There is no support for the windmeter module at this time because developers does not own these modules. +The Home Assistant Netatmo platform has only be tested with the classic indoor, outdoor module and rain meter. There is no support for the wind meter module at this time because developers does not own these modules.

diff --git a/source/_components/no_ip.markdown b/source/_components/no_ip.markdown new file mode 100644 index 00000000000..f070e2b4d5f --- /dev/null +++ b/source/_components/no_ip.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "NO-IP.com" +description: "Keep your computer registered with the NO-IP.com dynamic DNS." +date: 2017-10-27 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: noip.png +ha_category: Utility +ha_release: 0.57 +--- + +With the `no_ip` component you can keep your [NO-IP.com](https://www.noip.com) record up to date. + +To use the component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +no_ip: + domain: subdomain.domain.com + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} + domain: + description: Your FQDN. + required: true + type: string + username: + description: The generated username for this DDNS record. + required: true + type: string + password: + description: The generated password for this DDNS record. + required: true + type: string + timeout: + description: Timeout (in seconds) for the API calls. + required: false + type: number + default: 10 +{% endconfiguration %} diff --git a/source/_components/notify.ciscospark.markdown b/source/_components/notify.ciscospark.markdown index f9b915b2cec..96bc67c4968 100644 --- a/source/_components/notify.ciscospark.markdown +++ b/source/_components/notify.ciscospark.markdown @@ -12,22 +12,28 @@ ha_category: Notifications ha_release: "0.40" --- -The `Cisco Spark` platform allows you to deliver notifications from Home Assistant to [Cisco Spark](https://ciscospark.com/). +The `ciscospark` notification platform allows you to deliver notifications from Home Assistant to [Cisco Spark](https://ciscospark.com/). -To use this notification platform you need to get a developer token. To obtain a token visit [Spark for Devleopers](https://developer.ciscospark.com/index.html) +To use this notification platform you need to get a developer token. To obtain a token visit [Spark for Developers](https://developer.ciscospark.com/index.html) -At this time you also need to specify the `Cisco Spark` `roomid`. The `roomid` can also be found at [Spark for Devleopers](https://developer.ciscospark.com/index.html). -Just look in the Doumentation under Rooms. +At this time you also need to specify the `Cisco Spark` `roomid`. The `roomid` can also be found at [Spark for Developers](https://developer.ciscospark.com/index.html). Just look in the Documentation under Rooms. -To enable the `Cisco Spark` notification in your installation, add the following to your `configuration.yaml` file: +To enable the Cisco Spark notification in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry notify: - name: NOTIFIER_NAME platform: ciscospark - token: - roomid: + token: YOUR_DEVELOPER_TOKEN + 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. + 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 new file mode 100644 index 00000000000..0c274c9a1b7 --- /dev/null +++ b/source/_components/notify.clickatell.markdown @@ -0,0 +1,46 @@ +--- +layout: page +title: "Clickatell SMS" +description: "Instructions on how to add Clickatell notifications to Home Assistant." +date: 2017-10-09 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: clickatell.png +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 +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 creater an integration. Please ensure the following: + +1. Give the new Integration an identification name. +2. Ensure it is set for 'production' use. +3. Select 'HTTP' as your API type. +4. Ensure that the you select for the messaging type to be 'one way messaging'. +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. + +To add Clickatell to your installation, add the following to your Home Assistant `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notify: + - platform: clickatell + name: USER_DEFINED_NAME + api_key: CLICKATELL_API_KEY + 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`. + + +To use notifications, please see the [getting started with automation page](https://home-assistant.io/getting-started/automation/). diff --git a/source/_components/notify.clicksend.markdown b/source/_components/notify.clicksend.markdown new file mode 100644 index 00000000000..96a43adfe12 --- /dev/null +++ b/source/_components/notify.clicksend.markdown @@ -0,0 +1,41 @@ +--- +layout: page +title: "ClickSend SMS" +description: "Instructions on how to add ClickSend notifications to Home Assistant." +date: 2017-06-22 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: clicksend.png +ha_category: Notifications +ha_release: 0.48 +--- + + +The `clicksend` platform uses [ClickSend](https://clicksend.com) to deliver notifications from Home Assistant. + +### Get your ClickSend API Credentials +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`. + +### Configuration +To add ClickSend to your installation, add the following to your Home Assistant `configuration.yaml` file: + +```yaml +notify: + - platform: clicksend + name: ClickSend + username: CLICKSEND_USERNAME + api_key: CLICKSEND_API_KEY + 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 no. This is where you want to send your notification SMS messages. eg: `09171234567` + + +To use notifications, please see the [getting started with automation page](https://home-assistant.io/getting-started/automation/). diff --git a/source/_components/notify.clicksend_tts.markdown b/source/_components/notify.clicksend_tts.markdown new file mode 100644 index 00000000000..28e860834f8 --- /dev/null +++ b/source/_components/notify.clicksend_tts.markdown @@ -0,0 +1,42 @@ +--- +layout: page +title: "ClickSend text-to-speech" +description: "Instructions on how to add ClickSend text-to-speech (TTS) notifications to Home Assistant." +date: 2017-10-04 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: clicksend.png +ha_category: Notifications +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`. + +To add ClickSend to your installation, add the following to your Home Assistant `configuration.yaml` file: + +```yaml +notify: + - platform: clicksend_tts + name: ClickSend + username: CLICKSEND_USERNAME + api_key: CLICKSEND_API_KEY + 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`. + +To use notifications, please see the [getting started with automation page](https://home-assistant.io/getting-started/automation/). + diff --git a/source/_components/notify.discord.markdown b/source/_components/notify.discord.markdown index a3fb4c7b61d..657b94e84e5 100644 --- a/source/_components/notify.discord.markdown +++ b/source/_components/notify.discord.markdown @@ -9,16 +9,15 @@ sharing: true footer: true logo: discord.png ha_category: Notifications +ha_release: 0.37 --- The [Discord service](https://discordapp.com/) is a platform for the notify component. This allows components to send messages to the user using Discord. -In order to get a token you need to go to the [Discord My Apps page](https://discordapp.com/developers/applications/me) and create a new application. Once the application is ready, create a bot user. Retreive the client ID and the (hidden) token of your bot for later. +In order to get a token you need to go to the [Discord My Apps page](https://discordapp.com/developers/applications/me) and create a new application. Once the application is ready, create a [bot](https://discordapp.com/developers/docs/topics/oauth2#bots) user (**Create a Bot User**) and activate **Require OAuth2 Code Grant**. Retrieve the **Client ID** and the (hidden) **Token** of your bot for later. When setting up the application you can use this [icon](https://home-assistant.io/demo/favicon-192x192.png). -### {% linkable_title Configuration %} - To use Discord notifications, add the following to your `configuration.yaml` file: ```yaml @@ -34,16 +33,31 @@ 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 bot's token. -### {% linkable_title Using the bot %} -Bots can only send messages to servers. To add the bot to a server you are an admin on, use the Discord OAuth2 Authorization page: +### {% linkable_title Setting up the bot %} -[https://discordapp.com/api/oauth2/authorize?client_id=1234567890&scope=bot&permissions=0](https://discordapp.com/api/oauth2/authorize?client_id=1234567890&scope=bot&permissions=0) +Bots can only send messages to servers. To add the bot to a server you are an admin on, get the details of the bot from the [Discord My Apps page](https://discordapp.com/developers/applications/me). -Replace the client ID with the appropriate one from the [Discord My Apps page](https://discordapp.com/developers/applications/me). +

+ +

-Once the bot user has been added to your server, get the channel ID of the channel you want the bot to operate in. -* In The Discord app go to Settings > Appearance > Check developer mode -* Right click channel name > Copy ID +Now use the Discord Authorization page with the **Client ID** of your [bot](https://discordapp.com/developers/docs/topics/oauth2#bots). + +[https://discordapp.com/api/oauth2/authorize?client_id=[CLIENT_ID]&scope=bot&permissions=0](https://discordapp.com/api/oauth2/authorize?client_id=[CLIENT_ID]&scope=bot&permissions=0) + +

+ +

+ +Wait for the confirmation which should say "Authorized". + +Once the bot has been added to your server, get the channel ID of the channel you want the bot to operate in. In The Discord application go to **Settings** > **Appearance** > **Check developer mode**. + +

+ +

+ +Right click channel name and copy the channel ID (**Copy ID**). This channel ID has to be used as the target when calling the notification service. Multiple channel IDs can be specified, across multiple servers. @@ -59,7 +73,7 @@ This channel ID has to be used as the target when calling the notification servi } ``` -### {% linkable_title Notes %} +### {% linkable_title Notes %} For more information about creating and authorizing bots, visit the [OAuth2 information page](https://discordapp.com/developers/docs/topics/oauth2) diff --git a/source/_components/notify.facebook.markdown b/source/_components/notify.facebook.markdown index 3a425016cc5..209fe6c827d 100644 --- a/source/_components/notify.facebook.markdown +++ b/source/_components/notify.facebook.markdown @@ -26,13 +26,13 @@ notify: Configuration variables: -- **page_access_token** (*Required*): Access token for your facebook page. Checkout [Facebook Messenger Platform](https://developers.facebook.com/docs/messenger-platform/guides/setup) for more information. +- **page_access_token** (*Required*): Access token for your Facebook page. Checkout [Facebook Messenger Platform](https://developers.facebook.com/docs/messenger-platform/guides/setup) for more information. - **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`. ### {% linkable_title Usage %} -With Facebook notify service, you can send your notifications to your facebook messenger with help of your facebook page. You have to create a [Facebook Page and App](https://developers.facebook.com/docs/messenger-platform/guides/quick-start) for this service. You can control it by calling the notify service [as described here](/components/notify/). It will send a message on messenger to user specified by **target** on behalf of your page. See the [quick start](https://developers.facebook.com/docs/messenger-platform/guides/quick-start) guide for more information. -The phone number used in **target** should be registered with facebook messenger. Phone number of the recipient should be in +1(212)555-2368 format. If your app is not approved by facebook then the recipient should by either admin, developer or tester for your facebook app. [More...](https://developers.facebook.com/docs/messenger-platform/send-api-reference#phone_number) +With Facebook notify service, you can send your notifications to your Facebook messenger with help of your Facebook page. You have to create a [Facebook Page and App](https://developers.facebook.com/docs/messenger-platform/guides/quick-start) for this service. You can control it by calling the notify service [as described here](/components/notify/). It will send a message on messenger to user specified by **target** on behalf of your page. See the [quick start](https://developers.facebook.com/docs/messenger-platform/guides/quick-start) guide for more information. +The phone number used in **target** should be registered with Facebook messenger. Phone number of the recipient should be in +1(212)555-2368 format. If your app is not approved by Facebook then the recipient should by either admin, developer or tester for your Facebook app. [More information](https://developers.facebook.com/docs/messenger-platform/send-api-reference#phone_number) about the phone number. ```yaml # Example automation notification entry @@ -46,8 +46,53 @@ automation: data: message: 'Good Evening' target: - - +919413017584 - - +919784516314 + - '+919413017584' + - '+919784516314' +``` + +You can also send messages to users that do not have stored their phone number with Facebook, but this requires a bit more work. The Messenger platform uses page specific user IDs instead of a global user ID. You will need to enable a webhook for the "messages" event in Facebook's developer console. Once a user writes a message to a page, that webhook will then receive the user's page specifc ID as part of the webhook's payload. Below is a simple PHP script that reacts to the message "get my id" and sends a reply containing the user's ID: + +```php + **Services** from the **Developer Tools**. Choose your service (*notify/xyz*) from the list of **Available services:** and enter something like the sample below into the **Service Data** field and hit **CALL SERVICE**. +A simple way to test if you have set up your notify platform correctly, is to use service developer tool icon **Services** from the **Developer Tools**. Choose your service from the dropdown menu **Service**, enter something like the sample below into the **Service Data** field, and hit **CALL SERVICE**. ```json { diff --git a/source/_components/notify.mqtt.markdown b/source/_components/notify.mqtt.markdown index 34b4b8c0d7b..7aefb8743f0 100644 --- a/source/_components/notify.mqtt.markdown +++ b/source/_components/notify.mqtt.markdown @@ -12,7 +12,7 @@ ha_category: Notifications ha_iot_class: depends --- -The MQTT notification support is different than the other [notification](/components/notify/) platforms. It is a service. This means that you don't have to create a configuration entry but you need to provide more details while calling the service. +The MQTT notification support is different than the other [notification](/components/notify/) platforms. It is a service. This means that you don't have to create a configuration entry but you need to provide more details when calling the service. **Call Service** section from the **Developer Tools** allows you to send MQTT messages. Choose *mqtt/publish* from the list of **Available services:** and enter something like the sample below into the **Service Data** field and hit **CALL SERVICE**. diff --git a/source/_components/notify.mycroft.markdown b/source/_components/notify.mycroft.markdown new file mode 100644 index 00000000000..f2e76800989 --- /dev/null +++ b/source/_components/notify.mycroft.markdown @@ -0,0 +1,15 @@ +--- +layout: page +title: "Mycroft AI" +description: "Instructions how to add Mycroft AI notifications to Home Assistant." +date: 2017-08-26 17:00 UTC +sidebar: true +comments: false +sharing: true +footer: true +logo: mycroft.png +ha_category: Notifications +ha_release: "0.53" +--- + +Please see the main [Mycroft Component](/components/mycroft) diff --git a/source/_components/notify.prowl.markdown b/source/_components/notify.prowl.markdown new file mode 100644 index 00000000000..2bfeb97fc45 --- /dev/null +++ b/source/_components/notify.prowl.markdown @@ -0,0 +1,43 @@ +--- +layout: page +title: "Prowl" +description: "Instructions how to add Prowl notifications to Home Assistant." +date: 2017-08-17 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: prowl.png +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. + +To add Prowl notifications to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notify: + - name: NOTIFIER_NAME + platform: prowl + api_key: ABCDEFGHJKLMNOPQRSTUVXYZ +``` + +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. + +### {% linkable_title Prowl service data %} + +The following attributes can be placed `data` for extended functionality. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `priority` | yes | Priority level, for more info refer to the [Prowl API documentation](https://www.prowlapp.com/api.php#add). | + +To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.pushbullet.markdown b/source/_components/notify.pushbullet.markdown index d1cd11a92c0..0ba8c606f3f 100644 --- a/source/_components/notify.pushbullet.markdown +++ b/source/_components/notify.pushbullet.markdown @@ -59,8 +59,6 @@ To use notifications, please see the [getting started with automation page](/get ### {% linkable_title URL support %} ```yaml -... - action: service: notify.NOTIFIER_NAME data: @@ -70,5 +68,38 @@ action: url: google.com ``` -- **url** (*Required*): Page URL to send with pushbullet. +- **url** (*Required*): Page URL to send with Pushbullet. + +### {% linkable_title File support %} + +```yaml +action: + service: notify.NOTIFIER_NAME + data: + title: Send file + message: This is a file + data: + file: /path/to/my/file +``` + +- **file** (*Required*): File to send with Pushbullet. + + +### {% linkable_title File URL support %} + +```yaml +action: + service: notify.NOTIFIER_NAME + data: + title: Send file + message: This is a file URL + data: + file_url: https://cdn.pixabay.com/photo/2014/06/03/19/38/test-361512_960_720.jpg +``` + +- **file_url** (*Required*): File to send with Pushbullet. + +

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

diff --git a/source/_components/notify.rocketchat.markdown b/source/_components/notify.rocketchat.markdown new file mode 100644 index 00000000000..2c014c30546 --- /dev/null +++ b/source/_components/notify.rocketchat.markdown @@ -0,0 +1,56 @@ +--- +layout: page +title: "Rocket.Chat" +description: "Instructions on how to add Rocket.Chat notifications to Home Assistant." +date: 2017-09-23 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: rocketchat.png +ha_category: Notifications +ha_release: 0.56 +--- + + +The `rocketchat` platform allows you to send messages to your [Rocket.Chat](https://rocket.chat/) instance from Home Assistant. + +To add Rocket.Chat to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notify: + - platform: rocketchat + name: NOTIFIER_NAME + url: https://rocketchat.example.com + username: USERNAME + password: PASSWORD + room: my-awesome-room +``` + +- **name** (*Optional*): Name displayed in the frontend. The notifier will bind to the service `notify.NOTIFIER_NAME`. +- **url** (*Required*): The URL of your Rocket.Chat instance. +- **username** (*Required*): The Rocket.Chat username. +- **password** (*Required*): The Rocker.Chat password. +- **room** (*Required*): The chat room name to send messages to. + +### {% linkable_title script.yaml example %} + +```yaml +rocketchat_notification: + sequence: + - service: notify.NOTIFIER_NAME + data: + message: "Message to Rocket.Chat from Home Assistant!" + data: + emoji: ":smirk:" +``` + +#### {% linkable_title Message variables %} + +- **message** (*Required*): Message to be displayed. +- **data** (*Optional*): Dictionary containing any of the variables defined in the + [Rocket.Chat docs](https://rocket.chat/docs/developer-guides/rest-api/chat/postmessage#message-object-example) + +To use notifications, please see the [getting started with automation page](/getting-started/automation/). + diff --git a/source/_components/notify.simplepush.markdown b/source/_components/notify.simplepush.markdown index bde576aa14d..4747d9a5f48 100644 --- a/source/_components/notify.simplepush.markdown +++ b/source/_components/notify.simplepush.markdown @@ -25,10 +25,28 @@ notify: device_key: ABCDE ``` -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`. -- **device_key** (*Required*): The device key of your device. +{% configuration %} + 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 + device_key: + description: The device key of your device. + required: true + type: string + event: + description: The event for the events. + required: false + type: string + password: + description: The password of the encryption used by your device. + required: inclusive + type: string + salt: + description: The salt used by your device. + required: inclusive + type: string +{% endconfiguration %} To test if the service works, just send a message with `curl` from the command-line. diff --git a/source/_components/notify.slack.markdown b/source/_components/notify.slack.markdown index d319a37438c..1eb10e8189a 100644 --- a/source/_components/notify.slack.markdown +++ b/source/_components/notify.slack.markdown @@ -38,7 +38,49 @@ Configuration variables: - **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. - **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 emoji's as an Icon for the supplied username. Slack uses the standard emoji sets used [here](http://www.webpagefx.com/tools/emoji-cheat-sheet/). +- **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/). + +### {% linkable_title Slack service data %} + +The following attributes can be placed `data` for extended functionality. + +| 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 file, photo etc to post to slack. Is placed inside `file`. +| `url` | yes | URL of file, photo etc to post to slack. 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`. +| `auth` | yes | If set to `digest` HTTP-Digest-Authentication is used. If missing HTTP-BASIC-Authentication is used. Is placed inside `file`. + +Example for posting file from URL +```json +{ + "message":"Message that will be added as a comment to the file.", + "title":"Title of the file.", + "data":{ + "file":{ + "url":"http://[url to file, photo, security camera etc]", + "username":"optional user, if necessary", + "password":"optional password, if necessary", + "auth":"digest" + } + } +} +``` +Example for posting file from local path +```json +{ + "message":"Message that will be added as a comment to the file.", + "title":"Title of the file.", + "data":{ + "file":{ + "path":"/path/to/file.ext" + } + } +} +``` +Please note that `path` is validated against the `whitelist_external_dirs` in the `configuration.yaml`. To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.smtp.markdown b/source/_components/notify.smtp.markdown index f03d7edf2e2..533129e36cb 100644 --- a/source/_components/notify.smtp.markdown +++ b/source/_components/notify.smtp.markdown @@ -32,11 +32,11 @@ Configuration variables: - **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 25. +- **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. -- **starttls** (*Optional*): Enables STARTTLS, eg. True or False. Defaults to False. +- **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. @@ -51,7 +51,7 @@ notify: port: 587 timeout: 15 sender: john@gmail.com - starttls: true + encryption: starttls username: john@gmail.com password: thePassword recipient: @@ -60,7 +60,7 @@ notify: sender_name: My Home Assistant ``` -Keep in mind that Google has some extra layers of protection which need special attention (Hint: 'Less secure apps'). +Keep in mind that Google has some extra layers of protection which need special attention (Hint: 'Less secure apps'). If you have 2-step verification enabled on your Google account, you'll need to use [an application-specific password](https://support.google.com/mail/answer/185833?hl=en). To use the SMTP notification, refer to it in an automation or script like in this example: diff --git a/source/_components/notify.telegram.markdown b/source/_components/notify.telegram.markdown index e82e8485d4d..7df967d6289 100644 --- a/source/_components/notify.telegram.markdown +++ b/source/_components/notify.telegram.markdown @@ -28,8 +28,30 @@ The quickest way to retrieve your `chat_id` is visiting [https://api.telegram.or The result set will include your chat ID as `id` in the `from` section: ```json -{"ok":true,"result":[{"update_id":254199982, -"message":{"message_id":27,"from":{"id":123456789,"first_name":"YOUR_FIRST_NAME YOUR_NICK_NAME","last_name":"YOUR_LAST_NAME","username":"YOUR_NICK_NAME"},"chat":{"id":123456789,"first_name":"YOUR_FIRST_NAME YOUR_NICK_NAME","last_name":"YOUR_LAST_NAME","username":"YOUR_NICK_NAME","type":"private"},"date":1678292650,"text":"test"}}]} +{ + "ok": true, + "result": [{ + "update_id": 254199982, + "message": { + "message_id": 27, + "from": { + "id": 123456789, + "first_name": "YOUR_FIRST_NAME YOUR_NICK_NAME", + "last_name": "YOUR_LAST_NAME", + "username": "YOUR_NICK_NAME" + }, + "chat": { + "id": 123456789, + "first_name": "YOUR_FIRST_NAME YOUR_NICK_NAME", + "last_name": "YOUR_LAST_NAME", + "username": "YOUR_NICK_NAME", + "type": "private" + }, + "date": 1678292650, + "text": "test" + } + }] +} ``` Another way to get your chat ID directly is described below. Start your Python interpreter from the command-line: @@ -121,6 +143,19 @@ Configuration variables: - **keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom keyboard. - **inline_keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. +

+Since Home Assistant version 0.48 you have to [whitelist the source folder](/docs/configuration/basic/) of the file you want to include in the notification. + +```yaml +configuration.yaml +... +homeassistant: + whitelist_external_dirs: + - /tmp + - /home/kenji/data +``` +

+ ### {% linkable_title Document support %} diff --git a/source/_components/notify.twitter.markdown b/source/_components/notify.twitter.markdown index fe5c5d657b5..f63810e68eb 100644 --- a/source/_components/notify.twitter.markdown +++ b/source/_components/notify.twitter.markdown @@ -13,7 +13,7 @@ ha_release: 0.12 --- -The `twitter` platform uses [Twitter](https://twitter.com) to delivery notifications from Home Assistant. +The `twitter` platform uses [Twitter](https://twitter.com) to deliver notifications from Home Assistant. Go to [Twitter Apps](https://apps.twitter.com/app/new) and create an application. Visit "Keys and Access Tokens" of the application to get the details ("Consumer Key", "Consumer Secret", "Access Token" and "Access Token Secret" which needs to be generated). diff --git a/source/_components/notify.xmpp.markdown b/source/_components/notify.xmpp.markdown index a9d0595e5f1..db062932d04 100644 --- a/source/_components/notify.xmpp.markdown +++ b/source/_components/notify.xmpp.markdown @@ -34,6 +34,8 @@ Configuration variables: - **password** (*Required*): The password for your given Jabber account. - **recipient** (*Required*): The Jabber ID (JID) that will receive the messages. - **tls** (*Optional*): Allow to disable TLS. Defaults to `true`. +- **verify** (*Optional*): Allow disabling SSL certificate validity check (e.g., self-signed certificate). Defaults to `true`. +- **room** (*Optional*): Room's name (e.g., example@conference.jabber.org). If set, send a message to chatroom instead of the sender. All Jabber IDs (JID) must include the domain. Make sure that the password matches the account provided as sender. diff --git a/source/_components/notify.yessssms.markdown b/source/_components/notify.yessssms.markdown new file mode 100644 index 00000000000..e320de496a7 --- /dev/null +++ b/source/_components/notify.yessssms.markdown @@ -0,0 +1,47 @@ +--- +layout: page +title: "Yesss SMS" +description: "Instructions how to add user notifications to Home Assistant." +date: 2017-10-27 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: yesssat.png +ha_category: Notifications +ha_release: 0.57 +--- + +The `yessssms` platform is using the Austrian mobile operator [Yesss.at](https://yesss.at) to send SMS via its web-site. + +

+Regular charges apply and a contract or prepaid plan is needed. +

+ +

+Do not use this for high frequency notifications. The web-SMS page is rate limited and sending more than 45 SMS/h might get you blocked. +

+ +You can send to any number, but your phone number will appear as sender. + +To enable SMS notifications in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notify: + - name: NOTIFIER_NAME + platform: yessssms + username: YOUR_PHONE_NUMBER + password: YOUR_PASSWORD + recipient: PHONE_NUMBER_TO_NOTIFY +``` + +Configuration variables: + +- **username** (*Required*): This is your login name (usually your phone number). Veryfy that you can use your credentials on the Yesss.at website. +- **password** (*Required*): This is the password you use to login to Yesss.at. +- **recipient** (*Required*): This is the phone number you want to send the SMS notification to. + +

+Verify that your credentials work on [Yesss.at's website](https://yesss.at). Using the wrong credentials three times in a row will get you blocked for one hour. +

diff --git a/source/_components/octoprint.markdown b/source/_components/octoprint.markdown index 17b9f1a5935..192d5d9d9a3 100644 --- a/source/_components/octoprint.markdown +++ b/source/_components/octoprint.markdown @@ -23,12 +23,14 @@ To get started with the OctoPrint API, please follow the directions on their [si octoprint: host: YOUR_OCTOPRINT_HOST api_key: YOUR_API_KEY + bed: false + number_of_tools: 1 ``` Configuration variables: - **host** (*Required*): IP address or hostname of Octoprint host. - **api_key** (*Required*): The retrieved api key. +- **bed** (*Optional*): If the printer has a heated bed. +- **number_of_tools** (*Optional*): Number of temperature adjustable tools. i.e. nozzle. - -**NOTE** If your 3D printer isn't connected to the OctoPrint server during the startup of Home Assistant this component will fail to load. diff --git a/source/_components/panel_custom.markdown b/source/_components/panel_custom.markdown index 1ed44576e58..49775f28557 100644 --- a/source/_components/panel_custom.markdown +++ b/source/_components/panel_custom.markdown @@ -18,7 +18,7 @@ The `panel_custom` support allows you to add additional panels to your Home Assi To enable customized panels in your installation, add the following to your `configuration.yaml` file: ```yaml -# Example configuration.yaml entry +# Example configuration.yaml entry for https://github.com/home-assistant/example-custom-config/blob/master/panels/hello_world.html panel_custom: - name: todomvc sidebar_title: TodoMVC @@ -26,7 +26,7 @@ panel_custom: url_path: my-todomvc webcomponent_path: /home/hass/hello.html config: - hello: world + who: world ``` Configuration variables: diff --git a/source/_components/pilight.markdown b/source/_components/pilight.markdown index 8a2a10b1f5f..2b7f8577019 100644 --- a/source/_components/pilight.markdown +++ b/source/_components/pilight.markdown @@ -15,9 +15,9 @@ ha_iot_class: "Local Push" [Pilight](https://www.pilight.org/) is a modular and open source solution to communicate with 433 MHz devices and runs on various small form factor computers. A lot of common [protocols](https://wiki.pilight.org/doku.php/protocols) are already available. -This pilight hub connects to the [pilight-daemon](https://wiki.pilight.org/doku.php/pdaemon) via a socket connection to receive and send codes. Thus home assistant does not have to run on the computer in charge of the RF communication. +This pilight hub connects to the [pilight-daemon](https://wiki.pilight.org/doku.php/pdaemon) via a socket connection to receive and send codes. Thus Home Assistant does not have to run on the computer in charge of the RF communication. -The received and supported RF codes are put on the event bus of home assistant and are therefore directly usable by other components (e.g. automation). Additionally a send service is provided to send RF codes. +The received and supported RF codes are put on the event bus of Home Assistant and are therefore directly usable by other components (e.g. automation). Additionally a send service is provided to send RF codes. To integrate pilight into Home Assistant, add the following section to your `configuration.yaml` file: @@ -35,7 +35,7 @@ Configuration variables: - **send_delay** (*Optional*): You can define a send delay as a fraction of seconds if you experience transmission problems when you try to switch multiple switches at once. This can happen when you use a [pilight USB Nano](https://github.com/pilight/pilight-usb-nano) as hardware and switches a whole group of multiple switches on or off. Tested values are between 0.3 and 0.8 seconds depending on the hardware. - **whitelist** (*Optional*): You can define a whitelist to prevent that too many unwanted RF codes (e.g. the neighbours weather station) are put on your HA event bus. All defined subsections have to be matched. A subsection is matched if one of the items are true. -In this example only received RF codes using a daycom or intertechno protocol are put on the event bus and only when the device id is 42. For more possible settings please look at the receiver section of the pilight [API](https://www.pilight.org/development/api/). +In this example only received RF codes using a daycom or Intertechno protocol are put on the event bus and only when the device id is 42. For more possible settings please look at the receiver section of the pilight [API](https://www.pilight.org/development/api/). A full configuration sample could look like the sample below: diff --git a/source/_components/plant.markdown b/source/_components/plant.markdown index 2b77eee4e7e..b1c5ec976bc 100644 --- a/source/_components/plant.markdown +++ b/source/_components/plant.markdown @@ -33,11 +33,11 @@ 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. Meassured in %. Can have a min and max value set optionally. - - **battery** (*Optional*): Battery level of the plant sensor. Meassured in %. Can only have a min level set optionally. - - **temperature:** (*Optional*): Temperaure of the plant. Meassured in degrees Celcius. Can have a min and max value set optionally. - - **conductivity:** (*Optional*): Conductivity of the plant. Meassured in µS/cm. Can have a min and max value set optionally. - - **brightness:** (*Optional*): Light exposure of the plant. Meassured in Lux. Can have a min and max value set optionally. + - **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 @@ -50,11 +50,11 @@ Configuration variables: ## {% linkable_title Examples %} ### Using plain MQTT sensor to get the data -This is a practial example that uses a multiple of `MQTT sensors` to supply the readings used by the `plant` sensor. +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](https://home-assistant.io/components/sensor.miflora/) component. -If the sensor data within the 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. +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. ## Data Source diff --git a/source/_components/prometheus.markdown b/source/_components/prometheus.markdown new file mode 100644 index 00000000000..ba6d65ba6c4 --- /dev/null +++ b/source/_components/prometheus.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "Prometheus" +description: "Record events in Prometheus." +date: 2017-06-25 08:00 +sidebar: true +comments: false +sharing: true +logo: prometheus.png +footer: true +ha_category: "History" +ha_release: 0.49 +--- + +The `prometheus` component exposes metrics in a format which [Prometheus](https://prometheus.io/) can read. + +To use the `prometheus` component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +prometheus: +``` + +Configuration variables: + +- **exclude** (*Optional*): Configure which components should be 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*): Configure which components should be included in recordings. If set, all other entities will not be recorded. Values set by the **blacklist** 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. + +You can then configure Prometheus to fetch metrics from Home Assistant by adding to its `scrape_configs` configuration. + +```yaml +# Example Prometheus scrape_configs entry + - job_name: 'hass' + scrape_interval: 60s + metrics_path: /api/prometheus + params: + api_password: ['PASSWORD'] + scheme: https + static_configs: + - targets: ['HOSTNAME:8123'] +``` diff --git a/source/_components/python_script.markdown b/source/_components/python_script.markdown index 4f950cbb7e0..48bd6a1a149 100644 --- a/source/_components/python_script.markdown +++ b/source/_components/python_script.markdown @@ -12,7 +12,16 @@ ha_category: Automation ha_release: 0.47 --- -This component allows you to write Python scripts that are exposed as services in Home Assistant. Each Python file created in the `/python_scripts/` folder will be exposed as a service. The content is not cached so you can easily develop: edit file, save changes, call service. The scripts are run in a sandboxed environment with access to the `hass` object, the service call data as `data` and a logger as `logger`. +This component allows you to write Python scripts that are exposed as services in Home Assistant. Each Python file created in the `/python_scripts/` folder will be exposed as a service. The content is not cached so you can easily develop: edit file, save changes, call service. The scripts are run in a sandboxed environment. The following variables are available in the sandbox: + +| Name | Description | +| ---- | ----------- | +| `hass` | The Home Assistant object. Access is only allowed to call services, set/remove states and fire events. [API reference][hass-api] +| `data` | The data passed to the Python Script service call. +| `logger` | A logger to allow you to log messages: `logger.info()`, `logger.warning()`, `logger.error()`. [API reference][logger-api] + +[hass-api]: https://home-assistant.io/developers/development_hass_object/ +[logger-api]: https://docs.python.org/3.4/library/logging.html#logger-objects ## {% linkable_title Writing your first script %} @@ -34,3 +43,5 @@ hass.bus.fire(name, { "wow": "from a Python script!" }) "name": "you" } ``` + +For [`python_script:` examples](/components/python_script/) visit the [Scripts section](https://community.home-assistant.io/c/projects/scripts) in our forum. diff --git a/source/_components/raincloud.markdown b/source/_components/raincloud.markdown new file mode 100644 index 00000000000..6e4e3919a06 --- /dev/null +++ b/source/_components/raincloud.markdown @@ -0,0 +1,33 @@ +--- +layout: page +title: "Melnor Raincloud" +description: "Instructions on how to integrate your Melnor Raincloud sprinkler system within Home Assistant." +date: 2017-09-04 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raincloud.jpg +ha_category: Hub +ha_release: 0.55 +--- + +The `raincloud` component allows you to integrate your [Melnor RainCloud](https://wifiaquatimer.com) sprinkler system in Home Assistant. + +To enable it, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry + +raincloud: + username: you@example.com + password: secret +``` + +Configuration variables: + +- **username** (*Required*): The username for accessing your Melnor RainCloud account. +- **password** (*Required*): The password for accessing your Melnor RainCloud account. +- **scan_interval** (*Optional*): Defines the update interval of the sensor in seconds. Defaults to 20seconds. + +Finish its configuration by visiting the [Raincloud binary sensor](/components/binary_sensor.raincloud/), [Raincloud sensor](/components/sensor.raincloud/) and [Raincloud switch](/components/switch.raincloud/) documentation. diff --git a/source/_components/recorder.markdown b/source/_components/recorder.markdown index 67968c69ca7..6531fdf71a0 100644 --- a/source/_components/recorder.markdown +++ b/source/_components/recorder.markdown @@ -2,7 +2,7 @@ layout: page title: "Recorder" description: "Instructions how to configure the data recorder for Home Assistant." -date: 2016-05-21 09:00 +date: 2017-09-24 09:00 sidebar: true comments: false sharing: true @@ -14,7 +14,7 @@ ha_release: pre 0.7 The `recorder` component is storing details in a database which then are handled by the [`history` component](/components/history/). -Home Assistant uses [SQLAlchemy](http://www.sqlalchemy.org/) as Object Relational Mapper (ORM). This means that you can now use **any** SQL backend for the recorder that is supported by SQLAlchemy, like [MySQL](https://www.mysql.com/), [MariaDB](https://mariadb.org/), or [PostgreSQL](https://www.postgresql.org/). +Home Assistant uses [SQLAlchemy](http://www.sqlalchemy.org/) as Object Relational Mapper (ORM). This means that you can now use **any** SQL backend for the recorder that is supported by SQLAlchemy, like [MySQL](https://www.mysql.com/), [MariaDB](https://mariadb.org/), [PostgreSQL](https://www.postgresql.org/), or [MS SQL Server](https://www.microsoft.com/en-us/sql-server/). The default database engine is [SQLite](https://www.sqlite.org/) which doesn't require any configuration. The database is stored in your Home Assistant configuration directory (`.homeassistant`) and called `home-assistant_v2.db`. @@ -27,7 +27,8 @@ recorder: Configuration variables: -- **purge_days** (*Optional*): Delete events and states older than x days. +- **purge_interval** (*Optional*): (days) Enable scheduled purge of older events and states. The purge task runs every x days from when the `recorder component` is first enabled. If a scheduled purge is missed (e.g. if Home Assistant was not running) then the schedule will resume soon after Home Assistant restarts. You can use [service](#service-purge) call `recorder.purge` when required without impacting the purge schedule. +- **purge_keep_days** (*Required with `purge_interval`*): Specify number of history days to keep in recorder database after purge. - **exclude** (*Optional*): Configure which components should be excluded from recordings. - **entities** (*Optional*): The list of entity ids to be excluded from recordings. - **domains** (*Optional*): The list of domains to be excluded from recordings. @@ -42,7 +43,8 @@ Define domains and entities to `exclude` (aka. blacklist). This is convenient wh ```yaml # Example configuration.yaml entry with exclude recorder: - purge_days: 5 + purge_interval: 2 + purge_keep_days: 5 db_url: sqlite:///home/user/.homeassistant/test exclude: domains: @@ -50,8 +52,8 @@ recorder: - weblink - updater entities: - - sun.sun # Don't record sun data - - sensor.last_boot + - sun.sun # Don't record sun data + - sensor.last_boot # Comes from 'systemmonitor' sensor platform - sensor.date ``` @@ -85,40 +87,66 @@ recorder: If you only want to hide events from e.g. your history, take a look at the [`history` component](/components/history/). Same goes for logbook. But if you have privacy concerns about certain events or neither want them in history or logbook, you should use the `exclude`/`include` options of the `recorder` component, that they aren't even in your database. That way you can save storage and keep the database small by excluding certain often-logged events (like `sensor.last_boot`). +### {% linkable_title Service `purge` %} + +Call the service `recorder.purge` to start purge task, which deletes events and states older than x days, according to `keep_days` service data (*Required*) + +Automation [action](https://home-assistant.io/getting-started/automation-action/) example: + +```yaml +action: + service: recorder.purge + data: + keep_days: 5 +``` + ## Custom database engines | Database engine | `db_url` | | :---------------|:---------------------------------------------------------| | SQLite | `sqlite:///PATH/TO/DB_NAME` | +| MariaDB | `mysql://SERVER_IP/DB_NAME` | +| MariaDB         | `mysql://user:password@SERVER_IP/DB_NAME`       | | MySQL | `mysql://SERVER_IP/DB_NAME` | | MySQL           | `mysql://user:password@SERVER_IP/DB_NAME`       | | MySQL (pymysql) | `mysql+pymysql://SERVER_IP/DB_NAME` | | MySQL (pymysql) | `mysql+pymysql://user:password@SERVER_IP/DB_NAME` | | PostgreSQL | `postgresql://SERVER_IP/DB_NAME` | | PostgreSQL | `postgresql://scott:tiger@SERVER_IP/DB_NAME` | +| MS SQL Server | `mssql+pymssql://user:pass@SERVER_IP/DB_NAME?charset=utf8` | ## {% linkable_title Installation notes %} Not all Python bindings for the chosen database engine can be installed directly. This section contains additional details which should help you to get it working. -### {% linkable_title MySQL %} +### {% linkable_title MariDB and MySQL %} + +For MariaDB you may have to install a few dependencies. On the Python side we use the `mysqlclient`: + +```bash +$ sudo apt-get install libmariadbclient-dev libssl-dev +$ pip3 install mysqlclient +``` For MySQL you may have to install a few dependencies. You can choose between `pymysql` and `mysqlclient`: ```bash -$ sudo apt-get install libmysqlclient-dev +$ sudo apt-get install default-libmysqlclient-dev libssl-dev $ pip3 install mysqlclient ``` -If you are in a virtual environment, don't forget to activate it before installing the pymysql package. + +If you are in a virtual environment, don't forget to activate it before installing the `mysqlclient` Python package. ```bash -pi@homeassistant:~ $ sudo -i -root@homeassistant:~# su homeassistant -homeassistant@homeassistant:/root$ cd /srv/homeassistant/homeassistant_venv/ -homeassistant@homeassistant:/srv/homeassistant/homeassistant_venv$ source bin/activate -(homeassistant_venv) homeassistant@homeassistant:/srv/homeassistant/homeassistant_venv$ pip3 install mysqlclient +pi@homeassistant:~ $ sudo su homeassistant -s /bin/bash +homeassistant@homeassistant:~$ source /srv/homeassistant/bin/activate +(homeassistant) homeassistant@homeassistant:~$ pip3 install mysqlclient ``` +After installing the dependencies, it is required to create the database manually. During the startup, Home Assistant will look for the database specified in the `db_url`. If the database doesn't exist, it will not automatically create it for you. + +Once Home Assistant finds the database, with right level of permissions, all the required tables will then be automatically created and the data will be populated accordingly. + ### {% linkable_title PostgreSQL %} For PostgreSQL you may have to install a few dependencies: @@ -127,3 +155,20 @@ For PostgreSQL you may have to install a few dependencies: $ sudo apt-get install postgresql-server-dev-X.Y $ pip3 install psycopg2 ``` + +### {% linkable_title MS SQL Server %} + +For MS SQL Server you may have to install a few dependencies: + +```bash +$ sudo apt-get install freetds-dev +$ pip3 install pymssql +``` + +If you are in a virtual environment, don't forget to activate it before installing the pymssql package. + +```bash +$ sudo su -s /bin/bash homeassistant +$ source /srv/homeassistant/bin/activate +$ pip3 install pymssql +``` diff --git a/source/_components/remember_the_milk.markdown b/source/_components/remember_the_milk.markdown new file mode 100644 index 00000000000..d76670fb86e --- /dev/null +++ b/source/_components/remember_the_milk.markdown @@ -0,0 +1,70 @@ +--- +layout: page +title: "Remember The Milk" +description: "Instructions on how to use Remember The Milk with Home Assistant." +date: 2017-10-10 10:10 +sidebar: true +comments: false +sharing: true +footer: true +logo: rememberthemilk.png +ha_category: Calendar +ha_release: 0.57 +--- + +The `Remember The Milk` (RTM) component allows you to create tasks in [remember_the_milk](https://www.rememberthemilk.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. water the plants. The component allows you to have several RTM accounts in parallel. + +## {% linkable_title Setup %} + +The setup consists of two steps: getting an API key and registering your account + +### {% linkable_title Step 1: API key %} + +To be able to use this component, you need a Remember The Milk account and you need to apply for your own [API key](https://www.rememberthemilk.com/services/api/keys.rtm). With the API key you will also receive your personal `shared secret`. Both of them need to be stored in your Home Assistant configuration: + +```yaml +# Example configuration.yaml entry + +remember_the_milk: + your_rtm_account: + api_key: + shared_secret: + +``` + +Configuration variables: + +{% configuration %} + account_name: + description: Name of the RTM account, as you can have serveral accounts in RTM. The name must be unique. + required: true + type: string + api_key: + description: Put the API key you've received in here. + required: true + type: string + shared_secret: + description: Put the shared secret you've received in here. + required: true + type: string +{% endconfiguration %} + +### {% linkable_title Step 2: registering your account %} + +After saving the configuration, you need to (re-)start Home Assistant. On the first start you will notice a new "Configuration" panel appearing on the Home Assistant page. After opening the configuration page, follow the link "Remember The Milk login". This will take you to a login page where you have to log in with your normal Rember The Milk credentials. This will authorize Home Assistant to access your Remember The Milk account. + +After that click on the "login completed" button. This will tell Home Assistant that you have completed the login process on the Remember The Milk page and Home Assistant should try to register with this account. + +If the registration was successful, the Configuration panel will disappear from your Home Assistant screen and a Remember The Milk panel should appear. This completes the setup process. + +In the background Home Assistant downloaded a "token" from the Remember The Milk server which is stored in the `remember_the_milk.conf` file locally. So you only need to register once. After that the token is used to authenticate with the server. + +## {% linkable_title Creating tasks %} + +This component offers a new service domain ```remember_the_milk``` with the service ```create_task```. You can call this service with the argument ```name``` to create a new task in your Remember The Milk account. You can call this service from your usual automations. + +The task creation supports the "smart syntax", so to create a task with the tag "from_hass" which is due today you can create a task with the name ```test task created in Home Assistant ^today #from_hass```. More info about the smart syntax is available on the [Remember The Milk documentation](https://www.rememberthemilk.com/help/answer/basics-smartadd-howdoiuse). + + +## {% 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.apple_tv.markdown b/source/_components/remote.apple_tv.markdown new file mode 100644 index 00000000000..68e11de80dd --- /dev/null +++ b/source/_components/remote.apple_tv.markdown @@ -0,0 +1,43 @@ +--- +layout: page +title: "Apple TV Remote" +description: "Instructions how to integrate Apple TV remote into Home Assistant." +date: 2017-06-26 20:50 +sidebar: true +comments: false +sharing: true +footer: true +logo: apple.png +ha_category: Remote +ha_iot_class: "Local Push" +ha_release: 0.49 +--- + + +The `apple_tv` remote platform allows you to send remote control buttons to an Apple TV. It is automatically setup when an Apple TV is configured, please see [Apple TV Component](/components/apple_tv/) for configuration details. + +At the moment, the following buttons are supported: + +- up +- down +- left +- right +- menu +- top_menu +- select + +A typical service call for press several buttons looks like this. + +```yaml +service: remote.send_command +data: + entity_id: remote.apple_tv + command: + - left + - left + - menu + - select + device: '' +``` + +Please note that `device` must be specified (because of validation) but is not used by this platform. So you may specify any value. diff --git a/source/_components/remote.harmony.markdown b/source/_components/remote.harmony.markdown index 551d61e573f..41cc37cdc53 100755 --- a/source/_components/remote.harmony.markdown +++ b/source/_components/remote.harmony.markdown @@ -24,20 +24,34 @@ Supported units: - Harmony Elite -To use your Harmony remote in your installation, add the following to your `configuration.yaml` file: +The preferred way to setup the Harmony remote is by enabling the [discovery component](/components/discovery/). + +However, if you want to manually configure the device, you will need to add its settings to your `configuration.yaml`. ```yaml # Example configuration.yaml entry remote: - platform: harmony name: Bedroom - host: 10.168.1.13 + host: 10.168.1.13 # The IP of your hub +``` + +You can override some default configuration values on a discovered hub (e.g. the `port` or `activity`) by adding +a `configuration.yaml` setting. In this case leave the `host` setting empty so the platform will +discover the host IP automatically, but set the `name` in the config to match exactly the name you have +set for your Hub so the platform knows what Hub you are trying to configure. + +```yaml +# Example configuration.yaml entry with discovery + - platform: harmony + name: Living Room # This name must match the name you have set on the Hub + activity: Watch TV # Overriding the 'activity' setting for this discovered hub ``` Configuration variables: - **name** (*Required*): The hub's name to display in the frontend. -- **host** (*Required*): The Harmony device's IP address. +- **host** (*Optional*): The Harmony device's IP address. Leave empty for the IP to be discovered automatically. - **port** (*Optional*): The Harmony device's port. Defaults to 5222. - **activity** (*Optional*): Activity to use when turnon service is called without any data. - **scan_interval** (*Optional*): Amount in seconds in between polling for device's current activity. Defaults to 30 seconds. @@ -132,14 +146,14 @@ automation: action: service: remote.send_command data_template: - # using a data template to have if brances for relavant device + # using a data template to have if brances for relevant device # Always the same entity_id - the harmony hub - entity_id: remote.bedroom + entity_id: remote.bedroom # Always the same command - the Pause key command: Pause # select device based upon the activity being undertaken. device: > - # when in WATCH TV activity, the pause key relates to a TiVo, which is device 22987101 + # when in WATCH TV activity, the pause key relates to a TiVo, which is device 22987101 {% raw %}{% if is_state("sensor.bedroom", "WATCH TV") %}{% raw %} 22987101 # when in WATCH APPLE TV activity, the pause key relates to an Apple TV, which is device 23002316 diff --git a/source/_components/remote.itach.markdown b/source/_components/remote.itach.markdown index cdfd5eff7c5..97234c7516f 100755 --- a/source/_components/remote.itach.markdown +++ b/source/_components/remote.itach.markdown @@ -14,7 +14,9 @@ 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 accross their product line. See API documentation links at the end of this page. +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](https://home-assistant.io/components/gc100) and associated platforms. To use your iTach remote in your installation, you will need to know the IR commands for your devices in Pronto hex format and add the following to your `configuration.yaml` file: diff --git a/source/_components/remote.markdown b/source/_components/remote.markdown index b52e3ea4af0..327797ebbc8 100755 --- a/source/_components/remote.markdown +++ b/source/_components/remote.markdown @@ -13,11 +13,11 @@ ha_release: "0.34" Keeps track which remotes are in your environment, their state and allows you to control them. * Maintains a state per remote and a combined state `all_remotes`. - * Registers services `remote/turn_on`, `remote/turn_off`,`remote/sync`, and `remote/send_command` to control remotes. + * Registers services `remote/turn_on`, `remote/turn_off`, `remote/toggle`, `remote/sync`, and `remote/send_command` to control remotes. ### {% linkable_title Use the services %} -Go the the **Developer Tools**, then to **Call Service** in the frontend, and choose `remote/turn_on` or `remote/turn_off` from the list of available services (**Available 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 `remote/turn_on`, `remote/turn_off`, or `remote/toggle` from the list of available services (**Available services:** on the left). Enter something like the sample below into the **Service Data** field and hit **Call Service**. ```json {"entity_id":"remote.family_room"} diff --git a/source/_components/rest_command.markdown b/source/_components/rest_command.markdown index fc447a08581..c01e8ce94ab 100644 --- a/source/_components/rest_command.markdown +++ b/source/_components/rest_command.markdown @@ -29,7 +29,7 @@ rest_command: Configuration variables: -- **[service_name]** (*Required*): The name used to expose the service. E.g. in the above example would it be ` rest_command.example_request`. +- **[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`. - **payload** (*Optional*): A string/template to send with request. @@ -39,4 +39,3 @@ Configuration variables: - **content_type** (*Optional*): Content type for the request. The commands can be dynamic, using templates to insert values of other entities. Service call support variables for template stuff. - diff --git a/source/_components/rflink.markdown b/source/_components/rflink.markdown index 4efec4ab993..26515b5f8c3 100644 --- a/source/_components/rflink.markdown +++ b/source/_components/rflink.markdown @@ -12,17 +12,17 @@ ha_category: Hub ha_release: 0.38 --- -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 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. +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 provides details for various RF transmitter, receiver and transceiver modules for 433Mhz, 868Mhz and 2.4 Ghz [here.](http://www.nemcon.nl/blog2/wiring) +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 adds support for Ikea Ansluta, Philips Living Colors Gen1, 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.nemcon.nl/blog2/devlist) +A complete list of devices supported by RFLink can be found [here](http://www.rflink.nl/blog2/devlist). This component is tested with the following hardware/software: @@ -40,8 +40,8 @@ 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 ackowledge commands sent before sending new command (slower but more reliable). Defaults to `True` -- **ignore_devices** (*Optional*): List of devices id's to ignore. Supports wildcards (*) at the end. +- **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: @@ -58,7 +58,7 @@ rflink: ### {% linkable_title TCP mode %} -TCP mode allows connect to a RFLink device over TCP/IP network. This is for example useful if placing the RFLink device next to the HA server is not optimal or desired (eg: bad reception). +TCP mode allows you to connect to an RFLink device over a TCP/IP network. This is useful if placing the RFLink device next to the HA server is not optimal or desired (eg: bad reception). To expose the USB/serial interface over TCP on a different host (Linux) the following command can be used: @@ -71,7 +71,7 @@ Other methods of exposing the serial interface over TCP are possible (eg: ESP826 Tested with Wifi serial bridge [esp-link V2.2.3](https://github.com/jeelabs/esp-link/releases/tag/v2.2.3) running on a NodeMCU (ESP8266 Wifi module) with ESP8266 TXD0 (pin D10) and RXD0 (pin D9) connected to Arduino MEGA 2560 RX (Pin 2) and TX (Pin 3) respectively.

-Due to different logic levels, a voltage level shifter is required between the 3.3V NodeMCU and 5V Arduino MEGA 2560 pins. The BSS138 bidirectional logic level converter has been tested for serial pins and the [link](https://www.aliexpress.com/item/8CH-IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-DC-DC-5V-to-3-3V-Setp/32238089139.html) is recommended for the CC2500 transceiver (used for Ikea Ansluta and Living Colors) +Due to different logic levels, a voltage level shifter is required between the 3.3V NodeMCU and 5V Arduino MEGA 2560 pins. The BSS138 bidirectional logic level converter has been tested for serial pins and the [link](https://www.aliexpress.com/item/8CH-IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-DC-DC-5V-to-3-3V-Setp/32238089139.html) is recommended for the CC2500 transceiver (used for Ikea Ansluta and Philips Living Colors)

@@ -85,9 +85,26 @@ rflink: port: 1234 ``` +### {% linkable_title Adding devices Automatically %} + +In order to have your devices discovered automatically, you need to add the following to the configuration. +When pressing the button on the physical remote, RFLink detects the signal and the device should be added automatically to Home Assistant. + +```yaml +light: + - platform: rflink + automatic_add: true +switch: + - platform: rflink + automatic_add: true +sensor: + - platform: rflink + automatic_add: true +``` + ### {% linkable_title Ignoring devices %} -RFLink platform can be configured to completely ignore a device on a platform level. This is useful when you have neighbors which also use 433 Mhz technology. +The RFLink platform can be configured to completely ignore a device on a platform level. This is useful when you have neighbors which also use 433 MHz technology. For example: @@ -104,7 +121,9 @@ rflink: This configuration will ignore the button `1` of the `newkaku` device with ID `000001`, all devices of the `digitech` protocol and all switches of the `kaku` protocol device with codewheel ID `1`. -Wildcards only work at the end of the ID, not in the middle of front! +

+Wildcards only work at the end of the ID, not in the middle or front! +

### {% linkable_title Device support %} @@ -112,16 +131,16 @@ Even though a lot of devices are supported by RFLink, not all have been tested/i ### {% linkable_title Device Incorrectly Identified %} -If you find a device is recognized differently, with different protocols or the ON OFF is swapped or detected as two ON commands, it can be overcome with the RFlink 'RF Signal Learning' mechanism from RFLink Rev 46 (11 March 2017). [Link to further detail.](http://www.nemcon.nl/blog2/faq#RFFind) +If you find a device is recognized differently, with different protocols or the ON OFF is swapped or detected as two ON commands, it can be overcome with the RFLink 'RF Signal Learning' mechanism from RFLink Rev 46 (11 March 2017). [Link to further detail.](http://www.rflink.nl/blog2/faq#RFFind) -### {% linkable_title Technical overview %} +### {% linkable_title Technical Overview %} -- The`rflink` Python module a asyncio transport/protocol is setup that fires an callback for every (valid/supported) packet received by the RFLink gateway. -- This component uses this callback to distribute 'rflink packet events' over Home Assistant's bus which can be subscribed to by entities/platform implementations. -- The platform implementions take care of creating new devices (if enabled) for unsees incoming packet id's. -- Device entities take care of matching to the packet ID, interpreting and performing actions based on the packet contents. Common entitiy logic is maintained in this main component. +- The`rflink` Python module is a asyncio transport/protocol which is setup to fire a callback for every (valid/supported) packet received by the RFLink gateway. +- This component uses this callback to distribute 'rflink packet events' over [Home Assistant's event bus](https://home-assistant.io/docs/configuration/events/) which can be subscribed to by entities/platform implementations. +- The platform implementation takes care of creating new devices (if enabled) for unseen incoming packet ID's. +- Device entities take care of matching to the packet ID, interpreting and performing actions based on the packet contents. Common entity logic is maintained in this main component. -### {% linkable_title Debug logging %} +### {% linkable_title Debug Logging %} For debugging purposes or context when investigating issues you can enable debug logging for Rflink with the following config snippet: diff --git a/source/_components/rpi_pfio.markdown b/source/_components/rpi_pfio.markdown index 041693be588..51feb22b704 100644 --- a/source/_components/rpi_pfio.markdown +++ b/source/_components/rpi_pfio.markdown @@ -13,5 +13,6 @@ ha_release: 0.45 ha_iot_class: "Local Push" --- -The `rpi_pfio` component is the base for all related [PiFace Digital I/O (PFIO)](http://www.piface.org.uk/) platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages. +The `rpi_pfio` component is the base for all related [PiFace Digital I/O (PFIO)](http://www.piface.org.uk/) platforms in Home Assistant. There is no setup needed for the component itself; for the platforms, please check their corresponding pages. +Set the jumpers on the PiFace board for address 0 (JP1: 1-2, JP2: 1-2). diff --git a/source/_components/rss_feed_template.markdown b/source/_components/rss_feed_template.markdown index 9dff1d5ffc5..804c3bbe4aa 100644 --- a/source/_components/rss_feed_template.markdown +++ b/source/_components/rss_feed_template.markdown @@ -1,7 +1,7 @@ --- layout: page title: "RSS feed template" -description: "Instructions how to setup an RSS feed for sensor information and other." +description: "Use this component to generate RSS feeds showing your latest data." date: 2017-04-11 20:42 sidebar: true comments: false @@ -12,17 +12,18 @@ ha_category: Front end ha_release: 0.44 --- -The `rss_feed_template` component can export any information from Home Assistant as static RSS feed. This can be used to display those information on several devices using RSS readers. While native apps for Home Assistant are not widely available, native RSS readers exists for almost any platform. - -E.g. on android, the app "Simple RSS Widget" can be used to display temperatures on the home screen. +The `rss_feed_template` component can export any information from Home Assistant as a static RSS feed. This can be used to display that information on many types of devices using an RSS reader. While native apps for Home Assistant are not widely available, native RSS readers exist for almost any platform. +For example, on Android, the app "Simple RSS Widget" can be used to display temperatures on the home screen. ```yaml # Example configuration.yml entry rss_feed_template: + # Accessible on /api/rss_template/garden + # Example: https://localhost:8123/api/rss_template/garden garden: requires_api_password: False - title: "Garden {% raw %}{{ as_timestamp(now())|timestamp_custom('%H:%m', True) }}{% endraw %}" + 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 %}" @@ -30,9 +31,9 @@ rss_feed_template: 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 id of the feed. The feed can be accessed at /api/rss_template/feed_id (example: 'garden') +- **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** (*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/). diff --git a/source/_components/satel_integra.markdown b/source/_components/satel_integra.markdown new file mode 100644 index 00000000000..c882e71c626 --- /dev/null +++ b/source/_components/satel_integra.markdown @@ -0,0 +1,79 @@ +--- +layout: page +title: "Satel Integra Alarm" +description: "Instructions on how to integrate a Satel Integra alarm panel with Home Assistant using an ETHM network extension from Satel." +date: 2017-09-07 13:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: satel.jpg +ha_category: Hub +ha_release: 0.54 +ha_iot_class: "Local Push" +--- + +The `satel_integra` component will allow Home Assistant users who own a Satel Integra alarm panel to leverage their alarm system and its sensors to provide Home Assistant with information about their homes. Connectivity between Home Assistant and the alarm is accomplished through a ETHM extension module that must be installed in the alarm. + +There is currently support for the following device types within Home Assistant: + +- [Binary Sensor](/components/binary_sensor.satel_integra/): Reports on zone 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. + +A `satel_integra` section must be present in the `configuration.yaml` file and contain the following options as required: + +```yaml +# Example configuration.yaml entry +satel_integra: + host: 192.168.1.100 + port: 7094 + partition: 1 + arm_home_mode: 1 + + zones: + 01: + name: 'Bedroom' + type: 'motion' + 02: + name: 'Hall' + type: 'motion' + 30: + name: 'Kitchen - smoke' + type: 'smoke' + 113: + name: 'Entry door' + type: 'opening' + +``` + +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 it's 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. +For example: + +```yaml + alias: Flick the input switch when movement in bedroom detected + trigger: + platform: state + entity_id: 'binary_sensor.bedroom' + to: 'on' + action: + service: input_boolean.turn_on + data: + entity_id: input_boolean.movement_detected + +``` + +Enjoy! diff --git a/source/_components/scene.lutron_caseta.markdown b/source/_components/scene.lutron_caseta.markdown new file mode 100644 index 00000000000..2d10556edf5 --- /dev/null +++ b/source/_components/scene.lutron_caseta.markdown @@ -0,0 +1,24 @@ +--- +layout: page +title: "Lutron Caseta Scene" +description: "Instructions how to setup Lutron Caseta Scenes within Home Assistant." +date: 2017-07-28 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lutron.png +ha_category: Scene +ha_release: 0.49.2 +ha_iot_class: "Cloud Polling" +--- + +To get Lutron Caseta Scenes working with Home Assistant, follow the instructions for the general [Lutron Caseta component](/components/lutron_caseta/). + +The Lutron Caseta scene platform allows you to control your Smart Bridge Scenes that are created in the Lutron mobile app. + +After setup, scenes will appear in Home Assistant using an `entity_id` based on the name used in the Lutron mobile app. For example, a scene called 'Entertain' will appear in Home Assistant as `scene.entertain`. + +For more information on working with scenes in Home Assistant, see the [Scenes component](/components/scene/). + +Available services: `scene.turn_on`. diff --git a/source/_components/scene.velux.markdown b/source/_components/scene.velux.markdown new file mode 100644 index 00000000000..e94928d889a --- /dev/null +++ b/source/_components/scene.velux.markdown @@ -0,0 +1,19 @@ +--- +layout: page +title: "Velux Scene" +description: "Instructions on how to integrate Velux Scene with Home Assistant." +date: 2017-07-09 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: velux.png +ha_category: Scene +ha_release: 0.49 +ha_iot_class: "Local Polling" +--- + + +The `velux` scene platform allows you to control your [VELUX](http://www.velux.com/) windows. + +The requirement is that you have setup the [VELUX](/components/velux/) component. diff --git a/source/_components/script.markdown b/source/_components/script.markdown index b8ad2d156cc..4b0fa016dce 100644 --- a/source/_components/script.markdown +++ b/source/_components/script.markdown @@ -11,11 +11,9 @@ logo: home-assistant.png ha_category: Automation --- -The script component allows users to specify a sequence of actions to be executed by Home Assistant when turned on. The script component will create an entity for each script and allow them to be controlled via services. +The `script` component allows users to specify a sequence of actions to be executed by Home Assistant when turned on. The script component will create an entity for each script and allow them to be controlled via services. -The sequence of actions is specified using the [Home Assistant Script Syntax]. - -[Home Assistant Script Syntax]: /getting-started/scripts/ +The sequence of actions is specified using the [Home Assistant Script Syntax](/getting-started/scripts/). ```yaml # Example configuration.yaml entry @@ -33,7 +31,8 @@ The preferred way to separate words for better readability is to use underscore

```yaml -  # Turns on the bedroom lights and then the living room lights 1 minute later +script:  + # Turns on the bedroom lights and then the living room lights 1 minute later wakeup: alias: Wake Up sequence: @@ -99,6 +98,7 @@ automation: ``` Using the variables in the script requires the use of `data_template`: + ```yaml # Example configuration.yaml entry script: diff --git a/source/_components/scsgate.markdown b/source/_components/scsgate.markdown index cd53a48c1e3..c70238554ca 100644 --- a/source/_components/scsgate.markdown +++ b/source/_components/scsgate.markdown @@ -13,7 +13,7 @@ ha_release: 0.13 ha_iot_class: "Local Polling" --- -The SCSGate component support the [SCSGate](https://translate.google.com/translate?hl=en&sl=it&tl=en&u=http%3A%2F%2Fguidopic.altervista.org%2Feibscsgt%2Finterface.html) device. This a homebrew device allows to interact with the MyHome system from BTicino/Legrande. +The SCSGate component support the [SCSGate](https://translate.google.com/translate?hl=en&sl=it&tl=en&u=http%3A%2F%2Fguidopic.altervista.org%2Feibscsgt%2Finterface.html) device. This a home-brew device allows to interact with the MyHome system from BTicino/Legrande. To enable SCSGate in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.abode.markdown b/source/_components/sensor.abode.markdown new file mode 100644 index 00000000000..b886d385ab7 --- /dev/null +++ b/source/_components/sensor.abode.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Abode Sensor" +description: "Instructions how to integrate Abode sensors into Home Assistant." +date: 2017-10-05 14:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: abode.jpg +ha_release: 0.56 +ha_category: Sensor +ha_iot_class: "Cloud Push" +--- + +The `abode` sensor platform allows you to monitor your [Abode](https://goabode.com/) sensors. + +This platform supports Abode `Temperature`, `Humidity`, and `Light` sensors. + +The requirement is that you have setup your [Abode hub](/components/abode/). diff --git a/source/_components/sensor.airvisual.markdown b/source/_components/sensor.airvisual.markdown new file mode 100644 index 00000000000..bedf30c7d17 --- /dev/null +++ b/source/_components/sensor.airvisual.markdown @@ -0,0 +1,167 @@ +--- +layout: page +title: "AirVisual" +description: "Instructions on how to use AirVisual data within Home Assistant" +date: 2017-09-06 12:15 +sidebar: true +comments: false +sharing: true +footer: true +logo: airvisual.jpg +ha_category: Health +ha_release: 0.53 +ha_iot_class: "Cloud Polling" +--- + +The `airvisual` sensor platform queries the [AirVisual](https://airvisual.com/) API for air quality +data. Data can be collected via latitude/longitude or by city/state/country. +The resulting information creates sensors for the Air Quality Index (AQI), the +human-friendly air quality level, and the main pollutant of that area. Sensors +that conform to either/both the [U.S. and Chinese air quality standards](http://www.clm.com/publication.cfm?ID=366) can be +created. + +This platform requires an AirVisual API key, which can be obtained [here](https://airvisual.com/api). Note +that the platform was designed using the "Community" package; the "Startup" +and "Enterprise" package keys should continue to function, but actual results +may vary (or not work at all). + +

+The "Community" API key is limited to 10,000 calls per month. In order to leave +a buffer, the `airvisual` platform queries the API every 10 minutes. +

+ +## {% linkable_title Configuring the Platform via Latitude/Longitude %} + +To enable the platform and gather data via latitude/longitude, add the +following lines to your `configuration.yaml` file: + +```yaml +sensor: + - platform: airvisual + api_key: abc123 + monitored_conditions: + - us + - cn + latitude: 42.81212 + longitude: 108.12422 + radius: 500 + show_on_map: false +``` + +Configuration variables: + +- **api_key** (*Required*): your AirVisual API key +- **monitored_conditions** (*Required*): the air quality standard(s) to use +(`us` for U.S., `cn` for Chinese) +- **latitude** (*Optional*): the latitude to monitor; if excluded, the latitude +defined under the `homeassistant` key in `configuration.yaml` will be used +- **longitude** (*Optional*): the longitude to monitor; if excluded, the longitude +defined under the `homeassistant` key in `configuration.yaml` will be used +- **radius** (*Optional*): the radius (in meters) around the latitude/longitude to +search for the nearest city; defaults to `1000` +- **show_on_map** (*Optional*): whether to show a marker on the map at the specified +location; defaults to `true` + +## {% linkable_title Configuring the Platform via City/State/Country %} + +To enable the platform and gather data via city/state/country, add the +following lines to your `configuration.yaml` file: + +```yaml +sensor: + - platform: airvisual + api_key: abc123 + monitored_conditions: + - us + - cn + city: southend-on-sea + state: essex + country: uk + show_on_map: false +``` + +Configuration variables: + +- **api_key** (*Required*): your AirVisual API key +- **monitored_conditions** (*Required*): the air quality standard(s) to use +(`us` for U.S., `cn` for Chinese) +- **city** (*Optional*): the city to monitor +- **state** (*Optional*): the state/region to monitor +- **country** (*Optional*): the country to monitor +- **show_on_map** (*Optional*): whether to show a marker on the map at the specified +location; defaults to `true` + +To easily determine the proper values for a particular location, use the +[AirVisual region directory](https://airvisual.com/world). Once you browse to the particular city you want, +take note of the breadcrumb title, which is of the form +`country > state/region > city`. Use this information to fill out +`configuration.yaml`. + +For example, Sao Paulo, Brazil shows a breadcrumb title of +`Brazil > Sao Paulo > Sao Paulo` – thus, the proper configuration would look +like this: + +```yaml +sensor: + - platform: airvisual + api_key: abc123 + monitored_conditions: + - us + - cn + city: sao-paulo + state: sao-paulo + country: brazil +``` + +## {% linkable_title Sensor Types %} + +When configured, the platform will create three sensors for each configured +air quality standard: + +### Air Quality Index + +**Description:** This sensor displays a numeric air quality index (AQI), a metric +for the overall "health" of the air. + +**Example Sensor Name:** `sensor.chinese_air_quality_index` + +**Example Sensor Value:** `32` + +**Explanation:** + +AQI | Status | Description +------- | :----------------: | ---------- +0 - 50 | **Good** | Air quality is considered satisfactory, and air pollution poses little or no risk +51 - 100 | **Moderate** | Air quality is acceptable; however, for some pollutants there may be a moderate health concern for a very small number of people who are unusually sensitive to air pollution +101 - 150 | **Unhealthy for Sensitive Groups** | Members of sensitive groups may experience health effects. The general public is not likely to be affected +151 - 200 | **Unhealthy** | Everyone may begin to experience health effects; members of sensitive groups may experience more serious health effects +201 - 300 | **Very unhealthy** | Health warnings of emergency conditions. The entire population is more likely to be affected +301+ | **Hazardous** | Health alert: everyone may experience more serious health effects + +### Air Pollution Level + +**Description:** This sensor displays the associated `Status` (from the above +table) for the current AQI. + +**Sample Sensor Name:** `sensor.us_air_pollution_level` + +**Example Sensor Value:** `Moderate` + +### Main Pollutant + +**Description:** This sensor displays the pollutant whose value is currently +highest. + +**Sample Sensor Name:** `sensor.us_main_pollutant` + +**Example Sensor Value:** `PM2.5` + +**Explanation:** + +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.amcrest.markdown b/source/_components/sensor.amcrest.markdown index dcdb919a014..538369de5a3 100644 --- a/source/_components/sensor.amcrest.markdown +++ b/source/_components/sensor.amcrest.markdown @@ -13,34 +13,13 @@ ha_release: 0.37 ha_iot_class: "Local Polling" --- -The `amcrest` sensor allows you to integrate your [Amcrest](https://amcrest.com/) IP camera in Home Assistant. +To get your [Amcrest](https://amcrest.com/) cameras working within Home Assistant, please follow the instructions for the general [Amcrest component](/components/amcrest). -To enable the `amcrest` sensors on your camera, add the following to your `configuration.yaml` file: +Once you have enabled the [Amcrest component](/components/amcrest), add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry sensor: - platform: amcrest - host: IP_ADDRESS - username: USERNAME - password: PASSWORD - monitored_conditions: - - motion_detector - - sdcard - - ptz_preset ``` - -Configuration variables: - -- **host** (*Required*): The IP address or hostname of your camera. If using hostname, make sure the DNS works as expected. -- **username** (*Required*): The username for accessing your camera. -- **password** (*Required*): The password for accessing your camera. -- **name** (*Optional*): This parameter allows you to override the name of your camera. The default is "Amcrest Camera". -- **port** (*Optional*): The port that the camera is running on. The default is 80. -- **scan_interval** (*Optional*): Defines the update interval of the sensor in seconds. The default is 10 seconds. -- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored. - - **motion_detector**: Return True/False when a motion is detected - - **sdcard**: Return the SD card usage by reporting the total and used space - - **ptz_preset**: Return the number of PTZ preset positions configured for the given camera - To check if your Amcrest camera is supported/tested, visit the [supportability matrix](https://github.com/tchellomello/python-amcrest#supportability-matrix) link from the `python-amcrest` project. diff --git a/source/_components/sensor.android_ip_webcam.markdown b/source/_components/sensor.android_ip_webcam.markdown index 0304cb1f01e..87f6f0d7835 100644 --- a/source/_components/sensor.android_ip_webcam.markdown +++ b/source/_components/sensor.android_ip_webcam.markdown @@ -17,3 +17,5 @@ ha_iot_class: "Local Polling" The `android_ip_webcam` sensor platform lets you observe states of [Android IP webcam](https://play.google.com/store/apps/details?id=com.pas.webcam) sensors through Home Assistant. Devices will be configured automatically. Please refer to the [component](/components/android_ip_webcam/) configuration on how to setup. + +You can setup your own sensors by examining the JSON file from the webcam server: http://IP:8080/sensors.json diff --git a/source/_components/sensor.arest.markdown b/source/_components/sensor.arest.markdown index 181d9eaa6c3..bf5c31651c7 100644 --- a/source/_components/sensor.arest.markdown +++ b/source/_components/sensor.arest.markdown @@ -14,7 +14,7 @@ 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. +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. To use your aREST enabled device in your installation, add the following to your `configuration.yaml` file: @@ -34,7 +34,7 @@ sensor: Configuration variables: - **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 the name of the device. By default *name* from the device is used. +- **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. diff --git a/source/_components/sensor.arlo.markdown b/source/_components/sensor.arlo.markdown index d679f7c7eb3..72fc0ae36bb 100644 --- a/source/_components/sensor.arlo.markdown +++ b/source/_components/sensor.arlo.markdown @@ -25,6 +25,7 @@ sensor: - captured_today - last_capture - total_cameras + - battery_level ``` Configuration variables: @@ -33,5 +34,6 @@ Configuration variables: - **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. If no **monitored_conditions** are specified, all of above will be enabled by default. diff --git a/source/_components/sensor.arwn.markdown b/source/_components/sensor.arwn.markdown index f7d76b8b6f8..fb66cc50bd0 100644 --- a/source/_components/sensor.arwn.markdown +++ b/source/_components/sensor.arwn.markdown @@ -22,4 +22,4 @@ sensor: - platform: arwn ``` -Currently all temperatures, barometers, and wind sensors will be displayed. Support for rain gauge sensors will happen in the future. +Currently all temperatures, barometers, moisture, rain, and wind sensors will be displayed. diff --git a/source/_components/sensor.bh1750.markdown b/source/_components/sensor.bh1750.markdown new file mode 100644 index 00000000000..754dc91f86e --- /dev/null +++ b/source/_components/sensor.bh1750.markdown @@ -0,0 +1,105 @@ +--- +layout: page +title: "BH1750 Light sensor" +description: "Instructions how to integrate a BH1750 light sensor into Home Assistant." +date: 2017-06-10 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raspberry-pi.png +ha_category: Sensor +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: + +- [Raspberry Pi](https://www.raspberrypi.org/) + + +To use your BH1750 sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +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. + + +## {% linkable_title Full Examples %} + +If you want to specify the resolution mode of the digital sensor or need to change the default I2c address (which is 0x23), add more details to the `configuration.yaml` file. + +The sensor can work with resolutions of 0.5 lx (high res mode 1), 1 lx (high res mode 2) or 4 lx (low res mode), and make measurements continuously or one time each call. To set any of these operation modes, select one of these combinations: `continuous_low_res_mode`, `continuous_high_res_mode_2`, `continuous_high_res_mode_1`, `one_time_high_res_mode_1`, `one_time_high_res_mode_2`, `one_time_low_res_mode`. + +```yaml +# Example of customized configuration.yaml entry +sensor: + - platform: bh1750 + name: Ambient light + i2c_address: 0x5C + operation_mode: one_time_high_res_mode_1 + measurement_delay_ms: 200 + scan_interval: 25 +``` + +## {% linkable_title Directions for installing smbus support on Raspberry Pi %} + +Enable I2c interface with the Raspberry Pi configuration utility: + +```bash +# pi user environment: Enable i2c interface +$ sudo raspi-config +``` + +Select `Interfacing options->I2C` choose `` and hit `Enter`, then go to `Finish` and you'll be prompted to reboot. + +Install dependencies for use the `smbus-cffi` module and enable your _homeassistant_ user to join the _i2c_ group: + +```bash +# pi user environment: Install i2c dependencies and utilities +$ sudo apt-get install build-essential libi2c-dev i2c-tools python-dev libffi-dev + +# pi user environment: Add homeassistant user to the i2c group +$ sudo addgroup homeassistant i2c + +# pi user environment: Reboot Raspberry Pi to apply changes +$ sudo reboot +``` + +### {% 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: + +```bash +$ /usr/sbin/i2cdetect -y 1 +``` + +It will output a table like this: + +```text + 0 1 2 3 4 5 6 7 8 9 a b c d e f +00: -- -- -- -- -- -- -- -- -- -- -- -- -- +10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- -- +30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +40: 40 -- -- -- -- -- UU -- -- -- -- -- -- -- -- -- +50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +70: -- -- -- -- -- -- -- 77 +``` + +So you can see the sensor address what you are looking for is **0x23** (there are more i2c sensors in that Raspberry Pi). diff --git a/source/_components/sensor.bme280.markdown b/source/_components/sensor.bme280.markdown new file mode 100644 index 00000000000..8da831b0678 --- /dev/null +++ b/source/_components/sensor.bme280.markdown @@ -0,0 +1,146 @@ +--- +layout: page +title: "BME280 Sensor" +description: "Instructions how to integrate a BME280 sensor into Home Assistant." +date: 2017-06-10 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raspberry-pi.png +ha_category: Sensor +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: + +- [Raspberry Pi](https://www.raspberrypi.org/) + +To use your BME280 sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +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. + +## {% linkable_title Full Examples %} + +If you want to specify the working mode of the digital sensor or need to change the default I2c address (which is 0x76), add more details to the `configuration.yaml` file: + +```yaml +# Example of customized configuration.yaml entry +sensor: + - platform: bme280 + name: Ambient + i2c_address: 0x77 + operation_mode: 2 # forced mode + time_standby: 5 + oversampling_temperature: 4 + oversampling_pressure: 4 + oversampling_humidity: 4 + delta_temperature: -0.5 + monitored_conditions: + - temperature + - humidity + - pressure + scan_interval: 40 +``` + +This sensor is somehow famous for generating relatively high temperature measurements compared to other sensors (it looks like self-heating does not feel good for some encapsulations). If you experience this problem, you can define an absolute delta of temperature correction using a negative number. + +## {% linkable_title Customizing the sensor data %} + +Give the values friendly names and icons, add the following to your `customize:` section. + +```yaml +# Example configuration.yaml entry +customize: + sensor.ambient_temperature: + icon: mdi:thermometer + friendly_name: "Temperature" + sensor.ambient_humidity: + icon: mdi:weather-rainy + friendly_name: "Humidity" + sensor.ambient_pressure: + icon: mdi:gauge + friendly_name: "Pressure" +``` + +To create a group, add the following to your `groups` section. + +```yaml +# Example configuration.yaml entry +group: + ambient_sensor: + name: BME280 Environment sensor + entities: + - sensor.ambient_temperature + - sensor.ambient_humidity + - sensor.ambient_pressure +``` + +## {% linkable_title Directions for installing smbus support on Raspberry Pi %} + +Enable I2c interface with the Raspberry Pi configuration utility: + +```bash +# pi user environment: Enable i2c interface +$ sudo raspi-config +``` + +Select `Interfacing options->I2C` choose `` and hit `Enter`, then go to `Finish` and you'll be prompted to reboot. + +Install dependencies for use the `smbus-cffi` module and enable your _homeassistant_ user to join the _i2c_ group: + +```bash +# pi user environment: Install i2c dependencies and utilities +$ sudo apt-get install build-essential libi2c-dev i2c-tools python-dev libffi-dev + +# pi user environment: Add homeassistant user to the i2c group +$ sudo addgroup homeassistant i2c + +# pi user environment: Reboot Raspberry Pi to apply changes +$ sudo reboot +``` + +### {% 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: + +```bash +$ /usr/sbin/i2cdetect -y 1 +``` + +It will output a table like this: +```text + 0 1 2 3 4 5 6 7 8 9 a b c d e f +00: -- -- -- -- -- -- -- -- -- -- -- -- -- +10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- -- +30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +40: 40 -- -- -- -- -- UU -- -- -- -- -- -- -- -- -- +50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +70: -- -- -- -- -- -- -- 77 +``` + +So you can see the sensor address what you are looking for is **0x77** (there are more i2c sensors in that Raspberry Pi). diff --git a/source/_components/sensor.broadlink.markdown b/source/_components/sensor.broadlink.markdown index c6953398668..70e82936adc 100644 --- a/source/_components/sensor.broadlink.markdown +++ b/source/_components/sensor.broadlink.markdown @@ -78,9 +78,9 @@ sensor: The pycrypto library needs to be available on your platform. On a typical windows sysytem `pip install pycrypto` will fail, as a compiler needs to be installed first.

-The quickest way around this is to use a pre-built binary, e.g. from https://github.com/sfbahr/PyCrypto-Wheels +The quickest way around this is to use a pre-built binary, e.g. from [https://github.com/sfbahr/PyCrypto-Wheels](https://github.com/sfbahr/PyCrypto-Wheels) -Be sure to get the correct 64 or 32-bit binary for your system, the full commandline will look something like the sample below for a 64-bit system: +Be sure to get the correct 64 or 32-bit binary for your system, the full command line will look something like the sample below for a 64-bit system: ```bash pip install --use-wheel --no-index --find-links=https://github.com/sfbahr/PyCrypto-Wheels/raw/master/pycrypto-2.6.1-cp35-none-win_amd64.whl pycrypto diff --git a/source/_components/sensor.buienradar.markdown b/source/_components/sensor.buienradar.markdown index f1d6ffaf531..e9706efdafd 100644 --- a/source/_components/sensor.buienradar.markdown +++ b/source/_components/sensor.buienradar.markdown @@ -7,15 +7,16 @@ sidebar: true comments: false sharing: true footer: true -logo: +logo: buienradar.png ha_category: Weather -ha_release: 0.44 +ha_release: 0.47 +ha_iot_class: "Cloud Polling" --- -The `buienradar` platform uses [buienradar.nl](http://buienradar.nl/) as an source for current meteorological data for your location. The -weather forecast is delivered by Buienradar, who provides a webservice that provides detailed weather information for users in The Netherlands. -The relevant weatherstation used will be automatically selected based on the location specified in the Home Assistant configuration (or in the buienradar weather/sensor component). +The `buienradar` platform uses [buienradar.nl](http://buienradar.nl/) as an 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). To integrate `buienradar` with Home Assistant, add the following section to your `configuration.yaml` file: @@ -33,34 +34,74 @@ sensor: Configuration variables: -- **platform** (*Required*): buienradar. -- **latitude** (*Optional*): latitude to use for selection of data source location. Longitude & latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar. -- **longitude** (*Optional*): longitude to use for selection of data source location. Longitude & latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar. -- **monitored_conditions** array (*Required*): one or more conditions to display in the frontend. - - **stationname**: the name of the selected meteo-station. - - **symbol**: A symbol for the current weather. +- **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). - - **groundtemperature**: The current ground temperature (in C). - - **windspeed**: The wind speed in m/s. - - **windforce**: The wind speed/force in Bft. - - **winddirection**: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise. - - **windazimuth**: Where the wind is coming from: N (North),Z (south), NO (Noth-East), etc.. - - **pressure**: The sea-level air pressure in hPa. - - **visibility**: Visibility in meters (m). - - **windgust**: The windspeed of wind gusts (m/s). - - **precipitation**: the amount of precipitation/rain in mm/h. - - **irradiance**: Sun intensity in Watt per square meter (W/m2). + - **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 (Noth-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). -Full configuration example where location is manually specified: + +## 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 + +Full configuration example (excluding forecasted conditions) where location is manually specified: ```yaml # Example configuration.yaml entry - platform: buienradar + name: 'volkel' + # Force 'Meetstation Volkel' to be used: latitude: 51.65 longitude: 5.70 monitored_conditions: - stationname + - conditioncode + - condition + - conditiondetailed + - conditionexact - symbol - humidity - temperature @@ -74,5 +115,51 @@ Full configuration example where location is manually specified: - windgust - precipitation - irradiance + - precipitation_forecast_average + - precipitation_forecast_total ``` - + + +Configuration example with current condition and (some) forecasted values: + +```yaml +# Weather prediction +sensor: + - platform: buienradar + monitored_conditions: + # current condition: + - condition + - conditioncode + - conditiondetailed + - conditionexact + - symbol + # conditions for forecasted data: + - symbol_1d + - symbol_2d + - symbol_3d + - symbol_4d + - symbol_5d + - temperature_1d + - temperature_2d + - temperature_3d + - temperature_4d + - temperature_5d + - rainchance_1d + - rainchance_2d + - rainchance_3d + - rainchance_4d + - rainchance_5d + - sunchance_1d + - sunchance_2d + - sunchance_3d + - sunchance_4d + - sunchance_5d + - rain_1d + - rain_2d + - rain_3d + - rain_4d + - rain_5d +``` + +[Usage statement:](https://www.buienradar.nl/overbuienradar/gratis-weerdata) +> Buienradar makes free weather-data available for use by individuals and businesses (website/intranet). The use of the weather-data is allowed for **non-commercial purposes**. Please refer to the full usage statement linked above to confirm your usage or to request permission. diff --git a/source/_components/sensor.citybikes.markdown b/source/_components/sensor.citybikes.markdown new file mode 100644 index 00000000000..7b4aced03ac --- /dev/null +++ b/source/_components/sensor.citybikes.markdown @@ -0,0 +1,47 @@ +--- +layout: page +title: "CityBikes API sensor" +description: "Instructions on how to integrate data from the CityBikes API into Home Assistant." +date: 2017-06-25 14:20 +sidebar: true +comments: false +sharing: true +footer: true +logo: citybikes.png +ha_category: Sensor +ha_release: 0.49 +--- + + +The `citybikes` sensor platform monitors bike availability at bike sharing stations in a chosen area. The data is provided by [CityBikes](https://citybik.es/#about), which supports bike sharing systems all around the world. + +To enable it, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry (using radius) +sensor: + - platform: citybikes + radius: 500 +``` + +Configuration options: + +- **name** (*Optional*): The base name of this group of monitored stations. The entity ID of every monitored station in this group will be prefixed with this base name, in addition to the network ID. +- **network** (*Optional*): The name of the bike sharing system to poll. Defaults to the system that operates in the monitored location. +- **latitude** (*Optional*): Latitude of the location, around which bike stations are monitored. Defaults to the latitude in your `configuration.yaml` file. +- **longitude** (*Optional*): Longitude of the location, around which bike stations are monitored. Defaults to the longitude in your `configuration.yaml` file. +- **radius** (*Optional*): The radius (in meters or feet, depending on the Home Assistant configuration) around the monitored location. Only stations closer than this distance will be monitored. +- **stations** array (*Optional*): A list of specific stations to monitor. The list should contain station `ID`s or `UID`s, which can be obtained from the CityBikes API. + +Additional configuration samples: + +```yaml +# Example configuration.yaml entry (using a list of stations) +sensor: + - platform: citybikes + name: Work Stations + stations: + - 123 + - 145 + - 436 +``` diff --git a/source/_components/sensor.coinmarketcap.markdown b/source/_components/sensor.coinmarketcap.markdown index 0fdcbc86486..e8ab719c944 100644 --- a/source/_components/sensor.coinmarketcap.markdown +++ b/source/_components/sensor.coinmarketcap.markdown @@ -14,7 +14,7 @@ ha_iot_class: "Cloud Polling" --- -The `coinmarketcap` sensor platform displays various details about a crypto currency provided by [CoinMarketCap](http://coinmarketcap.com/). +The `coinmarketcap` sensor platform displays various details about a cryptocurrency provided by [CoinMarketCap](http://coinmarketcap.com/). To add the CoinMarketCap sensor to your installation, add the following lines to your `configuration.yaml`: @@ -26,5 +26,5 @@ sensor: Configuration variables: -- **currency** (*Optional*): The currency to display, eg. `bitcoin`, `litecoin`, `steem`, etc. Default is `bitcoin`. - +- **currency** (*Optional*): The cryptocurrency to use, eg. `bitcoin`, `litecoin`, `steem`, etc. Default is `bitcoin`. +- **display_currency** (*Optional*): The currency to display, eg. `USD`, `EUR`, `GBP`, etc. Default is `USD`. All supported currencies can be found [here](https://coinmarketcap.com/api/). diff --git a/source/_components/sensor.comfoconnect.markdown b/source/_components/sensor.comfoconnect.markdown new file mode 100644 index 00000000000..78d22454b9b --- /dev/null +++ b/source/_components/sensor.comfoconnect.markdown @@ -0,0 +1,17 @@ +--- +layout: page +title: "Zehnder ComfoAir Q Ventilation sensors" +description: "Instructions how to integrate Zehnder ComfoAir Q350/450/600 sensors into Home Assistant." +date: 2017-06-28 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: zehnder.png +ha_category: Sensor +ha_release: "0.48" +--- + +Please see the [main component] for information how to set it up. + +[main component]: /components/comfoconnect/ diff --git a/source/_components/sensor.command_line.markdown b/source/_components/sensor.command_line.markdown index c0a39d4093e..b963bdee442 100644 --- a/source/_components/sensor.command_line.markdown +++ b/source/_components/sensor.command_line.markdown @@ -31,7 +31,7 @@ Configuration variables: - **name** (*Optional*): Name of the command sensor. - **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. -- **scan_interval** (*Optional*): Defines number of seconds for polling interval. +- **scan_interval** (*Optional*): Defines number of seconds for polling interval (defaults to 60 seconds). ## {% linkable_title Examples %} @@ -53,6 +53,7 @@ sensor: - platform: command_line name: HD Temperature command: "hddtemp -n /dev/sda" + # If errors occur, remove degree symbol below unit_of_measurement: "°C" ``` @@ -62,9 +63,11 @@ Thanks to the [`proc`](https://en.wikipedia.org/wiki/Procfs) file system, variou ```yaml # Example configuration.yaml entry +sensor: - platform: command_line name: CPU Temperature command: "cat /sys/class/thermal/thermal_zone0/temp" + # If errors occur, remove degree symbol below unit_of_measurement: "°C" value_template: '{% raw %}{{ value | multiply(0.001) }}{% endraw %}' ``` @@ -104,7 +107,7 @@ sensor: ### {% linkable_title Read value out of a remote text file %} -If you own a devices which are storing values in text files which are accessible over HTTP then you can use the same approach as shown in the previous section. Instead of looking at the JSON response we directly grab the sensor's value. +If you own a devices which are storing values in text files which are accessible over HTTP then you can use the same approach as shown in the previous section. Instead of looking at the JSON response we directly grab the sensor's value. ```yaml sensor: @@ -142,3 +145,16 @@ sensor: command: "python3 /path/to/script/arest-value.py" unit_of_measurement: "°C" ``` + +### {% linkable_title Usage of templating in `command:` %} + +[Templates](/docs/configuration/templating/) are supported in the `command:` configuration variable. This could be used if you want to include the state of a specific sensor as an argument to your external script. + +```yaml +# Example configuration.yaml entry +sensor: + - platform: command_line + name: wind direction + command: 'sh /home/pi/.homeassistant/scripts/wind_direction.sh {{ states.sensor.wind_direction.state }}' + unit_of_measurement: "Direction" +``` diff --git a/source/_components/sensor.cups.markdown b/source/_components/sensor.cups.markdown index 98554c5dad4..6ccaf7f3879 100644 --- a/source/_components/sensor.cups.markdown +++ b/source/_components/sensor.cups.markdown @@ -16,7 +16,7 @@ ha_release: 0.32 The `cups` sensor platform is using the open source printing system [CUPS](https://www.cups.org/) to show details about your printers. -To set up the sensor the "Queue Name" of the printer is needed. The fastest way to get it, is to visit the CUPS webinterface at "http://[IP ADDRESS PRINT SERVER]:631" and go to "Printers". +To set up the sensor the "Queue Name" of the printer is needed. The fastest way to get it, is to visit the CUPS web interface at "http://[IP ADDRESS PRINT SERVER]:631" and go to "Printers".

@@ -36,6 +36,8 @@ sensor: Configuration variables: - **printers** array (*Required*): List of printers to add. +- **host** (*Optional*): IP address of the CUPS print server. +- **port** (*Optional*): Port address of the CUPS print server. Defaults to 631.

diff --git a/source/_components/sensor.currencylayer.markdown b/source/_components/sensor.currencylayer.markdown index 29aad210caf..d26955ba01d 100644 --- a/source/_components/sensor.currencylayer.markdown +++ b/source/_components/sensor.currencylayer.markdown @@ -14,7 +14,7 @@ ha_release: 0.32 --- -The `currencylayer` sensor will show you the current exchange rate from [Currencylayer](https://currencylayer.com/) that provides realtime exchange rates for [170 currencies](https://currencylayer.com/currencies). The free account is limited to only USD as a base currency, allows 1000 requests per month, and updates every hour. +The `currencylayer` sensor will show you the current exchange rate from [Currencylayer](https://currencylayer.com/) that provides real-time exchange rates for [170 currencies](https://currencylayer.com/currencies). The free account is limited to only USD as a base currency, allows 1000 requests per month, and updates every hour. Obtain your API key [here](https://currencylayer.com/product) diff --git a/source/_components/sensor.darksky.markdown b/source/_components/sensor.darksky.markdown index 1fd1ec5bcc3..ee366dfa66e 100644 --- a/source/_components/sensor.darksky.markdown +++ b/source/_components/sensor.darksky.markdown @@ -41,7 +41,7 @@ Configuration variables: - **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 `_`. -- **latitude** (*Optional*): Latitude coordinate to monitor weather of (required if **longitude** is specificed), defaults to coordinates defined in your `configuration.yaml` +- **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. @@ -66,9 +66,10 @@ Configuration variables: - **apparent_temperature_max**: Today's expected apparent high temperature. - **apparent_temperature_min**: Today's expected apparent low temperature. - **precip_intensity_max**: Today's expected maximum intensity of precipitation. + - **uv_index**: The current UV index. - **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`, and `uk2`. `auto` will let Dark Sky decide the unit system based on location. -- **update_inverval** (*Optional*): Minimum time interval between updates. Default is 2 minutes. Supported formats: +- **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.: diff --git a/source/_components/sensor.deluge.markdown b/source/_components/sensor.deluge.markdown new file mode 100644 index 00000000000..2f495a8d041 --- /dev/null +++ b/source/_components/sensor.deluge.markdown @@ -0,0 +1,42 @@ +--- +layout: page +title: "Deluge Sensor" +description: "Instructions how to integrate Deluge sensors within Home Assistant." +date: 2017-10-24 17:06 +sidebar: true +comments: false +sharing: true +footer: true +logo: deluge.png +ha_category: Downloading +ha_release: 0.57 +ha_iot_class: "Local Polling" +--- + + +The `deluge` platform allows you to monitor your downloads with [Deluge](http://deluge-torrent.org/) from within Home Assistant and setup automation based on the information. + +To enable this sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: deluge + host: IP_ADDRESS + monitored_variables: + - 'current_status' + - 'download_speed' + - 'upload_speed' +``` + +Configuration variables: + +- **host** (*Required*): This is the IP address of your Deluge daemon, eg. 192.168.1.32. +- **port** (*Optional*): The port your Deluge daemon uses. Defaults to 58846. Warning, this is not the port of the WebUI. +- **name** (*Optional*): The name to use when displaying this Deluge instance. +- **username** (*Optional*): Your Deluge username, if you use authentication. +- **password** (*Optional*): Your Deluge password, if you use authentication. +- **monitored_variables** array (*Required*): Conditions to display in the frontend. + - **current_status**: The status of your Deluge daemon. + - **download_speed**: The current download speed. + - **upload_speed**: The current upload speed. diff --git a/source/_components/sensor.dht.markdown b/source/_components/sensor.dht.markdown index b807d14d6ea..fd187c67948 100644 --- a/source/_components/sensor.dht.markdown +++ b/source/_components/sensor.dht.markdown @@ -31,10 +31,27 @@ sensor: Configuration variables: -- **sensor** (*Required*): The sensor type, supported devices are DHT11, DHT22, and AM2302 +- **sensor** (*Required*): The sensor type, supported devices are DHT11, DHT22, and AM2302. - **pin** (*Required*): The pin the sensor is connected to. -- **name** (*Optional*): The name of the sensor -- **monitored_conditions** array (*Required*): Conditions to monitor. Available conditions are only *temperature* and *humidity*. +- **name** (*Optional*): The name of the sensor. +- **monitored_conditions** array (*Required*): Conditions to monitor. Available conditions are only *temperature* and *humidity*. +- **temperature_offset** (*Optional*): Add or subtract a value from the temperature. +- **humidity_offset** (*Optional*): Add or subtract a value from the humidity. The name of the pin to which the sensor is connected has different names on different platforms. 'P8_11' for Beaglebone, '23' for Raspberry Pi. +### {% linkable_title Example %} + +An example for a Raspberry Pi 3 with a DHT22 sensor connected to GPIO4 (pin 7): + +```yaml +sensor: + - platform: dht + sensor: DHT22 + pin: 4 + temperature_offset: 2.1 + humidity_offset: -3.2 + monitored_conditions: + - temperature + - humidity +``` diff --git a/source/_components/sensor.dsmr.markdown b/source/_components/sensor.dsmr.markdown index b8f864e90d0..326057c7996 100644 --- a/source/_components/sensor.dsmr.markdown +++ b/source/_components/sensor.dsmr.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "DSMR/Slimme meter" +title: "DSMR or Slimme meter" description: "Instructions how to integrate DSMR Smartmeter within Home Assistant." date: 2016-11-12 12:00 sidebar: true @@ -15,11 +15,9 @@ ha_iot_class: "Local Push" A sensor platform for Dutch Smart Meters which comply to DSMR (Dutch Smart Meter Requirements), also known as 'Slimme meter' or 'P1 poort'. -Currently support DSMR V2.2 and V4 through the [dsmr_parser](https://github.com/ndokter/dsmr_parser) module by Nigel Dokter. - -For official information about DSMR refer to: [DSMR Document](http://www.netbeheernederland.nl/themas/hotspot/hotspot-documenten/?dossierid=11010056&title=Slimme%20meter&onderdeel=Documenten) - -For unofficial hardware connection examples refer to: [Domoticx](http://domoticx.com/p1-poort-slimme-meter-hardware/) +- Currently support DSMR V2.2 and V4 through the [dsmr_parser](https://github.com/ndokter/dsmr_parser) module by Nigel Dokter. +- For official information about DSMR refer to: [DSMR Document](http://www.netbeheernederland.nl/themas/hotspot/hotspot-documenten/?dossierid=11010056&title=Slimme%20meter&onderdeel=Documenten) +- For unofficial hardware connection examples refer to: [Domoticx](http://domoticx.com/p1-poort-slimme-meter-hardware/)

@@ -33,13 +31,13 @@ This component is known to work for: - Kaifa E0026 - Kamstrup 382JxC (DSMR 2.2) -,USB serial converters: +USB serial converters: - Cheap (Banggood/ebay) Generic PL2303 - https://sites.google.com/site/nta8130p1smartmeter/webshop - https://www.sossolutions.nl/slimme-meter-kabel -And Serial to network proxies: +Serial to network proxies: - ser2net - http://ser2net.sourceforge.net/ @@ -49,11 +47,20 @@ sensor: - platform: dsmr ``` -Configuration variables: - -- **port** string (*Optional*): Serial port to which Smartmeter is connected (default: /dev/ttyUSB0 (connected to USB port)). For remote (i.e. ser2net) connections, use TCP port number to connect to (i.e. 2001). -- **host** string (*Optional*): Host to which Smartmeter is connected (default: '' (connected via serial or USB, see **port**)). For remote connections, use IP address of host to connect to (i.e. 192.168.1.13). -- **dsmr_version** string (*Optional*): Version of DSMR used by meter, choices: 2.2, 4 (default: 2.2). +{% configuration %} + port: + description: "Serial port to which Smartmeter is connected (default: /dev/ttyUSB0 (connected to USB port)). For remote (i.e. ser2net) connections, use TCP port number to connect to (i.e. 2001)." + required: false + type: string + host: + description: "Host to which Smartmeter is connected (default: '' (connected via serial or USB, see **port**)). For remote connections, use IP address of host to connect to (i.e. 192.168.1.13)." + required: false + type: string + name: + description: "Version of DSMR used by meter. Choices: 2.2, 4, 5. Defaults to 2.2." + required: false + type: string +{% endconfiguration %} Full configuration examples can be found below: @@ -95,6 +102,7 @@ group: ``` Optional configuration example for ser2net: + ```sh # Example /etc/ser2net.conf for proxying USB/serial connections to DSMRv4 smart meters 2001:raw:600:/dev/ttyUSB0:115200 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS @@ -111,3 +119,14 @@ and after that you need to reboot! ``` $ sudo reboot ``` + +### {% linkable_title Technical overview %} + +DSMR is a standard to which Dutch smartmeters must comply. It specifies that the smartmeter must send out a 'telegram' every 10 seconds over a serial port. + +The contents of this telegram differ between version but they generally consist of lines with 'obis' (Object Identification System, a numerical ID for a value) followed with the value and unit. + +This module sets up a 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 d3f1a4db978..c79c4b73a0c 100644 --- a/source/_components/sensor.dte_energy_bridge.markdown +++ b/source/_components/sensor.dte_energy_bridge.markdown @@ -13,7 +13,10 @@ ha_release: 0.21 ha_iot_class: "Local Polling" --- -A sensor platform for the [DTE](https://www.dteenergy.com/) Energy Bridge. +A sensor platform for the [DTE](https://www.dteenergy.com/) Energy Bridge. To find out which version of the DTE Energy Bridge sensor you have, find the status LED on your box. + + - If the status LED is on the top, you have a v1. + - If the status LED is on the front, you have a v2. To enable this sensor, add the following lines to your `configuration.yaml` file: @@ -28,3 +31,4 @@ 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. diff --git a/source/_components/sensor.dublin_bus_transport.markdown b/source/_components/sensor.dublin_bus_transport.markdown index d009ea2bef7..3b3161cdf10 100644 --- a/source/_components/sensor.dublin_bus_transport.markdown +++ b/source/_components/sensor.dublin_bus_transport.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -logo: train.png +logo: dublin_bus.jpg ha_category: Transport ha_iot_class: "Cloud Polling" ha_release: 0.36 diff --git a/source/_components/sensor.dwd_weather_warnings.markdown b/source/_components/sensor.dwd_weather_warnings.markdown new file mode 100644 index 00000000000..2965c009260 --- /dev/null +++ b/source/_components/sensor.dwd_weather_warnings.markdown @@ -0,0 +1,43 @@ +--- +layout: page +title: "DWD Weather warnings" +description: "Instructions on how to integrate Deutsche Wetter Dienst weather warnings into Home Assistant." +date: 2017-07-26 22:00 +sidebar: true +comments: false +sharing: true +footer: true +#logo: dwdwarnapp.png +ha_category: Weather +ha_release: 0.51 +ha_iot_class: "Cloud Polling" +--- + +The `dwd_weather_warnings` sensor platform uses the [Deutsche Wetter Dienst (DWD)](https://www.dwd.de) as a source for current and advance warnings. + +- A name is optional but if multiple regions are used a name will be required. +- The sensor checks for new data every 15 minutes. + +To add the DWD WarnApp sensor to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: dwd_weather_warnings + 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` + +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) + +Configuration variables: + +- **region_name** (*Optional*): The region name string as identified from the DWD website. If not given, defaults to Hansestadt Hamburg. +- **name** (*Optional*): The name you would like to give to the warnapp sensor. diff --git a/source/_components/sensor.dweet.markdown b/source/_components/sensor.dweet.markdown index 733b04a1a17..bc3c710f53e 100644 --- a/source/_components/sensor.dweet.markdown +++ b/source/_components/sensor.dweet.markdown @@ -29,12 +29,12 @@ 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 the name of the device in the frontend. +- **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. ### {% linkable_title Full configuration sample %} -A ful configuration entry could look like the sample below. +A full configuration entry could look like the sample below. ```yaml # Example configuration.yaml entry @@ -48,7 +48,7 @@ sensor: ### {% linkable_title Interacting with Dweet.io %} -You can easily send dweets from the commandline to test your sensor with `curl`. +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 @@ -70,7 +70,7 @@ $ python3 {'thing': 'ha-sensor', 'created': '2015-12-10T09:46:08.559Z', 'content': {'humiditiy': 81, 'temperature': 23}} ``` -Recieve the latest dweet. +Receive the latest dweet. ```bash >>> dweepy.get_latest_dweet_for('ha-sensor') diff --git a/source/_components/sensor.ecobee.markdown b/source/_components/sensor.ecobee.markdown new file mode 100644 index 00000000000..0ae2be049bc --- /dev/null +++ b/source/_components/sensor.ecobee.markdown @@ -0,0 +1,16 @@ +--- +layout: page +title: "Ecobee Sensor" +description: "Instructions how to setup the Ecobee sensors within Home Assistant." +date: 2015-11-30 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ecobee.png +ha_category: Binary Sensor +ha_release: 0.9 +ha_iot_class: "Local Push" +--- + +To get your Ecobee sensors working with Home Assistant, follow the instructions for the general [Ecobee component](/components/ecobee/). diff --git a/source/_components/sensor.eddystone_temperature.markdown b/source/_components/sensor.eddystone_temperature.markdown index 57f61bdcf99..4d5aacbbc25 100644 --- a/source/_components/sensor.eddystone_temperature.markdown +++ b/source/_components/sensor.eddystone_temperature.markdown @@ -47,7 +47,7 @@ sensor: 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). +- **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. diff --git a/source/_components/sensor.eliqonline.markdown b/source/_components/sensor.eliqonline.markdown index 36fb8621c99..cfa071e3079 100644 --- a/source/_components/sensor.eliqonline.markdown +++ b/source/_components/sensor.eliqonline.markdown @@ -28,7 +28,7 @@ sensor: Configuration variables: - **access_token** (*Required*): The Access Token for your account. -- **channel_id** (*Optional*): Channel ID of your device. Needed if you have more than one device. +- **channel_id** (*Optional*): Channel ID (as integer) of your device. Needed if you have more than one device. - **name** (*Optional*): The name of the sensor, eg. the city. For details please check the [API documentation](https://my.eliq.se/knowledge/sv-SE/49-eliq-online/299-eliq-online-api). diff --git a/source/_components/sensor.emoncms.markdown b/source/_components/sensor.emoncms.markdown index 16673c163fa..3fb5f1aeab7 100644 --- a/source/_components/sensor.emoncms.markdown +++ b/source/_components/sensor.emoncms.markdown @@ -41,7 +41,11 @@ sensor: ## {% linkable_title Default naming scheme %} -The names of the sensors created by this component, will be a combination of static text, `id` from the config and `feedid` from the Emoncms feed, unless `sensor_names` is used. An example name would be `emoncms1_feedid_10`. +The names of the sensors created by this component will use the feed names defined in EmonCMS if available, +or the feed ID otherwise, and will be prefixed with "EmonCMS", e.g. "EmonCMS Total Power" or "EmonCMS Feed 5". +If the `id` property is anything but `1`, the ID will be shown as well, e.g. "EmonCMS 2 Feed 5". + +If `sensor_names` is used, any feeds with defined names will get those names exactly, with no prefix. ### {% linkable_title Examples %} @@ -92,7 +96,7 @@ sensor: - 120 sensor_names: 5: "feed 1" - 48: "kwh feed" + 48: "kWh feed" 61: "amp feed" 110: "watt feed" ``` diff --git a/source/_components/sensor.envirophat.markdown b/source/_components/sensor.envirophat.markdown index cf899363f7f..0d1c200a6df 100644 --- a/source/_components/sensor.envirophat.markdown +++ b/source/_components/sensor.envirophat.markdown @@ -13,7 +13,7 @@ ha_iot_class: "Local Polling" ha_release: 0.44 --- -The `envirophat` sensor platform allows you to display information collected by an [Enviro pHAT](https://shop.pimoroni.com/products/enviro-phat) add-on board for the Raspberry Pi. The board featues a wide range of sensors, such as: +The `envirophat` sensor platform allows you to display information collected by an [Enviro pHAT](https://shop.pimoroni.com/products/enviro-phat) add-on board for the Raspberry Pi. The board features a wide range of sensors, such as: - BMP280 temperature/pressure sensor - TCS3472 light and RGB colour sensor with two LEDs for illumination @@ -50,7 +50,7 @@ sensor: Configuration variables: - **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 migth affect the accuracy of the reading (ie. the Pi might heat up the sensor) + - **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 @@ -66,7 +66,7 @@ Configuration variables: - **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 onboard 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 onboard LEDs will blink whenever a reading is taken. +- **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. ### Notes @@ -101,7 +101,7 @@ Add something like the following to your [customize section](/docs/configuration # Example configuration.yaml entry group: enviro_phat_voltages: - name: Enviro pHAT Volages` + name: Enviro pHAT Voltages` entities: - sensor.voltage_0 - sensor.voltage_1 diff --git a/source/_components/sensor.fail2ban.markdown b/source/_components/sensor.fail2ban.markdown new file mode 100644 index 00000000000..c96b3109910 --- /dev/null +++ b/source/_components/sensor.fail2ban.markdown @@ -0,0 +1,185 @@ +--- +layout: page +title: "Fail2Ban Sensor" +description: "Instructions how to integrate a fail2ban sensor into Home Assistant." +date: 2017-10-19 10:30 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Sensor +ha_iot_class: "Local Polling" +logo: fail2ban.png +ha_release: 0.57 +--- + + +The `fail2ban` sensor allows for IPs banned by [fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page) to be displayed in the Home Assistant front-end. + +

+Your system must have fail2ban installed and correctly configured for this sensor to work. In addition, Home Assistant must be able to read the fail2ban log file. +

+ +To enable this sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: fail2ban + jails: + - ssh + - hass-iptables + file_path: /var/log/fail2ban.log +``` + +Configuration variables: + +- **jails** (*Required*): List of configured jails you want to display (each jail is its own sensor). +- **name** (*Optional*): Name of the sensor. Defaults to `fail2ban`. +- **file_path** (*Optional*): Path to the fail2ban log. Defaults to `/var/log/fail2ban.log`. +- **scan_interval** (*Optional*): Used to limit how often log file is read and must be a positive integer (representing number of seconds to wait). Defaults to 120. + +### {% linkable_title Set up Fail2Ban %} + +For most set-ups, you can follow [this tutorial](https://home-assistant.io/cookbook/fail2ban/) to set up fail2ban on your system. It will walk you through creating jails and filters, allowing you to monitor IPs that have been banned for too many failed ssh login attempts, as well as too many failed Home Assistant log in attempts. + +### {% linkable_title Fail2Ban with Docker %} + +

+These steps assume you already have the Home Assistant docker running behind nginx and that it is externally accessible. It also assumes the docker is running with the `--net='host'` flag. +

+ +For those of us using Docker, the above tutorial may not be sufficient. The following steps specifically outline how to set up `fail2ban` and Home Assistant when running Home Assistant within a Docker behind nginx. The setup this was tested on was an unRAID server using the [let's encrypt docker](https://github.com/linuxserver/docker-letsencrypt) from linuxserver.io. + +#### Set http logger + +In your `configuration.yaml` file, add the following to the `logger` component to ensure that Home Assistant prints failed login attempts to the log. + +```yaml +logger: + logs: + homeassistant.components.http.ban: warning +``` + +#### Edit the `jail.local` file + +Next, we need to edit the `jail.local` file that is included with the Let's Encrypt docker linked above. Note, for this tutorial, we'll only be implementing the `[hass-iptables]` jail from the [previously linked tutorial](https://home-assistant.io/cookbook/fail2ban/). + +Edit `/mnt/user/appdata/letsencrypt/fail2ban/jail.local` and append the following to the end of the file: + +``` +[hass-iptables] +enabled = true +filter = hass +action = iptables-allports[name=HASS] +logpath = /hass/home-assistant.log +maxretry = 5 +``` + +#### Create a filter for the Home Assistant jail + +Now we need to create a filter for `fail2ban` so that it can properly parse the log. This is done with a `failregex`. Create a file called `hass.local` within the `filter.d` directory in `/mnt/user/appdata/letsencrypt/fail2ban` and add the following: + +``` +[INCLUDES] +before = common.conf + +[Definition] +failregex = ^%(__prefix_line)s.*Login attempt or request with invalid authentication from .*$ + +ignoreregex = + +[Init] +datepattern = ^%%Y-%%m-%%d %%H:%%M:%%S +``` + +#### Map log file directories + +First, we need to make sure that fail2ban log can be passed to Home Assistant and that the Home Assistant log can be passed to fail2ban. When starting the Let's Encrypt docker, you need to add the following argument (adjust paths based on your setup): + +``` +/mnt/user/appdata/home-assistant:/hass +``` + +This will map the Home Assistant configuration directory to the Let's Encrypt docker, allowing `fail2ban` to parse the log for failed login attempts. + +Now do the same for the Home Assistant docker, but this time we'll be mapping the `fail2ban` log directory to Home Assistant so that the fail2ban sensor is able to read that log: + +``` +/mnt/user/appdata/letsencrypt/log/fail2ban:/fail2ban +``` + + +#### Send client IP to Home Assistant + +By default, the IP address that Home Assistant sees will be that of the container (something like `172.17.0.16`). What this means is that for any failed login attempt, assuming you have correctly configured `fail2ban`, the Docker IP will be logged as banned, but the originating IP is still allowed to make attempts. We need `fail2ban` to recognize the originating IP to properly ban it. + +First, we have to add the following to the nginx configuration file located in `/mnt/user/appdata/letsencrypt/nginx/site-confs/default`. + +``` +proxy_set_header X-Real-IP $remote_addr; +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +``` + +This snippet should be added within your Home Assistant server config, so you have something like the following: + +``` +server { + ... + location / { + proxy_pass http://192.168.0.100:8123; + proxy_set_header Host $host; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + location /api/websocket { + proxy_pass http://192.168.0.100:8123/api/websocket; + proxy_set_header Host $host; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + ... +} +``` + +Once that's added to the nginx configuration, we need to modify the Home Assistant `configuration.yaml` such that the `X-Forwarded-For` header can be parsed. This is done by adding the following to the `http` component: + +```yaml +http: + 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. + +#### Add the fail2ban sensor + +Now that we've correctly set everything up for Docker, we can add our sensors to `configuration.yaml` with the following: + +```yaml +sensor: + - platform: fail2ban + jails: + - hass-iptables + file_path: /fail2ban/fail2ban.log +``` + +Assuming you've followed all of the steps, you should have one fail2ban sensor, `sensor.fail2ban_hassiptables`, within your front-end. + +### {% linkable_title Other debug tips %} + +If, after following these steps, you're unable to get the fail2ban sensor working, here are some other steps you can take that may help: + +- Add `logencoding = utf-8` to the `[hass-iptables]` entry +- Ensure the `failregex` you added to `filter.d/hass.local` matches the output within `home-assistant.log` +- Try changing the datepattern in `filter.d/hass/local` by adding the following entry (change the datepattern to fit your needs). [source](https://github.com/fail2ban/fail2ban/issues/174) + ``` + [Init] + datepattern = ^%%Y-%%m-%%d %%H:%%M:%%S + ``` diff --git a/source/_components/sensor.fido.markdown b/source/_components/sensor.fido.markdown index 1b863d0e5f0..165f52bbf0c 100644 --- a/source/_components/sensor.fido.markdown +++ b/source/_components/sensor.fido.markdown @@ -53,6 +53,6 @@ Configuration variables: - **talk_used**: Talk time used - **talk_limit**: Talk time limit - **talt_remaining**: Talk time remaining - - **other_talk_used**: Other talk time used (It could be internation calls) + - **other_talk_used**: Other talk time used (It could be international calls) - **other_talk_limit**: Other talk time limit - **other_talt_remaining**: Other talk time remaining diff --git a/source/_components/sensor.fitbit.markdown b/source/_components/sensor.fitbit.markdown index 1739c4fe3de..1da5a518367 100644 --- a/source/_components/sensor.fitbit.markdown +++ b/source/_components/sensor.fitbit.markdown @@ -21,6 +21,7 @@ Enable the sensor by adding the following to your `configuration.yaml` file: # Example configuration.yaml entry sensor: - platform: fitbit + clock_format: 12H monitored_resources: - "body/weight" ``` @@ -34,6 +35,7 @@ The unit system that the sensor will use is based on the country you set in your 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`. Below is the list of resources that you can add to `monitored_resources`. One sensor is exposed for every resource. @@ -63,6 +65,7 @@ activities/tracker/steps body/bmi body/fat body/weight +devices/battery sleep/awakeningsCount sleep/efficiency sleep/minutesAfterWakeup diff --git a/source/_components/sensor.fritzbox_callmonitor.markdown b/source/_components/sensor.fritzbox_callmonitor.markdown index 7266f9943fa..157e338e43b 100644 --- a/source/_components/sensor.fritzbox_callmonitor.markdown +++ b/source/_components/sensor.fritzbox_callmonitor.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "FRITZ!Box" +title: "FRITZ!Box Call Monitor" description: "Instructions how to integrate a phone call monitor for AVM FRITZ!Box routers into Home Assistant." date: 2016-08-13 15:00 sidebar: true diff --git a/source/_components/sensor.fritzbox_netmonitor.markdown b/source/_components/sensor.fritzbox_netmonitor.markdown index 24e37e62330..d6c8a3e9842 100644 --- a/source/_components/sensor.fritzbox_netmonitor.markdown +++ b/source/_components/sensor.fritzbox_netmonitor.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "FRITZ!Box" +title: "FRITZ!Box Net Monitor" description: "Instructions how to integrate an AVM FRITZ!Box monitor into Home Assistant." date: 2017-01-17 22:00 sidebar: true diff --git a/source/_components/sensor.geizhals.markdown b/source/_components/sensor.geizhals.markdown new file mode 100644 index 00000000000..13f02fc7a13 --- /dev/null +++ b/source/_components/sensor.geizhals.markdown @@ -0,0 +1,48 @@ +--- +layout: page +title: "Geizhals" +description: "Instructions on how to integrate a Geizhals sensor into Home Assistant." +date: 2017-07-15 14:15 +sidebar: true +comments: false +sharing: true +footer: true +logo: geizhals.png +ha_category: Sensor +ha_iot_class: "Cloud Polling" +ha_release: "0.51" +--- + + +The `geizhals` sensor will give you the best price of a product from [Geizhals](https://geizhals.de) or related site. With this information can be used in e.g. automations to notify you when a price drops. + +To enable this sensor, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: geizhals + name: qc35 + product_id: 1453021 +``` + +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 clicking on the *Price History* tab, e.g. [here](https://geizhals.de/?phist=1453021). The URL of this site reveals the ID, e.g. with `product_id: 1453021`. +- **description** (*Optional*): The name of the product in the front end. +- **domain** (*Optional*): Domain which should be used for the request. Set this to `geizhals.at`, `geizhals.eu`, `geizhals.de`, `skinflint.co.uk` or `cenowarka.pl`. Defaults to `geizhals.de`. +- **regex** (*Optional*): Regular expression to parse the price. Default: `\D\s(\d*)[\,|\.](\d*)`. + +#### {% linkable_title Extended example %} + +```yaml +# Example configuration.yaml entry +sensor: + - platform: geizhals + name: qc35 + product_id: 1453021 + description: "Bose QC35" + domain: 'geizhals.de' + regex: '\D\s(\d*)[\,|\.](\d*)' +``` diff --git a/source/_components/sensor.geo_rss_events.markdown b/source/_components/sensor.geo_rss_events.markdown new file mode 100644 index 00000000000..188e895f11a --- /dev/null +++ b/source/_components/sensor.geo_rss_events.markdown @@ -0,0 +1,107 @@ +--- +layout: page +title: GeoRSS Events Sensor +description: "Instructions on how to set up GeoRSS sensors within Home Assistant." +date: 2017-07-31 +sidebar: true +comments: false +sharing: true +footer: true +logo: rss.png +ha_category: Sensor +ha_version: 0.55 +ha_iot_class: "Cloud Polling" +--- + +The `geo_rss_events` sensor retrieves events from a GeoRSS feed and +shows information of those events filtered by distance to Home Assistant's +location and grouped by category. + +This sensor is particularly useful if events occur unexpectedly in the +vicinity of the home while the GeoRSS feed also contains many events +representing distant unrelated entries. Typical examples are bush fires +alerts or earthquakes. + +

+ +

+ +The reference point for comparing the distance is defined by `latitude` +and `longitude` in the basic configuration. + +Only entries of the feed are considered that define a location as `point` +or `polygon` in *georss.org* format or as *WGS84 latitude/longitude*. + +The data is updated every 5 minutes. + +## {% linkable_title Configuration %} + +To enable the GeoRSS events sensor, add the following lines to your +`configuration.yaml`. This is an example configuration showing bush fire +incidents from the NSW Rural Fire Service. + +```yaml +# Example configuration.yaml entry +sensor: + - platform: geo_rss_events + name: NSW Fire Service + url: http://www.rfs.nsw.gov.au/feeds/majorIncidents.xml + unit_of_measurement: 'Incidents' + categories: + - 'Emergency Warning' + - 'Watch and Act' + - 'Advice' +``` + +Configuration variables: + +- **url** (*Required*): Full URL of the GeoRSS feed. +- **name** (*Optional*): Name of the sensor used in generating the entity id. Default is 'Event Service'. +- **radius** (*Optional*): The distance in kilometres around the Home Assistant's coordinates in which events are considered. Default is: 20km. +- **categories** (*Optional*): List of event category names found in the GeoRSS feed. A separate sensor is created for each category defined. Default is to join events from all categories into an 'Any' category. +- **unit_of_measurement** (*Optional*): The type of events found in the GeoRSS feed. Default is 'Events'. + +## {% linkable_title Example Feeds %} + +**Bush Fire Alerts** + +```yaml +sensor: + - platform: geo_rss_events + name: Qld Fire and Emergency Services + url: https://www.qfes.qld.gov.au/data/alerts/bushfireAlert.xml + unit_of_measurement: 'Alerts' + - platform: geo_rss_events + name: Tas Fire Service + url: http://www.fire.tas.gov.au/Show?pageId=colBushfireSummariesRss + unit_of_measurement: 'Alerts' + - platform: geo_rss_events + name: WA Department of Fire and Emergency Services + url: https://www.emergency.wa.gov.au/data/incident_FCAD.rss + - platform: geo_rss_events + name: ACT Emergency Services Agency + url: http://www.esa.act.gov.au/feeds/currentincidents.xml +``` + + +**Earthquake Alerts** + +```yaml +sensor: + - platform: geo_rss_events + name: USGS All Earthquakes + url: https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_day.atom + categories: + - 'Past Hour' + - 'Past Day' + - platform: geo_rss_events + name: BGS Worlwide Earthquakes + url: http://www.bgs.ac.uk/feeds/worldSeismology.xml + categories: + - 'EQMH' + - platform: geo_rss_events + name: Recent significant earthquake reports (Canada) + url: http://www.earthquakescanada.nrcan.gc.ca/index-en.php?tpl_region=canada&tpl_output=rss + categories: + - 'Earthquake Report' +``` diff --git a/source/_components/sensor.gitter.markdown b/source/_components/sensor.gitter.markdown index 2ed03c0e856..55b8d29fe40 100644 --- a/source/_components/sensor.gitter.markdown +++ b/source/_components/sensor.gitter.markdown @@ -15,6 +15,8 @@ ha_release: 0.47 This `gitter` sensor allows one to monitor a [Gitter.im](https://gitter.im) chatroom for unread messages. +Visit [Gitter Developer Apps](https://developer.gitter.im/apps) to retrieve your "Personal Access Token". + To use a Gitter sensor in your installation, add the following to your `configuration.yaml` file: ```yaml diff --git a/source/_components/sensor.glances.markdown b/source/_components/sensor.glances.markdown index f730b892e54..03b25369a74 100644 --- a/source/_components/sensor.glances.markdown +++ b/source/_components/sensor.glances.markdown @@ -16,7 +16,7 @@ ha_release: 0.7.3 The `glances` sensor platform is consuming the system information provided by the [Glances](https://github.com/nicolargo/glances) API. This enables one to track remote host and display their stats in Home Assistant. -This sensors needs a running instance of `glances` on the host. The minimal supported version of `glances` is 2.3. +This sensors needs a running instance of `glances` on the host. The minimal supported version of `glances` is 2.3. To start a Glances RESTful API server on its default port 61208, the a test the following command can be used: ```bash @@ -57,6 +57,7 @@ sensor: - 'process_total' - 'process_thread' - 'process_sleeping' + - 'cpu_temp' ``` Configuration variables: @@ -79,4 +80,6 @@ Configuration variables: - **process_total**: Total number of processes - **process_thread**: Number of threads - **process_sleeping**: Number of sleeping processes + - **cpu_temp**: CPU Temperature (may not available on all platforms) +Not all platforms are able to provide all metrics. For instance `cpu_temp` is requires installing and configuring `lmsensors` in Ubuntu, and may not be available at all in other platforms. diff --git a/source/_components/sensor.google_wifi.markdown b/source/_components/sensor.google_wifi.markdown new file mode 100644 index 00000000000..76bb37400a5 --- /dev/null +++ b/source/_components/sensor.google_wifi.markdown @@ -0,0 +1,40 @@ +--- +layout: page +title: "Google Wifi" +description: "Instructions how to integrate Google Wifi/OnHub routers into Home Assistant." +date: 2017-07-15 21:22 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: System Monitor +logo: google_wifi.png +ha_iot_class: "Local Polling" +ha_release: "0.50" +--- + + +The `google_wifi` sensor platform is displaying the exposed status of a [Google Wifi](https://madeby.google.com/wifi/) (or OnHub) router. + +The sensor is able to report network status, up-time, current IP address, and firmware versions. + +To enable this sensor, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: google_wifi +``` + +Configuration variables: + +- **host** (*Optional*): The address to retrieve status from the router. Defaults to `testwifi.here` (other options include `onhub.here` and your router's IP such as `192.168.86.1`). +- **name** (*Optional*): Name to give the Google Wifi sensor. Defaults to `google_wifi`. +- **monitored_conditions** array (*Optional*): Defines the data to monitor as sensors. Defaults to all of the listed options below. + - **current_version**: Current firmware version of the router. + - **new_version**: Latest available firmware version. If router is up-to-date, this value defaults to `Latest`. + - **uptime**: Days since router has been turned on. + - **last_restart**: Date of last restart. Format is `YYYY-MM-DD HH:mm:SS`. + - **local_ip**: Local public IP address. + - **status**: Reports whether the router is or is not connected to the internet. + diff --git a/source/_components/sensor.gtfs.markdown b/source/_components/sensor.gtfs.markdown index 094a26ce1af..00243470ada 100644 --- a/source/_components/sensor.gtfs.markdown +++ b/source/_components/sensor.gtfs.markdown @@ -54,4 +54,5 @@ Configuration variables: - **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`. diff --git a/source/_components/sensor.hddtemp.markdown b/source/_components/sensor.hddtemp.markdown index d3669c7d76b..73c84fd8a19 100644 --- a/source/_components/sensor.hddtemp.markdown +++ b/source/_components/sensor.hddtemp.markdown @@ -1,7 +1,7 @@ --- layout: page title: "HDDTemp" -description: "Instructions how to integrate harddrive temperature information into Home Assistant." +description: "Instructions how to integrate hard drive temperature information into Home Assistant." date: 2016-10-28 07:00 sidebar: true comments: false @@ -26,6 +26,8 @@ To setup a HDDTemp to your installation, add the following to your `configuratio # Example configuration.yaml entry sensor: - platform: hddtemp + disks: + - /dev/sda1 ``` Configuration variables: @@ -33,4 +35,5 @@ Configuration variables: - **name** (*Optional*): Friendly name to use for the frontend. Default to "HD Temperature". - **host** (*Optional*): Host where `hddtemp` is running. Default to `localhost`. - **port** (*Optional*): Port that is used by `hddtemp` . Default to `7634`. +- **disks** (*Optional*): Disk to be monitored. Example: `/dev/sda1` diff --git a/source/_components/sensor.http.markdown b/source/_components/sensor.http.markdown index 5f912103905..c119330eb41 100644 --- a/source/_components/sensor.http.markdown +++ b/source/_components/sensor.http.markdown @@ -13,6 +13,11 @@ ha_release: pre 0.7 ha_iot_class: "Local Push" --- + +The HTTP 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. + +The sensor will then exist as long as Home Assistant is running. After a restart of Home Assistant the sensor will be gone until it is triggered again. + The URL for a sensor looks like the example below: ```bash diff --git a/source/_components/sensor.htu21d.markdown b/source/_components/sensor.htu21d.markdown new file mode 100644 index 00000000000..f81b0f6c71e --- /dev/null +++ b/source/_components/sensor.htu21d.markdown @@ -0,0 +1,109 @@ +--- +layout: page +title: "HTU21D Temperature and humidity sensor" +description: "Instructions how to integrate a HTU21D Temperature and humidity sensor into Home Assistant." +date: 2017-06-10 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raspberry-pi.png +ha_category: Sensor +ha_release: 0.48 +ha_iot_class: "Local Push" +--- + + +The `htu21d` sensor platform allows you to read the temperature and humidity from a [HTU21D sensor](http://www.datasheetspdf.com/PDF/HTU21D/779951/1) connected via [I2c](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). + +Tested devices: + +- [Raspberry Pi](https://www.raspberrypi.org/) + +To use your HTU21D sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: htu21d +``` + +Configuration variables: + +- **name** (*Optional*): The name of the sensor +- **i2c_bus** (*Optional*): I2c bus where the sensor is. Defaults to 1, for Raspberry Pi 2 and 3. + + +## {% linkable_title Customizing the sensor data %} + +Give the values friendly names and icons, add the following to your `customize:` section. + +```yaml +# Example configuration.yaml entry +customize: + sensor.htu21d_sensor_temperature: + icon: mdi:thermometer + friendly_name: "Temperature" + sensor.htu21d_sensor_humidity: + icon: mdi:weather-rainy + friendly_name: "Humidity" +``` + +To create a group, add the following to your `groups` section. + +```yaml +# Example configuration.yaml entry +group: + ambient_sensor: + name: HTU21D Environment sensor + entities: + - sensor.htu21d_sensor_temperature + - sensor.htu21d_sensor_humidity +``` + +## {% linkable_title Directions for installing smbus support on Raspberry Pi %} + +Enable I2c interface with the Raspberry Pi configuration utility: + +```bash +# pi user environment: Enable i2c interface +$ sudo raspi-config +``` + +Select `Interfacing options->I2C` choose `` and hit `Enter`, then go to `Finish` and you'll be prompted to reboot. + +Install dependencies for use the `smbus-cffi` module and enable your _homeassistant_ user to join the _i2c_ group: + +```bash +# pi user environment: Install i2c dependencies and utilities +$ sudo apt-get install build-essential libi2c-dev i2c-tools python-dev libffi-dev + +# pi user environment: Add homeassistant user to the i2c group +$ sudo addgroup homeassistant i2c + +# pi user environment: Reboot Raspberry Pi to apply changes +$ sudo reboot +``` + +### {% 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: + +```bash +$ /usr/sbin/i2cdetect -y 1 +``` + +It will output a table like this: +```text + 0 1 2 3 4 5 6 7 8 9 a b c d e f +00: -- -- -- -- -- -- -- -- -- -- -- -- -- +10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- -- +30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +40: 40 -- -- -- -- -- UU -- -- -- -- -- -- -- -- -- +50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +70: -- -- -- -- -- -- -- 77 +``` + +So you can see the sensor is present at the **0x40** address (there are more i2c sensors in that Raspberry Pi). diff --git a/source/_components/sensor.hydroquebec.markdown b/source/_components/sensor.hydroquebec.markdown index 398b442d613..18de06c9c7c 100644 --- a/source/_components/sensor.hydroquebec.markdown +++ b/source/_components/sensor.hydroquebec.markdown @@ -40,6 +40,7 @@ Configuration variables: - **password** (*Required*): Password used to log into the Hydro-Québec site. - **contract** (required since HA 4.0) Your contract number with Hydro-Québec - **monitored_variables** array (*Required*): Variables to monitor. + - **balance** : Current balance - **period_total_bill** : Current period bill - **period_length**: Current period length - **period_total_days**: Total number of days in this period diff --git a/source/_components/sensor.imap.markdown b/source/_components/sensor.imap.markdown index d6ce85c67af..34fd3df9231 100644 --- a/source/_components/sensor.imap.markdown +++ b/source/_components/sensor.imap.markdown @@ -10,7 +10,7 @@ footer: true logo: smtp.png ha_category: Sensor ha_release: 0.25 -ha_iot_class: "Local Polling" +ha_iot_class: "Cloud Push" --- @@ -31,8 +31,8 @@ sensor: Configuration variables: - **server** (*Required*): The IP address or hostname of the IMAP server. -- **port** (*Required*): The port where the server is accessible. +- **port** (*Optional*): The port where the server is accessible. - **name** (*Optional*): Name of the IMAP sensor. - **username** (*Required*): Username for the IMAP server. - **password** (*Required*): Password for the IMAP server. - +- **folder** (*Optional*): The IMAP folder to watch. diff --git a/source/_components/sensor.irish_rail_transport.markdown b/source/_components/sensor.irish_rail_transport.markdown new file mode 100644 index 00000000000..2735bad819e --- /dev/null +++ b/source/_components/sensor.irish_rail_transport.markdown @@ -0,0 +1,52 @@ +--- +layout: page +title: "Irish Rail Transport" +description: "Instructions on how to integrate timetable data for traveling on Irish Rail within Home Assistant." +date: 2017-10-15 16:50 +sidebar: true +comments: false +sharing: true +footer: true +logo: irishrail.png +ha_category: Transport +ha_iot_class: "Cloud Polling" +ha_release: 0.56 +--- + + +The `irish_rail_transport` sensor will give you the time until the next two departures (within 90 minutes) from an Irish Rail station using the RTPI information. + +A station name is the full station name as specified on the Irish Rail search site, for example, `Tara Street` or `Dublin Connolly`. + +To activate the sensor add the data to your `configuration.yaml` file as shown in the example: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: irish_rail_transport + station: "Tara Street" + name: "To Greystones" +``` + +Configuration variables: + +- **station** (*Required*): The name of the station. +- **direction** (*Optional*): The direction of the train. Typically either `Northbound` or `Southbound`. +- **destination** (*Optional*): The name of the destination station to filter by. +- **stops_at** (*Optional*): An optional filter based on the name of a station that the train stops at. +- **name** (*Optional*): A friendly name for this sensor. + +Using the `stops_at` option will cause an extra request per train found. Therefore, if you are looking at a busy station, it is recommended that you also use at least one other filter. For example: + +```yaml +# Example full configuration.yaml entry +sensor: + - platform: irish_rail_transport + station: "Tara Street" + direction: Southbound + destination: Greystones + stops_at: "Dun Laoghaire" + name: "To Greystones" +``` + +The above example will show the next 2 `Southbound` trains that leave `Tara Street` station, going to `Greystones` via `Dun Laoghaire`: diff --git a/source/_components/sensor.knx.markdown b/source/_components/sensor.knx.markdown index c08562b2570..d44e76e2e30 100644 --- a/source/_components/sensor.knx.markdown +++ b/source/_components/sensor.knx.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: knx.png -ha_category: DIY +ha_category: Sensor ha_release: 0.29 ha_iot_class: "Local Push" --- @@ -17,39 +17,22 @@ The `knx` sensor platform allows you to monitor [KNX](http://www.knx.org) sensor The `knx` component must be configured correctly, see [KNX Component](/components/knx). -There is currently support for the following KNX data point types: - -| Condition | KNX Datapoint Type | Unit of measurement | Data type | -| :-------------------|:--------------------|:--------------------|:-------------| -| Temperature | 9.001 | °C | 2 Byte Float | -| Speed (Wind speed) | 9.005 | m/s | 2 Byte Float | -| Illuminance (Lux) | 9.004 | Lux | 2 Byte Float | - -To use your KNX sensor in your installation, add the following to your `configuration.yaml` file: +To use your KNX sensor in your installation, add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry sensor: - platform: knx - type: temperature - address: 1/0/3 - + name: Heating.Valve1 + address: '2/0/0' + type: 'percent' - platform: knx - name: Wind speed - type: speed_ms - address: 1/0/0 - - - platform: knx - name: Lux - type: illuminance - address: 1/0/1 + name: Kitchen.Temperature + address: '6/2/1' + type: 'temperature' ``` -Configuration variables: - -- **type** (*Required*): The type of the sensor. See table above for available options. -- **address** (*Required*): The address of the sensor on the bus. -- **name** (*Optional*): The name to use in the frontend. -- **minimum** (*Optional*): Minimum sensor value who gets processed. Defaults to a hardcoded default values. -- **maximum** (*Optional*): Maximum sensor value who gets processed. Defaults to a hardcoded default. +- **name** (*Optional*): A name for this device used within Home Assistant. +- **address**: KNX group address of the sensor. +- **type** (Optional): "percent", "temperature", "illuminance", "speed_ms", "current". diff --git a/source/_components/sensor.lacrosse.markdown b/source/_components/sensor.lacrosse.markdown new file mode 100644 index 00000000000..d024d174403 --- /dev/null +++ b/source/_components/sensor.lacrosse.markdown @@ -0,0 +1,99 @@ +--- +layout: page +title: "LaCrosse Sensor" +description: "Instructions how to integrate LaCrosse sensor data received from Jeelink into Home Assistant." +date: 2017-10-29 15:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Sensor +ha_release: 0.58 +ha_iot_class: "Local Polling" +--- + +The `lacrosse` sensor platform is using the data provided by a [Jeelink](https://www.digitalsmarties.net/products/jeelink) USB dongle or this [Arduino sketch](https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/36_LaCrosse-LaCrosseITPlusReader.zip). + +#### {% linkable_title Tested Devices %} + +- Technoline TX 29 IT (temperature only) +- Technoline TX 29 DTH-IT (including humidity) + +## {% linkable_title Setup %} + +Since the sensor change their ID after each powercycle/battery change you can check what sensor IDs are availble by using the command-line tool `pylacrosse` from the pylacrosse package. + +```bash +$ sudo pylacrosse -D /dev/ttyUSB0 scan +``` +To use your `lacrosse` compatible sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: lacrosse + sensors: + sensor_identifier: + type: SENSOR_TYPE + id: SENSOR_ID +``` + +{% configuration %} + device: + description: The serial baudrate. + required: true + type: string + default: /dev/ttyUSB0 + baud: + description: The serial baudrate. + required: true + type: int + default: 57600 + sensors: + description: A list of your sensors. + required: true + type: map + keys: + name: + description: The name of the sensor. + required: false + type: string + type: + description: "The type of the sensor. Options: `battery`, `humidity`, `temperature`" + required: true + type: string + id: + description: The LaCrosse Id of the sensor. + required: true + type: int +{% endconfiguration %} + + +## {% linkable_title Examples %} + +To setup a lacrosse sensor with multiple sensors, add the following to your `configuration.yaml` file: + +{% raw %} +```yaml +# Example configuration.yaml entry +sensor: + - platform: lacrosse + device: /dev/ttyUSB0 + baud: 57600 + sensors: + kitchen_humidity: + name: Kitchen Humidity + type: humidity + id: 72 + kitchen_temperature: + name: Kitchen Temperature + type: temperature + id: 72 + kitchen_lacrosse_battery: + name: Kitchen Sensor Battery + type: battery + id: 72 +``` +{% endraw %} + diff --git a/source/_components/sensor.london_air.markdown b/source/_components/sensor.london_air.markdown new file mode 100644 index 00000000000..64e94ef24e4 --- /dev/null +++ b/source/_components/sensor.london_air.markdown @@ -0,0 +1,78 @@ +--- +layout: page +title: "London Air Quality" +description: "Display the current status of London air quality by area and pollution type." +date: 2017-08-02 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: waqi.png +ha_category: Health +ha_iot_class: "Cloud Polling" +ha_release: 0.52 +--- + + +The `london_air` component [queries](http://api.erg.kcl.ac.uk/AirQuality/Hourly/MonitoringIndex/GroupName=London/Json) the London air quality [data feed](https://www.londonair.org.uk/LondonAir/API/) provided by Kings College London. A single sensor will be added for each `location` ([local authority district or borough](https://en.wikipedia.org/wiki/List_of_London_boroughs)) specified in the configuration file. The state of each sensor is the overall air quality in that borough. Note that only 28 of the 32 boroughs have data available. + +Boroughs can have multiple monitoring sites at different geographical positions within the borough, and each of those sites can monitor up to six different kinds of pollutant. The pollutants are described [here](http://api.erg.kcl.ac.uk/AirQuality/Information/Species/Json) and are Carbon Monoxide ([CO2](http://www.londonair.org.uk/LondonAir/guide/WhatIsCO.aspx)), Nitrogen Dioxide ([NO2](http://www.londonair.org.uk/LondonAir/guide/WhatIsNO2.aspx)), Ozone ([O3](http://www.londonair.org.uk/LondonAir/guide/WhatIsO3.aspx)), Sulphur Dioxide ([SO2](http://www.londonair.org.uk/LondonAir/guide/WhatIsSO2.aspx)), PM2.5 & PM10 [particulates](http://www.londonair.org.uk/LondonAir/guide/WhatIsPM.aspx). The `latitude` and `longitude` of each site is accessible through a `data` attribute of the sensor, as are details about the pollutants monitored at that site. The `sites` attribute of a sensor displays how many monitoring sites that sensor covers. The `updated` attribute of a sensor states when the data was last published. Nominally data is published hourly, but in my experience this can vary. To limit the number of requests made by the sensor, a single API request is made every 30 minutes. + +To add sensors to Home-assistant for all possible areas/boroughs add the following to your `configuration.yaml` file: + + +```yaml +# Example configuration.yaml entry for a single sensor +sensor: + - platform: london_air + locations: + - Barking and Dagenham + - Bexley + - Brent + - Camden + - City of London + - Croydon + - Ealing + - Enfield + - Greenwich + - Hackney + - Hammersmith and Fulham + - Haringey + - Harrow + - Havering + - Hillingdon + - Islington + - Kensington and Chelsea + - Kingston + - Lambeth + - Lewisham + - Merton + - Redbridge + - Richmond + - Southwark + - Sutton + - Tower Hamlets + - Wandsworth + - Westminster +``` + +Configuration variables: + +- **locations** array (*Required*): At least one entry required. + +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](https://home-assistant.io/components/sensor.template/) can then be added to display these attributes, for example: + +```yaml +# Example template sensors +- platform: template + sensors: + updated: + friendly_name: 'Updated' + value_template: {% raw %}'{{states.sensor.merton.attributes.updated}}'{% endraw %} + merton_pm10: + friendly_name: 'Merton PM10' + value_template: {% raw %}'{{states.sensor.merton.attributes.data[0].pollutants[0].summary}}'{% endraw %} + westminster_s02: + friendly_name: 'Westminster S02' + value_template: {% raw %}'{{states.sensor.westminster.attributes.data[0].pollutants[3].summary}}'{% endraw %} +``` diff --git a/source/_components/sensor.london_underground.markdown b/source/_components/sensor.london_underground.markdown new file mode 100644 index 00000000000..45c7cce409b --- /dev/null +++ b/source/_components/sensor.london_underground.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "London Underground" +description: "Display the current status of London underground & overground lines within Home Assistant." +date: 2017-07-15 18:45 +sidebar: true +comments: false +sharing: true +footer: true +logo: london_underground.png +ha_category: Transport +ha_iot_class: "Cloud Polling" +ha_release: 0.49 +--- + + +The `london_underground` sensor will display the status of London underground lines, as well as the Overground, DLR and Tfl rail. + + +```yaml +# Example configuration.yaml entry +sensor: + - platform: london_underground + line: + - Bakerloo + - Central + - Circle + - District + - DLR + - Hammersmith & City + - Jubilee + - London Overground + - Metropolitan + - Northern + - Piccadilly + - TfL Rail + - Victoria + - Waterloo & City +``` + +Configuration variables: + +- **line** (*Required*): Enter the name of at least one line. + +Powered by TfL Open Data [TFL](https://api.tfl.gov.uk/). diff --git a/source/_components/sensor.loop_energy.markdown b/source/_components/sensor.loop_energy.markdown index f78fa70d7f2..55f8770b828 100644 --- a/source/_components/sensor.loop_energy.markdown +++ b/source/_components/sensor.loop_energy.markdown @@ -14,11 +14,11 @@ ha_iot_class: "Cloud Push" --- -Integrate your [Loop Energy](https://www.your-loop.com/) meter information into Home Assistant. To use this sensor you need the the client serial number and secret keys for your devices. +Integrate your [Loop Energy](https://www.your-loop.com/) meter information into Home Assistant. To use this sensor you need the client serial number and secret keys for your devices. The library used to get the data isn't officially supported and the only way to get the keys is to log into loop energy's website and type a command into your browser console. -To do this log into [Loop Energy](https://www.your-loop.com/). Once you're logged in you should be able see see your live readings on the webpage. +To do this log into [Loop Energy](https://www.your-loop.com/). Once you're logged in you should be able see your live readings on the web page. You can then open your browser's console window, how you do this varies by browser but in Chrome you click on `More Tools / Developer Tools' and click on the console window. You then type: diff --git a/source/_components/sensor.luftdaten.markdown b/source/_components/sensor.luftdaten.markdown new file mode 100644 index 00000000000..5e4b7cde98f --- /dev/null +++ b/source/_components/sensor.luftdaten.markdown @@ -0,0 +1,80 @@ +--- +layout: page +title: "Luftdaten Sensor" +description: "Instructions how to setup Luftdaten sensor in Home Assistant." +date: 2017-11-01 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: luftdaten.png +ha_category: Health +ha_release: 0.57 +ha_iot_class: "Cloud Polling" +--- + +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. + +- 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/). + +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 + resource: + description: The URL of the API endpoint. Usually this has not to be changed. + required: false + default: https://api.luftdaten.info/v1/sensor/ + type: string + verify_ssl: + description: Verify SSL connection. + required: false + default: true + type: boolean + 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). + required: false + type: string + P2: + description: Show the particle sensors (particles 2.5 microns and below). + required: false + type: string + temperature: + description: Display the temperature from a weather sensor. + required: false + type: string + humidity: + description: Display the humidity from a weather sensor. + required: false + type: string +{% endconfiguration %} + diff --git a/source/_components/sensor.markdown b/source/_components/sensor.markdown index fc8a35d9269..9f446e5266e 100644 --- a/source/_components/sensor.markdown +++ b/source/_components/sensor.markdown @@ -11,6 +11,6 @@ footer: true Sensors are gathering information about states and conditions. -Home Assistant currently supports a wide range of sensors. They are able to display information which are provides by Home assistant directly, are gathered from webservices, and, of course, physical devices. Please check the sidebar for a full list of supported sensor platforms. +Home Assistant currently supports a wide range of sensors. They are able to display information which are provides by Home assistant directly, are gathered from web services, and, of course, physical devices. Please check the sidebar for a full list of supported sensor platforms. diff --git a/source/_components/sensor.metoffice.markdown b/source/_components/sensor.metoffice.markdown index 98c331b8504..fc47f5f5c9b 100644 --- a/source/_components/sensor.metoffice.markdown +++ b/source/_components/sensor.metoffice.markdown @@ -33,6 +33,7 @@ sensor: - wind_direction - wind_gust - visibility + - visibility_distance - uv - precipitation - humidity @@ -46,7 +47,7 @@ Configuration variables:

This sensor is an alternative to the [`metoffice`](/components/weather.metoffice/) weather platform. -The weather platform is easier to configure but less customisable. +The weather platform is easier to configure but less customizable.

[datapoint]: http://www.metoffice.gov.uk/datapoint diff --git a/source/_components/sensor.mhz19.markdown b/source/_components/sensor.mhz19.markdown index 0d4d92302b1..25cd6405ce7 100644 --- a/source/_components/sensor.mhz19.markdown +++ b/source/_components/sensor.mhz19.markdown @@ -13,7 +13,7 @@ ha_release: 0.27 ha_iot_class: "Local Polling" --- -The MH-Z19 is a small nondispersive infrared sensor that can measure CO2 level. High CO2 levels can lead to drowsiness, poor concentration, loss of attention or increased heart rate. The CO2 level outside is around 400ppm, but inside levels can reach between 1000 and 5000 ppm. High CO2 levels indicate that you should increase ventilation. +The MH-Z19 is a small non-dispersive infrared sensor that can measure CO2 level. High CO2 levels can lead to drowsiness, poor concentration, loss of attention or increased heart rate. The CO2 level outside is around 400ppm, but inside levels can reach between 1000 and 5000 ppm. High CO2 levels indicate that you should increase ventilation. Check out the [Open Home Automation web site](https://www.open-homeautomation.com/2016/08/24/monitor-co2-levels-in-your-house/) for a quick guide how to connect the sensor to your PC or Raspberry Pi. diff --git a/source/_components/sensor.miflora.markdown b/source/_components/sensor.miflora.markdown index 9d64df6df01..67f6ecd25f3 100644 --- a/source/_components/sensor.miflora.markdown +++ b/source/_components/sensor.miflora.markdown @@ -39,7 +39,7 @@ sensor: ``` - **mac** (*Required*): The MAC address of your sensor. -- **monitored_conditions** array (*Optional*): The paramaters that should be monitored (defaults to monitoring all parameters). +- **monitored_conditions** array (*Optional*): The parameters that should be monitored (defaults to monitoring all parameters). - **moisture**: Moisture in the soil. - **light**: Brightness at the sensor's location. - **temperature**: Temperature at the sensor's location. @@ -51,7 +51,7 @@ sensor: - **timeout** (*Optional*): Define the timeout value in seconds when polling (defaults to 10 if not defined) - **retries** (*Optional*): Define the number of retries when polling (defaults to 2 if not defined) - **cache_value** (*Optional*): Define cache expiration value in seconds (defaults to 1200 if not defined) -- **adapter** (*Optional*): Define the bluetooth adapter to use (defaults to hci0). Run `hciconfig` to get a list of available adapters. +- **adapter** (*Optional*): Define the Bluetooth adapter to use (defaults to hci0). Run `hciconfig` to get a list of available adapters. Note that by default the sensor is only polled once every 15 minutes. This means with the `median: 3` setting will take as least 30 minutes before the sensor will report a value after a Home Assistant restart. As the values usually change very slowly, this isn't a big problem. Reducing polling intervals will have a negative effect on the battery life. diff --git a/source/_components/sensor.min_max.markdown b/source/_components/sensor.min_max.markdown index ec6907c1ca5..db4db382a48 100644 --- a/source/_components/sensor.min_max.markdown +++ b/source/_components/sensor.min_max.markdown @@ -14,9 +14,9 @@ ha_release: "0.31" --- -The `min_max` sensor platform is consuming the state from other sensors and determine the minimum, maximum, and the mean of the collected states. The sensor will always show you the highest/lowest value which was received from your all monitored sensors. If you have spikes in your values, it's recommended filter/equalize your values with a [statistics sensor](/components/sensor.statistics/) first. +The `min_max` sensor platform consumes the state from other sensors to determine the minimum, maximum, and the mean of the collected states. The sensor will always show you the lowest/highest value which was received from all monitored sensors. If you have spikes in your values, it's recommended to filter/equalize your values with a [statistics sensor](/components/sensor.statistics/) first. -It's an alternative to the [template sensor](/components/sensor.template/)'s `value_template:` to get the average of multiple sensors. +This sensor is an alternative to the [template sensor](/components/sensor.template/)'s `value_template:` to get the average of multiple sensors. ```yaml {% raw %}{{ ((float(states.sensor.kitchen_temperature.state) + @@ -25,9 +25,9 @@ It's an alternative to the [template sensor](/components/sensor.template/)'s `va }}{% endraw %} ``` -Sensors with an unknown state will be ignored in the calculation. If the unit of measurement of the sensors differs, the `min_max` sensor will go to an error state where the value is `UNKNOWN` and the unit of measurement is `ERR`. +Sensors with an unknown state will be ignored in the calculation. If the unit of measurement of the sensors differs, the `min_max` sensor will go to an error state where the value is `UNKNOWN` and unit of measurement is `ERR`. -To enable the minimum/maximum sensor, add the following lines to your `configuration.yaml`: +To enable the `min_max` sensor, add the following lines to your `configuration.yaml`: ```yaml # Example configuration.yaml entry diff --git a/source/_components/sensor.modbus.markdown b/source/_components/sensor.modbus.markdown index 62e5eae058c..fd3b7157560 100644 --- a/source/_components/sensor.modbus.markdown +++ b/source/_components/sensor.modbus.markdown @@ -56,3 +56,27 @@ Configuration variables: - **offset** (*Optional*): Final offset (output = scale * value + offset), default 0 - **precision** (*Optional*): Number of valid decimals, default 0 - **data_type** (*Optional*): Response representation (int, float). If float selected, value will be converted to IEEE 754 floating point format. default int + +It's possible to change the default 30 seconds scan interval for the sensor updates as shown in the [Platform options](/docs/configuration/platform_options/#scan-interval) documentation. + +### {% linkable_title Full example %} + +Example a temperature sensor with a 10 seconds scan interval: + +```yaml +sensor: +- platform: modbus + scan_interval: 10 + registers: + - name: Room_1 + slave: 10 + register: 0 + register_type: holding + update_interval: 2.5 + unit_of_measurement: °C + count: 1 + scale: 0.1 + offset: 0 + precision: 1 + data_type: int +``` diff --git a/source/_components/sensor.moldindicator.markdown b/source/_components/sensor.mold_indicator.markdown similarity index 90% rename from source/_components/sensor.moldindicator.markdown rename to source/_components/sensor.mold_indicator.markdown index eda7abafbbf..74d91d671dc 100644 --- a/source/_components/sensor.moldindicator.markdown +++ b/source/_components/sensor.mold_indicator.markdown @@ -29,9 +29,9 @@ sensor: Configuration variables: -- **indoor_temp_sensor** (*Required*): The enditiy ID of the indoor temperature sensor. -- **indoor_humidity_sensor** (*Required*): The enditiy ID of the indoor humidity sensor. -- **outdoor_temp_sensor** (*Required*): The enditiy ID of the outdoor temperature sensor. +- **indoor_temp_sensor** (*Required*): The entity ID of the indoor temperature sensor. +- **indoor_humidity_sensor** (*Required*): The entity ID of the indoor humidity sensor. +- **outdoor_temp_sensor** (*Required*): The entity ID of the outdoor temperature sensor. - **calibration_factor** (*Required*): Needs to be calibrated to the critical point in the room. In this case, the weather forecast temperature sensor is used for the outside temperature. diff --git a/source/_components/sensor.moon.markdown b/source/_components/sensor.moon.markdown index bcd2c780121..327d2214312 100644 --- a/source/_components/sensor.moon.markdown +++ b/source/_components/sensor.moon.markdown @@ -24,4 +24,4 @@ sensor: - platform: moon ``` This sensor will return one of the following values: -`Full moon`, `Last quarter`, `First quarter` or `New moon`. +`New moon`, `Waxing crescent`, `First quarter`, `Waxing gibbous`, `Full moon`, `Waning gibbous`, `Last quarter` or `Waning crescent` . diff --git a/source/_components/sensor.mopar.markdown b/source/_components/sensor.mopar.markdown new file mode 100644 index 00000000000..eef49e8f63a --- /dev/null +++ b/source/_components/sensor.mopar.markdown @@ -0,0 +1,54 @@ +--- +layout: page +title: "Mopar" +description: "Instructions on how to integrate Mopar vehicles into Home Assistant." +date: 2017-08-30 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: mopar.png +ha_category: Sensor +featured: false +ha_release: 0.53 +ha_iot_class: "Cloud Polling" +--- + +The `mopar` sensor provides the following for owners of FCA vehicles with a uConnect subscription: + +- Sensor per vehicle with vehicle health report and other meta-data +- Service for remote commands: Lock/unlock, Engine on/off, Horn & lights + +Be sure you have a [mopar.com](http://mopar.com) account with your vehicle(s) registered by VIN. You must also have a current uConnect subscription. + +To enable this sensor, add the following lines to your `configuration.yaml`. + +```yaml +sensor: + - platform: mopar + username: + password: + pin: +``` + +Configuration options for the Mopar sensor: + +- **username** (*Required*): Your mopar.com username. +- **password** (*Required*): Your mopar.com password. +- **pin** (*Required*): Your uConnect pin. + +## {% linkable_title Service %} + +Call the `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`. + +Example data: + +```json +{ + "vehicle_index": 0, + "command": "unlock" +} +``` diff --git a/source/_components/sensor.mqtt_room.markdown b/source/_components/sensor.mqtt_room.markdown index 4e6446cc5d3..598dafefb16 100644 --- a/source/_components/sensor.mqtt_room.markdown +++ b/source/_components/sensor.mqtt_room.markdown @@ -35,7 +35,7 @@ Configuration variables: - **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 `away` if there were no updates. `0` disables the check and is the default. +- **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. Example JSON that should be published to the room topics: diff --git a/source/_components/sensor.mvglive.markdown b/source/_components/sensor.mvglive.markdown index 8d8dad582ae..d3b10f18822 100644 --- a/source/_components/sensor.mvglive.markdown +++ b/source/_components/sensor.mvglive.markdown @@ -34,7 +34,7 @@ Configuration variables: - **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. - - **name** (*Optional*): You can customise the name of the sensor, which defaults to the station name. + - **name** (*Optional*): You can customize the name of the sensor, which defaults to the station name. ## {% linkable_title Examples %} ### {% linkable_title Full configuration %} diff --git a/source/_components/sensor.mysensors.markdown b/source/_components/sensor.mysensors.markdown index 6324f833db7..06d90e74f87 100644 --- a/source/_components/sensor.mysensors.markdown +++ b/source/_components/sensor.mysensors.markdown @@ -64,7 +64,7 @@ S_WATER_QUALITY | V_TEMP, V_PH, V_ORP, V_EC Some sensor value types are not specific for a certain sensor type. These do not have a default unit of measurement in Home Assistant. For example, the V_LEVEL type can be used for different sensor types, dust, sound, vibration etc. -By using V_UNIT_PREFIX, it's possible to set a custom unit for any sensor. The string value that is sent for V_UNIT_PREFIX will be used in preference to any other unit of measurement, for the defined sensors. V_UNIT_PREFIX can't be used as a standalone sensor value type. Sending a supported value type and value from the tables above is also required. V_UNIT_PREFIX is available with MySensors version 1.5 and later. +By using V_UNIT_PREFIX, it's possible to set a custom unit for any sensor. The string value that is sent for V_UNIT_PREFIX will be used in preference to any other unit of measurement, for the defined sensors. V_UNIT_PREFIX can't be used as a stand-alone sensor value type. Sending a supported value type and value from the tables above is also required. V_UNIT_PREFIX is available with MySensors version 1.5 and later. For more information, visit the [serial api] of MySensors. diff --git a/source/_components/sensor.neato.markdown b/source/_components/sensor.neato.markdown deleted file mode 100644 index 929135c3321..00000000000 --- a/source/_components/sensor.neato.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Neato Robotics Sensor" -description: "Instructions how to integrate a Neato Botvac Connected sensors within Home Assistant." -date: 2016-11-09 20:11 -sidebar: true -comments: false -sharing: true -footer: true -logo: neato.png -ha_category: Sensor -ha_release: 0.33 -ha_iot_class: "Cloud Polling" ---- - -The `neato` sensor platform allows you to watch status and battery of your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). -The status sensor will contain attributes on the robots last clean session. - -To add `neato` sensors to your installation, follow instructions in [Neato component](/components/neato/). diff --git a/source/_components/sensor.nederlandse_spoorwegen.markdown b/source/_components/sensor.nederlandse_spoorwegen.markdown new file mode 100644 index 00000000000..b4745a3fb65 --- /dev/null +++ b/source/_components/sensor.nederlandse_spoorwegen.markdown @@ -0,0 +1,51 @@ +--- +layout: page +title: "Nederlandse Spoorwegen" +description: "Instructions how to integrate timetable data for travelling by train in the Netherlands within Home Assistant." +date: 2017-10-25 13:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: nederlandse_spoorwegen.png +ha_category: Transport +ha_iot_class: "Cloud Polling" +ha_release: "0.57" +--- + + +This sensor will provide you with time table information of the [Nederlandse Spoorwegen](https://www.ns.nl/) train service in the Netherlands. + +You must create an application [here](https://www.ns.nl/ews-aanvraagformulier/) to obtain a `password`. + +Add the data to your `configuration.yaml` file as shown in the example: + +```yaml +# Example configuration.yaml entry +sensor: +- platform: nederlandse_spoorwegen + email: you@example.com + password: !secret ns_password + routes: + - name: Rotterdam-Amsterdam + from: Rtd + to: Asd + - name: Groningen-Zwolle-Maastricht + from: Gn + to: Mt + via: Zl +``` + +Configuration variables: + +- **email** (*Required*): The email address you used to request the API password. +- **password** (*Required*): The API password provided by the Nederlandse Spoorwegen. +- **routes** array (*Required*): List of travelling routes. + - **name** (*Required*): Name of the route. + - **from** (*Required*): The start station. + - **to** (*Required*): Direction of the travelling. + - **via** (*Optional*): Optional other station you wish to visit in between. + +The data are coming from [Nederlandse Spoorwegen](https://www.ns.nl/). + +Station codes must be used and can be looked up [here](https://nl.wikipedia.org/wiki/Lijst_van_spoorwegstations_in_Nederland). diff --git a/source/_components/sensor.nest.markdown b/source/_components/sensor.nest.markdown index f9d08bf2d1f..37e5d83d5a5 100644 --- a/source/_components/sensor.nest.markdown +++ b/source/_components/sensor.nest.markdown @@ -47,6 +47,6 @@ The following conditions are available by device: - Nest Protect: - co\_status - smoke\_status - - batter\_health + - battery\_health - Nest Camera: none diff --git a/source/_components/sensor.netatmo.markdown b/source/_components/sensor.netatmo.markdown index 398a341a607..14e71e985fe 100644 --- a/source/_components/sensor.netatmo.markdown +++ b/source/_components/sensor.netatmo.markdown @@ -42,7 +42,7 @@ sensor: Configuration variables: - **station** (*Optional*): The name of the weather station. Needed if several stations are associated with the account. -- **modules** (*Required*): Modules to use. Multiple entries allowed. Please checkthe next section about how to retrieve the module names. +- **modules** (*Required*): Modules to use. Multiple entries allowed. Please check the next section about how to retrieve the module names. - **module_name** array (*Required*): Name of the module. - **temperature**: Current temperature. - **co2**: CO2 concentration in ppm. @@ -52,10 +52,10 @@ Configuration variables: - **rain**: Estimated rainfall for today in mm. - **sum_rain_1**: Rainfall in the last hour in mm. - **sum_rain_24**: Rainfall in mm from 00:00am - 23:59pm. - - **WindAngle**: Wind angle - - **WindStrength**: Wind strength - - **GustAngle**: Wind gust angle - - **GustStrength**: Wind gust strength + - **windangle**: Wind angle + - **windstrength**: Wind strength + - **gustangle**: Wind gust angle + - **guststrength**: Wind gust strength - **min_temp**: Min temperature for today - **max_temp**: Max temperature for today - **rf_status**: Current radio status per module. (90=low, 60=highest) @@ -69,4 +69,3 @@ You can find your modules name in your [online NetAtmo account](https://my.netat

- diff --git a/source/_components/sensor.netdata.markdown b/source/_components/sensor.netdata.markdown index 3d2356af58a..70df53e9c53 100644 --- a/source/_components/sensor.netdata.markdown +++ b/source/_components/sensor.netdata.markdown @@ -41,4 +41,15 @@ Configuration variables: - 'system_load': System Load 15 min - 'system_io_in': System I/O In - 'system_io_out': System I/O Out - + - 'ipv4_in': Amount of inbound IPv4 packets per second + - 'ipv4_out': Amount of outbound IPv4 packets per second + - 'disk_free': Free disk space + - 'cpu_iowait': CPU spent spent waiting for IO operations + - 'cpu_user': CPU time spent executing user tasks + - 'cpu_system': CPU time spent executing system tasks + - 'cpu_softirq': CPU time spent servicing soft interrupts + - 'cpu_guest': CPU time spent on guest tasks (such as VMs) + - 'uptime': Time (in seconds) since last boot + - 'packets_received': Amount of packets received + - 'packets_sent': Amount of packets sent + - 'connections': Total active connections diff --git a/source/_components/sensor.nzbget.markdown b/source/_components/sensor.nzbget.markdown index 6ca6fb85274..ad05e14fd0c 100644 --- a/source/_components/sensor.nzbget.markdown +++ b/source/_components/sensor.nzbget.markdown @@ -36,7 +36,7 @@ Configuration variables: - **name** (*Optional*): The prefix to use for your sensor. Defaults to NZBGet. - **username** (*Optional*): The username to access your NZBGet installation. - **password** (*Optional*): The password to access your NZBGet installation. -- **monitored_variables** arrary (*Required*): List of monitored details. +- **monitored_variables** array (*Required*): List of monitored details. - **article_cache**: Number of cached articles. - **average_download_rate**: Average download rate - **download_paused**: Paused downloads diff --git a/source/_components/sensor.octoprint.markdown b/source/_components/sensor.octoprint.markdown index 149c48a7b41..129660a2f84 100644 --- a/source/_components/sensor.octoprint.markdown +++ b/source/_components/sensor.octoprint.markdown @@ -39,5 +39,9 @@ Configuration variables: - **monitored_conditions** array (*Required*): States to monitor. - **Current State**: Text of current state) - **Temperatures**: Temperatures of all available tools, eg. `print`, `head`, `print bed`, etc. These will be displayed as `tool0`, `tool1`, or `toolN` please refer to your OctoPrint frontend to associate the tool number with an actual device. - - **Job Percentage**: + - **Job Percentage**: Percentage of the job. + +

+If you are tracking temperature it is recommended to set `bed` and/or `number_of_tools` in your octoprint configuration. This will allow the octoprint sensors to load if the printer is offline during Home Assistant startup. +

diff --git a/source/_components/sensor.onewire.markdown b/source/_components/sensor.onewire.markdown index 038bbb6c075..aaa616d8dab 100644 --- a/source/_components/sensor.onewire.markdown +++ b/source/_components/sensor.onewire.markdown @@ -2,7 +2,7 @@ layout: page title: "One wire Sensor" description: "Instructions how to integrate One wire (1-wire) sensors into Home Assistant." -date: 2016-01-17 07:15 +date: 2017-09-15 10:10 sidebar: true comments: false sharing: true @@ -22,8 +22,37 @@ Supported devices: - [DS1822](https://datasheets.maximintegrated.com/en/ds/DS1822.pdf) - [DS1825](https://datasheets.maximintegrated.com/en/ds/DS1825.pdf) - [DS28EA00](https://datasheets.maximintegrated.com/en/ds/DS28EA00.pdf) temperature sensors +- [DS2406/TAI-8570](https://datasheets.maximintegrated.com/en/ds/DS2406.pdf) Temperature and pressure sensor made by AAG +- [DS2438/B1-R1-A](https://datasheets.maximintegrated.com/en/ds/DS2438.pdf) Temperature, pressure and humidity sensor by AAG -The 1-Wire bus can be connected directly to the IO pins of Raspberry Pi or using dedicated interface adapter (e.g [DS9490R](https://datasheets.maximintegrated.com/en/ds/DS9490-DS9490R.pdf)). When an interface adapter is used, sensors can be accessed on Linux hosts via [owfs 1-Wire file system](http://owfs.org/). When using an interface adapter and the owfs, the 'mount_dir' option must be configured to correspond a directory, where owfs device tree has been mounted. If you are using Raspberry Pi and IO pin connected bus setup, don't use the 'mount_dir' option. +The 1-Wire bus can be connected directly to the IO pins of Raspberry Pi or using dedicated interface adapter (e.g [DS9490R](https://datasheets.maximintegrated.com/en/ds/DS9490-DS9490R.pdf)). + +#### Raspberry Pi setup +In order ot 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. + +#### Interface adapter setup +When an interface adapter is used, sensors can be accessed on Linux hosts via [owfs 1-Wire file system](http://owfs.org/). When using an interface adapter and the owfs, the `mount_dir` option must be configured to correspond a directory, where owfs device tree has been mounted. + +

+This component has been modified to work with devices with multiple sensors which will cause a discontinuity in recorded values. Existing devices will receive a new ID and therefore show up as new devices. +If you wish to maintain continuity it can be resolved in the database by renaming the old devices to the new names. + +Connect to your database using the instructions from [home-assistant.io/docs/backend/database/](https://home-assistant.io/docs/backend/database/). Check the names of sensors: + +```sql +SELECT entity_id, COUNT(*) as count FROM states GROUP BY entity_id ORDER BY count DESC LIMIT 10; +``` +Alter the names of sensors using the following examples: + +```sql +UPDATE states SET entity_id='sensor._temperature' WHERE entity_id LIKE 'sensor.%' AND attributes LIKE '%\u00b0C%'; +UPDATE states SET entity_id='sensor._pressure' WHERE entity_id LIKE 'sensor.%' AND attributes LIKE '%mb%'; +UPDATE states SET entity_id='sensor._humidity' WHERE entity_id LIKE 'sensor.%' AND attributes LIKE '%%%' ESCAPE ''; +``` +Remember to replace `` with the actual name of the sensor as seen in the `SELECT` query. +

+ +#### Home Assistant setup To enable One wire sensors in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.openhardwaremonitor.markdown b/source/_components/sensor.openhardwaremonitor.markdown new file mode 100644 index 00000000000..680a5f20d62 --- /dev/null +++ b/source/_components/sensor.openhardwaremonitor.markdown @@ -0,0 +1,42 @@ +--- +layout: page +title: "Open Hardware Monitor Sensor" +description: "Instructions how to integrate Open Hardware Monitor within Home Assistant." +date: 2017-06-16 00:00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: openhardwaremonitor.png +ha_category: System Monitor +ha_release: 0.48 +ha_iot_class: "Local Polling" +--- + + +The `openhardwaremonitor` platform uses your [Open Hardware Monitor](http://openhardwaremonitor.org/) installation as a source for sensors that will display system information. + +To add Open Hardware Monitor to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: openhardwaremonitor + host: IP_ADDRESS +``` + +{% configuration %} + host: + description: The IP address or hostname of the system where Open Hardware Monitor is running. + required: true + type: string + port: + description: The port of your Open Hardware Monitor API. Defaults to 8085. + required: false + type: int +{% endconfiguration %} + +

+OpenHardwareMonitor must be running on the host, with "Remote web server" active. +You also need to open an inbound port for (TCP 8085) in the advanced firewall settings. +

diff --git a/source/_components/sensor.otp.markdown b/source/_components/sensor.otp.markdown new file mode 100644 index 00000000000..2381fa180d7 --- /dev/null +++ b/source/_components/sensor.otp.markdown @@ -0,0 +1,52 @@ +--- +layout: page +title: "OTP Sensor" +description: "Instructions how to add One-Time Password (OTP) sensors into Home Assistant." +date: 2017-07-04 07:00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Sensor +ha_iot_class: "Local Polling" +ha_release: 0.49 +--- + +The `otp` sensor generates One-Time Passwords according to [RFC6238](https://tools.ietf.org/html/rfc6238) that is compatible with most OTP generators available, including Google Authenticator. You can use this when building custom security solutions and want to use "rolling codes", that change every 30 seconds. + +To enable the OTP sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: otp + token: SHARED_SECRET_TOKEN +``` + +Configuration variables: + +- **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `OTP Sensor`. +- **token** (*Required*): The shared secret you use in your OTP generator (e.g. Google Authenticator on your phone) + +## Generating a token + +A simple way to generate a `token` for a new sensor is to run this snippet of python code in your Home Assistant virtual environment: + +```shell +$ pip3 install pyotp +$ python3 -c 'import pyotp; print("Token:", pyotp.random_base32())' +Token: IHEDPEBEVA2WVHB7 +``` + +To run in a Docker container: + +```shell +$ docker exec -it home-assistant python -c 'import pyotp; print("Token:", pyotp.random_base32())' +Token: IHEDPEBEVA2WVHB7 +``` +Copy and paste the token into your Home Assistant configuration and add it to your OTP generator. Verify that they generate the same code. + +

+It is vital that your system clock is correct both on your Home Assistant server and on your OTP generator device (e.g. your phone). If not, the generated codes will not match! Make sure NTP is running and syncing your time correctly before creating an issue. +

diff --git a/source/_components/sensor.pi_hole.markdown b/source/_components/sensor.pi_hole.markdown index 9c6b7bb8a2c..809cee76ca1 100644 --- a/source/_components/sensor.pi_hole.markdown +++ b/source/_components/sensor.pi_hole.markdown @@ -27,10 +27,15 @@ sensor: Configuration variables: - **host** (*Optional*): The IP address of the Pi-Hole system. Defaults to `localhost`. +- **location** (*Optional*): The installation location of the Pi-Hole API. Defaults to `admin`. - **ssl** (*Optional*): If `true`, use SSL/TLS to connect to the Pi-Hole system. Defaults to `False`. - **verify_ssl** (*Optional*): Verify the certification of the system. Default to `True`. - **monitored_conditions** (*Optional*): Defines the stats to monitor as sensors. - - **dns_queries_today**: Total number of DNS queries handled by Pi-Hole today - - **ads_blocked_today**: Total number of blocked ads today - - **ads_percentage_today**: Percentage of blocked ads - + - **ads_blocked_today**: Total number of blocked ads today. + - **ads_percentage_today**: Percentage of blocked ads. + - **dns_queries_today**: Total number of DNS queries handled by Pi-Hole today. + - **domains_being_blocked**: Total number of domains blocked by Pi-Hole. + - **queries_cached**: Total number of cache queries on the last 24 hours. + - **queries_forwarded**: Total number of forwarded queries on the last 24 hours. + - **unique_clients**: Total number of unique clients on the last 24 hours. + - **unique_domains**: Total number of unique domains on the last 24 hours. diff --git a/source/_components/sensor.pilight.markdown b/source/_components/sensor.pilight.markdown index 0956ba70afe..276586c98c4 100644 --- a/source/_components/sensor.pilight.markdown +++ b/source/_components/sensor.pilight.markdown @@ -14,7 +14,7 @@ ha_iot_class: depends --- -This `pilight` sensor platform for 433 MHz devices uses a value in the message payload as the sensor value. Unique identifiers (e.g. _uuid_) can be set to distinguish between multiple pilight devices. To use a pilight sensor the pilight home assistant hub has to be set up. +This `pilight` sensor platform for 433 MHz devices uses a value in the message payload as the sensor value. Unique identifiers (e.g. _uuid_) can be set to distinguish between multiple pilight devices. To use a pilight sensor the pilight Home Assistant hub has to be set up. To use your sensor via pilight, make sure it is [supported](https://wiki.pilight.org/doku.php/protocols) and add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.plex.markdown b/source/_components/sensor.plex.markdown index 2a349d74fba..f3dcd7affae 100644 --- a/source/_components/sensor.plex.markdown +++ b/source/_components/sensor.plex.markdown @@ -15,7 +15,9 @@ ha_iot_class: "Local Polling" The `plex` sensor platform will monitor activity on a given [Plex Media Server](https://plex.tv/). It will create a sensor that shows the number of currently watching users as the state. If you click the sensor for more details it will show you who is watching what. -If your Plex server is on the same local network as Home Assistant, all you need to provide in the `configuration.yaml` is the host or IP address. If you want to access a remote Plex server, you must provide the Plex username, password, and optionally the server name of the remote Plex server. If no server name is given it will use the first server listed. If you use the username and password, all servers in that account are monitored. +If your Plex server is on the same local network as Home Assistant, all you need to provide in the `configuration.yaml` is the host or IP address. If you want to access a remote Plex server, you must provide the Plex username, password, and optionally the server name of the remote Plex server. If no server name is given it will use the first server listed. If you use the username and password, all servers in that account are monitored. + +If you don't know your token, see [Finding your account token / X-Plex-Token](https://support.plex.tv/hc/en-us/articles/204059436). If you want to enable the plex sensor, add the following lines to your `configuration.yaml`: @@ -33,4 +35,4 @@ Configuration variables: - **username** (*Optional*): The username for the remote Plex server. - **password** (*Optional*): The password for your given account on the remote Plex server. - **server** (*Optional*): The name of your remote Plex server. - +- **token** (*Optional*): X-Plex-Token of your remote Plex server. diff --git a/source/_components/sensor.pocketcasts.markdown b/source/_components/sensor.pocketcasts.markdown index 7b54f8da5b3..89d48c79f3c 100644 --- a/source/_components/sensor.pocketcasts.markdown +++ b/source/_components/sensor.pocketcasts.markdown @@ -13,6 +13,8 @@ ha_release: 0.39 ha_iot_class: "Cloud Polling" --- +The `pocketcasts` sensor platform let one monitor the podcasts at [Pocket Casts](https://play.pocketcasts.com/). + To enable this sensor, add the following lines to your `configuration.yaml`: ```yaml @@ -23,7 +25,7 @@ sensor: password: YOUR_PASSWORD ``` -Configuration options for the PocketCasts Sensor: +Configuration variables: - **username** (*Required*): The username to access the PocketCasts service. - **password** (*Required*): The password for the given username. diff --git a/source/_components/sensor.pushbullet.markdown b/source/_components/sensor.pushbullet.markdown index 608da2131db..df04990f68a 100644 --- a/source/_components/sensor.pushbullet.markdown +++ b/source/_components/sensor.pushbullet.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Pushbullet Mirrors" -description: "Instructions how to read user pushes in Home Assitant" +description: "Instructions how to read user pushes in Home Assistant" date: 2017-04-20 16:44 sidebar: true comments: false @@ -14,9 +14,9 @@ ha_iot_class: "Cloud Polling" --- The `pushbullet` sensor platform reads messages from [Pushbullet](https://www.pushbullet.com/), a free service to send information between your phones, browsers, and friends. -This sensor platform provide sensors that show the properties of the latest recevied pushbullet notification mirror. +This sensor platform provides sensors that show the properties of the latest received Pushbullet notification mirror. -Notification Mirroring allows users to see their Android device's notifications on their computer. It must be first enabled in the app and is currently only available on the Android platform. For more information, please see [this announcement](https://blog.pushbullet.com/2013/11/12/real-time-notification-mirroring-from-android-to-your-computer/) on the Pushbullet Blog +Notification Mirroring allows users to see their Android device's notifications on their computer. It must be first enabled in the app and is currently only available on the Android platform. For more information, please see [this announcement](https://blog.pushbullet.com/2013/11/12/real-time-notification-mirroring-from-android-to-your-computer/) on the Pushbullet Blog. To enable the Pushbullet sensor in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.pyload.markdown b/source/_components/sensor.pyload.markdown new file mode 100644 index 00000000000..4ad24e38938 --- /dev/null +++ b/source/_components/sensor.pyload.markdown @@ -0,0 +1,39 @@ +--- +layout: page +title: "pyLoad Sensor" +description: "Instructions how to integrate pyLoad download sensor within Home Assistant." +date: 2017-10-23 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: pyload.png +ha_category: Downloading +ha_release: 0.58 +ha_iot_class: "Local Polling" +--- + + +The `pyload` platform allows you to monitor your downloads with [pyLoad](https://pyload.net/) from within Home Assistant and setup automation based on the information. + +To enable this sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: pyload +``` + +Configuration variables: + +- **host** (*Optional*): This is the IP address of your pyLoad download manager, eg. 192.168.0.100. Defaults to `localhost`. +- **port** (*Optional*): The port your pyLoad interface uses. Defaults to 8000. +- **name** (*Optional*): The name to use when displaying this pyLoad instance. +- **username** (*Optional*): Your pyLoad username. +- **password** (*Optional*): Your pyLoad password. + +If everything is setup correctly, the download speed will show up in the frontend. + +

+ +

diff --git a/source/_components/sensor.qnap.markdown b/source/_components/sensor.qnap.markdown index 2af2e0c01a7..38dd16ca985 100644 --- a/source/_components/sensor.qnap.markdown +++ b/source/_components/sensor.qnap.markdown @@ -70,6 +70,7 @@ If your QNAP device uses self-signed certificates, set the `verify_ssl` option t 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) diff --git a/source/_components/sensor.radarr.markdown b/source/_components/sensor.radarr.markdown index c31402ea428..78ca33d041d 100644 --- a/source/_components/sensor.radarr.markdown +++ b/source/_components/sensor.radarr.markdown @@ -13,34 +13,32 @@ ha_release: 0.47 --- -This `radarr` sensor platform pulls data from a given Radarr instance. +This `radarr` sensor platform pulls data from a given [Radarr](https://radarr.video/) instance. -To use your [Radarr](https://radarr.tv/) sensor in your installation, add the following to your `configuration.yaml` file: +To use your Radarr sensor in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yml entry sensor: - platform: radarr api_key: YOUR_API_KEY - host: IP_ADDRESS - port: PORT ``` Configuration variables: - **api_key** (*Required*): Your Radarr API key, found in Settings > General in the Radarr Web UI. -- **monitored_conditions** array (*Required*): Conditions to display on the frontend. +- **host** (*Optional*): The host Radarr is running on. Defaults to `localhost`. +- **port** (*Optional*): The port Radarr is running on. Defaults to 7878. +- **urlbase** (*Optional*): The base URL Radarr is running under. Defaults to `/`. +- **monitored_conditions** array (*Optional*): Conditions to display on the frontend. Defaults to `movies`. - **movies**: The number of movies in Radarr. - **upcoming**: The number of upcoming movie releases (physical and in cinemas). - **commands**: The number of commands being run. - - **diskspace**: Available disk space. - - **status**: System status information -- **host** (*Optional*): The host Radarr is running on (Default: localhost). -- **port** (*Optional*): The port Radarr is running on (Default: 7878). -- **urlbase** (*Optional*): The base URL Radarr is running under (Default: /). -- **days** (*Optional*): How many days to look ahead for the upcoming sensor, 1 means today only (Default: 1). -- **include_paths** (*Optional*): Array of filepaths to include when calculating diskspace. Leave blank to include all. -- **unit**: (*Optional*): The unit to display disk space in (Default: GB). + - **diskspace**: The available disk space. + - **status**: The current system status information. +- **days** (*Optional*): How many days to look ahead for the upcoming sensor, 1 means today only. Defaults to 1. +- **include_paths** (*Optional*): Array of file paths to include when calculating diskspace. Leave blank to include all. +- **unit**: (*Optional*): The unit to display disk space in. Defaults to GB. - **ssl**: boolean (*Optional*): Whether or not to use SSL for Radarr. ## {% linkable_title Examples %} diff --git a/source/_components/sensor.raincloud.markdown b/source/_components/sensor.raincloud.markdown new file mode 100644 index 00000000000..381599c785e --- /dev/null +++ b/source/_components/sensor.raincloud.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "Melnor Raincloud Sensor" +description: "Instructions on how to integrate your Melnor Raincloud sprinkler system within Home Assistant." +date: 2017-09-04 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raincloud.jpg +ha_category: Sensor +ha_release: "0.55" +ha_iot_class: "Cloud Polling" +--- + +To get your [Melnor RainCloud](https://wifiaquatimer.com) sensors working within Home Assistant, please follow the instructions for the general [Raincloud component](/components/raincloud). + +Once you have enabled the [Raincloud component](/components/raincloud), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: raincloud +``` + +Configuration variables: + +- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. If not specified, all conditions below will be enabled by default. The following conditions can be monitored. + - **battery**: Return the battery level the Melnor RainCloud faucet. + - **next_cycle**: Return the next schedulle watering cycle per zone. + - **rain_delay**: Return the number of days the automatic watering will be delayed due to raining per zone. + - **watering_time**: Return the watering remaining minutes per zone. diff --git a/source/_components/sensor.random.markdown b/source/_components/sensor.random.markdown index 44bdfad4fa8..ac61331913b 100644 --- a/source/_components/sensor.random.markdown +++ b/source/_components/sensor.random.markdown @@ -14,7 +14,7 @@ ha_release: 0.32 --- -The `random` sensor platform is creating random sensor values (integers) out of a given range. This can be useful if you want to test automation rules. +The `random` sensor platform is creating random sensor values (integers) out of a given range. This can be useful if you want to test automation rules. It generates a new value every time it is polled. To enable the random sensor, add the following lines to your `configuration.yaml`: @@ -31,3 +31,6 @@ Configuration variables: - **maximum** (*Optional*): Upper limit for the values. Defaults to `20`. - **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any. +See the [entity component options][entity-docs] to control how often the main component polls the random sensor. The default is 30 seconds. + +[entity-docs]: https://home-assistant.io/docs/configuration/platform_options/ diff --git a/source/_components/sensor.rest.markdown b/source/_components/sensor.rest.markdown index 31069da6067..9f3da04c7ca 100644 --- a/source/_components/sensor.rest.markdown +++ b/source/_components/sensor.rest.markdown @@ -94,7 +94,7 @@ sensor: unit_of_measurement: MB ``` -### {% linkable_title Value for other Home Assistant instance %} +### {% linkable_title Value from another Home Assistant instance %} The Home Assistant [API](/developers/rest_api/) exposes the data from your attached sensors. If you are running multiple Home Assistant instances which are not [connected](/developers/architecture/#multiple-connected-instances) you can still get information from them. diff --git a/source/_components/sensor.rflink.markdown b/source/_components/sensor.rflink.markdown index c99e751de7c..38b529af807 100644 --- a/source/_components/sensor.rflink.markdown +++ b/source/_components/sensor.rflink.markdown @@ -44,7 +44,7 @@ Device configuration variables: - **name** (*Optional*): Name for the device, defaults to RFLink ID. - **sensor_type** (*Required*): Override automatically detected type of sensor. For list of values see below. - **unit_of_measurement** (*Optional*): Override automatically detected unit of sensor. -- **aliasses** (*Optional*): Alternative RFLink ID's this device is known by. +- **aliases** (*Optional*): Alternative RFLink ID's this device is known by. Sensor type values: diff --git a/source/_components/sensor.ring.markdown b/source/_components/sensor.ring.markdown index 494e803a29e..898a76ffa4c 100644 --- a/source/_components/sensor.ring.markdown +++ b/source/_components/sensor.ring.markdown @@ -21,21 +21,17 @@ Once you have enabled the [Ring component](/components/ring), add the following # Example configuration.yaml entry sensor: - platform: ring - monitored_conditions: - - battery - - last_activity - - last_ding - - last_motion - - volume ``` Configuration variables: -- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored. +- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. The following conditions can be monitored. If not specified, all conditions below will be enabled. - **battery**: Return the battery level from device - - **last_activity**: Return the timestamp from the last event captured (ding/motion/on_demand) by the Ring doorbell camera + - **last_activity**: Return the timestamp from the last event captured (ding/motion/on demand) by the Ring doorbell camera - **last_ding**: Return the timestamp from the last time the Ring doorbell button was pressed - **last_motion**: Return the timestamp from the last motion event captured by the Ring doorbell camera - - **volume**: Return the volume level from the device. Currently supported by external chimes and doorbells. + - **volume**: Return the volume level from the device. + - **wifi_signal_category**: Return the WiFi signal level from the device. + - **wifi_signal_strength**: Return the WiFi signal strength (dBm) from the device. -Currently it supports doorbells and external chimes only. +Currently it supports doorbell, external chimes and stickup cameras. diff --git a/source/_components/sensor.sabnzbd.markdown b/source/_components/sensor.sabnzbd.markdown index 8b2a7fe0c8c..ffa7310c2e1 100644 --- a/source/_components/sensor.sabnzbd.markdown +++ b/source/_components/sensor.sabnzbd.markdown @@ -16,7 +16,16 @@ ha_iot_class: "Local Polling" The `sabnzbd` platform will allow you to monitor your downloads with [SABnzbd](http://sabnzbd.org) from within Home Assistant and setup automation based on the information. -To use SABnzbd with your installation, add the following to your `configuration.yaml` file: +If SABnzbd is discovered on your network you can enter your API Key in the Configurator Press "CONFIGURE" to do it. + +

+ +

+ +This will enable a minimal setup where `sensor.sabnzbd_status` is enabled. + + +For more advanced usage, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -41,8 +50,8 @@ Configuration variables: - **name** (*Optional*): The name to use when displaying this SABnzbd instance. - **ssl** (*Optional*): Use `https` instead of `http` to connect. Defaults to False. - **monitored_variables** array (*Required*): List of the monitored variables. - - **current_status**: current status of the SABnzbd instance - - **speed**: Current speed + - **current_status**: Current status of the SABnzbd instance + - **speed**: Current speed. - **queue_size**: Size of the queue - **queue_remaining**: Remaining elements in the queue - **disk_size**: Disk size of the storage location diff --git a/source/_components/sensor.scrape.markdown b/source/_components/sensor.scrape.markdown index 4dd2bc3ea7f..2ab59be72c6 100644 --- a/source/_components/sensor.scrape.markdown +++ b/source/_components/sensor.scrape.markdown @@ -14,7 +14,7 @@ ha_iot_class: "Cloud Polling" --- -The `scrape` sensor platform is scraping information from websites. The sensor loads a HTML page and gives you the option to search and split out a value. As this is not a full-blown web scraper like [scrapy](https://scrapy.org/). It will most likely only work with simple webpages and it can be time-consuming to get the right section. +The `scrape` sensor platform is scraping information from websites. The sensor loads a HTML page and gives you the option to search and split out a value. As this is not a full-blown web scraper like [scrapy](https://scrapy.org/), it will most likely only work with simple web pages and it can be time-consuming to get the right section. To enable this sensor, add the following lines to your `configuration.yaml` file: @@ -30,8 +30,12 @@ Configuration variables: - **resource** (*Required*): The URL to the website that contains the value. - **select** (*Required*): Defines the HTML tag to search for. Check Beautifulsoup's [CSS selectors](https://www.crummy.com/software/BeautifulSoup/bs4/doc/#css-selectors) for details. +- **attribute** (*optional*): Get value of an attribute on the selected tag. - **name** (*Optional*): Name of the sensor. - **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any. +- **authentication** (*Optional*): Type of the HTTP authentication. Either `basic` or `digest`. +- **username** (*Optional*): The username for accessing the website. +- **password** (*Optional*): The password for accessing the website. ## {% linkable_title Examples %} @@ -67,11 +71,11 @@ sensor: ### {% linkable_title Get a value out of a tag %} -The German [Federal Office for Radiation protection (Bundesamt für Strahlenschutz)](http://www.bfs.de/) is publishing various details about optical radiation including an UV index. This example is getting the index for a region in Germany. +The German [Federal Office for Radiation protection (Bundesamt für Strahlenschutz)](http://www.bfs.de/) is publishing various details about optical radiation including an UV index. This example is getting the index for a region in Germany. ```yaml -sensor: # Example configuration.yaml entry +sensor: - platform: scrape resource: http://www.bfs.de/DE/themen/opt/uv/uv-index/prognose/prognose_node.html name: Coast Ostsee @@ -84,11 +88,24 @@ sensor: If you make heavy use of the [IFTTT](/components/ifttt/) web service for your automations and are curious about the [status of IFTTT](http://status.ifttt.com/) then you can display the current state of IFTTT in your frontend. ```yaml -sensor: # Example configuration.yaml entry +sensor: - platform: scrape resource: http://status.ifttt.com/ name: IFTTT status select: '.component-status' ``` +### {% linkable_title Get the latest podcast episode file URL %} + +If you want to get the file URL for the latest episode of your [favourite podcast](https://hasspodcast.io/), so you can pass it on to a compatible media player. + +```yaml +# Example configuration.yaml entry +sensor: + - platform: scrape + resource: https://hasspodcast.io/feed/podcast + name: Home Assistant Podcast + select: 'enclosure:nth-of-type(1)' + attribute: url +``` diff --git a/source/_components/sensor.season.markdown b/source/_components/sensor.season.markdown new file mode 100644 index 00000000000..6297420cd15 --- /dev/null +++ b/source/_components/sensor.season.markdown @@ -0,0 +1,34 @@ +--- +layout: page +title: "Season Sensor" +description: "Instructions how to add season sensors into Home Assistant." +date: 2017-07-04 07:00:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Sensor +logo: home-assistant.png +ha_iot_class: "Local Polling" +ha_release: 0.53 +--- + +This sensor will display the current astronomical or meteorological season (Spring, Summer, Autumn, Winter) based on the users setting in the config file. + +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) + - [https://en.wikipedia.org/wiki/Equinox](https://en.wikipedia.org/wiki/Equinox) + - [https://en.wikipedia.org/wiki/Solstice](https://en.wikipedia.org/wiki/Solstice) + + +```yaml +# Example configuration.yaml entry +sensor: + - platform: season + type: astronomical +``` + +Configuration variables: + +- **type** (*Optional*): Type of season definition. Options are `meteorological` or `astronomical`. Default is `astronomical`. diff --git a/source/_components/sensor.sensehat.markdown b/source/_components/sensor.sensehat.markdown index ae552a92445..ae270f052fb 100644 --- a/source/_components/sensor.sensehat.markdown +++ b/source/_components/sensor.sensehat.markdown @@ -104,7 +104,7 @@ group: ### 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 enviroment versions. +Here are the steps to make the _SenseHAT_ sensor work _successfully_ with the virtual environment versions. #### Install SenseHAT package to _homeassistant_venv_ ```bash diff --git a/source/_components/sensor.serial.markdown b/source/_components/sensor.serial.markdown new file mode 100644 index 00000000000..d03daed3906 --- /dev/null +++ b/source/_components/sensor.serial.markdown @@ -0,0 +1,55 @@ +--- +layout: page +title: "Serial Sensor" +description: "Instructions how to integrate data from serial connected sensors into Home Assistant." +date: 2017-10-13 07:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Sensor +ha_release: 0.56 +ha_iot_class: "Local Polling" +--- + +The `serial` sensor platform is using the data provided by a device connected to the serial port of the system where Home Assistant is running. With [`ser2net`](http://ser2net.sourceforge.net/) and [`socat`](http://www.dest-unreach.org/socat/) would it also work for sensors connected to a remote system. + +To check what kind of data is arriving at your serial port, use a command-line tool like `minicom` or `picocom` on Linux, on a macOS you can use `screen` or on Windows `putty`. + +```bash +$ sudo minicom -D /dev/ttyACM0 +``` + +To setup a serial sensor to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: serial + port: /dev/ttyACM0 +``` + +{% configuration %} + port: + description: Local serial port where the sensor is connected and access is granted. + required: true + type: string + name: + description: Friendly name to use for the frontend. Default to "Serial sensor". + required: false + type: string +{% endconfiguration %} + + +## {% linkable_title `value_template` for Template sensor %} + +### {% linkable_title TMP36 %} + +{% raw %} +```yaml +"{{ (((states('sensor.serial_sensor') | float * 5 / 1024 ) - 0.5) * 100) | round(1) }}" +``` +{% endraw %} + + diff --git a/source/_components/sensor.shodan.markdown b/source/_components/sensor.shodan.markdown new file mode 100644 index 00000000000..e4ca7947a21 --- /dev/null +++ b/source/_components/sensor.shodan.markdown @@ -0,0 +1,48 @@ +--- +layout: page +title: "Shodan Sensor" +description: "Instructions how to integrate Shodan sensors into Home Assistant." +date: 2017-08-09 10:30 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Sensor +ha_iot_class: "Cloud Polling" +logo: shodan.png +ha_release: 0.51 +--- + + +The `shodan` sensor platform is displaying the total of result of a +[Shodan](https://www.shodan.io/) query. + +Use "Show API Key" in the upper right corner when you are logged in or got to +your "My Account" page to retrieve your API key. + +To enable this sensor, add the following lines to your `configuration.yaml` +file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: shodan + api_key: SHODAN_API_KEY + query: 'home-assistant' +``` + +{% configuration %} + api_key: + description: The API key for Shodan.io. + required: true + type: string + query: + description: The search string. + required: true + type: string + name: + description: Name of the Shodan sensor. + required: false + type: string +{% endconfiguration %} + diff --git a/source/_components/sensor.skybeacon.markdown b/source/_components/sensor.skybeacon.markdown index f7fd535b3bd..d4e95bb97ff 100644 --- a/source/_components/sensor.skybeacon.markdown +++ b/source/_components/sensor.skybeacon.markdown @@ -27,7 +27,7 @@ sensor: ``` - **mac** (*Required*): The MAC address of your sensor. You can find this be running `hcitool lescan` from command line. -- **monitored_conditions** array (*Required*): The paramaters that should be monitored. +- **monitored_conditions** array (*Required*): The parameters that should be monitored. - **temperature**: Temperature at the sensor's location. - **humidity**: Humidity at the sensor's location. diff --git a/source/_components/sensor.skybell.markdown b/source/_components/sensor.skybell.markdown new file mode 100644 index 00000000000..4c9f3b5434c --- /dev/null +++ b/source/_components/sensor.skybell.markdown @@ -0,0 +1,31 @@ +--- +layout: page +title: "Skybell Sensor" +description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." +date: 2017-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: skybell.png +ha_category: Sensor +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + +To get your [Skybell.com](https://skybell.com/) sensors working within Home Assistant, please follow the instructions for the general [Skybell component](/components/skybell). + +Once you have enabled the [Skybell component](/components/skybell), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: skybell + monitored_conditions: + - chime_level +``` + +Configuration variables: + +- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored. + - **chime_level**: Return a value between 0-3, indicating no chime, low, medium, and high respectively. diff --git a/source/_components/sensor.snmp.markdown b/source/_components/sensor.snmp.markdown index 3252dedb66c..95429545db1 100644 --- a/source/_components/sensor.snmp.markdown +++ b/source/_components/sensor.snmp.markdown @@ -14,7 +14,7 @@ ha_release: "0.22" --- -The `snmp` sensor platform simple displays the information which are available through the [Simple Network Management Protocol (SNMP)](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol). SNMP uses a tree-like hierarchy where each node is an object. +The `snmp` sensor platform displays information available through the [Simple Network Management Protocol (SNMP)](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol). SNMP uses a tree-like hierarchy where each node is an object, and is mainly supported by network-oriented devices such as routers, modems, and printers. To enable this sensor in your installation, add the following to your `configuration.yaml` file: @@ -29,18 +29,23 @@ sensor: Configuration variables: - **host** (*Required*): The IP address of your host, eg. `192.168.1.32`. -- **port** (*Option*): The SNMP port of your host. Defaults to `161`. -- **name** (*Optional*): Name of the SNMP sensor. -- **community** (*Optional*): The SNMP community which is set for the device. Most devices have a default community set to to `public` with read-only permission (which is sufficient). - **baseoid** (*Required*): The OID where the information is located. It's advised to use the numerical notation. +- **port** (*Option*): The SNMP port of your host. Defaults to `161`. +- **community** (*Optional*): The SNMP community which is set for the device. Most devices have a default community set to `public` with read-only permission (which is sufficient). +- **version** (*Optional*) version of SNMP protocol, `1` or `2c`. Defaults to `1`. Version `2c` is needed to read data from 64-bit counters. +- **name** (*Optional*): Name of the SNMP sensor. - **unit_of_measurement** (*Optional*): Defines the unit of measurement of the sensor, if any. -- **version** (*Optional*) version of SNMP protocol, `1` or `2c` defaults to `1`. Version `2c` is needed to read data from 64-bit counters. +- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to parse the value. +- **accept_errors** (*Optional*): Determines whether the sensor should start and keep working even if the SNMP host is unreachable or not responding. This allows the sensor to be initialized properly even if, for example, your printer is not on when you start Home Assistant. Defaults to `false`. +- **default_value** (*Optional*): Determines what value the sensor should take if `accept_errors` is set and the host is unreachable or not responding. If not set, the sensor will have value `unknown` in case of errors. -The OIDs may vary on different system because they are vendor-specific. Beside the device's manual is the [OID Repository](http://www.oid-info.com/) a good place to start if you are looking for OIDs. The following OIDs are for the load of a Linux systems. +## {% linkable_title Finding OIDs %} -- 1 minute Load: 1.3.6.1.4.1.2021.10.1.3.1 -- 5 minute Load: 1.3.6.1.4.1.2021.10.1.3.2 -- 15 minute Load: 1.3.6.1.4.1.2021.10.1.3.3 +OIDs may vary on different systems because they are vendor-specific. Beside the device's manual, the [OID Repository](http://www.oid-info.com/) is a good place to start if you are looking for OIDs. As an example, the following OIDs are for the load of a Linux systems. + +- 1 minute Load: `1.3.6.1.4.1.2021.10.1.3.1` +- 5 minute Load: `1.3.6.1.4.1.2021.10.1.3.2` +- 15 minute Load: `1.3.6.1.4.1.2021.10.1.3.3` There is a large amount of tools available to work with SNMP. `snmpwalk` let you easily retrieve the value of a OID. @@ -49,3 +54,26 @@ $ snmpwalk -Os -c public -v 2c 192.168.1.32 1.3.6.1.4.1.2021.10.1.3.1 laLoad.1 = STRING: 0.19 ``` +## {% linkable_title Examples %} + +### {% linkable_title Printer uptime minutes %} + +According to the most common SNMP standard, the uptime of a device is accessible under OID `1.3.6.1.2.1.1.3.0`. The value represented using a format called `TimeTicks`, in units of hundredth of a second. + +To create a sensor that displays the uptime for your printer in minutes, you can use this configuration: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: snmp + name: 'Printer uptime' + host: 192.168.2.21 + baseoid: 1.3.6.1.2.1.1.3.0 + accept_errors: true + unit_of_measurement: 'minutes' + value_template: {% raw %}'{{((value | int) / 6000) | int}}'{% endraw %} +``` + +The `accept_errors` option will allow the sensor to work even if the printer is not on when Home Assistant is first started: the sensor will just display a `-` instead of a minute count. + +The `value_template` option converts the original value to minutes. diff --git a/source/_components/sensor.sonarr.markdown b/source/_components/sensor.sonarr.markdown index 4dfbe3604c5..5f4d437c02b 100644 --- a/source/_components/sensor.sonarr.markdown +++ b/source/_components/sensor.sonarr.markdown @@ -14,35 +14,34 @@ ha_iot_class: "Local Polling" --- -This `sonarr` sensor platform pulls data from a given Sonarr instance. +This `sonarr` sensor platform pulls data from a given [Sonarr](https://sonarr.tv/) instance. -To use your [Sonarr](https://sonarr.tv/) sensor in your installation, add the following to your `configuration.yaml` file: +To use your Sonarr sensor in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yml entry sensor: - platform: sonarr api_key: YOUR_API_KEY - host: IP_ADDRESS - port: PORT ``` Configuration variables: - **api_key** (*Required*): Your Sonarr API key, found in Settings > General in the Sonarr Web UI. -- **monitored_conditions** array (*Required*): Conditions to display on the frontend. +- **host** (*Optional*): The host Sonarr is running on. Defaults to `localhost`. +- **port** (*Optional*): The port Sonarr is running on. Defaults to 8989. +- **monitored_conditions** array (*Optional*): Conditions to display on the frontend. Defaults to `upcoming`. - **series**: The number of series in Sonarr. - **upcoming**: The number of upcoming episodes. - **wanted**: The number of episodes still 'wanted'. - **queue**: The number of episodes in the queue. - **commands**: The number of commands being run. - **diskspace**: Available disk space. -- **host** (*Optional*): The host Sonarr is running on (Default: localhost). -- **port** (*Optional*): The port Sonarr is running on (Default: 8989). -- **urlbase** (*Optional*): The base URL Sonarr is running under (Default: /). -- **days** (*Optional*): How many days to look ahead for the upcoming sensor, 1 means today only (Default: 1). -- **include_paths** (*Optional*): Array of filepaths to include when calculating diskspace. Leave blank to include all. -- **unit**: (*Optional*): The unit to display disk space in (Default: GB). + +- **urlbase** (*Optional*): The base URL Sonarr is running under. Defaults to `/`. +- **days** (*Optional*): How many days to look ahead for the upcoming sensor, 1 means today only. Defaults to 1. +- **include_paths** (*Optional*): Array of file paths to include when calculating diskspace. Leave blank to include all. +- **unit**: (*Optional*): The unit to display disk space in. Defaults to GB. - **ssl**: boolean (*Optional*): Whether or not to use SSL for Sonarr. ## {% linkable_title Examples %} diff --git a/source/_components/sensor.speedtest.markdown b/source/_components/sensor.speedtest.markdown index ad2f1764b65..d9c25821a8a 100644 --- a/source/_components/sensor.speedtest.markdown +++ b/source/_components/sensor.speedtest.markdown @@ -89,3 +89,27 @@ sensor: - download - upload ``` + +### {% linkable_title Using as a trigger in an automation %} + +```yaml +# Example configuration.yaml entry +automation: + - alias: 'Internet Speed Glow Connect Great' + trigger: + platform: template + value_template: '{% raw %}{{ states.sensor.speedtest_download.state|float > 10}}{% endraw %}' + action: + service: shell_command.green + - alias: 'Internet Speed Glow Connect Poor' + trigger: + platform: template + value_template: '{% raw %}{{ states.sensor.speedtest_download.state| float < 10 }}{% endraw %}' + action: + service: shell_command.red +``` + +## {% linkable_title Notes %} + +- When running on Raspberry Pi, just note that the maximum speed is limited by its 100 Mbit/s LAN adapter. +- Entries under `monitored_conditions` only control what entities are available under home-assistant, it does not disable the condition from running. diff --git a/source/_components/sensor.statistics.markdown b/source/_components/sensor.statistics.markdown index 6aed2af6b6b..01abb92ca24 100644 --- a/source/_components/sensor.statistics.markdown +++ b/source/_components/sensor.statistics.markdown @@ -14,19 +14,25 @@ ha_release: "0.30" --- -The `statistics` sensor platform is consuming the state from other sensors. Beside the maximal and the minimal value also the total, the mean, the median, the variance, and the standard deviation are as attributes available. If it's a binary sensor then only the state changes are counted. +The `statistics` sensor platform consumes the state from other sensors. Besides the maximum and the minimum values, the total, mean, median, variance and the standard deviation are also available as attributes. If it's a binary sensor then only state changes are counted. -It can take time till the sensor starts to work because a couple of attributes need more than one value to do the calculation. +If you are running the [recorder](/components/recorder/) component, on startup the data is read from the database. So after a restart of the platform, you will immediately have data available. If you're using the [history](/components/history/) component, this will automatically also start the recoder component on startup. +If you are *not* running the `recorder` component, it can take time till the sensor starts to work because a couple of attributes need more than one value to do the calculation. To enable the statistics sensor, add the following lines to your `configuration.yaml`: ```yaml +# enable the recorder component (optional) +recorder: + # Example configuration.yaml entry sensor: - platform: statistics entity_id: sensor.cpu - platform: statistics entity_id: binary_sensor.movement + max_age: + minutes: 30 ``` Configuration variables: @@ -34,6 +40,7 @@ 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.

diff --git a/source/_components/sensor.supervisord.markdown b/source/_components/sensor.supervisord.markdown index 940dfe0a0e1..4fcb8f24157 100644 --- a/source/_components/sensor.supervisord.markdown +++ b/source/_components/sensor.supervisord.markdown @@ -15,6 +15,20 @@ ha_iot_class: "Local Polling" The `supervisord` platform allows you to track the states of [Supervisord](http://supervisord.org/). +It required that you enable the HTTP feature in the `/etc/supervisord.conf` configuration file. + +```text +[inet_http_server] +port=127.0.0.1:9001 +``` + +After a restart of `supervisord` you should be able to access the web interface. If needed then this could be added as a [iFrame panel](/components/panel_iframe/). + +

+ +

+ + To use this sensor in your installation, add the following to your `configuration.yaml` file: ```yaml diff --git a/source/_components/sensor.swiss_public_transport.markdown b/source/_components/sensor.swiss_public_transport.markdown index d352afc0006..bb4a265bc3a 100644 --- a/source/_components/sensor.swiss_public_transport.markdown +++ b/source/_components/sensor.swiss_public_transport.markdown @@ -14,13 +14,13 @@ ha_release: pre 0.7 --- -The `swiss_public_transport` sensor will give you the next two departure times from a given location to another one in Switzerland. +The `swiss_public_transport` sensor will give you the next three departure times from a given location to another one in Switzerland. -The [Stationboard](http://transport.opendata.ch/examples/stationboard.html) website can help to determine the exact name of the start and the end station. With the station names it's necessary to search for the ID of those stations: +The [Swiss public transport API](http://transport.opendata.ch/) only allows 1000 requests per 24 hours. -http://transport.opendata.ch/v1/locations?query=[Station name] +The [Stationboard](http://transport.opendata.ch/examples/stationboard.html) website can help to determine the exact name of the start and the end station. -If the score is 100 ("score":"100" in the response), it is a perfect match. Then add the data to your `configuration.yaml` file as shown in the example: +Then add the data to your `configuration.yaml` file as shown in the example: ```yaml # Example configuration.yaml entry @@ -34,5 +34,6 @@ Configuration variables: - **from** (*Required*): The ID of the station of the start station. - **to** (*Required*): The ID of the station of the end station. +- **name** (*Optional*): The name of the sensor. Defaults to 'Next Departure'. The public timetables are coming from [Swiss public transport](http://transport.opendata.ch). diff --git a/source/_components/sensor.synologydsm.markdown b/source/_components/sensor.synologydsm.markdown index 2953f4b016b..bf7a0af0d01 100644 --- a/source/_components/sensor.synologydsm.markdown +++ b/source/_components/sensor.synologydsm.markdown @@ -8,9 +8,9 @@ comments: false sharing: true footer: true logo: synology.png -ha_category: Sensor +ha_category: System Monitor ha_release: 0.32 -ha_iot_class: depends +ha_iot_class: "Local Polling" --- @@ -31,14 +31,6 @@ sensor: - network_up ``` -

-After booting Home Assistant it can take up to 15 minutes for the sensors to show up. This is due to the fact that sensors are created after Home Assistant has fully been initialized. -

- -

-This sensor will wake up your Synology NAS if it's in hibernation mode. -

- Configuration variables: - **host** (*Required*): The IP address of the Synology NAS to monitor @@ -79,7 +71,15 @@ Configuration variables: - **volume_disk_temp_avg**: Displays the average temperature of all disks in the volume (creates a new entry for each volume). - **volume_disk_temp_max**: Displays the maximum temperature of all disks in the volume (creates a new entry for each volume). -Separate User Configuration: +

+After booting Home Assistant it can take up to 15 minutes for the sensors to show up. This is due to the fact that sensors are created after Home Assistant has fully been initialized. +

+ +

+This sensor will wake up your Synology NAS if it's in hibernation mode. +

+ +## {% linkable_title Separate User Configuration %} Due to the nature of the Synology DSM API it is required to grant the user admin rights. This is related to the fact that utilization information is stored in the core module. diff --git a/source/_components/sensor.systemmonitor.markdown b/source/_components/sensor.systemmonitor.markdown index 0cf101c08c0..283e302217f 100644 --- a/source/_components/sensor.systemmonitor.markdown +++ b/source/_components/sensor.systemmonitor.markdown @@ -35,30 +35,38 @@ Configuration variables: The table contains types and their argument to use in your `configuration.yaml` file. -| Type (`type:`) | Argument (`arg:`) | +| Type (`type:`) | Argument (`arg:`) | +| :------------------ |:--------------------------| +| disk_use_percent | Path, eg. `/` | +| disk_use | Path, eg. `/` | +| disk_free | Path, eg. `/` | +| memory_use_percent | | +| memory_use | | +| memory_free | | +| swap_use_percent | | +| swap_use | | +| swap_free | | +| load_1m | | +| load_5m | | +| load_15m | | +| network_in | Interface, eg. `eth0` | +| network_out | Interface, eg. `eth0` | +| packets_in | Interface, eg. `eth0` | +| packets_out | Interface, eg. `eth0` | +| ipv4_address | Interface, eg. `eth0` | +| ipv6_address | Interface, eg. `eth0` | +| processor_use | | +| process | Binary, e.g. `octave-cli` | +| last_boot | | +| since_last_boot | | + +**Note**: Some `type:` names used in the `configuration.yaml` file differ from the entity names. + +| Sensor type | Entity ID | | :------------------ |:-------------------------| -| disk_use_percent | Path, eg. `/` | -| disk_use | Path, eg. `/` | -| disk_free | Path, eg. `/` | -| memory_use_percent | | -| memory_use | | -| memory_free | | -| swap_use_percent | | -| swap_use | | -| swap_free | | -| load_1m | | -| load_5m | | -| load_15m | | -| network_in | Interface, eg. `eth0` | -| network_out | Interface, eg. `eth0` | -| packets_in | Interface, eg. `eth0` | -| packets_out | Interface, eg. `eth0` | -| ipv4_address | Interface, eg. `eth0` | -| ipv6_address | Interface, eg. `eth0` | -| processor_use | | -| process | Binary, eg. `octave-cli` | -| last_boot | | -| since_last_boot | | +| memory_free | sensor.ram_available | +| memory_use_percent | sensor.ram_used | +| processor_use | sensor.cpu_used | ## {% linkable_title Linux specific %} @@ -80,7 +88,7 @@ sensor: arg: 'Local Area Connection' ``` -If you need to use some other interface, open a commandline prompt and type `ipconfig` to list all interface names. For example a wireless connection output from `ifconfig` might look like: +If you need to use some other interface, open a command line prompt and type `ipconfig` to list all interface names. For example a wireless connection output from `ifconfig` might look like: ```bash Wireless LAN adapter Wireless Network Connection: diff --git a/source/_components/sensor.sytadin.markdown b/source/_components/sensor.sytadin.markdown new file mode 100644 index 00000000000..9f23c8df3f8 --- /dev/null +++ b/source/_components/sensor.sytadin.markdown @@ -0,0 +1,34 @@ +--- +layout: page +title: "Sytadin Sensor" +description: "Instructions how to integrate Sytadin sensors into Home Assistant." +date: 2017-10-05 14:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: sytadin.png +ha_release: 0.57 +ha_category: Sensor +ha_iot_class: "Clound Polling" +--- + +The `sytadin` sensor platform allows you to monitor traffic details from [Sytadin](http://www.sytadin.fr). + +To add Sytadin to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: sytadin +``` + +Configuration variables: + +- **name** (*Optional*): Additional name for the sensors. Default to platform name. +- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. Defaults to `traffic_jam`. + - **traffic_jam**: Amount of kilometers in traffic jam (km). + - **mean_velocity**: Mean velocity (km/h). + - **congestion**: Index of congestion (n/a). + +The data is coming from the [Direction des routes Île-de-France (DiRIF)](http://www.sytadin.fr). diff --git a/source/_components/sensor.tank_utility.markdown b/source/_components/sensor.tank_utility.markdown new file mode 100644 index 00000000000..061c66ab918 --- /dev/null +++ b/source/_components/sensor.tank_utility.markdown @@ -0,0 +1,44 @@ +--- +layout: page +title: "Tank Utility Sensor" +description: "How to integrate Tank Utility sensors within Home Assistant." +date: 2017-08-24 08:21 +sidebar: true +comments: false +sharing: true +footer: true +logo: tank_utility.png +ha_category: Sensor +ha_release: "0.53" +--- + +Add [Tank Utility](https://www.tankutility.com/) propane tank monitors to Home Assistant. + +```yaml +# Example configuration.yaml entry +sensor: + - platform: tank_utility + email: EMAIL + password: PASSWORD + devices: + - 000000000000000000000000 +``` + +Configuration variables: + +* **email** *(Required)*: [https://app.tankutility.com](https://app.tankutility.com) email address +* **password** *(Required)*: [https://app.tankutility.com](https://app.tankutility.com) password +* **devices** *(Required)*: List of devices + +Authentication: + +Authentication for the Tank Utility API is performed with the same email and password credentials used at +[https://app.tankutility.com](https://app.tankutility.com). + +Devices: + +Each item in the list of devices is a 24 character string. These values can be found by clicking on the **Usage +Reports** link at the bottom of the graph on the [Tank Utility devices page](https://app.tankutility.com/#/devices). +The device item value is the last segment of the URL path, e.g., the URL +[https://app.tankutility.com/#/reports/000000000000000000000000](https://app.tankutility.com/#/reports/000000000000000000000000) +would indicate `000000000000000000000000` as a device value. diff --git a/source/_components/sensor.tcp.markdown b/source/_components/sensor.tcp.markdown index 96fb3f8e04b..1d27c668827 100644 --- a/source/_components/sensor.tcp.markdown +++ b/source/_components/sensor.tcp.markdown @@ -55,19 +55,19 @@ You will notice that the output from the service is not just a single value (it ```yaml sensor: # Example configuration.yaml entry - platform: tcp - name: Central Heating Pressure - host: 10.0.0.127 - port: 8888 - timeout: 5 - payload: "r WaterPressure\n" - value_template: "{% raw %}{{ value.split(';')[0] }}{% endraw %}" - unit_of_measurement: Bar + - platform: tcp + name: Central Heating Pressure + host: 10.0.0.127 + port: 8888 + timeout: 5 + payload: "r WaterPressure\n" + value_template: "{% raw %}{{ value.split(';')[0] }}{% endraw %}" + unit_of_measurement: Bar ``` ### {% linkable_title hddtemp %} -The tool `hddtemp` collects the temperature of your harddisks. +The tool `hddtemp` collects the temperature of your hard disks. ```bash $ hddtemp @@ -89,12 +89,12 @@ The entry for the `configuration.yaml` file for a `hddtemp` sensor could look li ```yaml sensor: # Example configuration.yaml entry - platform: tcp - name: HDD temperature - host: 127.0.0.1 - port: 7634 - timeout: 5 - payload: "\n" - value_template: "{% raw %}{{ value.split('|')[3] }}{% endraw %}" - unit_of_measurement: "°C" + - platform: tcp + name: HDD temperature + host: 127.0.0.1 + port: 7634 + timeout: 5 + payload: "\n" + value_template: "{% raw %}{{ value.split('|')[3] }}{% endraw %}" + unit_of_measurement: "°C" ``` diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown index 096b6e75527..0811978b617 100644 --- a/source/_components/sensor.template.markdown +++ b/source/_components/sensor.template.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Template Sensor" -description: "Instructions how to integrate Template sensors into Home Assistant." +description: "Instructions how to integrate Template Sensors into Home Assistant." date: 2016-01-27 07:00 sidebar: true comments: false @@ -13,142 +13,235 @@ ha_iot_class: "Local Push" logo: home-assistant.png --- -The `template` platform supports sensors which break out `state_attributes` from other entities. +The `template` platform supports sensors which break out `state_attributes` +from other entities. -To enable Template sensors in your installation, add the following to your `configuration.yaml` file: +To enable Template Sensors in your installation, add the following to your +`configuration.yaml` file: +{% raw %} ```yaml # Example configuration.yaml entry sensor: - platform: template sensors: solar_angle: - value_template: {% raw %}'{{ states.sun.sun.attributes.elevation }}'{% endraw %} - friendly_name: 'Sun angle' + friendly_name: "Sun angle" unit_of_measurement: 'degrees' + value_template: "{{ states.sun.sun.attributes.elevation }}" + sunrise: - value_template: {% raw %}'{{ states.sun.sun.attributes.next_rising }}'{% endraw %} + value_template: "{{ states.sun.sun.attributes.next_rising }}" ``` +{% endraw %} -Configuration variables: +{% configuration %} + sensors: + description: List of your sensors. + required: true + type: map + keys: + friendly_name: + description: Name to use in the frontend. + required: false + type: string + entity_id: + description: Add a list of entity IDs so the sensor only reacts to state changes of these entities. This will reduce the number of times the sensor will try to update its state. + required: false + type: string, list + unit_of_measurement: + description: Defines the units of measurement of the sensor, if any. + required: false + type: string + value_template: + description: Defines a template to get the state of the sensor. + required: true + type: template + icon_template: + description: Defines a template for the icon of the sensor. + required: false + type: template + icon_template: + description: Defines a template for the entity picture of the sensor. + required: false + type: template +{% endconfiguration %} -- **sensors** array (*Required*): List of your sensors. - - **friendly_name** (*Optional*): Name to use in the Frontend. - - **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any. - - **value_template** (*Required*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the event bus. - - **icon_template** (*Optional*): Defines a [template](/topics/templating/) for the icon of the sensor. - - **entity_id** (*Optional*): Add a list of entity IDs so the sensor only reacts to state changes of these entities. This will reduce the number of times the sensor will try to update it's state. +## {% linkable_title Considerations %} +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. This results +in error messages in your log file until that platform has completed loading. +If you use `is_state()` function in your template, you can avoid this situation. +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 Examples %} In this section you find some real life examples of how to use this sensor. -### {% linkable_title Sun angle %} +### {% linkable_title Sun Angle %} This example shows the sun angle in the frontend. +{% raw %} ```yaml sensor: - platform: template sensors: solar_angle: - value_template: {% raw %}'{{ "%+.1f"|format(states.sun.sun.attributes.elevation) }}'{% endraw %} - friendly_name: 'Sun Angle' + friendly_name: "Sun Angle" unit_of_measurement: '°' + value_template: "{{ '%+.1f'|format(states.sun.sun.attributes.elevation) }}" ``` +{% endraw %} -### {% linkable_title Renaming sensor output %} +### {% 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 a simple example: +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 %} ```yaml sensor: - platform: template sensors: sun_state: - value_template: {% raw %}'{% if is_state("sun.sun", "above_horizon") %}up{% else %}down{% endif %}'{% endraw %} - friendly_name: 'Sun state' + friendly_name: "Sun State" + value_template: >- + {% if is_state('sun.sun', 'above_horizon') %} + up + {% else %} + down + {% endif %} ``` +{% 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. +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: - value_template: {% raw %}'{% if is_state("sensor.process_glances", "off") %}not running{% else %}running{% endif %}'{% endraw %} - friendly_name: 'Glances' + friendly_name: "Glances" + value_template: >- + {% if is_state('sensor.process_glances', 'on') %} + running + {% else %} + not running + {% endif %} ``` +{% endraw %} -By comparing the details published on the [template](/topics/templating/) page the same can be achieved with a different approach: +The [Template Binary Sensor](/components/binary_sensor.template/) is the one in +similar cases if you prefer to see an icon instead of text. -```yaml -value_template: {% raw %}"{%if states.sensor.ENTITY_ID.state == 'on' %}running{%elif states.switch.ENTITY_ID.state == 'off' %}not running{% endif %}"{% endraw %} -``` +### {% linkable_title Multiline Example With an `if` Test %} -The [Binary template 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. +This example shows a multiple line template with an `if` test. It looks at a +sensing switch and shows `on`/`off` in the frontend. +{% raw %} ```yaml sensor: - platform: template sensors: kettle: - friendly_name: 'Kettle' - {% raw %}value_template: >- - {%- if is_state("switch.kettle", "off") %} - off - {% elif states.switch.kettle.attributes.kwh < 1000 %} - standby - {% elif is_state("switch.kettle", "on") %} - on - {% else %} - failed - {%- endif %}{% endraw %} + friendly_name: "Kettle" + value_template: >- + {% if is_state('switch.kettle', 'off') %} + off + {% elif states.switch.kettle.attributes.kwh|float < 1000 %} + standby + {% elif is_state('switch.kettle', 'on') %} + on + {% else %} + failed + {% endif %} next_sensor: - [...] + ... ``` +{% endraw %} -

-Please note the blank line to close the multi-line template. -

+### {% linkable_title Change The Unit of Measurement %} -### {% 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 sensor: - platform: template sensors: transmission_down_speed_kbps: - value_template: {% raw %}'{{ states.sensor.transmission_down_speed.state | multiply(1024) }}'{% endraw %} - friendly_name: 'Transmission Down Speed' + friendly_name: "Transmission Down Speed" unit_of_measurement: 'kB/s' - transmission_up_speed_kbps: - value_template: {% raw %}'{{ states.sensor.transmission_up_speed.state | multiply(1024) }}'{% endraw %} - friendly_name: 'Transmission Up Speed' - unit_of_measurement: 'kB/s' -``` + value_template: "{{ states('sensor.transmission_down_speed')|float * 1024 }}" -### {% linkable_title Change the icon %} + transmission_up_speed_kbps: + friendly_name: "Transmission Up Speed" + unit_of_measurement: 'kB/s' + value_template: "{{ states('sensor.transmission_up_speed')|float * 1024 }}" +``` +{% endraw %} + +### {% linkable_title Change The Icon %} This example shows how to change the icon based on the day/night cycle. +{% raw %} ```yaml sensor: - platform: template sensors: day_night: - friendly_name: 'Day/Night' - value_template: {% raw %}'{% if is_state("sun.sun", "above_horizon") %}Day{% else %}Night{% endif %}'{% endraw %} - icon_template: {% raw %}'{% if is_state("sun.sun", "above_horizon") %}mdi:weather-sunny{% else %}mdi:weather-night{% endif %}'{% endraw %} - + friendly_name: "Day/Night" + value_template: >- + {% if is_state('sun.sun', 'above_horizon') %} + Day + {% else %} + Night + {% endif %} + icon_template: >- + {% if is_state('sun.sun', 'above_horizon') %} + mdi:weather-sunny + {% else %} + mdi:weather-night + {% endif %} ``` +{% endraw %} +### {% linkable_title Change The Entity Picture %} + +This example shows how to change the entity picture based on the day/night cycle. + +{% raw %} +```yaml +sensor: + - platform: template + sensors: + day_night: + friendly_name: "Day/Night" + value_template: >- + {% if is_state('sun.sun', 'above_horizon') %} + Day + {% else %} + Night + {% endif %} + entity_picture_template: >- + {% if is_state('sun.sun', 'above_horizon') %} + /local/daytime.png + {% else %} + /local/nighttime.png + {% endif %} +``` +{% endraw %} diff --git a/source/_components/sensor.tesla.markdown b/source/_components/sensor.tesla.markdown new file mode 100644 index 00000000000..262a18910e2 --- /dev/null +++ b/source/_components/sensor.tesla.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Tesla Sensor" +description: "Instructions on how to integrate Tesla sensors into Home Assistant." +date: 2017-08-30 12:21 +sidebar: true +comments: false +sharing: true +footer: true +logo: tesla.png +ha_category: Sensor +ha_iot_class: "Cloud Push" +ha_release: 0.53 +--- + +The `Tesla` platform allows you to get data from your [Tesla](https://www.tesla.com/) sensors from within Home Assistant. + +The sensor platform will be automatically configured if Tesla component is configured. + +For more configuration information see the [Tesla component](/components/tesla/) documentation. diff --git a/source/_components/sensor.thethingsnetwork.markdown b/source/_components/sensor.thethingsnetwork.markdown new file mode 100644 index 00000000000..76870e368ec --- /dev/null +++ b/source/_components/sensor.thethingsnetwork.markdown @@ -0,0 +1,79 @@ +--- +layout: page +title: "The Things Network Sensor" +description: "Instructions how to integrate The Things Network sensors into Home Assistant." +date: 2017-09-30 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: thethingsnetwork.png +ha_category: Sensor +ha_iot_class: "Local Polling" +ha_release: 0.55 +--- + +The `thethingsnetwork` sensor platform allows you to get data from a [The Things Network Storage Integration](https://www.thethingsnetwork.org/docs/applications/storage/). + +This platform requires that the [The Things Network component](/components/thethingsnetwork/) is set up and the [The Things Network Storage Integration](https://www.thethingsnetwork.org/docs/applications/storage/) as well. + +Visit the [The Things Network Console](https://console.thethingsnetwork.org/) website, log in with your The Things Network credentials, choose your application from **Applications** and go to **Integrations**. + +Add a new integration. + +

+ +Add a The Things Network integration +

+ +Select **Data Storage**. + +

+ +Choose a The Things Network integration +

+ +Click **Add integration** to finish the process. + +

+ +Add a The Things Network Data Storage integration +

+ +When done, the status of the integration should be **Running**. You could check the output after clicking on **go to platform** in an interactive web interface. + +

+ +Add a The Things Network integration +

+ +Select **Devices** to get the ID of your device that you want to use. + +

+ +Devices overview +

+ +To enable this platform, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: thethingsnetwork + device_id: ha-demo + values: + sensor_value: unit of measurment + voltage: V +``` + +{% configuration %} + device_id: + description: The ID of the device. + required: true + type: string + values: + description: The sensor values with their unit of measurement + required: true + type: list +{% endconfiguration %} + diff --git a/source/_components/sensor.thinkingcleaner.markdown b/source/_components/sensor.thinkingcleaner.markdown index 2b1f54b03b9..d5c681ff736 100644 --- a/source/_components/sensor.thinkingcleaner.markdown +++ b/source/_components/sensor.thinkingcleaner.markdown @@ -13,7 +13,7 @@ ha_iot_class: "Local Poll" ha_release: 0.18 --- -The `thinkingcleaner` sensor platform simple displays information about your [Thinking Cleaner](http://www.thinkingcleaner.com) addon. +The `thinkingcleaner` sensor platform simple displays information about your [Thinking Cleaner](http://www.thinkingcleaner.com) add-on. To enable this sensor in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/sensor.tibber.markdown b/source/_components/sensor.tibber.markdown new file mode 100644 index 00000000000..6ebcc84bcf0 --- /dev/null +++ b/source/_components/sensor.tibber.markdown @@ -0,0 +1,33 @@ +--- +layout: page +title: "Tibber" +description: "Instructions how to integrate Tibber within Home Assistant." +date: 2017-10-03 17:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: tibber.png +ha_category: Sensor +ha_release: 0.55 +ha_iot_class: "Cloud Polling" +--- + + +The `tibber` sensor provides the current electricity price if you are a [Tibber](https://tibber.com/) customer. + +To add Tibber to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: tibber + access_token: d1007ead2dc84a2b82f0de19451c5fb22112f7ae11d19bf2bedb224a003ff74a +``` + +{% configuration %} + access_token: + description: Go to [developer.tibber.com/](https://developer.tibber.com/) to get your API token. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/sensor.toon.markdown b/source/_components/sensor.toon.markdown new file mode 100644 index 00000000000..fabf565aeb4 --- /dev/null +++ b/source/_components/sensor.toon.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "Toon Sensor" +description: "Instructions how to integrate Toon climate devices within Home Assistant." +date: 2017-10-22 12:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Sensor +ha_release: 0.56 +logo: toon.png +ha_iot_class: "Cloud Polling" +--- + +The `toon` sensor platform allows you to observe the power flow in your house through your Toon. If available, gas flow, solar output, smart plug status and connected smoke detector data can also be accessed in Toon. + +The requirement is that you have setup the [`toon`](/components/toon/) component. diff --git a/source/_components/sensor.torque.markdown b/source/_components/sensor.torque.markdown index 693b704122f..87ff9e0eca2 100644 --- a/source/_components/sensor.torque.markdown +++ b/source/_components/sensor.torque.markdown @@ -13,7 +13,7 @@ ha_release: "0.10" ha_iot_class: "Cloud Polling" --- -The `torque` platform will allow you to monitor [Torque](http://torque-bhp.com/) data relayed from a bluetooth OBD2 stick via the Torque mobile application. +The `torque` platform will allow you to monitor [Torque](http://torque-bhp.com/) data relayed from a Bluetooth OBD2 stick via the Torque mobile application. ## {% linkable_title Configuration %} To use Torque sensors with your installation, you must configure both the Torque mobile application and Home Assistant. @@ -29,8 +29,8 @@ Under the **Logging Preferences** header: Under the **Realtime Web Upload** header: -- Check **Upload to webserver**. -- Enter `http://HOST:PORT/api/torque?api_password=YOUR_PASSWORD` as the **Webserver URL**, where `HOST` and `PORT` are your externally-accessible Home Assistant HTTP host and port and YOUR_PASSWORD is your password. +- Check **Upload to web-server**. +- Enter `http://HOST:PORT/api/torque?api_password=YOUR_PASSWORD` as the **Web-server URL**, where `HOST` and `PORT` are your externally accessible Home Assistant HTTP host and port and YOUR_PASSWORD is your Home Assistant's [API password](/components/http/). It highly recommended that you protect your Home Assistant instance with [SSL/TSL](/docs/ecosystem/certificates/). - Enter an email address in **User Email Address**. - Optionally set the **Web Logging Interval**. The 2-second default may quickly fill up the Home Assistant history database. diff --git a/source/_components/sensor.transmission.markdown b/source/_components/sensor.transmission.markdown index b5b80b9d387..4e540968339 100644 --- a/source/_components/sensor.transmission.markdown +++ b/source/_components/sensor.transmission.markdown @@ -27,6 +27,7 @@ sensor: - 'current_status' - 'download_speed' - 'upload_speed' + - 'active_torrents' ``` Configuration variables: @@ -40,6 +41,7 @@ Configuration variables: - **current_status**: The status of your Transmission daemon. - **download_speed**: The current download speed. - **upload_speed**: The current upload speed. + - **active_torrents**: The current number of active torrents. To use the monitoring, your transmission client needs to allow remote access. If you are running the graphical transmission client (transmission-gtk) go to **Edit** -> **Preferences** and choose the tab **Remote**. Check **Allow remote access**, enter your username and your password, and uncheck the network restriction as needed. diff --git a/source/_components/sensor.travisci.markdown b/source/_components/sensor.travisci.markdown new file mode 100644 index 00000000000..a3944d69a82 --- /dev/null +++ b/source/_components/sensor.travisci.markdown @@ -0,0 +1,39 @@ +--- +layout: page +title: "Travis-CI Sensor" +description: "Instructions on how to integrate the test build results reported by Travis-CI within Home Assistant." +date: 2017-09-04 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: travisci.svg +ha_category: Sensor +ha_release: "0.56" +ha_iot_class: "Cloud Polling" +--- + +With this sensor platform, you will be able to integrate the test build results reported by [Travis-CI](https://travis-ci.org/) working within Home Assistant. + +To enable this platform, please add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: travisci + api_key: 123456789 +``` + +Configuration variables: + +- **api_key** (*Required*): GitHub [access token](https://github.com/settings/applications) with the following scopes: *read:org*, *user:email*, *repo_deployment*, *repo:status*, *write:repo_hook*. +- **branch** (*Optional*): Determine which default branch should be used by the **state** condition. Defaults to *master*. +- **scan_interval** (*Optional*): How frequently to query for new data. Defaults to 30 seconds. +- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. If not specified, all conditions below will be enabled by default. The following conditions can be monitored. + - **last_build_id**: Turn the last build job ID. + - **last_build_duration**: Return the time elapsed in seconds to run the last test job. + - **last_build_finished_at**: Return the timestamp of when the last test job finished. + - **last_build_started_at**: Return the timestamp of when the last test job started. + - **last_build_state**: Return the state from the latest test job/PR. The conditions can be: 'passed', 'failed' or 'started'. + - **state**: Return the build test from the branch specified at by **branch** parameter. +- **repository:** array (*Optional*): Name from the GitHub repositories to be monitored. If not specified, all GitHub repositories linked to Travis-CI will be enabled by default. diff --git a/source/_components/sensor.uber.markdown b/source/_components/sensor.uber.markdown index b742b849358..601de1fb879 100644 --- a/source/_components/sensor.uber.markdown +++ b/source/_components/sensor.uber.markdown @@ -14,8 +14,7 @@ ha_release: 0.16 --- -The `uber` sensor will give you time and price estimates for all available [Uber](https://uber.com) products at the given `start_latitude` and `start_longitude`.The `ATTRIBUTES` are used to provide extra information about products, such as estimated trip duration, distance and vehicle capacity. By default, 2 sensors will be created for each product at the given `start` location, one for pickup time and one for current price. The sensor is powered by the official Uber [API](https://developer.uber.com/). - +The `uber` sensor will give you time and price estimates for all available [Uber](https://uber.com) products at the given location. The `ATTRIBUTES` are used to provide extra information about products, such as estimated trip duration, distance and vehicle capacity. By default, 2 sensors will be created for each product at the given `start` location, one for pickup time and one for current price. The sensor is powered by the official Uber [API](https://developer.uber.com/). You must create an application [here](https://developer.uber.com/dashboard/create) to obtain a `server_token`. @@ -26,15 +25,13 @@ To enable this sensor, add the following lines to your `configuration.yaml` file sensor: - platform: uber server_token: 'BeAPPTDsWZSHLf7fd9OWjZkIezweRw18Q8NltY27' - start_latitude: 37.8116380 - start_longitude: -122.2648050 ``` Configuration variables: - **server_token** (*Required*): A server token obtained from [developer.uber.com](https://developer.uber.com) after [creating an app](https://developer.uber.com/dashboard/create). -- **start_latitude** (*Required*): The starting latitude for a trip. -- **start_longitude** (*Required*): The starting longitude for a trip. +- **start_latitude** (*Optional*): The starting latitude for a trip. Defaults to the latitude in your `configuration.yaml` file. +- **start_longitude** (*Optional*): The starting longitude for a trip. Defaults to the longitude in your `configuration.yaml` file. - **end_latitude** (*Optional*): The ending latitude for a trip. While `end_latitude` is optional, it is strongly recommended to provide an `end_latitude`/`end_longitude` when possible as you will get more accurate price and time estimates. - **end_longitude** (*Optional*): The ending longitude for a trip. While `end_longitude` is optional, it is strongly recommended to provide an `end_latitude`/`end_longitude` when possible as you will get more accurate price and time estimates. - **product_ids** (*Options*): A list of Uber product UUIDs. If provided, sensors will only be created for the given product IDs. Please note that product IDs are region and some times even more specific geographies based. The easiest way to find a UUID is to click on a sensor in the Home Assistant frontend and look for "Product ID" in the attributes. diff --git a/source/_components/sensor.uk_transport.markdown b/source/_components/sensor.uk_transport.markdown new file mode 100644 index 00000000000..759f37f982d --- /dev/null +++ b/source/_components/sensor.uk_transport.markdown @@ -0,0 +1,122 @@ +--- +layout: page +title: "UK transport" +description: "Display the current status of UK train and bus departures." +date: 2017-07-07 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: train.png +ha_category: Transport +ha_iot_class: "Cloud Polling" +ha_release: "0.50" +--- + + +The `uk_transport` sensor will display the time in minutes until the next departure in a specified direction from of a configured train station or bus stop. The sensor uses [transportAPI](http://www.transportapi.com/) to query live departure data and requires a developer application ID and key which can be obtained [here](https://developer.transportapi.com/). The [free tier](http://www.transportapi.com/plans/) allows 1000 requests daily, which is sufficient for a single sensor refreshing every 87 seconds. + +

+Additional sensors can be added but at the expense of a reduced refresh rate. 2 sensors can be updated every 2*87 = 174 seconds, and so on. +

+ +Queries are entered as a list, with the two transport modes available being `bus` and `train`. + +Train departure sensors require three character long `origin` and `destination` station codes which are searchable on the [National Rail enquiries](http://www.nationalrail.co.uk/times_fares/ldb.aspx) website (e.g. `WAT` is London Waterloo). The validity of a route can be checked by performing a GET request to `/uk/train/station/{station_code}/live.json` in the [API reference webpage](https://developer.transportapi.com/docs?raml=https://transportapi.com/v3/raml/transportapi.raml##request_uk_train_station_station_code_live_json). + +To add a single train departure sensor add the following to your `configuration.yaml` file: + + +```yaml +# Example configuration.yaml entry for a single sensor +sensor: + - platform: uk_transport + app_id: abc123 + app_key: efg456 + queries: + - mode: train + origin: MAL + destination: WAT +``` + +Configuration variables: + +- **app_id** (*Required*): Your application id +- **app_key** (*Required*): Your application key +- **queries** array (*Required*): At least one entry required. +- **mode** (*Required*): One of `bus` or `train`. +- **origin** (*Required*): Specify the three character long origin station code. +- **destination** (*Required*): Specify the three character long destination station code. + +A large amount of information about upcoming departures is available within the attributes of the sensor. The example above creates a sensor with ID `sensor.next_train_to_wat` with the attribute `next_trains` which is a list of the next 25 departing trains. The status of the next departing train is accessed using the [template sensor](https://home-assistant.io/components/sensor.template/) below, as are the train origin, estimated and scheduled departure times, and the departure platform. + +```yaml +# Example configuration.yaml entry for a template sensor to access the attributes of the next departing train. +- platform: template + sensors: + next_train_status: + friendly_name: 'Next train status' + value_template: {% raw %}'{{states.sensor.next_train_to_wat.attributes.next_trains[0].status}}'{% endraw %} + next_trains_origin: + friendly_name: 'Next train origin' + value_template: {% raw %}'{{states.sensor.next_train_to_wat.attributes.next_trains[0].origin_name}}'{% endraw %} + next_trains_estimated: + friendly_name: 'Next train estimated' + value_template: {% raw %}'{{states.sensor.next_train_to_wat.attributes.next_trains[0].estimated}}'{% endraw %} + next_trains_scheduled: + friendly_name: 'Next train scheduled' + value_template: {% raw %}'{{states.sensor.next_train_to_wat.attributes.next_trains[0].scheduled}}'{% endraw %} + next_trains_platform: + friendly_name: 'Next train platform' + value_template: {% raw %}'{{states.sensor.next_train_to_wat.attributes.next_trains[0].platform}}'{% endraw %} + +``` + +Bus sensors require as their `origin` a bus stop ATCO code which can be found by browsing OpenStreetMap data as +follows: + +1. On [OpenStreetMap.org](http://www.openstreetmap.org/) zoom right in on a bus +stop you're interested in +2. Click the layers picker button on the right hand side +3. Tick the 'map data' layer, and wait for clickable objects to load +4. Click the bus stop node to reveal its tags on the left + +The `destination` must be a valid location in the "direction" field returned by a GET query to `/uk/bus/stop/{atcocode}/live.json` as described in the [API reference webpage](https://developer.transportapi.com/docs?raml=https://transportapi.com/v3/raml/transportapi.raml##bus_information). A bus sensor is added in the following `configuration.yaml` file entry: + +```yaml +# Example configuration.yaml entry for multiple sensors +sensor: + - platform: uk_transport + app_id: abc123 + app_key: efg456 + queries: + - mode: bus + origin: 340000368SHE + destination: Wantage + - mode: train + origin: MAL + destination: WAT +``` + +And the template sensor for viewing the next bus attributes. + +```yaml +# Example configuration.yaml entry for a template sensor to access the attributes of the next departing bus. +- platform: template + sensors: + next_bus_route: + friendly_name: 'Next bus route' + value_template: {% raw %}'{{states.sensor.next_bus_to_wantage.attributes.next_buses[0].route}}'{% endraw %} + next_bus_direction: + friendly_name: 'Next bus direction' + value_template: {% raw %}'{{states.sensor.next_bus_to_wantage.attributes.next_buses[0].direction}}'{% endraw %} + next_bus_scheduled: + friendly_name: 'Next bus scheduled' + value_template: {% raw %}'{{states.sensor.next_bus_to_wantage.attributes.next_buses[0].scheduled}}'{% endraw %} + next_bus_estimated: + friendly_name: 'Next bus estimated' + value_template: {% raw %}'{{states.sensor.next_bus_to_wantage.attributes.next_buses[0].estimated}}'{% endraw %} + +``` + +Powered by [transportAPI](http://www.transportapi.com/) diff --git a/source/_components/sensor.upnp.markdown b/source/_components/sensor.upnp.markdown new file mode 100644 index 00000000000..c9d31bcca21 --- /dev/null +++ b/source/_components/sensor.upnp.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "UPNP Sensor" +description: "Instructions on how to integrate UPNP sensors with Home Assistant." +date: 2017-06-18 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: upnp.png +ha_category: "Other" +ha_release: 0.48 +ha_iot_class: "Local Polling" +--- + + +The `upnp` sensor platform allows one to get the network statistics from your router such as bytes in/out and packets in/out. + +To use your UPNP sensor in your installation, you need to set up the [`upnp`](/components/upnp/) component. + diff --git a/source/_components/sensor.uptime.markdown b/source/_components/sensor.uptime.markdown new file mode 100644 index 00000000000..b17f9857976 --- /dev/null +++ b/source/_components/sensor.uptime.markdown @@ -0,0 +1,38 @@ +--- +layout: page +title: "Uptime Sensor" +description: "Instructions how to integrate an uptime sensor into Home Assistant." +date: 2017-10-13 10:30 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Sensor +ha_iot_class: "Local Pushing" +logo: home-assistant.png +ha_release: 0.56 +--- + + +The `uptime` sensor platform displays the time since the last Home Assistant restart. + +To enable this sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: uptime +``` + +Configuration variables: + +- **name** (*Optional*): Name of the sensor. Defaults to `Uptime`. +- **unit_of_measurement** (*Optional*): Units for uptime measurement in either `days`, `hours`, or `minutes`. Defaults to `days`. + +```yaml +# Example with configuration variables +sensor: + - platform: uptime + name: Time Online + unit_of_measurement: hours +```` diff --git a/source/_components/sensor.usps.markdown b/source/_components/sensor.usps.markdown index 4bc83ad9537..46244107308 100644 --- a/source/_components/sensor.usps.markdown +++ b/source/_components/sensor.usps.markdown @@ -13,27 +13,6 @@ ha_release: 0.36 ha_iot_class: "Cloud Polling" --- -The `usps` platform allows one to track deliveries and inbound mail from the [US Postal Service (USPS)](https://www.usps.com/). -In addition to having a USPS account, you will need to complete the "Opt-In" process by clicking "Get Started Now" on [this page](https://my.usps.com/mobileWeb/pages/intro/start.action). You must also "Opt-In" to [Informed Delivery](https://informeddelivery.usps.com/box/pages/intro/start.action) to see inbound mail. +The `usps` sensor component allows you to view statistics on incoming mail and packages made available through USPS via the Informed Delivery service. You must "Opt-In" to [Informed Delivery](https://informeddelivery.usps.com/box/pages/intro/start.action) to see mail images. This works in concert with [USPS camera](/components/camera.usps). -To enable this sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: usps - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -You will see two new sensors, one for packages and one for mail. - -Configuration options for the USPS Sensor: - -- **username** (*Required*): The username to access the MyUSPS service. -- **password** (*Required*): The password for the given username. -- **name** (*Optional*): Prefix for sensor names (defaults to "USPS") - -

-The USPS sensor logs into the MyUSPS website to scrape package data. It does not use an API. -

+To enable this sensor in your installation, set up the [USPS component](/components/usps) with your username and password. diff --git a/source/_components/sensor.vasttrafik.markdown b/source/_components/sensor.vasttrafik.markdown index 3f26d8ce5ab..787e5b237ae 100644 --- a/source/_components/sensor.vasttrafik.markdown +++ b/source/_components/sensor.vasttrafik.markdown @@ -27,10 +27,7 @@ sensor: key: XXXXXXXXXXXXXXXXXXX secret: YYYYYYYYYYYYYYYYY departures: - - name: Mot järntorget - from: Musikvägen - heading: Järntorget - delay: 10 + - from: Musikvägen ``` Configuration variables: @@ -41,6 +38,21 @@ Configuration variables: - **name** (*Optional*): Name of the route. - **from** (*Required*): The start station. - **heading** (*Optional*): Direction of the travelling. - - **delay** (*Optional*): Delay in minutes. + - **delay** (*Optional*): Delay in minutes. Defaults to 0. The data are coming from [Västtrafik](https://vasttrafik.se/). + +A full configuration example could look like this: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: vasttrafik + key: XXXXXXXXXXXXXXXXXXX + secret: YYYYYYYYYYYYYYYYY + departures: + - name: Mot järntorget + from: Musikvägen + heading: Järntorget + delay: 10 +``` diff --git a/source/_components/sensor.vera.markdown b/source/_components/sensor.vera.markdown index 8bb59976248..bd32fdd408e 100644 --- a/source/_components/sensor.vera.markdown +++ b/source/_components/sensor.vera.markdown @@ -17,7 +17,7 @@ The `vera` platform allows you to get data from your [Vera](http://getvera.com/) They will be automatically discovered if the vera component is loaded. -Please note that some vera sensors (such as _motion_ and _flood_ sensors) are _armable_ which means that vera will send alerts (email messages ot txts) when they are _armed_ an change state. +Please note that some vera sensors (such as _motion_ and _flood_ sensors) are _armable_ which means that vera will send alerts (email messages to txts) when they are _armed_ an change state. Home Assistant will display the state of these sensors regardless of the _armed_ state. diff --git a/source/_components/sensor.version.markdown b/source/_components/sensor.version.markdown new file mode 100644 index 00000000000..3f8eaa196e4 --- /dev/null +++ b/source/_components/sensor.version.markdown @@ -0,0 +1,67 @@ +--- +layout: page +title: "Version Sensor" +description: "Instructions how to integrate a version sensor into Home Assistant." +date: 2017-08-10 10:30 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Sensor +ha_iot_class: "Local Pushing" +logo: home-assistant.png +ha_release: 0.52 +--- + + +The `version` sensor platform is displaying the current version of Home Assistant in the frontend. + +To enable this sensor, add the following lines to your `configuration.yaml` file for a GET request: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: version +``` + +Configuration variables: + +- **name** (*Optional*): Name of the sensor. Defaults to `Current Version`. + +## {% linkable_title Alternatives %} + +This sensor is an alternative to the existing solutions to achieve the same result through various platforms. Remember that you can easily get the installed version on the command line. + +```bash +$ hass --version +``` + +Or go to the service developer tool icon **Info** section of the **Developer Tools**. + +A [`command_line`](/components/sensor.command_line/) with [`hass`](/docs/tools/hass/) to display your current version. + +```yaml +sensor: + - platform: command_line + name: Version + command: "/home/homeassistant/bin/hass --version" +``` + +It's also possible to ready a file called `.HA_VERSION` which is located in your Home Assistant [configuration](/docs/configuration/) folder. + +```yaml +sensor: + - platform: command_line + name: Version + command: "cat /home/homeassistant/.homeassistant/.HA_VERSION" +``` + +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. + +```yaml +sensor: + - platform: rest + resource: http://IP_ADDRESS:8123/api/config + name: Current Version + value_template: '{{ value_json.version }}' +``` diff --git a/source/_components/sensor.vultr.markdown b/source/_components/sensor.vultr.markdown new file mode 100644 index 00000000000..5aa03c73931 --- /dev/null +++ b/source/_components/sensor.vultr.markdown @@ -0,0 +1,76 @@ +--- +layout: page +title: "Vultr Sensor" +description: "Instructions on how to integrate Vultr sensor within Home Assistant." +date: 2017-10-17 21:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: vultr.png +ha_release: "0.58" +ha_category: System Monitor +ha_iot_class: "Cloud Polling" +--- + + +The `vultr` sensor platform will allow you to view current bandwidth usage and pending charges against your [Vultr](https://www.vultr.com/) subscription. + +To use this sensor, you must 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` +

+ +Minimal `configuration.yaml` (produces `sensor.vultr_web_server_current_bandwidth_used` and `sensor.vultr_web_server_pending_charges`): + +```yaml +sensor: + - platform: vultr + subscription: 123456 +``` + +{% configuration %} +subscription: + description: The Vultr subscription to monitor, this can be found in the URL when viewing a subscription. + required: true + type: string +name: + description: The name to give this sensor. + required: false + default: "Vultr {Vultr subscription label} {monitored condition name}" + type: string +monitored_conditions: + description: List of items you want to monitor for each subscription. + required: false + detault: All conditions + type: list + keys: + current_bandwidth_used: + description: The current (invoice period) bandwidth usage in Gigabytes (GB). + temperature: + pending_charges: The current (invoice period) charges that have built up for this subscription. Value is in US Dollars (US$). +{% endconfiguration %} + +Full `configuration.yaml` using `{}` to format condition name (produces `sensor.server_current_bandwidth_used` and `sensor.server_pending_charges`): + +```yaml +sensor: + - platform: vultr + name: Server {} + subscription: 123456 + monitored_conditions: + - current_bandwidth_used + - pending_charges +``` + +Custom `configuration.yaml` with only one condition monitored (produces `sensor.web_server_bandwidth`): +```yaml +sensor: + - platform: vultr + name: Web Server Bandwidth + subscription: 123456 + monitored_conditions: + - current_bandwidth_used +``` + diff --git a/source/_components/sensor.whois.markdown b/source/_components/sensor.whois.markdown new file mode 100644 index 00000000000..7a6937ce33f --- /dev/null +++ b/source/_components/sensor.whois.markdown @@ -0,0 +1,38 @@ +--- +layout: page +title: "Whois Sensor" +description: "Instructions on how to integrate WHOIS lookup sensor within Home Assistant." +date: 2017-10-22 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: icann.png +ha_category: Sensor +ha_release: "0.57" +ha_iot_class: "Cloud Polling" +--- + + +`whois` sensor allows you to perform daily WHOIS lookups against your owned domains. This provides you with information such as `expiration_date`, `name_servers`, and `registrar` details. + +```yaml +# Example configuration.yaml entry +sensor: + - platform: whois + domain: example.net + name: primary +``` + +{% configuration %} + domain: + description: The domain you want to perform WHOIS lookups against. + required: true + type: string + name: + description: Name to use in the frontend. + required: false + default: Whois + type: string +{% endconfiguration %} + diff --git a/source/_components/sensor.wink.markdown b/source/_components/sensor.wink.markdown index 402a92dba70..5a54a704243 100644 --- a/source/_components/sensor.wink.markdown +++ b/source/_components/sensor.wink.markdown @@ -27,9 +27,9 @@ The requirement is that you have setup [Wink](/components/wink/). - Wink eggminder (No Wink hub required) - Nest protect Smoke and CO severity (No confirmation that this is actually reported) (No Wink hub required) - Motion sensor temperature -- Quirky refuel propane tank monitor +- Quirky refuel propane tank monitor (No Wink hub required)

-The above devices are confimed to work, but others may work as well. +The above devices are confirmed to work, but others may work as well.

diff --git a/source/_components/sensor.worldtidesinfo.markdown b/source/_components/sensor.worldtidesinfo.markdown new file mode 100644 index 00000000000..955f380d4a8 --- /dev/null +++ b/source/_components/sensor.worldtidesinfo.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "World Tides" +description: "Instructions how to add Tides information to Home Assistant." +date: 2017-08-23 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: worldtidesinfo.png +ha_category: Weather +ha_release: 0.52 +--- + +The `worldtidesinfo` sensor platform uses details from [World Tides](https://www.worldtides.info/) to provide information about the prediction for the tides for any location in the world. + +To use this sensor, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: worldtidesinfo + api_key: YOUR_API_KEY +``` + +Configuration variables: + +- **api_key** (*Required*): Your API key for https://www.worldtides.info/. +- **name** (*Optional*): Name to use in the frontend. +- **latitude** (*Optional*): Latitude of the location to display the tides. Defaults to the latitude in your `configuration.yaml` file. +- **longitude** (*Optional*): Longitude of the location to display the tides. Defaults to the longitude in your `configuration.yaml` file. + diff --git a/source/_components/sensor.worxlandroid.markdown b/source/_components/sensor.worxlandroid.markdown new file mode 100644 index 00000000000..5f52ac95d9d --- /dev/null +++ b/source/_components/sensor.worxlandroid.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "Worx Landroid" +description: "Instructions how to integrate Worx Landroid WG796E.1 or WG797E as sensors within Home Assistant." +date: 2017-09-12 13:23 +sidebar: true +comments: false +sharing: true +footer: true +logo: worx.png +ha_category: DIY +ha_release: 0.54 +ha_iot_class: "Local Polling" +--- + +The `worxlandroid` sensor platform allows you to get the current state, battery level and error status Worx Landroid WG796E.1 or WG797E. + +To use your Worx Landroid mower in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + platform: worxlandroid + host: 192.168.0.10 + pin: 1234 +``` + +Configuration variables: + +- **host** (*Required*): The ip address or host name of the mower. +- **pin** (*Required*): The pin code for the mower. +- **allow_unreachable** (*Optional*): This will allow the mower to be outside of wifi range without raising an error (default: True). diff --git a/source/_components/sensor.wunderground.markdown b/source/_components/sensor.wunderground.markdown index 195a43b3cb0..4183dfa0b08 100644 --- a/source/_components/sensor.wunderground.markdown +++ b/source/_components/sensor.wunderground.markdown @@ -34,10 +34,10 @@ sensor: Configuration variables: -- **api_key** (Required): The API key for Weather Underground. See above for details. -- **pws_id** (Optional): You can enter a Personal Weather Station ID. The current list of Wunderground PWS stations is available [here](https://www.wunderground.com/weatherstation/ListStations.asp). If you do not enter a PWS ID, the current location information (latitude and longitude) from your `configuration.yaml` will be used to display weather conditions. -- **lang** (Optional): Specify the language that the API returns. The current list of all Wunderground language codes is available [here](https://www.wunderground.com/weather/api/d/docs?d=language-support). If not specified, it defaults to English (EN). -- **latitude** (*Optional*): Latitude coordinate to monitor weather of (required if **longitude** is specificed). Defaults to coordinates defined in your `configuration.yaml`. +- **api_key** (*Required*): The API key for Weather Underground. See above for details. +- **pws_id** (*Optional*): You can enter a Personal Weather Station ID. The current list of Wunderground PWS stations is available [here](https://www.wunderground.com/weatherstation/ListStations.asp). If you do not enter a PWS ID, the current location information (latitude and longitude) from your `configuration.yaml` will be used to display weather conditions. +- **lang** (*Optional*): Specify the language that the API returns. The current list of all Wunderground language codes is available [here](https://www.wunderground.com/weather/api/d/docs?d=language-support). If not specified, it defaults to English (EN). +- **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. The following conditions can be monitored. - **alerts**: Current severe weather advisories @@ -56,22 +56,22 @@ Configuration variables: - **precip_today_in**: Total precipitation in inches - **precip_today_metric**: Total precipitation in metric units - **precip_today_string**: Text summary of precipitation today - - **precip_1d_mm** [[1d]](#1d): Forecasted precipitation intensity in milimeters + - **precip_1d_mm** [[1d]](#1d): Forecasted precipitation intensity in millimeters - **precip_1d_in** [[1d]](#1d): Forecasted precipitation intensity in inches - **precip_1d** [[1d]](#1d): Forecasted precipitation probability in % - **pressure_in**: Atmospheric air pressure in inches - **pressure_mb**: Atmospheric air pressure in millibars - - **pressure_trend**: Atmospheric air presure trend signal (+/-) + - **pressure_trend**: Atmospheric air pressure trend signal (+/-) - **relative_humidity**: Relative humidity - **station_id**: Your personal weather station (PWS) ID - **solarradiation**: Current levels of solar radiation - - **temperature_string**: Temperature text combinding Fahrenheit and Celsius + - **temperature_string**: Temperature text combining Fahrenheit and Celsius - **temp_c**: Current temperature in Celsius - **temp_f**: Current temperature in Fahrenheit - - **temp_high_record_c**: Maximum temperature meassured in Celsius - - **temp_high_record_f**: Maximum temperature meassured in Fahrenheit - - **temp_low_record_c**: Minimal temperature meassured in Celsius - - **temp_low_record_f**: Minimal temperature meassured in Fahrenheit + - **temp_high_record_c**: Maximum temperature measured in Celsius + - **temp_high_record_f**: Maximum temperature measured in Fahrenheit + - **temp_low_record_c**: Minimal temperature measured in Celsius + - **temp_low_record_f**: Minimal temperature measured in Fahrenheit - **temp_high_avg_c**: Average high for today in Celsius - **temp_high_avg_f**: Average high for today in Fahrenheit - **temp_low_avg_c**: Average low for today in Celsius @@ -125,7 +125,7 @@ in the `_1h_` part of the sensor name with `1` to `36`. E.g. `weather_24h` will ```yaml sensor: - platform: wunderground - - api_key: your_api_key + api_key: your_api_key monitored_conditions: - weather_1d_metric - weather_1n_metric @@ -137,7 +137,7 @@ sensor: - weather_4n_metric group: - dialy_forecast: + daily_forecast: name: Daily Forecast entities: - sensor.pws_weather_1d_metric @@ -158,7 +158,7 @@ group: ```yaml sensor: - platform: wunderground - - api_key: your_api_key + api_key: your_api_key monitored_conditions: - temp_high_record_c - temp_high_1d_c diff --git a/source/_components/sensor.xiaomi_aqara.markdown b/source/_components/sensor.xiaomi_aqara.markdown new file mode 100644 index 00000000000..247a9a94c9e --- /dev/null +++ b/source/_components/sensor.xiaomi_aqara.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Xiaomi Sensor" +description: "Instructions how to setup the Xiaomi sensor within Home Assistant." +date: 2017-07-21 16:34 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: Sensor +ha_release: "0.50" +ha_iot_class: "Local Push" +--- + + +The `xiaomi aqara` sensor platform allows you to get data from your [Xiaomi](http://www.mi.com/en/) sensors. + +The requirement is that you have setup [Xiaomi aqara](/components/xiaomi_aqara/). + diff --git a/source/_components/sensor.yr.markdown b/source/_components/sensor.yr.markdown index 85951054815..362c3aaedbf 100644 --- a/source/_components/sensor.yr.markdown +++ b/source/_components/sensor.yr.markdown @@ -14,7 +14,7 @@ ha_iot_class: "Cloud Polling" --- -The `yr` platform uses [YR.no](http://www.yr.no/) as an source for current meteorological data for your location. The +The `yr` platform uses [YR.no](http://www.yr.no/) as an source for current meteorological data for your location. The weather forecast is delivered by the Norwegian Meteorological Institute and the NRK. To add YR to your installation, add the following to your `configuration.yaml` file: @@ -27,6 +27,8 @@ sensor: Configuration variables: +- **name** (*Optional*): Additional name for the sensors. Default to platform name. +- **forecast** integer (*Optional*): If you want to get forecast data instead of the current weather data, set this to the number of hours that you want to look into the future. - **monitored_conditions** array (*Optional*): Conditions to display in the frontend. - **symbol**: A symbol for the current weather. - **temperature**: The current temperature. @@ -48,6 +50,8 @@ A full configuration example can be found below: # Example configuration.yaml entry sensor: - platform: yr + name: Weather + forecast: 24 monitored_conditions: - temperature - symbol diff --git a/source/_components/sensor.zabbix.markdown b/source/_components/sensor.zabbix.markdown index 9a3a123a8ab..daf65e1a784 100644 --- a/source/_components/sensor.zabbix.markdown +++ b/source/_components/sensor.zabbix.markdown @@ -36,5 +36,5 @@ Configuration variables: - **triggers** array(*Required*): Specifies that this sensor is for Zabbix 'triggers'. In the future there will be other Zabbix sensors. - **name** (*Optional*): Allows you to specify the name for the Sensor, otherwise the host name, as stored in Zabbix, is used. This is useful when you are specifying a list of hostids to monitor as a single count. - **hostids** (*Optional*): This is a list of Zabbis hostids that we want to filter our count on. -- **individual** (*Optional*): A 'true'/'false' to specify whether we should show individual sensors when a list of hostsids is provided. If false, the sensor state will be the count of all triggers for the specified hosts (or all hosts within the Zabbix instance, if hostids isn't provided). +- **individual** (*Optional*): A 'true'/'false' to specify whether we should show individual sensors when a list of hostids is provided. If false, the sensor state will be the count of all triggers for the specified hosts (or all hosts within the Zabbix instance, if hostids isn't provided). diff --git a/source/_components/sensor.zamg.markdown b/source/_components/sensor.zamg.markdown index dfdf649582a..9c6558a5693 100644 --- a/source/_components/sensor.zamg.markdown +++ b/source/_components/sensor.zamg.markdown @@ -15,7 +15,7 @@ ha_iot_class: "Cloud Polling" The `zamg` platform uses meteorological details published by the Austrian weather service [Zentralanstalt für Meteorologie und Geodynamik (ZAMG)](https://www.zamg.ac.at). -Only observations for capital cities are publically available. You can check the list of stations in [CSV format](http://www.zamg.ac.at/ogd). +Only observations for capital cities are publicly available. You can check the list of stations in [CSV format](http://www.zamg.ac.at/ogd). To add ZAMG to your installation, add the following to your `configuration.yaml` file: @@ -23,17 +23,15 @@ To add ZAMG to your installation, add the following to your `configuration.yaml` # Example configuration.yaml entry sensor: - platform: zamg - station_id: 11035 - monitored_conditions: - - temperature - - humidity ``` Configuration variables: - **station_id** (*Optional*): The ID number for a supported ZAMG station. - **name** (*Optional*): Additional name for the sensors. Defaults to platform name. -- **monitored_conditions** array (*Required*): Conditions to display in the frontend. +- **latitude** (*Optional*): Latitude coordinate to monitor weather of (required if **longitude** is specified). Defaults to coordinates defined in your `configuration.yaml` file. +- **longitude** (*Optional*): Longitude coordinate to monitor weather of (required if **latitude** is specified). Defaults to coordinates defined in your `configuration.yaml` file. +- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. - **pressure**: Pressure at station level - **pressure_sealevel**: Pressure at sea Level - **humidity**: Humidity @@ -46,7 +44,19 @@ Configuration variables: - **precipitation**: Precipitation - **dewpoint**: Dew point +A full configuration example: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: zamg + station_id: 11035 + name: Wien + monitored_conditions: + - temperature + - humidity +``` +

-This sensor is an alternative to the [`zamg`](/components/weather.zamg/) weather platform. -The weather platform is easier to configure but less customisable. +This sensor is an alternative to the [`zamg`](/components/weather.zamg/) weather platform. The `zamg` weather platform is easier to configure but less customizable.

diff --git a/source/_components/sensor.zha.markdown b/source/_components/sensor.zha.markdown index df15439d4ca..03c0687d278 100644 --- a/source/_components/sensor.zha.markdown +++ b/source/_components/sensor.zha.markdown @@ -1,7 +1,7 @@ --- layout: page title: "ZigBee Home Automation Sensor" -description: "Instructions how to setup ZigBee Home Automation sensors within Home Assistant." +description: "Instructions on how to setup ZigBee Home Automation sensors within Home Assistant." date: 2017-02-22 00:00 sidebar: true comments: false @@ -12,4 +12,5 @@ ha_category: Sensor ha_iot_class: "Local Polling" --- -To get your ZigBee sensors working with Home Assistant, follow theminstructions for the general [ZigBee Home Automationmcomponent](/components/zha/). +To get your ZigBee sensors working with Home Assistant, follow the instructions for the general [ZigBee Home Automation Component](/components/zha/). + diff --git a/source/_components/shell_command.markdown b/source/_components/shell_command.markdown index c7c55e557de..d9f64f8a072 100644 --- a/source/_components/shell_command.markdown +++ b/source/_components/shell_command.markdown @@ -12,6 +12,7 @@ logo: home-assistant.png --- This component can expose regular shell commands as services. Services can be called from a [script] or in [automation]. +Shell commands aren't allowed for a camel-case naming, please use lowercase naming only and separate the names with underscores. [script]: /components/script/ [automation]: /getting-started/automation/ @@ -39,11 +40,11 @@ automation: - alias: run_set_ac trigger: platform: state - entity_id: input_slider.ac_temperature + entity_id: input_number.ac_temperature action: service: shell_command.set_ac_to_slider -input_slider: +input_number: ac_temperature: name: A/C Setting initial: 24 @@ -53,6 +54,6 @@ input_slider: {% raw %} shell_command: - set_ac_to_slider: 'irsend SEND_ONCE DELONGHI AC_{{ states.input_slider.ac_temperature.state }}_AUTO' + set_ac_to_slider: 'irsend SEND_ONCE DELONGHI AC_{{ states.input_number.ac_temperature.state }}_AUTO' {% endraw %} ``` diff --git a/source/_components/shiftr.markdown b/source/_components/shiftr.markdown index e022cd1a7b9..16ae6a53f05 100644 --- a/source/_components/shiftr.markdown +++ b/source/_components/shiftr.markdown @@ -2,7 +2,7 @@ layout: page title: "Shiftr.io" description: "Transfer events to Shiftr.io." -date: 2017-07-16 07:00 +date: 2017-06-16 07:00 sidebar: true comments: false sharing: true diff --git a/source/_components/shopping_list.markdown b/source/_components/shopping_list.markdown new file mode 100644 index 00000000000..c30bbd9ff6e --- /dev/null +++ b/source/_components/shopping_list.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Shopping List" +description: "Instructions on how to integrate a Shopping list into Home Assistant using Intent." +date: 2017-07-29 13:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Intent +ha_release: "0.50" +--- + +The `shopping_list` component allows you to keep track of shopping list items. Includes the ability to add items via your voice using the sentence "Add eggs to my shopping list". + +```yaml +# Example configuration.yaml entry +shopping_list: +``` diff --git a/source/_components/skybell.markdown b/source/_components/skybell.markdown new file mode 100644 index 00000000000..b160a879231 --- /dev/null +++ b/source/_components/skybell.markdown @@ -0,0 +1,34 @@ +--- +layout: page +title: "Skybell" +description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." +date: 2017-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: skybell.png +ha_category: Hub +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + +The `skybell` implementation allows you to integrate your [Skybell.com](https://skybell.com) doorbells in Home Assistant. + +Currently only the Skybell HD is supported by this platform. + +To enable devices set up with your [Skybell.com](https://skybell.com/) account, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +skybell: + username: you@example.com + password: secret +``` + +Configuration variables: + +- **username** (*Required*): The username for accessing your Skybell account. +- **password** (*Required*): The password for accessing your Skybell account. + +Finish your configuration by visiting the [Skybell binary sensor](/components/binary_sensor.skybell/), [Skybell camera](/components/camera.skybell/), [Skybell light](/components/light.skybell/), [Skybell sensor](/components/sensor.skybell/), or [Skybell switch](/components/switch.skybell/) documentation. diff --git a/source/_components/snips.markdown b/source/_components/snips.markdown new file mode 100644 index 00000000000..ef4b7d04295 --- /dev/null +++ b/source/_components/snips.markdown @@ -0,0 +1,115 @@ +--- +layout: page +title: "Snips" +description: "Instructions how to integrate Snips within Home Assistant." +date: 2017-06-22 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: snips.png +ha_category: Voice +ha_release: 0.48 +--- + +The [Snips Voice Platform](https://www.snips.ai) allows users to add powerful voice assistants to their Raspberry Pi devices without compromising on Privacy. It runs 100% on-device, and does not require an Internet connection. It features Hotword Detection, Automatic Speech Recognition (ASR), Natural Language Understanding (NLU) and Dialog Management. + +![Snips Modules](/images/screenshots/snips_modules.png) + +Snips takes voice or text as input, and produces *intents* as output, which are explicit representations of an intention behind an utterance, and which can subsequently be used by Home Assistant to perform appropriate actions. + +![Snips Modules](/images/screenshots/snips_nlu.png) + + +## {% linkable_title The Snips Voice Platform %} + +### Installation + +The Snips Voice Platform is installed on Raspberry Pi with the following command: + +```sh +(pi) $ curl https://install.snips.ai -sSf | sh +``` + +### Creating an assistant + +
+ +
+ +Snips assistants are created via the [Snips Console](https://console.snips.ai). Once trained, the assistant should be downloaded and copied to the Raspberry Pi: + +```sh +$ scp assistantproj_XXX.zip pi@pi_hostname:/home/pi/assistant.zip +``` + +and installed locally via the `snips-install-assistant` helper script: + +```sh +(pi) $ sudo snips-install-assistant assistant.zip +``` + +### Running Snips + +Make sure that a microphone is plugged to the Raspberry Pi. If you are having trouble setting up audio, we have written a guide on [Raspberry Pi Audio Configuration](https://github.com/snipsco/snips-platform-documentation/wiki/1.-Setup-the-Snips-Voice-Platform-on-your-Raspberry-Pi#configuring-the-audio). + +Start the Snips Voice Platform using the `snips` command: + +```sh +(pi) $ snips +``` + +Snips is now ready to take voice commands from the microphone. To trigger the listening, simply say + +> Hey Snips + +followed by a command, e.g. + +> Set the lights to green in the living room + +We should see the transcribed phrase in the logs, as well as a properly parsed intent. The intent is published on MQTT, on the `hermes/nlu/intentParsed` topic. The Snips Home Assistant component subscribes to this topic, and handles the intent according to the rules defined in `configuration.yaml`, as explained below. + +#### Optional: specifying an external MQTT broker + +By default, Snips runs its own MQTT broker. But we can also tell Snips to use an external broker by specifying this when launching Snips. In this case, instead of running the `snips` command above (which assumes we are using the internal MQTT broker), we use the full launch command with explicitly specified parameters (replace `MQTT_BROKER_IP` and `MQTT_BROKER_PORT` with appropriate values): + +```sh +$ docker run -t --rm --name snips --log-driver none -v /home/pi/.asoundrc:/root/.asoundrc -v /opt/snips/config:/opt/snips/config --privileged -v /dev/snd:/dev/snd snipsdocker/platform --mqtt MQTT_BROKER_IP:MQTT_BROKER_PORT +``` + +For more details on launch options, check the documentation on [Snips Platform Commands](https://github.com/snipsco/snips-platform-documentation/wiki/6.--Learn-more:-Platform-Commands#using-a-custom-mqtt-bus). + +## Home Assistant configuration + +### Specifying the MQTT broker + +Messages between Snips and Home Assistant are passed via MQTT. We must tell Home Assistant which MQTT broker to use by adding the following entry to `configuration.yaml`: + +```yaml +mqtt: + broker: MQTT_BROKER_IP + port: MQTT_BROKER_PORT +``` + +As explained above, Snips by default runs an MQTT broker on port 9898. So if we wish to use this broker, the entry will look as follows: + +```yaml +mqtt: + broker: 127.0.0.1 + port: 9898 +``` +### Triggering actions + +In Home Assistant, we trigger actions based on intents produced by Snips using the [`intent_script`](/components/intent_script) component. For instance, the following block handles `ActivateLightColors` intents (included in the Snips IoT intent bundle) to change light colors: + +```yaml +snips: + +intent_script: + ActivateLightColor: + action: + - service: light.turn_on + data_template: + entity_id: light.{% raw %}{{ objectLocation | replace(" ","_") }}{% endraw %} + color_name: {% raw %}{{ objectColor }}{% endraw %} +``` diff --git a/source/_components/statsd.markdown b/source/_components/statsd.markdown index e9bed98ef1d..4b0b5249b2f 100644 --- a/source/_components/statsd.markdown +++ b/source/_components/statsd.markdown @@ -28,6 +28,18 @@ Configuration variables: - **prefix** (*Optional*): Prefix to use. Defaults to `hass`. - **rate** (*Optional*): The sample rate. Defaults to 1. - **log_attributes** (*Optional*): Log state and attribute changes. This changes the default stats path. +- **value_mapping** (*Optional*): Map non-numerical values to numerical ones. + +Full example: + +```yaml +# Example configuration.yaml entry +statsd: + prefix: home + rate: 5 + value_mapping: + cooling: 1 + heating: 10 +``` StatsD supports various [backends](https://github.com/etsy/statsd/blob/master/docs/backend.md). - diff --git a/source/_components/sun.markdown b/source/_components/sun.markdown index 4e34e985e30..8de87f43be5 100644 --- a/source/_components/sun.markdown +++ b/source/_components/sun.markdown @@ -22,7 +22,7 @@ sun: Configuration variables: -- **elevation** (*Optional*): The (physical) elevation of your location, in metres above sea level. Defaults to the `elevation` in `configuration.yaml`, which is retrieved from Google Maps if not set. +- **elevation** (*Optional*): The (physical) elevation of your location, in meters above sea level. Defaults to the `elevation` in `configuration.yaml`, which is retrieved from Google Maps if not set.

diff --git a/source/_components/switch.abode.markdown b/source/_components/switch.abode.markdown new file mode 100644 index 00000000000..8979b0e2866 --- /dev/null +++ b/source/_components/switch.abode.markdown @@ -0,0 +1,22 @@ +--- +layout: page +title: "Abode Switch" +description: "Instructions how to integrate Abode switches into Home Assistant." +date: 2017-08-26 13:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: abode.jpg +ha_release: 0.52 +ha_category: Switch +ha_iot_class: "Cloud Push" +--- + +The `abode` security control panel platform allows you to control your [Abode](https://goabode.com/) alarms. + +This component will automatically add `Power Switches` configured in your Abode account. You can reclassify switches to show up within Home Assistant as `Lights` by listing the Abode device ID in your [configuration](/components/abode/#configuration). + +This component will also list all Abode `Automations` that are set up within the Abode system, allowing you to activate and deactivate the automations. + +The requirement is that you have setup your [Abode hub](/components/abode/). diff --git a/source/_components/switch.anel_pwrctrl.markdown b/source/_components/switch.anel_pwrctrl.markdown index 5e2801fb137..fbd3023d3f8 100644 --- a/source/_components/switch.anel_pwrctrl.markdown +++ b/source/_components/switch.anel_pwrctrl.markdown @@ -40,4 +40,4 @@ Configuration variables: - **username** (*Required*): The username for your device. - **password** (*Required*): The password for your device. -

If no **host** is given the platform will try to autodiscover all devices on the network, that are listening on the given **port_recv**.

+

If no **host** is given the platform will try to auto-discover all devices on the network, that are listening on the given **port_recv**.

diff --git a/source/_components/switch.arest.markdown b/source/_components/switch.arest.markdown index a668611b16e..bca17d23c5b 100644 --- a/source/_components/switch.arest.markdown +++ b/source/_components/switch.arest.markdown @@ -13,7 +13,7 @@ ha_iot_class: "Local Polling" ha_release: 0.16 --- -The `arest` switch platform allows you to toggle pins of your devices (like Arduino boards with a ethernet/wifi connection, ESP8266 based devices, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework. +The `arest` switch platform allows you to toggle pins of your devices (like Arduino boards with a Ethernet/Wifi connection, ESP8266 based devices, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework. To use your aREST enabled device with pins in your installation, add the following to your `configuration.yaml` file: @@ -43,7 +43,7 @@ switch: Configuration variables: - **resource** (*Required*): IP address and schema of the device that is exposing an aREST API, eg. http://192.168.1.10 (no-trailing slash) -- **name** (*Optional*): Let you overwrite the the name of the device. By default *name* from the device is used. +- **name** (*Optional*): Let you overwrite the name of the device. By default *name* from the device is used. - **pins** array (*Optional*): An array with all used pins. - **name** (*Required*): The name of the pin to use in the frontend. diff --git a/source/_components/switch.broadlink.markdown b/source/_components/switch.broadlink.markdown index 9bca1dcf3ef..8f733a6445b 100644 --- a/source/_components/switch.broadlink.markdown +++ b/source/_components/switch.broadlink.markdown @@ -23,10 +23,6 @@ switch: - platform: broadlink host: IP_ADDRESS mac: 'MAC_ADDRESS' - switches: - reciever: - command_on: 'switch_packet on' - command_off: 'switch_packet off' ``` Configuration variables: @@ -35,12 +31,17 @@ Configuration variables: - **mac** (*Required*): Device MAC address. - **timeout** (*Optional*): Timeout in seconds for the connection to the device. - **friendly_name** (*Optional*): The name used to display the switch in the frontend. -- **type** (*Optional*): Switch type. Choose one from: `rm`, `rm2`, `rm_mini`, `rm_pro_phicomm`, `rm2_home_plus`, `rm2_home_plus_gdt`, `rm2_pro_plus`, `rm2_pro_plus2`, `rm2_pro_plus_bl`, `rm_mini_shate`, `sp1`, `sp2`, `honeywell_sp2`, `sp3`, `spmini2` or `spminiplus`. +- **type** (*Required for some models*): Switch type. Choose one from: `rm`, `rm2`, `rm_mini`, `rm_pro_phicomm`, `rm2_home_plus`, `rm2_home_plus_gdt`, `rm2_pro_plus`, `rm2_pro_plus2`, `rm2_pro_plus_bl`, `rm_mini_shate`, `sp1`, `sp2`, `honeywell_sp2`, `sp3`, `spmini2`, `spminiplus` or `mp1`. - **switches** (*Optional*): The array that contains all switches. - **identifier** (*Required*): Name of the command switch as slug. Multiple entries are possible. - **friendly_name** (*Optional*): The name used to display the switch in the frontend. - **command_on** (*Required*): Base64 encoded packet from RM device to take for on. - **command_off** (*Required*): Base64 encoded packet from RM device to take for off. +- **slots** (*Optional*): Friendly names of 4 slots of MP1 power strip. If not configured, slot name will be `switch's friendly_name + 'slot {slot_index}'`. e.g 'MP1 slot 1' + - **slot_1** (*Optional*) + - **slot_2** (*Optional*) + - **slot_3** (*Optional*) + - **slot_4** (*Optional*) Information about how to install on Windows can be found [here](https://home-assistant.io/components/sensor.broadlink/#microsoft-windows-installation) @@ -107,6 +108,24 @@ switch: friendly_name: 'Humidifier' ``` +Example config for `mp1` device: + +```yaml +switch: + - platform: broadlink + host: IP_ADDRESS + mac: 'MAC_ADDRESS' + type: mp1 + friendly_name: 'MP1' + slots: + # friendly name of slots - optional + # if not set, slot name will be switch's friendly_name + 'slot {slot_index}'. e.g 'MP1 slot 1' + slot_1: 'TV slot' + slot_2: 'Xbox slot' + slot_3: 'Fan slot' + slot_4: 'Speaker slot' +``` + ### {% linkable_title Service `send_packet` %} You can use the service broadlink/send_packet to directly send IR packets without the need to assign a switch entity for each command. @@ -165,7 +184,7 @@ First get or learn all the remotes you want to add to Home Assistant in E-Contro 3. `sudo python setup.py install` 7. Test the codes -Use the `sendcode` script you have already downloded to test the codes you got from the device. +Use the `sendcode` script you have already downloaded to test the codes you got from the device. You need to edit the script with your RM Pro IP Address and MAC Address and with the code in HEX format. When run the script, you know the code works when get message . Code sent... diff --git a/source/_components/switch.command_line.markdown b/source/_components/switch.command_line.markdown index 5c8574118ea..cdb5162ca2a 100644 --- a/source/_components/switch.command_line.markdown +++ b/source/_components/switch.command_line.markdown @@ -48,7 +48,7 @@ In this section you find some real life examples of how to use this switch. ### {% linkable_title aREST device %} -The example below is doing the same as the [aREST switch](/components/switch.arest/). The commandline tool [`curl`](http://curl.haxx.se/) is used to toggle a pin which is controllable through REST. +The example below is doing the same as the [aREST switch](/components/switch.arest/). The command line tool [`curl`](http://curl.haxx.se/) is used to toggle a pin which is controllable through REST. ```yaml # Example configuration.yaml entry diff --git a/source/_components/switch.deluge.markdown b/source/_components/switch.deluge.markdown new file mode 100644 index 00000000000..738732d27cc --- /dev/null +++ b/source/_components/switch.deluge.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "Deluge Switch" +description: "Instructions how to integrate Deluge within Home Assistant." +date: 2017-10-19 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: deluge.png +ha_category: Downloading +ha_release: 0.57 +ha_iot_class: "Local Polling" +--- + + +The `deluge` switch platform allows you to control your [Deluge](http://deluge-torrent.org/) client from within Home Assistant. The platform enables you switch all your torrents in pause, and then unpause them all. + +To add Deluge to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + platform: deluge + host: IP_ADDRESS + username : USERNAME + password : PASSWORD +``` + +Configuration variables: + +- **host** (*Required*): This is the IP address of your Deluge daemon, eg. 192.168.1.32. +- **username** (*Required*): Your Deluge username, if you use authentication. +- **password** (*Required*): Your Deluge password, if you use authentication. +- **port** (*Optional*): The port your Deluge daemon uses, defaults to 58846. Warning,this is not the port of the WebUI +- **name** (*Optional*): The name to use when displaying this Deluge instance. diff --git a/source/_components/switch.doorbird.markdown b/source/_components/switch.doorbird.markdown new file mode 100644 index 00000000000..fc2497f9179 --- /dev/null +++ b/source/_components/switch.doorbird.markdown @@ -0,0 +1,35 @@ +--- +layout: page +title: "DoorBird Switch" +description: "Instructions how to integrate DoorBird video doorbell relays into Home Assistant." +date: 2017-08-06 11:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: doorbird.png +ha_category: Switch +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. + +

+ You must have the [DoorBird component](/components/doorbird/) configured to use this switch. +

+ +To enable this switch, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + - platform: doorbird + switches: + - light_on + - open_door +``` + +Configuration variables: + +- **switches** (*Required*): 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. diff --git a/source/_components/switch.flux.markdown b/source/_components/switch.flux.markdown index a48b0367b13..d53a0714ff6 100644 --- a/source/_components/switch.flux.markdown +++ b/source/_components/switch.flux.markdown @@ -14,9 +14,9 @@ logo: home-assistant.png The `flux` switch platform will change the temperature of your lights similar to the way flux works on your computer, using circadian rhythm. They will be bright during the day, and gradually fade to a red/orange at night. -The component will update your lights based on the the time of day. It will only affect lights that are turned on and listed in the flux configuration. +The component will update your lights based on the time of day. It will only affect lights that are turned on and listed in the flux configuration. -During the day (in between `start time` and `sunset time`), it will fade the lights from the `start_colortemp` to the `sunset_colortemp`. After sunset (between `sunset_time` and `stop_time`), the lights will fade from the the `sunset_colortemp` to the `stop_colortemp`. If the lights are still on after the `stop_time` it will continue to change the light to the `stop_colortemp` until the light is turned off. The fade effect is created by updating the lights every 30 seconds with a 30 second transition time. +During the day (in between `start time` and `sunset time`), it will fade the lights from the `start_colortemp` to the `sunset_colortemp`. After sunset (between `sunset_time` and `stop_time`), the lights will fade from the `sunset_colortemp` to the `stop_colortemp`. If the lights are still on after the `stop_time` it will continue to change the light to the `stop_colortemp` until the light is turned off. The fade effect is created by updating the lights every 30 seconds with a 30 second transition time. If you don't wish to have flux update on 30 second intervals, you can leave the switch turned off and use automation rules that call the service `switch._update` whenever you want the lights updated, where `` equals the `name:` property in the switch configuration. @@ -25,19 +25,10 @@ To use the Flux switch in your installation, add the following to your `configur ```yaml # Example configuration.yaml entry switch: - platform: flux - lights: - - light.desk - - light.lamp - name: Fluxer - start_time: '7:00' - stop_time: '23:00' - start_colortemp: 4000 - sunset_colortemp: 3000 - stop_colortemp: 1900 - brightness: 200 - disable_brightness_adjust: True - mode: xy + - platform: flux + lights: + - light.desk + - light.lamp ``` Configuration variables: @@ -51,5 +42,25 @@ Configuration variables: - **stop_colortemp** (*Optional*): The color temperature at the end. Defaults to `1900`. - **brightness** (*Optional*): The brightness of the lights. Calculated with `RGB_to_xy` by default. - **disable_brightness_adjust** (*Optional*): If true, brightness will not be adjusted besides color temperature. Defaults to False. -- **mode** (*Optional*): Select how color temperature is passed to lights. Valid values are `xy` and `mired`. Defaults to `xy`. +- **mode** (*Optional*): Select how color temperature is passed to lights. Valid values are `xy`, `mired` and `rgb`. Defaults to `xy`. + +Full example: + +```yaml +# Example configuration.yaml entry +switch: + - platform: flux + lights: + - light.desk + - light.lamp + name: Fluxer + start_time: '7:00' + stop_time: '23:00' + start_colortemp: 4000 + sunset_colortemp: 3000 + stop_colortemp: 1900 + brightness: 200 + disable_brightness_adjust: True + mode: xy +``` diff --git a/source/_components/switch.gc100.markdown b/source/_components/switch.gc100.markdown new file mode 100644 index 00000000000..9fcf7217b66 --- /dev/null +++ b/source/_components/switch.gc100.markdown @@ -0,0 +1,31 @@ +--- +layout: page +title: gc100 Switch +description: "Instructions on how to set up an gc100 switch within Home Assistant." +date: 2017-10-27 17:26 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Switch +ha_release: 0.57 +ha_iot_class: "Local Polling" +--- + +This allows you to control and monitor the relay state on your GC100. + +To enable this switch, you first have to set up [gc100](/components/gc100/), and add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + - platform: gc100 + ports: + - '4:1': Siren + - '4:2': Sprinkler +``` + +Configuration variables: + +- **ports** (*Required*): A list of module-address to name mappings in the format 'x:y': name, where x is module #, y is address. + diff --git a/source/_components/switch.hook.markdown b/source/_components/switch.hook.markdown index 0550cadb089..42903c50c7a 100644 --- a/source/_components/switch.hook.markdown +++ b/source/_components/switch.hook.markdown @@ -16,7 +16,7 @@ The `hook` component allows you to control the [Hook Smart Home Hub](http://www. Hook allows you to control cheap mains electrical outlets, like these ones at [Amazon](https://www.amazon.com/Etekcity-Wireless-Electrical-Household-Appliances/dp/B00DQELHBS). -In short, Hook is an RF to Wi-Fi bridge, controlling devices that recieve commands at 315MHz and 433MHz. Unfortunately, this does not allow Hook to determine if the command was successful, so the state is assumed. +In short, Hook is an RF to Wi-Fi bridge, controlling devices that receive commands at 315MHz and 433MHz. Unfortunately, this does not allow Hook to determine if the command was successful, so the state is assumed. Hook provides a simple [REST API](https://app.swaggerhub.com/api/rahilj/GetHook_RestAPI/v1). This Home Assistant component reads in devices that have been set up in the official app. diff --git a/source/_components/switch.kankun.markdown b/source/_components/switch.kankun.markdown index c518a459116..03c5a217ed9 100644 --- a/source/_components/switch.kankun.markdown +++ b/source/_components/switch.kankun.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Kankun SP3 Wifi Switch" -description: "Instructions for the Kankun SP3 wifi switch" +description: "Instructions for the Kankun SP3 Wifi switch" date: 2016-12-28 01:50 sidebar: true comments: false @@ -13,7 +13,7 @@ ha_iot_class: "Local Polling" --- -The `kankun` switch platform allows you to toggle customised Kankun SP3 wifi switches. Switches are +The `kankun` switch platform allows you to toggle customized Kankun SP3 Wifi switches. Switches are modified to include the [json.cgi](https://github.com/homedash/kankun-json/blob/master/cgi-bin/json.cgi) script to provide a HTTP API. Details of the necessary modifications can be found [here](http://www.homeautomationforgeeks.com/openhab_http.shtml#kankun) (be sure to install the JSON version diff --git a/source/_components/switch.knx.markdown b/source/_components/switch.knx.markdown index ea0789f6fd8..dbddf761518 100644 --- a/source/_components/switch.knx.markdown +++ b/source/_components/switch.knx.markdown @@ -1,14 +1,14 @@ --- layout: page title: "KNX Switch" -description: "Instructions on how to integrate KXN switches with Home Assistant." +description: "Instructions on how to integrate KNX switches with Home Assistant." date: 2016-06-24 12:00 sidebar: true comments: false sharing: true footer: true logo: knx.png -ha_category: DIY +ha_category: Switch ha_release: 0.24 ha_iot_class: "Local Polling" --- @@ -16,18 +16,22 @@ ha_iot_class: "Local Polling" The `knx` switch component is used as in interface to switching actuators. +The `knx` component must be configured correctly, see [KNX Component](/components/knx). + To use your KNX switch in your installation, add the following to your `configuration.yaml` file: ```yaml -# Example configuration.yaml entry switch: - platform: knx - name: KNX Switch - address: 0/0/1 + name: Kitchen.Coffee + address: '1/1/6' ``` +* **name** (*Optional*): A name for this device used within Home Assistant. +* **address**: KNX group address for switching the switch on/off +* **state_address**: (*Optional*) separate KNX group address for retrieving the switch state. -- **name** (*Optional*): A name for this devices used within Home assistant -- **address** (*Required*): The KNX group address that is used to turn on/off this actuator channel -- **state_address** (*Optional*): Some KNX devices can change their state internally without any messages on the KXN bus, e.g. if you configure a timer on a channel. The optional `state_address` can be used to inform Home Assistant about these state changes. If a KNX message is seen on the bus addressed to the given state address, this will overwrite the state of the switch object. +Some KNX devices can change their state internally without any messages on the KNX bus, e.g., if you configure a timer on a channel. The optional `state_address` can be used to inform Home Assistant about these state changes. If a KNX message is seen on the bus addressed to the given state address, this will overwrite the state of the switch object. For switching actuators that are only controlled by a single group address and can't change their state internally, you don't have to configure the state address. + + diff --git a/source/_components/switch.lutron_caseta.markdown b/source/_components/switch.lutron_caseta.markdown index a8767260906..428006a56fb 100644 --- a/source/_components/switch.lutron_caseta.markdown +++ b/source/_components/switch.lutron_caseta.markdown @@ -12,4 +12,12 @@ ha_category: Switch ha_iot_class: "Local Polling" --- -To get your Lutron Caseta switches working with Home Assistant, follow the instructions for the general [Lutron Caseta component](/components/lutron_caseta/). +To get Lutron Caseta switches working with Home Assistant, follow the instructions for the general [Lutron Caseta component](/components/lutron_caseta/). + +After setup, switches will appear in Home Assistant using an `entity_id` based on the name used in the Lutron mobile app. For example, a light switch called 'Master Bathroom Vanity' will appear in Home Assistant as `switch.master_bathroom_vanity`. + +For dimmable lights including wall and plug-in dimmers, see [Lutron Caseta Light](/components/light.lutron_caseta/). + +For more information on working with switches in Home Assistant, see the [Switches component](/components/switch/). + +Available services: `switch.turn_on` and `switch.turn_off`. \ No newline at end of file diff --git a/source/_components/switch.markdown b/source/_components/switch.markdown index 8f181dc59b5..73a98c47c13 100644 --- a/source/_components/switch.markdown +++ b/source/_components/switch.markdown @@ -16,7 +16,7 @@ Keeps track which switches are in your environment, their state and allows you t ### {% linkable_title Use the services %} -Go the the **Developer Tools**, then to **Call Service** in the frontend, and choose `switch/turn_on` or `switch/turn_off` from the list of available services (**Available services:** on the left). Enter something like the sample below into the **Service Data** field and hit **CALL SERVICE**. +Go the **Developer Tools**, then to **Call Service** in the frontend, and choose `switch/turn_on` or `switch/turn_off` from the list of available services (**Available services:** on the left). Enter something like the sample below into the **Service Data** field and hit **CALL SERVICE**. ```json {"entity_id":"livingroom_pin2"} diff --git a/source/_components/switch.mqtt.markdown b/source/_components/switch.mqtt.markdown index 546ad7fc78f..4ad0a6c1f87 100644 --- a/source/_components/switch.mqtt.markdown +++ b/source/_components/switch.mqtt.markdown @@ -13,13 +13,13 @@ ha_release: 0.7 ha_iot_class: depends --- -The `mqtt` switch platform let you control your MQTT enabled switch. +The `mqtt` switch platform lets you control your MQTT enabled switches. -In an ideal scenario, the MQTT device will have a `state_topic` to publish state changes. If these messages are published with `RETAIN` flag, the MQTT switch will receive an instant state update after subscription and will start with correct state. Otherwise, the initial state of the switch will be false/off. +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 switch 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`. -When a `state_topic` is not available, the switch will work in optimistic mode. In this mode, the switch will immediately change state after every command. Otherwise, the switch will wait for state confirmation from device (message from `state_topic`). +When a `state_topic` is not available, the switch will work in optimistic mode. In this mode, the switch will immediately change state after every command. Otherwise, the switch will wait for state confirmation from the device (message from `state_topic`). -Optimistic mode can be forced, even if state topic is available. Try to enable it, if experiencing incorrect switch operation. +Optimistic mode can be forced, even if the `state_topic` is available. Try to enable it, if experiencing incorrect switch operation. To enable this switch in your installation, add the following to your `configuration.yaml` file: @@ -35,20 +35,23 @@ Configuration variables: - **name** (*Optional*): The name of the switch. Default is 'MQTT Switch'. - **state_topic** (*Optional*): The MQTT topic subscribed to receive state updates. - **command_topic** (*Required*): The MQTT topic to publish commands to change the switch state. +- **availability_topic** (*Optional*): The MQTT topic subscribed to receive availability (online/offline) updates. - **payload_on** (*Optional*): The payload that represents enabled state. Default is "ON". - **payload_off** (*Optional*): The payload that represents disabled state. Default is "OFF". +- **payload_available** (*Optional*): The payload that represents the available state, e.g. 'online'. Default is "ON". +- **payload_not_available** (*Optional*): The payload that represents the unavailable state, e.g. 'offline'. Default is "OFF". - **optimistic** (*Optional*): Flag that defines if switch works in optimistic mode. Default is `true` if no `state_topic` defined, else `false`. - **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages. - **retain** (*Optional*): If the published message should have the retain flag on or not. - **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload.

-Make sure that your topic match exact. `some-topic/` and `some-topic` are different topics. +Make sure that your topic matches exactly. `some-topic/` and `some-topic` are different topics.

## {% linkable_title Examples %} -In this section you 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 %} @@ -61,6 +64,7 @@ switch: name: "Bedroom Switch" state_topic: "home/bedroom/switch1" command_topic: "home/bedroom/switch1/set" + availability_topic: "home/bedroom/switch1/available" payload_on: "ON" payload_off: "OFF" optimistic: false diff --git a/source/_components/switch.mystrom.markdown b/source/_components/switch.mystrom.markdown index 9c9c01e493b..a9a4e3d7b0c 100644 --- a/source/_components/switch.mystrom.markdown +++ b/source/_components/switch.mystrom.markdown @@ -9,6 +9,8 @@ sharing: true footer: true logo: mystrom.png ha_category: Switch +ha_release: 0.9 +ha_iot_class: "Local Polling" --- diff --git a/source/_components/switch.neato.markdown b/source/_components/switch.neato.markdown index cc11c8da023..b45fa7f5f2b 100644 --- a/source/_components/switch.neato.markdown +++ b/source/_components/switch.neato.markdown @@ -12,6 +12,6 @@ ha_category: Switch ha_release: 0.31 --- -The `neato` switch platform allows you to control your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). +The `neato` switch platform allows you to enable or disable the schedule of your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). To add `neato` switch to your installation, follow instructions in [Neato component](/components/neato/). diff --git a/source/_components/switch.netio.markdown b/source/_components/switch.netio.markdown index 380001bc2de..57f5a5abdb1 100644 --- a/source/_components/switch.netio.markdown +++ b/source/_components/switch.netio.markdown @@ -14,7 +14,7 @@ ha_release: 0.24 --- -The `netio` switch platform allows you to control your [Netio](http://www.netio-products.com/en/overview/) Netio4, Netio4 All, and Netio 230B. These are smart outlets controllable through ethernet and/or WiFi that reports consumptions (Netio4all). +The `netio` switch platform allows you to control your [Netio](http://www.netio-products.com/en/overview/) Netio4, Netio4 All, and Netio 230B. These are smart outlets controllable through Ethernet and/or WiFi that reports consumptions (Netio4all). To use Netio devices in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/switch.pilight.markdown b/source/_components/switch.pilight.markdown index 071f5186648..6bd48c3087f 100644 --- a/source/_components/switch.pilight.markdown +++ b/source/_components/switch.pilight.markdown @@ -55,7 +55,7 @@ Variables for the different codes (`on_code` and `off_code`): - **'off'** (*Optional*): `1` or `0` - **'on'** (*Optional*): `1` or `0` -For possible code entries look at the [pilight API](https://www.pilight.org/development/api/). All commands allowed by [pilight-send](https://wiki.pilight.org/doku.php/psend) can be used. Which means that if for a certain protocol there are different parameters used, you should be able to replace the variables above by the proper ones required by the specific protocol. When using the `elro_800_switch` or `mumbi` protocol for example, you will have to replace the variable `unit` with `unitcode` or there will be errors occuring. +For possible code entries look at the [pilight API](https://www.pilight.org/development/api/). All commands allowed by [pilight-send](https://wiki.pilight.org/doku.php/psend) can be used. Which means that if for a certain protocol there are different parameters used, you should be able to replace the variables above by the proper ones required by the specific protocol. When using the `elro_800_switch` or `mumbi` protocol for example, you will have to replace the variable `unit` with `unitcode` or there will be errors occurring. Variables for the different receive codes (`on_code_receive` and `off_code_receive`): diff --git a/source/_components/switch.rainbird.markdown b/source/_components/switch.rainbird.markdown new file mode 100644 index 00000000000..455c9118ac8 --- /dev/null +++ b/source/_components/switch.rainbird.markdown @@ -0,0 +1,46 @@ +--- +layout: page +title: "Rain Bird Switch" +description: "Instructions on how to integrate your Rain Bird LNK WiFi Module as Switches within Home Assistant." +date: 2017-08-25 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: rainbird.png +ha_category: Hub +ha_release: 0.50 +ha_iot_class: "Local Polling" +--- + +This `rainbird` switch platform allows interacting with [LNK WiFi](http://www.rainbird.com/landscape/products/controllers/LNK-WiFi.htm) module of the Rain Bird Irrigation system in Home Assistant. + +To enable stations as switches inside Home Assistant, add the following to your `configuration.yaml` file: + +```yaml +switch: + platform: rainbird + host: '1.1.1.1' + password: 'secretpassword' + sprinkler_1: + zone: 1 + friendly_name: "Front sprinklers" + trigger_time: 20 + scan_interval: 10 + sprinkler_2: + friendly_name: "Back sprinklers" + zone: 2 + trigger_time: 20 + scan_interval: 10 +``` + +Configuration variables: + +- **stickip** (*Required*): The IP address of your LNK WiFi Module. +- **password** (*Required*): The password for accessing the module. +- **zone** (*Required*): Station zone identifier. +- **friendly_name** (*Optional*): Just a friendly name for the station. +- **trigger_time** (*Required*): The default duration to sprinkle the zone. +- **scan_interval** (*Optional*): How fast to refresh the switch. + +Please note that due to the implementation of the API within the LNK Module, there is a concurrency issue. For example, the Rain Bird app will give connection issues (like already a connection active). diff --git a/source/_components/switch.raincloud.markdown b/source/_components/switch.raincloud.markdown new file mode 100644 index 00000000000..e5cbc2d070b --- /dev/null +++ b/source/_components/switch.raincloud.markdown @@ -0,0 +1,31 @@ +--- +layout: page +title: "Melnor Raincloud Switch" +description: "Instructions on how to integrate your Melnor Raincloud sprinkler system within Home Assistant." +date: 2017-09-04 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raincloud.jpg +ha_category: Switch +ha_release: "0.55" +ha_iot_class: "Cloud Polling" +--- + +To get your [Melnor RainCloud](https://wifiaquatimer.com) binary sensors working within Home Assistant, please follow the instructions for the general [Raincloud component](/components/raincloud). + +Once you have enabled the [Raincloud component](/components/raincloud), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + - platform: raincloud +``` + +Configuration variables: + +- **watering_minutes** (*Optional*): Value in minutes to watering your garden via frontend. Defaults to 15. +- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. If not specified, all conditions below will be enabled by default. The following conditions can be monitored. + - **auto_watering**: Toggle the watering scheduled per zone. + - **manual_watering**: Toggle manually the watering per zone. It will inherent the value in minutes specified on the RainCloud hub component. diff --git a/source/_components/switch.rainmachine.markdown b/source/_components/switch.rainmachine.markdown new file mode 100644 index 00000000000..1b85b03aa42 --- /dev/null +++ b/source/_components/switch.rainmachine.markdown @@ -0,0 +1,89 @@ +--- +layout: page +title: "RainMachine Switch" +description: "Instructions on how to use RainMachine units with Home Assistant." +date: 2017-08-14 13:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: rainmachine.png +ha_category: Switch +ha_iot_class: "Cloud Polling" +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/). + +## {% linkable_title Configuring the Platform %} + +The platform allows for either local (i.e., directly across the LAN) or remote +(i.e., through RainMachine's cloud API) access; the route you choose will +dictate what your configuration should look like. + +For local access, specify the IP address/hostname of your RainMachine unit +, your RainMachine password, and optionally, the device's HTTP port: + +```yaml +switch: + platform: rainmachine + ip_address: 192.168.1.100 + password: my_password_123 +``` + +For remote access, specify your RainMachine username/email and password: + +```yaml +switch: + platform: rainmachine + email: user@host.com + password: my_password_123 +``` + +Configuration Variables: + +- **ip_address** (*Optional*): the IP address of your RainMachine unit; cannot be +used with the `email` parameter +- **email** (*Optional*): your RainMachine username/email; cannot be used with the +`ip_address` parameter +- **password** (*Required*): your RainMachine password +- **port** (*Optional*): the TCP port used by your unit for the REST API (default: 8080) +- **ssl** (*Optional*): whether communication with the local device should occur +over HTTPS (default: true) +- **zone_run_time** (*Optional*): the number of seconds that a zone should run when +turned on (default: 600) + +## {% linkable_title Controlling Your Device %} + +After Home Assistant loads, you will see new switches 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) + +Programs and zones are linked. If a program is running its final zone, you will +see both the program and zone switches turned on; turning either one off will +turn the other one off (just like in the web app). + +## {% linkable_title Weblink %} + +If you would like to see and control more detailed information, create an [iFrame](/components/panel_iframe/) that renders the RainMachine web app: + +```yaml +panel_iframe: + rainmachine: + title: RainMachine + url: "https://my.rainmachine.com/s//ui/" + icon: mdi:water-pump +``` + +You can find `` by logging into [https://my.rainmachine.com](https://my.rainmachine.com ) and taking note of the URL. + +## {% linkable_title For Awareness %} + +The remote RainMachine API currently has two broken operations (i.e., they return +error codes): starting a program and stopping a program. Please note that +starting/stopping programs with the remote API is disabled until RainMachine +can fix the issue. diff --git a/source/_components/switch.raspihats.markdown b/source/_components/switch.raspihats.markdown index 674f2f99e49..b2fa067e130 100644 --- a/source/_components/switch.raspihats.markdown +++ b/source/_components/switch.raspihats.markdown @@ -45,4 +45,48 @@ Configuration variables: - **invert_logic** (*Optional*): Inverts the output logic, default is `False`. - **initial_state** (*Optional*): Initial state, default is `None`, can also be `True` or `False`. `None` means no state is forced on the corresponding digital output when this switch is instantiated. + +## {% linkable_title Directions for installing smbus support on Raspberry Pi %} + +Enable I2c interface with the Raspberry Pi configuration utility: + +```bash +# pi user environment: Enable i2c interface +$ sudo raspi-config +``` + +Select `Interfacing options->I2C` choose `` and hit `Enter`, then go to `Finish`. + +Install dependencies for use the `smbus-cffi` module and enable your _homeassistant_ user to join the _i2c_ group: + +```bash +# pi user environment: Install i2c dependencies and utilities +$ sudo apt-get install build-essential libi2c-dev i2c-tools python-dev libffi-dev + +# pi user environment: Add homeassistant user to the i2c group +$ sudo usermod -a -G i2c homeassistant +``` + +### {% 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 +``` + +It will output a table like this: + +```text + 0 1 2 3 4 5 6 7 8 9 a b c d e f +00: -- -- -- -- -- -- -- -- -- -- -- -- -- +10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- -- +30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +40: 40 -- -- -- -- -- UU -- -- -- -- -- -- -- -- -- +50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +70: -- -- -- -- -- -- -- 77 +``` + For more details about the Raspihats add-on boards for Raspberry PI, visit [raspihats.com](http://www.raspihats.com/). diff --git a/source/_components/switch.rest.markdown b/source/_components/switch.rest.markdown index 6cc7d23bdd5..d9e22107b6e 100644 --- a/source/_components/switch.rest.markdown +++ b/source/_components/switch.rest.markdown @@ -29,7 +29,9 @@ Configuration variables: - **resource** (*Required*): The resource or endpoint that contains the value. - **name** (*Optional*): Name of the REST switch. - - **method** (*Optional*): HTTP method to use (`post` or `put`). Defaults to `post`. +- **method** (*Optional*): HTTP method to use (`post` or `put`). Defaults to `post`. +- **username** (*Optional*): The username for accessing the REST endpoint. +- **password** (*Optional*): The password for accessing the REST endpoint. - **body_on** (*Optional*): The body of the POST request that commands the switch to become enabled. Default is "ON". This value can be a [template](/topics/templating/). - **body_off** (*Optional*): The body of the POST request that commands the switch to become disabled. Default is "OFF". This value can also be a [template](/topics/templating/). - **is_on_template** (*Optional*): A [template](/docs/configuration/templating/#processing-incoming-data) that determines the state of the switch from the value returned by the GET request on the resource URL. This template should compute to a boolean (True or False). If the value is valid JSON, it will be available in the template as the variable `value_json`. Default is equivalent to `'{% raw %}{{ value_json == body_on }}{% endraw %}'`. This means that by default, the state of the switch is on if and only if the response to the GET request matches . diff --git a/source/_components/switch.rflink.markdown b/source/_components/switch.rflink.markdown index c4b24be8a93..fc7ab2b7a9f 100644 --- a/source/_components/switch.rflink.markdown +++ b/source/_components/switch.rflink.markdown @@ -49,15 +49,18 @@ Configuration variables: Device configuration variables: - **name** (*Optional*): Name for the device, defaults to RFLink ID. -- **aliasses** (*Optional*): Alternative RFLink ID's this device is known by. +- **aliases** (*Optional*): Alternative RFLink ID's this device is known by. - **fire_event** (*Optional*): Fire an `button_pressed` event if this device is turned on or off (default: False). - **signal_repetitions** (*Optional*): Repeat every RFLink command this number of times (default: 1) +- **group** (*Optional*): Allow switch to respond to group commands (ALLON/ALLOFF). (default: yes) +- **group_aliases** (*Optional*): `aliases` which only respond to group commands. +- **no_group_aliases** (*Optional*): `aliases` which do not respond to group commands. ### {% 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. -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 aliasses: +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: ```yaml # Example configuration.yaml entry @@ -67,7 +70,7 @@ switch: newkaku_0000c6c2_1: name: Ceiling fan icon: mdi:fan - aliasses: + aliases: - newkaku_000000001_2 - kaku_000001_a ``` diff --git a/source/_components/switch.rfxtrx.markdown b/source/_components/switch.rfxtrx.markdown index d6beee620e3..73902df97f2 100644 --- a/source/_components/switch.rfxtrx.markdown +++ b/source/_components/switch.rfxtrx.markdown @@ -24,7 +24,7 @@ switch: automatic_add: True ``` -Launch your homeassistant and go the website. +Launch your Home Assistant and go the website. Push your remote and your device should be added:

@@ -50,6 +50,11 @@ Configuration variables: - **signal_repetitions** (*Optional*): 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. - **fire_event** (*Optional*): Fires an event even if the state is the same as before, for example a doorbell switch. Can also be used for automations. +

+This component and the [rfxtrx binary sensor](/components/binary_sensor/rfxtrx/) can steal each other's devices when setting the `automatic_add` configuration parameter to `true`. Set `automatic_add` only when you have some devices to add to your installation, otherwise leave it to `False`. +

+ + Generate codes: If you need to generate codes for switches you can use a template (useful for example COCO switches). @@ -62,7 +67,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 homeassistant and go the website. +- Launch your Home Assistant and go 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 diff --git a/source/_components/switch.rpi_gpio.markdown b/source/_components/switch.rpi_gpio.markdown index 639bcdc8a1c..2e1d74786d1 100644 --- a/source/_components/switch.rpi_gpio.markdown +++ b/source/_components/switch.rpi_gpio.markdown @@ -30,8 +30,20 @@ switch: Configuration variables: - **ports** array (*Required*): Array of used ports. - - **port: name** (*Required*): Port numbers and corresponding names. + - **port: name** (*Required*): Port numbers and corresponding names (GPIO #). - **invert_logic** (*Optional*): If true, inverts the output logic to ACTIVE LOW. Default is false (ACTIVE HIGH). For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#GPIO_connector) about the Raspberry Pi. +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 +# Example configuration.yaml entry +switch: + - platform: rpi_gpio + ports: + 17: Speaker Relay +``` + + diff --git a/source/_components/switch.skybell.markdown b/source/_components/switch.skybell.markdown new file mode 100644 index 00000000000..511aa39c1aa --- /dev/null +++ b/source/_components/switch.skybell.markdown @@ -0,0 +1,33 @@ +--- +layout: page +title: "Skybell Switch" +description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." +date: 2017-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: skybell.png +ha_category: Switch +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + +To get your [Skybell.com](https://skybell.com/) switches working within Home Assistant, please follow the instructions for the general [Skybell component](/components/skybell). + +Once you have enabled the [Skybell component](/components/skybell), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + - platform: skybell + monitored_conditions: + - do_not_disturb + - motion_sensor +``` + +Configuration variables: + +- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored. + - **do_not_disturb**: Control the state of your doorbells indoor chime. + - **motion_sensor**: Control the state of your doorbells motion sensor. diff --git a/source/_components/switch.snmp.markdown b/source/_components/switch.snmp.markdown new file mode 100644 index 00000000000..7dd158291c0 --- /dev/null +++ b/source/_components/switch.snmp.markdown @@ -0,0 +1,53 @@ +--- +layout: page +title: "SNMP Switch" +description: "Instructions on how to integrate SNMP switches into Home Assistant." +date: 2017-10-12 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: network-snmp.png +ha_category: Switch +ha_iot_class: "Local Polling" +ha_release: 0.57 +--- + +The `snmp` switch platform allows you to control SNMP-enabled equipment. + +Currently, only SNMP OIDs that accept integer values are supported. SNMP v1 and v2c are supported. SNMP v3 is **not** supported. + +To use an SNMP switch in your installation: + +```yaml +# Example configuration.yaml entry: +switch: + - platform: snmp + host: 192.168.0.2 + baseoid: 1.3.6.1.4.1.19865.1.2.1.4.0 +``` + +Configuration variables: + +- **baseoid** (*Required*): The SNMP BaseOID which to poll for the state of the switch and which to set in order to turn the switch on and off. +- **host** (*Optional*): The IP/host which to control. Defaults to `localhost`. +- **port** (*Optional*): The port on which to communicate. Defaults to `161`. +- **community** (*Optional*): community string to use for authentication. Defaults to `private`. +- **version** (*Optional*): SNMP version to use - either `1` or `2c`. Defaults to `1`. +- **payload_on** (*Optional*): What return value represents an `On` state for the switch. The same value is used in writes to turn on the switch. Defaults to `1`. +- **payload_off** (*Optional*): What return value represents an `Off` state for the switch. The same value is used in writes to turn off the switch. Defaults to `0`. + +You should check with your device's vendor to find out the correct BaseOID and what values turn the switch on and off. + +A complete example: + +```yaml +switch: + - platform: snmp + name: SNMP switch + host: 192.168.0.2 + community: private + baseoid: 1.3.6.1.4.1.19865.1.2.1.4.0 + payload_on: 1 + payload_off: 0 +``` diff --git a/source/_components/switch.telnet.markdown b/source/_components/switch.telnet.markdown new file mode 100644 index 00000000000..bffd8e78fb0 --- /dev/null +++ b/source/_components/switch.telnet.markdown @@ -0,0 +1,44 @@ +--- +layout: page +title: "Telnet Switch" +description: "Instructions how to integrate telnet switches into Home Assistant." +date: 2017-08-10 19:19 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Switch +ha_release: 0.54 +ha_iot_class: "Local Polling" +--- + + +The `telnet` switch platform allows you to control devices with telnet commands. + +To enable this switch, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + platform: telnet + switches: + projector: + resource: "host_or_ip" + port: 4002 + command_on: "PWR ON" + command_off: "PWR OFF" + command_state: "PWR?" + value_template: '{% raw %}{{ value == "PWR=01" }}{% endraw %}' +``` + +Configuration variables: + +- **switches** (*Required*): The array that contains all switches. + - **identifier** (*Required*): Name of the switch as slug. Multiple entries are possible. + - **resource** (*Required*): Host or IP of the device. + - **port** (*Optional*): Port to connect to. Default is 23 if not defined. + - **command_on** (*Required*): Command to turn device on. + - **command_off** (*Required*): Command to turn device off. + - **command_state** (*Required*): Command to determine the state of the switch. If not defined the switch will assume successful state changes. + - **value_template** (*Required*): The template evaluating to `true` will indicate that the switch is on. + - **name** (*Optional*): The name used to display the switch in the frontend. diff --git a/source/_components/switch.template.markdown b/source/_components/switch.template.markdown index d53b6881316..93880fe6f65 100644 --- a/source/_components/switch.template.markdown +++ b/source/_components/switch.template.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Template switch" -description: "Instructions how to integrate Template switches into Home Assistant." +title: "Template Switch" +description: "Instructions how to integrate Template Switches into Home Assistant." date: 2016-02-07 07:00 sidebar: true comments: false @@ -13,119 +13,204 @@ ha_iot_class: "Local Push" logo: home-assistant.png --- -The `template` platform creates switches that combine components. +The `template` platform creates switches that combines components. -For example, if you have a garage door with a toggle switch that operates the motor and a sensor that allows you know whether the door is open or closed, you can combine these into a switch that knows whether the garage door is open or closed. +For example, if you have a garage door with a toggle switch that operates the +motor and a sensor that allows you know whether the door is open or closed, +you can combine these into a switch that knows whether the garage door is open +or closed. -This can simplify the gui, and make it easier to write automations. You can mark the components you have combined as `hidden` so they don't appear themselves. +This can simplify the GUI and make it easier to write automations. You can mark +the components you have combined as `hidden` so they don't appear themselves. -To enable Template switches in your installation, add the following to your `configuration.yaml` file: +To enable Template Switches in your installation, add the following to your +`configuration.yaml` file: +{% raw %} ```yaml # Example configuration.yaml entry switch: - platform: template switches: skylight: - value_template: {% raw %}"{{ is_state('sensor.skylight', 'on') }}"{% endraw %} + value_template: "{{ is_state('sensor.skylight', 'on') }}" turn_on: service: switch.turn_on - entity_id: switch.skylight_open + data: + entity_id: switch.skylight_open turn_off: service: switch.turn_on - entity_id: switch.skylight_close + data: + entity_id: switch.skylight_close ``` +{% endraw %} -Configuration variables: - -- **switches** array (*Required*): List of your switches. - - **friendly_name** (*Optional*): Name to use in the Frontend. - - **value_template** (*Required*): Defines a [template](/topics/templating/) to set the state of the switch. - - **turn_on** (*Required*): Defines an [action](/getting-started/automation/) to run when the switch is turned on. - - **turn_off** (*Required*): Defines an [action](/getting-started/automation/) to run when the switch is turned off. - - **entity_id** (*Optional*): Add a list of entity IDs so the switch only reacts to state changes of these entities. This will reduce the number of times the switch will try to update it's state. - +{% configuration %} + switches: + description: List of your switches. + required: true + type: map + keys: + friendly_name: + description: Name to use in the frontend. + required: false + type: string + entity_id: + description: Add a list of entity IDs so the switch only reacts to state changes of these entities. This will reduce the number of times the switch will try to update its state. + required: false + type: [string, list] + value_template: + description: Defines a template to set the state of the switch. + required: true + type: template + turn_on: + description: Defines an action to run when the switch is turned on. + required: true + type: action + turn_off: + description: Defines an action to run when the switch is turned off. + required: true + type: action +{% endconfiguration %} ## {% linkable_title Considerations %} -If you are using the state of a platform that takes extra time to load, the template switch may get an 'unknown' state during startup. This results in error messages in your log file until that platform has completed loading. If you use is_state() function in your template, you can avoid this situation. For example, you would replace {% raw %}'{{ states.switch.source.state }}'{% endraw %} with this equivalent that returns true/false and never gives an unknown result: -{% raw %}'{{ is_state('switch.source', 'on') }}'{% endraw %} +If you are using the state of a platform that takes extra time to load, the +Template Switch may get an `unknown` state during startup. This results +in error messages in your log file until that platform has completed loading. +If you use `is_state()` function in your template, you can avoid this situation. +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 Examples %} In this section you find some real life examples of how to use this switch. -### {% linkable_title Copy switch %} +### {% linkable_title Copy Switch %} This example shows a switch that copies another switch. +{% raw %} ```yaml switch: - platform: template switches: copy: - value_template: {% raw %}"{{ is_state('switch.source', 'on') }}"{% endraw %} + value_template: "{{ is_state('switch.source', 'on') }}" turn_on: service: switch.turn_on - entity_id: switch.source + data: + entity_id: switch.source turn_off: service: switch.turn_off - entity_id: switch.source -```` + data: + entity_id: switch.source +``` +{% endraw %} -### {% linkable_title Toggle switch %} +### {% linkable_title Toggle Switch %} -This example shows a switch that takes its state from a sensor, and toggles a switch. +This example shows a switch that takes its state from a sensor, and toggles +a switch. +{% raw %} ```yaml switch: - platform: template switches: blind: - friendly_name: 'Blind' - value_template: {% raw %}"{{ is_state_attr('switch.blind_toggle', 'sensor_state', 'on') }}"{% endraw %} + friendly_name: "Blind" + value_template: "{{ is_state_attr('switch.blind_toggle', 'sensor_state', 'on') }}" turn_on: service: switch.toggle - entity_id: switch.blind_toggle + data: + entity_id: switch.blind_toggle turn_off: service: switch.toggle - entity_id: switch.blind_toggle + data: + entity_id: switch.blind_toggle ``` +{% endraw %} -### {% linkable_title Sensor and two switches %} +### {% linkable_title Sensor and Two Switches %} -This example shows a switch that takes its state from a sensor, and uses two momentary switches to control a device. +This example shows a switch that takes its state from a sensor, and uses two +momentary switches to control a device. +{% raw %} ```yaml switch: - platform: template switches: skylight: - friendly_name: 'Skylight' - value_template: {% raw %}"{{ is_state('sensor.skylight.state', 'on') }}"{% endraw %} + friendly_name: "Skylight" + value_template: "{{ is_state('sensor.skylight.state', 'on') }}" turn_on: service: switch.turn_on - entity_id: switch.skylight_open + data: + entity_id: switch.skylight_open turn_off: service: switch.turn_on - entity_id: switch.skylight_close + data: + entity_id: switch.skylight_close ``` -### {% linkable_title Change the icon %} +{% endraw %} + +### {% linkable_title Change The Icon %} This example shows how to change the icon based on the day/night cycle. +{% raw %} ```yaml switch: - platform: template switches: garage: - value_template: {% raw %}"{{ is_state(cover.garage_door', 'on') }}"{% endraw %} + value_template: "{{ is_state('cover.garage_door', 'on') }}" turn_on: service: cover.open_cover - entity_id: cover.garage_door + data: + entity_id: cover.garage_door turn_off: service: cover.close_cover - entity_id: cover.garage_door - icon_template: {% raw %}"{% if is_state('cover.garage_door', 'open') %}mdi:garage-open{% else %}mdi:garage{% endif %}"{% endraw %} + data: + entity_id: cover.garage_door + icon_template: >- + {% if is_state('cover.garage_door', 'open') %} + mdi:garage-open + {% else %} + mdi:garage + {% endif %} ``` +{% endraw %} +### {% linkable_title Change The Entity Picture %} + +This example shows how to change the entity picture based on the day/night cycle. + +{% raw %} +```yaml +switch: + - platform: template + switches: + garage: + value_template: "{{ is_state('cover.garage_door', 'on') }}" + turn_on: + service: cover.open_cover + data: + entity_id: cover.garage_door + turn_off: + service: cover.close_cover + data: + entity_id: cover.garage_door + entity_picture_template: >- + {% if is_state('cover.garage_door', 'open') %} + /local/garage-open.png + {% else %} + /local/garage-closed.png + {% endif %} +``` +{% endraw %} diff --git a/source/_components/switch.tesla.markdown b/source/_components/switch.tesla.markdown new file mode 100644 index 00000000000..a8c63ede4ec --- /dev/null +++ b/source/_components/switch.tesla.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Tesla Switch" +description: "Instructions on how to integrate Tesla charging switch into Home Assistant." +date: 2017-09-19 12:20 +sidebar: true +comments: false +sharing: true +footer: true +logo: tesla.png +ha_category: Switch +ha_iot_class: "Cloud Push" +ha_release: 0.54 +--- + +The `Tesla` platform allows you to control your [Tesla](https://www.tesla.com/) charger (enable/disable charging) from within Home Assistant. + +The switch platform will be automatically configured if Tesla component is configured. + +For more configuration information see the [Tesla component](/components/tesla/) documentation. diff --git a/source/_components/switch.thinkingcleaner.markdown b/source/_components/switch.thinkingcleaner.markdown index 19304fb0b4c..8be94f7992a 100644 --- a/source/_components/switch.thinkingcleaner.markdown +++ b/source/_components/switch.thinkingcleaner.markdown @@ -13,7 +13,7 @@ ha_iot_class: "Local Poll" ha_release: 0.18 --- -The `thinkingcleaner` switch platform allows you to control your [Thinking Cleaner](http://www.thinkingcleaner.com) addon. +The `thinkingcleaner` switch platform allows you to control your [Thinking Cleaner](http://www.thinkingcleaner.com) add-on. To enable this switch in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/switch.toon.markdown b/source/_components/switch.toon.markdown new file mode 100644 index 00000000000..af4e1978501 --- /dev/null +++ b/source/_components/switch.toon.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "Toon Smart Plugs" +description: "Instructions how to integrate Toon smart plugs within Home Assistant." +date: 2017-10-22 12:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Switch +ha_release: 0.56 +logo: toon.png +ha_iot_class: "Cloud Polling" +--- + +The `toon` switch platform allows you to control your smart plugs if they are connected to Toon. + +The requirement is that you have setup the [`toon`](/components/toon/) component. diff --git a/source/_components/switch.velbus.markdown b/source/_components/switch.velbus.markdown new file mode 100644 index 00000000000..b4a7ae12967 --- /dev/null +++ b/source/_components/switch.velbus.markdown @@ -0,0 +1,44 @@ +--- +layout: page +title: "Velbus Switches" +description: "Access and control your Velbus Switches." +date: 2017-06-17 16.58 +sidebar: true +comments: false +sharing: true +footer: true +logo: velbus.png +ha_category: Switch +ha_iot_class: "Local Push" +ha_release: "0.50" +--- + +The `velbus` switch allows you to control [Velbus](http://www.velbus.eu) connected switches. + +To use your Velbus switches in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry + +light: + - platform: velbus + devices: + - name: Switch 1 + type: single + module: 0xda + channel: 4 + - name: Switch 2 + type: double + module: 0xbc + open_channel: 1 + close_channel: 2 +``` + +Configuration variables: +- **devices** array (*Required*): The array contains the switches to configure + - **name** (*Required*): Name of the switch. + - **module** (*Required*): The hexadecimal module address + - **type** (*Required*): Either `single` or `double`. If single, only `channel` attribute is required. If double, both `open_channel` and `close_channel` attributes are required + - **channel** (*Required*): The channel number in the module. + +For hub configuration, see [the Velbus component](/components/velbus/). diff --git a/source/_components/switch.vultr.markdown b/source/_components/switch.vultr.markdown new file mode 100644 index 00000000000..087be7fe925 --- /dev/null +++ b/source/_components/switch.vultr.markdown @@ -0,0 +1,55 @@ +--- +layout: page +title: "Vultr Switch" +description: "Instructions on how to set up Vultr switches within Home Assistant." +date: 2017-10-17 21:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: vultr.png +ha_category: Switch +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. + +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` +

+ +Minimal `configuration.yaml` (produces `switch.vultr_web_server`): + +```yaml +# Example configuration.yaml entry +switch: + - platform: vultr + subscription: 123456 +``` + +{% configuration %} +subscription: + description: List of droplets you want to control. + required: true + type: string +name: + description: The name you want to give this switch. + required: false + default: "Vultr {subscription label}" + type: string +{% endconfiguration %} + + +Full `configuration.yaml` (produces `switch.amazing_server`): + +```yaml +switch: + - platform: vultr + name: Amazing Server + subscription: 123456 +``` + + diff --git a/source/_components/switch.wake_on_lan.markdown b/source/_components/switch.wake_on_lan.markdown index 4bee47a8520..6fc7699fa72 100644 --- a/source/_components/switch.wake_on_lan.markdown +++ b/source/_components/switch.wake_on_lan.markdown @@ -41,7 +41,7 @@ Configuration variables: Here are some real life examples of how to use the **turn_off** variable. -### {% linkable_title Suspending linux %} +### {% linkable_title Suspending Linux %} Suggested recipe for letting the turn_off script suspend a Linux computer (the **target**) from Home Assistant running on another Linux computer (the **server**). diff --git a/source/_components/switch.wink.markdown b/source/_components/switch.wink.markdown index ad03fe065bc..085aba3a382 100644 --- a/source/_components/switch.wink.markdown +++ b/source/_components/switch.wink.markdown @@ -26,4 +26,5 @@ The requirement is that you have setup [Wink](/components/wink/). - 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 new file mode 100644 index 00000000000..f207229beed --- /dev/null +++ b/source/_components/switch.xiaomi_aqara.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Xiaomi Switch" +description: "Instructions how to setup the Xiaomi switch within Home Assistant." +date: 2017-07-21 16:34 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: Switch +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 requirement is that you have setup [Xiaomi aqara](/components/xiaomi_aqara/). + diff --git a/source/_components/switch.xiaomi_miio.markdown b/source/_components/switch.xiaomi_miio.markdown new file mode 100644 index 00000000000..f8d03291d0d --- /dev/null +++ b/source/_components/switch.xiaomi_miio.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "Xiaomi Smart WiFi Socket and Smart Power Strip" +description: "Instructions how to integrate your Xiaomi Smart WiFi Socket aka Plug or Xiaomi Smart Power Strip within Home Assistant." +date: 2017-08-26 10:18 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: Switch +ha_version: 0.56 +ha_iot_class: "Local Polling" +--- + +The `xiaomi_miio` switch platform allows you to control the state of your Xiaomi Smart WiFi Socket aka Plug or Xiaomi Smart Power Strip. + +Currently, the supported features are `on`, `off`. If the device provides the current load, it will be reported. + +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 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 + token: YOUR_TOKEN +``` + +Configuration variables: +- **host** (*Required*): The IP of your plug. +- **token** (*Required*): The API token of your plug. +- **name** (*Optional*): The name of your plug. diff --git a/source/_components/switch.zha.markdown b/source/_components/switch.zha.markdown index bac40445505..c5c7eee2c5d 100644 --- a/source/_components/switch.zha.markdown +++ b/source/_components/switch.zha.markdown @@ -1,7 +1,7 @@ --- layout: page title: "ZigBee Home Automation Switch" -description: "Instructions how to setup ZigBee Home Automation switches within Home Assistant." +description: "Instructions on how to setup ZigBee Home Automation switches within Home Assistant." date: 2017-02-22 00:00 sidebar: true comments: false @@ -12,4 +12,4 @@ ha_category: Switch ha_iot_class: "Local Polling" --- -To get your ZigBee switches working with Home Assistant, follow theminstructions for the general [ZigBee Home Automation component](/components/zha/). +To get your ZigBee switches working with Home Assistant, follow the instructions for the general [ZigBee Home Automation component](/components/zha/). diff --git a/source/_components/telegram_bot.broadcast.markdown b/source/_components/telegram_bot.broadcast.markdown new file mode 100644 index 00000000000..d743f1d8916 --- /dev/null +++ b/source/_components/telegram_bot.broadcast.markdown @@ -0,0 +1,39 @@ +--- +layout: page +title: "Telegram broadcast" +description: "Telegram support to send messages only" +date: 2017-06-24 11:20 +sidebar: true +comments: false +sharing: true +footer: true +logo: telegram.png +ha_category: Telegram chatbot +ha_release: 0.48 +--- + +Telegram implementation to support **sending messages only**. Your Home Assistant instance does not have to be exposed to the Internet and there is no polling to receive messages sent to the bot. + +To integrate this into Home Assistant, add the following section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry + +telegram_bot: + - platform: broadcast + api_key: + allowed_chat_ids: + - 12345 + - 67890 +``` + +Configuration variables: + +- **allowed_chat_ids** (*Required*): A list of user in the `user_id` Telegram format enabled to interact to webhook +- **api_key** (*Required*): The API token of your bot. +- **parse_mode** (*Optional*): Default parser for messages if not explicit in message data: 'html' or 'markdown'. Default is 'markdown'. +- **proxy_url** (*Optional*): Proxy url if working behind one (`socks5://proxy_ip:proxy_port`) +- **proxy_params** (*Optional*): Proxy configuration parameters, as dict, if working behind a proxy (`username`, `password`, etc.) + +To get your `chat_id` and `api_key` follow the instructions [here](/components/notify.telegram/). + diff --git a/source/_components/telegram_bot.markdown b/source/_components/telegram_bot.markdown index 1558621f39b..c4d93c43bc5 100644 --- a/source/_components/telegram_bot.markdown +++ b/source/_components/telegram_bot.markdown @@ -17,6 +17,7 @@ Use Telegram on your mobile or desktop device to send and receive messages or co This component creates notification services to send, or edit previously sent, messages from a [Telegram Bot account](https://core.telegram.org/bots) configured either with the [polling](/components/telegram_bot.polling/) method or with the [webhooks](/components/telegram_bot.webhooks/) one, and trigger events when receiving messages. +If you don't need to receive messages, you can use the [broadcast](/components/telegram_bot.broadcast/) platform instead. ### {% linkable_title Notification services %} Available services: `send_message`, `send_photo`, `send_document`, `send_location`, `edit_message`, `edit_replymarkup`, `edit_caption`, `answer_callback_query`. @@ -80,11 +81,11 @@ Send a location. | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | #### {% linkable_title Service `telegram_bot/edit_message` %} -Edit a previusly sent message in a conversation. +Edit a previously sent message in a conversation. | Service data attribute | Optional | Description | |---------------------------|----------|--------------------------------------------------| -| `message_id` | no | Id of the message to edit. When answering a callback from a pressed button, the id of the origin message is in: `{{ trigger.event.data.message.message_id }}`. | +| `message_id` | no | Id of the message to edit. When answering a callback from a pressed button, the id of the origin message is in: `{{ trigger.event.data.message.message_id }}`. You can use `"last"` to refer to the last message sent to `chat_id`. | | `chat_id` | no | The chat_id where to edit the message. | | `message` | no | Message body of the notification. | | `title` | yes | Optional title for your notification. Will be composed as '%title\n%message'. | @@ -93,11 +94,11 @@ Edit a previusly sent message in a conversation. | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | #### {% linkable_title Service `telegram_bot/edit_caption` %} -Edit the caption of a previusly sent message. +Edit the caption of a previously sent message. | Service data attribute | Optional | Description | |---------------------------|----------|--------------------------------------------------| -| `message_id` | no | Id of the message to edit. When answering a callback from a pressed button, the id of the origin message is in: `{{ trigger.event.data.message.message_id }}`. | +| `message_id` | no | Id of the message to edit. When answering a callback from a pressed button, the id of the origin message is in: `{{ trigger.event.data.message.message_id }}`. You can use `"last"` to refer to the last message sent to `chat_id`. | | `chat_id` | no | The chat_id where to edit the caption. | | `caption` | no | Message body of the notification. | | `disable_web_page_preview`| yes | True/false for disable link previews for links in the message. | @@ -108,7 +109,7 @@ Edit the inline keyboard of a previusly sent message. | Service data attribute | Optional | Description | |---------------------------|----------|--------------------------------------------------| -| `message_id` | no | Id of the message to edit. When answering a callback from a pressed button, the id of the origin message is in: `{{ trigger.event.data.message.message_id }}`. | +| `message_id` | no | Id of the message to edit. When answering a callback from a pressed button, the id of the origin message is in: `{{ trigger.event.data.message.message_id }}`. You can use `"last"` to refer to the last message sent to `chat_id`. | | `chat_id` | no | The chat_id where to edit the reply_markup. | | `disable_web_page_preview`| yes | True/false for disable link previews for links in the message. | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | @@ -122,10 +123,18 @@ Respond to a callback query originated by clicking on an online keyboard button. | `callback_query_id` | no | Unique id of the callback response. In the `telegram_callback` event data: `{{ trigger.event.data.id }}` | | `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 | +|---------------------------|----------|--------------------------------------------------| +| `message_id` | no | Id of the message to delete. When answering a callback from a pressed button, the id of the origin message is in: `{{ trigger.event.data.message.message_id }}`. You can use `"last"` to refer to the last message sent to `chat_id`. | +| `chat_id` | no | The chat_id where to delete the message. | + ### {% linkable_title `Telegram` notification platform %} -The [Telegram notification platform](/components/notify.telegram/) requires the `telegram_bot` component to work with, and it's designed to generate a customised shortcut (`notify.USERNAME`) to send notifications (messages, photos, documents and locations) to a particular `chat_id` with the old syntax, allowing backward compatibility. +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: ```yaml diff --git a/source/_components/telegram_bot.polling.markdown b/source/_components/telegram_bot.polling.markdown index fcd0ce4a9bf..a938dca5c5d 100644 --- a/source/_components/telegram_bot.polling.markdown +++ b/source/_components/telegram_bot.polling.markdown @@ -34,6 +34,8 @@ Configuration variables: - **allowed_chat_ids** (*Required*): A list of user in the `user_id` Telegram format enabled to interact to webhook - **api_key** (*Required*): The API token of your bot. - **parse_mode** (*Optional*): Default parser for messages if not explicit in message data: 'html' or 'markdown'. Default is 'markdown'. +- **proxy_url** (*Optional*): Proxy url if working behind one (`socks5://proxy_ip:proxy_port`) +- **proxy_params** (*Optional*): Proxy configuration parameters, as dict, if working behind a proxy (`username`, `password`, etc.) To get your `chat_id` and `api_key` follow the instructions [here](/components/notify.telegram/). diff --git a/source/_components/telegram_bot.webhooks.markdown b/source/_components/telegram_bot.webhooks.markdown index 491b292879b..8b88dcb77ae 100644 --- a/source/_components/telegram_bot.webhooks.markdown +++ b/source/_components/telegram_bot.webhooks.markdown @@ -14,6 +14,8 @@ ha_release: 0.42 Telegram chatbot webhooks implementation as described in the Telegram [documentation](https://core.telegram.org/bots/webhooks). +Using Telegrams `setWebhook` method your bot's webhook URL should be set to `https://:/api/telegram_webhooks`. + This is one of two bot implementations supported by Telegram. Described by Telegram as the preferred implementation but requires your Home Assistant instance to be exposed to the internet. To integrate this into Home Assistant, add the following section to your `configuration.yaml` file: @@ -34,13 +36,15 @@ telegram_bot: Configuration variables: -- **allowed_chat_ids** (*Required*): A list of user in the `user_id` Telegram format enabled to interact to webhook +- **allowed_chat_ids** (*Required*): A list of ids representing the users and group chats that are authorized to interact with the webhook. - **api_key** (*Required*): The API token of your bot. - **trusted_networks** (*Optional*): Telegram server access ACL as list. Defaults to `149.154.167.197-233`. - **parse_mode** (*Optional*): Default parser for messages if not explicit in message data: 'html' or 'markdown'. Default is 'markdown'. -- **url** (*Optional*): Allow to overwrite the `base_url` from http component for diferent configs. +- **proxy_url** (*Optional*): Proxy url if working behind one (`socks5://proxy_ip:proxy_port`) +- **proxy_params** (*Optional*): Proxy configuration parameters, as dict, if working behind a proxy (`username`, `password`, etc.) +- **url** (*Optional*): Allow to overwrite the `base_url` from the [`http`](/components/http/) component for different configurations (`https://:`). -To get your `chat_id` and `api_key` follow the instructions [here](/components/notify.telegram) . +To get your `chat_id` and `api_key` follow the instructions [here](/components/notify.telegram). As well as authorizing the chat, if you have added your bot to a group you will also need to authorize any user that will be interacting with the webhook. When an unauthorized user tries to interact with the webhook Home Assistant will raise an error ("Incoming message is not allowed"), you can easily obtain the users id by looking in the "from" section of this error message. Full configuration sample: diff --git a/source/_components/tellstick.markdown b/source/_components/tellstick.markdown index a7968cccb00..652e77a15c4 100644 --- a/source/_components/tellstick.markdown +++ b/source/_components/tellstick.markdown @@ -12,7 +12,7 @@ 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](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). To get started, add the devices to your `configuration.yaml` file. @@ -24,4 +24,6 @@ tellstick: Configuration variables: - **signal_repetitions** (*Optional*): Because the tellstick 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 and light to try to send each signal repeatedly. +- **host** (*Optional*): If you run tellstick on a other server or with a hass.io add-on. +- **port** (*Optional*): If needed with host config option. diff --git a/source/_components/tesla.markdown b/source/_components/tesla.markdown new file mode 100644 index 00000000000..4cc5dbd85d3 --- /dev/null +++ b/source/_components/tesla.markdown @@ -0,0 +1,40 @@ +--- +layout: page +title: "Tesla" +description: "Instructions on how to integrate Tesla car into Home Assistant." +date: 2017-08-28 17:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: tesla.png +ha_category: Hub +ha_release: 0.53 +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. + - 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 switch. Allow you to start/stop charging. + +To use Tesla in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +tesla: + username: email + password: password +``` + +Configuration variables: + +- **username** (*Required*): The email address associated with your Tesla account. +- **password** (*Required*): The password for your given Tesla account. +- **scan_interval** (*Optional*): API polling interval. Minimal value can't be less then 300. (Defaults 300) diff --git a/source/_components/thethingsnetwork.markdown b/source/_components/thethingsnetwork.markdown new file mode 100644 index 00000000000..65211c241d6 --- /dev/null +++ b/source/_components/thethingsnetwork.markdown @@ -0,0 +1,63 @@ +--- +layout: page +title: "The Things Network" +description: "Instructions for how to integrate The Things Network within Home Assistant." +date: 2017-09-30 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: thethingsnetwork.png +ha_category: Hub +ha_release: 0.55 +ha_iot_class: depends +--- + +The `thethingsnetwork` component allows one to interact with the [The Things Network](https://www.thethingsnetwork.org). This community-driven and open network supports [LoRaWAN](https://www.lora-alliance.org/) for long range (~5 to 15km) communication with a low bandwidth (51 bytes/message). [Gateways](https://www.thethingsnetwork.org/docs/gateways/) transfers the received data from the sensors to the The Things Network. + +The Things network support various integrations to make the data available: + +| The Things Network Integration | Home Assistant platform | +|---|---| +| [MQTT](https://www.thethingsnetwork.org/docs/applications/mqtt/) | | +| [Storage](https://www.thethingsnetwork.org/docs/applications/storage/) | [`thethingsnetwork`](/component/sensor.thethingsnetwork/) | +| [HTTP](https://www.thethingsnetwork.org/docs/applications/http/) | | + +### {% linkable_title Setup %} + +Visit the [The Things Network Console](https://console.thethingsnetwork.org/) website, log in with your The Things Network credentials, choose your application from **Applications**. + +The **Application ID** is used to identify the scope of your data. + +

+ +Application overview +

+ +You need an access key to be able to read the data from your application. + +

+ +Access keys +

+ +To enable this component, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +thethingsnetwork: + app_id: sensor-123 + access_key: ttn-account-v2.xxxxxxxxxxx_yyyyyyyyyyy +``` + +{% configuration %} + app_id: + description: The Application ID. + required: true + type: string + access_key: + description: The access key. + required: true + type: string +{% endconfiguration %} + diff --git a/source/_components/thingspeak.markdown b/source/_components/thingspeak.markdown index e96833fb065..d8da23a931b 100644 --- a/source/_components/thingspeak.markdown +++ b/source/_components/thingspeak.markdown @@ -17,7 +17,7 @@ For now, it records exactly one entity at once, which is great for testing purpo You will have to create a [new channel](https://thingspeak.com/channels/new) on ThingSpeak and grab your Write API Key from the "API Keys" tab of the channel you want to use. -To setup the ThinkSpeak component in your installation, add the following to your `configuration.yaml` file: +To setup the ThingSpeak component in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_components/timer.markdown b/source/_components/timer.markdown new file mode 100644 index 00000000000..c3e35ab8fbe --- /dev/null +++ b/source/_components/timer.markdown @@ -0,0 +1,94 @@ +--- +layout: page +title: "Timer" +description: "Instructions how to integrate timers into Home Assistant." +date: 2017-10-23 06:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Automation +ha_release: 0.57 +--- + +The `timer` component aims to simplify automations based on (dynamic) durations. + +When a timer finishes or gets cancelled the corresponding events are fired. This allows you to diffferentiate if a timer has switched from `active` to `idle` because the given duration has elapsed or it has been cancelled. To control timers in your automations you can use the services mentioned below. When calling the `start` service on a timer that is already running, it resets the duration it will need to finish and restart the timer without triggering any events. This for example makes it easy to create timed lights that get triggered by motion. + +

+With the current implementation timers don't persist over restarts. After a restart they will be idle again, together with their initial configuration. +

+ +To add a timer to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +timer: + timer: + duration: '00:01:00' +``` + +Configuration variables: + +- **[alias]** (*Required*): Alias for the timer. Multiple entries are allowed. + - **name** (*Optional*): Friendly name of the timer. + - **duration** (*Optional*): Initial duration in seconds or `00:00:00` when Home Assistant starts. Defaults to 0. + - **icon** (*Optional*): Set a custom icon for the state card. + +Pick an icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) to use for your timer and prefix the name with `mdi:`. For example `mdi:car`, `mdi:ambulance`, or `mdi:motorbike`. + +## {% linkable_title Events %} + +| Event | Description | +| --------------- | ----------- | +| timer.cancelled | Fired when a timer has been cancelled | +| timer.finished | Fired when a timer has completed | + +## {% linkable_title Services %} + +#### {% 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. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `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` %} + +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. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | Name of the entity to take action, e.g., `timer.timer0`. | + +#### {% linkable_title Service `timer.cancel` %} + +Cancel an active timer. This resets the duration to the last known initial value without firing the `timer.finished` event. If no `entity_id` is given all active timers will be cancelled. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | Name of the entity to take action, e.g., `timer.timer0`. | + +#### {% linkable_title Service `timer.finish` %} + +Manually finish a running timer earlier than scheduled. If no `entity_id` is given all active timers will be finished. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | Name of the entity to take action, e.g., `timer.timer0`. | + + +### {% linkable_title Use the service %} + +Select service developer tool icon **Services** from the **Developer Tools**. Choose **timer** from the list of **Domains**, select the **Service**, enter something like the sample below into the **Service Data** field, and hit **CALL SERVICE**. + +```json +{ + "entity_id": "timer.timer0" +} +``` + diff --git a/source/_components/toon.markdown b/source/_components/toon.markdown new file mode 100644 index 00000000000..08c38f9acea --- /dev/null +++ b/source/_components/toon.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "Toon" +description: "Instructions how to integrate Toon within Home Assistant." +date: 2017-10-22 12:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Hub +ha_release: 0.56 +logo: toon.png +ha_iot_class: "Cloud Polling" +--- + +The `toon` component platform can be used to control your Toon thermostat. This component adds a climate device for your Toon thermostat and sensors for power and gas consumption. The component also auto-detects any smart plugs, solar panels and smoke detectors connected to Toon and adds sensors and switches for them. + +For the `toon` component to work, you'll need an active Toon subscription with Eneco. The component uses your Mijn Eneco credentials to control your thermostat through the [toonopafstand](https://toonopafstand.eneco.nl) domain. + +To use your Toon thermostat in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +toon: + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +Configuration variables: + +- **username** (*Required*): Username for Mijn Eneco. +- **password** (*Required*): Password for Mijn Eneco. + +Toon is a smart thermostat delivered by the Eneco power company in The Netherlands. It can measure energy consumption (power and gas), but also the amount of energy generated in case solar panels are connected to it. Toon also acts as a z-wave hub for supported devices like the wall plug and the smoke detector. This component uses the [toonlib library](https://github.com/costastf/toonlib) by Costas Tyfoxylos that connects to the unofficial API on [https://toonopafstand.eneco.nl](https://toonopafstand.eneco.nl). + +The current version of this component supports setting any of the four built-in programs and setting the temperature manually. It polls the Toon API at 30 second intervals so the status is relatively fresh without overloading the API. diff --git a/source/_components/tradfri.markdown b/source/_components/tradfri.markdown index 8bd6a2af081..1ce20d6a0c2 100644 --- a/source/_components/tradfri.markdown +++ b/source/_components/tradfri.markdown @@ -14,54 +14,27 @@ 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. +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. -For this to work, you need to install a modified lib-coap library. - -Linux: - -```bash -$ sudo apt-get install libtool -$ sudo apt-get install autoconf - -$ git clone --depth 1 --recursive -b dtls https://github.com/home-assistant/libcoap.git -$ cd libcoap -$ ./autogen.sh -$ ./configure --disable-documentation --disable-shared --without-debug CFLAGS="-D COAP_DEBUG_FD=stderr" -$ make -$ sudo make install -``` - -macOS: - -```bash -$ sudo brew install libtool -$ sudo brew install autoconf -$ sudo brew install automake -$ git clone --depth 1 --recursive -b dtls https://github.com/home-assistant/libcoap.git -$ cd libcoap -$ ./autogen.sh -$ ./configure --disable-documentation --disable-shared --without-debug CFLAGS="-D COAP_DEBUG_FD=stderr" -$ make -$ sudo make install -``` -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. Enter the security key when prompted and click configure.

-If you see an "Unable to connect" message, restart the gateway and try again. +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.

-The gateway can also be manually configured by adding the following lines to your `configuration.yaml` file: +You can add the following to your `configuration.yaml` file if you are not using the [`discovery:`](/components/discovery/) component: ```yaml # Example configuration.yaml entry tradfri: host: IP_ADDRESS - api_key: API_KEY ``` Configuration variables: - **host** (*Required*): The IP address or hostname of your Trådfri gateway. - - **api_key** (*Required*): Can be found listed as Security Key on the back of the Trådfri gateway. - - **allow_tradfri_groups** (*Optional*): (true/false) Enable this to stop Home Assistant from importing the groups defined on the Tradfri bridge. + - **allow_tradfri_groups** (*Optional*): Enable this to stop Home Assistant from importing the groups defined on the Trådfri bridge. Defaults to `true`. + +

+Do not use the `api_key` variable. The key is only needed once at initial setup. +

diff --git a/source/_components/tts.amazon_polly.markdown b/source/_components/tts.amazon_polly.markdown index 7433a526a74..465a5abea16 100644 --- a/source/_components/tts.amazon_polly.markdown +++ b/source/_components/tts.amazon_polly.markdown @@ -25,6 +25,7 @@ tts: aws_secret_access_key: AWS_SECRET_ACCESS_KEY profile_name: AWS_PROFILE region_name: 'us-east-1' + voice: Joanna ``` Configuration variables: @@ -33,12 +34,14 @@ Configuration variables: |---------------------|----------|-------------| | `aws_access_key_id` | Required | Your AWS Access Key ID. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name` | | `aws_secret_access_key` | Required | Your AWS Secret Access Key. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). 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. For more information, please see the [boto3 | +| `profile_name` | Optional | A credentials profile name. For more information, please see the [boto3 Documentation](http://boto3.readthedocs.io/en/latest/guide/configuration.html#shared-credentials-file) for more information. | | `region_name` | Optional | 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`. - | -| `text_type` | text/ssml | text or ssml: Specify wherever to use text (default) or ssml markup | - +| `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`. | +| `text_type` | text/ssml | text or ssml: Specify wherever to use text (default) or ssml markup by default. | +| `voice` | Optional | Voice name to be used. See the [Amazon Documentation](http://docs.aws.amazon.com/polly/latest/dg/voicelist.html) for available voices. | +| `output_format` | mp3/ogg_vorbis/pcm | Override the default output format, defaults to MP3. | +| `sample_rate` | 8000/16000/22050 | Override the default sample rate, defaults to 22050 for MP3 and Ogg Vorbis, 16000 for pcm. | + ## Usage Say to all `media_player` device entities: ```yaml diff --git a/source/_components/tts.markdown b/source/_components/tts.markdown index 7039136506f..7a2733ebbc3 100644 --- a/source/_components/tts.markdown +++ b/source/_components/tts.markdown @@ -27,7 +27,7 @@ The following optional parameters can be used with any platform. However the TTS | Parameter | Default | Description | |---------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `cache` | True | Allow TTS to cache voice file to local storage. | -| `cache_dir` | tts | Foldername or path to folder for caching files. | +| `cache_dir` | tts | Folder name or path to folder for caching files. | | `time_memory` | 300 | Time to hold the voice data inside memory for fast play on media player. Minimum is 60 s and the maximum 57600 s (16 hours). | The extended example from above would look like the following sample: @@ -42,7 +42,7 @@ tts: ```

-If you are running Home Assistant over SSL or from within a container, you will have to setup a base url inside the [http component](/components/http/). +If you are running Home Assistant over SSL or from within a container, you will have to setup a base URL (`base_url`) inside the [http component](/components/http/).

## {% linkable_title Service say %} diff --git a/source/_components/tts.microsoft.markdown b/source/_components/tts.microsoft.markdown new file mode 100644 index 00000000000..b55acbd0fac --- /dev/null +++ b/source/_components/tts.microsoft.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "Microsoft Text-to-Speech" +description: "Instructions how to setup Microsoft Text-to-Speech with Home Assistant." +date: 2017-10-23 11:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: microsoft.png +ha_category: Text-to-speech +ha_release: 0.57 +--- + +The `microsoft` text-to-speech platform uses [Microsoft Text-to-Speech engine](https://docs.microsoft.com/en-us/azure/cognitive-services/speech/home) to read a text with natural sounding voices. This component uses an API that is part of the Cognitive Services offering and is known as the Bing Speech API. +You will need an API key, which is free. You can use your [Azure subscription](https://azure.microsoft.com) or get an API key on the [Cognitive Services site](https://azure.microsoft.com/en-us/try/cognitive-services/). + +To enable text-to-speech with Microsoft, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +tts: + - platform: microsoft + api_key: [YourAPIKey] +``` + +Configuration variables: + +- **api_key** (*Required*): Your API key. +- **language** (*Optional*): The language to use. Defaults to `en-us`. Accepted values are listed in the documentation mentioned below. +- **gender** (*Optional*): The gender you would like to use for the voice. Accepted values are `Female` and `Male`. Defaults to `Female` +- **type** (*Optional*): The voice type you want to use. Accepted values are listed in the service name mapping [in the documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/Speech/api-reference-rest/bingvoiceoutput). Defaults to `ZiraRUS` + + +A full configuration sample including optional configuration variables: + +```yaml +# Example configuration.yaml entry +tts: + - platform: microsoft + api_key: XXXXXXXXX + language: en-us + gender: male + type: BenjaminRUS +``` diff --git a/source/_components/tts.voicerss.markdown b/source/_components/tts.voicerss.markdown index cd1a0156da8..a256b144dcc 100644 --- a/source/_components/tts.voicerss.markdown +++ b/source/_components/tts.voicerss.markdown @@ -25,9 +25,9 @@ tts: Configuration variables: -- **api_key** (*Requered*): API Key for use this service. +- **api_key** (*Required*): API Key for use this service. - **language** (*Optional*): The language to use. Defaults to `en-us`. -- **codec** (*Optional*): Audo codec. Default is 'mp3'. +- **codec** (*Optional*): Audio codec. Default is 'mp3'. - **format** (*Optional*): Audio sample format. Default is '8khz_8bit_mono' See on api [documentation](http://www.voicerss.org/api/documentation.aspx) for allow values. diff --git a/source/_components/tts.yandextts.markdown b/source/_components/tts.yandextts.markdown index ce94c017729..18693965e7e 100644 --- a/source/_components/tts.yandextts.markdown +++ b/source/_components/tts.yandextts.markdown @@ -26,13 +26,13 @@ tts: Configuration variables: - **api_key** (*Required*): API Key for use this service. -- **language** (*Optional*): The language to use. Defaults to `en-us`. Supported `en-EN`, `ru-RU`, `uk-UK`, `tr-TR`. -- **codec** (*Optional*): Audo codec. Default is `mp3`. Supported us `mp3`, `wav`, `opus`. -- **voice** (*Optional*): Speaker voice. Default is `zahar`. Supported female voices are `jane`, `oksana`, `alyss`, 'omazh` and male voices are `zahar` and `ermil`. -- **emotion** (*Optional*): Speaker emotional intonation. Default is `neutral`. Also supported are `good` (freindly) and `evil` (angry) +- **language** (*Optional*): The language to use. Defaults to `en-US`. Supported `en-US`, `ru-RU`, `uk-UK`, `tr-TR`. +- **codec** (*Optional*): Audio codec. Default is `mp3`. Supported us `mp3`, `wav`, `opus`. +- **voice** (*Optional*): Speaker voice. Default is `zahar`. Supported female voices are `jane`, `oksana`, `alyss`, `omazh` and male voices are `zahar` and `ermil`. +- **emotion** (*Optional*): Speaker emotional intonation. Default is `neutral`. Also supported are `good` (friendly) and `evil` (angry) - **speed** (*Optional*): Speech speed. Default value is `1`. Highest speed is `3` and lowest `0,1` -See on api [documentation](https://tech.yandex.com/speechkit/cloud/doc/dg/concepts/speechkit-dg-tts-docpage/) for details. N.B. english version of documentation is outdated. So you could receive api key [here](https://developer.tech.yandex.ru/) +Please check the [API documentation](https://tech.yandex.com/speechkit/cloud/doc/guide/concepts/tts-http-request-docpage/) for details. It seems that the English version of documentation is outdated. You could request an API key [by email](https://tech.yandex.com/speechkit/cloud/) or [online](https://developer.tech.yandex.ru/). A full configuration sample: diff --git a/source/_components/twilio.markdown b/source/_components/twilio.markdown index 56c7afd5c06..299a91f0195 100644 --- a/source/_components/twilio.markdown +++ b/source/_components/twilio.markdown @@ -29,7 +29,7 @@ twilio: Configuration variables: - **account_sid** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It starts with the letters `AC`. -- **auth_token** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It should be directly under where you found the `account_sid`. +- **auth_token** (*Required*): Your Twilio AUTH TOKEN which can be found in your [console](https://www.twilio.com/console). It should be directly under where you found the `account_sid`. ### {% linkable_title Usage %} After configuring the base Twilio component, add and configure either or both of the [twilio SMS](https://home-assistant.io/components/notify.twilio_sms/) and [twilio Phone](https://home-assistant.io/components/notify.twilio_call) components to utilize the notification functionality. diff --git a/source/_components/updater.markdown b/source/_components/updater.markdown index 89970ce5e1d..86991b94d52 100644 --- a/source/_components/updater.markdown +++ b/source/_components/updater.markdown @@ -11,9 +11,9 @@ logo: home-assistant.png ha_category: Other --- -The `updater` component will check daily for new releases. It will show a badge in the frontend if a new version was found. +The `updater` component will check daily for new releases. It will show a badge in the frontend if a new version is found. -The updater component will also collect basic information about the running Home Assistant instance and its environment. The information includes the current Home Assistant version, the timezone, Python version and operating system information. No identifiable information (i.e. IP address, GPS coordinates, etc.) will ever be collected. If you are concerned about your privacy, you are welcome to scrutinize the Python [source code](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/updater.py#L91). For further information about the Updater's data please check the [detailed overview](/docs/backend/updater/). +The updater component will also collect basic information about the running Home Assistant instance and its environment. The information includes the current Home Assistant version, the time zone, Python version and operating system information. No identifiable information (i.e., IP address, GPS coordinates, etc.) will ever be collected. If you are concerned about your privacy, you are welcome to scrutinize the Python [source code](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/updater.py#L91). For further information about the Updater's data, please check the [detailed overview](/docs/backend/updater/). To integrate this into Home Assistant, add the following section to your `configuration.yaml` file: diff --git a/source/_components/upnp.markdown b/source/_components/upnp.markdown index facf006f9c6..fb538ef183b 100644 --- a/source/_components/upnp.markdown +++ b/source/_components/upnp.markdown @@ -1,7 +1,7 @@ --- layout: page title: "UPnP" -description: "Automatically creates port mappings on your router for Home Assistant." +description: "Internet Gateway Device (IGD) Protocol for Home Assistant." date: 2016-04-10 19:16 sidebar: true comments: false @@ -12,23 +12,45 @@ ha_category: "Other" ha_release: 0.18 --- -The `upnp` component automatically creates port forwarding mappings on your router for Home Assistant. UPnP or NAT-PMP needs to be enabled on your router for this component to work. +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 Internet Gateway Device (IGD) Protocol if enabled on your router. -You need to install [miniupnpc](https://github.com/miniupnp/miniupnp/tree/master/miniupnpc) before using the UPnP component: +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. -```bash -$ git clone https://github.com/miniupnp/miniupnp.git -$ cd miniupnp/miniupnpc -$ make -$ make pythonmodule3 -$ sudo make installpythonmodule3 -``` +Please note that UPnP or NAT-PMP needs to be enabled on your router for this component to work. To integrate this into Home Assistant, add the following section to your `configuration.yaml` file: ```yaml -# Example configuration.yaml entry +# Example configuration.yaml entry with custom external portal upnp: + ports: + hass: 8000 + 8080: 8080 ``` -A port mapping will be created using the IP address and port that Home Assistant is running on. The mapping will never automatically expire. Upon stopping Home Assistant, the mapping will be removed from your router. +If you which to have the statistics without having port mapping done through IGD, add the option **port_mapping**. + +Configuration variables: + +{% configuration binary_sensor.template %} + ports: + description: Map of ports to map from internal to external. Pass 'hass' as internal port to use the port Home Assistant runs on. + required: false + type: map + default: open same port on external router as that HASS runs locally and forwards it. + port_mapping: + description: If the component should try to map ports. + required: false + type: boolean + default: false + units: + description: Define the units used for the UPNP sensor. Possible values are Bytes, KBytes, MBytes, GBytes. + required: false + type: string + default: Mbytes + local_ip: + description: The local IP address of the computer running Home Assistant. + required: false + type: string + default: Try to auto-detect IP of host. +{% endconfiguration %} diff --git a/source/_components/usps.markdown b/source/_components/usps.markdown new file mode 100644 index 00000000000..6f92cc8e779 --- /dev/null +++ b/source/_components/usps.markdown @@ -0,0 +1,38 @@ +--- +layout: page +title: USPS +description: "Interface USPS mail and package information to Home Assistant." +date: 2017-07-28 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: usps.png +ha_category: Hub +ha_release: 0.52 +ha_iot_class: "Cloud Polling" +--- + +The `usps` platform allows one to track deliveries and inbound mail from the [US Postal Service (USPS)](https://www.usps.com/). +In addition to having a USPS account, you will need to complete the "Opt-In" process for packages by clicking "Get Started Now" on [this page](https://my.usps.com/mobileWeb/pages/intro/start.action). You must also "Opt-In" to [Informed Delivery](https://informeddelivery.usps.com/box/pages/intro/start.action) to see inbound mail. + +To enable this component, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +usps: + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +You will see two new sensors, one for packages and one for mail and a camera to rotate through images of incoming mail for the current day. + +Configuration options for the USPS component: + +- **username** (*Required*): The username to access the MyUSPS service. +- **password** (*Required*): The password for the given username. +- **name** (*Optional*): Prefix for sensor names (defaults to "USPS") + +

+The USPS sensor logs into the MyUSPS website to scrape package data. It does not use an API. +

diff --git a/source/_components/vacuum.dyson.markdown b/source/_components/vacuum.dyson.markdown new file mode 100644 index 00000000000..4ac3d49e5e1 --- /dev/null +++ b/source/_components/vacuum.dyson.markdown @@ -0,0 +1,30 @@ +--- +layout: page +title: "Dyson 360 Eye" +description: "Instructions how to integrate your Dyson Eye 360 vacuum robot within Home Assistant." +date: 2017-08-06 10:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: dyson.png +ha_category: Vacuum +ha_iot_class: "Cloud Polling" +ha_release: 0.51 +--- + +The `dyson` vacuum platform allows you to control your Dyson 360 Eye robot vacuum. + +You have first to setup the [Dyson component](/components/dyson/) + +### {% 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` diff --git a/source/_components/vacuum.markdown b/source/_components/vacuum.markdown new file mode 100644 index 00000000000..0428eef3e7d --- /dev/null +++ b/source/_components/vacuum.markdown @@ -0,0 +1,103 @@ +--- +layout: page +title: "Vacuum cleaner robots" +description: "Instructions how to setup a botvac in Home Assistant." +date: 2017-07-28 15:00 +sidebar: true +comments: false +sharing: true +footer: true +--- + +The `vacuum` component enables the ability to control home cleaning robots within Home Assistant. + +To use this component in your installation, add a `vacuum` platform to your `configuration.yaml` file, like the [Xiaomi](/components/vacuum.xiaomi/). + +```yaml +# Example configuration.yaml entry +vacuum: + - platform: xiaomi_miio + name: Living room + host: 192.168.1.2 +``` + +### {% linkable_title Component services %} + +Available services: `turn_on`, `turn_off`, `start_pause`, `stop`, `return_to_home`, `locate`, `clean_spot`, `set_fanspeed` and `send_command`. + +Before calling one of these services, make sure your botvac platform supports it. + +#### {% linkable_title Service `vacuum/turn_on` %} + +Start a new cleaning task. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific botvac. Else targets all. | + +#### {% linkable_title Service `vacuum/turn_off` %} + +Stop the current cleaning task and return to the dock. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific botvac. Else targets all. | + +#### {% linkable_title Service `vacuum/start_pause` %} + +Start, pause or resume a cleaning task. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific botvac. Else targets all. | + +#### {% linkable_title Service `vacuum/stop` %} + +Stop the current activity of the botvac. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific botvac. Else targets all. | + +#### {% linkable_title Service `vacuum/return_to_home` %} + +Tell the botvac to return home. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific botvac. Else targets all. | + +#### {% linkable_title Service `vacuum/locate` %} + +Locate the vacuum cleaner robot. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific botvac. Else targets all. | + +#### {% linkable_title Service `vacuum/clean_spot` %} + +Tell the vacuum cleaner to do a spot clean-up. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific botvac. Else targets all. | + +#### {% linkable_title Service `vacuum/set_fanspeed` %} + +Set the fan speed of the botvac. The `fanspeed` can be a label, as `balanced` or `turbo`, or be a number; it depends on the `vacuum` platform. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific botvac. Else targets all. | +| `fanspeed` | no | Platform dependent vacuum cleaner fan speed, with speed steps, like 'medium', or by percentage, between 0 and 100. | + +#### {% linkable_title Service `vacuum/send_command` %} + +Send a platform-specific command to the vacuum cleaner. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific botvac. Else targets all. | +| `command` | no | Command to execute. | +| `params` | yes | Parameters for the command. | diff --git a/source/_components/vacuum.mqtt.markdown b/source/_components/vacuum.mqtt.markdown new file mode 100644 index 00000000000..df5a01a8cf8 --- /dev/null +++ b/source/_components/vacuum.mqtt.markdown @@ -0,0 +1,137 @@ +--- +layout: page +title: "MQTT Vacuum" +description: "Instructions how to integrate your MQTT enabled Vacuum within Home Assistant." +date: 2017-09-11 20:26 +sidebar: true +comments: false +sharing: true +footer: true +logo: mqtt.png +ha_category: Vacuum +ha_release: 0.54 +--- + +The `mqtt` vacuum component allows you to control your MQTT-enabled vacuum. + +To add your MQTT vacuum to your installation, add the following to your `configuration.yaml` file: + +```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 }}" + 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' +``` + +Basic Configuration variables: + +- **name** (*Optional*): The name of the vacuum. Defaults to `MQTT Vacuum`. +- **supported_features** (*Optional*): List of features that the vacuum supports (possible values are `turn_on`, `turn_off`, `pause`, `stop`, `return_home`, `battery`, `status`, `locate`, `clean_spot`, `fan_speed`, `send_command`). Defaults to `turn_on`, `turn_off`, `stop`, `return_home`, `status`, `battery`, `clean_spot`. +- **command_topic** (*Optional*): The MQTT topic to publish commands to control the vacuum. + +Advanced Configuration variables: + +- **qos** (*Optional*): The maximum QoS level of the state topic. Defaults to `0`. Will also be used when publishing messages. +- **retain** (*Optional*): If the published message should have the retain flag on or not. Defaults to `false`. +- **payload_turn_on** (*Optional*): The payload to send to the `command_topic` to begin the cleaning cycle. Defaults to `turn_on`. +- **payload_turn_off** (*Optional*): The payload to send to the `command_topic` to turn the vacuum off. Defaults to `turn_off`. +- **payload_return_to_base** (*Optional*): The payload to send to the `command_topic` to tell the vacuum to return to base. Defaults to `return_to_base`. +- **payload_stop** (*Optional*): The payload to send to the `command_topic` to stop the vacuum. Defaults to `stop`. +- **payload_clean_spot** (*Optional*): The payload to send to the `command_topic` to begin a spot cleaning cycle. Defaults to `clean_spot`. +- **payload_locate** (*Optional*): The payload to send to the `command_topic` to locate the vacuum (typically plays a song). Defaults to `locate`. +- **payload_start_pause** (*Optional*): The payload to send to the `command_topic` to start or pause the vacuum. Defaults to `start_pause`. +- **battery_level_topic** (*Optional*): The MQTT topic subscribed to receive battery level values from the vacuum. +- **battery_level_template** (*Optional*): Defines a [template](/topics/templating/) to define the battery level of the vacuum. +- **charging_topic** (*Optional*): The MQTT topic subscribed to receive charging state values from the vacuum. +- **charging_template** (*Optional*): Defines a [template](/topics/templating/) to define the charging state of the vacuum. +- **cleaning_topic** (*Optional*): The MQTT topic subscribed to receive cleaning state values from the vacuum. +- **cleaning_template** (*Optional*): Defines a [template](/topics/templating/) to define the cleaning state of the vacuum. +- **docked_topic** (*Optional*): The MQTT topic subscribed to receive docked state values from the vacuum. +- **docked_template** (*Optional*): Defines a [template](/topics/templating/) to define the docked state of the vacuum. +- **fan_speed_topic** (*Optional*): The MQTT topic subscribed to receive fan speed values from the vacuum. +- **fan_speed_template** (*Optional*): Defines a [template](/topics/templating/) to define the fan speed of the vacuum. +- **set_fan_speed_topic** (*Optional*): The MQTT topic to publish commands to control the vacuum's fan speed. +- **fan_speed_list** (*Optional*): List of possible fan speeds for the vacuum. +- **send_command_topic** (*Optional*): The MQTT topic to publish custom commands to the vacuum. + +### {% linkable_title Default MQTT Protocol %} + +The above configuration for this component expects an MQTT protocol like the following. + +#### Basic Commands + +MQTT topic: `vacuum/command` + +Possible MQTT payloads: +- `turn_on` - Begin cleaning +- `turn_off` - Turn the Vacuum off +- `return_to_base` - Return to base/dock +- `stop` - Stop the Vacuum +- `clean_spot` - Initialize a spot cleaning cycle +- `locate` - Locate the vacuum (typically by playing a song) +- `start_pause` - Toggle the vacuum between cleaning and stopping + +#### Set Fan Speed + +MQTT topic: `vacuum/set_fan_speed` + +Possible MQTT payloads: +- `min` - Minimum fan speed +- `medium` - Medium fan speed +- `high` - High fan speed +- `max` - Max fan speed + +#### Send Custom Command + +MQTT topic: `vacuum/send_command` + +MQTT payload for `send_command` can be an arbitrary value handled by the vacuum's MQTT-enabled firmware. + +#### Status/Sensor Updates + +MQTT topic: `vacuum/state` + +MQTT payload: +```json +{ + "battery_level": 61, + "docked": true, + "cleaning": false, + "charging": true, + "fan_speed": "off" +} +``` + +### {% linkable_title Retrofitting a non-wifi Roomba with an ESP8266 %} + +- [This repo](https://github.com/johnboiles/esp-roomba-mqtt) has MQTT client firmware for retrofitting your old Roomba. diff --git a/source/_components/vacuum.neato.markdown b/source/_components/vacuum.neato.markdown new file mode 100644 index 00000000000..2c0ed934646 --- /dev/null +++ b/source/_components/vacuum.neato.markdown @@ -0,0 +1,24 @@ +--- +layout: page +title: "Neato Robotics Vacuum" +description: "Instructions how to integrate a Neato Botvac Connected Vacuum within Home Assistant." +date: 2017-10-18 16:11 +sidebar: true +comments: false +sharing: true +footer: true +logo: neato.png +ha_category: Vacuum +ha_release: 0.57 +ha_iot_class: "Cloud Polling" +redirect_from: /components/sensor.neato/ +--- + +

+Starting with 0.57 the `neato` sensor was migrated to a vacuum platform. +

+ +The `neato` vacuum platform allows you to control your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). +The status will contain attributes on the robots last clean session. + +To add `neato` sensors to your installation, follow instructions in [Neato component](/components/neato/). diff --git a/source/_components/vacuum.roomba.markdown b/source/_components/vacuum.roomba.markdown new file mode 100644 index 00000000000..32c1393eb26 --- /dev/null +++ b/source/_components/vacuum.roomba.markdown @@ -0,0 +1,47 @@ +--- +layout: page +title: "iRobot Roomba" +description: "Instructions how to integrate your Wi-Fi enabled Roomba within Home Assistant." +date: 2017-08-04 20:43 +sidebar: true +comments: false +sharing: true +footer: true +logo: irobot_roomba.png +ha_category: Vacuum +ha_release: 0.51 +--- + +The `roomba` component allows you to control your [iRobot Roomba](http://www.irobot.com/For-the-Home/Vacuuming/Roomba.aspx) vacuum. + +

+This platform has only been tested with an iRobot Roomba 980 but should work find with any Wi-Fi enabled Roomba like the 690, 890 or the 960. +

+ +To add your Roomba vacuum to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +vacuum: + - platform: roomba + host: IP_ADDRESS_OR_HOSTNAME + username: BLID + password: PASSWORD +``` + +Configuration variables: + +- **host** (*Required*): Hostname or IP address of the Roomba. +- **username** (*Required*): The username (BLID) fro your device. +- **password** (*Required*): The password for your device. +- **name** (*Optional*): The name of the vacuum. +- **certificate** (*Optional*): Path to your certificate store. Defaults to `/etc/ssl/certs/ca-certificates.crt`. +- **continuous** (*Optional*): Whether to operate in continuous mode. Defaults to `True`. + +

+The Roomba's MQTT server only allows a single connection. Enabling continuous mode will force the App to connect via the cloud to your Roomba. [More info here](https://github.com/NickWaterton/Roomba980-Python#firmware-2xx-notes) +

+ +### {% linkable_title Retrieving your credentials %} + +Please refer to [here](https://github.com/NickWaterton/Roomba980-Python#how-to-get-your-usernameblid-and-password) or [here](https://github.com/koalazak/dorita980#how-to-get-your-usernameblid-and-password) to retrieve both the BLID (username) and the password. diff --git a/source/_components/vacuum.xiaomi_miio.markdown b/source/_components/vacuum.xiaomi_miio.markdown new file mode 100644 index 00000000000..1528d5c5eec --- /dev/null +++ b/source/_components/vacuum.xiaomi_miio.markdown @@ -0,0 +1,211 @@ +--- +layout: page +title: "Xiaomi Mi Robot Vacuum" +description: "Instructions on how to integrate your Xiaomi Mi Robot Vacuum within Home Assistant." +date: 2017-05-05 18:11 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: Vacuum +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/). + +Currently supported features are: + +- `turn_on` +- `pause` +- `stop` +- `return_to_home` +- `turn_off` (stop all activity and return to dock) +- `locate` +- `clean_spot` +- `set_fan_speed` +- remote control of your robot. + +Please follow [Retrieving the Access Token](/components/vacuum.xiaomi_miio/#retrieving-the-access-token) to retrieve the API token used in +`configuration.yaml`. + +## {% linkable_title Configuring the Platform %} + +To add a vacuum to your installation, add the following to `configuration.yaml`: + +```yaml +vacuum: + - platform: xiaomi_miio + host: 192.168.1.2 + token: YOUR_TOKEN +``` + +Configuration variables: + +- **host** (*Required*): The IP of your robot. +- **token** (*Required*): The API token of your robot. +- **name** (*Optional*): The name of your robot. + +## {% linkable_title Platform Services %} + +In addition to [all of the services provided by the `vacuum` component] +]) (`turn_on`, `turn_off`, `start_pause`, `stop`, `return_to_home`, `locate`, +`set_fan_speed` and `send_command`), the `xiaomi` platform introduces specific +services to access the remote control mode of the robot. These are: + +- `xiaomi_remote_control_start` +- `xiaomi_remote_control_stop` +- `xiaomi_remote_control_move` +- `xiaomi_remote_control_move_step` + +### {% linkable_title Service `vacuum/xiaomi_remote_control_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 | + +### {% 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 | + +### {% 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 seconds 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 seconds that the robot should move for | + +## {% linkable_title Attributes %} + +In addition to [all of the attributes provided by the `vacuum` component](https://home-assistant.io/components/vacuum/#attributes), +(`battery_icon`, `cleaned_area`, `fan_speed`, `fan_speed_list`, `status`, and +`params`), the `xiaomi` platform introduces specific attributes. These are: + +- `cleaning_time` +- `do_not_disturb` +- `main_brush_left` +- `side_brush_left` +- `filter_left` +- `cleaning_count` +- `total_cleaned_area` +- `total_cleaning_time` + +The following table shows the units of measurement for each attribute: + +| Attribute | Unit of measurement | Description | +|---------------------------|---------------------|-------------------------------------------------------| +| `do_not_disturb` | | DND mode on / off | +| `cleaning_time` | minutes | Last / actual cleaning time in minutes | +| `cleaned_area` | square meter | Last / actual cleaned area in square meters | +| `main_brush_left` | hours | Hours left until a change of the main brush is needed | +| `side_brush_left` | hours | Hours left until a change of the side brush is needed | +| `filter_left` | hours | Hours left until a change of the filter is needed | +| `cleaning_count` | | Number of total cleaning cycles | +| `total_cleaned_area` | square meter | Total cleaned area in square meters | +| `total_cleaning_time` | minutes | Total cleaning time in minutes | + +## {% linkable_title Retrieving the Access Token %} + +

+This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot +Vacuum and Xiaomi Philips Lights. 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. +

+ +#### {% linkable_title Windows and Android %} + +Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from a SQLite file inside your phone. + +Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-mirobo` to be installed correctly. + +```bash +$ 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. + +```bash +$ sudo su -s /bin/bash homeassistant +$ source /srv/homeassistant/bin/activate +``` + +To fetch the token follow these instructions depending on your mobile phone platform. + +1. Configure the robot with the Mi-Home app. +2. Download and extract the [MiToolKit.zip](https://github.com/ultrara1n/MiToolkit/releases). +3. Enable developer mode and USB debugging on the Android phone and plug it into the computer. +4. Change the MiToolKit language to English if you need to. +5. Click "Extract Token" +6. On the phone, you must confirm the backup. DO NOT enter any password and press the button to make the backup. +8. Once you have confirmed the backup the token extraction will begin, it should appear in the MiToolKit shortly. + +#### {% 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. + +Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-mirobo` to be installed correctly. + +```bash +$ 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. + +```bash +$ sudo su -s /bin/bash homeassistant +$ source /srv/homeassistant/bin/activate +``` + +To fetch the token follow these instructions depending on your mobile phone platform. + +1. Configure the robot with the Mi-Home app. +2. 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` +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. + +#### {% 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. +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. +7. Save this file to your filesystem. +8. Install [DB Browser for SQLite](http://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 ZNAME = "Mi Robot 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` +14. Use the resulting string as your token. diff --git a/source/_components/velbus.markdown b/source/_components/velbus.markdown new file mode 100644 index 00000000000..0f8f3abdead --- /dev/null +++ b/source/_components/velbus.markdown @@ -0,0 +1,25 @@ +--- +layout: page +title: "Velbus" +description: "Access and control your Velbus devices." +date: 2017-06-17 16.58 +sidebar: true +comments: false +sharing: true +footer: true +logo: velbus.png +ha_category: Hub +ha_iot_class: "Local Push" +ha_release: "0.50" +--- + +The `velbus` component supports the Velbus USB and Serial gateways. + +The gateway needs to be configured by adding the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry + +velbus: + port: '/dev/ttyUSB00' +``` diff --git a/source/_components/velux.markdown b/source/_components/velux.markdown new file mode 100644 index 00000000000..f73ddfab26b --- /dev/null +++ b/source/_components/velux.markdown @@ -0,0 +1,30 @@ +--- +layout: page +title: "Velux" +description: "Instructions on how to integrate Velux KLF 200 component with Home Assistant." +date: 2017-07-09 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: velux.png +ha_category: Hub +ha_release: 0.49 +ha_iot_class: "Local Polling" +--- + +[Velux](http://www.velux.com) integration for Home Assistant allows you to connect to a Velux KLF 200 interface, to control [io-homecontrol](http://www.io-homecontrol.com) devices like windows and blinds. The module allows you to start scenes configured within KLF 200. + +A `velux` section must be present in the `configuration.yaml` file and contain the following options as required: + +```yaml +# Example configuration.yaml entry +velux: + host: "192.168.1.23" + password: "velux123" +``` + +Configuration variables: + +- **host** (*Required*): The IP address or hostname of the KLF 200 to use. +- **password** (*Required*): The password of the KLF 200 interface. diff --git a/source/_components/vera.markdown b/source/_components/vera.markdown index 036e8da565f..670d0292c84 100644 --- a/source/_components/vera.markdown +++ b/source/_components/vera.markdown @@ -33,9 +33,9 @@ Configuration variables: ### {% linkable_title Configure devices %} -By default your switches will be added to Home Assistant as switches, however if some of them are light switches, you can tell Home Assistant this using the optional `lights` parameter as shown below. +By default your switches will be added to Home Assistant as switches, however, if some of them are light switches, you can tell Home Assistant this using the optional `lights` parameter as shown below. -Vera imports detailed Z-Wave devices into Home Assistant. This can include system devices and other devices that you don't use, you can tell Home Assistant not to load these devices using the `exclude:` parameter as shown below. +Vera imports detailed Z-Wave devices into Home Assistant. This can include system devices and other devices that you don't use; you can tell Home Assistant not to load these devices using the `exclude:` parameter as shown below. You can find the Vera device id either via the advanced properties of the device in the Vera UI or by checking the `Vera Device Id` attribute on each device imported into Home Assistant (under the developer tools). @@ -50,4 +50,4 @@ vera: ### {% linkable_title Using Z-Wave devices in automation %} -If you want to use a Z-Wave device from the Vera 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 'Vera Device Id' in their attributes, you'll find the entity id on the left. +If you want to use a Z-Wave device from the Vera 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 'Vera Device Id' in their attributes, and you'll find the entity id on the left. diff --git a/source/_components/verisure.markdown b/source/_components/verisure.markdown index 3dccb534fe7..1db2480cf9e 100644 --- a/source/_components/verisure.markdown +++ b/source/_components/verisure.markdown @@ -22,6 +22,7 @@ We support: * Reading from thermometers and hygrometers integrated in various [devices](/components/sensor.verisure/) * Mouse Detector * [Locks](/components/lock.verisure/) + * [Door & Window](/components/binary_sensor.verisure/) To integrate Verisure with Home Assistant, add the following section to your `configuration.yaml` file: @@ -42,5 +43,6 @@ Configuration variables: - **locks** (*Optional*): Set to 1 to show locks, 0 to disable. Default 1. - **thermometers** (*Optional*): Set to 1 to show thermometers, 0 to disable. Default 1. - **mouse** (*Optional*): Set to 1 to show mouse detectors, 0 to disable. Default 1. +- **door_window** (*Optional*): Set to 1 to show door and window sensors, 0 to disable. Default 1. - **code_digits** (*Optional*): Number of digits in PIN code. Default 4. diff --git a/source/_components/volvooncall.markdown b/source/_components/volvooncall.markdown index 7a73922f01f..24a6200f5f9 100644 --- a/source/_components/volvooncall.markdown +++ b/source/_components/volvooncall.markdown @@ -14,7 +14,7 @@ ha_iot_class: "Cloud Polling" --- -The `volvooncall` platform offers integrates 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. +The `volvooncall` platform 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. To use Volvo On Call in your installation, add the following to your `configuration.yaml` file: @@ -25,7 +25,7 @@ volvooncall: password: password ``` -Users registered with Volvo in North America or China will need to specify a service url: +Users registered with Volvo in North America or China will need to specify a service URL: ```yaml # North America diff --git a/source/_components/vultr.markdown b/source/_components/vultr.markdown new file mode 100644 index 00000000000..187ddaab3f3 --- /dev/null +++ b/source/_components/vultr.markdown @@ -0,0 +1,40 @@ +--- +layout: page +title: "Vultr" +description: "Instructions on how to integrate Vultr within Home Assistant." +date: 2017-10-17 21:00 +sidebar: true +comments: false +sharing: true +footer: true +featured: false +ha_category: Hub +ha_release: "0.58" +logo: vultr.png +ha_iot_class: "Cloud Polling" +--- + + +The `vultr` component allows you to access information about and interact with your [Vultr](https://www.vultr.com) subscriptions (Virtual Private Servers) from Home Assistant. + +Obtain your API key from your [Vultr Account](https://my.vultr.com/settings/#settingsapi). + +

+Ensure you allow the public IP of Home Assistant under the Access Control heading. +

+ +To integrate your Vultr subscriptions with Home Assistant, add the following section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +vultr: + api_key: ABCDEFG12345 +``` + +{% configuration %} +api_key: + description: Your Vultr API key. + required: true + type: string +{% endconfiguration %} + diff --git a/source/_components/wake_on_lan.markdown b/source/_components/wake_on_lan.markdown new file mode 100644 index 00000000000..a6bd3291ace --- /dev/null +++ b/source/_components/wake_on_lan.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "Wake on LAN" +description: "Instructions how to setup the Wake on LAN component in Home Assistant." +date: 2017-07-8 15:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ethernet.png +ha_category: Utility +ha_release: "0.49" +ha_iot_class: "Local Push" +--- + +The `wake_on_lan` component enables the ability to send _magic packets_ to [Wake on LAN](https://en.wikipedia.org/wiki/Wake-on-LAN) capable devices, to turn them on. + +To use this component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +wake_on_lan: +``` + +### {% linkable_title Component services %} + +Available services: `send_magic_packet`. + +#### {% linkable_title Service `wake_on_lan/send_magic_packet` %} + +Send a _magic packet_ to wake up a device with 'Wake-On-LAN' capabilities. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `mac` | no | MAC address of the device to wake up. | +| `broadcast_address` | yes | Optional broadcast IP where to send the magic packet. | diff --git a/source/_components/weather.bom.markdown b/source/_components/weather.bom.markdown index 6f2ad02a0cd..03bc747f403 100644 --- a/source/_components/weather.bom.markdown +++ b/source/_components/weather.bom.markdown @@ -29,5 +29,5 @@ Configuration variables:

This platform is an alternative to the [`bom`](/components/sensor.bom/) sensor. -The weather platform is easier to configure but less customisable. +The weather platform is easier to configure but less customizable.

diff --git a/source/_components/weather.buienradar.markdown b/source/_components/weather.buienradar.markdown index 8ba147619da..9cfb72d10ca 100644 --- a/source/_components/weather.buienradar.markdown +++ b/source/_components/weather.buienradar.markdown @@ -7,16 +7,16 @@ sidebar: true comments: false sharing: true footer: true -logo: +logo: buienradar.png ha_category: Weather -ha_release: 0.44 +ha_release: 0.47 +ha_iot_class: "Cloud Polling" --- -The `buienradar` platform uses [buienradar.nl](http://buienradar.nl/) as an source for current meteorological data for your location. The -weather forecast is delivered by Buienradar, who provides a webservice that provides detailed weather information for users in The Netherlands. -The relevant weatherstation used will be automatically selected based on the location specified in the Home Assistant configuration (or in the buienradar weather/sensor component). +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). -To add the buienradar weather to your installation, add the following to your `configuration.yaml` file: +To add the Buienradar weather to your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -25,18 +25,21 @@ weather: ``` Configuration variables: -- **platform** (*Required*): buienradar -- **latitude** (*Optional*): latitude to use for selection of data source location. Longitude & latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar. -- **longitude** (*Optional*): longitude to use for selection of data source location. Longitude & latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar. -- **forecast** (*Optional*): 'True' to add a temperature forecast, 'False' to suppress it + +- **name** (*Optional*): You can specify a name of the component, but do not have to. If you specify a name, the weather component will get an entity name of 'weather.[name]'; if no name is specified, it will try to set its name to 'weather.BR_[stationname]'. However at the moment in time, the entity is created, no data has been retrieved yet, so the entity will get named 'weather.BR_unknown_station'. Later the station name will be known and get updated, but the entity name remains. +- **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. +- **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. +- **forecast** (*Optional*): 'True' to add a temperature forecast, 'False' to suppress it. A full configuration example: ```yaml +# Example configuration.yaml entry weather: - platform: buienradar - name: buienradar + name: 'volkel' + # Force 'Meetstation Volkel' to be used: latitude: 51.65 longitude: 5.70 forecast: True @@ -44,5 +47,8 @@ weather:

This platform is an alternative to the [`buienradar`](/components/sensor.buienradar/) sensor. -The weather platform is easier to configure but less customisable. +The weather platform is easier to configure but less customizable.

+ +[Usage statement:](https://www.buienradar.nl/overbuienradar/gratis-weerdata) +> Buienradar makes free weather data available for use by individuals and businesses (website/intranet). The use of the weather data is allowed for **non-commercial purposes**. Please refer to the full usage statement linked above to confirm your use or to request permission. diff --git a/source/_components/weather.markdown b/source/_components/weather.markdown index cb6b290d278..f0824091392 100644 --- a/source/_components/weather.markdown +++ b/source/_components/weather.markdown @@ -9,8 +9,8 @@ sharing: true footer: true --- -The `weather` platforms are gathering meteorological information from web services and displays the conditions and other details about the weather at the given location. +The `weather` platforms are gathering meteorological information from web services and display the conditions and other details about the weather at the given location. -Home Assistant currently supports free web services and such which requires a registration. Please check the sidebar for a full list of supported `weather` platforms. +Home Assistant currently supports free web services and such which require a registration. Please check the sidebar for a full list of supported `weather` platforms. diff --git a/source/_components/weather.metoffice.markdown b/source/_components/weather.metoffice.markdown index 175c39e3596..d05b55431e6 100644 --- a/source/_components/weather.metoffice.markdown +++ b/source/_components/weather.metoffice.markdown @@ -15,7 +15,7 @@ ha_iot_class: "Cloud Polling" The `metoffice` weather platform uses the Met Office's [DataPoint API][datapoint] for weather data. -To add the Met Office weather platform to your installation you'll need to register for a free api key at the link above and then add the following to your `configuration.yaml` file: +To add the Met Office weather platform to your installation, you'll need to register for a free API key at the link above and then add the following to your `configuration.yaml` file: ```yaml weather: @@ -29,7 +29,7 @@ Configuration variables:

This platform is an alternative to the [`metoffice`](/components/sensor.metoffice/) sensor. -The weather platform is easier to configure but less customisable. +The weather platform is easier to configure but less customizable.

[datapoint]: http://www.metoffice.gov.uk/datapoint diff --git a/source/_components/weather.openweathermap.markdown b/source/_components/weather.openweathermap.markdown index 400f42d918b..9c0a24f4478 100644 --- a/source/_components/weather.openweathermap.markdown +++ b/source/_components/weather.openweathermap.markdown @@ -13,7 +13,7 @@ ha_release: 0.32 ha_iot_class: "Cloud Polling" --- -The `openweathermap` weather platform uses [OpenWeatherMap](http://openweathermap.org/) as an source for current meteorological data for your location. +The `openweathermap` weather platform uses [OpenWeatherMap](http://openweathermap.org/) as a source for current meteorological data for your location. You need an API key which is free but requires a [registration](http://home.openweathermap.org/users/sign_up). @@ -30,7 +30,7 @@ Configuration variables: - **api_key** (*Required*): Your API key for http://openweathermap.org/. - **name** (*Optional*): Name to use in the frontend. -- **latitude** (*Optional*): Latitude of the location to display the weather. Defaults to the latitude in your your `configuration.yaml` file. +- **latitude** (*Optional*): Latitude of the location to display the weather. Defaults to the latitude in your `configuration.yaml` file. - **longitude** (*Optional*): Longitude of the location to display the weather. Defaults to the longitude in your `configuration.yaml` file.

diff --git a/source/_components/weather.yweather.markdown b/source/_components/weather.yweather.markdown index 3d38b2fbe89..e0875036794 100644 --- a/source/_components/weather.yweather.markdown +++ b/source/_components/weather.yweather.markdown @@ -13,13 +13,13 @@ ha_release: 0.47 --- -The `yweather` platform uses [Yahoo Weather](https://www.yahoo.com/news/weather/) as an source for current meteorological data. The `forecast` will show you the condition for 5 days, 0 is the current day. +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 `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 generate it from Home Assistant's latitude and longitude. +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: @@ -32,7 +32,6 @@ weather: Configuration variables: - **woeid** (*Optional*): See above. -- **forecast** (*Optional*): Day of forecast. The default is the current day to display conditions. - **name** (*Optional*): 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. Defaults to `Yweather`. diff --git a/source/_components/weather.zamg.markdown b/source/_components/weather.zamg.markdown index 7603cdd8a2c..89cc25bca87 100644 --- a/source/_components/weather.zamg.markdown +++ b/source/_components/weather.zamg.markdown @@ -15,7 +15,7 @@ ha_iot_class: "Cloud Polling" The `zamg` platform uses meteorological details published by the Austrian weather service [Zentralanstalt für Meteorologie und Geodynamik (ZAMG)](https://www.zamg.ac.at). -Only observations for capital cities are publically available. You can check the list of stations in [CSV format](http://www.zamg.ac.at/ogd). +Only observations for capital cities are publicly available. You can check the list of stations in [CSV format](http://www.zamg.ac.at/ogd). To add ZAMG to your installation, add the following to your `configuration.yaml` file: @@ -29,8 +29,9 @@ Configuration variables: - **station_id** (*Optional*): The ID number for a supported ZAMG station. - **name** (*Optional*): A name for the weather platform. +- **latitude** (*Optional*): Latitude coordinate to monitor weather of (required if **longitude** is specified). Defaults to coordinates defined in your `configuration.yaml` file. +- **longitude** (*Optional*): Longitude coordinate to monitor weather of (required if **latitude** is specified). Defaults to coordinates defined in your `configuration.yaml` file.

-This platform is an alternative to the [`zamg`](/components/sensor.zamg/) sensor. -The weather platform is easier to configure but less customisable. +This platform is an alternative to the [`zamg`](/components/sensor.zamg/) sensor. The weather platform is easier to configure but less customizable.

diff --git a/source/_components/wemo.markdown b/source/_components/wemo.markdown index bef84e45338..96821a0032a 100644 --- a/source/_components/wemo.markdown +++ b/source/_components/wemo.markdown @@ -15,14 +15,14 @@ ha_release: pre 0.7 The `wemo` component is the main component to integrate various [Belkin WeMo](http://www.belkin.com/us/Products/home-automation/c/wemo-home-automation/) devices with Home Assistant. -Supported devices will be automatically discovered if the discovery component is enabled. If you are not using the discovery component, loading the `wemo` component will scan for WeMo devices on the local network. +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 ```yaml # Example configuration.yaml entry wemo: ``` -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, and/or devices in a remote location reachable over a VPN, you will need to manually configure them. This is also useful if you wish to disable discovery for some wemos, 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. This is also useful if you wish to disable discovery for some WeMo's, even if they are local. Example static configuration: ```yaml wemo: @@ -33,6 +33,6 @@ wemo: Any WeMo devices that are not statically configured but reachable via discovery will still be added automatically. -Note that if you use this, you may want to configure 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 sends 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 request on port 8989 since this is the address to which the WeMo devices send their update. diff --git a/source/_components/wink.markdown b/source/_components/wink.markdown index 561af632753..adfb85cf36b 100644 --- a/source/_components/wink.markdown +++ b/source/_components/wink.markdown @@ -20,43 +20,34 @@ ha_release: pre 0.7 Wink offers one, quick and simple way to connect people with the products they rely on every day in their home. -Home Assistant integrates with the Wink API and allows you to get the status and control connected switches, lights, locks, fan, climate devices, covers, and sensors. +Home Assistant integrates with the Wink API and automatically sets up any switches, lights, locks, fans, climate devices (thermostats, air conditioners, and water heaters), covers, sensors, alarms, and sirens. -Check the related componets pages for actual devices that are support. +Check the related components pages for actual devices that are supported. -Home Assistant offers multiple ways to authenticate to the Wink API. Each authentication method is described below. +### {% linkable_title Authenticate using [developer.wink.com](https://developer.wink.com) %} -### Authentication with an access token. +You need to setup 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. -To use this form of authentication obtain a token from the form below and insert it into your `configuration.yaml` +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. - +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. +

```yaml wink: - access_token: YOUR_ACCESS_TOKEN ``` -### Authentication with your Wink email and password. +### {% 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) existance. -This method uses the same form from above to obtain an access token, but does so without the user needing to manually do so. -This method pulls a new token on every startup of Home Assistant. - -```yaml -wink: - email: YOUR_WINK_EMAIL_ADDRESS - password: YOUR_WINK_PASSWORD -``` - -### Full oath authentication. (This is the best option!) - - -You can also request API access via Wink's [contact us](http://www.wink.com/help/contact/) page. - -You will be provided with a client ID and a client secret via email. These can then be used in your configuration in place of the access_token this will prevent you from having to manually refresh your access token. ```yaml wink: @@ -68,25 +59,230 @@ wink: Configuration variables: -- **access_token** (*Required if the below aren't present.*): The retrieved access token. -- **email** (*Required if access token isn't provided*): Your Wink login email. -- **password** (*Required if access token isn't provided*): Your Wink login password. -- **client_id** (*Required if access token isn't provided*): Your provided Wink client_id. -- **client_secret** (*Required if access token isn't provided*): Your provided Wink client_secret. -- **user_agent** (*Optional*): The user-agent passed in the API calls to Wink. +- **email** (*Required for legacy OAuth*): Your Wink login email. +- **password** (*Required for legacy OAuth*): Your Wink login password. +- **client_id** (*Required for legacy OAuth*): Your provided Wink client_id. +- **client_secret** (*Required for legacy OAuth*): Your provided Wink client_secret. +- **local_control** (*Optional*): If set to `True` state changes for lights, locks, and switches will be issued to the local hub. -This will connect to the Wink API and automatically set up any switches, lights, locks, fans, climate devices, covers, and sensors. +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 requests are first sent to the controlling hub. If a request fails, that request will attempt to go online. + +

+It is possible for the hub to get into a bad state where it stops accepting local control request. If this happens, you will notice requests taking significantly longer as they are redirected online. This doesn't happen often, but when it does, it appears to be resolved by rebooting the hub. + +The following error will be logged if the hub is rejecting local requests. + +``` +Error sending local control request. Sending request online +``` + +

### {% 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 were an update isn't pushed device states can be out of sync. +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. +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 `add_new_devices` %} +### {% 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` %} + +You can use the service wink/delete_wink_device to remove/unpair a device from Wink. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String that points at the `entity_id` of device to delete. + +### {% 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 + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `hub_name` | no | The name of the hub to pair a new device to. +| `pairing_mode` | no | One of the following [zigbee, zwave, zwave_exclusion, zwave_network_rediscovery, lutron, bluetooth, kidde] +| `kidde_radio_code` | conditional | A string of 8 1s and 0s one for each dip switch on the kidde device left --> right = 1 --> 8 (Required if pairing_mode = kidde) +

-The Wink hub 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). +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` %} + +You can use the service wink/rename_wink_device to change the name of a device. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String that points at the `entity_id` of device to rename. +| `name` | no | The name to change it to. + +

+Home Assistant entity_ids for Wink devices are based on the Wink device's name. Calling this service will not change the entity_id of the deivce until Home Assistant is restarted. +

+ +

+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 + +- GoControl siren and strobe +- Dome siren/chime/strobe + + +### {% 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. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `auto_shutoff` | no | Int. One of [None, -1, 30, 60, 120] (None and -1 are forever. Use None for gocontrol, and -1 for Dome) +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren. + +Example: + +```yaml +script: + set_all_sirens_to_one_minute_auto_shutoff: + sequence: + - service: wink.set_siren_auto_shutoff + data: + auto_shutoff: 60 +``` + +

+The following services only work with the Dome siren/chime. +

+ +### {% linkable_title Service `set_chime_volume` %} + +You can use the service wink/set_chime_volume to set the volume for the chime on your Dome siren/chime. + +| 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. + +Example: + +```yaml +script: + set_chime_volume_to_low_for_all_chimes + sequence: + - service: wink.set_chime_volume + data: + volume: "low" +``` + +### {% linkable_title Service `set_siren_volume` %} + +You can use the service wink/set_chime_volume to set the volume for the chime on your Dome siren/chime. + +| 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. + +Example: + +```yaml +script: + set_siren_volume_to_low_for_all_sirens + sequence: + - service: wink.set_siren_volume + data: + volume: "low" +``` + +### {% linkable_title Service `enable_chime` %} + +You can use the service wink/enable_chime to set the tone and enable the chime on your Dome siren/chime. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep", "inactive"] +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. + +Example: + +```yaml +script: + execute_doorbell + sequence: + - service: wink.enable_chime + data: + tone: "doorbell" +``` + +### {% linkable_title Service `set_siren_tone` %} + +You can use the service wink/set_siren_tone to set the tone on your Dome siren. This tone will be used the next time the siren is executed. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `tone` | no | String. One of ["doorbell", "fur_elise", "doorbell_extended", "alert", "william_tell", "rondo_alla_turca", "police_siren", "evacuation", "beep_beep", "beep"] +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. + +Example: + +```yaml +script: + set_siren_to_alert: + sequence: + - service: wink.set_siren_tone + data: + tone: "alert" +``` + +### {% linkable_title Service `set_siren_strobe_enabled` %} + +You can use the service wink/set_siren_strobe_enabled to enable or disable the strobe when the siren is executed. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `enabled` | no | Boolean. True or False. +| `entity_id` | yes | String or list of strings that point at `entity_id`s of siren/chime. + +Example: + +```yaml +script: + disable_siren_strobe: + sequence: + - service: wink.set_siren_strobe_enabled + data: + enabled: False +``` + +### {% linkable_title Service `set_chime_strobe_enabled` %} + +You can use the service wink/set_chime_strobe_enabled to enable or disable the strobe when the chime is executed. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `enabled` | no | Boolean. True or False. +| `entity_id` | yes | String or list of strings that point at `entity_id`s of chime/chime. + +Example: + +```yaml +script: + disable_chime_strobe: + sequence: + - service: wink.set_chime_strobe_enabled + data: + enabled: False +``` diff --git a/source/_components/xiaomi_aqara.markdown b/source/_components/xiaomi_aqara.markdown new file mode 100644 index 00000000000..61d3ed9231d --- /dev/null +++ b/source/_components/xiaomi_aqara.markdown @@ -0,0 +1,247 @@ +--- +layout: page +title: "Xiaomi Gateway (Aqara)" +description: "Instructions for how to integrate the Xiaomi Gateway (Aqara) within Home Assistant." +date: 2017-07-21 16:34 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: Hub +ha_release: "0.50" +ha_iot_class: "Local Push" +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 %} + +- Temperature and Humidity Sensor (1st and 2nd generation) +- Motion Sensor (1st and 2nd generation) +- Door and Window Sensor (1st and 2nd generation) +- Button (1st and 2nd generation) +- 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 LN (Double) +- Aqara Wireless Switch (Single) +- Aqara Wireless Switch (Double) +- Cube +- Gas Leak Detector (reports alarm and density) +- Smoke Detector (reports alarm and density) +- Gateway (Light, Illumination Sensor, Ringtone play) +- Intelligent Curtain +- Water Leak Sensor +- Battery + +#### {% linkable_title Unsupported Devices %} + +- Gateway Radio +- Gateway Button +- Aqara Air Conditioning Companion +- Aqara Intelligent Air Conditioner Controller Hub +- Decoupled mode of the Aqara Wall Switches (Single & Double) +- Additional alarm events of the Gas and Smoke Detector: Analog alarm, battery fault alarm (smoke detector only), sensitivity fault alarm, I2C communication failure + +## {% linkable_title Setup %} + +Follow the setup process using your phone and Mi-Home app. From here you will be able to retrieve the key from within the app following [this tutorial](https://community.home-assistant.io/t/beta-xiaomi-gateway-integration/8213/1832). + +To enable {{ page.title }} in your installation, add the following to your `configuration.yaml` file: + +### {% linkable_title One Gateway %} + +```yaml +# You can leave mac empty if you only have one gateway. +xiaomi_aqara: + discovery_retry: 5 + gateways: + - key: xxxxxxxxxxxxxxxx +``` + +### {% linkable_title Multiple Gateways %} + +```yaml +# 12 characters mac can be obtained from the gateway. +xiaomi_aqara: + gateways: + - mac: xxxxxxxxxxxx + key: xxxxxxxxxxxxxxxx + - mac: xxxxxxxxxxxx + key: xxxxxxxxxxxxxxxx +``` + +### {% linkable_title Search for gateways on specific interface %} + +```yaml +# 12 characters MAC can be obtained from the gateway. +xiaomi_aqara: + interface: '192.168.0.1' + gateways: + - mac: xxxxxxxxxxxx + key: xxxxxxxxxxxxxxxx +``` + +{% configuration %} + mac: + description: The MAC address of your gateway. *Optional if only using one gateway.* + required: false + type: string + key: + description: The key of your gateway. *Optional if only using sensors and/or binary sensors.* + required: false + type: string + discovery_retry: + description: Number of times that Home Assistant should try to reconnect to the gateway. + required: false + type: int + default: 3 + interface: + description: Which network interface to use. + required: false + type: string + default: any + host: + description: The host / ip address of the gateway. If this parameter is used the multicast discovery of the gateway is skipped. + required: false + type: string +{% endconfiguration %} + +### {% linkable_title Services %} + +The gateway provides the following services: + +#### {% linkable_title Service xiaomi_aqara.play_ringtone %} + +Play a specific ringtone. The version of the gateway firmware must be `1.4.1_145` at least. Take a look at the examples below. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway | +| `ringtone_id` | no | One of the allowed ringtone ids | +| `ringtone_vol` | yes | The volume in percent | + +Allowed values of the `ringtone_id` are: + +- Alarms + - 0 - Police car 1 + - 1 - Police car 2 + - 2 - Accident + - 3 - Countdown + - 4 - Ghost + - 5 - Sniper rifle + - 6 - Battle + - 7 - Air raid + - 8 - Bark +- Doorbells + - 10 - Doorbell + - 11 - Knock at a door + - 12 - Amuse + - 13 - Alarm clock +- Alarm clock + - 20 - MiMix + - 21 - Enthusiastic + - 22 - GuitarClassic + - 23 - IceWorldPiano + - 24 - LeisureTime + - 25 - ChildHood + - 26 - MorningStreamLiet + - 27 - MusicBox + - 28 - Orange + - 29 - Thinker +- Custom ringtones (uploaded by the Mi Home app) starting from 10001 + +#### {% linkable_title Service xiaomi_aqara.stop_ringtone %} + +Stops a playing ringtone immediately. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway | + +#### {% linkable_title Service xiaomi_aqara.add_device %} + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway | + +#### {% linkable_title Service xiaomi_aqara.add_device %} + +Enables the join permission of the Xiaomi Aqara Gateway for 30 seconds. A new device can be added afterwards by pressing the pairing button once. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway | + +#### {% linkable_title Service xiaomi_aqara.remove_device %} + +Removes a specific device. The removal is required if a device shall be paired with another gateway. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway | +| `device_id` | no | Hardware address of the device to remove | + +## {% linkable_title Examples %} + +### {% linkable_title Long Press on Smart Button %} + +This example plays the sound of a dog barking when the button is held down, and stops the sound when the button is pressed once. + +*Note: The sound will stop playing automatically when it has ended.* + +```yaml +- alias: Let a dog bark on long press + trigger: + platform: event + event_type: click + event_data: + entity_id: binary_sensor.switch_158d000xxxxxc2 + click_type: long_click_press + action: + service: xiaomi_aqara.play_ringtone + data: + gw_mac: xxxxxxxxxxxx + ringtone_id: 8 + ringtone_vol: 8 + +- alias: Stop barking immediately on single click + trigger: + platform: event + event_type: click + event_data: + entity_id: binary_sensor.switch_158d000xxxxxc2 + click_type: single + action: + service: xiaomi_aqara.stop_ringtone + data: + gw_mac: xxxxxxxxxxxx +``` + +## {% linkable_title Troubleshooting %} + +### {% linkable_title Initial setup problem %} + +If you run into trouble initializing the gateway with your app, try another smartphone. I had trouble with the OnePlus 3, but it worked with a Nexus 5. + +### {% linkable_title Connection problem %} + +```bash +2017-08-20 16:51:19 ERROR (SyncWorker_0) [homeassistant.components.xiaomi] No gateway discovered +2017-08-20 16:51:20 ERROR (MainThread) [homeassistant.setup] Setup failed for xiaomi: Component failed to initialize. +``` + +That means that Home Assistant is not getting any response from your Xiaomi gateway. Might be a local network problem or your firewall. +- Make sure you have [enabled LAN access](https://community.home-assistant.io/t/beta-xiaomi-gateway-integration/8213/1832). +- Turn off the firewall on the system where Home Assistant is running. +- Ensure your router supports multicast as this is a requirement of the Xiaomi GW +- Try to leave the MAC address `mac:` blank. +- Try to set `discovery_retry: 10`. +- Try to disable and then enable LAN access. +- Hard reset the gateway: Press the button of the gateway 30 seconds and start again from scratch. +- If you are using Home Assistant in [Docker](/docs/installation/docker/), make sure to use `--net=host`. +- If you receive an `{"error":"Invalid key"}` in your log while trying to control the gateway light, you should generate the key again using an Android Phone or alternativly an emulator such as [bluestacks](https://www.bluestacks.com). In some instances there is an issue with keys being generated using the iOS application. diff --git a/source/_components/zeroconf.markdown b/source/_components/zeroconf.markdown index d4b89f527ac..3d054ea4d59 100644 --- a/source/_components/zeroconf.markdown +++ b/source/_components/zeroconf.markdown @@ -12,7 +12,7 @@ ha_category: "Other" ha_release: 0.18 --- -The `zeroconf` component exposes your Home Assistant to the local network using [Zeroconf](https://en.wikipedia.org/wiki/Zero-configuration_networking). Zeroconf is also sometimes known as Bonjour, Rendezvous and Avahi. +The `zeroconf` component exposes your Home Assistant to the local network using [Zeroconf](https://en.wikipedia.org/wiki/Zero-configuration_networking). Zeroconf is also sometimes known as Bonjour, Rendezvous, and Avahi. To integrate this into Home Assistant, add the following section to your `configuration.yaml` file: @@ -21,7 +21,7 @@ To integrate this into Home Assistant, add the following section to your `config zeroconf: ``` -The registration will include metadata about the Home Assistant instance, including a base URL that can be used to access Home Assistant, the currently running Home Assistant version, and whether an API password is needed to access the instance. The examples below show two ways to retrieve the details for testing. +The registration will include meta-data about the Home Assistant instance, including a base URL that can be used to access Home Assistant, the currently running Home Assistant version, and whether an API password is needed to access the instance. The examples below show two ways to retrieve the details for testing. ```bash $ avahi-browse -alr diff --git a/source/_components/zha.markdown b/source/_components/zha.markdown index 2f7e0f8ad73..2e4a749b970 100644 --- a/source/_components/zha.markdown +++ b/source/_components/zha.markdown @@ -42,4 +42,4 @@ Configuration variables: - **usb_path** (*Required*): Path to the serial device for the radio. - **database_path** (*Required*): Path to the database which will keep persistent network data. -To add new devices to the network, call the `permit` service on the `zha` domain, and then follow the device instructions. +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/) diff --git a/source/_components/zigbee.markdown b/source/_components/zigbee.markdown index 1b3c76b2bd4..a7e8b319744 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 utilise 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 over 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: diff --git a/source/_components/zone.markdown b/source/_components/zone.markdown index 830ae7c7c15..00d4f7e664e 100644 --- a/source/_components/zone.markdown +++ b/source/_components/zone.markdown @@ -13,45 +13,43 @@ ha_category: Organization Zones allow you to specify certain regions on earth (for now). When a device tracker sees a device to be within a zone, the state will take the name from the zone. Zones can also be used as a [trigger](/getting-started/automation-trigger/#zone-trigger) or [condition](/getting-started/automation-condition/#zone-condition) inside automation setups. -Zones support the usual method to specify multiple zones, use keys `zone:`, `zone 2:` etc. +The Zone component uses YAML sequences to configure multiple zones: ```yaml # Example configuration.yaml entry zone: - name: School - latitude: 32.8773367 - longitude: -117.2494053 - radius: 250 - icon: mdi:school + - name: School + latitude: 32.8773367 + longitude: -117.2494053 + radius: 250 + icon: mdi:school -zone 2: - name: Work - latitude: 32.8753367 - longitude: -117.2474053 + - name: Work + latitude: 32.8753367 + longitude: -117.2474053 -# This will override the default home zone -zone 3: - name: Home - latitude: 32.8793367 - longitude: -117.2474053 - radius: 100 - icon: mdi:account-multiple + # This will override the default home zone + - name: Home + latitude: 32.8793367 + longitude: -117.2474053 + radius: 100 + icon: mdi:account-multiple ``` Configuration variables: -- **name** (*Optional*): Friendly name of entry. +- **name** (*Optional*): Friendly name of the zone. - **latitude** (*Required*): Latitude of the center point of the zone. - **longitude** (*Required*): Longitude of the center point of the zone. - **radius** (*Optional*): Optional radius in meters. Defaults to 100 meters. - **icon** (*Optional*): Optional icon to show instead of name. - **passive** (*Optional*): Optional boolean to only use the zone for automation and hide it from the UI and not use the zone for device tracker name. Defaults to false. -To find your latitude / longtitude of a certain place you can use for example [Google Maps](https://www.google.nl/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) +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 %} -If no configuration is given, the `zone` component will create a zone for home. This zone will use location given in the `configuration.yaml` file and have a radius of 100 meters. To override this, create a zone configuration and name it **'Home'**. +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'**.

Devices that are in the zone **'Home'** will not appear on the map in the Home Assistant UI. @@ -63,4 +61,4 @@ It is preferred to pick an icon to use for your zone. Pick any icon that you can #### 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. +`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/_cookbook/automation_for_rainy_days.markdown b/source/_cookbook/automation_for_rainy_days.markdown index 0a1d8a7c6f5..7ce7c46b16a 100644 --- a/source/_cookbook/automation_for_rainy_days.markdown +++ b/source/_cookbook/automation_for_rainy_days.markdown @@ -22,10 +22,10 @@ automation: entity_id: sensor.precip_intensity to: 'rain' condition: - - platform: state + - condition: state entity_id: group.all_devices state: 'home' - - platform: time + - condition: time after: '14:00' before: '23:00' action: diff --git a/source/_cookbook/automation_kodi_dynamic_input_select.markdown b/source/_cookbook/automation_kodi_dynamic_input_select.markdown index fff67e60d8e..040d4f1284e 100644 --- a/source/_cookbook/automation_kodi_dynamic_input_select.markdown +++ b/source/_cookbook/automation_kodi_dynamic_input_select.markdown @@ -10,7 +10,7 @@ footer: true ha_category: Automation Examples --- -This requires a [Kodi](/components/mediaplayer.kodi/) media player, and consists of commands that perform queries in the Kodi library, and a selection box (`input_select`) that shows the available options. By clicking the commands, the selection box is updated, and when selecting an option, Kodi plays the media. +This requires a [Kodi](/components/media_player.kodi/) media player, and consists of commands that perform queries in the Kodi library, and a selection box (`input_select`) that shows the available options. By clicking the commands, the selection box is updated, and when selecting an option, Kodi plays the media. Option filling is done in an [AppDaemon](https://home-assistant.io/docs/ecosystem/appdaemon/tutorial/) app, which listens for events that are triggered with the results of the Kodi JSONRPC API queries when scripts run. This application also listens to the selection box and calls the play media service with the corresponding parameters. diff --git a/source/_cookbook/automation_sun.markdown b/source/_cookbook/automation_sun.markdown index db9d8dfe8ef..931972beaba 100644 --- a/source/_cookbook/automation_sun.markdown +++ b/source/_cookbook/automation_sun.markdown @@ -29,7 +29,7 @@ automation: #### {% linkable_title Natural wake up light %} -_Note, Philips Hue is currently the only light platform that support transitions._ +_Note, Philips Hue and LIFX are currently the only light platforms that support transitions._ ```yaml automation: diff --git a/source/_cookbook/configuration_yaml_by_ciquattrofpv.markdown b/source/_cookbook/configuration_yaml_by_ciquattrofpv.markdown index 49a8018f6c8..247ddab1336 100644 --- a/source/_cookbook/configuration_yaml_by_ciquattrofpv.markdown +++ b/source/_cookbook/configuration_yaml_by_ciquattrofpv.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Configuration.yaml by Nicolo Steffe" +title: "Configuration.yaml by Ciquattro" description: "" date: 2017-06-13 12:00 sidebar: true diff --git a/source/_cookbook/configuration_yaml_by_lancehaynie.markdown b/source/_cookbook/configuration_yaml_by_lancehaynie.markdown new file mode 100644 index 00000000000..892714d1400 --- /dev/null +++ b/source/_cookbook/configuration_yaml_by_lancehaynie.markdown @@ -0,0 +1,12 @@ +--- +layout: page +title: "Configuration.yaml by Lance Haynie" +description: "" +date: 2017-08-18 18:33 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Example configuration.yaml +ha_external_link: https://github.com/Haynie-Research-and-Development/jarvis +--- diff --git a/source/_cookbook/configuration_yaml_by_ntalekt.markdown b/source/_cookbook/configuration_yaml_by_ntalekt.markdown new file mode 100644 index 00000000000..657e33b001e --- /dev/null +++ b/source/_cookbook/configuration_yaml_by_ntalekt.markdown @@ -0,0 +1,12 @@ +--- +layout: page +title: "Configuration.yaml by ntalekt" +description: "" +date: 2017-10-26 13:08 -0700 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Example configuration.yaml +ha_external_link: https://github.com/ntalekt/homeassistant +--- diff --git a/source/_cookbook/configuration_yaml_by_brusc.markdown b/source/_cookbook/configuration_yaml_by_oakbrad.markdown similarity index 58% rename from source/_cookbook/configuration_yaml_by_brusc.markdown rename to source/_cookbook/configuration_yaml_by_oakbrad.markdown index 762bf536e65..c4991394418 100644 --- a/source/_cookbook/configuration_yaml_by_brusc.markdown +++ b/source/_cookbook/configuration_yaml_by_oakbrad.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Configuration.yaml by brusc" +title: "Configuration.yaml by oakbrad" description: "" date: 2016-03-14 11:45 sidebar: true @@ -8,6 +8,6 @@ comments: false sharing: true footer: true ha_category: Example configuration.yaml -ha_external_link: https://github.com/brusc/Home-Assistant-Configuration +ha_external_link: https://github.com/oakbrad/brad-homeassistant-config --- diff --git a/source/_cookbook/configuration_yaml_by_shortbloke.markdown b/source/_cookbook/configuration_yaml_by_shortbloke.markdown new file mode 100644 index 00000000000..d7aa5475550 --- /dev/null +++ b/source/_cookbook/configuration_yaml_by_shortbloke.markdown @@ -0,0 +1,12 @@ +--- +layout: page +title: "Configuration.yaml by Shortbloke" +description: "" +date: 2017-08-10 01:45 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Example configuration.yaml +ha_external_link: https://github.com/shortbloke/home_assistant_config +--- diff --git a/source/_cookbook/configuration_yaml_by_vasiley.markdown b/source/_cookbook/configuration_yaml_by_vasiley.markdown new file mode 100644 index 00000000000..5334be04d30 --- /dev/null +++ b/source/_cookbook/configuration_yaml_by_vasiley.markdown @@ -0,0 +1,12 @@ +--- +layout: page +title: "Configuration.yaml by Vasiley" +description: "" +date: 2017-09-04 13:50 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Example configuration.yaml +ha_external_link: https://github.com/Vasiley/Home-Assistant-Main +--- diff --git a/source/_cookbook/custom_panel_using_react.markdown b/source/_cookbook/custom_panel_using_react.markdown index 3ecc604d325..b8f5f8d59b8 100644 --- a/source/_cookbook/custom_panel_using_react.markdown +++ b/source/_cookbook/custom_panel_using_react.markdown @@ -18,7 +18,7 @@ This is a [React](https://facebook.github.io/react/) implementation of [TodoMVC] - It uses the user configuration for the component in the `configuration.yaml` file for rendering. - It allows toggling the sidebar. -All you need is available as a [custom panel](https://github.com/home-assistant/home-assistant/tree/master/config/panels/react.html). Download the file and save it in `/panels/` (you might have to create the directory if it doesn't exist). +All you need is available as a [custom panel](https://github.com/home-assistant/example-custom-config/blob/master/panels/react.html). Download the file and save it in `/panels/` (you might have to create the directory if it doesn't exist). Create a entry for the panel in your `configuration.yaml` file to enable it. diff --git a/source/_cookbook/custom_ui_by_andrey-git.markdown b/source/_cookbook/custom_ui_by_andrey-git.markdown index cea9eeae1a2..5b593d3250c 100644 --- a/source/_cookbook/custom_ui_by_andrey-git.markdown +++ b/source/_cookbook/custom_ui_by_andrey-git.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Custom UI light state-card by andrey-git" +title: "Custom UI state-card by andrey-git" description: "" date: 2017-02-04 10:45 sidebar: true diff --git a/source/_cookbook/dim_and_brighten_lights.markdown b/source/_cookbook/dim_and_brighten_lights.markdown new file mode 100644 index 00000000000..98222e719cf --- /dev/null +++ b/source/_cookbook/dim_and_brighten_lights.markdown @@ -0,0 +1,173 @@ +--- +layout: page +title: "Dim (and brighten) lights via a remote" +description: "The scripts and automations to allow you to use a remote to dim and brighten a light" +date: 2017-09-06 18:30 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Automation Examples +--- + +This requires both a dimmable light, and a Z-Wave remote control that sends one scene when a button is held, and another when released. This ensures that the scripts (which follow) are stopped, avoiding the risks of a script that never ends. + +In the following automation, replace `zwave.YOUR_REMOTE` with the actual entity ID of your controller. For the controller this was written for scene ID 13 was sent when the up button was held, and 15 when released. Similarly, scene 14 when the down button was held, and 16 when released. You'll need to use the scene IDs that are sent by your remote if different. + +```yaml +automation: + + - alias: 'Make the lights go bright' + initial_state: 'on' + trigger: + - platform: event + event_type: zwave.scene_activated + event_data: + scene_id: 13 + entity_id: zwave.YOUR_REMOTE + action: + - service: script.turn_on + data: + entity_id: script.light_bright + + - alias: 'Stop the bright just there' + initial_state: 'on' + trigger: + - platform: event + event_type: zwave.scene_activated + event_data: + scene_id: 15 + entity_id: zwave.YOUR_REMOTE + action: + - service: script.turn_off + data: + entity_id: script.light_bright + - service: script.turn_off + data: + entity_id: script.light_bright_pause + + - alias: 'Make the lights go dim' + initial_state: 'on' + trigger: + - platform: event + event_type: zwave.scene_activated + event_data: + scene_id: 14 + entity_id: zwave.YOUR_REMOTE + action: + - service: script.turn_on + data: + entity_id: script.light_dim + + - alias: 'Stop the dim just there' + initial_state: 'on' + trigger: + - platform: event + event_type: zwave.scene_activated + event_data: + scene_id: 16 + entity_id: zwave.YOUR_REMOTE + action: + - service: script.turn_off + data: + entity_id: script.light_dim + - service: script.turn_off + data: + entity_id: script.light_dim_pause +``` + +There are 2 variables that control the speed of the change for the scripts below. The first is the `step`, small steps create a smooth transition. The second is the delay, larger delays will create a slower transition. + +To allow flexibility, an [Input Number](/components/input_number/) is used for the step (at the time of writing this, it's not possible to template the delay when the delay uses milliseconds). Two additional [Input Numbers](/components/input_number/) are used to set the minimum and maximum brightness, so that it's easy to tune that (or manage it through an automation). + +```yaml +input_number: + light_step: + name: 'Step the lights this much' + initial: 20 + min: 1 + max: 64 + step: 1 + + light_minimum: + name: 'No dimmer than this' + initial: 5 + min: 1 + max: 255 + step: 1 + + light_maximum: + name: 'No brighter than this' + initial: 255 + min: 50 + max: 255 + step: 1 +``` + +Now the scripts. There are 2 pairs of scripts. The first steps the light brighter to the maximum and the second provides the delay. These call each other until both are stopped. The second pair does the same for dimming. + +```yaml +# Replace YOURLIGHT with the actual light entity +script: + light_bright: + sequence: + - service: light.turn_on + data_template: + entity_id: light.YOUR_LIGHT + brightness: >- + {% raw %}{% set current = states.light.YOUR_LIGHT.attributes.brightness|default(0)|int %} + {% set step = states('input_number.light_step')|int %} + {% set next = current + step %} + {% if next > states('input_number.light_maximum')|int %} + {% set next = states('input_number.light_maximum')|int %} + {% endif %} + {{ next }}{% endraw %} + + - service_template: > + {% raw %}{% if states.light.YOUR_LIGHT.attributes.brightness|default(0)|int < states('input_number.light_maximum')|int %} + script.turn_on + {% else %} + script.turn_off + {% endif %}{% endraw %} + data: + entity_id: script.light_bright_pause + + light_bright_pause: + sequence: + - delay: + milliseconds: 1 + - service: script.turn_on + data: + entity_id: script.light_bright + + light_dim: + sequence: + - service: light.turn_on + data_template: + entity_id: light.YOUR_LIGHT + brightness: >- + {% raw %}{% set current = states.light.YOUR_LIGHT.attributes.brightness|default(0)|int %} + {% set step = states('input_number.light_step')|int %} + {% set next = current - step %} + {% if next < states('input_number.light_minimum')|int %} + {% set next = states('input_number.light_minimum')|int %} + {% endif %} + {{ next }}{% endraw %} + + - service_template: > + {% raw %}{% if states.light.YOUR_LIGHT.attributes.brightness|default(0)|int > states('input_number.light_minimum')|int %} + script.turn_on + {% else %} + script.turn_off + {% endif %}{% endraw %} + data: + entity_id: script.light_dim_pause + + light_dim_pause: + sequence: + - delay: + milliseconds: 1 + - service: script.turn_on + data: + entity_id: script.light_dim +``` diff --git a/source/_cookbook/dim_lights_when_playing_media.markdown b/source/_cookbook/dim_lights_when_playing_media.markdown index e0b0859193d..e0c19c45d3b 100644 --- a/source/_cookbook/dim_lights_when_playing_media.markdown +++ b/source/_cookbook/dim_lights_when_playing_media.markdown @@ -12,7 +12,7 @@ ha_category: Automation Examples Like it how the lights dim up/down at the movies? Do it at home as well! -This example uses the [media player](https://home-assistant.io/components/media_player/), [Philips Hue](https://home-assistant.io/components/light.hue/) (transitions) and the [sun](https://home-assistant.io/components/sun/) component. We'll use actions to detect media player state changes and scenes to control multiple lights, color settings and transition between scenes. +This example uses the [media player](https://home-assistant.io/components/media_player/), [lights](https://home-assistant.io/components/light/) (transitions) and the [sun](https://home-assistant.io/components/sun/) component. We'll use actions to detect media player state changes and [scenes](https://home-assistant.io/components/scene/) to control multiple lights and transition between scenes. #### {% linkable_title Scenes %} One scene for normal light, one for when movies are on. A 2 second transition gives a nice 'feel' to the switch. @@ -24,25 +24,21 @@ scene: light.light1: state: on transition: 2 - brightness: 150 - xy_color: [ 0.4448, 0.4066 ] + brightness_pct: 60 light.light2: state: on transition: 2 - brightness: 215 - xy_color: [ 0.4448, 0.4066 ] + brightness_pct: 85 - name: Livingroom dim entities: light.light1: state: on transition: 2 - brightness: 75 - xy_color: [ 0.5926, 0.3814 ] + brightness_pct: 30 light.light2: state: on transition: 2 - brightness: 145 - xy_color: [ 0.5529, 0.4107 ] + brightness_pct: 55 ``` diff --git a/source/_cookbook/fail2ban.markdown b/source/_cookbook/fail2ban.markdown index c9c0ff3550b..505fad6272d 100644 --- a/source/_cookbook/fail2ban.markdown +++ b/source/_cookbook/fail2ban.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "fail2ban for HASS" -description: "Setting up fail2ban to read HASS log files to improve security." +title: "fail2ban" +description: "Setting up fail2ban to read Home Assistant's log files to improve security." date: 2017-05-24 10:05 sidebar: true comments: false @@ -14,6 +14,15 @@ This is a quick guide on how to setup fail2ban for Home Assistant. This was orig First install `fail2ban`. On Debian/Ubuntu this would be `apt-get install fail2ban`. On other distros you can google it. +Then make sure logging is enabled in your `configuration.yaml` file for your Home Assistant instance: + +```yaml +logger: + default: critical + logs: + homeassistant.components.http.ban: warning +``` + Next we will be creating these three files : - `/etc/fail2ban/fail2ban.local` @@ -34,12 +43,9 @@ Contents of `/etc/fail2ban/filter.d/hass.local`: before = common.conf [Definition] -failregex = ^%(__prefix_line)s.*Login attempt or request with an invalid password from .*$ +failregex = ^%(__prefix_line)s.*Login attempt or request with invalid authentication from .*$ ignoreregex = - -[Init] -datepattern = ^%%y-%%m-%%d %%H:%%M:%%S ``` Contents of `/etc/fail2ban/jail.local` (Note that you'll need to change the `logpath` to match your logfile which will be different from the path listed.): @@ -49,7 +55,7 @@ Contents of `/etc/fail2ban/jail.local` (Note that you'll need to change the `log enabled = true filter = hass action = iptables-allports[name=HASS] -logpath = /opt/hass-prod-cfg/home-assistant.log +logpath = /home/homeassistant/.homeassistant/home-assistant.log maxretry = 5 ``` diff --git a/source/_cookbook/python_component_mqtt_basic.markdown b/source/_cookbook/python_component_mqtt_basic.markdown index 3deb82bd4b8..f038f21969e 100644 --- a/source/_cookbook/python_component_mqtt_basic.markdown +++ b/source/_cookbook/python_component_mqtt_basic.markdown @@ -46,7 +46,7 @@ def setup(hass, config): # Subscribe our listener to a topic. mqtt.subscribe(hass, topic, message_received) - # Set the intial state + # Set the initial state. hass.states.set(entity_id, 'No messages') # Service to publish a message on MQTT. diff --git a/source/_cookbook/sonos_say.markdown b/source/_cookbook/sonos_say.markdown index 6c73f0e1bb6..80a928d7a4a 100644 --- a/source/_cookbook/sonos_say.markdown +++ b/source/_cookbook/sonos_say.markdown @@ -51,6 +51,6 @@ automation: data: sonos_entity: media_player.office volume: 0.5 - message: 'Your husband comming home!' + message: 'Your husband coming home!' delay: '00:00:05' ``` diff --git a/source/_cookbook/track_battery_level.markdown b/source/_cookbook/track_battery_level.markdown index eee8f1a4930..9de6b14cfb0 100644 --- a/source/_cookbook/track_battery_level.markdown +++ b/source/_cookbook/track_battery_level.markdown @@ -12,34 +12,50 @@ ha_category: Automation Examples ### {% linkable_title iOS Devices %} -If you have a device running iOS (iPhone, iPad, etc), The [iCloud](/components/device_tracker.icloud/) is gathering various details about your device including the battery level. To display it in the Frontend use a [template sensor](/components/sensor.template/). +If you have a device running iOS (iPhone, iPad, etc), The [iCloud](/components/device_tracker.icloud/) is gathering various details about your device including the battery level. To display it in the Frontend use a [template sensor](/components/sensor.template/). You can also use the icon template option to create a dynamic icon that changes with the battery level. +{% raw %} ```yaml sensor: - platform: template sensors: battery_iphone: + friendly_name: iPhone Battery + # "entity_id:" ensures that this sensor will only update when your device tracker does. + entity_id: device_tracker.iphone unit_of_measurement: '%' value_template: >- - {% raw %}{%- if states.device_tracker.iphone.attributes.battery %} + {%- if states.device_tracker.iphone.attributes.battery %} {{ states.device_tracker.iphone.attributes.battery|round }} {% else %} {{ states.sensor.battery_iphone.state }} - {%- endif %}{% endraw %} + {%- endif %} + icon_template: > + {% set battery_level = states.sensor.battery_iphone.state|default(0)|int %} + {% set battery_round = (battery_level / 10) |int * 10 %} + {% if battery_round >= 100 %} + mdi:battery + {% elif battery_round > 0 %} + mdi:battery-{{ battery_round }} + {% else %} + mdi:battery-alert + {% endif %} ``` +{% endraw %} The `else` part is used to have the sensor keep it's last state if the newest [iCloud](/components/device_tracker.icloud/) update doesn't have any battery state in it (which happens sometimes). Otherwise the sensor will be blank. ### {% linkable_title Android and iOS Devices %} -While running the [Owntracks](/components/device_tracker.owntracks/) device tracker you can retrieve the battery level with a MQTT sensor. +While running the [Owntracks](/components/device_tracker.owntracks/) device tracker you can retrieve the battery level with a MQTT sensor. Replace username with your MQTT username (for the embedded MQTT it's simply homeassistant), and deviceid with the set Device ID in Owntracks. +{% raw %} ```yaml sensor: - platform: mqtt - state_topic: "owntracks/tablet/tablet" + state_topic: "owntracks/username/deviceid" name: "Battery Tablet" unit_of_measurement: "%" - value_template: {% raw %}'{{ value_json.batt }}'{% endraw %} + value_template: '{{ value_json.batt }}' ``` - +{% endraw %} diff --git a/source/_cookbook/turn_on_light_for_10_minutes_when_motion_detected.markdown b/source/_cookbook/turn_on_light_for_10_minutes_when_motion_detected.markdown index 4da386bbbc9..34a244aaa57 100644 --- a/source/_cookbook/turn_on_light_for_10_minutes_when_motion_detected.markdown +++ b/source/_cookbook/turn_on_light_for_10_minutes_when_motion_detected.markdown @@ -23,7 +23,7 @@ automation: to: 'on' action: service: homeassistant.turn_on - entity_id: light.kitchen + entity_id: light.kitchen_light - alias: Turn off kitchen light 10 minutes after last movement trigger: diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml new file mode 100644 index 00000000000..7ee16d84fb3 --- /dev/null +++ b/source/_data/glossary.yml @@ -0,0 +1,48 @@ +- topic: Platform + description: "[Platforms](/docs/configuration/platform_options/) make the connection to a specific software or hardware platform. For example, the `pushbullet` platform works with the service pushbullet.com to send notifications." +- topic: Component + description: "[Components](/docs/configuration/platform_options/) provide the core logic for the functionality in Home Assistant. Like `notify` provides sending notifications." +- topic: Condition + description: "[Conditions](/docs/scripts/conditions/) are an optional part of an automation that will prevent an action from firing if they are not met." +- topic: Service + description: "[Services](/docs/scripts/service-calls/) are called to perform actions." +- topic: Action + description: "[Actions](/docs/automation/action/) are events that fires once all triggers and conditions have been met." +- topic: Event + description: "An [event](/docs/configuration/events/) is when something happens." +- topic: Entity + description: "An [entity](/docs/configuration/platform_options/) is the representation of a single device, unit or web service." +- topic: Device + description: "A device is usually a physical unit which can do or observe something." +- topic: Hassbian + description: "[Hassbian](/docs/installation/hassbian/) is a customized operating system specifically tailored for Raspberry Pi users. It is one of the easiest way of installing and running Home Assistant on a Raspberry Pi." +- topic: Discovery + description: "[Discovery](/components/discovery/) is the automatic setup of zeroconf/mDNS and uPnP devices after they are discovered." +- topic: Group + description: "[Groups](/components/group/) are a way to organize your entities into a single unit." +- topic: Automation + description: "[Automations](/docs/automation/) offer the capability to call a service based on a simple or complex trigger. Automation allows a condition such as sunset to cause an event, such as a light turning on." +- topic: Trigger + description: "A [trigger](/docs/automation/trigger/) is a set of values or conditions of a platform that are defined to cause an automation to run." +- topic: Template + description: "A [template](/docs/automation/templating/) is an automation definition that can include variables for the service or data from the trigger values. This allows automations to generate dynamic actions." +- topic: Script + description: "[Scripts](/docs/scripts/) are components that allow users to specify a sequence of actions to be executed by Home Assistant when turned on" +- topic: Scene + description: "[Scenes](/components/scene/) capture the states you want certain entities to be. For example a scene can specify that light A should be turned on and light B should be bright red." +- topic: HADashboard + description: "[HADashboard](/docs/ecosystem/hadashboard/) is a modular, skinnable dashboard for Home Assistant that is intended to be wall mounted, and is optimized for distance viewing." +- topic: hass + description: "HASS or [hass](/docs/tools/hass/) is often used as an abbreviation for Home Assistant. It is aslo the comand line tool for accessing" +- topic: Hass.io + description: "[Hass.io](/hassio/) is an operating system that will take care of installing and updating Home Assistant, is managed from the Home Assistant UI, allows creating/restoring snapshots of your configuration, and can easily be extended" +- topic: Cookbook + description: "The [Cookbook](/cookbook/) contains a set of configuration examples of Home Assistant from the community" +- topic: Packages + description: "[Packages](/docs/configuration/packages/) allow you to bundle different component configuations together." +- topic: Customize + description: "[Customization](/docs/configuration/customizing-devices/) allows you to overwrite the default parameter of your devices in the configuration." +- topic: Zone + description: "[Zones](/components/zone/) are areas that can be used for presence detection." +- topic: Frontend + description: "The [frontend](/components/frontend/) is a necessary component for the UI, it is also where you can define your themes." diff --git a/source/_docs/asterisk_mbox.markdown b/source/_docs/asterisk_mbox.markdown new file mode 100644 index 00000000000..65c570aab89 --- /dev/null +++ b/source/_docs/asterisk_mbox.markdown @@ -0,0 +1,104 @@ +--- +layout: page +title: "Asterisk Voicemail Server Installation" +description: "Instructions how to integrate your existing Asterisk voicemail within Home Assistant." +date: 2017-06-30 18:30 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Asterisk Voicemail integration allows Home Assistant to view, listen-to, and delete voicemails from a Asterisk voicemail mailbox. + +There are two components to the integration: +- A server that runs on the Asterisk PBX host and communicates over an open port. +- A client which can request inormation from the server. + +Both parts are necessary for Asterisk voicemail integration. + +The server installation is documented below. The client is [integrated inside Home Assistant](/components/asterisk_mbox) + +

+Currently this module can only monitor a single Asterisk PBX mailbox. Multiple mailbox support is planned for the future +

+ +### {% linkable_title Prerequisites %} + +Before beginning make sure that you have the following: +- A functional Asterisk PBX setup which is using the default `voicemail` application +- Both Home Assistant and Asterisk PBX running on the same LAN (or the same server) +- The Asterisk PBX server has python 3.4 or newer installed +- Administrator access on the Asterisk PBX (for python module installation) +- Account Access to the `asterisk` user that runs the Asterisk PBX software + +### {% linkable_title Installation %} + +1. Apply for a Google API key to enable speech-transcription services + +2. Install the `asterisk_mbox_server` python module: + + ```bash + $ pip3 install asterisk_mbox_server + ``` + +3. Create a configuration file for the server + + As the `asterisk` user create a `asterisk_mbox.ini` file (You can place this in any directory you choose, but the rommended location is `/etc/asterisk/asterisk_mbox.ini`) + + ```ini + [default] + host = IP_ADDRESS + port = PORT + password = PASSWORD + mbox_path = PATH_TO_VOICEMAIL_FILES + cache_file = PATH_TO_CACHE_FILE + google_key = GOOGLE_API_KEY + ``` + + - **host** (*Optional*): The IP address to listen on for client requests. This defaults to all IP addresses on the server. To listen only locally, choose `127.0.0.1` + - **port** (*Optional*): The port to listen on for client requests. (default: 12345) + - **password** (*Required*): A password shared between client and server. Use only alpha-numeric characters and spaces + - **mbox\_path** (*Required*): The path to the storage location of mailbox files. This is typically `/var/spool/asterisk/voicemail/default//` + - **cache\_file** (*Required*): A fully-qualified path to a file thht can be written by the server containing transcriptions of voicemails. Example: `/var/spool/asterisk/transcription.cache` + - **google\_key** (*Required*): Your 40 character Google API key + + Once complete, ensure this file is only accessible by the asterisk user: + + ```bash + $ sudo chown asterisk:asterisk /etc/asterisk/asterisk_mbox.ini + $ sudo chmod 600 /etc/asterisk/asterisk_mbox.ini + ``` +4. Interactively start the server to verify it is functioning + + ```bash + $ sudo -u asterisk asterisk_mbox_server -v --cfg /etc/asterisk/asterisk_mbox.ini + ``` + + Now complete the [Home Assistant configuration](/components/asterisk_mbox) and verify that Home Assistant can communicate with the server + + You can use `Ctrl-C` to terminate the server when done testing + +5. Configure the server to start automatically + + Copy the following code into `/etc/systemd/system/asterisk_mbox.service`: + ```ini + [Unit] + Description=Asterisk PBX voicemail server for Home Assistant + Wants=network.target + After=network.target + + [Service] + Type=simple + User=asterisk + Group=asterisk + ExecStart=/usr/local/bin/asterisk_mbox_server -cfg /etc/asterisk/asterisk_mbox.ini + Restart=on-failure + + [Install] + WantedBy=multi-user.target + ``` + +

+This assumes that your Asterisk PBX server is using `systemd` for init handling. If not, you will need to create the appropriate configuration files yourself. +

diff --git a/source/_docs/automation/editor.markdown b/source/_docs/automation/editor.markdown index 83b1de0f29e..d7f17072139 100644 --- a/source/_docs/automation/editor.markdown +++ b/source/_docs/automation/editor.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Automation Editor" -description: "Instructions on how to use the new automation editor." +description: "Instructions on how to use the automation editor." date: 2016-04-24 08:30 +0100 sidebar: true comments: false @@ -9,11 +9,9 @@ sharing: true footer: true --- -In Home Assistant 0.45 we have introduced the first version of our automation editor. The editor is still in a very early stage and rough around the edges. For now we are only supporting Chrome but better browser support is planned for the future. +In Home Assistant 0.45 we introduced the first version of our automation editor. If you just created a new configuration with Home Assistant then you're all set! Go to the UI and enjoy. -If you just created a new configuration with Home Assistant then you're all set! Go to the UI and enjoy. - -From the UI choose **Automation** which is located in the sidebar. Press the **+** sign in the lower right corner to get started. This example is based on the manual steps described in the [Getting started section](/getting-started/automation/) for a [`random` sensor](/components/sensor.random/). +From the UI choose **Configuration** which is located in the sidebar, then click on **Automation** to go to the automation editor. Press the **+** sign in the lower right corner to get started. This example is based on the manual steps described in the [Getting started section](/getting-started/automation/) for a [`random` sensor](/components/sensor.random/). Choose a meaningful name for your automation rules. @@ -41,7 +39,7 @@ As "Service Data" we want a simple text that is shown as part of the notificatio } ``` -Don't forget to save your new automation rule. +Don't forget to save your new automation rule. In order for your saved automation rule to come into effect you will need to go to the **Configuration** page and click on **Reload Automation**. ## {% linkable_title Updating your configuration to use the editor %} diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 8614cbba115..a54145e0956 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -56,7 +56,7 @@ automation: ``` ### {% linkable_title Numeric state trigger %} -On state change of a specified entity, attempts to parse the state as a number and triggers if value is above and/or below a threshold. +On state change of a specified entity, attempts to parse the state as a number and triggers once if value is changing from above to below a threshold, or from below to above the given threshold. ```yaml automation: @@ -68,8 +68,19 @@ automation: # At least one of the following required above: 17 below: 25 + + # If given, will trigger when condition has been for X time. + for: + hours: 1 + minutes: 10 + seconds: 5 ``` +

+Listing above and below together means the numeric_state has to be between the two values. +In the example above, a numeric_state that is 17.1-24.9 would fire this trigger. +

+ ### {% linkable_title State trigger %} Triggers when the state of tracked entities change. If only entity_id given will match all state changes, even if only state attributes change. @@ -94,9 +105,6 @@ automation:

Use quotes around your values for `from` and `to` to avoid the YAML parser interpreting values as booleans.

-

- Using `state` as an alias for `to` is deprecated. -

### {% linkable_title Sun trigger %} Trigger when the sun is setting or rising. An optional time offset can be given to have it trigger for example 45 minutes before sunset, when dusk is setting in. @@ -189,7 +197,7 @@ automation: ### {% 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 lines following accordingly. Whenever one of the triggers fires, your rule is executed. +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. ```yaml automation: diff --git a/source/_docs/automation/troubleshooting.markdown b/source/_docs/automation/troubleshooting.markdown index 5207175e258..86cf9c9e479 100644 --- a/source/_docs/automation/troubleshooting.markdown +++ b/source/_docs/automation/troubleshooting.markdown @@ -12,7 +12,7 @@ redirect_from: /getting-started/automation-troubleshooting/ You can verify that your automation rules are being initialized correctly by watching both the realtime logs (`homeassistant.log` in the configuration directory) and also the [Logbook](/components/logbook/). The realtime logs will show the rules being initialized (once for each trigger), example: -```plain +```text INFO [homeassistant.components.automation] Initialized rule Rainy Day INFO [homeassistant.components.automation] Initialized rule Rainy Day INFO [homeassistant.components.automation] Initialized rule Rainy Day diff --git a/source/_docs/autostart/init.d.markdown b/source/_docs/autostart/init.d.markdown index abe1ccb6ff1..9f67cbdb2b5 100644 --- a/source/_docs/autostart/init.d.markdown +++ b/source/_docs/autostart/init.d.markdown @@ -26,19 +26,23 @@ $ sudo chmod +x /etc/init.d/hass-daemon Create or pick a user that the Home Assistant daemon will run under. Update script to set `RUN_AS` to the username that should be used to execute hass. -### {% linkable_title 3. Register the daemon with Linux %} +### {% linkable_title 3. Change hass executable if required. %} + +Some installation environments may require a change in the Home Assistant executable `hass`. Update script to set `HASS_BIN` to the appropriate `hass` executable path. + +### {% linkable_title 4. Register the daemon with Linux %} ```bash $ sudo update-rc.d hass-daemon defaults ``` -### {% linkable_title 4. Install this service %} +### {% linkable_title 5. Install this service %} ```bash $ sudo service hass-daemon install ``` -### {% linkable_title 5. Restart Machine %} +### {% linkable_title 6. Restart Machine %} That's it. Restart your machine and Home Assistant should start automatically. @@ -46,7 +50,7 @@ If HA does not start, check the log file output for errors at `/var/opt/homeassi ### {% linkable_title Extra: Running commands before hass executes %} -If any commands need to run before executing hass (like loading a virutal environment), put them in PRE_EXEC. This command must end with a semicolon. +If any commands need to run before executing hass (like loading a virtual environment), put them in PRE_EXEC. This command must end with a semicolon. ### {% linkable_title Daemon script %} @@ -64,6 +68,8 @@ If any commands need to run before executing hass (like loading a virutal enviro # /etc/init.d Service Script for Home Assistant # Created with: https://gist.github.com/naholyr/4275302#file-new-service-sh PRE_EXEC="" +# Typically /usr/bin/hass +HASS_BIN="hass" RUN_AS="USER" PID_FILE="/var/run/hass.pid" CONFIG_DIR="/var/opt/homeassistant" @@ -76,7 +82,7 @@ start() { return 1 fi echo 'Starting service…' >&2 - local CMD="$PRE_EXEC hass $FLAGS $REDIRECT;" + local CMD="$PRE_EXEC $HASS_BIN $FLAGS $REDIRECT;" su -c "$CMD" $RUN_AS echo 'Service started' >&2 } diff --git a/source/_docs/autostart/synology.markdown b/source/_docs/autostart/synology.markdown index 38dfded8ece..2d97b91e575 100644 --- a/source/_docs/autostart/synology.markdown +++ b/source/_docs/autostart/synology.markdown @@ -38,13 +38,13 @@ exec /bin/sh /volume1/homeassistant/hass-daemon start Register the autostart ```bash -$ ln -s homeassistant-conf /etc/init/homeassistant-conf +$ ln -s homeassistant.conf /etc/init/homeassistant.conf ``` Make the relevant files executable: ```bash -$ chmod -r 777 /etc/init/homeassistant-conf +$ chmod -r 777 /etc/init/homeassistant.conf ``` That's it - reboot your NAS and Home Assistant should automatically start diff --git a/source/_docs/autostart/systemd.markdown b/source/_docs/autostart/systemd.markdown index 60ad4084fc6..f4d3b25ff83 100644 --- a/source/_docs/autostart/systemd.markdown +++ b/source/_docs/autostart/systemd.markdown @@ -10,20 +10,20 @@ footer: true redirect_from: /getting-started/autostart-systemd/ --- -Newer linux distributions are trending towards using `systemd` for managing daemons. Typically, systems based on Fedora, ArchLinux, or Debian (8 or later) use `systemd`. This includes Ubuntu releases including and after 15.04, CentOS, and Red Hat. If you are unsure if your system is using `systemd`, you may check with the following command: +Newer Linux distributions are trending towards using `systemd` for managing daemons. Typically, systems based on Fedora, ArchLinux, or Debian (8 or later) use `systemd`. This includes Ubuntu releases including and after 15.04, CentOS, and Red Hat. If you are unsure if your system is using `systemd`, you may check with the following command: ```bash $ ps -p 1 -o comm= ``` -If the preceding command returns the string `systemd`, you are likely using `systemd`. +If the preceding command returns the string `systemd`, continue with the instructions below. -If you want Home Assistant to be launched automatically, an extra step is needed to setup `systemd`. 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: +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. -- If running Home Assistant in a Python virtual environment or a Docker container, please skip to section below. -- 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. +- 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. ``` [Unit] @@ -78,6 +78,8 @@ ExecStopPost=/usr/bin/docker rm -f home-assistant-%i WantedBy=multi-user.target ``` +### Next Steps + You need to reload `systemd` to make the daemon aware of the new configuration. ```bash @@ -125,3 +127,10 @@ Because the log can scroll quite quickly, you can select to view only the error ```bash $ sudo journalctl -f -u home-assistant@[your user] | grep -i 'error' ``` + +When working on Home Assitant, 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] +``` + diff --git a/source/_docs/autostart/upstart.markdown b/source/_docs/autostart/upstart.markdown index 3db73e5591f..b627ab3806e 100644 --- a/source/_docs/autostart/upstart.markdown +++ b/source/_docs/autostart/upstart.markdown @@ -35,7 +35,7 @@ Upstart will launch init scripts that are located in the directory `/etc/init.d/ # # Installation: # 1) If any commands need to run before executing hass (like loading a -# virutal environment), put them in PRE_EXEC. This command must end with +# virtual environment), put them in PRE_EXEC. This command must end with # a semicolon. # 2) Set RUN_AS to the username that should be used to execute hass. # 3) Copy this script to /etc/init.d/ diff --git a/source/_docs/backend.markdown b/source/_docs/backend.markdown index 23659871a0e..01b28b17a49 100644 --- a/source/_docs/backend.markdown +++ b/source/_docs/backend.markdown @@ -9,7 +9,7 @@ sharing: true footer: true --- -The frontend of Home Assistant is running with [Python 3](https://www.python.org/). +The backend of Home Assistant is running with [Python 3](https://www.python.org/). The [Architecture page](/developers/architecture/) show the details about the elements running in the background of Home Assistant. diff --git a/source/_docs/backend/database.markdown b/source/_docs/backend/database.markdown index 51266ff7484..652ef13f05f 100644 --- a/source/_docs/backend/database.markdown +++ b/source/_docs/backend/database.markdown @@ -10,8 +10,8 @@ footer: true redirect_from: /details/database/ --- -The default database that is used for Home Assistant is [SQLite](https://www.sqlite.org/) and is stored in your [configuration directory](/getting-started/configuration/), eg. `/.homeassistant/home-assistant_v2.db`. You will need an installation of `sqlite3`, the command-line for SQLite database, or [DB Browser for SQLite](http://sqlitebrowser.org/) which provide an editor for executing SQL commands. -First load your database with `sqlite3`. +The default database that is used for 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`). 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. +First load your database with `sqlite3`: ```bash $ sqlite3 home-assistant_v2.db @@ -20,7 +20,7 @@ Enter ".help" for usage hints. sqlite> ``` -It helps to set some options to make the output better readable. +It helps to set some options to make the output more readable: ```bash sqlite> .header on @@ -38,7 +38,7 @@ seq name file ### {% linkable_title Schema %} -Get all available tables from your current Home Assistant database. +Get all available tables from your current Home Assistant database: ```bash sqlite> SELECT sql FROM sqlite_master; @@ -81,7 +81,7 @@ CREATE INDEX states__state_changes ON states (last_changed, last_updated, entity CREATE TABLE sqlite_stat1(tbl,idx,stat) ``` -To only show the details about the `states` table as we are using that one in the next examples. +To only show the details about the `states` table (since we are using that one in the next examples): ```bash sqlite> SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'states'; @@ -89,7 +89,7 @@ sqlite> SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'state ### {% linkable_title Query %} -The identification of the available columns in the table is done and we are now able to create a query. Let's list of your Top 10 entities. +The identification of the available columns in the table is done and we are now able to create a query. Let's list your Top 10 entities: ```bash sqlite> .width 30, 10, @@ -110,7 +110,7 @@ group.all_switches 8018 ### {% linkable_title Delete %} -If you don't want to keep certain entities, you can delete them permanently. +If you don't want to keep certain entities, you can delete them permanently: ```bash sqlite> DELETE FROM states WHERE entity_id="sensor.cpu"; @@ -123,4 +123,3 @@ 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/). - diff --git a/source/_docs/backend/updater.markdown b/source/_docs/backend/updater.markdown index dcdb3cb5433..8551fff955e 100644 --- a/source/_docs/backend/updater.markdown +++ b/source/_docs/backend/updater.markdown @@ -12,6 +12,13 @@ redirect_from: /details/updater/ Starting with 0.31 the [updater component](/components/updater/) sends an optional report about Home Assistant instance. +If you want to opt-in to include component information, add `include_used_components` to your config. This will allow the Home Assistant developers to focus development efforts on the most popular components. + +```yaml +updater: + include_used_components: true +``` + We are only collecting this information to better understand our user base to provide better long term support and feature development. | Name | Description | Example | Data Source | @@ -49,4 +56,4 @@ The server also adds two timestamps to the data: - the original date your instance UUID was first seen - the timestamp of the last time we have seen your instance -There are currently no plans to publicly expose any of this information. If we did do such a thing in the future we would of course notify you in advance. It must also be stated that we will never sell or allow the use of this information for non-Home Assistant purposes. +We will never publicly expose individual gathered data. We might however publish aggregated stats about our user base (example: 70% of all users use Linux). We will never sell or allow the use of this information for non-Home Assistant development purposes. diff --git a/source/_docs/configuration/basic.markdown b/source/_docs/configuration/basic.markdown index 4af7df1a350..99614cefc1f 100644 --- a/source/_docs/configuration/basic.markdown +++ b/source/_docs/configuration/basic.markdown @@ -14,26 +14,27 @@ By default, Home Assistant will try to detect your location from IP address geol ```yaml homeassistant: - # Omitted values in this section will be auto detected using freegeoip.io - - # Location required to calculate the time the sun rises and sets latitude: 32.87336 longitude: 117.22743 - - # Impacts weather/sunrise data (altitude above sea level in meters) elevation: 430 - - # 'metric' for Metric, 'imperial' for Imperial unit_system: metric - - # Pick yours from here: - # http://en.wikipedia.org/wiki/List_of_tz_database_time_zones time_zone: America/Los_Angeles - - # Name of the location where Home Assistant is running name: Home ``` +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 +- **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. + ### {% linkable_title Password protecting the web interface %} First, you'll want to add a password for the Home Assistant web interface. Use your favourite text editor to open `configuration.yaml` and edit the `http` section: diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown index 00d50671ce1..9531f61520d 100644 --- a/source/_docs/configuration/customizing-devices.markdown +++ b/source/_docs/configuration/customizing-devices.markdown @@ -13,7 +13,7 @@ redirect_from: /getting-started/customizing-devices/ By default, all of your devices will be visible and have a default icon determined by their domain. You can customize the look and feel of your front page by altering some of these parameters. This can be done by overriding attributes of specific entities.

-Be carefull not to forget to place `customize`, `customize_domain`, and `customize_glob` inside `homeassistant:` or it will fail. +If you implement `customize`, `customize_domain`, or `customize_glob` you must make sure it is done inside of `homeassistant:` or it will fail.

```yaml @@ -41,23 +41,33 @@ homeassistant: customize_domain: light: icon: mdi:home + automation: + initial_state: 'on' # Customize entities matching a pattern customize_glob: "light.kitchen_*": icon: mdi:description - + "scene.month_*_colors": + hidden: true + emulated_hue: false + homebridge_hidden: true ``` ### {% linkable_title Possible values %} | Attribute | Description | | --------- | ----------- | -| `friendly_name` | Name of the entity +| `friendly_name` | Name of the entity. +| `homebridge_name` | Name of the entity in `HomeBridge`. | `hidden` | Set to `true` to hide the entity. -| `entity_picture` | Url to use as picture for entity +| `homebridge_hidden` | Set to `true` to hide the entity from `HomeBridge`. +| `emulated_hue_hidden` | Set to `true` to hide the entity from `emulated_hue`. +| `entity_picture` | Url to use as picture for entity. | `icon` | Any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com). Prefix name with `mdi:`, ie `mdi:home`. | `assumed_state` | For switches with an assumed state two buttons are shown (turn off, turn on) instead of a switch. By setting `assumed_state` to `false` you will get the default switch icon. | `device_class` | Sets the class of the device, changing the device state and icon that is displayed on the UI (see below). +| `initial_state` | Sets the initial state for automations. `on` or `off`. +| `unit_of_measurement` | Defines the units of measurement, if any. ### {% linkable_title Device Class %} diff --git a/source/_docs/configuration/events.markdown b/source/_docs/configuration/events.markdown index 48cb5df1af0..6ad5aa152d9 100644 --- a/source/_docs/configuration/events.markdown +++ b/source/_docs/configuration/events.markdown @@ -17,7 +17,6 @@ Home Assistant contains a few built-in events that are used to coordinate betwee ### {% linkable_title Event `homeassistant_start` %} Event `homeassistant_start` is fired when all components from the configuration have been intitialized. This is the event that will start the timer firing off `time_changed` events. - ### {% linkable_title Event `homeassistant_stop` %} Event `homeassistant_stop` is fired when Home Assistant is shutting down. It should be used to close any open connection or release any resources. @@ -28,8 +27,8 @@ Event `state_changed` is fired when a state changes. Both `old_state` and `new_s Field | Description ----- | ----------- `entity_id` | Entity ID of the changed entity. Example: `light.kitchen` -`old_state` | The previous state of the entity before it changed. This field is ommitted if the entity is new. -`new_state` | The new state of the entity. This field is ommitted if the entity is removed from the state machine. +`old_state` | The previous state of the entity before it changed. This field is omitted if the entity is new. +`new_state` | The new state of the entity. This field is omitted if the entity is removed from the state machine. ### {% linkable_title Event `time_changed` %} @@ -69,12 +68,12 @@ Field | Description ### {% linkable_title Event `platform_discovered` %} -Event `platform_discovered` is fired when a new platform has been discovered by the discovery component. +Event `platform_discovered` is fired when a new platform has been discovered by the [`discovery`](/components/discovery/) component. Field | Description ----- | ----------- -`service` | The service that is discovered. Example: `zwave`. -`discovered` | Information that is discovered. Can be a dict, tuple etc. Example: `(192.168.1.10, 8889)`. +`service` | The platform that is discovered. Example: `zwave`. +`discovered` | Dictionary containing discovery information. Example: `{ "host": "192.168.1.10", "port": 8889}`. ### {% linkable_title Event `component_loaded` %} diff --git a/source/_docs/configuration/group_visibility.markdown b/source/_docs/configuration/group_visibility.markdown index c3e284a05e0..0ec91f0f6b9 100644 --- a/source/_docs/configuration/group_visibility.markdown +++ b/source/_docs/configuration/group_visibility.markdown @@ -104,7 +104,7 @@ sensor: command: "python3 occasion.py" ```

-If you are using docker to run home assistant then the occasion.py script will be placed under /config. Your command should instead be: command: "python3 /command/occasion.py" +If you are using docker to run Home Assistant then the occasion.py script will be placed under /config. Your command should instead be: command: "python3 /command/occasion.py"

diff --git a/source/_docs/configuration/packages.markdown b/source/_docs/configuration/packages.markdown index 39f231e832d..09feb26aabd 100644 --- a/source/_docs/configuration/packages.markdown +++ b/source/_docs/configuration/packages.markdown @@ -24,7 +24,7 @@ homeassistant: The package configuration can include: `switch`, `light`, `automation`, `groups` or the majority of the Home Assistant components. -It can be specified inline or in a seperate YAML file using `!include`. +It can be specified inline or in a separate YAML file using `!include`. Inline example, main `configuration.yaml`: diff --git a/source/_docs/configuration/platform_options.markdown b/source/_docs/configuration/platform_options.markdown index 0d7945d3d10..544c651e4b7 100644 --- a/source/_docs/configuration/platform_options.markdown +++ b/source/_docs/configuration/platform_options.markdown @@ -10,7 +10,7 @@ footer: true redirect_from: /topics/platform_options/ --- -Any component that is based on the entity component allows various extra options to be set per platform. +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 %} @@ -25,7 +25,7 @@ light: ### {% linkable_title Scan Interval %} -Platforms that require polling will be polled in an interval specified by the main component. For example a light will check every 30 seconds for a changed state. It is possible to overwrite this scan interval for any platform that is being polled by specifying a `scan_interval` config key. In the example below we setup the Philips Hue lights but tell Home Assistant to poll the devices every 10 seconds instead of the default 30 seconds. +Platforms that require polling will be polled in an interval specified by the main component. For example a light will check every 30 seconds for a changed state. It is possible to overwrite this scan interval for any platform that is being polled by specifying a `scan_interval` configuration key. In the example below we setup the Philips Hue lights but tell Home Assistant to poll the devices every 10 seconds instead of the default 30 seconds. ```yaml # Example configuration.yaml entry to poll Hue lights every 10 seconds. diff --git a/source/_docs/configuration/secrets.markdown b/source/_docs/configuration/secrets.markdown index 14170759340..b5feb55b2b4 100644 --- a/source/_docs/configuration/secrets.markdown +++ b/source/_docs/configuration/secrets.markdown @@ -10,11 +10,11 @@ footer: true redirect_from: /topics/secrets/ --- -The `configuration.yaml` file is a plain-text file, thus it is readable by anyone who has access to the file. The file contains passwords and API tokens which need to be redacted if you want to share your configuration. By using `!secrets` you can remove any private information from you configuration files. This separation can also help you to keep easier track of your passwords and API keys. As they are all stored at one place and no longer spread across the `configuration.yaml` file or even multiple yaml files if you [split up your configuration](/topics/splitting_configuration/). +The `configuration.yaml` file is a plain-text file, thus it is readable by anyone who has access to the file. The file contains passwords and API tokens which need to be redacted if you want to share your configuration. By using `!secrets` you can remove any private information from you configuration files. This separation can also help you to keep easier track of your passwords and API keys. As they are all stored at one place and no longer spread across the `configuration.yaml` file or even multiple yaml files if you [split up your configuration](/docs/configuration/splitting_configuration/). ### {% linkable_title Using secrets.yaml %} -The workflow for moving private information to `secrets.yaml` is very similar to the [splitting of the configuration](/topics/splitting_configuration/). Create a `secrets.yaml` file in your Home assistant configuration directory (The location of the folder differs between operating systems: on OS X and Linux it's `~/.homeassistant` and on Windows it's `%APPDATA%/.homeassistant`). +The workflow for moving private information to `secrets.yaml` is very similar to the [splitting of the configuration](/docs/configuration/splitting_configuration/). Create a `secrets.yaml` file in your Home Assistant [configuration directory](/docs/configuration/). The entries for password and API keys in the `configuration.yaml` file usually looks like the example below. @@ -23,7 +23,7 @@ http: api_password: YOUR_PASSWORD ``` -Those entries need to be replaced with `!secret` and a identifier. +Those entries need to be replaced with `!secret` and an identifier. ```yaml http: @@ -39,27 +39,30 @@ http_password: YOUR_PASSWORD ### {% linkable_title Debugging secrets %} When you start splitting your configuration into multiple files, you might end up with configuration in sub folders. Secrets will be resolved in this order: -- A `secrets.yaml` located in the same folder as the yaml file referencing the secret, + +- A `secrets.yaml` located in the same folder as the YAML file referencing the secret, - next, parent folders will be searched for a `secrets.yaml` file with the secret, stopping at the folder with the main `configuration.yaml`, - lastly, `keyring` will be queried for the secret (more info below) To see where secrets are being loaded from you can either add an option to your `secrets.yaml` file or use the `check_config` script. *Option 1*: Print where secrets are retrieved from to the Home Assistant log by adding the following to `secrets.yaml`: + ```yaml logger: debug ``` This will not print the actual secret's value to the log. *Option 2*: View where secrets are retrieved from and the contents of all `secrets.yaml` files used, you can use the `check_config` script from the command line: + ```bash -hass --script check_config --secrets +$ hass --script check_config --secrets ``` -This will print all your secrets +This will print all your secrets. ### {% linkable_title Storing passwords in a keyring managed by your OS %} -Using [Keyring](https://github.com/jaraco/keyring) is an alternative way to `secrets.yaml`. They can be managed from the command line via the keyring script. +Using [Keyring](https://github.com/jaraco/keyring) is an alternative way to `secrets.yaml`. They can be managed from the command line via the `keyring` script. ```bash $ hass --script keyring --help @@ -89,3 +92,26 @@ Please enter password for encrypted keyring:

If you are using the Python Keyring, [autostarting](/getting-started/autostart/) of Home Assistant will no longer work.

+ +### {% linkable_title Storing passwords securely in AWS %} + +Using [Credstash](https://github.com/fugue/credstash) is an alternative way to `secrets.yaml`. They can be managed from the command line via the credstash script. + +Before using credstash, you need to set up AWS credentials either via the `aws` command line tool, or using environment variables as explained in the [AWS CLI docs](http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) as well as creating a KMS key named 'credstash' as explained in the [credstash readme](https://github.com/fugue/credstash#setting-up-kms). After that is complete, you can use the provided script to add secrets to your Home Assistant secret store in credstash + +```bash +$ hass --script credstash --help +``` + +To store a password in credstash, replace your password or API key with `!secret` and an identifier in `configuration.yaml` file. + +```yaml +http: + api_password: !secret http_password +``` + +Create an entry in your credstash store. + +```bash +$ hass --script credstash set http_password +``` diff --git a/source/_docs/configuration/securing.markdown b/source/_docs/configuration/securing.markdown index 88182107412..24ec0aa4f09 100644 --- a/source/_docs/configuration/securing.markdown +++ b/source/_docs/configuration/securing.markdown @@ -22,9 +22,9 @@ One major advantage of Home Assistant is that it's not dependent on cloud servic If you want to allow remote access, consider these additional points: -- Protect your communication with [TLS/SSL](/docs/ecosystem/certificates/lets_encrypt/) -- Protect your communication with [Tor](/cookbook/tor_configuration/) -- Protect your communication with a [self-signed certificate](/cookbook/tls_self_signed_certificate/) -- Use a [proxy](/cookbook/apache_configuration/) +- Protect your communication with [TLS/SSL](/docs/ecosystem/certificates/lets_encrypt/). +- Protect your communication with [Tor](/cookbook/tor_configuration/). +- Protect your communication with a [self-signed certificate](/cookbook/tls_self_signed_certificate/). +- Use a [proxy](/cookbook/apache_configuration/). diff --git a/source/_docs/configuration/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown index 7c6c8894dc5..3a1a9b6e530 100644 --- a/source/_docs/configuration/splitting_configuration.markdown +++ b/source/_docs/configuration/splitting_configuration.markdown @@ -152,7 +152,7 @@ You'll notice that this example includes a secondary parameter section (under th That about wraps it up. -If you have issues checkout `home-assistant.log` in the configuration directory as well as your indentations. If all else fails, head over to the [Gitter Chatroom](https://gitter.im/balloob/home-assistant) and ask away. +If you have issues checkout `home-assistant.log` in the configuration directory as well as your indentations. If all else fails, head over to our [Discord chat server][discord] and ask away. ### {% linkable_title Debugging multiple configuration files %} @@ -247,6 +247,8 @@ action: ``` It is important to note that each file must contain only **one** entry when using `!include_dir_list`. +It is also important to note that if you are splitting a file after adding -id: to support the automation UI, +the -id: line must be removed from each of the split files. #### {% linkable_title Example: `!include_dir_named` %} @@ -441,3 +443,5 @@ front_yard: - sensor.mailbox - camera.front_porch ``` + +[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_docs/configuration/state_object.markdown b/source/_docs/configuration/state_object.markdown index 9659e255241..72e62321477 100644 --- a/source/_docs/configuration/state_object.markdown +++ b/source/_docs/configuration/state_object.markdown @@ -18,13 +18,13 @@ All states will always have an entity id, a state and a timestamp when last upda Field | Description ----- | ----------- -`state.state` | String representation of the current state of the entity. Example `off` +`state.state` | String representation of the current state of the entity. Example `off`. `state.entity_id` | Entity ID. Format: `.`. Example: `light.kitchen`. `state.domain` | Domain of the entity. Example: `light`. `state.object_id` | Object ID of entity. Example: `kitchen`. `state.name` | Name of the entity. Based on `friendly_name` attribute with fall back to object ID. Example: `Kitchen Ceiling`. -`state.last_updated` | Time the state was written to the state machine. Note that writing the exact same state including attributes will not result in this field being updated. Example: `14:10:03 13-03-2016`. -`state.last_changed` | Time the state changed. This is not updated when there are only updated attributes. Example: `14:10:03 13-03-2016`. +`state.last_updated` | Time the state was written to the state machine. Note that writing the exact same state including attributes will not result in this field being updated. Example: `2017-10-28 08:13:36.715874+00:00`. +`state.last_changed` | Time the state changed. This is not updated when there are only updated attributes. Example: `2017-10-28 08:13:36.715874+00:00`. `state.attributes` | A dictionary with extra attributes related to the current state. The attributes of an entity are optional. There are a few attributes that are used by Home Assistant for representing the entity in a specific way. Each component will also have it's own attributes to represent extra state data about the entity. For example, the light component has attributes for the current brightness and color of the light. When an attribute is not available, Home Assistant will not write it to the state. @@ -36,7 +36,7 @@ Attribute | Description `friendly_name` | Name of the entity. Example: `Kitchen Ceiling`. `icon` | Icon to use for the entity in the frontend. Example: `mdi:home`. `hidden` | Boolean if the entity should not be shown in the frontend. Example: `true`. -`entity_picture` | Url to a picture that should be used instead of showing the domain icon. Example: `http://example.com/picture.jpg`. +`entity_picture` | URL to a picture that should be used instead of showing the domain icon. Example: `http://example.com/picture.jpg`. `assumed_state` | Boolean if the current state is an assumption. [More info](https://home-assistant.io/blog/2016/02/12/classifying-the-internet-of-things/#classifiers) Example: `True`. `unit_of_measurement` | The unit of measurement the state is expressed in. Used for grouping graphs or understanding the entity. Example: `°C`. diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index b1002f94f93..c02fbb7f2a2 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -51,7 +51,7 @@ script: {% endif %}{% endraw %} ``` -[Jinja2](http://jinja.pocoo.org/) supports a width variety of operations: +[Jinja2](http://jinja.pocoo.org/) supports a wide variety of operations: - [Mathematical operation](http://jinja.pocoo.org/docs/dev/templates/#math) - [Comparisons](http://jinja.pocoo.org/docs/dev/templates/#comparisons) @@ -69,7 +69,9 @@ Home Assistant adds extensions to allow templates to access all of the current s - `is_state('device_tracker.paulus', 'home')` will test if the given entity is specified state. - `is_state_attr('device_tracker.paulus', 'battery', 40)` will test if the given entity is specified state. - `now()` will be rendered as current time in your time zone. + - For specific values: `now().second`, `now().minute`, `now().hour`, `now().day`, `now().month`, `now().year`, `now().weekday()` and `now().isoweekday()` - `utcnow()` will be rendered as UTC time. + - For specific values: `utcnow().second`, `utcnow().minute`, `utcnow().hour`, `utcnow().day`, `utcnow().month`, `utcnow().year`, `utcnow().weekday()` and `utcnow().isoweekday()`. - `as_timestamp()` will convert datetime object or string to UNIX timestamp - `distance()` will measure the distance in meters between home, entity, coordinates. - `closest()` will find the closest entity. @@ -85,10 +87,19 @@ Home Assistant adds extensions to allow templates to access all of the current s [strp-format]: https://docs.python.org/3.4/library/datetime.html#strftime-and-strptime-behavior -

+

If your template uses an `entity_id` that begins with a number (example: `states.device_tracker.2008_gmc`) you must use a bracket syntax to avoid errors caused by rendering the `entity_id` improperly. In the example given, the correct syntax for the device tracker would be: `states.device_tracker['2008_gmc']`

+

+Rendering templates with time is dangerous as updates only trigger templates in sensors based on entity state changes. +

+ +## {% linkable_title Home Assistant template extensions %} + +In templates, besides the normal [state object methods and properties](/topics/state_object/), there are also some extra things available: + +- `states.sensor.temperature.state_with_unit` will print the state of the entity and, if available, the unit. ## {% linkable_title Examples %} diff --git a/source/_docs/configuration/troubleshooting.markdown b/source/_docs/configuration/troubleshooting.markdown index f16cdb7ab85..f1b88fe876e 100644 --- a/source/_docs/configuration/troubleshooting.markdown +++ b/source/_docs/configuration/troubleshooting.markdown @@ -87,3 +87,13 @@ Contents of `sensors.yaml`:

Whenever you report an issue, be aware that we are volunteers who do not have access to every single device in the world nor unlimited time to fix every problem out there.

+ +### {% linkable_title Entity names %} + +The only characters valid in entity names are: + +* Lowercase letters +* Numbers +* Underscores + +If you create an entity with other characters then Home Assistant may not generate an error for that entity. However you will find that attempts to use that entity will generate errors (or possibly fail silently). diff --git a/source/_docs/configuration/yaml.markdown b/source/_docs/configuration/yaml.markdown index 7ce62138fa7..9398ec30bdb 100644 --- a/source/_docs/configuration/yaml.markdown +++ b/source/_docs/configuration/yaml.markdown @@ -23,17 +23,22 @@ notify: name: pushbullet ``` -- A **component** provides the core logic for some functionality (like `notify` provides sending notifications). +- A **component** provides the core logic for some functionality (like `notify` provides sending notifications). - A **platform** makes the connection to a specific software or hardware platform (like `pushbullet` works with the service from pushbullet.com). -The basics of YAML syntax are block collections and mappings containing key-value pairs. Each item in a collection starts with a `-` while mappings have the format `key: value`. If you specify duplicate keys, the last value for a key is used. +The basics of YAML syntax are block collections and mappings containing key-value pairs. Each item in a collection starts with a `-` while mappings have the format `key: value`. If you specify duplicate keys, the last value for a key is used. This is somewhat similar to a Hashtable or more specifically a dictionary in Python. These can be nested as well. Note that indentation is an important part of specifying relationships using YAML. Things that are indented are nested "inside" things that are one level higher. So in the above example, `platform: pushbullet` is a property of (nested inside) the `notify` component. -Getting the right indentation can be tricky if you're not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. Convention is to use 2 spaces for each level of indentation. -You can use [YAMLLint](http://www.yamllint.com/) to check if your YAML-syntax is correct before loading it into Home Assistant which will save you some time. -*Please pay attention on not putting in private data, as it is a 3rd-party website not maintained by Home Assistant.* -Text following a **#** are comments and are ignored by the system. +Getting the right indentation can be tricky if you're not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. Convention is to use 2 spaces for each level of indentation. + +You can use the online service [YAMLLint](http://www.yamllint.com/) to check if your YAML syntax is correct before loading it into Home Assistant which will save you some time. If you do so, be aware that this is a third-party service and is not maintained by the Home Assistant community. + +

+Please pay attention on not storing private data (passwords, API keys, etc.) directly in your `configuration.yaml` file. Private data can be stored in a [separate file](/docs/configuration/secrets/) or in [environmental variables](/docs/configuration/yaml/#using-environment-variables), which circumvents this problem of security. +

+ +Text following a `#` are comments and are ignored by the system. The next example shows an [input_select](/components/input_select) component that uses a block collection for the options values. The other properties (like name) are specified using mappings. Note that the second line just has `threat:` with no value on the same line. Here threat is the name of the input_select and the values for it are everything nested below it. @@ -51,7 +56,7 @@ input_select: initial: 0 ``` -The following example shows nesting a collection of mappings in a mapping. In Home Assistant, this would create two sensors that each use the MQTT platform but have different values for their `state_topic` (one of the properties used for MQTT sensors). +The following example shows nesting a collection of mappings in a mapping. In Home Assistant, this would create two sensors that each use the MQTT platform but have different values for their `state_topic` (one of the properties used for MQTT sensors). ```yaml sensor: @@ -61,3 +66,30 @@ sensor: state_topic: sensor2/topic ``` +### {% linkable_title Using Environment Variables %} + +You can include values from your system's environment variables with `!env_var`. + +```yaml +http: + api_password: !env_var PASSWORD +``` + +#### Default Value + +If an environment variable is not set, you can fallback to a default value. + +```yaml +http: + api_password: !env_var PASSWORD default_password +``` + +### {% linkable_title Including Separate Files %} + +To improve readability, you can source out certain domains from your main configuration file with the `!include`-syntax. + +```yaml +lights: !include lights.yaml +``` + +More information about this feature can also be found at [splitting configuration](/docs/configuration/splitting_configuration/). diff --git a/source/_docs/ecosystem/apache.markdown b/source/_docs/ecosystem/apache.markdown index 9e5806fe59d..ae0c1925114 100644 --- a/source/_docs/ecosystem/apache.markdown +++ b/source/_docs/ecosystem/apache.markdown @@ -14,7 +14,7 @@ This example demonstrates how you can configure Apache to act as a proxy for Hom This is useful if you want to have: - * a subdomain redirecting to your home assistant instance + * a subdomain redirecting to your Home Assistant instance * several subdomain for several instance * HTTPS redirection @@ -32,13 +32,19 @@ To be able to access to your Home Assistant instance by using https://home.examp ```text - ProxyPreserveHost On - ProxyRequests Off ServerName home.example.org - ProxyPass /api/websocket ws://localhost:8123/api/websocket - ProxyPassReverse /api/websocket ws://localhost:8123/api/websocket + ProxyPreserveHost On + ProxyRequests off ProxyPass / http://localhost:8123/ ProxyPassReverse / http://localhost:8123/ + ProxyPass /api/websocket ws://localhost:8123/api/websocket + ProxyPassReverse /api/websocket ws://localhost:8123/api/websocket + + RewriteEngine on + RewriteCond %{HTTP:Upgrade} =websocket [NC] + RewriteRule /(.*) ws://localhost:8123/$1 [P,L] + RewriteCond %{HTTP:Upgrade} !=websocket [NC] + RewriteRule /(.*) http://localhost:8123/$1 [P,L] ``` @@ -54,7 +60,7 @@ If you don't want HTTPS, you can change `` to ` -In case you are getting occasional HTTP 504 error messages ("Gateway Timeout") when accessing the Web UI through your proxy, try adding disablereuse=on to both ProxyPass directives: +In case you are getting occasional HTTP 504 error messages ("Gateway Timeout") or HTTP 502 messages ("Bad Gateway") when accessing the Web UI through your proxy, try adding disablereuse=on to both ProxyPass directives:

```text @@ -73,8 +79,8 @@ You already have Home Assistant running on http://localhost:8123 and available a You want another instance available at https://countryside.example.org You can either : - * Create a new user, `bob`, to hold the configuration file in `/home/bob/.homeassistant/configuration.yaml` and run home assistant as this new user - * Create another configuration directory in `/home/alice/.homeassistan2/configuration.yaml` and run home assistant using `hass --config /home/alice/.homeassistant2/` + * Create a new user, `bob`, to hold the configuration file in `/home/bob/.homeassistant/configuration.yaml` and run Home Assistant as this new user + * Create another configuration directory in `/home/alice/.homeassistan2/configuration.yaml` and run Home Assistant using `hass --config /home/alice/.homeassistant2/` In both solution, change port number used by modifying `configuration.yaml` diff --git a/source/_docs/ecosystem/appdaemon.markdown b/source/_docs/ecosystem/appdaemon.markdown old mode 100644 new mode 100755 index 43094211190..e2a8d23d68f --- a/source/_docs/ecosystem/appdaemon.markdown +++ b/source/_docs/ecosystem/appdaemon.markdown @@ -11,3 +11,100 @@ redirect_from: /ecosystem/appdaemon/ --- AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant. + +# Another Take on Automation + +AppDaemon is not meant to replace Home Assistant Automations and Scripts, rather complement them. For a lot of things, automations work well and can be very succinct. However, there is a class of more complex automations for which they become harder to use, and appdeamon then comes into its own. It brings quite a few things to the table: + +- New paradigm - Some problems require a procedural and/or iterative approach, and `AppDaemon` Apps are a much more natural fit for this. Recent enhancements to Home Assistant scripts and templates have made huge strides, but for the most complex scenarios, Apps can do things that automations can't. +- Ease of use - AppDaemon's API is full of helper functions that make programming as easy and natural as possible. The functions and their operation are as "Pythonic" as possible; experienced Python programmers should feel right at home. +- Reuse - write a piece of code once and instantiate it as an App as many times as you need with different parameters; e.g., a motion light program that you can use in five different places around your home. The code stays the same, you just dynamically add new instances of it in the config file. +- Dynamic - AppDaemon has been designed from the start to enable the user to make changes without requiring a restart of Home Assistant, thanks to its loose coupling. However, it is better than that - the user can make changes to code and AppDaemon will automatically reload the code, figure out which Apps were using it, and restart them to use the new code without the need to restart `AppDaemon` itself. It is also possible to change parameters for an individual or multiple Apps and have them picked up dynamically. For a final trick, removing or adding Apps is also picked up dynamically. Testing cycles become a lot more efficient as a result. +- Complex logic - Python's If/Else constructs are clearer and easier to code for arbitrarily complex nested logic. +- Durable variables and state - Variables can be kept between events to keep track of things like the number of times a motion sensor has been activated, or how long it has been since a door opened. +- All the power of Python - use any of Python's libraries, create your own modules, share variables, refactor and re-use code, create a single App to do everything, or multiple Apps for individual tasks - nothing is off limits! + +It is in fact a testament to Home Assistant's open nature that a component like `AppDaemon` can be integrated so neatly and closely that it acts in all ways like an extension of the system, not a second class citizen. Part of the strength of Home Assistant's underlying design is that it makes no assumptions whatsoever about what it is controlling, reacting to, or reporting state on. This is made achievable in part by the great flexibility of Python as a programming environment for Home Assistant, and carrying that forward has enabled me to use the same philosophy for `AppDaemon` - it took surprisingly little code to be able to respond to basic events and call services in a completely open ended manner. The bulk of the work after that was adding additional functions to make things that were already possible easier. + +# How it Works + +The best way to show what AppDaemon does is through a few simple examples. + +## Sunrise/Sunset Lighting + +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 + +class OutsideLights(appapi.AppDaemon): + + def initialize(self): + self.run_at_sunrise(self.sunrise_cb) + self.run_at_sunset(self.sunset_cb) + + def sunrise_cb(self, kwargs): + self.turn_on(self.args["off_scene"]) + + def sunset_cb(self, kwargs): + self.turn_on(self.args["on_scene"]) + +``` + +This is also fairly easy to achieve with Home Assistant automations, but we are just getting started. + +## Motion Light + +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 homeassistant.appapi as appapi + +class FlashyMotionLights(appapi.AppDaemon): + + def initialize(self): + self.listen_state(self.motion, "binary_sensor.drive", new = "on") + + def motion(self, entity, attribute, old, new, kwargs): + if self.sun_down(): + self.turn_on("light.drive") + self.run_in(self.light_off, 60) + + def light_off(self, kwargs): + self.turn_off("light.drive") +``` + +This is starting to get a little more complex in Home Assistant automations, requiring an automation rule and two separate scripts. + +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 bales out after ten iterations. + +```python +import homeassistant.appapi as appapi + +class MotionLights(appapi.AppDaemon): + + def initialize(self): + self.listen_state(self.motion, "binary_sensor.drive", new = "on") + + def motion(self, entity, attribute, old, new, kwargs): + if self.self.sun_down(): + self.turn_on("light.drive") + self.run_in(self.light_off, 60) + self.flashcount = 0 + self.run_in(self.flash_warning, 1) + + def light_off(self, kwargs): + self.turn_off("light.drive") + + def flash_warning(self, kwargs): + self.toggle("light.living_room") + self.flashcount += 1 + if self.flashcount < 10: + self.run_in(self.flash_warning, 1) +``` + +Of course, if I wanted to make this App or its predecessor reusable, I would have provide parameters for the sensor, the light to activate on motion, the warning light, and even the number of flashes and delay between flashes. + +In addition, Apps can write to `AppDaemon`'s log files, and there is a system of constraints that allows you to control when and under what circumstances Apps and callbacks are active to keep the logic clean and simple. + +For full installation instructions, see the [AppDaemon Project Documentation pages](http://appdaemon.readthedocs.io/en/latest/). diff --git a/source/_docs/ecosystem/appdaemon/api.markdown b/source/_docs/ecosystem/appdaemon/api.markdown index 5ebe762f1be..1bc4daacb34 100755 --- a/source/_docs/ecosystem/appdaemon/api.markdown +++ b/source/_docs/ecosystem/appdaemon/api.markdown @@ -495,7 +495,7 @@ Note: `old` and `new` can be used singly or together. ##### {% linkable_title duration = (optional) %} -If duration is supplied as a parameter, the callback will not fire unless the state listened for is maintained for that number of seconds. This makes the most sense if a specific attribute is specified (or the default os `state` is used), an in conjunction with the `old` or `new` parameters, or both. When the callback is called, it is supplied with the values of `entity`, `attr`, `old` and `new` that were current at the time the actual event occured, since the assumption is that none of them have changed in the intervening period. +If duration is supplied as a parameter, the callback will not fire unless the state listened for is maintained for that number of seconds. This makes the most sense if a specific attribute is specified (or the default os `state` is used), an in conjunction with the `old` or `new` parameters, or both. When the callback is called, it is supplied with the values of `entity`, `attr`, `old` and `new` that were current at the time the actual event occurred, since the assumption is that none of them have changed in the intervening period. ```python def my_callback(self, **kwargs): @@ -643,7 +643,7 @@ Delay, in seconds before the callback is invoked. ##### {% linkable_title \*\*kwargs %} -Arbitary keyword parameters to be provided to the callback function when it is invoked. +Arbitrary keyword parameters to be provided to the callback function when it is invoked. #### {% linkable_title Examples %} @@ -677,7 +677,7 @@ A Python `time` object that specifies when the callback will occur. If the time ##### {% linkable_title \*\*kwargs %} -Arbitary keyword parameters to be provided to the callback function when it is invoked. +Arbitrary keyword parameters to be provided to the callback function when it is invoked. #### {% linkable_title Examples %} @@ -715,7 +715,7 @@ A Python `datetime` object that specifies when the callback will occur. ##### {% linkable_title \*\*kwargs %} -Arbitary keyword parameters to be provided to the callback function when it is invoked. +Arbitrary keyword parameters to be provided to the callback function when it is invoked. #### {% linkable_title Examples %} @@ -754,7 +754,7 @@ A Python `time` object that specifies when the callback will occur. If the time ##### {% linkable_title \*\*kwargs %} -Arbitary keyword parameters to be provided to the callback function when it is invoked. +Arbitrary keyword parameters to be provided to the callback function when it is invoked. #### {% linkable_title Examples %} @@ -792,7 +792,7 @@ A Python `time` object that specifies when the callback will occur, the hour com ##### {% linkable_title \*\*kwargs %} -Arbitary keyword parameters to be provided to the callback function when it is invoked. +Arbitrary keyword parameters to be provided to the callback function when it is invoked. #### {% linkable_title Examples %} @@ -829,7 +829,7 @@ A Python `time` object that specifies when the callback will occur, the hour and ##### {% linkable_title \*\*kwargs %} -Arbitary keyword parameters to be provided to the callback function when it is invoked. +Arbitrary keyword parameters to be provided to the callback function when it is invoked. #### {% linkable_title Examples %} @@ -871,7 +871,7 @@ After the initial callback has occurred, another will occur every `repeat` secon ##### {% linkable_title \*\*kwargs %} -Arbitary keyword parameters to be provided to the callback function when it is invoked. +Arbitrary keyword parameters to be provided to the callback function when it is invoked. #### {% linkable_title Examples %} @@ -944,7 +944,7 @@ All of the scheduler calls above support 2 additional optional arguments, `rando - `random_start` - start of range of the random time - `random_end` - end of range of the random time -`random_start` must always be numerically lower than `random_end`, they can be negative to denote a random offset before and event, or positive to denote a random offset after an event. The event would be a an absolute or relative time or sunrise/sunset depending on whcih scheduler call you use and these values affect the base time by the spcified amount. If not specified, they will default to `0`. +`random_start` must always be numerically lower than `random_end`, they can be negative to denote a random offset before and event, or positive to denote a random offset after an event. The event would be a an absolute or relative time or sunrise/sunset depending on which scheduler call you use and these values affect the base time by the spcified amount. If not specified, they will default to `0`. For example: @@ -987,7 +987,7 @@ The time in seconds that the callback should be delayed after sunrise. A negativ ##### {% linkable_title \*\*kwargs %} -Arbitary keyword parameters to be provided to the callback function when it is invoked. +Arbitrary keyword parameters to be provided to the callback function when it is invoked. #### {% linkable_title Examples %} @@ -1030,7 +1030,7 @@ The time in seconds that the callback should be delayed after sunrise. A negativ ##### {% linkable_title \*\*kwargs %} -Arbitary keyword parameters to be provided to the callback function when it is invoked. +Arbitrary keyword parameters to be provided to the callback function when it is invoked. #### {% linkable_title Examples %} @@ -1257,7 +1257,7 @@ self.toggle("light.office_1", color_name = "green") ### {% linkable_title select_value() %} -This is a convenience function for the `input_slider.select_value` function. It is able to set the value of an input_slider in Home Assistant. +This is a convenience function for the `input_number.select_value` function. It is able to set the value of an input_number in Home Assistant. #### {% linkable_title Synopsis %} @@ -1273,16 +1273,16 @@ None ##### {% linkable_title entity_id %} -Fully qualified entity_id of the input_slider to be changed, e.g. `input_slider.alarm_hour`. +Fully qualified entity_id of the input_number to be changed, e.g. `input_number.alarm_hour`. ##### {% linkable_title value %} -The new value to set the input slider to. +The new value to set the input number to. #### {% linkable_title Examples %} ```python -self.select_value("input_slider.alarm_hour", 6) +self.select_value("input_number.alarm_hour", 6) ``` ### {% linkable_title select_option() %} @@ -1307,7 +1307,7 @@ Fully qualified entity_id of the input_select to be changed, e.g. `input_select. ##### {% linkable_title value %} -The new value to set the input slider to. +The new value to set the input number to. #### {% linkable_title Examples %} @@ -1552,7 +1552,7 @@ The custom event `MODE_CHANGE` would be subscribed to with: self.listen_event(self.mode_event, "MODE_CHANGE") ``` -Home Assistant can send these events in a variety of other places - within automations, and also directly from Alexa intents. Home Assistant can also listen for custom events with it's automation component. This can be used to signal from AppDaemon code back to home assistant. Here is a sample automation: +Home Assistant can send these events in a variety of other places - within automations, and also directly from Alexa intents. Home Assistant can also listen for custom events with it's automation component. This can be used to signal from AppDaemon code back to Home Assistant. Here is a sample automation: ```yaml automation: diff --git a/source/_docs/ecosystem/appdaemon/configuration.markdown b/source/_docs/ecosystem/appdaemon/configuration.markdown index ee497f2d4dd..1dca0e72bbd 100644 --- a/source/_docs/ecosystem/appdaemon/configuration.markdown +++ b/source/_docs/ecosystem/appdaemon/configuration.markdown @@ -31,13 +31,13 @@ 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_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 resembelance 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 +- `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). diff --git a/source/_docs/ecosystem/appdaemon/installation.markdown b/source/_docs/ecosystem/appdaemon/installation.markdown index cd6d1cf4cd9..46acc734e85 100644 --- a/source/_docs/ecosystem/appdaemon/installation.markdown +++ b/source/_docs/ecosystem/appdaemon/installation.markdown @@ -12,34 +12,4 @@ redirect_from: /ecosystem/appdaemon/installation/ Installation is either by `pip3` or Docker. -## {% linkable_title Clone the Repository %} - -For either method you will need to clone the **AppDaemon** repository to the current local directory on your machine. - -``` bash -$ git clone https://github.com/acockburn/appdaemon.git -``` - -Change your working directory to the repository root. Moving forward, we will be working from this directory. - -``` bash -$ cd appdaemon -``` - -## {% linkable_title Install using Docker %} - -To build the Docker image run the following: - -``` bash -$ docker build -t appdaemon . -``` - -(Note the period at the end of the above command) - -## {% linkable_title Install using `pip3` %} - -Before running `AppDaemon` you will need to install the package: - -```bash -$ sudo pip3 install . -``` +Follow [these instructions](https://github.com/home-assistant/appdaemon/blob/dev/README.rst) for full details. diff --git a/source/_docs/ecosystem/appdaemon/tutorial.markdown b/source/_docs/ecosystem/appdaemon/tutorial.markdown index 18f25c5b1b6..6eee88e98b0 100755 --- a/source/_docs/ecosystem/appdaemon/tutorial.markdown +++ b/source/_docs/ecosystem/appdaemon/tutorial.markdown @@ -35,7 +35,7 @@ So why `AppDaemon`? AppDaemon is not meant to replace Home Assistant Automations - Durable variables and state - variables can be kept between events to keep track of things like the number of times a motion sensor has been activated, or how long it has been since a door opened - All the power of Python - use any of Python's libraries, create your own modules, share variables, refactor and re-use code, create a single app to do everything, or multiple apps for individual tasks - nothing is off limits! -It is in fact a testament to Home Assistant's open nature that a component like `AppDaemon` can be integrated so neatly and closely that it acts in all ways like an extension of the system, not a second class citizen. Part of the strength of Home Assistant's underlying design is that it makes no assumptions whatever about what it is controlling or reacting to, or reporting state on. This is made achievable in part by the great flexibility of Python as a programming environment for Home Assistant, and carrying that forward has enabled me to use the same philosophy for `AppDaemon` - it took surprisingly little code to be able to respond to basic events and call services in a completely open ended manner - the bulk of the work after that was adding additonal functions to make things that were already possible easier. +It is in fact a testament to Home Assistant's open nature that a component like `AppDaemon` can be integrated so neatly and closely that it acts in all ways like an extension of the system, not a second class citizen. Part of the strength of Home Assistant's underlying design is that it makes no assumptions whatever about what it is controlling or reacting to, or reporting state on. This is made achievable in part by the great flexibility of Python as a programming environment for Home Assistant, and carrying that forward has enabled me to use the same philosophy for `AppDaemon` - it took surprisingly little code to be able to respond to basic events and call services in a completely open ended manner - the bulk of the work after that was adding additional functions to make things that were already possible easier. ## {% linkable_title How it Works %} @@ -69,7 +69,7 @@ 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 changesd where the motion detector comes on by adding an additional parameter to the callback registration - `new = "on"`. When the motion is detected, the callack 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 homeassistant.appapi as appapi +import appdaemon.appapi as appapi class FlashyMotionLights(appapi.AppDaemon): diff --git a/source/_docs/ecosystem/appdaemon/updating.markdown b/source/_docs/ecosystem/appdaemon/updating.markdown index 8b39e9ccf8b..132b4dc5d2e 100644 --- a/source/_docs/ecosystem/appdaemon/updating.markdown +++ b/source/_docs/ecosystem/appdaemon/updating.markdown @@ -13,14 +13,7 @@ redirect_from: /ecosystem/appdaemon/updating/ To update AppDaemon after I have released new code, just run the following command to update your copy: ```bash -$ git pull origin +$ sudo pip3 install --upgrade appdaemon ``` -If you are using pip3 for the install do this: - -```bash -$ sudo pip3 uninstall appdaemon -$ sudo pip3 install . -``` - -If you are using docker, rerun the steps to create a new docker image. +If you are using docker, rerun the steps to grab the latestdocker image. diff --git a/source/_docs/ecosystem/appdaemon/windows.markdown b/source/_docs/ecosystem/appdaemon/windows.markdown index a903f37f424..4d2e7daeaa8 100755 --- a/source/_docs/ecosystem/appdaemon/windows.markdown +++ b/source/_docs/ecosystem/appdaemon/windows.markdown @@ -19,4 +19,4 @@ AppDaemon can be installed exactly as per the instructions for every other versi ## {% linkable_title Windows Under the Linux Subsystem %} -Windows 10 now supports a full Linux bash environment that is capable of running Python. This is essentially an Ubuntu distribution and works extremely well. It is possible to run AppDaemon in exactly the same way as for Linux distributions, and none of the above Windows Caveats apply to this version. This is the reccomended way to run AppDaemon in a Windows 10 and later environment. +Windows 10 now supports a full Linux bash environment that is capable of running Python. This is essentially an Ubuntu distribution and works extremely well. It is possible to run AppDaemon in exactly the same way as for Linux distributions, and none of the above Windows Caveats apply to this version. This is the recommended way to run AppDaemon in a Windows 10 and later environment. diff --git a/source/_docs/ecosystem/backup/backup_dropbox.markdown b/source/_docs/ecosystem/backup/backup_dropbox.markdown index 750360f09a1..e0d73368990 100644 --- a/source/_docs/ecosystem/backup/backup_dropbox.markdown +++ b/source/_docs/ecosystem/backup/backup_dropbox.markdown @@ -18,7 +18,7 @@ You need two parts in order to get it working correctly. Become the user that run Home Assistant. -- A seperate Python script that syncs a specific folder. Which can be found [here](https://gist.github.com/riemers/31e3350041fd3e47e489cbc811209d6f) +- A separate Python script that syncs a specific folder. Which can be found [here](https://gist.github.com/riemers/31e3350041fd3e47e489cbc811209d6f) - The excellent [dropbox uploader script](https://github.com/andreafabrizi/Dropbox-Uploader/blob/master/dropbox_uploader.sh) you can grab the .sh file only. Download those files to a folder of your liking, after that edit both files and change paths accordingly. @@ -46,7 +46,7 @@ Do note, this will **backup your passwords to Dropbox**. ### {% linkable_title Automate the backup %} -So you just made a full backup, next time you want it to be done automaticly. Since your database can change and so do other files over time. +So you just made a full backup, next time you want it to be done automatically. Since your database can change and so do other files over time. Add it to your crontab, edit the **path/to** part. ```bash diff --git a/source/_docs/ecosystem/backup/backup_github.markdown b/source/_docs/ecosystem/backup/backup_github.markdown index b917fe32b97..8c8c9ad7b35 100644 --- a/source/_docs/ecosystem/backup/backup_github.markdown +++ b/source/_docs/ecosystem/backup/backup_github.markdown @@ -30,7 +30,7 @@ Some best practices to consider before putting your configuration on GitHub: - Extensive use of [secrets.yaml](https://home-assistant.io/topics/secrets/) to hide sensitive information like usernames, passwords, device information, and location - Exclusion of some files, including `secrets.yaml` and device-specific information using a [`.gitignore`](https://git-scm.com/docs/gitignore) file -- Regularly commiting your configuration to GitHub to make sure that your backup is up to date +- Regularly committing your configuration to GitHub to make sure that your backup is up to date - Use a README.md to document your configuration and include screenshots of your Home Assistant GUI ### {% linkable_title Step 1: Installing and Initializing Git %} @@ -50,37 +50,17 @@ Before creating and pushing your Home Assistant configuration to GitHub, please Creating a `.gitignore` file in your repository will tell git which files NOT to push to the GitHub server. This should be used to prevent publishing sensitive files to the public. It should contain a list of filenames and pattern matches. This list should include at least your `secrets.yaml` file, device configuration files, and the Home Assistant database/directory structure. The `.gitignore` file should be placed in your Home Assistant directory. -Here is a sane example, but yours should be based on the files in your structure: +Here is an example that will include your `.gitignore` file, a `scenes` directory, and all .yaml files except for `secrets.yaml` and `known_devices.yaml`. All other files will be excluded. `.gitignore` ```bash -*.pid -*.xml -*.csr -*.crt -*.key -www -OZW_Log.txt -home-assistant.log -home-assistant_v2.db -*.db-journal -lib -deps -tts +* +!*.yaml +!scenes +!.gitignore secrets.yaml known_devices.yaml -*.conf -plex.conf -phue.conf -harmony_media_room.conf -pyozw.sqlite -.* -!/.gitignore -!/.travis.yml -html5_push_registrations.conf -ip_bans.yaml -/icloud/* ``` More information on the layout of the file can be found in the [.gitignore manual](https://git-scm.com/docs/gitignore). @@ -147,7 +127,7 @@ git push origin master exit ``` -Every time you run this script, you will be prompted for a comment to describe the change(s) that you are commiting. This comment will be displayed beside each changed file on GitHub and will be stored after each commit. You will also be asked to enter your GitHub username and password (or ssh key passphrase if you use [GitHub with ssh](https://help.github.com/categories/ssh/)). +Every time you run this script, you will be prompted for a comment to describe the change(s) that you are committing. This comment will be displayed beside each changed file on GitHub and will be stored after each commit. You will also be asked to enter your GitHub username and password (or ssh key passphrase if you use [GitHub with ssh](https://help.github.com/categories/ssh/)). ### {% linkable_title Step 7: Configuration file testing %} @@ -161,7 +141,7 @@ Example .travis.yml ```yaml language: python python: - - "3.4" + - "3.5" before_install: - mv travis_secrets.yaml secrets.yaml install: @@ -182,7 +162,7 @@ home_elevation: 0 ### {% linkable_title Extra commands %} -You can enter these commands to get a list of the files in your local git repository and a status of files that have changed but not commited yet: +You can enter these commands to get a list of the files in your local git repository and a status of files that have changed but not committed yet: ```bash diff --git a/source/_docs/ecosystem/backup/backup_usb.markdown b/source/_docs/ecosystem/backup/backup_usb.markdown index 047bc0c70b9..279c76c3bda 100644 --- a/source/_docs/ecosystem/backup/backup_usb.markdown +++ b/source/_docs/ecosystem/backup/backup_usb.markdown @@ -101,7 +101,7 @@ Change below path to where you placed the `usb_backup.sh` and run the following ### {% linkable_title Auto mount %} -This does not automaticly mount your USB drive at boot. You need to do that manually or add a line to your `/etc/fstab` file. +This does not automatically mount your USB drive at boot. You need to do that manually or add a line to your `/etc/fstab` file. If your drive is on `/dev/sda1`, you could add a entry to your `/etc/fstab` like so: diff --git a/source/_docs/ecosystem/caddy.markdown b/source/_docs/ecosystem/caddy.markdown new file mode 100644 index 00000000000..22879119d91 --- /dev/null +++ b/source/_docs/ecosystem/caddy.markdown @@ -0,0 +1,21 @@ +--- +layout: page +title: "Caddy Server reverse proxy" +description: "Configure Caddy Server as a reverse proxy to Home Assistant." +date: 2017-08-22 22:20 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Configure [Caddy Server](https://caddyserver.com/) for use as a reverse proxy to Home Assistant. + +``` +hass.example.org { + proxy / localhost:8123 { + websocket + transparent + } +} +``` diff --git a/source/_docs/ecosystem/certificates.markdown b/source/_docs/ecosystem/certificates.markdown new file mode 100644 index 00000000000..b678e77746d --- /dev/null +++ b/source/_docs/ecosystem/certificates.markdown @@ -0,0 +1,14 @@ +--- +layout: page +title: "Certificates" +description: "Protect your communication with Home Assistant." +release_date: 2016-11-13 15:00:00 +sidebar: true +comments: false +sharing: true +footer: true +--- + +If you plan to expose your Home Assistant to the internet or want an extra layer of protection in your local network, consider to use SSL/TLS. This way you can protect your communication. Especially sensitive data like usernames and passwords are encrypted between the endpoints. + +Setting up usually requires creating the certificate and configure the [`http`](/components/http/) component. diff --git a/source/_docs/ecosystem/certificates/lets_encrypt.markdown b/source/_docs/ecosystem/certificates/lets_encrypt.markdown index e1d2e464c41..edc5fe6b2b3 100644 --- a/source/_docs/ecosystem/certificates/lets_encrypt.markdown +++ b/source/_docs/ecosystem/certificates/lets_encrypt.markdown @@ -9,6 +9,10 @@ sharing: true footer: true --- +

+If you are using Hass.io, do not use this guide. Instead, use the [DuckDNS add-on](/addons/duckdns/) to automatically maintain a subdomain including HTTPS certificates via Let's Encrypt. +

+

Before exposing your Home Assistant instance to the outside world it is ESSENTIAL that you have set a password following the advice on the [http](https://home-assistant.io/docs/configuration/basic/) page.

@@ -24,7 +28,7 @@ This guide was added by mf_social on 16/03/2017 and was valid at the time of wri * You are not currently running anything on port 80 on your network (you'd know if you were). * If you are not using Home Assistant on a Debian/Raspian/Hassbian system you will be able to convert any of the terminology I use in to the correct syntax for your system. * You understand that this is a 'guide' covering the general application of these things to the general masses and there are things outside of the scope of it, and it does not cover every eventuality (although I have made some notes where people may stumble). Also, I have used some turns of phrase to make it easier to understand for the novice reader which people of advanced knowledge may say is innacurate. My goal here is to get you through this guide with a satisfactory outcome and have a decent understanding of what you are doing and why, not to teach you advanced internet communication protocols. - * Each step presumes you have fully completed the previous step succesfully, so if you did an earlier step following a different guide, please ensure that you have not missed anything out that may affect the step you have jumped to, and ensure that you adapt any commands to take in to account different file placements from other guides. + * Each step presumes you have fully completed the previous step successfully, so if you did an earlier step following a different guide, please ensure that you have not missed anything out that may affect the step you have jumped to, and ensure that you adapt any commands to take in to account different file placements from other guides. Steps we will take: @@ -33,7 +37,7 @@ Steps we will take: - 2 - Set up port forwarding without TLS/SSL and test connection - 3 - Set up a DuckDNS account - 4 - Obtain a TLS/SSL certificate from Let's Encrypt - - 5 - Check the incoming conection + - 5 - Check the incoming connection - 6 - Clean up port forwards - 7 - Set up a sensor to monitor the expiry date of the certificate - 8 - Set up an automatic renewal of the TLS/SSL certificate @@ -290,7 +294,7 @@ $ sudo chmod 755 /etc/letsencrypt/archive/ Did all of that go without a hitch? Wahoo! Your Let's Encrypt certificate is now ready to be used with Home Assistant. Move to step 5 to put it all together -### {% linkable_title 5 - Check the incoming conection %} +### {% linkable_title 5 - Check the incoming connection %}

Following on from Step 4 your SSH will still be in the certbot folder. If you edit your configuration files over SSH you will need to change to your `homeassistant` folder: @@ -358,11 +362,11 @@ If you were previously using a webapp on your phone/tablet to access your Home A https://home-assistant.io/docs/frontend/mobile/ ``` -All done? Accessing your Home Assistant from across the world with your DuckDNS URL and a lovely secure logo on your browser? Ace! Now let's clean up our port forwards so that we are only exposing the parts of our network that are absolutely neccesary to the outside world. +All done? Accessing your Home Assistant from across the world with your DuckDNS URL and a lovely secure logo on your browser? Ace! Now let's clean up our port forwards so that we are only exposing the parts of our network that are absolutely necessary to the outside world. ### {% linkable_title 6 - Clean up port forwards %} -In step 2 we created a port forwarding rule called `ha_test`. This opens port 8123 to the world, and is no longer neccessary. +In step 2 we created a port forwarding rule called `ha_test`. This opens port 8123 to the world, and is no longer necessary. Go to your router's configuration pages and delete the `ha_test` rule. @@ -374,8 +378,8 @@ If you have any more for Home Assistant you should delete them now. If you only You are now part of one of two groups: - * If you have BOTH rules you are able to set up auto renewals of you certificates. - * If you only have one, you will have to manually change the rule when you want to update your certificate, and then change it back afterwards. + * If you have BOTH rules you are able to set up auto renewals of your certificates using port 80 and the standard http challenge, as performed above. + * If you only have one, you are still able to set up auto renewals of your certificates, but will have to specify additional options when renewing that will temporarily stop Home Assistant and use port 8123 for certificate renewal. Please remember whether you are a ONE-RULE person or a BOTH-RULE person for step 8! @@ -402,7 +406,7 @@ $ sudo apt-get install ssl-cert-check ```

-In cases where, for whatever reason, apt-get installing is not appropriate for your installation you can fetch the ssl-cert-check script from `http://prefetch.net/code/ssl-cert-check` bearing in mind that you will have to modify the command in the sensor code below to run the script from wherever you put it, modify permission if neccessary and so on. +In cases where, for whatever reason, apt-get installing is not appropriate for your installation you can fetch the ssl-cert-check script from `http://prefetch.net/code/ssl-cert-check` bearing in mind that you will have to modify the command in the sensor code below to run the script from wherever you put it, modify permission if necessary and so on.

To set up a senor add the following to your `configuration.yaml` (remembering to correct the URL for your DuckDNS): @@ -426,56 +430,14 @@ Got your sensor up and running and where you want it? Top drawer! Nearly there, The certbot program we downloaded in step 4 contains a script that will renew your certificate. The script will only obtain a new certificate if the current one has less than 30 days left on it, so running the script more often than is actually needed will not cause any harm. -If you are a ONE-RULE person (from step 6) you cannot 'automatically' renew your certificates because you will need to change your port forwarding rules before the renewal takes place, and change it back again afterwards. +If you are a ONE-RULE person (from step 6), you can automatically renew your certificate with your current port mapping by temporarily stopping Home Assistant and telling certbot to bind port 8123 internally, and using a `tls-sni` challenge so that the Let's Encrypt CA binds port 443 externally. The flags used to specify these additional steps are shown below. -When you are within 30 days of your certificate's expiry date (you can use the sensor reading from step 7 to tell you this) you will need to complete the following steps: +If you are a TWO-RULE person (from step 6), you can automatically renew your certificate using a `http-01` challenge and port 80. - * Go to your router's configuration pages and edit your port forwarding rule to - -```text -Service name - ha_ssl -Port Range - 443 -Local IP - YOUR-HA-IP -Local Port - 443 -Protocol - Both -``` - - * Save the rule - * SSH in to your device running HA. - * Change to your HA user (command similar to): - -```bash -$ su - s /bin/bash hass -``` - - * Change to your certbot folder - -```bash -$ cd ~/certbot/ -``` - - * Run the renewal command - -```bash -$ ./certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01 -``` - - * Once succesfully completed, change your port forwarding rule back to - -```text -Service name - ha_ssl -Port Range - 443 -Local IP - YOUR-HA-IP -Local Port - 8123 -Protocol - Both -``` - - * Save the rule - -If you are a BOTH-RULE person, you have a number of options at this point. +There are a number of options for automating the renewal process: #### Option 1: -Your certificate can be renewed as a 'cron job' - cron jobs are background tasks run by the computer at specified intervals (and are totally independant of Home Assistant). Defining cron is outside of the scope of this guide but you will have had dealings with `crontab` when setting up DuckDNS in step 3 +Your certificate can be renewed as a 'cron job' - cron jobs are background tasks run by the computer at specified intervals (and are totally independent of Home Assistant). Defining cron is outside of the scope of this guide but you will have had dealings with `crontab` when setting up DuckDNS in step 3 To set a cron job to run the script at regular intervals: @@ -483,7 +445,7 @@ To set a cron job to run the script at regular intervals: * Change to your Home Assistant user (command similar to): ```bash -$ su - s /bin/bash hass +$ sudo su -s /bin/bash hass ``` * Open the crontab: @@ -492,18 +454,29 @@ $ su - s /bin/bash hass $ crontab -e ``` - * Scroll to the bottom of the file and paste in the following line + * If you are a TWO-RULE Person: Scroll to the bottom of the file and paste in the following line ```text -30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log +30 2 * * 1 ~/certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01 ``` + +* If you are a ONE-RULE Person: Scroll to the bottom of the file and paste in the following line + +```text +30 2 * * 1 ~/certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges tls-sni-01 --tls-sni-01-port 8123 --pre-hook "sudo systemctl stop home-assistant@homeassistant.service" --post-hook "sudo systemctl start home-assistant@homeassistant.service" +``` +* Let's take a moment to look at the differences here: + 1. This method uses a `tls-sni` challenge, so the Let's Encrypt CA will attempt to bind port 443 externally (which you have forwarded) + 2. `--tls-sni-01-port 8123` tells certbot to bind port 8123 internally, which matches with the port forwarding rules that are already in place. + 3. We define pre-hooks and post-hooks that stop our Home Assistant service before certbot runs, freeing port 8123 for certificate renewal, and restart Home Assistant after renewal is complete. + * Save the file and exit #### Option 2: You can set an automation in Home Assistant to run the certbot renewal script. -Add the following sections to your configuration.yaml +Add the following sections to your configuration.yaml if you are a TWO-RULE person ```yaml shell_command: @@ -518,6 +491,7 @@ automation: action: service: shell_command.renew_ssl ``` +If you are a ONE-RULE person, replace the `certbot-auto` command above with `~/certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges tls-sni-01 --tls-sni-01-port 8123 --pre-hook "sudo systemctl stop home-assistant@homeassistant.service" --post-hook "sudo systemctl start home-assistant@homeassistant.service"` #### Option 3: You can manually update the certificate when your certificate is less than 30 days to expiry. @@ -542,6 +516,8 @@ $ cd ~/certbot/ ```bash $ ./certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01 ``` + +* If you are a ONE-RULE person, replace the `certbot-auto` command above with `~/certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges tls-sni-01 --tls-sni-01-port 8123 --pre-hook "sudo systemctl stop home-assistant@homeassistant.service" --post-hook "sudo systemctl start home-assistant@homeassistant.service"` So, now were all set up. We have our secured, remotely accesible HA instance and we're on track for keeping our certificates up to date. But what if something goes wrong? What if the automation didn't fire? What if the cron job forgot to run? What if the dog ate my homework? Read on to set up an alert so you can be notified in plenty of time if you need to step in and sort out any failures. diff --git a/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown b/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown index 9eb1035eab6..53736e06937 100644 --- a/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown +++ b/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown @@ -10,25 +10,39 @@ footer: true redirect_from: /cookbook/tls_self_signed_certificate/ --- -If your Home Assistant instance is only accessible from your local network you can still protect the communication between your browsers and the frontend with SSL/TLS. [Let's encrypt]({{site_root}}/blog/2015/12/13/setup-encryption-using-lets-encrypt/) will only work if you have a DNS entry and remote access is allowed. The solution is to use a self-signed certificate. As you most likely don't have a certification authority (CA) your browser will conplain about the security. If you have a CA then this will not be an issue. +If your Home Assistant instance is only accessible from your local network you can still protect the communication between your browsers and the frontend with SSL/TLS. +[Let's encrypt]({{site_root}}/blog/2015/12/13/setup-encryption-using-lets-encrypt/) will only work if you have a DNS entry and remote access is allowed. +The solution is to use a self-signed certificate. As you most likely don't have a certification authority (CA) your browser will conplain about the security. If you have a CA then this will not be an issue. -To create locally a certificate you need the [OpenSSL](https://www.openssl.org/) command-line tool. +To create a certificate locally, you need the [OpenSSL](https://www.openssl.org/) command-line tool. -Change to your Home Assistant [configuration directory](/getting-started/configuration/) like `~/.homeassistant`. This will make it easier to backup your certificate and the key. Run the command shown below. +Change to your Home Assistant [configuration directory](/getting-started/configuration/) like `~/.homeassistant`. This will make it easier to backup your certificate and the key. Run the command shown below. + +The certificate **must** be `.pem` extension. + +If you are going to use this certificate with the iOS app, you need to ensure you complete **all** fields during the cetificate creation process, then: + +* Send **only** the `certificate.pem` file to the iOS device, using airdrop or other transfer method. +* Open the `.pem` file on the iOS device, follow the prompts to trust and install it. +* If you are using iOS 10.3 or newer then [additional steps](https://support.apple.com/en-us/HT204477) are needed. ```bash -$ openssl req -new -x509 -sha256 -newkey rsa:4096 -nodes -keyout privkey.pem -days 730 -out fullchain.pem +$ openssl req -sha256 -newkey rsa:4096 -nodes -keyout privkey.pem -x509 -days 730 -out certificate.pem ``` -For details about the parameters, please check the OpenSSL documentation. Provide the requested information during the generation process. At the end you will have two files called `privkey.pem` and `fullchain.pem`. The key and the certificate. +For details about the parameters, please check the OpenSSL documentation. Provide the requested information during the generation process. + +At the end you will have two files called `privkey.pem` and `certificate.pem`. The key and the certificate. Update the `http:` entry in your `configuration.yaml` file and let it point to your created files. ```yaml http: api_password: YOUR_SECRET_PASSWORD - ssl_certificate: /home/fab/.homeassistant/fullchain.pem - ssl_key: /home/fab/.homeassistant/privkey.pem + ssl_certificate: /home/your_user/.homeassistant/certificate.pem + ssl_key: /home/your_user/.homeassistant/privkey.pem ``` +A restart of Home Assistant is required for the changes to take effect. + A tutorial "[Working with SSL Certificates, Private Keys and CSRs](https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs)" could give you some insight about special cases. diff --git a/source/_docs/ecosystem/hadashboard.markdown b/source/_docs/ecosystem/hadashboard.markdown old mode 100644 new mode 100755 index 871ec17cda6..c73560401ac --- a/source/_docs/ecosystem/hadashboard.markdown +++ b/source/_docs/ecosystem/hadashboard.markdown @@ -10,12 +10,33 @@ footer: true redirect_from: /ecosystem/hadashboard/ --- -HADashboard is a dashboard for [Home Assistant](https://home-assistant.io/) that is intended to be wall mounted, and is optimized for distance viewing. +HADashboard is a modular, skinnable dashboard for [Home Assistant](https://home-assistant.io/) that is intended to be wall mounted, and is optimized for distance viewing.

- - Sample Dashboard + + Default Theme

-HADashboard was originally created by the excellent work of [FlorianZ](https://github.com/FlorianZ/hadashboard) for use with the SmartThings Home Automation system, with notable contributions from the [SmartThings Community](https://community.smartthings.com/t/home-automation-dashboard/4926). I would also like to acknowledge contributions made by [zipriddy](https://github.com/zpriddy/SmartThings_PyDash). This is my port of hadashboard to Home Assistant. +

+ + Obsidian Theme +

+

+ + Zen Theme +

+ +

+ + Simply Red Theme +

+ +

+ + Glassic Theme +

+ + + +For full installation instructions see the HADashboard section in the [AppDaemon Project Documentation](http://appdaemon.readthedocs.io/en/latest/DASHBOARD_INSTALL.html) diff --git a/source/_docs/ecosystem/hadashboard/dash_config.markdown b/source/_docs/ecosystem/hadashboard/dash_config.markdown deleted file mode 100755 index 1436f3fd981..00000000000 --- a/source/_docs/ecosystem/hadashboard/dash_config.markdown +++ /dev/null @@ -1,275 +0,0 @@ ---- -layout: page -title: "Dashboard Configuration" -description: "Dashboard Configuration" -release_date: 2016-11-13 15:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/hadashboard/dash_config/ ---- - -(All installations) - -Hadashboard is a Dashing application, so make sure to read all the instructions on http://dashing.io to learn how to add widgets to your dashboard, as well as how to create new widgets. - -Make a copy of `dashboards/example.erb` and call it `main.erb`, then edit this file to reference the items you want to display and control and to get the layout that you want. Leave the original `example.erb` intact and unchanged so that you don't run into problems when trying to update using the git commands mentioned later in "Updating the Dashboard". - -The basic anatomy of a widget is this: - -``` html -
  • -
    -
  • -``` - -- **data-row**, **data-col**: The position of the widget in the grid. -- **data-sizex**, **data-sizey**: The size of the widget in terms of grid tile. -- **data-id**: The homeassitant entity id without the entity type (e.g. `light.office` becomes `office`). -- **data-view**: The type of widget to be used (Haswitch, Hadimmer, Hatemp etc.) -- **data-icon**: The icon displayed on the tile. See http://fontawesome.io for an icon cheatsheet. -- **data-title**: The title to be displayed on the tile. -- ***data-bgcolor*** (optional) - the background color of the widget. - -Note that although it is legal in XML terms to split the inner `
    ` like this: - -``` html -
  • -
    -
    -
  • -``` - -This may break `hapush`'s parsing of the file, so keep to the line format first presented. - -Please, refer to the Dashing website for instructions on how to change the grid and tile size, as well as more general instructions about widgets, their properties, and how to create new widgets. - -## {% linkable_title Supported Widgets %} - -At this time I have provided support for the following Home Assistant entity types. - -- switch: Widget type **Haswitch** -- lock: Widget type **Halock** -- devicetracker: Widget type **Hadevicetracker** -- light: Widget type **Hadimmer** -- cover: Widget type **Hacover** -- input_boolean: Widget type **Hainputboolean** -- scene: Widget type **Hascene** - -- **data-ontime** (optional): The amount of time the scene icon lights up when pressed, in milliseconds, default 1000. - -### {% linkable_title script %} - -Widget type ***Hascript*** - -**data-ontime** (optional): The amount of time the scene icon lights up when pressed, in milliseconds, default 1000. - -### {% linkable_title mode %} - -The `Hamode` widget alows you to run a script on activation and to link it with a specified `input_select` so the button will be highlighted for certain values of that input select. The usecase for this is that I maintain an `input_select` as a flag for the state of the house to simplify other automations. I use scripts to switch between the states, and this feature provides feedback as to the current state by lighting up the appropriate mode button. - -A `Hamode` widget using this feature will look like this: - -```html -
  • -
    -
  • -``` - -- **data-changemode**: The value of the `input_select` for which this script button will light up -- **data-input**: The `input_select` entity to use (minus the leading entity type) - -### {% linkable_title input_select (read only) %} -Widget type **Hainputselect** - -### {% linkable_title sensor %} -Widget type **Hasensor** - -Text based output of the value of a particular sensor. - -The Hasensor widget supports an additional paramater `data-unit`. This allows you to set the unit to whatever you want: Centigrade, %, lux or whatever you need for the sensor in question. For a temperature sensor you will need to explicitly include the degree symbol like this: - -```html -data-unit="°F" -``` - -If omitted, no units will be shown. - -### {% linkable_title sensor %} -Widget type **Hameter** - -An alternative to the text based `Hasensor` that works for numeric values only. - -The Hameter widget supports an additional paramater `data-unit`. This allows you to set the unit to whatever you want: Centigrade, %, lux or whatever you need for the sensor in question. For a temperature sensor you will need to explicitly include the degree symbol like this: - -```html -data-unit="°F" -``` - -If omitted, no units will be shown. - -### {% linkable_title binary_sensor %} -Widget type **Habinary** - -An icon-based option for generic binary sensors. Useful for things like door contact sensors. In addition to the standard widget parameters, Habinary supports two additional parameters: - -- **data-iconon**: the icon to display when the sensor state is "on" -- **data-iconoff**: the icon to display when the sensor state if "off" - -If no icons are specified, the widget defaults to a flat gray line for "off" and a green bullseye for "on". - -### {% linkable_title group %} -Widget type **Hagroup**. - -The Hagroup widget uses the homeassistant/turn_on and homeassistant/turn_off API call, so certain functionality will be lost. For example, you will not be able to use control groups of locks or dim lights. - -## {% linkable_title Alarm Control Panel %} - -These widgets allow the user to create a working control panel that can be used to control the Manual Alarm Control Panel component (https://home-assistant.io/components/alarm_control_panel.manual). The example dashboard contains an arrangement similar to this: - -

    - - The Alarm Panel -

    - -Widget type **Haalarmstatus** - -The Haalarmstatus widget displays the current status of the alarm_control_panel entity. It will also display the code as it is being entered by the user. - -The data-id must be the same as the alarm_control_panel entity_id in Home Assistant. - -Widget type **Haalarmdigit** - -The Haalarmdigit widget is used to create the numeric keypad for entering alarm codes. - -`data-digit` holds the numeric value you wish to enter. The special value of "-" creates a 'clear' button which will wipe the code and return the Haalarmstatus widget display back to the current alarm state. - -`data-alarmentity` holds the data-id of the Haalarmstatus widget, so that the status widget can be correctly updated. It is mandatory for a 'clear' type digit and optional for normal numeric buttons. - -Widget type **Haalarmaction** - -The Haalarmaction widget creates the arm/disarm/trigger buttons. Bear in mind that alarm triggering does not require a code, so you may not want to put this button near the other buttons in case it is pressed accidentally. - -data-action must contain one of the following: arm_home/arm_away/trigger/disarm. - -### {% linkable_title weather (requires DarkSky) %} - -Widget type **Haweather**. - -In order to use the weather widget you must configure the [DarkSky component](/components/sensor.darksky/), and ensure that you configure at least the following monitored conditions in your Home Assistant sensor configuration: - -- temperature -- humidity -- precip_probability -- precip_intensity -- wind_speed -- pressure -- wind_bearing -- apparent_temperature -- icon - -The `data-id` of the Haweather widget must be set to `weather` or the widget will not work. - -The Hatemp widget supports an additional paramater `data-unit`. This allows you to set the unit to whatever you want: Centigrade, Fahrenheit or even Kelvin if you prefer. You will need to explicitly include the degree symbol like this: - -```html -data-unit="°F" -``` - -If omitted, no units will be shown. - -### {% linkable_title News %} -Widget type ***News*** (contributed by [KRiS](https://community.home-assistant.io/users/kris/activity)) - -This is an RSS widget that can be used for displaying travel information, news etc. on the dashboard. The RSS feed will update every 60 minutes. To configure this, first it is necessary to add your desired feeds in `homeassistant/lib/ha_conf.rb` in the `$news_feeds` section. By default it comes with 2 sample feeds: - -```ruby -$news_feeds = { - "Traffic" => "http://api.sr.se/api/rss/traffic/2863", - "News" => "http://feeds.bbci.co.uk/news/rss.xml", -} -``` - -You can add as many as you want. The important point is that the key value (e.g. "Traffic" or "News" in the example above is used to tie the feed to your widget in the dashboard file. Here is an example of the Traffic widget that displays the first feed in the list: - -```html -
  • -
    -
  • -``` -The value of thee `data-id` tag must match the key value in the `$news_feeds` configuration. - -- **data-interval** (optional): The time in seconds that each entry in the RSS feed is displayed before the next one is shown, default is 30 seconds. - - -**The follwing widget types have been deprecated in favor of the more flexible `Hasensor` and `Hameter` widgets. They will be removed in a future release.** - -### {% linkable_title sensor (humidity) %} -Widget type **Hahumidity**. - -### {% linkable_title sensor (humidity) %} -Widget type **Hahumiditymeter** (contributed by [Shiv Chanders](https://community.home-assistant.io/users/chanders/activity)) - -This is an alternative to the the text based humidity widget above, it display the humidity as an animated meter from 0 to 100%. - -### {% linkable_title sensor (luminance) %} -Widget type **Halux**. - -### {% linkable_title sensor (temperature) %} -Widget type **Hatemp**. - -The Hatemp widget supports an additional paramater `data-unit`. This allows you to set the unit to whatever you want: Centigrade, Fahrenheit or even Kelvin if you prefer. You will need to explicitly include the degree symbol like this: - -```html -data-unit="°F" -``` -If omitted, no units will be shown. - -## {% linkable_title Customizing CSS styles %} -If you want to customize the styles of your dashboard and widgets, there are two options: - -1. You can edit the application.scss file (and the individual widget .scss files) directly (not recommended; if you pull down updates from the master repository, your changes might conflict/be overwritten) -1. __Create override files (recommended)__ - 1. Create a couple of additional files in the _assets/stylesheets_ directory: `_application_custom.scss` and `_variables_custom.scss`. - 1. Open `application.scss` and go to the bottom of the file. Uncomment the @import line. - 1. Open `_variables.scss` and go to the bottom of the file. Uncomment the @import line. - 1. Write your own SASS styles in `_application_custom.scss` (for general style customization) and `_variables_custom.scss` (for colors). You can customize those files without worrying about your changes getting overwritten if you pull down an update. The most you may have to do, if you update, will be to uncomment the @import lines again from steps 2 and 3. - -__Note: The `_variables.scss` file (and your customizations from `_variables_custom.scss`) get imported into nearly every widget's SCSS file, so it is a best practice to define varaibles for colors in `_variables.scss` or `_variables_custom.scss` and reference those variables in the widget SCSS.__ - -## {% linkable_title Changes and Restarting %} - -When you make changes to a dashboard, Dashing and `hapush` will both automatically reload and apply the changes without a need to restart. - -Note: The first time you start Dashing, it can take up to a minute for the initial compilation of the pages to occur. You might get a timeout from your browser. If this occurs, be patient and reload. Subsequent reloads will be a lot quicker. - -## {% linkable_title Multiple Pages %} - -It is possible to have multiple pages within a dashboard. To do this, you can add an arbitary number of gridster divisions (you need at least one). - -```html -
    - -
    - -
    -
    - -``` - -- ***data-page*** : The name of the page to switch to - -## {% linkable_title Multiple Dashboards %} -You can also have multiple dashboards, by simply adding a new .erb file to the dashboards directory and navigating to the dashboards via `http://:3030/dashboard-file-name-without-extension` - -For example, if you want to deploy multiple devices, you could have one dashboard per room and still only use one hadashboard app installation. diff --git a/source/_docs/ecosystem/hadashboard/hapush.markdown b/source/_docs/ecosystem/hadashboard/hapush.markdown deleted file mode 100755 index 6445a12ae3e..00000000000 --- a/source/_docs/ecosystem/hadashboard/hapush.markdown +++ /dev/null @@ -1,95 +0,0 @@ ---- -layout: page -title: "HAPush" -description: "HAPush" -release_date: 2016-11-13 15:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/hadashboard/hapush/ ---- - -# Installing hapush (Manual install only) - -This is not necessary if you are using Docker as it is already installed. - -When you have the dashboard correctly displaying and interacting with Home Assistant you are ready to install the final component - `hapush`. Without `hapush` the dashboard would not respond to events that happen outside of the hadashboard system. For instance, if someone uses the Home Assistant interface to turn on a light, or even another App or physical switch, there is no way for the Dashboard to reflect this change. This is where `hapush` comes in. - -`hapush` is a python daemon that listens to Home Assistant's Event Stream and pushes changes back to the dashboard to update it in real time. You may want to create a [Virtual Environment](https://docs.python.org/3/library/venv.html) for hapush - at the time of writing there is a conflict in the Event Source versions in use between HA and hapush. - -Before running `hapush` you will need to add some python prerequisites: - -```bash -$ sudo pip3 install daemonize -$ sudo pip3 install sseclient -$ sudo pip3 install configobj -``` - -Some users are reporting errors with `InsecureRequestWarning`: - -``` -Traceback (most recent call last): - File "./hapush.py", line 21, in - from requests.packages.urllib3.exceptions import InsecureRequestWarning -ImportError: cannot import name 'InsecureRequestWarning' -``` - -This can be fixed with: - -```bash -$ sudo pip3 install --upgrade requests -``` - -## {% linkable_title Configuring hapush (all installation methods) %} - -When you have all the prereqs in place, copy the hapush.cfg.example file to hapush.cfg then edit it to reflect your environment: - -``` -ha_url = "http://192.168.1.10:8123" -ha_key = api_key -dash_host = "192.168.1.10:3030" -dash_dir = "/srv/hass/src/hadashboard/dashboards" -logfile = "/etc/hapush/hapush.log" -``` - -- `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. -- `dash_host` should be set to the IP address and port of the host you are running Dashing on (no http or https) - this should be the same machine as you are running `hapush` on. -- `dash_dir` is the path on the machine that stores your dashboards. This will be the subdirectory `dashboards` relative to the path you cloned `hadashboard` to. For Docker installs this should be set to `/app/dashboards` -- `logfile` is the path to where you want `hapush` to keep its logs. 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 hapush to run from, although there is no reason you can't keep it in the `hapush` subdirectory of the cloned repository. For Docker installs this should be set to `/app/hapush/hapush.log` - -## {% linkable_title Running hapush %} - -For a manual installation you can then run hapush from the command line as follows: - -```bash -$ ./hapush.py hapush.cfg -``` - -For docker installs, hapush will be started automatically when you run the startup command. - -If all is well, you should start to see `hapush` responding to events as they occur. For a docker installation you should see these messages in `hapush/hapush.log`. - -```bash -2016-06-19 10:05:59,693 INFO Reading dashboard: /srv/hass/src/hadashboard/dashboards/main.erb -2016-06-19 10:06:12,362 INFO switch.wendy_bedside -> state = on, brightness = 50 -2016-06-19 10:06:13,334 INFO switch.andrew_bedside -> state = on, brightness = 50 -2016-06-19 10:06:13,910 INFO script.night -> Night -2016-06-19 10:06:13,935 INFO script.night_quiet -> Night -2016-06-19 10:06:13,959 INFO script.day -> Night -2016-06-19 10:06:13,984 INFO script.evening -> Night -2016-06-19 10:06:14,008 INFO input_select.house_mode -> Night -2016-06-19 10:06:14,038 INFO script.morning -> Night -2016-06-19 10:06:21,624 INFO script.night -> Day -2016-06-19 10:06:21,649 INFO script.night_quiet -> Day -2016-06-19 10:06:21,674 INFO script.day -> Day -2016-06-19 10:06:21,698 INFO script.evening -> Day -2016-06-19 10:06:21,724 INFO input_select.house_mode -> Day -2016-06-19 10:06:21,748 INFO script.morning -> Day -2016-06-19 10:06:31,084 INFO switch.andrew_bedside -> state = off, brightness = 30 -2016-06-19 10:06:32,501 INFO switch.wendy_bedside -> state = off, brightness = 30 -2016-06-19 10:06:52,280 INFO sensor.side_multisensor_luminance_25 -> 871.0 -2016-06-19 10:07:50,574 INFO sensor.side_temp_corrected -> 70.7 -2016-06-19 10:07:51,478 INFO sensor.side_multisensor_relative_humidity_25 -> 52.0 -``` diff --git a/source/_docs/ecosystem/hadashboard/installation.markdown b/source/_docs/ecosystem/hadashboard/installation.markdown deleted file mode 100755 index 4d1fe7ff258..00000000000 --- a/source/_docs/ecosystem/hadashboard/installation.markdown +++ /dev/null @@ -1,152 +0,0 @@ ---- -layout: page -title: "Installation" -description: "Installation" -release_date: 2016-11-13 15:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/hadashboard/installation/ ---- - -Installation can be performed using Docker (Contributed by [marijngiesen](https://github.com/marijngiesen)) or manually if Docker doesn't work for you. We also have a Raspberry PI version of Docker contributed by [snizzleorg](https://community.home-assistant.io/users/snizzleorg/activity) - -## {% linkable_title Using Docker (Non Raspian) %} - -Assuming you already have Docker installed, installation is fairly easy. - -### {% linkable_title Clone the Repository %} -Clone the **hadashboard** repository to the current local directory on your machine. - -``` bash -$ git clone https://github.com/home-assistant/hadashboard.git -``` - -Change your working directory to the repository root. Moving forward, we will be working from this directory. - -``` bash -$ cd hadashboard -``` - -### {% linkable_title Build the docker image %} - -```bash -$ docker build -t hadashboard . -``` - -When the build completes, you can run the dashboard with the following command for unix based systems: - -```bash -$ docker run --name="hadashboard" -d -v /dashboards:/app/dashboards -v /lib/ha_conf.rb:/app/lib/ha_conf.rb -v /hapush:/app/hapush --net=host hadashboard -``` - -If you are running docker on windows you should not use the `--net` command and explicitly specify the port, aslo for security reason `--net=host` should not be used so the following can also be used in unix. This will also set the process to start when the docker process starts so you do not have to worry about reboots. To map the volumes make sure you have ticked the shred drives in the settings. In this example I am using `c:\hadashboard` as the location where the git clone was done and mapping to port 3030 on the host. - -```powershell -docker run --restart=always --name="hadashboard" -p 3030:3030 -d -v C:/hadashboard/dashboards:/app/dashboards -v C:/hadashboard/lib/ha_conf.rb:/app/lib/ha_conf.rb -v C:/hadashboard/hapush:/app/hapush hadashboard -``` - -This will use all of the same configuration files as specified below in the configuration sections, although you will need to make a few changes to the `hapush` configuration to match the docker's filesystem, detailed below. - -By default, the docker instance should pick up your timezone but if you want to explicitly set it you can add an environment variable for your specific zone as follows: - -```bash - -e "TZ=Europe/Amsterdam" -``` - -### {% linkable_title Docker on Raspberry Pi %} - -Raspberry pi needs to use a different docker build file so the build command is slightly different: - -```bash -$ sudo docker build -f Docker-raspi/Dockerfile -t hadashboard . -``` - -Apart from that the other steps are identical. - -*Note - this is pretty slow even on a PI3, be prepared for it to take an hour or two to build all of the extensions and install everything* - -## {% linkable_title Manual Installation %} - -### {% linkable_title Clone the Repository %} -Clone the **hadashboard** repository to the current local directory on your machine. - -``` bash -$ git clone https://github.com/home-assistant/hadashboard.git -``` - -Change your working directory to the repository root. Moving forward, we will be working from this directory. - -``` bash -$ cd hadashboard -``` - -### {% linkable_title 2. Install Dashing and prereqs %} - -Essentially, you want to make sure that you have Ruby installed on your local machine. Then, install the Dashing gem: - -``` bash -$ gem install dashing -``` - -From your repository root, make sure that all dependencies are available. - -Note: on some systems you may also need to install bundler: - -```bash -$ gem install bundler -``` - -When installed run it: - -``` bash -$ bundle -``` - -Bundle will now install all the ruby prereqs for running dashing. - -Note: Prereqs will vary across different machines. So far users have reported requirements for some additional installs to allow the bundle to complete succesfully: - -- ruby-dev - `sudo apt-get install ruby-dev` -- node-js - `sudo apt-get install nodejs` -- libsqlite3-dev - `sudo apt-get install libsqlite3-dev` -- execjs gem - `gem install execjs` - -You will need to research what works on your particular architecture and also bear in mind that version numbers may change over time. - -Note: This is currently running on various versions of Ruby and there are no strong dependencies however your mileage may vary. - -## {% linkable_title Updating configuration (Manual and Docker) %} - -Next, in the `./lib` directory, copy the ha_conf.rb.example file to ha_conf.rb and edit its settings to reflect your installation, pointing to the machine Home Assistant is running on and adding your api_key. - -```ruby -$ha_url = "http://192.168.1.10:8123" -$ha_apikey = "your key" -``` - -- `$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_apikey` should be set to your key if you have one, otherwise it can remain blank. - -The file also contains example newsfeeds for the News widget: - -```ruby -$news_feeds = { - "Traffic" => "http://api.sr.se/api/rss/traffic/2863", - "News" => "http://feeds.bbci.co.uk/news/rss.xml", -} -``` - -You can leave these alone for now or if you prefer customize them as described in the News widget section. - -When you are done, you can start a local webserver like this or if you are on docker it should start when you start the container. - -```bash -$ dashing start -``` - -Point your browser to **http://localhost:3030** to access the hadashboard on your local machine, and you should see the supplied default dashboard. If you want to access it remotely ensure you have opened any required firewall rules. - -If the page never finishes loading and shows up all white, edit the dashboard config to match your own setup, instructions in the next step. - diff --git a/source/_docs/ecosystem/hadashboard/reboot.markdown b/source/_docs/ecosystem/hadashboard/reboot.markdown deleted file mode 100755 index 3f912b0268f..00000000000 --- a/source/_docs/ecosystem/hadashboard/reboot.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Reboot" -description: "Reboot" -release_date: 2016-11-13 15:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/hadashboard/reboot/ ---- - -To run Dashing and `hapush` at reboot, I have provided sample init scripts in the `./init` directory. These have been tested on a Raspberry Pi - your mileage may vary on other systems. - -Instructions for automatically starting a docker install can be found [here](https://docs.docker.com/engine/admin/host_integration/). - -For docker you may also want to use docker-compose - there is a sample compose file in the `./init` directory. diff --git a/source/_docs/ecosystem/hadashboard/updating.markdown b/source/_docs/ecosystem/hadashboard/updating.markdown deleted file mode 100755 index 6854a554151..00000000000 --- a/source/_docs/ecosystem/hadashboard/updating.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: page -title: "Updating HADashboard" -description: "Updating HADashboard" -release_date: 2016-11-13 15:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/hadashboard/updating/ ---- - -To update the dashboard after new code has been released, just run the following command to update your copy: - -```bash -$ git pull origin -``` - -For some releases you may also need to rerun the bundle command: - -``` bash -$ bundle -``` - -For docker users, you will also need to rerun the docker build process. diff --git a/source/_docs/ecosystem/hass-configurator.markdown b/source/_docs/ecosystem/hass-configurator.markdown index 6ec4d11b8e0..bca0a948ee6 100644 --- a/source/_docs/ecosystem/hass-configurator.markdown +++ b/source/_docs/ecosystem/hass-configurator.markdown @@ -42,7 +42,7 @@ There are no dependencies on Python modules that are not part of the standard li ### {% linkable_title Configuration %} Near the top of the configurator.py-file you will find some global variables you can change to customize the configurator. If you are unfamiliar with Python: when setting variables of the type _string_, you have to write that within quotation marks. The default settings are fine for just checking out the configurator quickly. With more customized setups you should change some settings though. -To keep your settings across updates it is also possible to save settings in an external file. In that case copy [settings.conf](https://github.com/danielperna84/hass-configurator/blob/master/settings.conf) whereever you like and append the full path to the file to the command when starting the configurator. E.g. `sudo .configurator.py /home/homeassistant/.homeassistant/mysettings.conf`. This file is in JSON format. So make sure it has a valid syntax (you can set the editor to JSON to get syntax highlighting for the settings). The major difference to the settings in the py-file is, that `None` becomes `null`. +To keep your settings across updates it is also possible to save settings in an external file. In that case copy [settings.conf](https://github.com/danielperna84/hass-configurator/blob/master/settings.conf) wherever you like and append the full path to the file to the command when starting the configurator. E.g. `sudo .configurator.py /home/homeassistant/.homeassistant/mysettings.conf`. This file is in JSON format. So make sure it has a valid syntax (you can set the editor to JSON to get syntax highlighting for the settings). The major difference to the settings in the py-file is, that `None` becomes `null`. #### LISTENIP (string) The IP the service is listening on. By default it is binding to `0.0.0.0`, which is every interface on the system. diff --git a/source/_docs/ecosystem/ios/location.markdown b/source/_docs/ecosystem/ios/location.markdown index 54d61da2e71..596a4b93a4b 100644 --- a/source/_docs/ecosystem/ios/location.markdown +++ b/source/_docs/ecosystem/ios/location.markdown @@ -12,7 +12,7 @@ redirect_from: /ecosystem/ios/location/ ## {% linkable_title Location tracking when outside a Home Assistant zone %} -Home Assistant for iOS receives _significant location updates_ from iOS. Whenever an update is received, it is sent to Home Assistant. Roughly, an update is received everytime that your device transfers to a new cellular tower, a significant amount of time has passed (usually a couple hours) or a connection state changes and the system notices your location recently changed. +Home Assistant for iOS receives _significant location updates_ from iOS. Whenever an update is received, it is sent to Home Assistant. Roughly, an update is received every time that your device transfers to a new cellular tower, a significant amount of time has passed (usually a couple hours) or a connection state changes and the system notices your location recently changed. Apple [defines][apple-location-programming-guide] significant significant-change location updates as: diff --git a/source/_docs/ecosystem/ios/notifications/actions.markdown b/source/_docs/ecosystem/ios/notifications/actions.markdown index 5e2f49f3e45..df7caf240c0 100644 --- a/source/_docs/ecosystem/ios/notifications/actions.markdown +++ b/source/_docs/ecosystem/ios/notifications/actions.markdown @@ -44,16 +44,16 @@ When sending a notification:

    ## {% linkable_title Definitions %} -- Category - A category represents a type of notification that the app might receive. Think of it as a unique group of actions. A categories parameters include: -- Action - An action consists of a button title and the information that iOS needs to notify the app when the action is selected. You create separate action objects for distinct action your app supports. An actions parameters include: +- Category - A category represents a type of notification that the app might receive. Think of it as a unique group of actions. +- Actions - An action consists of a button title and the information that iOS needs to notify the app when the action is selected. You create separate action objects for distinct action your app supports. ## {% linkable_title Category parameters %} - **name** (*Required*): A friendly name for this category. -- **identifier** (*Required*): A unique identifier for the category. Must be uppercase and have no special characters or spaces. -- **action** (*Required*): A list of actions. +- **identifier** (*Required*): A unique identifier for the category. Must be lowercase and have no special characters or spaces. +- **actions** (*Required*): A list of actions. -## {% linkable_title Action parameters %} +## {% linkable_title Actions parameters %} - **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. @@ -71,7 +71,7 @@ ios: push: categories: - name: Alarm - identifier: 'ALARM' + identifier: 'alarm' actions: - identifier: 'SOUND_ALARM' title: 'Sound Alarm' @@ -105,7 +105,7 @@ automation: push: badge: 5 sound: - category: "ALARM" # Needs to match the top level identifier you used in the ios configuration + category: "alarm" # Needs to match the top level identifier you used in the ios configuration action_data: # Anything passed in action_data will get echoed back to Home Assistant. entity_id: light.test my_custom_data: foo_bar @@ -141,3 +141,4 @@ Notes: * `textInput` will only exist if `behavior` was set to `textInput`. * `actionData` is a dictionary with parameters passed in the `action_data` dictionary of the `push` dictionary in the original notification. +* When adding or updating push categories be sure to update push settings within the Home Assistant iOS app. This can be found within the app at **Settings** (gear icon) > **Notification Settings**. diff --git a/source/_docs/ecosystem/ios/notifications/content_extensions.markdown b/source/_docs/ecosystem/ios/notifications/content_extensions.markdown index 8f70fcb8ef6..721386de2e3 100644 --- a/source/_docs/ecosystem/ios/notifications/content_extensions.markdown +++ b/source/_docs/ecosystem/ios/notifications/content_extensions.markdown @@ -57,7 +57,7 @@ You can also pass the following properties under `action_data` to modify the map The notification thumbnail will be a still image from the camera. The notification content is a real time MJPEG stream of a camera (assuming the camera supports it). -You can use the attachment parameters `content-type` and `hide-thumbnail` with camera. +You can use the attachment parameters `content-type` and `hide-thumbnail` with camera to control the thumbnail. You can view an example [here](https://www.youtube.com/watch?v=LmYwpxPKW0g). @@ -66,6 +66,8 @@ service: notify.ios_ data: message: Motion detected in the Living Room data: + attachment: + content-type: jpeg push: category: camera entity_id: camera.demo_camera @@ -79,6 +81,27 @@ data: As you can see the `category` key is used to tell the device what kind of content extension to use. You can use the same category identifiers in your own custom [actions](/ecosystem/ios/notifications/actions/) to add actions to the content extension. +For example this configuration adds actions to a camera content message. + +```yaml +ios: + push: + categories: + - name: Camera With Actions + identifier: 'camera' + actions: + - identifier: 'OPEN_COVER' + title: 'Open Cover' + activationMode: 'background' + authenticationRequired: yes + destructive: no + - identifier: 'CLOSE_COVER' + title: 'Close Cover' + activationMode: 'background' + authenticationRequired: yes + destructive: yes +``` + # Troubleshooting If you are having problems with receiving these special notifications try restarting your phone first. The extensions somewhat often fail to register properly until a restart. diff --git a/source/_docs/ecosystem/ios/notifications/sounds.markdown b/source/_docs/ecosystem/ios/notifications/sounds.markdown index 5862f15c5f4..7daa9e1b9a1 100644 --- a/source/_docs/ecosystem/ios/notifications/sounds.markdown +++ b/source/_docs/ecosystem/ios/notifications/sounds.markdown @@ -37,7 +37,7 @@ The app allows you to use your own custom sounds in push notifications. The soun 2. Go to the device in iTunes. 3. Select "Apps" on the left sidebar. 4. Scroll down until you see the section labeled "File Sharing". -5. Select HomeAssistant. +5. Select Home Assistant. 6. Drag and drop properly formatted sounds. 7. Click Sync in the lower right. 8. Once sync is complete, disconnect the device from the computer. diff --git a/source/_docs/ecosystem/nginx_subdomain.markdown b/source/_docs/ecosystem/nginx_subdomain.markdown index 2bc9413b7e4..714be21f489 100644 --- a/source/_docs/ecosystem/nginx_subdomain.markdown +++ b/source/_docs/ecosystem/nginx_subdomain.markdown @@ -13,7 +13,7 @@ This example demonstrates how you can configure NGINX to act as a proxy for Home This is useful if you want to have: - * a subdomain redirecting to your home assistant instance + * a subdomain redirecting to your Home Assistant instance * several subdomain for several instance * HTTPS redirection @@ -36,6 +36,10 @@ server { location / { proxy_pass http://localhost:8123/; proxy_set_header Host $host; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; } location /api/websocket { @@ -59,8 +63,8 @@ You already have Home Assistant running on http://localhost:8123 and available a You want another instance available at https://countryside.example.org You can either : - * Create a new user, `bob`, to hold the configuration file in `/home/bob/.homeassistant/configuration.yaml` and run home assistant as this new user - * Create another configuration directory in `/home/alice/.homeassistan2/configuration.yaml` and run home assistant using `hass --config /home/alice/.homeassistant2/` + * Create a new user, `bob`, to hold the configuration file in `/home/bob/.homeassistant/configuration.yaml` and run Home Assistant as this new user + * Create another configuration directory in `/home/alice/.homeassistan2/configuration.yaml` and run Home Assistant using `hass --config /home/alice/.homeassistant2/` In both solution, change port number used by modifying `configuration.yaml` file. diff --git a/source/_docs/ecosystem/scenegen.markdown b/source/_docs/ecosystem/scenegen.markdown index aa512fd1833..3cf1e1b03c8 100644 --- a/source/_docs/ecosystem/scenegen.markdown +++ b/source/_docs/ecosystem/scenegen.markdown @@ -90,7 +90,7 @@ This output can be cut and pasted into your configuration.yaml file as required Scenegen supports all documented effects for lights including transitions and flash effects, however generally it is easier to run scenegen to get the basic setup and add any effects manually later. -Note that depending on the type of light there may be a delay in actually setting up its parameters and Home Assistant actually recieving that state. For instance, if you set a scene up with the Hue App, Home Assistant won't see those changes for up to 10 seconds. Turning on a ZWave light might not be seen for an entire poll interval. For this reason, its good practice to wait for a while after the scene is setup before running scenegen. Alternatively, perform all setup using the Home Assistant frontend and it will instantly have the required state for capture. +Note that depending on the type of light there may be a delay in actually setting up its parameters and Home Assistant actually receiving that state. For instance, if you set a scene up with the Hue App, Home Assistant won't see those changes for up to 10 seconds. Turning on a ZWave light might not be seen for an entire poll interval. For this reason, its good practice to wait for a while after the scene is setup before running scenegen. Alternatively, perform all setup using the Home Assistant frontend and it will instantly have the required state for capture. ## {% linkable_title Advanced Usage %} @@ -100,7 +100,7 @@ For a more advanced way to use the output try the following. In configuration.ya scene: !include_dir_list scenes ``` -This will tell home assistant to look in the subdirectory `scenes` for yaml files containing scene information. Each file will be named for the scene it will create and should contain information formatted as above. Then simply run Scenegen and redirect its output to the scenes subdirectory: +This will tell Home Assistant to look in the subdirectory `scenes` for yaml files containing scene information. Each file will be named for the scene it will create and should contain information formatted as above. Then simply run Scenegen and redirect its output to the scenes subdirectory: ``` $ ./scenegen.py https:// -k > scenes/my_new_scene.yaml diff --git a/source/_docs/ecosystem/tor.markdown b/source/_docs/ecosystem/tor.markdown index c5fd98dc0eb..6d87b5f08b4 100644 --- a/source/_docs/ecosystem/tor.markdown +++ b/source/_docs/ecosystem/tor.markdown @@ -88,7 +88,7 @@ Add the authentication cookie to your `torrc` client configuration on your lapto HidServAuth abcdef1234567890.onion ABCDEF1122334455667789 ``` -For Tor Browser on Windows, Mac or Linux, you can find the torrc file here: `/Browser/TorBrowser/Data/Tor/torrc-defaults` +For Tor Browser on Windows, Mac or Linux, you can find the torrc file here: `/Browser/TorBrowser/Data/Tor/torrc` Once you have added the entry, restart the browser, and then browse to the "dot onion" site address to connect to your Home Assistant instance. diff --git a/source/_docs/frontend/browsers.markdown b/source/_docs/frontend/browsers.markdown index 8ddb3f805b4..d0ead42c919 100644 --- a/source/_docs/frontend/browsers.markdown +++ b/source/_docs/frontend/browsers.markdown @@ -10,7 +10,9 @@ footer: true redirect_from: /getting-started/browsers/ --- -Home Assistant requires a web browser to show the frontend and supports all major modern browsers. We don't test the web interface against all available browsers but this page tracks different browsers on various operating systems and should help you to pick a browser which works. +Home Assistant requires a web browser to show the frontend and supports all major modern browsers. We don't test the web interface against all available browsers but this page tracks different browsers on various operating systems and should help you to pick a browser which works. The "Release" column contains the release number which were tested. This doen't mean that older or newer releases not work. + +If a browser is listed as working but you are still having problems, it is possible that some add-on or extension may be the problem. Some add-ons or extenstion are known to cause issue with the frontend, but it's not possible to test them all. If you are having issues with the frontend displaying correctly, you should disable all your add-ons or extensions and enable them one at a time. We would appreciate if you help to keep this page up-to-date and add feedback. @@ -20,8 +22,8 @@ We would appreciate if you help to keep this page up-to-date and add feedback. | :------------------------ |:---------------|:-----------|:-------------------------| | Internet Explorer ([IE]) | 11 | Not supported | Does not support promises. | | Microsoft [Edge] | deli. Win 10 | works | Streaming updates not working. | -| [Chrome] | 50.0.2661.102 | works | | -| [Firefox] | 43.0.1 | works | | +| [Chrome] | 61.0.3163.100 | works | | +| [Firefox] | 56.0 | works | | | [Iridium] | 48.2 | works | | | [Opera] | 42.0.2393.351 | works | | @@ -29,16 +31,17 @@ We would appreciate if you help to keep this page up-to-date and add feedback. | Browser | Release | State | Comments | | :-------------------- |:---------------|:-----------|:-------------------------| -| [Safari] | | works | | +| [Safari] | | works | Map is fixed since 0.51. | ## {% linkable_title Linux %} | Browser | Release | State | Comments | | :-------------------- |:---------------|:-----------|:-------------------------| -| [Firefox] | 49.0 | works | | +| [Firefox] | 57.0 | works | | | [Midori] | 0.5.11 | works | | -| [Chromium] | 53.0.2785.143 | works | | +| [Chromium] | 61.0.3163.100 | works | | | [Conkeror] | 1.0.2 | works | | +| [Tor Browser] | 7.0.8 | works | | | [Konqueror] | | unknown | | | [Uzbl] | 0.9.0 | works | | | [Opera] | 42.0.2393.351 | works | | @@ -60,24 +63,27 @@ We would appreciate if you help to keep this page up-to-date and add feedback. | Browser | Release | State | Comments | | :-------------------- |:---------------|:-----------|:-------------------------| -| [Safari] | | works | Can also be added to desktop | +| [Safari] | | works | Can also be added to desktop. Map is fixed since 0.51. | | [Chrome] | | works | | +There are reports that devices running with iOS prior to iOS 10, especially old iPads, are having trouble. -[Firefox]: https://www.mozilla.org/en-US/firefox/ -[Midori]: http://midori-browser.org/ [Chrome]: https://www.google.com/chrome/ -[Iridium]: https://iridiumbrowser.de/ -[Opera]: http://www.opera.com/ -[Edge]: https://www.microsoft.com/en-us/windows/microsoft-edge -[IE]: http://windows.microsoft.com/en-us/internet-explorer/download-ie -[Safari]: http://www.apple.com/safari/ [Chromium]: https://www.chromium.org/ [Conkeror]: http://conkeror.org/ -[Konqueror]: https://konqueror.org/ -[Uzbl]: http://www.uzbl.org/ -[Lynx]: http://lynx.browser.org/ +[Edge]: https://www.microsoft.com/en-us/windows/microsoft-edge [elinks]: http://elinks.or.cz/ -[w3m]: http://w3m.sourceforge.net/ [Epiphany]: https://wiki.gnome.org/Apps/Web +[Firefox]: https://www.mozilla.org/en-US/firefox/ +[IE]: http://windows.microsoft.com/en-us/internet-explorer/download-ie +[Iridium]: https://iridiumbrowser.de/ +[Konqueror]: https://konqueror.org/ +[Lynx]: http://lynx.browser.org/ +[Midori]: http://midori-browser.org/ +[Opera]: http://www.opera.com/ +[Safari]: http://www.apple.com/safari/ [surf]: http://surf.suckless.org/ +[Tor Browser]: https://www.torproject.org/ +[Uzbl]: http://www.uzbl.org/ +[w3m]: http://w3m.sourceforge.net/ + diff --git a/source/_docs/glossary.markdown b/source/_docs/glossary.markdown new file mode 100644 index 00000000000..c5a76c534f7 --- /dev/null +++ b/source/_docs/glossary.markdown @@ -0,0 +1,22 @@ +--- +layout: page +title: "Glossary" +description: "Home Assistant's Glossary." +date: 2017-10-08 08:30 +sidebar: true +comments: false +sharing: true +footer: true +--- + +{% assign entries = site.data.glossary | sort: 'topic' %} + +The glossary covers terms which are used around Home Assistant. + +
      +{% for entry in entries %} +
    • + {{ entry.topic }}: {{ entry.description | markdownify }} +
    • +{% endfor %} +
    diff --git a/source/_docs/hassbian/customization.markdown b/source/_docs/hassbian/customization.markdown deleted file mode 100644 index dfc566f1ff8..00000000000 --- a/source/_docs/hassbian/customization.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: page -title: "Customization" -description: "Instructions to flash the Home Assistant HASSbian image on a Raspberry Pi." -date: 2016-09-26 21:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/hassbian-customization/ ---- - -To allow you to customize your installation further, we have included a tool called `hassbian-config`. This tool comes with a set of packages that can easily be installed for easier customization of your Home Assistant installation. - - - Install Hue. Configures the Python executable to allow usage of low numbered ports for use with Emulated Hue component thats used with Amazon Echo, Google Home and Mycroft.ai. - - Install Mosquitto MQTT server. Installs the latest Mosquitto package and client tools from the Mosquitto projects official repository. Now includes websocket support. - - Install Libcec. Adds local [HDMI CEC support][cec]. - - Install Open Z-Wave-pip. Installs Python Open Z-Wave from a pip package. This is the quickest and recommended way of installing Z-Wave support but does not OZWCP pre-installed. - - Install Open Z-Wave. Installs Python Open Z-Wave and OZWCP from git. - - Install Samba. Allows anyone on your network to edit your configuration from any computer. This share is unsecured and it's usage is not recommended if you share your network with others. - - Install Tellstick. Installs the Tellstick package for controlling and using a connected Tellstick. - - Install Tradfri. Installs dependencies for using IKEA Trådfri. - -The tool is available by running `hassbian-config`. To view the available packages run `hassbian-config show` and `sudo hassbian-config install PACKAGENAME`. -For more information about this tool have a look at the [hassbian-scripts repository][hassbian-repo]. - -[hassbian-repo]: https://github.com/home-assistant/hassbian-scripts -[cec]: /components/hdmi_cec/ diff --git a/source/_docs/hassbian/installation.markdown b/source/_docs/hassbian/installation.markdown deleted file mode 100644 index 454122ae2ed..00000000000 --- a/source/_docs/hassbian/installation.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Installing Hassbian" -description: "Instructions to flash the Home Assistant HASSbian image on a Raspberry Pi." -date: 2016-09-26 21:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/installation-raspberry-pi-image/ ---- - -The easiest way to install Home Assistant on your Raspberry Pi is by using HASSbian: a Raspberry Pi image with Home Assistant built-in. The image will install the latest version of Home Assistant on initial boot (~10 minutes). - - 1. [Download the Hassbian image][image-download] (364 MB) - 2. Use [Etcher][etcher] to flash the image to your SD card - 3. Ensure your Raspberry Pi has wired access to the internet. - 4. Insert SD card to Raspberry Pi and turn it on. Initial installation of Home Assistant will take about 5 minutes. - -These instructions are also available as a [video](https://www.youtube.com/watch?v=iIz6XqDwHEk). Additional information is available in this [video](https://www.youtube.com/watch?v=tCGlQSsQ-Mc). - -After initial boot, you can reach Home Assistant in your browser at [http://hassbian.local:8123]. If you want to login via SSH, the default username is `pi` and password is `raspberry` (please change this by running `passwd`). The Home Assistant configuration is located at `/home/homeassistant/.homeassistant/`. - -The following extras are included on the image: - - - GPIO pins are ready to use. - - Bluetooth is ready to use (supported models only, no Bluetooth LE). - - SSH server is enabled. - - A tool called `hassbian-config`. - -### {% linkable_title Technical Details %} - - - Home Assistant is installed in a virtual Python environment at `/srv/homeassistant/` - - Home Assistant will be started as a service run by the user `homeassistant` - - The configuration is located at `/home/homeassistant/.homeassistant` - -[image-download]: https://github.com/home-assistant/pi-gen/releases/latest -[etcher]: https://etcher.io/ -[http://hassbian.local:8123]: http://hassbian.local:8123 diff --git a/source/_docs/installation.markdown b/source/_docs/installation.markdown index 7de9486a425..c5fe54e9ed8 100644 --- a/source/_docs/installation.markdown +++ b/source/_docs/installation.markdown @@ -10,7 +10,7 @@ footer: true redirect_from: /getting-started/installation/ --- -Home Assistant provides multiple ways to be installed. A requirement is that you have [Python](https://www.python.org/downloads/) installed. For Windows we require at least **Python 3.5** and for other operating systems at least **Python 3.4.2**. +Home Assistant provides multiple ways to be installed. A requirement is that you have [Python](https://www.python.org/downloads/) installed. For Windows, we require at least **Python 3.5** and for other operating systems at least **Python 3.4.2**.
    @@ -23,7 +23,7 @@ Home Assistant provides multiple ways to be installed. A requirement is that you
    -
    Rasbian
    +
    Raspbian
    @@ -99,5 +99,5 @@ For more details about `hass`, please refer to the [tools section](/docs/tools/h If you're running a Linux-based platform, we suggest you follow the [VirtualEnv instructions](/docs/installation/virtualenv/) to avoid using `root`. -It may be needed that you install additional library depending on the platforms/components you want to use. +You may need to install additional libraries depending on the platforms/components you want to use. diff --git a/source/_docs/installation/archlinux.markdown b/source/_docs/installation/archlinux.markdown index 8c2b8b38024..09ae89b4dde 100644 --- a/source/_docs/installation/archlinux.markdown +++ b/source/_docs/installation/archlinux.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Installation on ArchLinux" -description: "Installation of Home Assistant on your ArchLinux computer." +title: "Installation on Arch Linux" +description: "Installation of Home Assistant on your Arch Linux computer." date: 2017-03-01 07:00 sidebar: true comments: false @@ -9,7 +9,7 @@ sharing: true footer: true --- -[ArchLinux](https://www.archlinux.org/) is a lightweight and flexible Linux distribution. There are official packages optimized for the i686 and x86-64 architectures available. +[Arch Linux](https://www.archlinux.org/) is a lightweight and flexible Linux distribution. There are official packages optimized for the i686 and x86-64 architectures available. Install the needed Python packages. diff --git a/source/_docs/installation/centos.markdown b/source/_docs/installation/centos.markdown index 21ffd270130..b427d83d39e 100644 --- a/source/_docs/installation/centos.markdown +++ b/source/_docs/installation/centos.markdown @@ -27,7 +27,7 @@ Then install the Python 3.5 package: $ yum install rh-python35 ``` -Once installed, switch to your homeassistant user (if you've set one up), enable the software collection and check that it has set up the new version of Python: +Once installed, switch to your `homeassistant` user (if you've set one up), enable the software collection and check that it has set up the new version of Python: ```bash $ scl enable rh-python35 bash @@ -35,13 +35,13 @@ $ python --version Python 3.5.1 ``` -You will be in a command shell set up with Python 3.5 as your default version. The virtualenv and pip commands will be correct for this version, so you can now create a virtual environment and install home assistant following the main [instructions](https://home-assistant.io/docs/installation/virtualenv/#step-4-set-up-the-virtualenv). +You will be in a command shell set up with Python 3.5 as your default version. The virtualenv and pip commands will be correct for this version, so you can now create a virtual environment and install Home Assistant following the main [instructions](https://home-assistant.io/docs/installation/virtualenv/#step-4-set-up-the-virtualenv). You will need to enable the software collection each time you log on before you activate your virtual environment. ### {% linkable_title Systemd with Software Collections %} -To autostart homeassistant using systemd follow the main [instructions](https://home-assistant.io/docs/autostart/systemd/) and adjust the template as follows: +To autostart Home Assistant using systemd follow the main [instructions](https://home-assistant.io/docs/autostart/systemd/) and adjust the template as follows: ``` [Unit] diff --git a/source/_docs/installation/fedora.markdown b/source/_docs/installation/fedora.markdown index de30c165722..bbb74f3f001 100644 --- a/source/_docs/installation/fedora.markdown +++ b/source/_docs/installation/fedora.markdown @@ -33,7 +33,7 @@ Now switch to the new directory, setup the venv, and activate it. ```bash $ cd /opt/homeassistant -$ pyvenv-3.5 . +$ python3.6 -m venv . $ source bin/activate ``` diff --git a/source/_docs/installation/freenas.markdown b/source/_docs/installation/freenas.markdown index cdda8f6b1d7..acf67bb0b88 100644 --- a/source/_docs/installation/freenas.markdown +++ b/source/_docs/installation/freenas.markdown @@ -2,7 +2,7 @@ layout: page title: "Installation on FreeNAS 9.10" description: "Installation of Home Assistant on your FreeNAS." -date: 2017-04-06 17:00 +date: 2017-06-20 11:00 sidebar: true comments: false sharing: true @@ -29,10 +29,25 @@ Install Home Assistant itself. # pip3 install homeassistant ``` -Finally start Home Assistant. +Create an `/etc/rc.local` file to enable Home Assistant to start when the jail starts. The command in `/etc/rc.local` can also be run in a terminal session but Home Assistant will exit when that session is closed. + ```bash -# hass --open-ui +# cd / && mkdir /home && /home/.homeassistant/ ``` -Some suggestions on using a tmux to keep it running can be found in the FreeNAS forums [HERE](https://forums.freenas.org/index.php?threads/how-to-home-assistant-in-a-jail-tested-on-9-10.50371/) +```bash +# /usr/local/bin/hass --open-ui --config /home/.homeassistant/ & +``` + +Make `/etc/rc.local` executable so it runs on startup + +```bash +# chmod 755 /etc/rc.local +``` + +Finally restart the jail from the Freenas GUI. + +

    +USB Z-wave sticks may give `dmesg` warnings similar to "data interface 1, has no CM over data, has no break". This doesn't impact the function of the Z-wave stick in Hass. Just make sure the proper `/dev/cu*` is used in the Home Assistant `configuration.yaml` file. +

    diff --git a/source/_docs/hassbian.markdown b/source/_docs/installation/hassbian.markdown similarity index 100% rename from source/_docs/hassbian.markdown rename to source/_docs/installation/hassbian.markdown diff --git a/source/_docs/hassbian/common-tasks.markdown b/source/_docs/installation/hassbian/common-tasks.markdown similarity index 91% rename from source/_docs/hassbian/common-tasks.markdown rename to source/_docs/installation/hassbian/common-tasks.markdown index 262770e8d20..6fddcd360b6 100644 --- a/source/_docs/hassbian/common-tasks.markdown +++ b/source/_docs/installation/hassbian/common-tasks.markdown @@ -7,13 +7,13 @@ sidebar: true comments: false sharing: true footer: true -redirect_from: /getting-started/hassbian-common-tasks/ +redirect_from: /docs/hassbian/common-tasks/ --- ### {% linkable_title Login to the Raspberry Pi %} To login to your Raspberry Pi running HASSbian you're going to be using a ssh client. Depending on your platform there are several alternatives for doing this. Linux and Max OS generally have a ssh client installed. Windows users are recommended to download and install the ssh client [Putty][ssh-putty]. -Connect to the Raspberry Pi over ssh. Default user name is `pi` and password is `raspberry`. +Connect to the Raspberry Pi over ssh. Default user name is `pi` and password is `raspberry`. Linux and Mac OS users execute the following command in a terminal. ```bash @@ -25,7 +25,7 @@ Windows users start [Putty][ssh-putty], enter the IP address of the Raspberry Pi Optionally, starting with Windows 10 anniversary update, you can use the built-in '[Bash on Windows][bash-windows]' to use SSH if you have enabled Developer mode and have installed the "Windows Subsystem for Linux (beta)" feature. ### {% linkable_title Start/Stop/Restart Home Assistant %} -Log in as the `pi` account account and execute the following commands: +Log in as the `pi` account and execute the following commands: ```bash $ sudo systemctl stop home-assistant@homeassistant.service @@ -36,6 +36,10 @@ To get the current state of the `homeassistant.service` replace `stop` with `sta ### {% linkable_title Update Home Assistant %} +

    +You can also use `hassbian-config` to automate the process by running `sudo hassbian-config upgrade home-assistant` +

    + Log in as the `pi` account and execute the following commands: ```bash @@ -65,7 +69,7 @@ $ source /srv/homeassistant/bin/activate $ hass ``` -This will start Home Assistant in your shell and output anything that ends up in the log and more into the console. This will fail if the Home Assistant service is already running so don't forget to [stop][stop-homeassistant] it first. +This will start Home Assistant in your shell and output anything that ends up in the log and more into the console. This will fail if the Home Assistant service is already running so don't forget to [stop][stop-homeassistant] it first. If you want the log output to be colored, execute `hass --script check_config` first. This will install the `colorlog` module. ### {% linkable_title Check your configuration %} Log in as the `pi` account and execute the following commands: diff --git a/source/_docs/installation/hassbian/customization.markdown b/source/_docs/installation/hassbian/customization.markdown new file mode 100644 index 00000000000..68a544461db --- /dev/null +++ b/source/_docs/installation/hassbian/customization.markdown @@ -0,0 +1,37 @@ +--- +layout: page +title: "Customization" +description: "Instructions to flash the Home Assistant HASSbian image on a Raspberry Pi." +date: 2016-09-26 21:00 +sidebar: true +comments: false +sharing: true +footer: true +redirect_from: /docs/hassbian/customization/ +--- + +To allow you to customize your installation further, we have included a tool called `hassbian-config`. This tool comes with a set of packages that can easily be installed or upgraded for easier customization of your Home Assistant installation. +The tool is available by running `hassbian-config`. + +### Install scripts +To view the available packages run `hassbian-config show` and `sudo hassbian-config install PACKAGENAME`. + - Install Hue. Configures the Python executable to allow usage of low numbered ports for use with Emulated Hue component thats used with Amazon Echo, Google Home and Mycroft.ai. + - Install MariaDB. This script installs MariaDB and it's dependencies for use with the recorder component in Home Assistant. No database or database user is created during this setup and will need to be created manually. + - Install Mosquitto MQTT server. Installs the latest Mosquitto package and client tools from the Mosquitto projects official repository. Now includes websocket support. + - Install Libcec. Adds local [HDMI CEC support][cec]. *This scipt is currently brooken upstream since it currently doesn't build properly for Python >3.4* + - Install Samba. Allows anyone on your network to edit your configuration from any computer. This share is unsecured and it's usage is not recommended if you share your network with others. + - Install Tradfri. Installs dependencies for using IKEA Trådfri. + - Install Duck DNS auto renewal. This script adds an cron job to auto update you the WAN IP address for the defined domain. Before running this script you should already have an Duck DNS account, during the installation you will be asked to supply your domain name and the token for your account. + - Install an web terminal for easy access to ssh in an web browser. This script installs an web terminal called 'shellinabox' to you system that give you SSH access in you web browser. + +#### Upgrade scripts +To view the available packages run `hassbian-config show` and `sudo hassbian-config upgrade PACKAGENAME`. +- Upgrade your Home Assistant installation. +- Upgrade your HASSbian installation. +- Upgrade HASSbian-scripts. +- Upgrade HASSbian-scripts from dev branch. + +For more information about this tool have a look at the [hassbian-scripts repository][hassbian-repo]. + +[hassbian-repo]: https://github.com/home-assistant/hassbian-scripts +[cec]: /components/hdmi_cec/ diff --git a/source/_docs/installation/hassbian/installation.markdown b/source/_docs/installation/hassbian/installation.markdown new file mode 100644 index 00000000000..3c4acb26e9d --- /dev/null +++ b/source/_docs/installation/hassbian/installation.markdown @@ -0,0 +1,66 @@ +--- +layout: page +title: "Installing Hassbian" +description: "Instructions to flash the Home Assistant HASSbian image on a Raspberry Pi." +date: 2016-09-26 21:00 +sidebar: true +comments: false +sharing: true +footer: true +redirect_from: /docs/hassbian/installation/ +--- + +The easiest way to install Home Assistant on your Raspberry Pi is by using HASSbian: a Raspberry Pi image with Home Assistant built-in. The image will install the latest version of Home Assistant on initial boot (~10 minutes). + + 1. [Download the Hassbian image][image-download] (364 MB) + 2. Use [Etcher][etcher] to flash the image to your SD card + 3. Ensure your Raspberry Pi has wired access to the internet for the entire process or configure your wireless network settings **before proceeding to step 4**. + 4. Insert SD card to Raspberry Pi and turn it on. Initial installation of Home Assistant will take about 5 minutes. + +

    +Please remember to ensure you're using an [appropriate power supply](https://www.raspberrypi.org/help/faqs/#powerReqs) with your Pi. Mobile chargers may not be suitable, since some are designed to only provide the full power with that manufacturer's handsets. +

    + +These instructions are also available as a [video](https://www.youtube.com/watch?v=iIz6XqDwHEk). Additional information is available in this [video](https://www.youtube.com/watch?v=tCGlQSsQ-Mc). + +After initial boot an installer will run in the background and takes around 15 minutes to complete, after it has finished, you will be prompted to login: `hassbian login:`. Installation is complete at this point. The default username is `pi` and the password is `raspberry`. + +Open a browser on a device that's connected to the same WiFi network as your Raspberry Pi and point it to Home Assistant at [http://hassbian.local:8123]. If you want to login via SSH, the default username is `pi` and password is `raspberry` (please change this by running `passwd`). The Home Assistant configuration is located at `/home/homeassistant/.homeassistant/`. + +If you find that the web page is not reachable after 30 minutes or so, check that you have files in `/home/homeassistant/.homeassistant/`, if there are no files in this location then run the installer manually using this command: `sudo systemctl start install_homeassistant.service`. + + +The following extras are included on the image: + + - GPIO pins are ready to use. + - Bluetooth is ready to use (supported models only, no Bluetooth LE). + - SSH server is enabled. + - A tool called [`hassbian-config`](https://github.com/home-assistant/hassbian-scripts#hassbian-config-hassbian-config). + +### {% linkable_title Wireless Network %} + +After flashing the image to your SD Card open the partition `boot` and create a new file `wpa_supplicant.conf`. Edit the file and enter your network credentials. For more information visit [Setting up Wifi for Raspbian][wifi-setup]. During start the file will automatically be copied in the right folder and the network connection will be established. The file could look like this: + +```conf +country=SE +ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev +update_config=1 + +network={ + ssid="YOUR_SSID" + psk="YOUR_PASSWORD" +} +``` +You may need to adjust the country code depending upon where you are. A list of codes can be found [here](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements). + +### {% linkable_title Technical Details %} + + - Home Assistant is installed in a virtual Python environment at `/srv/homeassistant/` + - Home Assistant will be started as a service run by the user `homeassistant` + - The configuration is located at `/home/homeassistant/.homeassistant` + +[image-download]: https://github.com/home-assistant/pi-gen/releases/latest +[etcher]: https://etcher.io/ +[http://hassbian.local:8123]: http://hassbian.local:8123 +[wifi-setup]: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md + diff --git a/source/_docs/hassbian/integrations.markdown b/source/_docs/installation/hassbian/integrations.markdown similarity index 93% rename from source/_docs/hassbian/integrations.markdown rename to source/_docs/installation/hassbian/integrations.markdown index 53dfffa5015..e48f9e35367 100644 --- a/source/_docs/hassbian/integrations.markdown +++ b/source/_docs/installation/hassbian/integrations.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -redirect_from: /getting-started/hassbian-installation/ +redirect_from: /docs/hassbian/integrations/ --- Some components that are specific for the Raspberry Pi can require some further configuration outside of Home Assistant. All commands below are assumed to be executed with the `pi` account. For full documentation of these components refer to the [components](/components) page. @@ -42,7 +42,7 @@ To use the camera it needs to be enabled with the `raspi-config` utility. $ sudo raspi-config ``` -Select `Enable camera` choose `` and hit `Enter`, then go to `Finish` and you'll be prompted to reboot. +Go to `Interfacing Options`, select `Enable camera` choose `` and hit `Enter`, then go to `Finish` and you'll be prompted to reboot. After this follow the [Raspberry Pi Camera component](/components/camera.rpi_camera/) page. diff --git a/source/_docs/hassbian/upgrading.markdown b/source/_docs/installation/hassbian/upgrading.markdown similarity index 77% rename from source/_docs/hassbian/upgrading.markdown rename to source/_docs/installation/hassbian/upgrading.markdown index 0af3dc90c83..7ef479edcb7 100644 --- a/source/_docs/hassbian/upgrading.markdown +++ b/source/_docs/installation/hassbian/upgrading.markdown @@ -1,13 +1,13 @@ --- layout: page title: "Upgrading Hassbian" -description: "Instructions how to upgrade Hasbian to the latest version." +description: "Instructions how to upgrade Hassbian to the latest version." date: 2016-09-26 21:00 sidebar: true comments: false sharing: true footer: true -redirect_from: /getting-started/hassbian-upgrading/ +redirect_from: /docs/hassbian/upgrading/ --- HASSbian is based on Raspbian and uses the same repositories. Any changes to Raspbian will be reflected in HASSbian. To update and upgrade system packages and installed software (excluding Home Assistant) do the following. @@ -20,6 +20,9 @@ $ sudo apt-get -y upgrade #### {% linkable_title Updating Home Assistant %} +

    +You can also use `hassbian-config` to automate the process by running `sudo hassbian-config upgrade home-assistant` +

    To update the Home Assistant installation execute the following command as the `pi` user. diff --git a/source/_docs/installation/raspberry-pi-all-in-one.markdown b/source/_docs/installation/raspberry-pi-all-in-one.markdown index bff307a8b50..485fc64ffdb 100644 --- a/source/_docs/installation/raspberry-pi-all-in-one.markdown +++ b/source/_docs/installation/raspberry-pi-all-in-one.markdown @@ -10,10 +10,14 @@ redirect_from: /getting-started/installation-raspberry-pi-all-in-one/ The [Raspberry Pi All-In-One Installer](https://github.com/home-assistant/fabric-home-assistant) deploys a complete Home Assistant server including support for MQTT with websockets, Z-Wave, and the OpenZWave Control Panel. -The only requirement is that you have a Raspberry Pi with a fresh installation of [Raspbian](https://www.raspberrypi.org/downloads/raspbian/) connected to your network. +

    +Please remember to ensure you're using an [appropriate power supply](https://www.raspberrypi.org/help/faqs/#powerReqs) with your Pi. Mobile chargers may not be suitable, since some are designed to only provide the full power with that manufacturer's handsets. +

    + +The only requirement is that you have a Raspberry Pi with a fresh installation of [Raspbian](https://www.raspberrypi.org/downloads/raspbian/) Jessie (Stretch is not supported at this time) connected to your network.

    -Note that as of 2016-11-30 SSH is disabled by default in the official Raspbian images. Adding an empty file called `ssh` to `/boot/` or the FAT32 partition will enable it. More information is on the Raspberry Pi Foundation [Blog](https://www.raspberrypi.org/blog/page/2/?fish#a-security-update-for-raspbian-pixel). +Note that as of 2016-11-30 SSH is disabled by default in the official Raspbian images. Adding an empty file called `ssh` to `/boot/` on the FAT32 partition will enable it. More information is on the Raspberry Pi Foundation [Blog](https://www.raspberrypi.org/blog/page/2/?fish#a-security-update-for-raspbian-pixel).

    Irrespective of whether you use SSH to connect to the Pi from another computer or not, you need SSH to install Home Assistant. So go ahead and enable SSH. @@ -62,7 +66,7 @@ To upgrade the All-In-One setup manually: * Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` * Change to homeassistant user `sudo su -s /bin/bash homeassistant` -* Change to virtual enviroment `source /srv/homeassistant/homeassistant_venv/bin/activate` +* Change to virtual environment `source /srv/homeassistant/homeassistant_venv/bin/activate` * Update Home Assistant `pip3 install --upgrade homeassistant` * Type `exit` to logout the hass user and return to the `pi` user. @@ -70,7 +74,7 @@ To upgrade the All-In-One setup manually: **If you deployed Home Assistant via the AiO installer prior to December 2016** * Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` * Change to homeassistant user `sudo su -s /bin/bash hass` -* Change to virtual enviroment `source /srv/hass/hass_venv/bin/activate` +* Change to virtual environment `source /srv/hass/hass_venv/bin/activate` * Update Home Assistant `pip3 install --upgrade homeassistant` * Type `exit` to logout the hass user and return to the `pi` user.
    diff --git a/source/_docs/installation/raspberry-pi.markdown b/source/_docs/installation/raspberry-pi.markdown index bb899d6c377..23d9396ad9e 100644 --- a/source/_docs/installation/raspberry-pi.markdown +++ b/source/_docs/installation/raspberry-pi.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Manual installation on a Raspberry Pi" -description: "Instructions to install Home Assistant on a Raspberry Pi runnning Raspbian Lite." +description: "Instructions to install Home Assistant on a Raspberry Pi running Raspbian Lite." date: 2016-09-05 16:00 sidebar: true comments: false @@ -67,7 +67,7 @@ Once you have activated the virtual environment you will notice the prompt chang (homeassistant) homeassistant@raspberrypi:/srv/homeassistant $ pip3 install homeassistant ``` -Start Home Assistant for the first time. This will complete the installation, create the `.homeasssistant` configuration directory in the `/home/homeassistant` directory and install any basic dependencies. +Start Home Assistant for the first time. This will complete the installation, create the `.homeassistant` configuration directory in the `/home/homeassistant` directory and install any basic dependencies. ```bash (homeassistant) $ hass diff --git a/source/_docs/installation/synology.markdown b/source/_docs/installation/synology.markdown index 1794e430f72..34e228ebb59 100644 --- a/source/_docs/installation/synology.markdown +++ b/source/_docs/installation/synology.markdown @@ -189,10 +189,10 @@ Set the owner and permissions on your config folder Make the daemon file executable: ```bash -# chmod 777 /volume1/homeassistant/hass-daemon +# chmod 755 /volume1/homeassistant/hass-daemon ``` -Update your firewall (if it is turned on on the Synology device): +Update your firewall (if it is turned on the Synology device): - Go to your Synology control panel - Go to security diff --git a/source/_docs/installation/troubleshooting.markdown b/source/_docs/installation/troubleshooting.markdown index 9db877b45dc..5edabe046ae 100644 --- a/source/_docs/installation/troubleshooting.markdown +++ b/source/_docs/installation/troubleshooting.markdown @@ -70,5 +70,5 @@ $ iptables-save > /etc/network/iptables.rules # your rules may be saved elsewhe After upgrading to a new version, you may notice your browser gets stuck at the "loading data" login screen. Close the window/tab and go into your browser settings and delete all the cookies for your URL. You can then log back in and it should work. Android Chrome -chrome -> settings -> site settings -> storage -> search for your URL for home assistant-> "clear & reset" +chrome -> settings -> site settings -> storage -> search for your URL for Home Assistant-> "clear & reset" diff --git a/source/_docs/installation/updating.markdown b/source/_docs/installation/updating.markdown index 6e4cf49c365..f5df3a9361b 100644 --- a/source/_docs/installation/updating.markdown +++ b/source/_docs/installation/updating.markdown @@ -11,7 +11,7 @@ redirect_from: /getting-started/updating/ ---

    -The upgrade process differs depending on the installation you have, so please review the documentation that is specific to your install [HASSbian](/docs/hassbian/common-tasks/#update-home-assistant), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/#upgrading), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant). +The upgrade process differs depending on the installation you have, so please review the documentation that is specific to your install [Hass.io](/hassio/), [HASSbian](/docs/hassbian/common-tasks/#update-home-assistant), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/#upgrading), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant).

    The default way to update Home Assistant to the latest release, when available, is: @@ -23,7 +23,7 @@ $ pip3 install --upgrade homeassistant After updating, you must restart Home Assistant for the changes to take effect. This means that you will have to restart `hass` itself or the [autostarting](/docs/autostart/) daemon (if applicable). Startup can take considerable amount of time (i.e. minutes) depending on your device. This is because all requirements are updated as well.

    -To avoid permission errors, the upgrade must be run as the same user as the installation was completed, again review the documentation specific to your install [HASSbian](/docs/hassbian/installation/), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv). +To avoid permission errors, the upgrade must be run as the same user as the installation was completed, again review the documentation specific to your install [HASSIO](/hassio/), [HASSbian](/docs/hassbian/installation/), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv).

    [BRUH automation](http://www.bruhautomation.com) has created [a tutorial video](https://www.youtube.com/watch?v=tuG2rs1Cl2Y) explaining how to upgrade Home Assistant. diff --git a/source/_docs/installation/virtualenv.markdown b/source/_docs/installation/virtualenv.markdown index 3b46c19fced..00e487c03f2 100644 --- a/source/_docs/installation/virtualenv.markdown +++ b/source/_docs/installation/virtualenv.markdown @@ -19,8 +19,8 @@ Virtualenvs are pretty easy to setup. This example will walk through one method ```bash $ sudo apt-get update $ sudo apt-get upgrade -$ sudo apt-get install python-pip python3-dev -$ sudo pip install --upgrade virtualenv +$ sudo apt-get install python3-pip python3-dev +$ sudo pip3 install --upgrade virtualenv ``` ### {% linkable_title Step 1: Create a Home Assistant user & group %} @@ -42,7 +42,7 @@ $ sudo usermod -G dialout -a homeassistant ### {% linkable_title Step 2: Create a directory for Home Assistant %} -This can be anywhere you want. As example we put it in `/srv`. You also need to change the ownership of the directory to the user you created above (if you created one). +This can be anywhere you want. We chose to put it in `/srv`. You also need to change the ownership of the directory to the user you created above (if you created one). ```bash $ sudo mkdir /srv/homeassistant diff --git a/source/_docs/mqtt/broker.markdown b/source/_docs/mqtt/broker.markdown index 55e3a8a1463..a5f9e9ba70c 100644 --- a/source/_docs/mqtt/broker.markdown +++ b/source/_docs/mqtt/broker.markdown @@ -17,23 +17,28 @@ The MQTT component needs you to run an MQTT broker for Home Assistant to connect Home Assistant contains an embedded MQTT broker. If no broker configuration is given, the [HBMQTT broker](https://pypi.python.org/pypi/hbmqtt) is started and Home Assistant connects to it. Embedded broker default configuration: -| Setting | Value | -| ------- | ----- | -| Host | localhost -| Port | 1883 -| Protocol | 3.1.1 -| User | homeassistant -| Password | Your API [password](/components/http/) -| Websocket port | 8080 +| Setting | Value | +| -------------- | ----- | +| Host | localhost | +| Port | 1883 | +| Protocol | 3.1.1 | +| User | homeassistant | +| Password | Your API [password](/components/http/) | +| Websocket port | 8080 | + ```yaml # Example configuration.yaml entry mqtt: ``` -

    -This broker does not currently work with OwnTracks because of a protocol version issue. -

    +### {% linkable_title Owntracks%} + +To use Owntracks with the internal broker a small configuration change must be made in order for the app to use MQTT protocol 3.1.1 (Protocol Level 4). + +In the Owntracks preferences (Android: v1.2.3+, iOS: v9.5.1+) open **Configuration Management**; Find the value named `mqttProtocolLevel` and set the value to `4`. The application will now use MQTT 3.1.1 to connect, which is compatible with the embedded broker. + +### {% linkable_title Settings %} If you want to customize the settings of the embedded broker, use `embedded:` and the values shown in the [HBMQTT Broker configuration](http://hbmqtt.readthedocs.org/en/latest/references/broker.html#broker-configuration). This will replace the default configuration. @@ -47,33 +52,56 @@ mqtt: ### {% linkable_title Run your own %} -This is the most private option but requires a bit more work. There are multiple free and open-source brokers to pick from: eg. [Mosquitto](http://mosquitto.org/), [EMQ](http://emqtt.io/), or [Mosca](http://www.mosca.io/). +Along with the embedded broker this is the most private option, but it requires a bit more work. There are multiple free and open-source brokers to pick from: eg. [Mosquitto](http://mosquitto.org/), [EMQ](http://emqtt.io/), or [Mosca](http://www.mosca.io/). ```yaml # Example configuration.yaml entry mqtt: broker: 192.168.1.100 - port: 1883 - client_id: home-assistant-1 - keepalive: 60 - username: USERNAME - password: PASSWORD - protocol: 3.1 - tls_insecure: True - tls_version: 1.2 ``` -Configuration variables: - -- **broker** (*Optional*): The IP address or hostname of your MQTT broker, e.g. 192.168.1.32. -- **port** (*Optional*): The network port to connect to. Default is 1883. -- **client_id** (*Optional*): The client ID that Home Assistant will use. Has to be unique on the server. Default is a randomly generated one. -- **keepalive** (*Optional*): The time in seconds between sending keep alive messages for this client. Default is 60. -- **username** (*Optional*): The username to use with your MQTT broker. -- **password** (*Optional*): The corresponding password for the username to use with your MQTT broker. -- **protocol** (*Optional*): Protocol to use: 3.1 or 3.1.1. By default it connects with 3.1.1 and falls back to 3.1 if server does not support 3.1.1. -- **tls_insecure** (*Optional*): Set the verification of the server hostname in the server certificate. -- **tls_version** (*Optional*): TLS/SSL protocol version to use. Available options are: `auto`, `1.0`, `1.1`, `1.2`. Defaults to `auto`. +{% configuration %} +broker: + required: false + description: The IP address or hostname of your MQTT broker, e.g. 192.168.1.32. + type: string +port: + required: false + description: The network port to connect to. Default is 1883. + type: int +client_id: + required: false + description: The client ID that Home Assistant will use. Has to be unique on the server. Default is a randomly generated one. + type: string +keepalive: + required: false + description: The time in seconds between sending keep alive messages for this client. Default is 60. + type: int +username: + required: false + description: The username to use with your MQTT broker. + type: string +password: + required: false + description: The corresponding password for the username to use with your MQTT broker. + type: string +protocol: + required: false + description: "Protocol to use: 3.1 or 3.1.1. By default it connects with 3.1.1 and falls back to 3.1 if server does not support 3.1.1." + type: string +certificate: + required: false + description: Path to the certificate file, eg. `/home/user/.homeassistant/server.crt`. + type: string +tls_insecure: + required: false + description: Set the verification of the server hostname in the server certificate. + type: boolean +tls_version: + required: false + description: "TLS/SSL protocol version to use. Available options are: `auto`, `1.0`, `1.1`, `1.2`. Defaults to `auto`." + type: string +{% endconfiguration %}

    There is an issue with the Mosquitto package included in Ubuntu 14.04 LTS. Specify `protocol: 3.1` in your MQTT configuration to work around this issue. @@ -82,7 +110,7 @@ If you get this error `AttributeError: module 'ssl' has no attribute 'PROTOCOL_T

    -If you are running a mosquitto instance on a different server with proper SSL encryption using a service like letsencrypt you may have to set the certificate to the operating systems own `.crt` certificates file. In the instance of ubuntu this would be `certificate: /etc/ssl/certs/ca-certificates.crt` +If you are running a Mosquitto instance on a different server with proper SSL encryption using a service like Let's Encrypt you may have to set the certificate to the operating systems own `.crt` certificates file. In the instance of Ubuntu this would be `certificate: /etc/ssl/certs/ca-certificates.crt`

    ### {% linkable_title Public broker %} diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown index b32043a6229..98daf5e74ea 100644 --- a/source/_docs/mqtt/discovery.markdown +++ b/source/_docs/mqtt/discovery.markdown @@ -11,11 +11,12 @@ logo: mqtt.png redirect_from: /components/mqtt/#discovery --- -The discovery of MQTT devices will enable one to use MQTT devices with only minimal configuration effort on the side of Home Assistant. The configuration is done on the device itself and the topic used by the device. Similar to the [HTTP binary sensor](/components/binary_sensor.http/) and the [HTTP sensor](/components/sensor.http/). +The discovery of MQTT devices will enable one to use MQTT devices with only minimal configuration effort on the side of Home Assistant. The configuration is done on the device itself and the topic used by the device. Similar to the [HTTP binary sensor](/components/binary_sensor.http/) and the [HTTP sensor](/components/sensor.http/). The basic idea is that the device itself adds its configuration into your `configuration.yaml` automatically. To prevent multiple identical entries if a device reconnects a unique identifier is necessary. Two parts are required on the device side: The configuration topic which contains the necessary device type and unique identifier and the remaining device configuration without the device type. Supported by MQTT discovery: - [Binary sensors](/components/binary_sensor.mqtt/) +- [Fans](/components/fan.mqtt/) - [Lights](/components/light.mqtt/) - [Sensors](/components/sensor.mqtt/) - [Switches](/components/switch.mqtt/) @@ -37,15 +38,18 @@ Configuration variables: The discovery topic need to follow a specific format: ```text -///<> +//[/]/<> ``` - ``: One of the supported components, eg. `binary_sensor`. +- ``: (*Optional*) id of the node providing the topic. - ``: The ID of the device. This will become the `entity_id` in Home Assistant. - `<>`: The topic `config` or `state` which defines the current action. The payload will be checked like an entry in your `configuration.yaml` file if a new device is added. This means that missing variables will be filled with the platform's default values. All configuration variables which are *required* must be present in the initial payload send to `/config`. +The `` level can be used by clients to only subscribe to their own (command) topics by using one wildcard topic like `/+//+/set`. + ### {% linkable_title Examples %} A motion detection device which can be represented by a [binary sensor](/components/binary_sensor.mqtt/) for your garden would sent its configuration as JSON payload to the Configuration topic. After the first message to `config`, then the MQTT messages sent to the state topic will update the state in Home Assistant. @@ -80,3 +84,11 @@ Set the state. ```bash $ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/set" -m ON ``` + +Setting up a sensor with multiple measurement values requires multiple consecutive configuration topic submissions. + +- Configuration topic no1: `homeassistant/sensor/sensorBedroomT/config` +- Configuration payload no1: `{"device_class": "sensor", "name": "Temperature", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "°C", "value_template": "{% raw %}{{ value_json.temperature}}{% endraw %}" }` +- Configuration topic no2: `homeassistant/sensor/sensorBedroomH/config` +- Configuration payload no2: `{"device_class": "sensor", "name": "Humidity", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "%", "value_template": "{% raw %}{{ value_json.humidity}}{% endraw %}" }` +- Common state payload: `{ "temperature": 23.20, "humidity": 43.70 }` diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index 1c6d9e8fbf5..bffc89b8a7b 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -71,17 +71,17 @@ delay: ``` ```yaml -# Waits however many minutes input_slider.minute_delay is set to +# Waits however many minutes input_number.minute_delay is set to # Valid formats include HH:MM and HH:MM:SS -delay: {% raw %}'00:{{ states.input_slider.minute_delay.state | int }}:00'{% endraw %} +delay: {% raw %}'00:{{ states.input_number.minute_delay.state | int }}:00'{% endraw %} ``` ### {% linkable_title Wait %} -Wait until some things are complete. We support at the moment `wait_template` for waiting until a condition is `true`, see also on [Template-Trigger](/getting-started/automation-trigger/#template-trigger). It is possible to set a timeout after that will the script abort his execution. Timeout have same syntax as `delay`. +Wait until some things are complete. We support at the moment `wait_template` for waiting until a condition is `true`, see also on [Template-Trigger](/docs/automation/trigger/#template-trigger). It is possible to set a timeout after which the script will abort its execution if the condition is not satisfied. Timeout has the same syntax as `delay`. ```yaml # wait until media player have stop the playing -wait_template: {% raw %}"{{ states.media_player.floor.states == 'stop' }}"{% endraw %} +wait_template: {% raw %}"{{ states.media_player.floor.state == 'stop' }}"{% endraw %} ``` ```yaml @@ -90,6 +90,28 @@ wait_template: {% raw %}"{{ states.climate.kitchen.attributes.valve < 10 }}"{% e timeout: 00:01:00 ``` +When using `wait_template` within an automation `trigger.entity_id` is supported for `state`, `numeric_state` and `template` triggers, see also [Available-Trigger-Data](/docs/automation/templating/#available-trigger-data). + +{% raw %} +```yaml +wait_template: "{{ is_state(trigger.entity_id, 'on') }}" +``` +{% endraw %} + +It is also possible to use dummy variables, e.g., in scripts, when using `wait_template`. + +{% raw %} +```yaml +# Service call, e.g. from an automation. +service: script.do_something +data_template: + dummy: "{{ input_boolean.switch }}" + +# Inside the script +wait_template: "{{ is_state(dummy, 'off') }}" +``` +{% endraw %} + ### {% linkable_title Fire an Event %} This action allows you to fire an event. Events can be used for many things. It could trigger an automation or indicate to another component that something is happening. For instance, in the below example it is used to create an entry in the logbook. diff --git a/source/_docs/scripts/editor.markdown b/source/_docs/scripts/editor.markdown new file mode 100644 index 00000000000..a69ae296923 --- /dev/null +++ b/source/_docs/scripts/editor.markdown @@ -0,0 +1,28 @@ +--- +layout: page +title: "Script Editor" +description: "Instructions on how to use the new script editor." +date: 2016-08-26 03:30 +0000 +sidebar: true +comments: false +sharing: true +footer: true +redirect_from: /docs/script/editor/ +--- + +In Home Assistant 0.52 we introduced the first version of our automation editor. If you just created a new configuration with Home Assistant then you're all set! Go to the UI and enjoy. + +
    + +
    + +## {% linkable_title Updating your configuration to use the editor %} + +The script editor reads and writes to the file `scripts.yaml` in your [configuration](/docs/configuration/) folder. Make sure that you have set up the script component to read from it: + +```yaml +# Configuration.yaml example +script: !include scripts.yaml +``` + +The content that was under `script:` should now be moved to `scripts.yaml` to be editable. diff --git a/source/_docs/scripts/service-calls.markdown b/source/_docs/scripts/service-calls.markdown index 58ee3b4b924..b1b18333403 100644 --- a/source/_docs/scripts/service-calls.markdown +++ b/source/_docs/scripts/service-calls.markdown @@ -47,7 +47,7 @@ You can use [templating] support to dynamically choose which service to call. Fo ```yaml service_template: > - {% raw %}{% if states.sensor.temperature | float > 15 %} + {% raw %}{% if states.sensor.temperature.state | float > 15 %} switch.turn_on {% else %} switch.turn_off diff --git a/source/_docs/tools/hass.markdown b/source/_docs/tools/hass.markdown index 29939a17f11..3ba0896f359 100644 --- a/source/_docs/tools/hass.markdown +++ b/source/_docs/tools/hass.markdown @@ -37,9 +37,9 @@ optional arguments: --log-rotate-days LOG_ROTATE_DAYS Enables daily log rotation and keeps up to the specified days + --log-file LOG_FILE Log file to write to. If not set, CONFIG/home- + assistant.log is used --runner On restart exit with code 100 --script ... Run one of the embedded scripts --daemon Run Home Assistant as daemon ``` - - diff --git a/source/_docs/tools/scripts.markdown b/source/_docs/tools/scripts.markdown index c5b0cce18a8..a0b96505e3f 100644 --- a/source/_docs/tools/scripts.markdown +++ b/source/_docs/tools/scripts.markdown @@ -9,7 +9,7 @@ sharing: true footer: true --- -The command-line and the frontend which simplify common tasks, are helping with migrations, and ensure that Home Assistant runs properly. Please do not confuse those with with Home Assistant's [script](/docs/scripts/) feature. +The command-line and the frontend which simplify common tasks, are helping with migrations, and ensure that Home Assistant runs properly. Please do not confuse those with Home Assistant's [script](/docs/scripts/) feature. ### {% linkable_title Configuration check %} @@ -19,7 +19,7 @@ Test any changes to your `configuration.yaml` file before launching Home Assista $ hass --script check_config ``` -### {% linkable_title Existance of configuration %} +### {% linkable_title Existence of configuration %} This script checks if the `configuration.yaml` file exists. If the file is not available, one is created. @@ -37,7 +37,7 @@ $ hass --script keyring ### {% linkable_title Benchmark %} -For testing the performance of Home Assistant the Benchmark scipt runs until you exit using Control+C. +For testing the performance of Home Assistant the Benchmark script runs until you exit using Control+C. Firing and handling of a million events. @@ -47,7 +47,7 @@ $ hass --script benchmark async_million_events ### {% linkable_title Old scripts %} -Usally those scripts were only used when a massive update happend and was announced in the release notes. +Usually those scripts were only used when a massive update happened and was announced in the release notes. - `db_migrator`: Migrate an existing SQLite database to the new schema. - `influxdb_migrator`: Convert an old InfluxDB to the new format. diff --git a/source/_docs/z-wave.markdown b/source/_docs/z-wave.markdown index 1cabf9a302d..98c9ffc9008 100644 --- a/source/_docs/z-wave.markdown +++ b/source/_docs/z-wave.markdown @@ -1,8 +1,8 @@ --- layout: page title: "Z-Wave" -description: "Instructions how to integrate your existing Z-Wave within Home Assistant." -date: 2016-02-27 19:59 +description: "Using Z-Wave with Home Assistant." +date: 2017-09-21 10:59 sidebar: true comments: false sharing: true @@ -10,228 +10,30 @@ footer: true redirect_from: /getting-started/z-wave/ --- -[Z-Wave](http://www.z-wave.com/) integration for Home Assistant allows you to observe and control connected Z-Wave devices. Z-Wave support requires a [supported Z-Wave USB stick or module](https://github.com/OpenZWave/open-zwave/wiki/Controller-Compatibility-List) to be plugged into the host. +[Z-Wave](http://www.z-wave.com/) integration for Home Assistant allows you to observe and control connected Z-Wave devices. Z-Wave support requires a [supported Z-Wave USB stick or module](/docs/z-wave/controllers/) to be plugged into the host. -There is currently support for climate, covers, lights, locks, sensors, switches and thermostats. All will be picked up automatically after configuring this platform. +There is currently support for climate, covers, lights, locks, sensors, switches, and thermostats. All will be picked up automatically after configuring this platform. -### {% linkable_title Installation %} +Before configuring the Z-Wave setup, please take a moment and read [this article](https://drzwave.blog/2017/01/20/seven-habits-of-highly-effective-z-wave-networks-for-consumers/) to understand the most common pitfalls of Z-Wave networks. -As of version 0.45, Home Assistant automatically installs python-openzwave from PyPI as needed. +## {% linkable_title What is Z-Wave %} -There is one dependency you will need to have installed ahead of time: +Z-Wave is a wireless communication protocol designed for home automation. It uses a low power, and low bandwidth, mesh network that allows devices that aren't within direct range of each other to communicate indirectly, via other nodes. Any device that's permanently powered (not battery powered) will help build the mesh, if you don't have enough powered devices, or you locate these poorly, your mesh will be unreliable. -```bash -$ sudo apt-get install libudev-dev -``` +There is a limit of 232 devices in a single Z-Wave network. If you need more devices then you could set up a second Home Assistant system with its own Z-Wave network and connect these with the [MQTT Eventstream](/components/mqtt_eventstream/) or [MQTT Statestream](/components/mqtt_statestream) components. -### {% linkable_title Configuration %} +The Z-Wave standard was improved with Z-Wave Plus, and if you only use Z-Wave plus devices then you will gain the full benefits. -```yaml -# Example configuration.yaml entry -zwave: - usb_path: /dev/ttyUSB0 -``` +## {% linkable_title What do you need to use Z-Wave %} -Configuration variables: +There are 2 basic things you'll need to use Z-Wave, a Z-Wave [controller](/docs/z-wave/controllers/) and one or more [devices](/docs/z-wave/devices/). -- **usb_path** (*Optional*): The port where your device is connected to your Home Assistant host. -- **config_path** (*Optional*): The path to the Python OpenZWave configuration files. Defaults to the 'config' that is installed by python-openzwave -- **autoheal** (*Optional*): Allows disabling auto Z-Wave heal at midnight. Defaults to True. -- **polling_interval** (*Optional*): 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. -- **device_config** (*Optional*): This attribute contains node-specific override values. (For releases prior to 0.39 this variable is called **customize**) See [Customizing devices and services](https://home-assistant.io/getting-started/customizing-devices/) for format: - - **polling_intensity** (*Optional*): 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. - - **ignored** (*Optional*): Ignore this entity completely. It won't be shown in the Web Interface and no events are generated for it. - - **refresh_value** (*Optional*): Enable refreshing of the node value. Only the light component uses this. Defaults to False. - - **delay** (*Optional*): Specify the delay for refreshing of node value. Only the light component uses this. Defaults to 2 seconds. - - **invert_openclose_buttons** (*Optional*): Inverts function of the open and close buttons for the cover domain. Defaults to `False`. -- **debug** (*Optional*): Print verbose z-wave info to log. Defaults to `False`. -- **new_entity_ids** (*Optional*): Switch to new entity_id generation. Defaults to `False`. +### {% linkable_title Regional differences %} -To find the path of your Z-Wave USB stick or module, run: +There are 12 different regions for Z-Wave devices, which relates to the frequency the devices use. There is overlap between the regions, but you should ensure that you buy devices for your region. Wikipedia has a list of the [frequencies used](https://en.wikipedia.org/wiki/Z-Wave#Radio_frequencies). -```bash -$ ls /dev/ttyUSB* -``` +## {% linkable_title Getting started %} -Or, if there is no result try to find detailed USB connection info with: -```bash -$ dmesg | grep USB -``` +You'll now need to connect your [controller](/docs/z-wave/controllers/), [configure](/docs/z-wave/installation) the Z-Wave component, then [add some devices](/docs/z-wave/adding) using the [control panel](/docs/z-wave/control-panel). [This explains](/docs/z-wave/devices/) about devices, and how [entities are named](/docs/z-wave/entities). -Or, on some other systems (such as Raspberry Pi), use: - -```bash -$ ls /dev/ttyACM* - -# If Home Assistant (`hass`) runs with another user (e.g. *homeassistant* on Hassbian) give access to the stick with: -$ sudo usermod -a -G dialout homeassistant -``` - -Or, on some other systems (such as Pine 64), use: - -```bash -$ ls /dev/ttyS* -``` - -Or, on macOS, use: - -```bash -$ ls /dev/cu.usbmodem* -``` - -

    -Depending on what's plugged into your USB ports, the name found above may change. You can lock in a name, such as `/dev/zwave`, by following [these instructions](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/). -

    - -### {% linkable_title Adding Devices %} - -To add a Z-Wave device to your system, go to the Services menu and select the `zwave` domain, and select the `add-node` service. Then find your device's add button and press that as well. - -### {% linkable_title Adding Security Devices %} - -Security Z-Wave devices require a network key before being added to the network using the `zwave.add_node_secure` service. You must edit the `options.xml` file, located in your `python-openzwave config_path` to use a network key before adding these devices. - -Edit your `options.xml` file: - -```bash - -``` -Uncomment the line: -```bash -
  • Governance
    • {% active_link /developers/cla/ Contributor License Agreement %}
    • -
    • {% active_link /developers/code_of_conduct/ Code of Conduct %}
    • +
    • {% active_link /privacy/ Privacy Policy %}
    • +
    • {% active_link /tos/ Terms of Service %}
    • +
    • {% active_link /code_of_conduct/ Code of Conduct %}
    • {% active_link /developers/credits/ Credits %}
    • {% active_link /developers/license/ License %}
    diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html index f3351b1d62f..cc64ef04a9f 100644 --- a/source/_includes/asides/docs_navigation.html +++ b/source/_includes/asides/docs_navigation.html @@ -3,26 +3,22 @@

    Topics

  • diff --git a/source/_includes/custom/header.html b/source/_includes/custom/header.html index 15f04816fdc..d0b387b1c1c 100644 --- a/source/_includes/custom/header.html +++ b/source/_includes/custom/header.html @@ -9,4 +9,12 @@ + + diff --git a/source/_includes/custom/navigation.html b/source/_includes/custom/navigation.html index d6188c1408e..1179c86bef7 100644 --- a/source/_includes/custom/navigation.html +++ b/source/_includes/custom/navigation.html @@ -16,4 +16,5 @@
  • Developers
  • Blog
  • Need help?
  • +
  • diff --git a/source/_includes/javascripts/algolia.html b/source/_includes/javascripts/algolia.html new file mode 100644 index 00000000000..a8540981b1d --- /dev/null +++ b/source/_includes/javascripts/algolia.html @@ -0,0 +1,20 @@ + + + diff --git a/source/_includes/javascripts/scripts.html b/source/_includes/javascripts/scripts.html index 3c82a307581..32903641a22 100644 --- a/source/_includes/javascripts/scripts.html +++ b/source/_includes/javascripts/scripts.html @@ -5,8 +5,9 @@ {% include javascripts/google_analytics.html %} {% include javascripts/disqus.html %} +{% include javascripts/algolia.html %} {% if page.sidebar != false %} {% include javascripts/github.html %} {% include javascripts/delicious.html %} -{% endif %} \ No newline at end of file +{% endif %} diff --git a/source/_includes/site/head.html b/source/_includes/site/head.html index 0c2a76007fc..b78976a342a 100644 --- a/source/_includes/site/head.html +++ b/source/_includes/site/head.html @@ -32,7 +32,7 @@ - + diff --git a/source/_includes/site/sidebar.html b/source/_includes/site/sidebar.html index 9f0cf41e435..289411a118b 100644 --- a/source/_includes/site/sidebar.html +++ b/source/_includes/site/sidebar.html @@ -10,6 +10,8 @@ {% include asides/getting_started_navigation.html | compact_newlines %} {% elsif url_parts[1] == 'docs' %} {% include asides/docs_navigation.html | compact_newlines %} + {% elsif url_parts[1] == 'faq' %} + {% include asides/faq_navigation.html | compact_newlines %} {% elsif url_parts[1] == 'hassio' or url_parts[1] == 'addons' %} {% include asides/hassio_navigation.html | compact_newlines %} {% else %} diff --git a/source/_layouts/default.html b/source/_layouts/default.html index f6ff101ca12..5c8e47d068f 100644 --- a/source/_layouts/default.html +++ b/source/_layouts/default.html @@ -6,7 +6,7 @@ layout: compress -
    + @@ -42,4 +42,4 @@ layout: compress {% include javascripts/scripts.html %} - \ No newline at end of file + diff --git a/source/_posts/2014-12-26-home-control-home-automation-and-the-smart-home.markdown b/source/_posts/2014-12-26-home-control-home-automation-and-the-smart-home.markdown index 1568f7828d7..11021623c7f 100644 --- a/source/_posts/2014-12-26-home-control-home-automation-and-the-smart-home.markdown +++ b/source/_posts/2014-12-26-home-control-home-automation-and-the-smart-home.markdown @@ -13,7 +13,7 @@ categories: Internet-of-Things The internet has been buzzing over the last year about home automation. A lot of different terms fly around like the internet of things, home automation and the smart home. This article will try to explain how they all relate. -The first thing to introduce is the **Internet of Things** (IoT). This refers to a new generation of devices that cannot only be controlled by humans via buttons or remotes but also provide an interface to communicate with other devices and applications. For example, an IoT-capable coffee machine could receive commands to create different types of coffee and be able to broadcast the amount of water left in its resevoir. +The first thing to introduce is the **Internet of Things** (IoT). This refers to a new generation of devices that cannot only be controlled by humans via buttons or remotes but also provide an interface to communicate with other devices and applications. For example, an IoT-capable coffee machine could receive commands to create different types of coffee and be able to broadcast the amount of water left in its reservoir. There is no widely adopted open standard for smart device communication. This prevents a lot of devices to communicate with one another. And even if they could, most devices are not designed to manage other devices. To solve this we need a device to be able to communicate with and manage all these connected devices. This device is called a **hub**. diff --git a/source/_posts/2015-01-11-bootstrapping-your-setup-with-discovery.markdown b/source/_posts/2015-01-11-bootstrapping-your-setup-with-discovery.markdown index 832047cc39e..a5e7026dd99 100644 --- a/source/_posts/2015-01-11-bootstrapping-your-setup-with-discovery.markdown +++ b/source/_posts/2015-01-11-bootstrapping-your-setup-with-discovery.markdown @@ -12,7 +12,7 @@ categories: Release-Notes Most people do not like configuring things. Things just have to work, out of the box. Reaching this scenario is the goal of what we are about to introduce: our new discovery component. -The discovery component will scan the WiFi network from time to time for connected zeroconf/mDNS and uPnP devices. The intial introduction is mainly focussed on getting the right architecture in place and discovers Belkin WeMo switches and Google Chromecasts connected to your network. When found, it will load and notify the appropritate component and it will be ready to use within seconds. +The discovery component will scan the WiFi network from time to time for connected zeroconf/mDNS and uPnP devices. The initial introduction is mainly focussed on getting the right architecture in place and discovers Belkin WeMo switches and Google Chromecasts connected to your network. When found, it will load and notify the appropritate component and it will be ready to use within seconds. Most devices still require some sort of interaction from the user after being discovered - be it a button being pressed or some sort of authentication. This is a challenge that will be solved in the future. diff --git a/source/_posts/2015-02-07-looking-at-the-past.markdown b/source/_posts/2015-02-07-looking-at-the-past.markdown index b4706389c52..dad5e30306d 100644 --- a/source/_posts/2015-02-07-looking-at-the-past.markdown +++ b/source/_posts/2015-02-07-looking-at-the-past.markdown @@ -28,7 +28,7 @@ The history component will be enabled for new users by default. For current user

    -Events are saved in a local database. Google Graphs is used to draw the graph. Drawing is happening 100% in your browser - no data is transfered to anyone at any time. +Events are saved in a local database. Google Graphs is used to draw the graph. Drawing is happening 100% in your browser - no data is transferred to anyone at any time.

    diff --git a/source/_posts/2015-02-24-streaming-updates.markdown b/source/_posts/2015-02-24-streaming-updates.markdown index a6b2c071185..1ade9874f58 100644 --- a/source/_posts/2015-02-24-streaming-updates.markdown +++ b/source/_posts/2015-02-24-streaming-updates.markdown @@ -12,7 +12,7 @@ categories: Release-Notes Home Assistant has learned a new trick to get the latest information from the server: streaming updates. No longer will the frontend poll every 30 seconds for updates but instead it will keep a connection open and get the latest changes pushed as soon as they happen. -A new toggle has been added ot the sidebar to turn streaming updates on and off. This preference will be saved on a per-browser basis using local storage. The toggle will also indicate when there is an error setting up a stream after which it will fall back to use polling. +A new toggle has been added to the sidebar to turn streaming updates on and off. This preference will be saved on a per-browser basis using local storage. The toggle will also indicate when there is an error setting up a stream after which it will fall back to use polling.

    diff --git a/source/_posts/2015-07-11-ip-cameras-arduino-kodi-efergy-support.markdown b/source/_posts/2015-07-11-ip-cameras-arduino-kodi-efergy-support.markdown index b192d9b9bbd..ce431a91dab 100644 --- a/source/_posts/2015-07-11-ip-cameras-arduino-kodi-efergy-support.markdown +++ b/source/_posts/2015-07-11-ip-cameras-arduino-kodi-efergy-support.markdown @@ -15,7 +15,7 @@ Another month has passed and some great new features have landed in Home Assista This release includes some architectural changes by me. The first is that the frontend is now based on a [NuclearJS](http://optimizely.github.io/nuclear-js/) JavaScript backend. This has greatly helped to organize and optimize the frontend code. Another change is that Home Assistant will now install dependencies on-demand instead of installing dependencies for all supported devices. __IP Camera Support__ -James has worked very hard to add support for IP cameras to Home Assistant which is included in this release. The initial release focusses on providing generic IP camera support. This means that any webcam that can exposes a JPEG image via a url can be integrated. +James has worked very hard to add support for IP cameras to Home Assistant which is included in this release. The initial release focusses on providing generic IP camera support. This means that any webcam that can exposes a JPEG image via a URL can be integrated. Home Assistant will route the requests to your camera via the server allowing you to expose IP camera's inside your network via the Home Assistant app. diff --git a/source/_posts/2015-09-13-home-assistant-meets-ifttt.markdown b/source/_posts/2015-09-13-home-assistant-meets-ifttt.markdown index d8a76a3b99f..fb3ef97b205 100644 --- a/source/_posts/2015-09-13-home-assistant-meets-ifttt.markdown +++ b/source/_posts/2015-09-13-home-assistant-meets-ifttt.markdown @@ -26,7 +26,7 @@ Head over to the [setup instructions](/components/ifttt/) to get started with IF -In each of the following examples, make sure to replace the XXX in the url with your correct host address and api password. +In each of the following examples, make sure to replace the XXX in the URL with your correct host address and API password. ## {% linkable_title Turn off irregation system when not needed %} diff --git a/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown b/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown index 94e2d8fae5d..8c20fd7c4fc 100644 --- a/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown +++ b/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown @@ -10,7 +10,7 @@ comments: true categories: Release-Notes --- -It's like someone opened a can of rock solid developers and emptied it above our [chat channel](https://gitter.im/balloob/home-assistant) because it exploded with great conversations and solid contributions. Featured in release 0.7.3: Sonos, iTunes, Alarm component and Automation upgrade. +It's like someone opened a can of rock solid developers and emptied it above our [chat channel](https://discord.gg/c5DvZ4e) because it exploded with great conversations and solid contributions. Featured in release 0.7.3: Sonos, iTunes, Alarm component and Automation upgrade. See [GitHub](https://github.com/home-assistant/home-assistant/releases/tag/0.7.3) for more detailed release notes. diff --git a/source/_posts/2015-10-11-measure-temperature-with-esp8266-and-report-to-mqtt.markdown b/source/_posts/2015-10-11-measure-temperature-with-esp8266-and-report-to-mqtt.markdown index 4708b214852..dec8efef225 100644 --- a/source/_posts/2015-10-11-measure-temperature-with-esp8266-and-report-to-mqtt.markdown +++ b/source/_posts/2015-10-11-measure-temperature-with-esp8266-and-report-to-mqtt.markdown @@ -15,7 +15,7 @@ og_image: /images/blog/2015-10-esp8266-temp/ha-sensor.png I recently learned about the ESP8266, a $5 chip that includes WiFi and is Arduino compatible. This means that all your DIY projects can now be done for a fraction of the price. -For this tutorial, I'll walk through how to get going with ESP8266, get the temperature and humidity and report it to MQTT where Home Asssistant can pick it up. +For this tutorial, I'll walk through how to get going with ESP8266, get the temperature and humidity and report it to MQTT where Home Assistant can pick it up.

    diff --git a/source/_posts/2015-10-11-rfxtrx-blinkstick-and-snmp-support.markdown b/source/_posts/2015-10-11-rfxtrx-blinkstick-and-snmp-support.markdown index be8e58397f3..f5faa530dbd 100644 --- a/source/_posts/2015-10-11-rfxtrx-blinkstick-and-snmp-support.markdown +++ b/source/_posts/2015-10-11-rfxtrx-blinkstick-and-snmp-support.markdown @@ -10,7 +10,7 @@ comments: true categories: Release-Notes --- -We discovered two issues annoying enough to warrent the release of 0.7.5: +We discovered two issues annoying enough to warrant the release of 0.7.5: - Home Assistant package did not include the CloudMQTT certificate. - A bug in the core caused issues when some platforms are loaded twice. diff --git a/source/_posts/2015-11-22-survey-november-2015.markdown b/source/_posts/2015-11-22-survey-november-2015.markdown index 42a6e6e77ec..09efee533db 100644 --- a/source/_posts/2015-11-22-survey-november-2015.markdown +++ b/source/_posts/2015-11-22-survey-november-2015.markdown @@ -10,7 +10,7 @@ categories: Survey og_image: /images/blog/2015-11-survey/releases.png --- -Around a week ago we started with the first survey. Now 30 people have participated. Thank you very much if you did. We think that's enough time to have some "only partially representative" data. It's hard to tell how many Home Assistant users are out there. Currently there are 215 members in our [Gitter chat room](https://gitter.im/balloob/home-assistant) and last week [PyPI](https://pypi.python.org/pypi/homeassistant/) counted 5063 downloads. +Around a week ago we started with the first survey. Now 30 people have participated. Thank you very much if you did. We think that's enough time to have some "only partially representative" data. It's hard to tell how many Home Assistant users are out there. Currently there are 215 members on our [Discord chat server](https://discord.gg/c5DvZ4e) and last week [PyPI](https://pypi.python.org/pypi/homeassistant/) counted 5063 downloads. The idea was to anonymously collect some details about the usage of the different parts of Home Assistant and a little bit about the environment its running in. diff --git a/source/_posts/2015-12-07-influxdb-and-grafana.markdown b/source/_posts/2015-12-07-influxdb-and-grafana.markdown index d7a53295700..64e51095bf9 100644 --- a/source/_posts/2015-12-07-influxdb-and-grafana.markdown +++ b/source/_posts/2015-12-07-influxdb-and-grafana.markdown @@ -12,7 +12,7 @@ og_image: /images/blog/2015-12-influxdb/grafana-graph.png --- -The [InfluxDB](https://influxdb.com/) database is a so-called time series database primarly designed to store sensor data and real-time analytics. +The [InfluxDB](https://influxdb.com/) database is a so-called time series database primarily designed to store sensor data and real-time analytics. The `influxdb` component makes it possible to transfer all state changes from Home Assistant to an external [InfluxDB](https://influxdb.com/) database. diff --git a/source/_posts/2015-12-13-setup-encryption-using-lets-encrypt.markdown b/source/_posts/2015-12-13-setup-encryption-using-lets-encrypt.markdown index f9a35585998..a896c618ada 100644 --- a/source/_posts/2015-12-13-setup-encryption-using-lets-encrypt.markdown +++ b/source/_posts/2015-12-13-setup-encryption-using-lets-encrypt.markdown @@ -11,6 +11,10 @@ categories: How-To og_image: /images/blog/2015-12-lets-encrypt/letsencrypt-secured-fb.png --- +

    +The instructions in this blog post are outdated. Please have a look at the new instructions. +

    + Exposing your Home Assistant instance outside of your network always has been tricky. You have to set up port forwarding on your router and most likely add a dynamic DNS service to work around your ISP changing your IP. After this you would be able to use Home Assistant from anywhere but there is one big red flag: no encryption. This tutorial will take you through the steps to setup a dynamic DNS for your IP and allow trusted encrypted connection to it - for free using [DuckDNS] and [Let's Encrypt]. diff --git a/source/_posts/2016-01-29-insteon-lifx-twitter-and-zigbee.markdown b/source/_posts/2016-01-29-insteon-lifx-twitter-and-zigbee.markdown index 7315aa2e59b..22851a07e7d 100644 --- a/source/_posts/2016-01-29-insteon-lifx-twitter-and-zigbee.markdown +++ b/source/_posts/2016-01-29-insteon-lifx-twitter-and-zigbee.markdown @@ -13,7 +13,7 @@ og_image: /images/blog/2016-01-release-12/social.png Another sprint has come to an end and it seems that we have not slowed down a single bit 🚀. 0.12 is full of new components, platforms and organizational additions. -I would like to give a shout out to [Greg Dowling (@pavoni)][@pavoni] as every release includes new work from him. He is constantly adding support for new platforms or improving the reliablity of existing components and platforms. Keep up the good work! +I would like to give a shout out to [Greg Dowling (@pavoni)][@pavoni] as every release includes new work from him. He is constantly adding support for new platforms or improving the reliability of existing components and platforms. Keep up the good work! This release includes a very frequent requested feature: the ability to organize entities in different tabs in the frontend. See [the demo] to see this in action and read more in the [group documentation][group] how to get started. diff --git a/source/_posts/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.markdown b/source/_posts/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.markdown index 2039dae8742..33ada39515d 100644 --- a/source/_posts/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.markdown +++ b/source/_posts/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.markdown @@ -111,7 +111,7 @@ mqtt: broker: localhost ``` -Replace `localhost` with the location of the running MQTT Broker. Devices from the MQTT Bridge are published to the path `smartthings//` +Replace `localhost` with the location of the running MQTT Broker. Devices from the MQTT Bridge are published to the path `smartthings//` For example, my Dimmer Z-Wave Lamp is called "Fireplace Lights" in SmartThings. The following topics are published: diff --git a/source/_posts/2016-02-11-classifying-the-internet-of-things.markdown b/source/_posts/2016-02-11-classifying-the-internet-of-things.markdown index e346e352169..1cb7f6578b8 100644 --- a/source/_posts/2016-02-11-classifying-the-internet-of-things.markdown +++ b/source/_posts/2016-02-11-classifying-the-internet-of-things.markdown @@ -2,7 +2,7 @@ layout: post title: "Classifying the Internet of Things" description: "" -date: 2016-02-11 22:31:00 -0800 +date: 2016-02-12 22:31:00 UTC date_formatted: "February 12, 2016" author: Paulus Schoutsen author_twitter: balloob @@ -88,7 +88,7 @@ Advantages: Disadvantages: - - Home automation will assume the wrong state if the the command is not received correctly or if the device is controlled in any other way outside of the home automation system. + - Home automation will assume the wrong state if the command is not received correctly or if the device is controlled in any other way outside of the home automation system. ### {% linkable_title Polling the cloud %} These are devices that will only report their state to their own cloud backend. The cloud backend will allow reading the state but will not notify when a new state has arrived. This requires the home automation to check frequently if the state has been updated. @@ -143,7 +143,7 @@ Controlling a device can, just like state, be done through cloud and/or local co These devices are not able to be controlled. They will only offer state. ### {% linkable_title Poll State after sending command %} -These devices will require the state to be polled after sending a command to see if a command was successfull. +These devices will require the state to be polled after sending a command to see if a command was successful. Advantages: diff --git a/source/_posts/2016-02-13-speedtest-bloomsky-splunk-and-garage-doors.markdown b/source/_posts/2016-02-13-speedtest-bloomsky-splunk-and-garage-doors.markdown index 19f9169fb6f..de5e7e7760b 100644 --- a/source/_posts/2016-02-13-speedtest-bloomsky-splunk-and-garage-doors.markdown +++ b/source/_posts/2016-02-13-speedtest-bloomsky-splunk-and-garage-doors.markdown @@ -2,7 +2,7 @@ layout: post title: "0.13: Speedtest.net, Bloomsky, Splunk and Garage Doors" description: "Home Assistant 0.13 brings test coverage to a whopping 90% and adds a whole bunch of new components." -date: 2016-02-12 22:15:00 -0800 +date: 2016-02-13 22:15:00 UTC date_formatted: "February 13, 2016" author: Paulus Schoutsen author_twitter: balloob diff --git a/source/_posts/2016-04-04-your-hub-should-be-local-and-open.markdown b/source/_posts/2016-04-04-your-hub-should-be-local-and-open.markdown index 653665fbeb9..d56e8b0d3c7 100644 --- a/source/_posts/2016-04-04-your-hub-should-be-local-and-open.markdown +++ b/source/_posts/2016-04-04-your-hub-should-be-local-and-open.markdown @@ -2,7 +2,7 @@ layout: post title: "Your hub should be local and open" description: "Running a hub that depends on the cloud is a risk that can cost you your home automation." -date: 2016-04-04 21:11:00 -0700 +date: 2016-04-05 21:11:00 UTC date_formatted: "April 5, 2016" author: Paulus Schoutsen author_twitter: balloob diff --git a/source/_posts/2016-04-07-static-website.markdown b/source/_posts/2016-04-07-static-website.markdown index 911e442b635..a4ec4f90b1f 100644 --- a/source/_posts/2016-04-07-static-website.markdown +++ b/source/_posts/2016-04-07-static-website.markdown @@ -21,7 +21,7 @@ But there is more you can do! You can not only host images for customization the -In the past the buzz word "Smart mirror" was used a couple of times in our [chatroom](https://gitter.im/balloob/home-assistant) and even made it into the [issue tracker](https://github.com/home-assistant/home-assistant/issues/1392). The existing solutions ([Smart mirror](http://docs.smart-mirror.io/), [MagicMirror](http://michaelteeuw.nl/tagged/magicmirror), and [HomeMirror](https://github.com/HannahMitt/HomeMirror)) seems to be overkill if you already have Home Assistant running somewhere in your house or apartment. Why not simple display a web page served by Home Assistant on the tablet? No app and no Raspberry Pi running in the background. +In the past the buzz word "Smart mirror" was used a couple of times in our [chatroom](https://discord.gg/c5DvZ4e) and even made it into the [issue tracker](https://github.com/home-assistant/home-assistant/issues/1392). The existing solutions ([Smart mirror](http://docs.smart-mirror.io/), [MagicMirror](http://michaelteeuw.nl/tagged/magicmirror), and [HomeMirror](https://github.com/HannahMitt/HomeMirror)) seems to be overkill if you already have Home Assistant running somewhere in your house or apartment. Why not simple display a web page served by Home Assistant on the tablet? No app and no Raspberry Pi running in the background. There are plenty of ways to achieve this...[RESTful API](/developers/rest_api/), [Python API](/developers/python_api/), or one of the [history components](/components/#history). If it is to be a web page I'm using the [MQTT Eventstream component](/components/mqtt_eventstream/) and [mqttws31.js](http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.javascript.git/tree/src). diff --git a/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown b/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown index 3b5dfa4c65f..33c8d3e97c5 100644 --- a/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown +++ b/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown @@ -2,7 +2,7 @@ layout: post title: "0.17: Onkyo, Panasonic, GTFS and config validation" description: "Home Assistant 0.17 has arrived." -date: 2016-04-08 23:10:00 -0700 +date: 2016-04-09 23:10:00 UTC date_formatted: "April 9, 2016" author: Paulus Schoutsen author_twitter: balloob diff --git a/source/_posts/2016-04-17-updated-documentation.markdown b/source/_posts/2016-04-17-updated-documentation.markdown index 8d87f518ef1..e0e956e4f0e 100644 --- a/source/_posts/2016-04-17-updated-documentation.markdown +++ b/source/_posts/2016-04-17-updated-documentation.markdown @@ -2,7 +2,7 @@ layout: post title: "Updated documentation" description: "We have reorganised our documentation which should make it easier to get started and develop for Home Assistant." -date: 2016-04-16 23:09:00 -0700 +date: 2016-04-17 23:09:00 UTC date_formatted: "April 17, 2016" author: Paulus Schoutsen author_twitter: balloob diff --git a/source/_posts/2016-04-19-to-infinity-and-beyond.markdown b/source/_posts/2016-04-19-to-infinity-and-beyond.markdown index 0c9e4602685..e8b0e0ffd2d 100644 --- a/source/_posts/2016-04-19-to-infinity-and-beyond.markdown +++ b/source/_posts/2016-04-19-to-infinity-and-beyond.markdown @@ -2,7 +2,7 @@ layout: post title: "To Infinity and Beyond 🚀" description: "The state of Home Assistant: past, present, future." -date: 2016-04-18 22:44:00 -0700 +date: 2016-04-19 22:44:00 UTC date_formatted: "April 19, 2016" author: Paulus Schoutsen author_twitter: balloob @@ -37,5 +37,5 @@ Paulus [gh-ha]: https://github.com/home-assistant/ [filling in the blanks]: /developers/platform_example_sensor/#code -[chat room]: https://gitter.im/home-assistant/home-assistant +[chat room]: https://discord.gg/c5DvZ4e [forums]: https://community.home-assistant.io/ diff --git a/source/_posts/2016-04-21-bluetooth-lg-webos-tvs-and-roombas.markdown b/source/_posts/2016-04-21-bluetooth-lg-webos-tvs-and-roombas.markdown index fbfce7cbc9b..14794081d8a 100644 --- a/source/_posts/2016-04-21-bluetooth-lg-webos-tvs-and-roombas.markdown +++ b/source/_posts/2016-04-21-bluetooth-lg-webos-tvs-and-roombas.markdown @@ -2,8 +2,8 @@ layout: post title: "0.18: Bluetooth, LG WebOS TVs and Roombas." description: "Home Assistant 0.18 has arrived." -date: 2016-04-19 23:10:00 -0700 -date_formatted: "April 21, 2016" +date: 2016-04-20 23:10:00 UTC +date_formatted: "April 20, 2016" author: Paulus Schoutsen author_twitter: balloob comments: true diff --git a/source/_posts/2016-06-01-community-highlights.markdown b/source/_posts/2016-06-01-community-highlights.markdown index 2d51874238d..730e4e3591c 100644 --- a/source/_posts/2016-06-01-community-highlights.markdown +++ b/source/_posts/2016-06-01-community-highlights.markdown @@ -37,7 +37,7 @@ Muhammed Kilic has created a video how to make your Home Assistant instance acce -[chat room]: https://gitter.im/home-assistant/home-assistant +[chat room]: https://discord.gg/c5DvZ4e [SceneGen]: https://github.com/acockburn/scenegen [Andrew Cockburn]: https://github.com/acockburn [BRUH Automation]: http://www.bruhautomation.com/ diff --git a/source/_posts/2016-07-01-envisalink-homematic-hdmi-cec-and-sony-bravia-tv.markdown b/source/_posts/2016-07-01-envisalink-homematic-hdmi-cec-and-sony-bravia-tv.markdown index b28b26b7cd4..31b5ff35bc0 100644 --- a/source/_posts/2016-07-01-envisalink-homematic-hdmi-cec-and-sony-bravia-tv.markdown +++ b/source/_posts/2016-07-01-envisalink-homematic-hdmi-cec-and-sony-bravia-tv.markdown @@ -1,7 +1,7 @@ --- layout: post title: "0.23: Envisalink, Homematic, HDMI-CEC and Sony Bravia TV" -description: "This new release of Home Assistant contains support for Envisalink, Homematic, Sony Bravia TV and HDMI-CEC. Additionaly was the Wink support improved and CherryPy is the new WSGI server." +description: "This new release of Home Assistant contains support for Envisalink, Homematic, Sony Bravia TV and HDMI-CEC. Additionally was the Wink support improved and CherryPy is the new WSGI server." date: 2016-07-01 00:31:00 +0000 date_formatted: "July 1, 2016" author: Paulus Schoutsen @@ -32,7 +32,7 @@ On the config side, you can now [store your passwords][secrets] in your OS keyri - Sensor: [Fixer.io] now supported ([@fabaff]) - Garage door: Control any garage door using [Raspberry Pi GPIO pins] ([@kellerza]) - Sensor: [OpenExchangeRates] support added ([@arsaboo]) -- Notify: [Pushover] now supports target device, sound, url and priority ([@dale3h]) +- Notify: [Pushover] now supports target device, sound, URL and priority ([@dale3h]) - Sensor: [Netatmo] now supports wind, battery and radio signals ([@Jypy]) - Log successful and failed login attemps ([@fabaff]) - Config: allow [extracting account info][secrets] into OS keyring or separate YAML file ([@kellerza]) diff --git a/source/_posts/2016-07-28-esp8266-and-micropython-part1.markdown b/source/_posts/2016-07-28-esp8266-and-micropython-part1.markdown index 7eb34d1bfff..ea3e537b467 100644 --- a/source/_posts/2016-07-28-esp8266-and-micropython-part1.markdown +++ b/source/_posts/2016-07-28-esp8266-and-micropython-part1.markdown @@ -41,7 +41,7 @@ Leaving... Now reset the device. You should then be able to use the [REPL (Read Evaluate Print Loop)](http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/repl.html#getting-a-micropython-repl-prompt). On Linux there is `minicom` or `picocom`, on a Mac you can use `screen` (eg. `screen /dev/tty.SLAB_USBtoUART 115200`), and on Windows there is Putty to open a serial connection and get the REPL prompt. -The [WebREPL](http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/repl.html#webrepl-a-prompt-over-wifi) work over a wireless connection and allows easy access to a prompt in your browser. An instance of the WebREPL client is hosted at [http://micropython.org/webrepl](http://micropython.org/webrepl). Alternatively, you can create a local clone of their [GitHub repository](https://github.com/micropython/webrepl). This is neccessary if your want to use the command-line tool `webrepl_cli.py` which is mentionend later in this post. +The [WebREPL](http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/repl.html#webrepl-a-prompt-over-wifi) work over a wireless connection and allows easy access to a prompt in your browser. An instance of the WebREPL client is hosted at [http://micropython.org/webrepl](http://micropython.org/webrepl). Alternatively, you can create a local clone of their [GitHub repository](https://github.com/micropython/webrepl). This is necessary if your want to use the command-line tool `webrepl_cli.py` which is mentionend later in this post. ```bash $ sudo minicom -D /dev/ttyUSB0 diff --git a/source/_posts/2016-08-16-we-have-apps-now.markdown b/source/_posts/2016-08-16-we-have-apps-now.markdown index 35a6f0551d6..535a88e0365 100644 --- a/source/_posts/2016-08-16-we-have-apps-now.markdown +++ b/source/_posts/2016-08-16-we-have-apps-now.markdown @@ -38,7 +38,7 @@ So why `AppDaemon`? `AppDaemon` is not meant to replace Home Assistant Automatio - Durable variables and state - variables can be kept between events to keep track of things like the number of times a motion sensor has been activated, or how long it has been since a door opened - All the power of Python - use any of Python's libraries, create your own modules, share variables, refactor and re-use code, create a single app to do everything, or multiple apps for individual tasks - nothing is off limits! -It is in fact a testament to Home Assistant's open nature that a component like `AppDaemon` can be integrated so neatly and closely that it acts in all ways like an extension of the system, not a second class citizen. Part of the strength of Home Assistant's underlying design is that it makes no assumptions whatever about what it is controlling or reacting to, or reporting state on. This is made achievable in part by the great flexibility of Python as a programming environment for Home Assistant, and carrying that forward has enabled me to use the same philosophy for `AppDaemon` - it took surprisingly little code to be able to respond to basic events and call services in a completely open ended manner - the bulk of the work after that was adding additonal functions to make things that were already possible easier. +It is in fact a testament to Home Assistant's open nature that a component like `AppDaemon` can be integrated so neatly and closely that it acts in all ways like an extension of the system, not a second class citizen. Part of the strength of Home Assistant's underlying design is that it makes no assumptions whatever about what it is controlling or reacting to, or reporting state on. This is made achievable in part by the great flexibility of Python as a programming environment for Home Assistant, and carrying that forward has enabled me to use the same philosophy for `AppDaemon` - it took surprisingly little code to be able to respond to basic events and call services in a completely open ended manner - the bulk of the work after that was adding additional functions to make things that were already possible easier. ## {% linkable_title How it Works %} diff --git a/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown b/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown index 91ca62a53e2..de09817dbde 100644 --- a/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown +++ b/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown @@ -2,8 +2,8 @@ layout: post title: "0.27 is here to break eggs and take names: notifications, Hue fakery, safety and unification come to Home Assistant" description: "HTML5 push notifications and grouping support, Configuration validations and checking, cover, climate and fan." -date: 2016-08-27 20:30:25 -0700 -date_formatted: "August 27, 2016" +date: 2016-08-28 20:30:25 UTC +date_formatted: "August 28, 2016" author: Robbie Trencheny author_twitter: Robbie comments: true @@ -145,11 +145,11 @@ Thanks all for sticking with me to the end. I'll be taking over a lot of Paulus' Also, thanks as always to our developer contributors, documentation contributors, but most of all our users! This would've just been a script that Paulus (@balloob) used to control his lights at home if we didn't have your enthusiasm. -Feel free to let me know what you thought of this blog post and release on Gitter or my [Twitter](https://twitter.com/robbie), or even the [Home Assistant Twitter](https://twitter.com/home_assistant). Did I mention we have a brand new [Facebook page](https://www.facebook.com/homeassistantio) that you should absolutely Like? There's a convenient Facebook Like and Twitter follow button right on the sidebar. +Feel free to let me know what you thought of this blog post and release on [Discord](https://discord.gg/c5DvZ4e) or my [Twitter](https://twitter.com/robbie), or even the [Home Assistant Twitter](https://twitter.com/home_assistant). Did I mention we have a brand new [Facebook page](https://www.facebook.com/homeassistantio) that you should absolutely Like? There's a convenient Facebook Like and Twitter follow button right on the sidebar. I almost forgot about your 🎁 for reading all the way to here: a 🍪! Hope you enjoy it in good health 😄. -Talk to you soon on Gitter and in your pull request comments! +Talk to you soon on Discord and in your pull request comments! -- Robbie diff --git a/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown b/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown index 8d3c9c63fea..4e9e4d14e80 100644 --- a/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown +++ b/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown @@ -27,7 +27,7 @@ Singleboard computers are very popular to run Home Assistant. To support this fa There are countless bugfixes included in this release which will make your experience with the `climate` and the `cover` platforms better. Two week ago was the biggest merger of implementations released that ever happened in the history of Home Assistant. Thanks to [@turbokongen], [@pvizeli], [@djbanks], [@danielperna84], and others the improvements on the code and the frontend side is continuing... ### {% linkable_title API documentation %} -The [Home Assistant API Documentation](https://dev-docs.home-assistant.io/en/dev/) is a great addition to the already exisiting user documentation. The focus is not end-users but developers who whant to get details about the code without actually browsing the code on Github. +The [Home Assistant API Documentation](https://dev-docs.home-assistant.io/en/dev/) is a great addition to the already exisiting user documentation. The focus is not end-users but developers who want to get details about the code without actually browsing the code on Github. ### {% linkable_title Configuration validation %} The validation of the configuration is still on-going. Approximatly 80 % is done. This means that we will propably talk about this topic in the next release notes again. To align the configuration of components and platforms we needed to break some. Please refer to the Breaking changes section to check if you need to update your configuration or simple check your log for configuration validation errors. Thanks to [@kellerza], [@fabaff], [@Teagan42], and [@pvizeli] for your effort! @@ -99,7 +99,7 @@ The validation of the configuration is still on-going. Approximatly 80 % is done - Custom components extending `BaseNotificationService` need to be aware that `kwargs.get(ATTR_TITLE)` will now return `None` if a title has not been set, and will need to specify `kwargs.get(ATTR_TITLE, ATTR_TITLE_DEFAULT)` if they always require a title. ### {% linkable_title If you need help... %} -...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://gitter.im/home-assistant/home-assistant). +...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). [@DavidLP]: https://github.com/DavidLP diff --git a/source/_posts/2016-09-29-async-sleepiq-emoncms-stocks.markdown b/source/_posts/2016-09-29-async-sleepiq-emoncms-stocks.markdown index 88c7eb45bed..2533a175c9d 100644 --- a/source/_posts/2016-09-29-async-sleepiq-emoncms-stocks.markdown +++ b/source/_posts/2016-09-29-async-sleepiq-emoncms-stocks.markdown @@ -110,7 +110,7 @@ Since 0.28 [automation rules](/blog/2016/09/10/notify-group-reload-api-pihole/#r - Nest sensor 'mode' has been renamed to 'operation_mode' ### {% linkable_title If you need help... %} -...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://gitter.im/home-assistant/home-assistant). The release notes have comments enabled but it's preferred if you the former communication channels. Thanks. +...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you the former communication channels. Thanks. [nest-issues]: https://github.com/home-assistant/home-assistant/issues/3574 [@jabesq]: https://github.com/jabesq diff --git a/source/_posts/2016-10-02-hacktoberfest.markdown b/source/_posts/2016-10-02-hacktoberfest.markdown index 1c06b22f298..ba31b6cd19c 100644 --- a/source/_posts/2016-10-02-hacktoberfest.markdown +++ b/source/_posts/2016-10-02-hacktoberfest.markdown @@ -38,5 +38,5 @@ Are you not a programmer but still want to contribute to Home Assistant? Check o [issues]: https://github.com/home-assistant/home-assistant/labels/Hacktoberfest [issues-doc]: https://github.com/home-assistant/home-assistant.github.io/labels/Hacktoberfest [dev-env]: /developers/development_environment/ -[dev-chat]: https://gitter.im/home-assistant/home-assistant/devs +[dev-chat]: https://discord.gg/8X8DTH4 [dev-forum]: https://community.home-assistant.io/c/development diff --git a/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown b/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown index c3f29f84c70..a7386785f15 100644 --- a/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown +++ b/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown @@ -12,7 +12,7 @@ categories: Release-Notes Yes, after only nine days comes 0.30. Don't worry, we will try to keep our usual release cycle and not start to release every day. -We guess that you already know: The [Raspberry Pi image][pi-image] is available now. For Hassbian, [@Landrash] has combined the most essential parts for a Home Assistant setup in an easy-to-use image for the Raspberry Pi device family. Hassbian is quite young, thus we are looking forward to recieve [feedback][hassbian-forum], [issue report][hassbian-forum], and [suggestions][hassbian-forum] to improve it. +We guess that you already know: The [Raspberry Pi image][pi-image] is available now. For Hassbian, [@Landrash] has combined the most essential parts for a Home Assistant setup in an easy-to-use image for the Raspberry Pi device family. Hassbian is quite young, thus we are looking forward to receive [feedback][hassbian-forum], [issue report][hassbian-forum], and [suggestions][hassbian-forum] to improve it. A large amount of resources of the development are still focusing on the effort to move Home Assistant further to asynchronous programming. It's a labor-intensive task, comes with segmentation faults, and unstable instances when certain combinations of sensors are used. The benefit will be more speed in the near future. @@ -123,7 +123,7 @@ sensor - The [aREST][arest] configuration between the [sensor][arest-sensor] and the [switch][arest-switch] platform was aligned. ### {% linkable_title If you need help... %} -...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://gitter.im/home-assistant/home-assistant). The release notes have comments enabled but it's preferred if you the former communication channels. Thanks. +...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you the former communication channels. Thanks. [@balloob]: https://github.com/balloob [@bbangert]: https://github.com/bbangert diff --git a/source/_posts/2016-10-22-flash-briefing-updater-hacktoberfest.markdown b/source/_posts/2016-10-22-flash-briefing-updater-hacktoberfest.markdown index bc8bf9610e2..e102f164bbc 100644 --- a/source/_posts/2016-10-22-flash-briefing-updater-hacktoberfest.markdown +++ b/source/_posts/2016-10-22-flash-briefing-updater-hacktoberfest.markdown @@ -173,7 +173,7 @@ This is super annoying, I know, especially since we had said in [0.12][zero-one- - Weather: Allow tracking severe weather alerts with [WUnderground] ([@tchellomello]) - Sensor: New support added to track [min/max/mean][min] ([@fabaff]) - Convert EntityComponent to be async ([@pvizeli], [@balloob]) -- Z-Wave: Add assocation service ([@turbokongen]) +- Z-Wave: Add association service ([@turbokongen]) - Frontend - Services dev tool: persist state and tweak UI ([@justweb1]) - Sensor: Support added for [scraping][scrape] websites ([@fabaff]) - Clean up of tests ([@capellini]) @@ -208,7 +208,7 @@ This is super annoying, I know, especially since we had said in [0.12][zero-one- - The Z-Wave entity ID change mentioned above ## {% linkable_title If you need help... %} -...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://gitter.im/home-assistant/home-assistant). The release notes have comments enabled but it's preferred if you the former communication channels. Thanks. +...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you the former communication channels. Thanks. ## {% linkable_title Until next time %} diff --git a/source/_posts/2016-10-24-explaining-the-updater.markdown b/source/_posts/2016-10-24-explaining-the-updater.markdown index fd920bd0d31..86937e279dc 100644 --- a/source/_posts/2016-10-24-explaining-the-updater.markdown +++ b/source/_posts/2016-10-24-explaining-the-updater.markdown @@ -2,8 +2,8 @@ layout: post title: "Explaining the Updater" description: "An update to the recent updater component changes" -date: 2016-10-24 21:30:00 -0700 -date_formatted: "October 24, 2016" +date: 2016-10-25 21:30:00 UTC +date_formatted: "October 25, 2016" author: Paulus Schoutsen author_twitter: balloob comments: true diff --git a/source/_posts/2016-11-05-hacktoberfest-influxdb-weather.markdown b/source/_posts/2016-11-05-hacktoberfest-influxdb-weather.markdown index 036e390a9a0..91d7b7844d0 100644 --- a/source/_posts/2016-11-05-hacktoberfest-influxdb-weather.markdown +++ b/source/_posts/2016-11-05-hacktoberfest-influxdb-weather.markdown @@ -117,7 +117,7 @@ Our website has now an additional category called "Ecosystem". This will become ### {% linkable_title If you need help... %} -...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://gitter.im/home-assistant/home-assistant). The release notes have comments enabled but it's preferred if you the former communication channels. Thanks. +...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you the former communication channels. Thanks. [@mweinelt]: https://github.com/mweinelt [@aa755]: https://github.com/aa755 diff --git a/source/_posts/2016-12-03-remote-websockets-sonarr.markdown b/source/_posts/2016-12-03-remote-websockets-sonarr.markdown index 0f4c1fc5f9b..64511f0eb03 100644 --- a/source/_posts/2016-12-03-remote-websockets-sonarr.markdown +++ b/source/_posts/2016-12-03-remote-websockets-sonarr.markdown @@ -117,7 +117,7 @@ We are working on a better solution for 0.35. - Fix InfluxDB without authentication ([@balloob]) - Fix Kodi without authentication ([@balloob]) - Fix incorrect caching of /api/error_log ([@armills]) - - Fix incorrect ordering of service calls which could cause delays inbetween turning on multiple entities ([@balloob]) + - Fix incorrect ordering of service calls which could cause delays between turning on multiple entities ([@balloob]) - Fix Nest Climate temperature issues ([@technicalpickles]) ### {% linkable_title Release 0.34.5 - December 12 %} @@ -136,7 +136,7 @@ We are working on a better solution for 0.35. ### {% linkable_title If you need help... %} -...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://gitter.im/home-assistant/home-assistant). The release notes have comments enabled but it's preferred if you use these communication channels. Thanks. +...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use these communication channels. Thanks. ### {% linkable_title Reporting Issues %} diff --git a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown index eb68d517486..2f4697f6283 100644 --- a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown +++ b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown @@ -11,7 +11,7 @@ categories: Release-Notes og_image: /images/blog/2016-12-0.35/social.png --- -5000 stars on GitHub, 2000 people in out Gitter chatroom and over a million monthly page views. I don't think we could wish for a better place to be at the end of 2016. Feels like an early Christmas present! Our early one for you is 0.35. It's not a single thing inside a nice wrapping, more like several little gifts inside the 0.35 box. +5000 stars on GitHub, 2000 people in our [chatroom][discord] and over a million monthly page views. I don't think we could wish for a better place to be at the end of 2016. Feels like an early Christmas present! Our early one for you is 0.35. It's not a single thing inside a nice wrapping, more like several little gifts inside the 0.35 box. This will be the last release of 2016 as our developers are taking a well deserved break. We will be back in 2017! @@ -23,7 +23,7 @@ With the addition of a [text-to-speech][tts] component by [@pvizeli] we have bee ## {% linkable_title Call for help with HASSbian (our Raspberry Pi image) %} In an effort to make Home Assistant, we're planning to extend the things that people can do out of the box with HASSbian, our Raspberry Pi image. As you might know, the image is currently maintained by [@Landrash]. However he also spends a lot of time on improving the docs and helping out with a ton of other things. -So if you know your Linux-foo and would love to contribute to open source, join the [Hassbian developer chat](https://gitter.im/home-assistant/hassbian) and take a stab at one of [our open issues](https://github.com/home-assistant/pi-gen/issues). +So if you know your Linux-foo and would love to contribute to open source, join the [developer chat][discord-devs] and take a stab at one of [our open issues](https://github.com/home-assistant/pi-gen/issues). ## {% linkable_title VLC media player, Broadlink, and GPSLogger %} Let you control [VLC media player][vlc-media] and play sound on connected speakers. @@ -64,7 +64,7 @@ The [GPSLogger](https://home-assistant.io/components/device_tracker.gpslogger/) ### {% linkable_title Release 0.35.1 - December 18 %} -Some issues have been reported with TTS that will be addressed by 0.35.1. The TTS component had issues linking the media player to the right media file if you were using Docker or SSL certificates. This can be fixed by exposing to your HTTP config what url you use for hosting Home Assistant: +Some issues have been reported with TTS that will be addressed by 0.35.1. The TTS component had issues linking the media player to the right media file if you were using Docker or SSL certificates. This can be fixed by exposing to your HTTP config what URL you use for hosting Home Assistant: ```yaml http: @@ -88,7 +88,7 @@ http: - Fix nest component with various KeyError exceptions ([@technicalpickles]) ### {% linkable_title If you need help... %} -...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://gitter.im/home-assistant/home-assistant). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. +...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. ### {% linkable_title Reporting Issues %} Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. @@ -152,3 +152,5 @@ Experiencing issues introduced by this release? Please report them in our [issue [flic]: https://home-assistant.io/components/binary_sensor.flic/ [sensehat]: https://home-assistant.io/components/sensor.sensehat/ [tts]: https://home-assistant.io/components/tts/ +[discord]: https://discord.gg/c5DvZ4e +[discord-devs]: https://discord.gg/8X8DTH4 diff --git a/source/_posts/2016-12-19-thank-you.markdown b/source/_posts/2016-12-19-thank-you.markdown index 805ea6c4265..b91eb724947 100644 --- a/source/_posts/2016-12-19-thank-you.markdown +++ b/source/_posts/2016-12-19-thank-you.markdown @@ -2,7 +2,7 @@ layout: post title: "Thank You" description: "Thanks to all our contributors, dependencies and companies that help make Home Assistant awesome." -date: 2016-12-18 21:04:05 -0800 +date: 2016-12-19 21:04:05 UTC date_formatted: "December 19, 2016" author: Paulus Schoutsen author_twitter: balloob @@ -13,7 +13,7 @@ og_image: A year ago [Home Assistant 0.10][0.10] landed. Last weekend we released 0.35. Doing 25 releases in a year is a big accomplishment by the community and each release has moved us forwards leaps and bounds. In this year alone we have seen 2800 pull requests on the main repo alone, that's more than 7 a day! -One of the things that Jon Walker, the founder of the company I work for ([AppFolio]), has taught me is that the biggest advantage that you can create for yourself compared to your competitors is to release more often. Everytime you release you are able to get the new features into the hands of the users and developers. The faster people start using it, the faster you get feedback on the good and bad parts and thus the faster can you evolve. +One of the things that Jon Walker, the founder of the company I work for ([AppFolio]), has taught me is that the biggest advantage that you can create for yourself compared to your competitors is to release more often. Every time you release you are able to get the new features into the hands of the users and developers. The faster people start using it, the faster you get feedback on the good and bad parts and thus the faster can you evolve. That's why I structured Home Assistant around a two week release cycle. It makes sure that features get out fast and it also forces us to not accumulate a backlog of things to document or test properly. Every two weeks we can start fresh. This makes it easy for new people to start contributing because it's clear when things go out and people are not afraid to miss a release. diff --git a/source/_posts/2017-01-03-control-my-christmas-tree-stats.markdown b/source/_posts/2017-01-03-control-my-christmas-tree-stats.markdown index 0caed0cd59c..2e166076480 100644 --- a/source/_posts/2017-01-03-control-my-christmas-tree-stats.markdown +++ b/source/_posts/2017-01-03-control-my-christmas-tree-stats.markdown @@ -15,7 +15,7 @@ Hello and Happy New Year! I am not Paulus. My name is Ben. I'm the creator of the [BRUH Automation YouTube channel][bruh]. If you've ever seen any of my videos then you'll know I love home automation and Home Assistant. -I wanted to share some exciting stats from one of my latest projects - [Control My Christmas tree!](https://github.com/bruhautomation/BRUH-Christmas-Tree-2016) For this project, I created a Home Assistant instance on a Raspberry Pi 2 that was publically accessible via DuckDNS. Paulus was great in helping me disable several of the developer services that could have been exploited to disable the Home Assistant instance. +I wanted to share some exciting stats from one of my latest projects - [Control My Christmas tree!](https://github.com/bruhautomation/BRUH-Christmas-Tree-2016) For this project, I created a Home Assistant instance on a Raspberry Pi 2 that was publicly accessible via DuckDNS. Paulus was great in helping me disable several of the developer services that could have been exploited to disable the Home Assistant instance. I added three devices to the Home Assistant instance - a Wemo Insight, Sonoff Switch (running MQTT firmware), and a DIY MQTT Digital LED strip. After adding a few 3D printed Star War decorations, the tree was ready to go! diff --git a/source/_posts/2017-01-14-iss-usps-images-packages.markdown b/source/_posts/2017-01-14-iss-usps-images-packages.markdown index 794a01318ce..11a2b2fe71f 100644 --- a/source/_posts/2017-01-14-iss-usps-images-packages.markdown +++ b/source/_posts/2017-01-14-iss-usps-images-packages.markdown @@ -99,7 +99,7 @@ The new [image processing component][image] currently works with [number plates] - TTS cache files use now the language abbreviation as part of the name. If you want to use the cache, it need to be renamed or cleared, new created. E. g. `HASH_PLATFORM.xxx` -> `HASH_LANG_PLATFORM.xxx`. ### {% linkable_title If you need help... %} -...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://gitter.im/home-assistant/home-assistant). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. +...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. ### {% linkable_title Reporting Issues %} Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. diff --git a/source/_posts/2017-01-21-home-assistant-governance.markdown b/source/_posts/2017-01-21-home-assistant-governance.markdown index 4c8df71e76a..47c8eb59c6d 100644 --- a/source/_posts/2017-01-21-home-assistant-governance.markdown +++ b/source/_posts/2017-01-21-home-assistant-governance.markdown @@ -27,7 +27,7 @@ Starting today we are announcing a few initiatives to help protect our users, co More people are getting to know and love Home Assistant every day and our community keeps growing. Our community consists of people from all over the world with different backgrounds and we want Home Assistant to be a place where everyone can feel at home. To help with this we're introducing a Code of Conduct. The Code of Conduct describes what type of behavior is unacceptable, how we will enforce it and where to report incidents. -Moving forward this Code of Conduct will be active for all projects within the Home Assistant organisation. +Moving forward this Code of Conduct will be active for all projects within the Home Assistant organization. [Read the Code of Conduct][coc] @@ -95,9 +95,11 @@ We have now mostly automated updating the [Credits](/developers/credits/) page s ## {% linkable_title In closing %} -We hope you understand that our desire with these changes is only to help protect the amazing community that has been built around Home Assistant. If you have any questions, please contact us via email, Twitter or Gitter. +We hope you understand that our desire with these changes is only to help protect the amazing community that has been built around Home Assistant. If you have any questions, please contact us via email, [Twitter][twitter] or [Discord][discord]. [cla]: /developers/cla/ [mjg59]: https://twitter.com/mjg59 [gh-cla]: https://cla.github.com/ [license]: /developers/license/ +[twitter]: https://twitter.com/home_assistant +[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-01-28-face-coffee-wink.markdown b/source/_posts/2017-01-28-face-coffee-wink.markdown index 1c808e0616b..97499277556 100644 --- a/source/_posts/2017-01-28-face-coffee-wink.markdown +++ b/source/_posts/2017-01-28-face-coffee-wink.markdown @@ -103,7 +103,7 @@ Thanks to [@konikvranik] the [HDMI CEC][cec] integration got a huge update with - Light - tellstick.py: Tellstick light fix ([@stefan-jonasson]) - Switch - insteon_local.py: only check for devices when not defined in config ([@wardcraigj]) - Notify - Twitter: Allow direct messaging to user ([@fabaff]) -- Fan - MQTT: Dont set a speed when fan turns on ([@robbiet480]) +- Fan - MQTT: Don't set a speed when fan turns on ([@robbiet480]) - Config: Allow easier customization of whole domain, entity lists, globs ([@andrey-git]) - Sensor - Homematic: Update device support ([@danielperna84]) - Binary sensor - ISS: Add location to attributes and option to show position on the map ([@fabaff]) @@ -137,7 +137,7 @@ Bugfix: [@balloob], [@fabaff], [@freol35241], [@pvizeli], [@Danielhiversen], [@t - Fix Telldus Live dim level error on startup ([@molobrakos]) - Fix Sonos group coordinators ([@pvizeli]) - UPC Connect: Parse XML outside event loop ([@pvizeli]) -- Fix Netatmo SSL issue with VPN url ([@jabesq]) +- Fix Netatmo SSL issue with VPN URL ([@jabesq]) - Homematic: Fix bug with UNREACH device state/restore and variables not updating ([@pvizeli]) - Sonos: Prevent duplicate entries in favorite list ([@pvizeli]) - Fix Schlage Connect deadbolt integration via Z-Wave ([@turbokongen]) @@ -155,7 +155,7 @@ Bugfix: [@balloob], [@fabaff], [@freol35241], [@pvizeli], [@Danielhiversen], [@t - TTS cache have change for the last time. Files use now also a option hash as part of the name. If you want to use the cache, it need to be renamed or cleared, new created. E. g. `HASH_LANG_PLATFORM.xxx` -> `HASH_LANG_OPTIONS_PLATFORM.xxx`, replace *OPTIONS* with `-` on exiting platforms. ### {% linkable_title If you need help... %} -...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://gitter.im/home-assistant/home-assistant). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. +...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. ### {% linkable_title Reporting Issues %} Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. diff --git a/source/_posts/2017-02-03-hassbian-toybox.markdown b/source/_posts/2017-02-03-hassbian-toybox.markdown index 19a0b75e5cc..5bba2d5d5e4 100644 --- a/source/_posts/2017-02-03-hassbian-toybox.markdown +++ b/source/_posts/2017-02-03-hassbian-toybox.markdown @@ -50,13 +50,13 @@ With this image there also quite a bit of cleaning of the base system and the sc There's of course more on the horizon and there's even more plans and wishes for how this image will function in the future. On the close horizon from [@Landrash][landrash-github] there a few more script in the works and for tellstick, emulated_hue and for controlling Home Assistant. -To follow discussions about the development of the HASSbian image or to contribute join the [HASSbian gitter chat][hassbian-gitter]. +To follow discussions about the development of the HASSbian image or to contribute join our [Discord chat server][discord]. To get started with the new image, check out the installation instructions in the [getting started section][gs-image]. [cec]: /components/hdmi_cec/ [hassbian-repo]: https://github.com/home-assistant/hassbian-scripts [hassbian-avahi]: hassbian.local -[hassbian-gitter]: https://gitter.im/home-assistant/hassbian [landrash-github]: https://github.com/Landrash [gs-image]: /getting-started/installation-raspberry-pi-image/ +[discord]: https://discord.gg/8X8DTH4 diff --git a/source/_posts/2017-02-04-babyphone.markdown b/source/_posts/2017-02-04-babyphone.markdown index 057e80b968a..3703bcd1938 100644 --- a/source/_posts/2017-02-04-babyphone.markdown +++ b/source/_posts/2017-02-04-babyphone.markdown @@ -2,15 +2,15 @@ layout: post title: "Smart Baby Monitor" description: "How to build your own smart baby monitor" -date: 2017-02-04 00:00:00 +0100 -date_formatted: "February 4, 2017" +date: 2017-02-03 01:00:00 UTC +date_formatted: "February 3, 2017" author: Pascal Vizeli comments: true categories: How-To og_image: /images/blog/2017-02-babyphone/social.png --- -One of the hardest part of being a parent is keeping a constant eye on the baby to make sure that the baby is doing well. Thus, it is not surprising that baby monitors are one of the fastest growing baby product category. However, many of the baby monitors available on the market are rather dumb and expect the parents to keep looking at the video stream or listen to the audio. This how-to will help you create a smart baby monitor on a budget and integrate it with Home Assitant. Instead of relying on the poor quality baby monitor speakers, we use our existing speakers (eg. Sonos). We can also send notifications (with pictures) to avoid constant monitoring of the feed. +One of the hardest part of being a parent is keeping a constant eye on the baby to make sure that the baby is doing well. Thus, it is not surprising that baby monitors are one of the fastest growing baby product category. However, many of the baby monitors available on the market are rather dumb and expect the parents to keep looking at the video stream or listen to the audio. This how-to will help you create a smart baby monitor on a budget and integrate it with Home Assistant. Instead of relying on the poor quality baby monitor speakers, we use our existing speakers (eg. Sonos). We can also send notifications (with pictures) to avoid constant monitoring of the feed. Obviously, you can use the setup as a general purpose surveillance system to monitor noise in the whole house. diff --git a/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown b/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown index a6fc4a9f999..89a1b2a1ebb 100644 --- a/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown +++ b/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown @@ -138,7 +138,7 @@ Bugfixes: [@balloob], [@fabaff], [@pvizeli], [@mnoorenberghe] [@Danielhiversen], - The frontend core changes have caused all custom panels to break. Docs have not been updated yet. The gist is that you have to use `this.hass.entities`, `this.hass.callService` and `this.hass.callApi`. ### {% linkable_title If you need help... %} -...don't hesitate to use our very active [forums][forum] or join us for a little [chat][gitter]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. ### {% linkable_title Reporting Issues %} Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. @@ -226,6 +226,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [event-stream-api]: https://home-assistant.io/developers/server_sent_events/ [forum]: https://community.home-assistant.io/ -[gitter]: https://gitter.im/home-assistant/home-assistant [issue]: https://github.com/home-assistant/home-assistant/issues [websocket-api]: https://home-assistant.io/developers/websocket_api/ +[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown b/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown index 161699d373e..ee59872448f 100644 --- a/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown +++ b/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown @@ -59,7 +59,7 @@ Thanks to [Fabian][@fabaff] we have a great re-organized documentation. Is it pe ## State restoration -Ever have some input components or integrations and get annoyed with the fact that their state is lost after a restart? Don't worry any longer. [Johann][@kellerza] has added the foundation for state restoration to Home Assistant. For the initial release support has been added to to `input_select` and `input_boolean` components. We will be adding this to more integrations in the future. +Ever have some input components or integrations and get annoyed with the fact that their state is lost after a restart? Don't worry any longer. [Johann][@kellerza] has added the foundation for state restoration to Home Assistant. For the initial release support has been added to `input_select` and `input_boolean` components. We will be adding this to more integrations in the future. ## Breaking changes to customize and Z-Wave "customize" @@ -224,7 +224,7 @@ hdmi_cec: [@pvizeli], [@LinuxChristian], [@molobrakos], [@balloob], [@rytilahti], [@fabaff], [@andrey-git], [@aequitas], [@konikvranik], [@Danielhiversen], [@colinodell], [@pschmitt], [@bachp], [@bachp],[@w1ll1am23], [@valentinalexeev], [@robbiet480], [@MartinHjelmare], [@happyleavesaoc], [@tdickman], [@arraylabs], [@lwis], [@titilambert] ### If you need help... -...don't hesitate to use our very active [forums][forum] or join us for a little [chat][gitter]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. ### Reporting Issues Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. @@ -312,6 +312,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [docs-issue]: https://github.com/home-assistant/home-assistant.github.io/issues/1603 [forum]: https://community.home-assistant.io/ -[gitter]: https://gitter.im/home-assistant/home-assistant [issue]: https://github.com/home-assistant/home-assistant/issues [t-shirt]: https://home-assistant.io/blog/2017/02/22/home-assistant-tshirts-have-arrived/ +[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-03-11-repurpose-any-android-phone-as-ip-camera.markdown b/source/_posts/2017-03-11-repurpose-any-android-phone-as-ip-camera.markdown index de028c584fd..9ddc014de84 100644 --- a/source/_posts/2017-03-11-repurpose-any-android-phone-as-ip-camera.markdown +++ b/source/_posts/2017-03-11-repurpose-any-android-phone-as-ip-camera.markdown @@ -64,7 +64,7 @@ twilio: - If you are using async custom components, the passed in `async_add_devices` method is now a callback instead of a coroutine function. ### If you need help... -...don't hesitate to use our very active [forums][forum] or join us for a little [chat][gitter]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. ### Reporting Issues Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. @@ -180,7 +180,7 @@ Hot fix release to fix dependency issues. More detailed information about the is - twilio component ([@happyleavesaoc]) - Add Z-Wave battery level as a sensor. ([@andrey-git]) - OwnTrack Async ([@pvizeli]) -- Fix possibility that have multible topic subscribe mqtt ([@pvizeli]) +- Fix possibility that have multiple topic subscribe mqtt ([@pvizeli]) - Migrate mqtt tracker and arwn sensor to async / cleanup owntrack ([@pvizeli]) - Z-Wave prevent I/O event loop ([@balloob]) - Update pwaqi to 3.0 to use public API ([@valentinalexeev]) @@ -204,7 +204,7 @@ Hot fix release to fix dependency issues. More detailed information about the is - Fix unnecessary warning for ip bans.yaml ([@balloob]) - Better restore_state warnings ([@balloob]) - Set new color before turning LIFX bulbs on ([@amelchio]) -- Don't log username and password in camera url ([@ishults]) +- Don't log username and password in camera URL ([@ishults]) - Ignore deleted mails in IMAP unread count (#6394) ([@amelchio]) - Delay zwave updates for 100ms to group them. ([@andrey-git]) - Rename _scheduled_update to _update_scheduled ([@andrey-git]) @@ -230,7 +230,7 @@ Hot fix release to fix dependency issues. More detailed information about the is - Allow configurable conditions for Pi-Hole sensor ([@colinodell]) - Improved iCloud 2FA support. ([@reedriley]) - Update pymyq requirement ([@arraylabs]) -- Not always asume manufacturername is present ([@balloob]) +- Not always assume manufacturername is present ([@balloob]) - Add first pass at Z-Wave light tests ([@balloob]) - Bugfix mqtt socket memory error ([@pvizeli]) - Increase upper limit on light transitions ([@amelchio]) @@ -301,7 +301,7 @@ Hot fix release to fix dependency issues. More detailed information about the is [@vroomfonde1]: https://github.com/vroomfonde1 [@wardcraigj]: https://github.com/wardcraigj [@zhelev]: https://github.com/zhelev -[main chat channel]: https://gitter.im/home-assistant/home-assistant +[main chat channel]: https://discord.gg/c5DvZ4e [@dale3h]: https://github.com/dale3h [@CCOSTAN]: https://github.com/CCOSTAN [@skalavala]: https://github.com/skalavala @@ -310,7 +310,6 @@ Hot fix release to fix dependency issues. More detailed information about the is [@bassclarinetl2]: https://github.com/bassclarinetl2 [@torn8o]: https://github.com/torn8o [forum]: https://community.home-assistant.io/ -[gitter]: https://gitter.im/home-assistant/home-assistant [issue]: https://github.com/home-assistant/home-assistant/issues [EFF]: https://www.eff.org [hass-shirt]: https://home-assistant.io/blog/2017/02/22/home-assistant-tshirts-have-arrived/ @@ -329,3 +328,4 @@ Hot fix release to fix dependency issues. More detailed information about the is [@jnewland]: https://github.com/jnewland [#6702]: https://github.com/home-assistant/home-assistant/pull/6702 [#6738]: https://github.com/home-assistant/home-assistant/pull/6738 +[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-03-25-todo-volumio-workday.markdown b/source/_posts/2017-03-25-todo-volumio-workday.markdown index ccdb7c5afcf..acac7c9f5fb 100644 --- a/source/_posts/2017-03-25-todo-volumio-workday.markdown +++ b/source/_posts/2017-03-25-todo-volumio-workday.markdown @@ -40,7 +40,7 @@ The new format of the changelog which was introduced with 0.40 will provide a li - The frontend is now using [Shadow DOM][shadow] and this could break your custom panels ([#228](https://github.com/home-assistant/home-assistant-polymer/issues/228)). ## If you need help... -...don't hesitate to use our very active [forums][forum] or join us for a little [chat][gitter]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. ## Reporting Issues Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. @@ -347,8 +347,8 @@ Experiencing issues introduced by this release? Please report them in our [issue [shadow]: https://www.w3.org/TR/shadow-dom/ [forum]: https://community.home-assistant.io/ -[gitter]: https://gitter.im/home-assistant/home-assistant [issue]: https://github.com/home-assistant/home-assistant/issues +[discord]: https://discord.gg/c5DvZ4e [@bdurrer]: https://github.com/bdurrer [interview]: https://home-assistant.io/blog/2017/03/23/opensourcecraft-interview-with-founder-paulus-schoutsen/ diff --git a/source/_posts/2017-03-28-http-to-mqtt-bridge.markdown b/source/_posts/2017-03-28-http-to-mqtt-bridge.markdown index ea0c4496e2c..8e05ea0fa2a 100644 --- a/source/_posts/2017-03-28-http-to-mqtt-bridge.markdown +++ b/source/_posts/2017-03-28-http-to-mqtt-bridge.markdown @@ -10,7 +10,7 @@ categories: How-To og_image: /images/blog/2017-03-bridge/social.png --- -The idea of creating [HTTP to MQTT bridge](https://github.com/petkov/http_to_mqtt) appeared when I was trying to integrate Google Assistant with my Home Assistant after watching [BRUH Automation](https://youtu.be/087tQ7Ly7f4?t=265) video. Right now there is no MQTT service available in [IFTTT](https://ifttt.com/about). Existing integration solution uses [Maker Webhooks](https://ifttt.com/maker_webhooks) which requires that your Home Assistant instance is publically accessible, which I think brings some security concerns or simply not always possible to set up. +The idea of creating [HTTP to MQTT bridge](https://github.com/petkov/http_to_mqtt) appeared when I was trying to integrate Google Assistant with my Home Assistant after watching [BRUH Automation](https://youtu.be/087tQ7Ly7f4?t=265) video. Right now there is no MQTT service available in [IFTTT](https://ifttt.com/about). Existing integration solution uses [Maker Webhooks](https://ifttt.com/maker_webhooks) which requires that your Home Assistant instance is publicly accessible, which I think brings some security concerns or simply not always possible to set up. The HTTP to MQTT bridge should fill that gap. The idea is to receive messages using HTTP requests and transfer them to your MQTT broker, which can be contacted by Home Assistant. The HTTP to MQTT bridge is written using Node.js with [Express](https://expressjs.com/) for the server part and [MQTT.js](https://www.npmjs.com/package/mqtt) for the client. diff --git a/source/_posts/2017-04-01-thomas-krenn-award.markdown b/source/_posts/2017-04-01-thomas-krenn-award.markdown index 54cb23a4f79..2c31e11a684 100644 --- a/source/_posts/2017-04-01-thomas-krenn-award.markdown +++ b/source/_posts/2017-04-01-thomas-krenn-award.markdown @@ -10,7 +10,7 @@ categories: Community og_image: /images/blog/2017-04-award/social.png --- -You may already know from our social media channels and the release blog post for 0.41: We are now an award-winning Open source project. The jury of the [Thomas-Krenn-Award][award] put us on the 2nd place. This is an awesome achievment for an independent community project. +You may already know from our social media channels and the release blog post for 0.41: We are now an award-winning Open source project. The jury of the [Thomas-Krenn-Award][award] put us on the 2nd place. This is an awesome achievement for an independent community project. I would like to thanks all contributors. Your endless effort made this possible. diff --git a/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown b/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown index b6beaa99e46..b8949bbedf2 100644 --- a/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown +++ b/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown @@ -85,7 +85,7 @@ sensor: ``` ## If you need help... -...don't hesitate to use our very active [forums][forum] or join us for a little [chat][gitter]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. ## Reporting Issues Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. @@ -225,7 +225,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - light.yeelight: catch i/o related exceptions from the backend lib ([@rytilahti] - [#6952]) - Fix current_temperature is rounded ([@aufano] - [#6960]) - Preserve customize glob order. ([@andrey-git] - [#6963]) -- Foscam Camera: Adding exception handling when fetching the camera image to avoid python exception errors when host is not reachable or rather any url error to camera ([@viswa-swami] - [#6964]) +- Foscam Camera: Adding exception handling when fetching the camera image to avoid python exception errors when host is not reachable or rather any URL error to camera ([@viswa-swami] - [#6964]) - Crime Reports sensor ([@happyleavesaoc] - [#6966]) (new-platform) - Update kodi for aiohttp2 ([@armills] - [#6967]) - Bugfix time and task coro ([@pvizeli] - [#6968]) @@ -398,10 +398,10 @@ Experiencing issues introduced by this release? Please report them in our [issue [@wardcraigj]: https://github.com/wardcraigj [@wmalgadey]: https://github.com/wmalgadey [forum]: https://community.home-assistant.io/ -[gitter]: https://gitter.im/home-assistant/home-assistant [issue]: https://github.com/home-assistant/home-assistant/issues [#7057]: https://github.com/home-assistant/home-assistant/pull/7057 [#7106]: https://github.com/home-assistant/home-assistant/pull/7106 [#7137]: https://github.com/home-assistant/home-assistant/pull/7137 [#7141]: https://github.com/home-assistant/home-assistant/pull/7141 [@robbiet480]: https://github.com/robbiet480 +[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-04-22-ikea-tradfri--spotify.markdown b/source/_posts/2017-04-22-ikea-tradfri--spotify.markdown index e99a1a0371b..64f0b02ab0e 100644 --- a/source/_posts/2017-04-22-ikea-tradfri--spotify.markdown +++ b/source/_posts/2017-04-22-ikea-tradfri--spotify.markdown @@ -84,7 +84,7 @@ sensor: ``` ## If you need help... -...don't hesitate to use our very active [forums][forum] or join us for a little [chat][gitter]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. ## Reporting Issues Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. @@ -116,7 +116,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Bugfix time and task coro ([@pvizeli] - [#6968]) - Initial import for HassIO ([@pvizeli] - [#6935]) - Preserve customize glob order. ([@andrey-git] - [#6963]) -- Foscam Camera: Adding exception handling when fetching the camera image to avoid python exception errors when host is not reachable or rather any url error to camera ([@viswa-swami] - [#6964]) ([camera.foscam docs]) +- Foscam Camera: Adding exception handling when fetching the camera image to avoid python exception errors when host is not reachable or rather any URL error to camera ([@viswa-swami] - [#6964]) ([camera.foscam docs]) - light.yeelight: catch i/o related exceptions from the backend lib ([@rytilahti] - [#6952]) - From Dusk till Dawn ([@BillyNate] - [#6857]) ([sun docs]) - Tests for zwave services ([@armills] - [#6937]) ([zwave docs]) @@ -149,7 +149,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Upgrade sendgrid to 4.0.0 ([@fabaff] - [#7038]) ([notify.sendgrid docs]) - Missing line name restriction added (fixes #7039) ([@DavidMStraub] - [#7040]) ([sensor.mvglive docs]) - Plug file leak on LIFX unregister ([@amelchio] - [#7031]) ([light.lifx docs]) -- Make core to look avilable state of device on servicecall ([@pvizeli] - [#7045]) +- Make core to look available state of device on servicecall ([@pvizeli] - [#7045]) - Remove configuration sample ([@fabaff] - [#7048]) - Bugfix wait on start event ([@pvizeli] - [#7013]) - Bugfix slider ([@pvizeli] - [#7047]) ([input_slider docs]) @@ -212,7 +212,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Value of 0 should not be considered `unknown`. ([@aequitas] - [#7139]) - Upgrade netdisco ([@balloob] - [#7171]) - Added new services to platform kodi ([@alexmogavero] - [#6426]) ([media_player docs]) ([media_player.kodi docs]) -- Supress trackback and upgrade PyMata to 2.14 ([@fabaff] - [#7176]) ([arduino docs]) +- Suppress trackback and upgrade PyMata to 2.14 ([@fabaff] - [#7176]) ([arduino docs]) - Disable invalid-sequence-index ([@fabaff] - [#7177]) - Upgrade mypy to 0.501 (was renamed from mypy-lang) ([@fabaff] - [#7117]) - Add condition for API failure ([@sytone] - [#7181]) @@ -487,7 +487,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [zwave docs]: /components/zwave/ [zwave.node_entity docs]: /components/zwave.node_entity/ [forum]: https://community.home-assistant.io/ -[gitter]: https://gitter.im/home-assistant/home-assistant [issue]: https://github.com/home-assistant/home-assistant/issues [#7204]: https://github.com/home-assistant/home-assistant/pull/7204 [#7214]: https://github.com/home-assistant/home-assistant/pull/7214 @@ -519,3 +518,4 @@ Experiencing issues introduced by this release? Please report them in our [issue [notify.html5 docs]: https://home-assistant.io/components/notify.html5/ [notify.telegram docs]: https://home-assistant.io/components/notify.telegram/ [telegram_bot.polling docs]: https://home-assistant.io/components/telegram_bot.polling/ +[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-04-30-hassbian-1.21-its-about-time.markdown b/source/_posts/2017-04-30-hassbian-1.21-its-about-time.markdown index 2a13cc6821d..a24547591cc 100644 --- a/source/_posts/2017-04-30-hassbian-1.21-its-about-time.markdown +++ b/source/_posts/2017-04-30-hassbian-1.21-its-about-time.markdown @@ -39,12 +39,12 @@ With this image there also quite a bit of cleaning of the base system and the sc - Added libtool and autoconf package. Dependencies for some of the pip packages. - Pi ZeroW should now work with the image. -To follow discussions about the development of the HASSbian image or to contribute join the [HASSbian gitter chat][hassbian-gitter]. +To follow discussions about the development of the HASSbian image or to contribute join our [Discord chat server][discord-devs]. To get started with the new image, check out the installation instructions in the [getting started section][gs-image]. [cec]: /components/hdmi_cec/ [hassbian-repo]: https://github.com/home-assistant/hassbian-scripts/ [hassbian-config-release]: https://github.com/home-assistant/hassbian-scripts/releases/latest -[hassbian-gitter]: https://gitter.im/home-assistant/hassbian [gs-image]: /getting-started/installation-raspberry-pi-image/ +[discord-devs]: https://discord.gg/8X8DTH4 diff --git a/source/_posts/2017-05-06-zigbee-opencv-dlib.markdown b/source/_posts/2017-05-06-zigbee-opencv-dlib.markdown index 2f4d7538de2..b0e98c7e945 100644 --- a/source/_posts/2017-05-06-zigbee-opencv-dlib.markdown +++ b/source/_posts/2017-05-06-zigbee-opencv-dlib.markdown @@ -11,7 +11,7 @@ categories: Release-Notes og_image: /images/blog/2017-05-0.44/components.png --- - + This release brings some great new integrations. The biggest one is the [native ZigBee integration][zha docs] by [Russell Cloran][@rcloran]. This will allow Home Assistant to natively control Philips Hue lights without the need for a hub! (IKEA Tradfri lights not yet due to implementing a different profile) @@ -24,7 +24,7 @@ And finally, for users of the config panel in the UI, we have fixed the issue wi Enjoy! ## {% linkable_title If you need help... %} -...don't hesitate to use our very active [forums][forum] or join us for a little [chat][gitter]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. ## {% linkable_title Reporting Issues %} Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. @@ -499,7 +499,6 @@ influxdb: [wink docs]: https://home-assistant.io/components/wink/ [zha docs]: https://home-assistant.io/components/zha/ [forum]: https://community.home-assistant.io/ -[gitter]: https://gitter.im/home-assistant/home-assistant [issue]: https://github.com/home-assistant/home-assistant/issues [#7062]: https://github.com/home-assistant/home-assistant/pull/7062 [#7468]: https://github.com/home-assistant/home-assistant/pull/7468 @@ -510,3 +509,4 @@ influxdb: [@pezinek]: https://github.com/pezinek [device_tracker.unifi docs]: https://home-assistant.io/components/device_tracker.unifi/ [sensor.wunderground docs]: https://home-assistant.io/components/sensor.wunderground/ +[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown b/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown index 8102a4451dd..381d15f7c3b 100644 --- a/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown +++ b/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown @@ -11,7 +11,7 @@ categories: Release-Notes og_image: /images/blog/2017-05-0.45/components.png --- - + Welcome to another great release of Home Assistant! While some of contributors and users are gathering at PyCon US 2017, we still managed to get a great release together! @@ -78,7 +78,7 @@ If you are using our [experimental Hass.io image][hass.io], we made a breaking c - Allow fetching hass.io panel without auth ([@balloob] - [#7714]) ([hassio docs]) ## {% linkable_title If you need help... %} -...don't hesitate to use our very active [forums][forum] or join us for a little [chat][gitter]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. ## {% linkable_title Reporting Issues %} Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. @@ -423,7 +423,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [zwave docs]: https://home-assistant.io/components/zwave/ [zwave.api docs]: https://home-assistant.io/components/zwave.api/ [forum]: https://community.home-assistant.io/ -[gitter]: https://gitter.im/home-assistant/home-assistant [issue]: https://github.com/home-assistant/home-assistant/issues [#7673]: https://github.com/home-assistant/home-assistant/pull/7673 [#7683]: https://github.com/home-assistant/home-assistant/pull/7683 @@ -435,3 +434,4 @@ Experiencing issues introduced by this release? Please report them in our [issue [hassio docs]: https://home-assistant.io/components/hassio/ [media_player.volumio docs]: https://home-assistant.io/components/media_player.volumio/ [telegram_bot.__init__ docs]: https://home-assistant.io/components/telegram_bot.__init__/ +[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-06-04-release-46.markdown b/source/_posts/2017-06-04-release-46.markdown index f35433957d3..26ce625edf9 100644 --- a/source/_posts/2017-06-04-release-46.markdown +++ b/source/_posts/2017-06-04-release-46.markdown @@ -11,7 +11,7 @@ categories: Release-Notes og_image: /images/blog/2017-06-0.46/components.png --- - + It's time for 0.46! This release does not have too many new integrations, instead it focussed on bug fixes. @@ -55,7 +55,7 @@ sensor: - Disallow ambiguous color descriptors in the light.turn_on schema. This means that you can no longer specify both `xy_color` and `rgb_color`. ([@amelchio] - [#7765]) (breaking change) ## {% linkable_title If you need help... %} -...don't hesitate to use our very active [forums][forum] or join us for a little [chat][gitter]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. ## {% linkable_title Reporting Issues %} Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. @@ -147,7 +147,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Use expected behvaior for above/below ([@armills] - [#7857]) (breaking change) - log time delay of domain setup in info level ([@azogue] - [#7808]) - Optimize history_stats efficiency and database usage ([@bokub] - [#7858]) ([sensor.history_stats docs]) -- dont use default for switch name, so that the object id is used ([@abmantis] - [#7845]) ([switch.broadlink docs]) (breaking change) +- don't use default for switch name, so that the object id is used ([@abmantis] - [#7845]) ([switch.broadlink docs]) (breaking change) - Disallow ambiguous color descriptors in the light.turn_on schema ([@amelchio] - [#7765]) (breaking change) - Make monkey patch work in Python 3.6 ([@balloob] - [#7848]) - fix permissions issue for Insteon Local #6558 ([@wardcraigj] - [#7860]) ([insteon_local docs]) @@ -382,7 +382,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [zoneminder docs]: https://home-assistant.io/components/zoneminder/ [zwave docs]: https://home-assistant.io/components/zwave/ [forum]: https://community.home-assistant.io/ -[gitter]: https://gitter.im/home-assistant/home-assistant [issue]: https://github.com/home-assistant/home-assistant/issues [#7780]: https://github.com/home-assistant/home-assistant/pull/7780 [#7841]: https://github.com/home-assistant/home-assistant/pull/7841 @@ -397,3 +396,4 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.metoffice docs]: https://home-assistant.io/components/sensor.metoffice/ [sensor.wunderground docs]: https://home-assistant.io/components/sensor.wunderground/ [media_player.roku docs]: https://home-assistant.io/components/media_player.roku/ +[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-06-15-zwave-entity-ids.markdown b/source/_posts/2017-06-15-zwave-entity-ids.markdown new file mode 100644 index 00000000000..48bb3a80df1 --- /dev/null +++ b/source/_posts/2017-06-15-zwave-entity-ids.markdown @@ -0,0 +1,22 @@ +--- +layout: post +title: "ZWave Entity IDs" +description: "Information on the past and future of ZWave Entity IDs." +date: 2017-06-15 08:00:00 -0400 +date_formatted: "June 15, 2017" +author: Adam Mills +comments: true +categories: Technology +--- + +ZWave entity_ids have long been a source of frustration in Home Assistant. The first problem we faced was that depending on the order of node discovery, entity_ids could be discovered with different names on each run. To solve this we added the node id as a suffix to the entity_id. This ensured that entity_ids were generated deterministically on each run, but additional suffixes had to be added to handle edge cases where there would otherwise be a conflict. The resulting entity_ids worked, but have been difficult to work with and makes ZWave a strange exception among other Home Assistant components. + +Thanks to the awesome work of [@turbokongen], a growing number of ZWave configuration options are now available from the new ZWave panel in the Home Assistant frontend. Among these new features is support for renaming of ZWave nodes and their underlying values. (These renames are persisted in zwcfg_*.xml) This is important, because these items are combined to form the Home Assistant entity name, which is used to generate the entity_id. Now that these options are available, ZWave users can rename nodes and values, influencing the entity_ids that are generated by Home Assistant. + +Now that users are able to control these names, we will be making changes to how the entity_ids are generated for ZWave entities. The ZWave entity_ids are going to switch back to using the standard entity_id generation from Home Assistant core, based on the entity names. Moving forward, if there is a conflict when generating entity_ids, a suffix will be added, and it will be the responsibility of the user to rename their nodes and values to avoid the conflict. This is the same as any other platform in Home Assistant where two devices are discovered with the same name. + +With the release of 0.47, this feature will be opt-in. Setting `new_entity_ids: true` under `zwave:` in your configuration.yaml will enable the new generation. After 0.48 this feature will become opt-out. From 0.48 onward, unless you’ve declared `new_entity_ids: false` you will switch to the new entity_id generation. At an undecided point in the future, the old entity_id generation will be removed completely. + +I’m sure all ZWave users understand that the current entity_ids aren’t easy to use. They’re annoying to type in configuration.yaml, and break if a node needs to be re-included to the network. We know that breaking changes are painful, and so we’re doing what we can to roll this change out as smoothly as possible. The end result should be a dramatic simplification of most ZWave configurations. We hope that this change will ultimately make ZWave much easier to work with, and bring ZWave configuration just a little closer to the rest of the Home Assistant platforms. + +[@turbokongen]: https://github.com/turbokongen diff --git a/source/_posts/2017-06-17-release-47.markdown b/source/_posts/2017-06-17-release-47.markdown new file mode 100644 index 00000000000..548f62fa45b --- /dev/null +++ b/source/_posts/2017-06-17-release-47.markdown @@ -0,0 +1,577 @@ +--- +layout: post +title: "0.47: Python Scripts, Sesame Smart Lock, Gitter, Onvif cameras" +description: "Use Python to script Hass and enjoy a ton of new integrations. We now passed the 700 integrations!" +date: 2017-06-17 01:04:05 +0000 +date_formatted: "June 17, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2017-06-0.47/components.png +--- + + + +In this release a ton of new stuff! And who doesn't like new stuff? This release we're passing the 700 integrations for Home Assistant. As of today [we're 1369 days old][first-commit], which means that roughly every two days a new integration gets added! + +## {% linkable_title Python Scripts %} + +The biggest change is a new type of script component: [Python scripts][python_script docs]. This new component will allow you to write scripts to manipulate Home Assistant: call services, set states and fire events. Each Python script is made available as a service. Head over to [the docs][python_script docs] to see how to get started. + +## {% linkable_title Updater %} + +The updater has received a new opt-in option to let us know which components you use. This will allow us to focus development efforts on the components that are popular. + +```yaml +updater: + include_used_components: true +``` + +And as a reminder. We will never share gathered data in a manner that can be used to identify anyone. We do plan on making aggregate data public soon. This will include total number of users and which hardware/software platform people use to run Home Assistant. + +## {% linkable_title Z-Wave %} + +Z-Wave is also getting a big update in this release. The confusing entity_ids will be on their way out. There is a [zwave blog post] that gives more detail, but the upgrade steps will be as follows: + +1. Run Home Assistant as normal and the old IDs will still be used. +2. The new entity IDs will be shown in the more-info dialog for each entity. Check to make sure none of them will have conflicts once the new names are applied. +3. Rename entities using the ui card as described in the blog post to avoid conflicts. Restart Home Assistant to observe the changes. +4. Update all places mentioning IDs (groups, automation, customization, etc.) in configuration.yaml. +5. Add `new_entity_ids: true` to your zwave config. +6. Restart Home Assistant to run with new IDs. +7. The old entity IDs will be available in the more info dialog to trace down any remaining errors. + +## {% linkable_title Monkey Patching Python 3.6 %} + +Some people have noticed that running Home Assistant under Python 3.6 can lead to segfaults. It seems to be related to the [earlier segfault issues][old-bug] that we experienced when we released the asyncio-based core. We thought that those issues would have been fixed when [Python bug 26617] was resolved. Although we see less reports compared to the old bug, there are still users [experiencing them][new-bug] ([gdb stacktrace points at `PyObject_GC_Del()`][gdb]). + +Since Python 3.6, the Task and Future classes have been moved to C. This gives a nice speed boost but also prevents us from monkey patching the Task class to avoid the segfault. [Ben Bangert] managed to brew up another monkey patch to stop Python 3.6 from using the C classes, falling back to the Python versions instead. This allows us to apply the original monkey patch again. + +Both monkey patches are now active by default starting version 0.47 to avoid our users experiencing segfaults. This comes at a cost of not being able to benefit from all optimizations that were introduced in Python 3.6. + +To run without the monkey patch, start Home Assistant with `HASS_NO_MONKEY=1 hass`. We will further investigate this issue and try to fix it in a future version of Python. + +[old-bug]: https://github.com/home-assistant/home-assistant/issues/3453 +[Python bug 26617]: https://bugs.python.org/issue26617 +[new-bug]: https://github.com/home-assistant/home-assistant/issues/7752 +[gdb]: https://github.com/home-assistant/home-assistant/issues/7752#issuecomment-305100009 +[Ben Bangert]: https://github.com/bbangert + +## {% linkable_title Release 0.47.1 - June 21 %} + +- Fix Vera lights issue #8098 ([@tsvi] - [#8101]) ([light.vera docs]) +- Fix Dyson async_add_job ([@CharlesBlonde] - [#8113]) ([fan.dyson docs]) ([sensor.dyson docs]) +- Update InfluxDB to handle datetime objects and multiple decimal points ([@philhawthorne] - [#8080]) ([influxdb docs]) +- Fixed iTach command parsing with empty data ([@alanfischer] - [#8104]) ([remote.itach docs]) +- Allow iteration in python_script ([@balloob] - [#8134]) ([python_script docs]) + +## {% linkable_title New platforms %} + +- Added a Taps Aff binary sensor ([@bazwilliams] - [#7880]) ([binary_sensor.tapsaff docs]) (new-platform) +- lock.sesame: New lock platform for Sesame smart locks ([@trisk] - [#7873]) ([lock.sesame docs]) (new-platform) +- Etherscan.io sensor ([@nkgilley] - [#7855]) ([sensor.etherscan docs]) (new-platform) +- blockchain.info sensor ([@nkgilley] - [#7856]) ([sensor.blockchain docs]) (new-platform) +- Add Radarr sensor ([@tboyce021] - [#7318]) ([sensor.radarr docs]) (new-platform) +- Added buienradar sensor and weather ([@mjj4791] - [#7592]) ([sensor.buienradar docs]) ([weather.buienradar docs]) (new-platform) +- Add support for Vanderbilt SPC alarm panels and attached sensors ([@mbrrg] - [#7663]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs]) (new-platform) +- Add raspihats switch ([@florincosta] - [#7665]) ([switch.raspihats docs]) (new-platform) +- Add juicenet platform ([@jesserockz] - [#7668]) ([juicenet docs]) ([sensor.juicenet docs]) (new-platform) +- add ripple sensor ([@nkgilley] - [#7935]) ([sensor.ripple docs]) (new-platform) +- New component: Python Script ([@balloob] - [#7950]) ([python_script docs]) (new-platform) +- Nadtcp component ([@mwsluis] - [#7955]) ([media_player.nadtcp docs]) (new-platform) +- Add Gitter.im sensor ([@fabaff] - [#7998]) ([sensor.gitter docs]) (new-platform) +- Update mailgun ([@happyleavesaoc] - [#7984]) ([mailgun docs]) ([notify.mailgun docs]) (breaking change) (new-platform) +- Add Flexit AC climate platform ([@Sabesto] - [#7871]) ([climate.flexit docs]) (new-platform) + +## {% linkable_title If you need help... %} +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} +Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. + + +## {% linkable_title Breaking changes %} + +- Update opencv config to match other image processors ([@Teagan42] - [#7864]) ([image_processing.opencv docs]) (breaking change) + +```yaml +image_processing: + - platform: opencv + name: OpenCV + source: + - entity_id: camera.front_door + classifier: + faces: + file: /path/to/classifier + name: Husband + neighbors: 4 + min_size: (40, 40) + scale: 1.1 +``` + +- Lutron: Add configuration check and use default var names ([@fabaff] - [#7963]) ([lutron docs]) ([light.lutron docs]) (breaking change) + +```yaml +lutron: + host: IP_ADDRESS + username: lutron + password: integration +``` + +- Convert mailgun to component ([@happyleavesaoc] - [#7984]) ([mailgun docs]) ([notify.mailgun docs]) (breaking change) (new-platform) + +```yaml +mailgun: + domain: !secret mailgun_domain + api_key: !secret mailgun_api_key + sandbox: False + +notify: + - name: mailgun + platform: mailgun + recipient: !secret mailgun_recipient +``` + +- Z-Wave node and scene activated trigger events now use the full entity ID ([@armills] - [#7786]) ([zwave docs]) (breaking change) +```yaml +automation: + - alias: Button 1 + trigger: + platform: event + event_type: zwave.scene_activated + event_data: + entity_id: living_room_remote_13 + scene_id: 1 +``` +```yaml +automation: + - alias: Event 1 + trigger: + platform: event + event_type: zwave.node_event + event_data: + entity_id: zwave.living_room_remote_13 + basic_level: 1 +``` + +- LIFX: add multiple modes to pulse effect. The `lifx_effect_breathe` call has been deprecated. Use `lifx_effect_pulse` with the new `mode: breathe` attribute instead. ([@amelchio] - [#8016]) ([light.lifx docs]) (breaking change) +- Use standard entity_ids for zwave entities. This also introduces a small API breakage, where `EVENT_SCENE_ACTIVATED` and `EVENT_NODE_EVENT` will no longer supply an `object_id`. They will now be tied to the node entity_id. ([@armills] - [#7786]) ([zwave docs]) ([light.zwave docs]) (breaking change) +- Fix attribute entities. Home Assistant will no longer filter out entities that are 'falsey'. So you might see more entity attributes show up. ([@pvizeli] - [#8066]) (breaking change) + +## {% linkable_title All changes %} + +- Update squeezebox.py ([@molobrakos] - [#7617]) ([media_player.squeezebox docs]) +- Fix html5 unsub ([@balloob] - [#7874]) ([notify.html5 docs]) +- Added effects to Yeelight bulbs ([@Mister-Espria] - [#7152]) ([light.yeelight docs]) +- Enocean Binary Sensor: Handle click of both rockers ([@twendt] - [#7770]) ([binary_sensor.enocean docs]) +- Support for renaming ZWave values ([@armills] - [#7780]) ([zwave docs]) +- Fix telegram_bot ([@balloob] - [#7877]) ([telegram_bot.polling docs]) ([telegram_bot.webhooks docs]) +- [light.lifx] Update aiolifx ([@amelchio] - [#7882]) ([light.lifx docs]) +- Change nad_receiver to pypi ([@joopert] - [#7852]) ([media_player.nad docs]) +- Switch pymyq to pypi ([@andrey-git] - [#7884]) ([cover.myq docs]) +- Use constants ([@fabaff] - [#7888]) ([notify.xmpp docs]) +- Upgrade pyasn1-modules to 0.0.9 ([@fabaff] - [#7887]) ([notify.xmpp docs]) +- Upgrade sendgrid to 4.2.0 ([@fabaff] - [#7886]) ([notify.sendgrid docs]) +- Upgrade python-telegram-bot to 6.0.3 ([@fabaff] - [#7885]) +- Fix MQTT camera test ([@balloob] - [#7878]) +- Added a Taps Aff binary sensor ([@bazwilliams] - [#7880]) ([binary_sensor.tapsaff docs]) (new-platform) +- lock.sesame: New lock platform for Sesame smart locks ([@trisk] - [#7873]) ([lock.sesame docs]) (new-platform) +- Dsmr5 revert ([@aequitas] - [#7900]) ([sensor.dsmr docs]) +- Fix typos in Wunderground component (Percipitation -> Precipitation) ([@mje-nz] - [#7901]) ([sensor.wunderground docs]) +- Add support for the expirationTime parameter. ([@perosb] - [#7895]) ([notify.html5 docs]) +- Etherscan.io sensor ([@nkgilley] - [#7855]) ([sensor.etherscan docs]) (new-platform) +- blockchain.info sensor ([@nkgilley] - [#7856]) ([sensor.blockchain docs]) (new-platform) +- Mqtt cover modifications ([@cribbstechnologies] - [#7841]) ([cover.mqtt docs]) +- Add Radarr sensor ([@tboyce021] - [#7318]) ([sensor.radarr docs]) (new-platform) +- Add service to set nest away/home modes ([@mattsch] - [#7619]) ([nest docs]) +- Added buienradar sensor and weather ([@mjj4791] - [#7592]) ([sensor.buienradar docs]) ([weather.buienradar docs]) (new-platform) +- Add support for Vanderbilt SPC alarm panels and attached sensors ([@mbrrg] - [#7663]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs]) (new-platform) +- Add raspihats switch ([@florincosta] - [#7665]) ([switch.raspihats docs]) (new-platform) +- Add 'icon_template' to switch templates (similar to sensor template) ([@PhracturedBlue] - [#7862]) ([switch.template docs]) +- Fix docstring ([@fabaff] - [#7907]) +- Sync crypto-currency platforms ([@fabaff] - [#7906]) ([sensor.bitcoin docs]) ([sensor.blockchain docs]) ([sensor.coinmarketcap docs]) ([sensor.etherscan docs]) +- Move consts to 'const.py' ([@fabaff] - [#7909]) ([media_player.sonos docs]) ([sensor.imap_email_content docs]) ([sensor.pvoutput docs]) ([sensor.waqi docs]) +- Minor cleanup - Define 'CONF_ICON_TEMPLATE' constant centrally ([@PhracturedBlue] - [#7910]) ([sensor.template docs]) ([switch.template docs]) +- Do not call update() in constructor ([@fabaff] - [#7912]) ([sensor.cpuspeed docs]) ([sensor.cups docs]) ([sensor.currencylayer docs]) ([sensor.fixer docs]) +- Add juicenet platform ([@jesserockz] - [#7668]) ([juicenet docs]) ([sensor.juicenet docs]) (new-platform) +- Bump pyEight version to fix 0hr session errors ([@mezz64] - [#7916]) ([eight_sleep docs]) +- update to pywebpush 1.0.4 which allows install on system with openssl-1.1.0 (cryptography dep) ([@perosb] - [#7915]) ([notify.html5 docs]) +- Do not call update() in constructor ([@fabaff] - [#7917]) ([sensor.dte_energy_bridge docs]) ([sensor.dublin_bus_transport docs]) ([sensor.dweet docs]) ([sensor.ebox docs]) ([sensor.ecobee docs]) ([sensor.hddtemp docs]) ([sensor.mold_indicator docs]) ([sensor.pi_hole docs]) ([sensor.yahoo_finance docs]) +- Fix changes introduced with #7917 ([@fabaff] - [#7930]) ([sensor.waqi docs]) +- Do not call update() in constructor ([@fabaff] - [#7931]) ([sensor.yweather docs]) +- Add service_url config option to volvooncall ([@palp] - [#7919]) ([volvooncall docs]) +- Added 'change' field to statistics sensor ([@jminn] - [#7820]) ([sensor.statistics docs]) +- add ripple sensor ([@nkgilley] - [#7935]) ([sensor.ripple docs]) (new-platform) +- Add Yahoo! weather platform ([@fabaff] - [#7939]) +- [media_player.sonos] Send media_stop on turn_off ([@Juggels] - [#7940]) ([media_player.sonos docs]) +- update to 006 ([@joopert] - [#7945]) ([media_player.nad docs]) +- Update ping.py ([@vrs01] - [#7944]) ([device_tracker.ping docs]) +- Add option to display all input sources / Add support for favourite channels / Treat Marantz SR5008 as Denon AVR-X device ([@scarface-4711] - [#7949]) ([media_player.denonavr docs]) +- [WIP] Fix opencv ([@Teagan42] - [#7864]) ([image_processing.opencv docs]) (breaking change) +- Upgrade coinmarketcap to 3.0.1 ([@fabaff] - [#7951]) ([sensor.coinmarketcap docs]) +- test connection without needing admin rights ([@heinemml] - [#7947]) +- Fix the negative values bug in history_stats ([@bokub] - [#7934]) +- Vera colored light support ([@alanfischer] - [#7942]) ([vera docs]) ([light.vera docs]) +- Fix typos ([@fabaff] - [#7957]) ([http docs]) ([fan.zwave docs]) +- Osram lightify, removed double set to the lightify bridge in case of brightness changes ([@commento] - [#7662]) ([light.osramlightify docs]) +- Add configuration check and use default var names ([@fabaff] - [#7963]) ([lutron docs]) ([light.lutron docs]) (breaking change) +- lock.sesame: Update pysesame, add state attributes ([@trisk] - [#7953]) ([lock.sesame docs]) +- Fixed metadata issue ([@bazwilliams] - [#7932]) ([media_player.openhome docs]) +- Create metoffice.py ([@cyberjacob] - [#7965]) ([sensor.metoffice docs]) +- Prevent Roku doing I/O in event loop ([@balloob] - [#7969]) ([media_player.roku docs]) +- Fix platforms being able to block startup ([@balloob] - [#7970]) +- New component: Python Script ([@balloob] - [#7950]) ([python_script docs]) (new-platform) +- Nadtcp component ([@mwsluis] - [#7955]) ([media_player.nadtcp docs]) (new-platform) +- HomeMatic optimizations and code cleanup ([@danielperna84] - [#7986]) ([homematic docs]) ([binary_sensor.homematic docs]) ([cover.homematic docs]) ([sensor.homematic docs]) ([switch.homematic docs]) +- Update eliqonline.py ([@molobrakos] - [#7977]) ([sensor.eliqonline docs]) +- test that all lights turn off when no entity id is given ([@chilicheech] - [#7981]) +- make `last_name` field optional ([@azogue] - [#7988]) +- Bugfixing with version 0.4.4 of denonavr ([@scarface-4711] - [#7995]) ([media_player.denonavr docs]) +- Upgrade py-cpuinfo to 3.3.0 ([@fabaff] - [#7992]) ([sensor.cpuspeed docs]) +- LIFX: clean up internal color conversions ([@amelchio] - [#7964]) ([light.lifx docs]) +- LIFX: add support for setting infrared level ([@amelchio] - [#8000]) ([light.lifx docs]) +- dismiss service for persistent notifications ([@tedstriker] - [#7996]) ([persistent_notification docs]) +- Add Gitter.im sensor ([@fabaff] - [#7998]) ([sensor.gitter docs]) (new-platform) +- Fixing Client connection error ([@sander76] - [#7991]) ([telegram_bot.polling docs]) +- Additional demo fan with only speed support ([@armills] - [#7985]) +- Update mailgun ([@happyleavesaoc] - [#7984]) ([mailgun docs]) ([notify.mailgun docs]) (breaking change) (new-platform) +- Fixed bug in spotify component. ([@soldag] - [#7976]) ([media_player.spotify docs]) +- fixing potential null issue with optional param being parsed as a script ([@cribbstechnologies] - [#7928]) ([light.template docs]) +- Make it more flexible (fixes #7954) ([@fabaff] - [#8001]) ([image_processing.seven_segments docs]) +- Add Flexit AC climate platform ([@Sabesto] - [#7871]) ([climate.flexit docs]) (new-platform) +- update pyripple ([@nkgilley] - [#8015]) ([sensor.ripple docs]) +- Allow put as method ([@fabaff] - [#8004]) ([switch.rest docs]) +- Configure conversation for custom actions with keywords ([@mjsir911] - [#7734]) ([conversation docs]) +- Remove globally disabled pylint issues ([@fabaff] - [#8005]) ([vera docs]) ([calendar.google docs]) ([climate.wink docs]) ([device_tracker.owntracks docs]) ([media_player.aquostv docs]) ([media_player.plex docs]) ([sensor.openevse docs]) +- entity_id for service fan.turn_off is optional ([@chilicheech] - [#7982]) +- Make percentage string values as floats/ints in InfluxDB ([@philhawthorne] - [#7879]) ([influxdb docs]) +- Take in account Spotify account permissions ([@Tommatheussen] - [#8012]) ([media_player.spotify docs]) +- Add Dyson Pure Cool Link support ([@CharlesBlonde] - [#7795]) +- Allow device_tracker platforms to specify picture and icon upon discovery ([@andrey-git] - [#8018]) +- Discover Z-Wave values by index ([@armills] - [#7853]) ([zwave docs]) +- LIFX: add multiple modes to pulse effect ([@amelchio] - [#8016]) ([light.lifx docs]) (breaking change) +- Do not call update() in constructor ([@fabaff] - [#8048]) ([sensor.snmp docs]) +- Upgrade pysnmp to 4.3.8 ([@fabaff] - [#8044]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) +- Upgrade zeroconf to 0.19.1 ([@fabaff] - [#8043]) ([zeroconf docs]) +- Vera fix for dimmable vs rgb lights ([@alanfischer] - [#8007]) ([vera docs]) ([light.vera docs]) +- Group service / dynamic handling ([@pvizeli] - [#7971]) ([group docs]) +- Adding ssocr to docker to support Seven Segments Display ([@MartyTremblay] - [#8028]) +- Added host variable to Splunk.py and updated tox tests ([@boojew] - [#8052]) ([splunk docs]) +- Restrict Python Script ([@balloob] - [#8053]) ([python_script docs]) +- Fixed the Wind sensor following new release of netatmo-api-python ([@glpatcern] - [#8030]) ([netatmo docs]) ([sensor.netatmo docs]) +- media_player.firetv - Adding support for https. ([@coolcow] - [#8022]) ([media_player.firetv docs]) +- Added ONVIF camera component ([@matt2005] - [#7979]) +- Provide entity_id to avoid sensor mixup (fixes #7636). Use async_dispatcher. Provide icon. ([@molobrakos] - [#7946]) ([volvooncall docs]) +- Updater improvements to send option component information ([@infamy] - [#7720]) ([updater docs]) +- Use standard entity_ids for zwave entities ([@armills] - [#7786]) ([zwave docs]) ([light.zwave docs]) (breaking change) +- Update numpy 1.13.0 ([@pvizeli] - [#8059]) ([image_processing.opencv docs]) +- No update in MQTT Binary Sensor #7478 ([@pezinek] - [#8057]) +- Always enable monkey patch ([@balloob] - [#8054]) +- Add to zwave services descriptions ([@andrey-git] - [#8072]) +- Fix attribute entity ([@pvizeli] - [#8066]) (breaking change) +- Added 'all_plants' group and support for plant groups state. ([@aronsky] - [#8063]) ([group docs]) ([plant docs]) +- Fix EntityComponent handle entities without a name ([@balloob] - [#8065]) +- Update pyunifi component to use APIError passed from pyunifi 2.13. Better accommodate login failures with wrapper in pyunifi 2.13. ([@finish06] - [#7899]) ([device_tracker.unifi docs]) +- bump usps version ([@happyleavesaoc] - [#8074]) ([sensor.usps docs]) +- bump ups ([@happyleavesaoc] - [#8075]) ([sensor.ups docs]) + +[#7152]: https://github.com/home-assistant/home-assistant/pull/7152 +[#7318]: https://github.com/home-assistant/home-assistant/pull/7318 +[#7592]: https://github.com/home-assistant/home-assistant/pull/7592 +[#7617]: https://github.com/home-assistant/home-assistant/pull/7617 +[#7619]: https://github.com/home-assistant/home-assistant/pull/7619 +[#7662]: https://github.com/home-assistant/home-assistant/pull/7662 +[#7663]: https://github.com/home-assistant/home-assistant/pull/7663 +[#7665]: https://github.com/home-assistant/home-assistant/pull/7665 +[#7668]: https://github.com/home-assistant/home-assistant/pull/7668 +[#7720]: https://github.com/home-assistant/home-assistant/pull/7720 +[#7734]: https://github.com/home-assistant/home-assistant/pull/7734 +[#7770]: https://github.com/home-assistant/home-assistant/pull/7770 +[#7780]: https://github.com/home-assistant/home-assistant/pull/7780 +[#7786]: https://github.com/home-assistant/home-assistant/pull/7786 +[#7795]: https://github.com/home-assistant/home-assistant/pull/7795 +[#7820]: https://github.com/home-assistant/home-assistant/pull/7820 +[#7841]: https://github.com/home-assistant/home-assistant/pull/7841 +[#7852]: https://github.com/home-assistant/home-assistant/pull/7852 +[#7853]: https://github.com/home-assistant/home-assistant/pull/7853 +[#7855]: https://github.com/home-assistant/home-assistant/pull/7855 +[#7856]: https://github.com/home-assistant/home-assistant/pull/7856 +[#7862]: https://github.com/home-assistant/home-assistant/pull/7862 +[#7864]: https://github.com/home-assistant/home-assistant/pull/7864 +[#7871]: https://github.com/home-assistant/home-assistant/pull/7871 +[#7873]: https://github.com/home-assistant/home-assistant/pull/7873 +[#7874]: https://github.com/home-assistant/home-assistant/pull/7874 +[#7877]: https://github.com/home-assistant/home-assistant/pull/7877 +[#7878]: https://github.com/home-assistant/home-assistant/pull/7878 +[#7879]: https://github.com/home-assistant/home-assistant/pull/7879 +[#7880]: https://github.com/home-assistant/home-assistant/pull/7880 +[#7882]: https://github.com/home-assistant/home-assistant/pull/7882 +[#7884]: https://github.com/home-assistant/home-assistant/pull/7884 +[#7885]: https://github.com/home-assistant/home-assistant/pull/7885 +[#7886]: https://github.com/home-assistant/home-assistant/pull/7886 +[#7887]: https://github.com/home-assistant/home-assistant/pull/7887 +[#7888]: https://github.com/home-assistant/home-assistant/pull/7888 +[#7895]: https://github.com/home-assistant/home-assistant/pull/7895 +[#7899]: https://github.com/home-assistant/home-assistant/pull/7899 +[#7900]: https://github.com/home-assistant/home-assistant/pull/7900 +[#7901]: https://github.com/home-assistant/home-assistant/pull/7901 +[#7906]: https://github.com/home-assistant/home-assistant/pull/7906 +[#7907]: https://github.com/home-assistant/home-assistant/pull/7907 +[#7909]: https://github.com/home-assistant/home-assistant/pull/7909 +[#7910]: https://github.com/home-assistant/home-assistant/pull/7910 +[#7912]: https://github.com/home-assistant/home-assistant/pull/7912 +[#7915]: https://github.com/home-assistant/home-assistant/pull/7915 +[#7916]: https://github.com/home-assistant/home-assistant/pull/7916 +[#7917]: https://github.com/home-assistant/home-assistant/pull/7917 +[#7919]: https://github.com/home-assistant/home-assistant/pull/7919 +[#7928]: https://github.com/home-assistant/home-assistant/pull/7928 +[#7930]: https://github.com/home-assistant/home-assistant/pull/7930 +[#7931]: https://github.com/home-assistant/home-assistant/pull/7931 +[#7932]: https://github.com/home-assistant/home-assistant/pull/7932 +[#7934]: https://github.com/home-assistant/home-assistant/pull/7934 +[#7935]: https://github.com/home-assistant/home-assistant/pull/7935 +[#7939]: https://github.com/home-assistant/home-assistant/pull/7939 +[#7940]: https://github.com/home-assistant/home-assistant/pull/7940 +[#7942]: https://github.com/home-assistant/home-assistant/pull/7942 +[#7944]: https://github.com/home-assistant/home-assistant/pull/7944 +[#7945]: https://github.com/home-assistant/home-assistant/pull/7945 +[#7946]: https://github.com/home-assistant/home-assistant/pull/7946 +[#7947]: https://github.com/home-assistant/home-assistant/pull/7947 +[#7949]: https://github.com/home-assistant/home-assistant/pull/7949 +[#7950]: https://github.com/home-assistant/home-assistant/pull/7950 +[#7951]: https://github.com/home-assistant/home-assistant/pull/7951 +[#7953]: https://github.com/home-assistant/home-assistant/pull/7953 +[#7955]: https://github.com/home-assistant/home-assistant/pull/7955 +[#7957]: https://github.com/home-assistant/home-assistant/pull/7957 +[#7963]: https://github.com/home-assistant/home-assistant/pull/7963 +[#7964]: https://github.com/home-assistant/home-assistant/pull/7964 +[#7965]: https://github.com/home-assistant/home-assistant/pull/7965 +[#7969]: https://github.com/home-assistant/home-assistant/pull/7969 +[#7970]: https://github.com/home-assistant/home-assistant/pull/7970 +[#7971]: https://github.com/home-assistant/home-assistant/pull/7971 +[#7976]: https://github.com/home-assistant/home-assistant/pull/7976 +[#7977]: https://github.com/home-assistant/home-assistant/pull/7977 +[#7979]: https://github.com/home-assistant/home-assistant/pull/7979 +[#7981]: https://github.com/home-assistant/home-assistant/pull/7981 +[#7982]: https://github.com/home-assistant/home-assistant/pull/7982 +[#7984]: https://github.com/home-assistant/home-assistant/pull/7984 +[#7985]: https://github.com/home-assistant/home-assistant/pull/7985 +[#7986]: https://github.com/home-assistant/home-assistant/pull/7986 +[#7988]: https://github.com/home-assistant/home-assistant/pull/7988 +[#7991]: https://github.com/home-assistant/home-assistant/pull/7991 +[#7992]: https://github.com/home-assistant/home-assistant/pull/7992 +[#7995]: https://github.com/home-assistant/home-assistant/pull/7995 +[#7996]: https://github.com/home-assistant/home-assistant/pull/7996 +[#7998]: https://github.com/home-assistant/home-assistant/pull/7998 +[#8000]: https://github.com/home-assistant/home-assistant/pull/8000 +[#8001]: https://github.com/home-assistant/home-assistant/pull/8001 +[#8004]: https://github.com/home-assistant/home-assistant/pull/8004 +[#8005]: https://github.com/home-assistant/home-assistant/pull/8005 +[#8007]: https://github.com/home-assistant/home-assistant/pull/8007 +[#8012]: https://github.com/home-assistant/home-assistant/pull/8012 +[#8015]: https://github.com/home-assistant/home-assistant/pull/8015 +[#8016]: https://github.com/home-assistant/home-assistant/pull/8016 +[#8018]: https://github.com/home-assistant/home-assistant/pull/8018 +[#8022]: https://github.com/home-assistant/home-assistant/pull/8022 +[#8028]: https://github.com/home-assistant/home-assistant/pull/8028 +[#8030]: https://github.com/home-assistant/home-assistant/pull/8030 +[#8043]: https://github.com/home-assistant/home-assistant/pull/8043 +[#8044]: https://github.com/home-assistant/home-assistant/pull/8044 +[#8048]: https://github.com/home-assistant/home-assistant/pull/8048 +[#8052]: https://github.com/home-assistant/home-assistant/pull/8052 +[#8053]: https://github.com/home-assistant/home-assistant/pull/8053 +[#8054]: https://github.com/home-assistant/home-assistant/pull/8054 +[#8057]: https://github.com/home-assistant/home-assistant/pull/8057 +[#8059]: https://github.com/home-assistant/home-assistant/pull/8059 +[#8063]: https://github.com/home-assistant/home-assistant/pull/8063 +[#8065]: https://github.com/home-assistant/home-assistant/pull/8065 +[#8066]: https://github.com/home-assistant/home-assistant/pull/8066 +[#8072]: https://github.com/home-assistant/home-assistant/pull/8072 +[#8074]: https://github.com/home-assistant/home-assistant/pull/8074 +[#8075]: https://github.com/home-assistant/home-assistant/pull/8075 +[@CharlesBlonde]: https://github.com/CharlesBlonde +[@Juggels]: https://github.com/Juggels +[@MartyTremblay]: https://github.com/MartyTremblay +[@Mister-Espria]: https://github.com/Mister-Espria +[@PhracturedBlue]: https://github.com/PhracturedBlue +[@Sabesto]: https://github.com/Sabesto +[@Teagan42]: https://github.com/Teagan42 +[@Tommatheussen]: https://github.com/Tommatheussen +[@aequitas]: https://github.com/aequitas +[@alanfischer]: https://github.com/alanfischer +[@amelchio]: https://github.com/amelchio +[@andrey-git]: https://github.com/andrey-git +[@armills]: https://github.com/armills +[@aronsky]: https://github.com/aronsky +[@azogue]: https://github.com/azogue +[@balloob]: https://github.com/balloob +[@bazwilliams]: https://github.com/bazwilliams +[@bokub]: https://github.com/bokub +[@boojew]: https://github.com/boojew +[@chilicheech]: https://github.com/chilicheech +[@commento]: https://github.com/commento +[@coolcow]: https://github.com/coolcow +[@cribbstechnologies]: https://github.com/cribbstechnologies +[@cyberjacob]: https://github.com/cyberjacob +[@danielperna84]: https://github.com/danielperna84 +[@fabaff]: https://github.com/fabaff +[@finish06]: https://github.com/finish06 +[@florincosta]: https://github.com/florincosta +[@glpatcern]: https://github.com/glpatcern +[@happyleavesaoc]: https://github.com/happyleavesaoc +[@heinemml]: https://github.com/heinemml +[@infamy]: https://github.com/infamy +[@jesserockz]: https://github.com/jesserockz +[@jminn]: https://github.com/jminn +[@joopert]: https://github.com/joopert +[@matt2005]: https://github.com/matt2005 +[@mattsch]: https://github.com/mattsch +[@mbrrg]: https://github.com/mbrrg +[@mezz64]: https://github.com/mezz64 +[@mje-nz]: https://github.com/mje-nz +[@mjj4791]: https://github.com/mjj4791 +[@mjsir911]: https://github.com/mjsir911 +[@molobrakos]: https://github.com/molobrakos +[@mwsluis]: https://github.com/mwsluis +[@nkgilley]: https://github.com/nkgilley +[@palp]: https://github.com/palp +[@perosb]: https://github.com/perosb +[@pezinek]: https://github.com/pezinek +[@philhawthorne]: https://github.com/philhawthorne +[@pvizeli]: https://github.com/pvizeli +[@sander76]: https://github.com/sander76 +[@scarface-4711]: https://github.com/scarface-4711 +[@soldag]: https://github.com/soldag +[@tboyce021]: https://github.com/tboyce021 +[@tedstriker]: https://github.com/tedstriker +[@trisk]: https://github.com/trisk +[@twendt]: https://github.com/twendt +[@vrs01]: https://github.com/vrs01 +[alarm_control_panel.spc docs]: https://home-assistant.io/components/alarm_control_panel.spc/ +[binary_sensor.enocean docs]: https://home-assistant.io/components/binary_sensor.enocean/ +[binary_sensor.homematic docs]: https://home-assistant.io/components/binary_sensor.homematic/ +[binary_sensor.spc docs]: https://home-assistant.io/components/binary_sensor.spc/ +[binary_sensor.tapsaff docs]: https://home-assistant.io/components/binary_sensor.tapsaff/ +[calendar.google docs]: https://home-assistant.io/components/calendar.google/ +[climate.flexit docs]: https://home-assistant.io/components/climate.flexit/ +[climate.wink docs]: https://home-assistant.io/components/climate.wink/ +[conversation docs]: https://home-assistant.io/components/conversation/ +[cover.homematic docs]: https://home-assistant.io/components/cover.homematic/ +[cover.mqtt docs]: https://home-assistant.io/components/cover.mqtt/ +[cover.myq docs]: https://home-assistant.io/components/cover.myq/ +[device_tracker.__init__ docs]: https://home-assistant.io/components/device_tracker.__init__/ +[device_tracker.owntracks docs]: https://home-assistant.io/components/device_tracker.owntracks/ +[device_tracker.ping docs]: https://home-assistant.io/components/device_tracker.ping/ +[device_tracker.snmp docs]: https://home-assistant.io/components/device_tracker.snmp/ +[device_tracker.unifi docs]: https://home-assistant.io/components/device_tracker.unifi/ +[eight_sleep docs]: https://home-assistant.io/components/eight_sleep/ +[fan.__init__ docs]: https://home-assistant.io/components/fan.__init__/ +[fan.demo docs]: https://home-assistant.io/components/fan.demo/ +[fan.zwave docs]: https://home-assistant.io/components/fan.zwave/ +[group docs]: https://home-assistant.io/components/group/ +[homematic docs]: https://home-assistant.io/components/homematic/ +[http docs]: https://home-assistant.io/components/http/ +[image_processing.opencv docs]: https://home-assistant.io/components/image_processing.opencv/ +[image_processing.seven_segments docs]: https://home-assistant.io/components/image_processing.seven_segments/ +[influxdb docs]: https://home-assistant.io/components/influxdb/ +[juicenet docs]: https://home-assistant.io/components/juicenet/ +[light.lifx docs]: https://home-assistant.io/components/light.lifx/ +[light.lutron docs]: https://home-assistant.io/components/light.lutron/ +[light.osramlightify docs]: https://home-assistant.io/components/light.osramlightify/ +[light.template docs]: https://home-assistant.io/components/light.template/ +[light.vera docs]: https://home-assistant.io/components/light.vera/ +[light.yeelight docs]: https://home-assistant.io/components/light.yeelight/ +[light.zwave docs]: https://home-assistant.io/components/light.zwave/ +[lock.sesame docs]: https://home-assistant.io/components/lock.sesame/ +[lutron docs]: https://home-assistant.io/components/lutron/ +[mailgun docs]: https://home-assistant.io/components/mailgun/ +[media_player.aquostv docs]: https://home-assistant.io/components/media_player.aquostv/ +[media_player.denonavr docs]: https://home-assistant.io/components/media_player.denonavr/ +[media_player.firetv docs]: https://home-assistant.io/components/media_player.firetv/ +[media_player.nad docs]: https://home-assistant.io/components/media_player.nad/ +[media_player.nadtcp docs]: https://home-assistant.io/components/media_player.nadtcp/ +[media_player.openhome docs]: https://home-assistant.io/components/media_player.openhome/ +[media_player.plex docs]: https://home-assistant.io/components/media_player.plex/ +[media_player.roku docs]: https://home-assistant.io/components/media_player.roku/ +[media_player.sonos docs]: https://home-assistant.io/components/media_player.sonos/ +[media_player.spotify docs]: https://home-assistant.io/components/media_player.spotify/ +[media_player.squeezebox docs]: https://home-assistant.io/components/media_player.squeezebox/ +[mqtt.__init__ docs]: https://home-assistant.io/components/mqtt.__init__/ +[nest docs]: https://home-assistant.io/components/nest/ +[netatmo docs]: https://home-assistant.io/components/netatmo/ +[notify.html5 docs]: https://home-assistant.io/components/notify.html5/ +[notify.mailgun docs]: https://home-assistant.io/components/notify.mailgun/ +[notify.sendgrid docs]: https://home-assistant.io/components/notify.sendgrid/ +[notify.xmpp docs]: https://home-assistant.io/components/notify.xmpp/ +[opencv docs]: https://home-assistant.io/components/opencv/ +[persistent_notification docs]: https://home-assistant.io/components/persistent_notification/ +[plant docs]: https://home-assistant.io/components/plant/ +[python_script docs]: https://home-assistant.io/components/python_script/ +[sensor.bitcoin docs]: https://home-assistant.io/components/sensor.bitcoin/ +[sensor.blockchain docs]: https://home-assistant.io/components/sensor.blockchain/ +[sensor.buienradar docs]: https://home-assistant.io/components/sensor.buienradar/ +[sensor.coinmarketcap docs]: https://home-assistant.io/components/sensor.coinmarketcap/ +[sensor.cpuspeed docs]: https://home-assistant.io/components/sensor.cpuspeed/ +[sensor.cups docs]: https://home-assistant.io/components/sensor.cups/ +[sensor.currencylayer docs]: https://home-assistant.io/components/sensor.currencylayer/ +[sensor.dsmr docs]: https://home-assistant.io/components/sensor.dsmr/ +[sensor.dte_energy_bridge docs]: https://home-assistant.io/components/sensor.dte_energy_bridge/ +[sensor.dublin_bus_transport docs]: https://home-assistant.io/components/sensor.dublin_bus_transport/ +[sensor.dweet docs]: https://home-assistant.io/components/sensor.dweet/ +[sensor.ebox docs]: https://home-assistant.io/components/sensor.ebox/ +[sensor.ecobee docs]: https://home-assistant.io/components/sensor.ecobee/ +[sensor.eliqonline docs]: https://home-assistant.io/components/sensor.eliqonline/ +[sensor.etherscan docs]: https://home-assistant.io/components/sensor.etherscan/ +[sensor.fixer docs]: https://home-assistant.io/components/sensor.fixer/ +[sensor.gitter docs]: https://home-assistant.io/components/sensor.gitter/ +[sensor.hddtemp docs]: https://home-assistant.io/components/sensor.hddtemp/ +[sensor.homematic docs]: https://home-assistant.io/components/sensor.homematic/ +[sensor.imap_email_content docs]: https://home-assistant.io/components/sensor.imap_email_content/ +[sensor.juicenet docs]: https://home-assistant.io/components/sensor.juicenet/ +[sensor.metoffice docs]: https://home-assistant.io/components/sensor.metoffice/ +[sensor.mold_indicator docs]: https://home-assistant.io/components/sensor.mold_indicator/ +[sensor.netatmo docs]: https://home-assistant.io/components/sensor.netatmo/ +[sensor.openevse docs]: https://home-assistant.io/components/sensor.openevse/ +[sensor.pi_hole docs]: https://home-assistant.io/components/sensor.pi_hole/ +[sensor.pvoutput docs]: https://home-assistant.io/components/sensor.pvoutput/ +[sensor.radarr docs]: https://home-assistant.io/components/sensor.radarr/ +[sensor.ripple docs]: https://home-assistant.io/components/sensor.ripple/ +[sensor.snmp docs]: https://home-assistant.io/components/sensor.snmp/ +[sensor.statistics docs]: https://home-assistant.io/components/sensor.statistics/ +[sensor.template docs]: https://home-assistant.io/components/sensor.template/ +[sensor.ups docs]: https://home-assistant.io/components/sensor.ups/ +[sensor.usps docs]: https://home-assistant.io/components/sensor.usps/ +[sensor.waqi docs]: https://home-assistant.io/components/sensor.waqi/ +[sensor.wunderground docs]: https://home-assistant.io/components/sensor.wunderground/ +[sensor.yahoo_finance docs]: https://home-assistant.io/components/sensor.yahoo_finance/ +[sensor.yweather docs]: https://home-assistant.io/components/sensor.yweather/ +[spc docs]: https://home-assistant.io/components/spc/ +[splunk docs]: https://home-assistant.io/components/splunk/ +[switch.homematic docs]: https://home-assistant.io/components/switch.homematic/ +[switch.raspihats docs]: https://home-assistant.io/components/switch.raspihats/ +[switch.rest docs]: https://home-assistant.io/components/switch.rest/ +[switch.template docs]: https://home-assistant.io/components/switch.template/ +[telegram_bot.__init__ docs]: https://home-assistant.io/components/telegram_bot.__init__/ +[telegram_bot.polling docs]: https://home-assistant.io/components/telegram_bot.polling/ +[telegram_bot.webhooks docs]: https://home-assistant.io/components/telegram_bot.webhooks/ +[updater docs]: https://home-assistant.io/components/updater/ +[vera docs]: https://home-assistant.io/components/vera/ +[volvooncall docs]: https://home-assistant.io/components/volvooncall/ +[weather.buienradar docs]: https://home-assistant.io/components/weather.buienradar/ +[zeroconf docs]: https://home-assistant.io/components/zeroconf/ +[zwave docs]: https://home-assistant.io/components/zwave/ +[zwave blog post]: https://home-assistant.io/blog/2017/06/15/zwave-entity-ids/ +[forum]: https://community.home-assistant.io/ +[issue]: https://github.com/home-assistant/home-assistant/issues +[first-commit]: https://home-assistant.io/help/trivia/#first-commit +[#8080]: https://github.com/home-assistant/home-assistant/pull/8080 +[#8101]: https://github.com/home-assistant/home-assistant/pull/8101 +[#8104]: https://github.com/home-assistant/home-assistant/pull/8104 +[#8113]: https://github.com/home-assistant/home-assistant/pull/8113 +[#8134]: https://github.com/home-assistant/home-assistant/pull/8134 +[@tsvi]: https://github.com/tsvi +[fan.dyson docs]: https://home-assistant.io/components/fan.dyson/ +[remote.itach docs]: https://home-assistant.io/components/remote.itach/ +[sensor.dyson docs]: https://home-assistant.io/components/sensor.dyson/ +[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-06-20-things-you-should-know-about-senic-covi.markdown b/source/_posts/2017-06-20-things-you-should-know-about-senic-covi.markdown new file mode 100644 index 00000000000..0b8fe36efec --- /dev/null +++ b/source/_posts/2017-06-20-things-you-should-know-about-senic-covi.markdown @@ -0,0 +1,65 @@ +--- +layout: post +title: "[Update: fixed] A frank and serious warning about X" +description: "The picture painted is not as great as it seems." +date: 2017-06-20 01:04:05 +0000 +date_formatted: "June 20, 2017" +author: Paulus Schoutsen & Robbie Trencheny +author_twitter: balloob +comments: true +categories: Public-Service-Announcement +--- + +**Update June 21:** Senic has removed our name from their materials and have [issued an apology][apology]. We wish them best of luck with the launch of COVI. + +**Update June 28:** Removed the brand name from the title to reduce the search ranking. + +*Original post:* + + +

    +TL;DR: We are not affiliated with Senic or their COVI product. We will not support their users and you will get a subpar Home Assistant experience by using their product. **Furthermore, we cannot guarantee stability or security if you use Senic products.** +

    + +Recently Home Assistant has been made aware of a product by [Senic] that will be launching later today on [Kickstarter][kickstarter] ([screenshot][ks-backup]). Senic is not new in the IoT business, we have had support for their first product ([Nuimo]) since last September. Their new product, COVI, uses Home Assistant as its core home automation codebase. This is great, that is what open source is all about. However, they also use our name and logo in their Kickstarter, with the press and in their [developer documentation] ([screenshot][docs-backup]) to give the appearance of being affiliated with Home Assistant, against our wishes. Which is not great, at all. + +Take some of the following quotes from their Kickstarter campaign: + +> COVI is built on an open source platform. The Senic team, along with outside developers, contributes to this platform to create the integrations for COVI. + +> With COVI, we have built upon an open platform called Home Assistant that anyone can contribute to alongside our engineers and the Home Assistant community. + +Although those quotes are technically correct, they are very misleading. The Senic team contributes only to their own platform, they have not contributed to Home Assistant, its integrations or related projects. We did receive [1 contribution][netdisco-contrib] from them for [Netdisco], our network discovery package. It included a memory leak and required us to publish [a hotfix release][hotfix] for the 0.39 series. Their contribution has since been reverted. A third party contributor had contributed support for their Nuimo controller. + +Here is a quote that their CEO Tobias Eichenwald gave [to Forbes]: + +> Unlike many larger companies who build closed automation platforms, COVI is built on an open source platform called Home Assistant that includes 500+ contributors. This allows COVI to be integrated into any ecosystem or platform with an open API. + +They reached out to us on April 7 ([screenshot][email-backup]). We replied on April 11 and told them they should not use our name as we do not want to be affiliated with them because we do not want to support their users. After that one e-mail we had never heard from them again until Forbes accidentally published an article about it before the Kickstarter launched. We did not get any chance to give feedback on their Kickstarter campaign content and they went ahead and used our name and logo without authorization or permission. + +If you want an open source and constantly evolving product, get yourself a $35 Raspberry Pi, install our hub [Hass.io] for free and buy yourself some cheap and reliable [IKEA Trådfri lights][tradfri] to get yourself a basic home automation setup. If you want a $250 talking lamp, go buy the COVI. Just know that we are not affiliated with Senic, we will not support their users and you will get a subpar Home Assistant experience by using their product. **Furthermore, we cannot guarantee stability or security if you use Senic products.** + +Senic, we know that this is probably not what you wanted to wake up to on the first day of your Kickstarter but you left us no choice. Please reach out to us to help make this right. **We will always do everything in our power to protect the best interests of the Home Assistant community, our 500+ contributors and 250,000+ users.** If we don't hear from you by Wednesday, June 21st, we will be forced to consider further actions. + +Sincerely, + +**Paulus Schoutsen**
    +Founder, Home Assistant + +**Robbie Trencheny**
    +Core Developer, Home Assistant + +[Senic]: https://www.senic.com/en/ +[kickstarter]: https://www.kickstarter.com/projects/802159142/1793705123?token=03dc08b4# +[ks-backup]: /images/blog/2017-06-senic-covi/covi-kickstarter-screenshot.png +[email-backup]: /images/blog/2017-06-senic-covi/email-senic.png +[docs-backup]: /images/blog/2017-06-senic-covi/senic-docs-screenshot.png +[Netdisco]: https://github.com/home-assistant/netdisco +[netdisco-contrib]: https://github.com/home-assistant/netdisco/pull/94 +[hotfix]: /blog/2017/02/25/config-panel-and-state-restoration/#release-0392---march-1 +[Hass.io]: /hassio/ +[to Forbes]: https://webcache.googleusercontent.com/search?q=cache:https://www.forbes.com/sites/paularmstrongtech/2017/06/19/covi-is-about-to-make-some-general-electric-execs-very-unhappy/ +[tradfri]: /blog/2017/04/17/ikea-tradfri-internet-of-things-done-right/ +[Nuimo]: /components/nuimo_controller/ +[developer documentation]: http://blog.senic.com/posts/the-senic-hub-a-brief-software-overview +[apology]: https://medium.com/@senic/an-open-letter-to-home-assistant-5ccb53ccf722 diff --git a/source/_posts/2017-07-02-release-48.markdown b/source/_posts/2017-07-02-release-48.markdown new file mode 100644 index 00000000000..4fc39bea01b --- /dev/null +++ b/source/_posts/2017-07-02-release-48.markdown @@ -0,0 +1,538 @@ +--- +layout: post +title: "0.48: Snips.ai, Shiftr.io and a massive History query speed up" +description: "Build your own local voice assistant with the new Snips.ai component, visualize your data with Shiftr.io and enjoy faster history browsing." +date: 2017-07-02 00:02:05 +0000 +date_formatted: "July 2, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2017-07-0.48/components.png +--- + + + +It's time for a great new release! + +We've started the process of upgrading our frontend technology. If you notice something not working that did work before, please open [an issue][issue-polymer]. + +[Pascal][@pvizeli] has added a new option to Home Assistant core to set a list of whitelisted folders that Home Assistant can read from. When a component allows to send files (like Telegram), it will only be allowed to send files from those directories. The only default whitelisted folder is the public `/www` directory. + +Z-Wave will, as announced in the [last release](/blog/2017/06/17/release-47/), be defaulting to generate the new entity ids. More info in the [blog post](/blog/2017/06/15/zwave-entity-ids/). You can still opt-in for the old style. + +```yaml +zwave: + new_entity_ids: false +``` + +## {% linkable_title Big speed up in querying the history %} + +Thanks to the work by [@cmsimike] in [#8255] you'll see a significant speed up when using the history view. In his local tests queries went from 1 minute to 90ms! ⚡️ + +## {% linkable_title Snips.ai component %} + +Snips has contributed a component to integrate with their Snips.ai local voice assistant. This will allow you to hook a speaker and a microphone into your Raspberry Pi and make your own local Amazon Echo quickly. See [the docs][snips docs] for further instructions. + +Also a shoutout to [@michaelarnauts] for keeping an eye on our Docker build and once again reducing the file size 👍 + +[issue-polymer]: https://github.com/home-assistant/home-assistant-polymer/issues + +## {% linkable_title Release 0.48.1 - July 5 %} + +- Fix arlo sensors. ([@bergemalm] - [#8333]) ([sensor.arlo docs]) +- API POST no longer marks the number zero as invalid ([@azogue] - [#8324]) ([api docs]) +- Fix Snips json schema ([@adrienball] - [#8317]) ([snips docs]) +- Fix pathlib resolve ([@pvizeli] - [#8311]) +- Fix harmony ([@balloob] - [#8302]) ([remote.harmony docs]) +- Fix Arlo startup crash (fixes #8288) ([@fabaff] - [#8290]) ([camera.arlo docs]) +- Temporary fix for the client_id generation (fixes #8315) ([@fabaff] - [#8336]) ([mqtt docs]) + +## {% linkable_title New Platforms %} + +- Add initial support for Shiftr.io ([@fabaff] - [#7974]) ([shiftr docs]) (new-platform) +- Upnp properties ([@dgomes] - [#8067]) ([upnp docs]) ([sensor.upnp docs]) (new-platform) +- Add support for Insteon FanLinc fan ([@jawilson] - [#6959]) ([insteon_local docs]) ([fan.insteon_local docs]) (new-platform) +- add knx cover support ([@tiktok7] - [#7997]) ([knx docs]) ([cover.knx docs]) (new-platform) +- Add I2c BME280 temperature, humidity and pressure sensor for Raspberry Pi ([@azogue] - [#7989]) ([sensor.bme280 docs]) (new-platform) +- Add I2c HTU21D temperature and humidity sensor for Raspberry Pi ([@azogue] - [#8049]) ([sensor.htu21d docs]) (new-platform) +- Add new BH1750 light level sensor ([@azogue] - [#8050]) ([sensor.bh1750 docs]) (new-platform) +- Rfxtrx binary sensor ([@ypollart] - [#6794]) ([rfxtrx docs]) ([binary_sensor.rfxtrx docs]) (new-platform) +- Add ClickSend notify service. ([@omarusman] - [#8135]) ([notify.clicksend docs]) (new-platform) +- Add device tracker for Linksys Smart Wifi devices ([@mortenlj] - [#8144]) ([device_tracker.linksys_smart docs]) (new-platform) +- Openhardwaremonitor ([@depl0y] - [#8056]) ([sensor.openhardwaremonitor docs]) (new-platform) +- WIP: Verisure app api ([@persandstrom] - [#7394]) ([verisure docs]) ([alarm_control_panel.verisure docs]) ([binary_sensor.verisure docs]) ([sensor.verisure docs]) ([switch.verisure docs]) (new-platform) +- telegram_bot platform to only send messages ([@azogue] - [#8186]) (new-platform) +- Comfoconnect fan component ([@michaelarnauts] - [#8073]) ([comfoconnect docs]) ([fan.comfoconnect docs]) ([sensor.comfoconnect docs]) (new-platform) +- Implement templates for covers ([@PhracturedBlue] - [#8100]) ([cover.template docs]) (new-platform) +- Snips ASR and NLU component ([@michaelfester] - [#8156]) ([snips docs]) (new-platform) + +## {% linkable_title If you need help... %} +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} +Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- We have added a new option to whitelist folders that can be used as sources for sending files. You will need to use this option if you are using files with the telegram component. ([@pvizeli] - [#8189]) (breaking change) + +```yaml +homeassistant: + whitelist_external_dirs: + - /tmp + - /home/kenji/data +``` + +- Vera battery levels will no longer have the percent sign appended ([@philhawthorne] - [#8069]) ([vera docs]) (breaking change) +- Notify - SMTP: Added SMTP SSL/TLS support so now you should specify which encryption to use. ([@sn0oz] - [#7960]) ([notify.smtp docs]) (breaking change) + +``` +notify: + - name: mail + platform: smtp + server: !secret smtp_server + sender: !secret mail_alert + username: !secret mail_username + password: !secret mail_password + recipient: !secret mail_admin + encryption: tls # Or starttls, none +``` + +- Light - LIFX: The `lifx_effect_breathe` call was deprecated in version 0.47 and has now been removed. You can use `lifx_effect_pulse` with `mode: breathe` for the same effect. ([@amelchio] - [#8222]) ([light.lifx docs]) (breaking change) +- LimitlessLED: No longer automatically fades the lights when turning the light off. Can be restored with a new config option. ([@SmilyOrg] - [#7369]) ([light.limitlessled docs]) (breaking change) + +```yaml +light: + platform: limitlessled + bridges: + + - host: !secret limitless_v6_ip + port: 5987 + version: 6 + groups: + + - number: 1 + type: rgbww + name: Safari Glow + fade: none +``` + +## {% linkable_title All changes %} + +- Update numpy 1.13.0 ([@pvizeli] - [#8059]) ([image_processing.opencv docs]) +- No update in MQTT Binary Sensor #7478 ([@pezinek] - [#8057]) +- Use standard entity_ids for zwave entities ([@armills] - [#7786]) ([zwave docs]) ([light.zwave docs]) (breaking change) +- Fix some warnings found by quantifiedcode ([@andrey-git] - [#8027]) ([insteon_hub docs]) ([tellduslive docs]) ([calendar.google docs]) +- Always enable monkey patch ([@balloob] - [#8054]) +- Remove % sign from Vera Battery Levels ([@philhawthorne] - [#8069]) ([vera docs]) (breaking change) +- Allow config of latitude and longitude ([@jshore1296] - [#8068]) ([sensor.wunderground docs]) +- Failed to parse response from WU API: 'record' (and 'recordyear') #7747 ([@pezinek] - [#8058]) ([sensor.wunderground docs]) +- Add initial support for Shiftr.io ([@fabaff] - [#7974]) ([shiftr docs]) (new-platform) +- Add option to set language of openweathermap sensor, and handle updating errors ([@azogue] - [#8046]) ([sensor.openweathermap docs]) +- Bump pyEmby version to account for API changes ([@mezz64] - [#8070]) ([media_player.emby docs]) +- bump ups ([@happyleavesaoc] - [#8075]) ([sensor.ups docs]) +- bump usps version ([@happyleavesaoc] - [#8074]) ([sensor.usps docs]) +- Add to zwave services descriptions ([@andrey-git] - [#8072]) +- Fix attribute entity ([@pvizeli] - [#8066]) (breaking change) +- Added 'all_plants' group and support for plant groups state. ([@aronsky] - [#8063]) ([group docs]) ([plant docs]) +- Fix EntityComponent handle entities without a name ([@balloob] - [#8065]) +- Update pyunifi component to use APIError passed from pyunifi 2.13. Better accommodate login failures with wrapper in pyunifi 2.13. ([@finish06] - [#7899]) ([device_tracker.unifi docs]) +- Stopping the logfile spam by piping STDERR to /dev/null ([@madpilot] - [#8081]) ([switch.wake_on_lan docs]) +- mpd: implement support for seek, shuffle, and clear playlist ([@auchter] - [#8090]) ([media_player.mpd docs]) +- Cleanup .coveragerc ([@michaelarnauts] - [#8088]) +- update pywebpush to 1.0.5 ([@perosb] - [#8084]) ([notify.html5 docs]) +- media player Kodi: handle TransportError exceptions when calling JSONRPC API methods ([@azogue] - [#8047]) ([media_player.kodi docs]) +- Upnp properties ([@dgomes] - [#8067]) ([upnp docs]) ([sensor.upnp docs]) (new-platform) +- Add support for Insteon FanLinc fan ([@jawilson] - [#6959]) ([insteon_local docs]) ([fan.insteon_local docs]) (new-platform) +- add knx cover support ([@tiktok7] - [#7997]) ([knx docs]) ([cover.knx docs]) (new-platform) +- More updates to zwave services.yaml file ([@andrey-git] - [#8083]) +- Fix lights issue #8098 ([@tsvi] - [#8101]) ([light.vera docs]) +- increase timeout for setWebhook to 10s ([@azogue] - [#8102]) ([telegram_bot.webhooks docs]) +- Added SMTP SSL/TLS support ([@sn0oz] - [#7960]) ([notify.smtp docs]) (breaking change) +- Fix Dyson async_add_job ([@CharlesBlonde] - [#8113]) ([fan.dyson docs]) ([sensor.dyson docs]) +- Update InfluxDB to handle datetime objects and multiple decimal points ([@philhawthorne] - [#8080]) ([influxdb docs]) +- Remove config details (see docs) ([@fabaff] - [#8119]) ([cover.knx docs]) +- Only mark active DHCP clients as present ([@cyberplant] - [#8110]) ([device_tracker.mikrotik docs]) +- Add option to specify the location of the API (fixes #8115) ([@fabaff] - [#8118]) ([sensor.pi_hole docs]) +- Fixed iTach command parsing with empty data ([@alanfischer] - [#8104]) ([remote.itach docs]) +- Upgrade mutagen to 1.38 ([@fabaff] - [#8126]) ([tts docs]) +- Upgrade paho-mqtt to 1.3.0 ([@fabaff] - [#8125]) ([mqtt docs]) ([shiftr docs]) +- Upgrade sqlalchemy to 1.1.11 ([@fabaff] - [#8124]) ([recorder docs]) +- Upgrade aiohttp to 2.2.0 ([@fabaff] - [#8121]) +- Upgrade RestrictedPython dependency ([@balloob] - [#8132]) ([python_script docs]) +- Added RFXTRX UV badge ([@lunar-consultancy] - [#8129]) ([rfxtrx docs]) +- Do not call update() in constructor ([@fabaff] - [#8120]) ([sensor.netdata docs]) +- Change Error Message when Turning off ISY994 Light ([@SConaway] - [#8131]) ([light.isy994 docs]) +- Allow iteration in python_script ([@balloob] - [#8134]) ([python_script docs]) +- Add current balance to hydroquebec sensor ([@titilambert] - [#8138]) ([sensor.hydroquebec docs]) +- Decora light: Fix brightness level in UI ([@titilambert] - [#8139]) ([light.decora docs]) +- Add I2c BME280 temperature, humidity and pressure sensor for Raspberry Pi ([@azogue] - [#7989]) ([sensor.bme280 docs]) (new-platform) +- Upgrade libsoundtouch to prevent Python3.6 errors with enum. #7733 #8103 ([@CharlesBlonde] - [#8143]) ([media_player.soundtouch docs]) +- Adds CPU temp monitoring, and allow startup when endpoint is not yet available. ([@jjmontestl] - [#8093]) ([sensor.glances docs]) +- Add I2c HTU21D temperature and humidity sensor for Raspberry Pi ([@azogue] - [#8049]) ([sensor.htu21d docs]) (new-platform) +- Add new BH1750 light level sensor ([@azogue] - [#8050]) ([sensor.bh1750 docs]) (new-platform) +- LimitlessLED: Configurable fade-out behavior ([@SmilyOrg] - [#7369]) ([light.limitlessled docs]) (breaking change) +- Harmony auto discovery via netdisco ([@tony2nite] - [#7741]) ([remote.harmony docs]) +- Rfxtrx binary sensor ([@ypollart] - [#6794]) ([rfxtrx docs]) ([binary_sensor.rfxtrx docs]) (new-platform) +- Add support of Zone2 and Zone3 ([@scarface-4711] - [#8025]) ([media_player.denonavr docs]) +- Upgrade python-telegram-bot to 6.1.0 ([@fabaff] - [#8151]) ([telegram_bot docs]) +- Upgrade libsoundtouch to 0.6.2 ([@fabaff] - [#8149]) ([media_player.soundtouch docs]) +- Switch rachiopy to pypi ([@andrey-git] - [#8040]) ([switch.rachio docs]) +- ubus: Refresh session on Access denied ([@glance-] - [#8111]) +- Added invert flag for position for actuators that uses 100% for fully closed position ([@open-homeautomation] - [#8147]) +- add telegram_bot service: delete_message ([@azogue] - [#8153]) ([telegram_bot docs]) +- Fixed rfxtrx binary_sensor off command ([@basschipper] - [#8160]) ([rfxtrx docs]) ([binary_sensor.rfxtrx docs]) +- Use version 1.3 of radiotherm ([@twilde] - [#8164]) ([climate.radiotherm docs]) +- Tado climate device ([@wmalgadey] - [#8041]) ([tado docs]) ([climate.tado docs]) +- Add ClickSend notify service. ([@omarusman] - [#8135]) ([notify.clicksend docs]) (new-platform) +- Add libboost-python1.62-dev (fixes #7851) ([@fabaff] - [#7868]) +- Uninstall enum34 in python3.6 docker image ([@jeanregisser] - [#8103]) +- Revert "Add libboost-python1.62-dev (fixes #7851)" ([@balloob] - [#8182]) +- Add device tracker for Linksys Smart Wifi devices ([@mortenlj] - [#8144]) ([device_tracker.linksys_smart docs]) (new-platform) +- Update buienradar.py ([@lrmate] - [#8173]) ([sensor.buienradar docs]) +- Fix radiotherm model CT50 ([@tubaman] - [#8181]) ([climate.radiotherm docs]) +- Throw exception if _convert_for_display called on non Number ([@sdague] - [#8178]) ([climate docs]) ([climate.mysensors docs]) +- Added buienradar precipitation forecast average & total sensors ([@basschipper] - [#8171]) ([sensor.buienradar docs]) ([weather.buienradar docs]) +- Axis service vapix call ([@Kane610] - [#7794]) ([axis docs]) ([camera.axis docs]) +- added optional node_id to MQTT discovery ([@AlexMekkering] - [#8096]) +- Add offset option to sensor.gtfs ([@Kernald] - [#7980]) +- Switch to new zwave entity ids by default ([@armills] - [#8192]) ([zwave docs]) +- Pushed to version 0.5.1 of the library ([@scarface-4711] - [#8190]) ([media_player.denonavr docs]) +- Fix MySensors climate ([@balloob] - [#8193]) ([climate.mysensors docs]) +- Fix plants calling async methods from sync context ([@balloob] - [#8200]) +- Split mock_service ([@balloob] - [#8198]) +- add option to set content_type in camera.generic to support 'svg cameras' ([@azogue] - [#8188]) +- Remove unnecessary thread_ident assignment ([@armills] - [#8194]) +- Openhardwaremonitor ([@depl0y] - [#8056]) ([sensor.openhardwaremonitor docs]) (new-platform) +- Add security layer to send file output things ([@pvizeli] - [#8189]) (breaking change) +- Fix Plex component to use port number in discovery. ([@voltagex] - [#8197]) ([media_player.plex docs]) +- EntityComponent to retry platforms that are not ready yet ([@balloob] - [#8209]) +- WIP: Verisure app api ([@persandstrom] - [#7394]) ([verisure docs]) ([alarm_control_panel.verisure docs]) ([binary_sensor.verisure docs]) ([sensor.verisure docs]) ([switch.verisure docs]) (new-platform) +- guess the content_type in local_file cameras ([@azogue] - [#8217]) ([camera.local_file docs]) +- Improve executor pool size / speedup python 3.5 ([@pvizeli] - [#8215]) +- LIFX: Move light effects to external library ([@amelchio] - [#8222]) ([light.lifx docs]) (breaking change) +- Fixed mqtt subscription filter on sys $ topics ([@natemason] - [#8166]) ([mqtt docs]) +- telegram_bot platform to only send messages ([@azogue] - [#8186]) (new-platform) +- add percentage (DPT_Scaling) KNX sensors ([@tiktok7] - [#8168]) ([sensor.knx docs]) +- Fix homeassistant.start trigger ([@azogue] - [#8220]) +- Cleanup automations yaml ([@balloob] - [#8223]) +- Do not call update() in constructor ([@fabaff] - [#8148]) ([sensor.glances docs]) +- KNX Cover tilt control ([@open-homeautomation] - [#8159]) ([cover.knx docs]) +- Comfoconnect fan component ([@michaelarnauts] - [#8073]) ([comfoconnect docs]) ([fan.comfoconnect docs]) ([sensor.comfoconnect docs]) (new-platform) +- Upgrade python-digitalocean to 1.12 ([@fabaff] - [#8241]) ([digital_ocean docs]) +- update i2csense requirement ([@azogue] - [#8242]) ([sensor.bh1750 docs]) ([sensor.bme280 docs]) ([sensor.htu21d docs]) +- Update docstrings ([@fabaff] - [#8244]) ([comfoconnect docs]) ([fan.comfoconnect docs]) +- Do not call update() in constructor ([@fabaff] - [#8247]) ([binary_sensor.arest docs]) ([sensor.arest docs]) +- better logging to debug when a message is not sent ([@azogue] - [#8248]) ([telegram_bot docs]) +- LIFX: Small code cleanups ([@amelchio] - [#8228]) ([light.lifx docs]) +- Use 'hass.data' instead of global ([@fabaff] - [#8245]) ([digital_ocean docs]) ([binary_sensor.digital_ocean docs]) ([switch.digital_ocean docs]) +- Use constant and update ordering ([@fabaff] - [#8246]) ([arlo docs]) ([camera.arlo docs]) +- Add PlatformNotReady support for Sensibo ([@andrey-git] - [#8252]) ([climate.sensibo docs]) +- verisure component names ([@persandstrom] - [#8251]) ([binary_sensor.verisure docs]) ([camera.verisure docs]) ([lock.verisure docs]) ([switch.verisure docs]) +- further document add_node_secure ([@kentcalero] - [#8229]) +- Upgrade libnacl to 1.5.1 ([@fabaff] - [#8259]) ([device_tracker.owntracks docs]) +- Docker cleanup. ([@michaelarnauts] - [#8226]) +- Implement templates for covers ([@PhracturedBlue] - [#8100]) ([cover.template docs]) (new-platform) +- Adding done_message to alert ([@karlw00t] - [#8116]) ([alert docs]) +- Camera services arm disarm including Netgear Arlo ([@viswa-swami] - [#7961]) ([camera.arlo docs]) +- Update modbus.py ([@lrmate] - [#8256]) ([binary_sensor.modbus docs]) +- components.knx - KNXMultiAddressDevice corrections ([@tiktok7] - [#8275]) ([knx docs]) +- Snips ASR and NLU component ([@michaelfester] - [#8156]) ([snips docs]) (new-platform) +- Create an index on the states table to help hass startup time ([@cmsimike] - [#8255]) + +[#6794]: https://github.com/home-assistant/home-assistant/pull/6794 +[#6959]: https://github.com/home-assistant/home-assistant/pull/6959 +[#7369]: https://github.com/home-assistant/home-assistant/pull/7369 +[#7394]: https://github.com/home-assistant/home-assistant/pull/7394 +[#7741]: https://github.com/home-assistant/home-assistant/pull/7741 +[#7786]: https://github.com/home-assistant/home-assistant/pull/7786 +[#7794]: https://github.com/home-assistant/home-assistant/pull/7794 +[#7868]: https://github.com/home-assistant/home-assistant/pull/7868 +[#7899]: https://github.com/home-assistant/home-assistant/pull/7899 +[#7960]: https://github.com/home-assistant/home-assistant/pull/7960 +[#7961]: https://github.com/home-assistant/home-assistant/pull/7961 +[#7974]: https://github.com/home-assistant/home-assistant/pull/7974 +[#7980]: https://github.com/home-assistant/home-assistant/pull/7980 +[#7989]: https://github.com/home-assistant/home-assistant/pull/7989 +[#7997]: https://github.com/home-assistant/home-assistant/pull/7997 +[#8025]: https://github.com/home-assistant/home-assistant/pull/8025 +[#8027]: https://github.com/home-assistant/home-assistant/pull/8027 +[#8040]: https://github.com/home-assistant/home-assistant/pull/8040 +[#8041]: https://github.com/home-assistant/home-assistant/pull/8041 +[#8046]: https://github.com/home-assistant/home-assistant/pull/8046 +[#8047]: https://github.com/home-assistant/home-assistant/pull/8047 +[#8049]: https://github.com/home-assistant/home-assistant/pull/8049 +[#8050]: https://github.com/home-assistant/home-assistant/pull/8050 +[#8054]: https://github.com/home-assistant/home-assistant/pull/8054 +[#8056]: https://github.com/home-assistant/home-assistant/pull/8056 +[#8057]: https://github.com/home-assistant/home-assistant/pull/8057 +[#8058]: https://github.com/home-assistant/home-assistant/pull/8058 +[#8059]: https://github.com/home-assistant/home-assistant/pull/8059 +[#8063]: https://github.com/home-assistant/home-assistant/pull/8063 +[#8065]: https://github.com/home-assistant/home-assistant/pull/8065 +[#8066]: https://github.com/home-assistant/home-assistant/pull/8066 +[#8067]: https://github.com/home-assistant/home-assistant/pull/8067 +[#8068]: https://github.com/home-assistant/home-assistant/pull/8068 +[#8069]: https://github.com/home-assistant/home-assistant/pull/8069 +[#8070]: https://github.com/home-assistant/home-assistant/pull/8070 +[#8072]: https://github.com/home-assistant/home-assistant/pull/8072 +[#8073]: https://github.com/home-assistant/home-assistant/pull/8073 +[#8074]: https://github.com/home-assistant/home-assistant/pull/8074 +[#8075]: https://github.com/home-assistant/home-assistant/pull/8075 +[#8080]: https://github.com/home-assistant/home-assistant/pull/8080 +[#8081]: https://github.com/home-assistant/home-assistant/pull/8081 +[#8083]: https://github.com/home-assistant/home-assistant/pull/8083 +[#8084]: https://github.com/home-assistant/home-assistant/pull/8084 +[#8088]: https://github.com/home-assistant/home-assistant/pull/8088 +[#8090]: https://github.com/home-assistant/home-assistant/pull/8090 +[#8093]: https://github.com/home-assistant/home-assistant/pull/8093 +[#8096]: https://github.com/home-assistant/home-assistant/pull/8096 +[#8100]: https://github.com/home-assistant/home-assistant/pull/8100 +[#8101]: https://github.com/home-assistant/home-assistant/pull/8101 +[#8102]: https://github.com/home-assistant/home-assistant/pull/8102 +[#8103]: https://github.com/home-assistant/home-assistant/pull/8103 +[#8104]: https://github.com/home-assistant/home-assistant/pull/8104 +[#8110]: https://github.com/home-assistant/home-assistant/pull/8110 +[#8111]: https://github.com/home-assistant/home-assistant/pull/8111 +[#8113]: https://github.com/home-assistant/home-assistant/pull/8113 +[#8116]: https://github.com/home-assistant/home-assistant/pull/8116 +[#8118]: https://github.com/home-assistant/home-assistant/pull/8118 +[#8119]: https://github.com/home-assistant/home-assistant/pull/8119 +[#8120]: https://github.com/home-assistant/home-assistant/pull/8120 +[#8121]: https://github.com/home-assistant/home-assistant/pull/8121 +[#8124]: https://github.com/home-assistant/home-assistant/pull/8124 +[#8125]: https://github.com/home-assistant/home-assistant/pull/8125 +[#8126]: https://github.com/home-assistant/home-assistant/pull/8126 +[#8129]: https://github.com/home-assistant/home-assistant/pull/8129 +[#8131]: https://github.com/home-assistant/home-assistant/pull/8131 +[#8132]: https://github.com/home-assistant/home-assistant/pull/8132 +[#8134]: https://github.com/home-assistant/home-assistant/pull/8134 +[#8135]: https://github.com/home-assistant/home-assistant/pull/8135 +[#8138]: https://github.com/home-assistant/home-assistant/pull/8138 +[#8139]: https://github.com/home-assistant/home-assistant/pull/8139 +[#8143]: https://github.com/home-assistant/home-assistant/pull/8143 +[#8144]: https://github.com/home-assistant/home-assistant/pull/8144 +[#8147]: https://github.com/home-assistant/home-assistant/pull/8147 +[#8148]: https://github.com/home-assistant/home-assistant/pull/8148 +[#8149]: https://github.com/home-assistant/home-assistant/pull/8149 +[#8151]: https://github.com/home-assistant/home-assistant/pull/8151 +[#8153]: https://github.com/home-assistant/home-assistant/pull/8153 +[#8156]: https://github.com/home-assistant/home-assistant/pull/8156 +[#8159]: https://github.com/home-assistant/home-assistant/pull/8159 +[#8160]: https://github.com/home-assistant/home-assistant/pull/8160 +[#8164]: https://github.com/home-assistant/home-assistant/pull/8164 +[#8166]: https://github.com/home-assistant/home-assistant/pull/8166 +[#8168]: https://github.com/home-assistant/home-assistant/pull/8168 +[#8171]: https://github.com/home-assistant/home-assistant/pull/8171 +[#8173]: https://github.com/home-assistant/home-assistant/pull/8173 +[#8178]: https://github.com/home-assistant/home-assistant/pull/8178 +[#8181]: https://github.com/home-assistant/home-assistant/pull/8181 +[#8182]: https://github.com/home-assistant/home-assistant/pull/8182 +[#8186]: https://github.com/home-assistant/home-assistant/pull/8186 +[#8188]: https://github.com/home-assistant/home-assistant/pull/8188 +[#8189]: https://github.com/home-assistant/home-assistant/pull/8189 +[#8190]: https://github.com/home-assistant/home-assistant/pull/8190 +[#8192]: https://github.com/home-assistant/home-assistant/pull/8192 +[#8193]: https://github.com/home-assistant/home-assistant/pull/8193 +[#8194]: https://github.com/home-assistant/home-assistant/pull/8194 +[#8197]: https://github.com/home-assistant/home-assistant/pull/8197 +[#8198]: https://github.com/home-assistant/home-assistant/pull/8198 +[#8200]: https://github.com/home-assistant/home-assistant/pull/8200 +[#8209]: https://github.com/home-assistant/home-assistant/pull/8209 +[#8215]: https://github.com/home-assistant/home-assistant/pull/8215 +[#8217]: https://github.com/home-assistant/home-assistant/pull/8217 +[#8220]: https://github.com/home-assistant/home-assistant/pull/8220 +[#8222]: https://github.com/home-assistant/home-assistant/pull/8222 +[#8223]: https://github.com/home-assistant/home-assistant/pull/8223 +[#8226]: https://github.com/home-assistant/home-assistant/pull/8226 +[#8228]: https://github.com/home-assistant/home-assistant/pull/8228 +[#8229]: https://github.com/home-assistant/home-assistant/pull/8229 +[#8241]: https://github.com/home-assistant/home-assistant/pull/8241 +[#8242]: https://github.com/home-assistant/home-assistant/pull/8242 +[#8244]: https://github.com/home-assistant/home-assistant/pull/8244 +[#8245]: https://github.com/home-assistant/home-assistant/pull/8245 +[#8246]: https://github.com/home-assistant/home-assistant/pull/8246 +[#8247]: https://github.com/home-assistant/home-assistant/pull/8247 +[#8248]: https://github.com/home-assistant/home-assistant/pull/8248 +[#8251]: https://github.com/home-assistant/home-assistant/pull/8251 +[#8252]: https://github.com/home-assistant/home-assistant/pull/8252 +[#8255]: https://github.com/home-assistant/home-assistant/pull/8255 +[#8256]: https://github.com/home-assistant/home-assistant/pull/8256 +[#8259]: https://github.com/home-assistant/home-assistant/pull/8259 +[#8275]: https://github.com/home-assistant/home-assistant/pull/8275 +[@AlexMekkering]: https://github.com/AlexMekkering +[@CharlesBlonde]: https://github.com/CharlesBlonde +[@Kane610]: https://github.com/Kane610 +[@Kernald]: https://github.com/Kernald +[@PhracturedBlue]: https://github.com/PhracturedBlue +[@SConaway]: https://github.com/SConaway +[@SmilyOrg]: https://github.com/SmilyOrg +[@alanfischer]: https://github.com/alanfischer +[@amelchio]: https://github.com/amelchio +[@andrey-git]: https://github.com/andrey-git +[@armills]: https://github.com/armills +[@aronsky]: https://github.com/aronsky +[@auchter]: https://github.com/auchter +[@azogue]: https://github.com/azogue +[@balloob]: https://github.com/balloob +[@basschipper]: https://github.com/basschipper +[@cmsimike]: https://github.com/cmsimike +[@cyberplant]: https://github.com/cyberplant +[@depl0y]: https://github.com/depl0y +[@dgomes]: https://github.com/dgomes +[@fabaff]: https://github.com/fabaff +[@finish06]: https://github.com/finish06 +[@glance-]: https://github.com/glance- +[@happyleavesaoc]: https://github.com/happyleavesaoc +[@jawilson]: https://github.com/jawilson +[@jeanregisser]: https://github.com/jeanregisser +[@jjmontestl]: https://github.com/jjmontestl +[@jshore1296]: https://github.com/jshore1296 +[@karlw00t]: https://github.com/karlw00t +[@kentcalero]: https://github.com/kentcalero +[@lrmate]: https://github.com/lrmate +[@lunar-consultancy]: https://github.com/lunar-consultancy +[@madpilot]: https://github.com/madpilot +[@mezz64]: https://github.com/mezz64 +[@michaelarnauts]: https://github.com/michaelarnauts +[@michaelfester]: https://github.com/michaelfester +[@mortenlj]: https://github.com/mortenlj +[@natemason]: https://github.com/natemason +[@omarusman]: https://github.com/omarusman +[@open-homeautomation]: https://github.com/open-homeautomation +[@perosb]: https://github.com/perosb +[@persandstrom]: https://github.com/persandstrom +[@pezinek]: https://github.com/pezinek +[@philhawthorne]: https://github.com/philhawthorne +[@pvizeli]: https://github.com/pvizeli +[@scarface-4711]: https://github.com/scarface-4711 +[@sdague]: https://github.com/sdague +[@sn0oz]: https://github.com/sn0oz +[@tiktok7]: https://github.com/tiktok7 +[@titilambert]: https://github.com/titilambert +[@tony2nite]: https://github.com/tony2nite +[@tsvi]: https://github.com/tsvi +[@tubaman]: https://github.com/tubaman +[@twilde]: https://github.com/twilde +[@viswa-swami]: https://github.com/viswa-swami +[@voltagex]: https://github.com/voltagex +[@wmalgadey]: https://github.com/wmalgadey +[@ypollart]: https://github.com/ypollart +[alarm_control_panel.verisure docs]: /components/alarm_control_panel.verisure/ +[alert docs]: /components/alert/ +[arlo docs]: /components/arlo/ +[axis docs]: /components/axis/ +[binary_sensor.arest docs]: /components/binary_sensor.arest/ +[binary_sensor.digital_ocean docs]: /components/binary_sensor.digital_ocean/ +[binary_sensor.modbus docs]: /components/binary_sensor.modbus/ +[binary_sensor.rfxtrx docs]: /components/binary_sensor.rfxtrx/ +[binary_sensor.verisure docs]: /components/binary_sensor.verisure/ +[calendar.google docs]: /components/calendar.google/ +[camera.arlo docs]: /components/camera.arlo/ +[camera.axis docs]: /components/camera.axis/ +[camera.local_file docs]: /components/camera.local_file/ +[camera.verisure docs]: /components/camera.verisure/ +[climate docs]: /components/climate/ +[climate.mysensors docs]: /components/climate.mysensors/ +[climate.radiotherm docs]: /components/climate.radiotherm/ +[climate.sensibo docs]: /components/climate.sensibo/ +[climate.tado docs]: /components/climate.tado/ +[comfoconnect docs]: /components/comfoconnect/ +[cover.knx docs]: /components/cover.knx/ +[cover.template docs]: /components/cover.template/ +[device_tracker.linksys_smart docs]: /components/device_tracker.linksys_smart/ +[device_tracker.mikrotik docs]: /components/device_tracker.mikrotik/ +[device_tracker.owntracks docs]: /components/device_tracker.owntracks/ +[device_tracker.unifi docs]: /components/device_tracker.unifi/ +[digital_ocean docs]: /components/digital_ocean/ +[fan.comfoconnect docs]: /components/fan.comfoconnect/ +[fan.dyson docs]: /components/fan.dyson/ +[fan.insteon_local docs]: /components/fan.insteon_local/ +[group docs]: /components/group/ +[image_processing.opencv docs]: /components/image_processing.opencv/ +[influxdb docs]: /components/influxdb/ +[insteon_hub docs]: /components/insteon_hub/ +[insteon_local docs]: /components/insteon_local/ +[knx docs]: /components/knx/ +[light.decora docs]: /components/light.decora/ +[light.isy994 docs]: /components/light.isy994/ +[light.lifx docs]: /components/light.lifx/ +[light.limitlessled docs]: /components/light.limitlessled/ +[light.vera docs]: /components/light.vera/ +[light.zwave docs]: /components/light.zwave/ +[lock.verisure docs]: /components/lock.verisure/ +[media_player.denonavr docs]: /components/media_player.denonavr/ +[media_player.emby docs]: /components/media_player.emby/ +[media_player.kodi docs]: /components/media_player.kodi/ +[media_player.mpd docs]: /components/media_player.mpd/ +[media_player.plex docs]: /components/media_player.plex/ +[media_player.soundtouch docs]: /components/media_player.soundtouch/ +[mqtt docs]: /components/mqtt/ +[mqtt.discovery docs]: /components/mqtt.discovery/ +[notify.clicksend docs]: /components/notify.clicksend/ +[notify.html5 docs]: /components/notify.html5/ +[notify.smtp docs]: /components/notify.smtp/ +[plant docs]: /components/plant/ +[python_script docs]: /components/python_script/ +[recorder docs]: /components/recorder/ +[recorder.migration docs]: /components/recorder.migration/ +[recorder.models docs]: /components/recorder.models/ +[remote.harmony docs]: /components/remote.harmony/ +[remote.itach docs]: /components/remote.itach/ +[rfxtrx docs]: /components/rfxtrx/ +[sensor.arest docs]: /components/sensor.arest/ +[sensor.bh1750 docs]: /components/sensor.bh1750/ +[sensor.bme280 docs]: /components/sensor.bme280/ +[sensor.buienradar docs]: /components/sensor.buienradar/ +[sensor.comfoconnect docs]: /components/sensor.comfoconnect/ +[sensor.dyson docs]: /components/sensor.dyson/ +[sensor.glances docs]: /components/sensor.glances/ +[sensor.htu21d docs]: /components/sensor.htu21d/ +[sensor.hydroquebec docs]: /components/sensor.hydroquebec/ +[sensor.knx docs]: /components/sensor.knx/ +[sensor.netdata docs]: /components/sensor.netdata/ +[sensor.openhardwaremonitor docs]: /components/sensor.openhardwaremonitor/ +[sensor.openweathermap docs]: /components/sensor.openweathermap/ +[sensor.pi_hole docs]: /components/sensor.pi_hole/ +[sensor.upnp docs]: /components/sensor.upnp/ +[sensor.ups docs]: /components/sensor.ups/ +[sensor.usps docs]: /components/sensor.usps/ +[sensor.verisure docs]: /components/sensor.verisure/ +[sensor.wunderground docs]: /components/sensor.wunderground/ +[shiftr docs]: /components/shiftr/ +[snips docs]: /components/snips/ +[switch.digital_ocean docs]: /components/switch.digital_ocean/ +[switch.rachio docs]: /components/switch.rachio/ +[switch.verisure docs]: /components/switch.verisure/ +[switch.wake_on_lan docs]: /components/switch.wake_on_lan/ +[tado docs]: /components/tado/ +[telegram_bot docs]: /components/telegram_bot/ +[telegram_bot.webhooks docs]: /components/telegram_bot.webhooks/ +[tellduslive docs]: /components/tellduslive/ +[tts docs]: /components/tts/ +[upnp docs]: /components/upnp/ +[vera docs]: /components/vera/ +[verisure docs]: /components/verisure/ +[weather.buienradar docs]: /components/weather.buienradar/ +[zwave docs]: /components/zwave/ +[forum]: https://community.home-assistant.io/ +[issue]: https://github.com/home-assistant/home-assistant/issues +[discord]: https://discord.gg/c5DvZ4e +[#8290]: https://github.com/home-assistant/home-assistant/pull/8290 +[#8302]: https://github.com/home-assistant/home-assistant/pull/8302 +[#8311]: https://github.com/home-assistant/home-assistant/pull/8311 +[#8317]: https://github.com/home-assistant/home-assistant/pull/8317 +[#8324]: https://github.com/home-assistant/home-assistant/pull/8324 +[#8333]: https://github.com/home-assistant/home-assistant/pull/8333 +[#8336]: https://github.com/home-assistant/home-assistant/pull/8336 +[@adrienball]: https://github.com/adrienball +[@bergemalm]: https://github.com/bergemalm +[api docs]: https://home-assistant.io/components/api/ +[camera.arlo docs]: https://home-assistant.io/components/camera.arlo/ +[mqtt docs]: https://home-assistant.io/components/mqtt/ +[remote.harmony docs]: https://home-assistant.io/components/remote.harmony/ +[sensor.arlo docs]: https://home-assistant.io/components/sensor.arlo/ +[snips docs]: https://home-assistant.io/components/snips/ diff --git a/source/_posts/2017-07-03-home-assistant-is-moving-to-discord.markdown b/source/_posts/2017-07-03-home-assistant-is-moving-to-discord.markdown new file mode 100644 index 00000000000..fc40dfa6173 --- /dev/null +++ b/source/_posts/2017-07-03-home-assistant-is-moving-to-discord.markdown @@ -0,0 +1,90 @@ +--- +layout: post +title: "Home Assistant is moving to Discord" +description: "The Home Assistant chat community is moving over to Discord." +date: 2017-07-03 18:28:01 -0500 +date_formatted: "July 3, 2017" +author: Dale Higgs +author_twitter: dale3h +comments: true +categories: Community +--- + +Communities grow, things change. We understand that some people don't like change, and that is why we are trying to make our chat transition from Gitter to [Discord][discord] as smooth as possible for everyone. Join us now with [just a click][discord]! + +Click `Read on →` to find out more about why we're moving. + + + +### {% linkable_title Easy to join %} + +Discord is a very easy platform to join. New users can immediately jump into the conversations without first having to create an account. Just provide your name and you're in! + +This is incredibly valuable for us and will make Home Assistant even more accessible than before. + +### {% linkable_title Great apps %} + +One of our least favorite things about Gitter is the quality of apps that they provide for iOS and Android devices. Discord, on the other hand, has the fastest and most feature-rich mobile apps that we've tried! For those of you who like to post pictures to the chatrooms directly from your phone...now you can. It doesn't stop there; they also provide well-polished clients for Windows, macOS and even Linux. If you're more of a browser-based chat client person, their web client will be perfect for you. + +### {% linkable_title Moderation tools %} + +We have been quite lucky so far as to not have much inappropriate behavior (spammers, trolls, etc) in our chatrooms. However, as our community continues to grow, this common issue might come up. Discord has the features that will help us shut this behavior down before it gets out of hand. + +### {% linkable_title Great multiple server support %} + +Do you already have a Discord account? Great! You can use that account to [join in on the conversation][discord] now. One Discord account works with every Discord server. It is extremely easy to switch between servers or join new ones. Discord messages also work across servers, so your personal conversations are not scoped to a single server. + +### {% linkable_title It's hosted %} + +We are big fans of self-hosted apps and services, but everyone knows they require a fair amount of maintenance and attention to keep them running smoothly. Discord is hosted on its own servers, so it's better to let them maintain the service while we keep busy improving Home Assistant to bring you new and exciting features! + +### {% linkable_title Plenty of features %} + +Syntax highlighting, voice chats, ability to search chatrooms, private messaging, and even custom emoji! Discord has a great set of features that will keep us all happy for a long time to come. (Pssst...after you join our server, check out the `:ponder:` emoji!) + +## {% linkable_title Join us! %} + +Are you convinced and ready to make the switch? Join us, we're just [one click away][discord]! + +Not convinced? Please take a moment to reach out to us in the comments below to provide your feedback on this change so that we can help make the switch easier for you and everyone else. + +## {% linkable_title The fine print... %} + +In the process of switching chat platforms we have decided to create what we feel is a very fair set of rules for our chat community. As growth continues, these rules might change. Also be sure to check the [#welcome-rules][discord] channel for the most up-to-date rules for our chat server. + +### {% linkable_title The rules... %} + +#### {% linkable_title Rules: %} + +Please carefully read through these rules **before engaging in conversation.** + +1. **New members: Welcome!** Start by reading over the [FAQ]. Feel free to introduce yourself, as we are all friends here! + +2. If you have a question, please check the [FAQ] and [relevant documentation][docs] before posting. + +3. Do not insult, belittle, or abuse your fellow community members. Any reports of abuse will not be taken lightly and **will lead to a ban.** + +4. Our moderators are kind enough to volunteer their time to help keep this a great community for everyone. Any inappropriate or unconstructive comments toward or about them **will result in a ban.** + +5. [#devs][discord-devs] is for **development discussion only**. [#general][discord-general] is for common discussion, support questions, and lending help to others. Please use the appropriate channel as it pertains to the nature of your discussion. + +6. Spam will not be tolerated, including but not limited to: self-promotion, flooding, codewalls (longer than 15 lines) and unapproved bots. + +These rules are not to be interpreted how you like, there are no "loopholes." Anyone claiming not to be breaking the rules due to it "not being in the rules" will result in the according consequence. If you are unsure about something, please ask either myself (@dale3h) or the community. + +If you have any issues with anything or anyone on the server please PM me (@dale3h) with any relevant details. **I cannot help anyone if I am unaware of any issues.** + +#### {% linkable_title Infractions and Bans: %} + +Bans **will be issued** after one serious infraction or failing to acknowledge warnings of minor infractions. This is non-negotiable. + +Sincerely, + +**Dale Higgs**
    +Community Leader, Home Assistant + +[discord]: https://discord.gg/c5DvZ4e +[discord-devs]: https://discord.gg/8X8DTH4 +[discord-general]: https://discord.gg/pywKZRT +[FAQ]: https://home-assistant.io/faq/ +[docs]: https://home-assistant.io/docs/ diff --git a/source/_posts/2017-07-05-hasspodcast-ep-3.markdown b/source/_posts/2017-07-05-hasspodcast-ep-3.markdown new file mode 100644 index 00000000000..6ddb5276314 --- /dev/null +++ b/source/_posts/2017-07-05-hasspodcast-ep-3.markdown @@ -0,0 +1,18 @@ +--- +layout: post +title: "Home Assistant Podcast #3" +description: "Paulus joins us to talk about some stats and the release of 0.47 and Petar tells us all about his Floorplan project for Home Assistant" +date: 2017-07-05 00:01:00 +0000 +date_formatted: "July 05, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Media +og_image: /images/hasspodcast.jpg +--- + +The third episode of the Home Assistant Podcast is out. Paulus joins to talk about some stats and the release of 0.47 and Petar tells all about his Floorplan project for Home Assistant. + +[Listen online][episode] + +[episode]: https://hasspodcast.io/ha003/ diff --git a/source/_posts/2017-07-16-release-49.markdown b/source/_posts/2017-07-16-release-49.markdown new file mode 100644 index 00000000000..81aaab898ad --- /dev/null +++ b/source/_posts/2017-07-16-release-49.markdown @@ -0,0 +1,507 @@ +--- +layout: post +title: "0.49: Themes 🎨, kiosk mode and Prometheus.io" +description: "Style the frontend the way you want it and present it in Kiosk mode without tabs." +date: 2017-07-15 00:02:05 +0000 +date_formatted: "July 15, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2017-07-0.49/components.png +--- + + + +# {% linkable_title WE HAVE THEMES 🎨👩‍🎨 %} + +Our already amazing frontend just got even more amazing thanks to [@andrey-git]. With the new theme support you can be in control of the primary color, accent color and a whole bunch more. + +You can specify themes using new configuration options under frontend. + +```yaml +frontend: + themes: + green: + primary-color: "#6CA518" +``` + +Once a theme is defined, use the new frontend service `frontend.set_theme` to activate it. More information in [the docs][frontend docs]. + +

    +Screenshot of a green dashboard +Screenshot of a green dashboard +

    + +Not all parts of the user interface are themable yet. Expect improvements in future releases. + +## {% linkable_title Kiosk mode %} + +Another great new improvement for the frontend is the addition of a kiosk mode. When the frontend is viewed in kiosk mode, the tab bar will be hidden. + +To activate kiosk mode, navigate to `https://hass.example.com:8123/kiosk/group.living_room_view`. Note that for `default_view` the url is just `https://hass.example.com:8123/kiosk` + +This feature has also been brought to you by [@Andrey-git]! Big shout out to him for his continuous efforts to bring Home Assistant to the next level. + +## {% linkable_title New Platforms %} + +- Add london_underground ([@robmarkcole] - [#8272]) ([sensor.london_underground docs]) (new-platform) +- Add citybikes platform ([@aronsky] - [#8202]) ([sensor.citybikes docs]) (new-platform) +- Add One-Time Password sensor (OTP) ([@postlund] - [#8332]) ([sensor.otp docs]) (new-platform) +- Add component for xiaomi robot vacuum (switch.xiaomi_vacuum) ([@rytilahti] - [#7913]) ([switch.xiaomi_vacuum docs]) (new-platform) +- LaMetric platform and notify module ([@open-homeautomation] - [#8230]) ([lametric docs]) ([notify.lametric docs]) (new-platform) +- New component to connect to VELUX KLF 200 Interface ([@Julius2342] - [#8203]) ([velux docs]) ([scene.velux docs]) (new-platform) +- New service `send_magic_packet` with new component `wake_on_lan` ([@azogue] - [#8397]) ([wake_on_lan docs]) (new-platform) +- Add support for Prometheus ([@rcloran] - [#8211]) ([prometheus docs]) (new-platform) +- Refactored Amcrest to use central hub component ([@tchellomello] - [#8184]) ([amcrest docs]) ([camera.amcrest docs]) ([sensor.amcrest docs]) (breaking change) (new-platform) +- Added media_extractor service ([@minchik] - [#8369]) ([media_extractor docs]) (new-platform) +- Vizio SmartCast support ([@vkorn] - [#8260]) ([media_player.vizio docs]) (new-platform) + +## {% linkable_title Release 0.49.1 - July 24 %} + +- Fix TP-Link device tracker regression since 0.49 ([@maikelwever] - [#8497]) ([device_tracker.tplink docs]) +- prometheus: Convert fahrenheit to celsius ([@rcloran] - [#8511]) ([prometheus docs]) +- Update dlib_face_detect.py ([@pvizeli] - [#8516]) ([image_processing.dlib_face_detect docs]) +- Realfix for dlib ([@pvizeli] - [#8517]) ([image_processing.dlib_face_detect docs]) +- Attach the `chat_id` for a callback query from a chat group (fixes #8461) ([@azogue] - [#8523]) ([telegram_bot docs]) +- Fix support for multiple Apple TVs ([@postlund] - [#8539]) +- LIFX: assume default features for unknown products ([@amelchio] - [#8553]) ([light.lifx docs]) +- Fix broken status update for lighting4 devices ([@ypollart] - [#8543]) ([rfxtrx docs]) ([binary_sensor.rfxtrx docs]) +- zha: Update to bellows 0.3.4 ([@rcloran] - [#8594]) ([zha docs]) +- Fix STATION_SCHEMA validation on longitude ([@clkao] - [#8610]) ([sensor.citybikes docs]) +- Bumped Amcrest version ([@tchellomello] - [#8624]) ([amcrest docs]) +- Check if /dev/input/by-id exists ([@schaal] - [#8601]) ([keyboard_remote docs]) +- Tado Fix #8606 ([@filcole] - [#8621]) ([climate.tado docs]) +- prometheus: Fix zwave battery level ([@rcloran] - [#8615]) ([prometheus docs]) +- ubus: Make multiple instances work again ([@glance-] - [#8571]) ([device_tracker.ubus docs]) +- Properly slugify switch.flux update service name ([@jawilson] - [#8545]) ([switch.flux docs]) + +## {% linkable_title If you need help... %} +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} +Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. + + +## {% linkable_title Breaking Changes %} + +- UPC Connect component no longer needs a password passed into the configuration. ([@Flavien] - [#8335]) ([device_tracker.upc_connect docs]) (breaking change) +- The Apple TV platform has been upgraded to a component and a remote platform has been added. This requires your Apple TV configuration to be moved to the new `apple_tv` component. ([@postlund] - [#8122]) ([media_player.apple_tv docs]) (breaking change) + +```yaml +apple_tv: + - name: Apple TV + host: 10.0.10.20 + login_id: 00000000-1234-5678-9012-345678901234 + start_off: true + credentials: 8660DEA5154FB46B:20B94847926112B3F46F85DB3A7311830463BF65570C22C3786E27F38C3326CF +``` + +- Refactored Amcrest to use central hub component to prepare for future integrations. This requires your Amcrest configuration to be moved to the new `amcrest` component. ([@tchellomello] - [#8184]) ([amcrest docs]) ([camera.amcrest docs]) ([sensor.amcrest docs]) (breaking change) (new-platform) + +```yaml +amcrest: + - host: !secret amcrest_living + name: "Living Room" + username: !secret amcrest_living_username + password: !secret amcrest_living_password + resolution: low + stream_source: snapshot + sensors: + - motion_detector + - ptz_preset +``` + +## {% linkable_title All changes %} + +- Version bump to 0.49.0.dev0 ([@fabaff] - [#8266]) +- Upgrade pyowm to 2.7.1 ([@fabaff] - [#8274]) ([sensor.openweathermap docs]) ([weather.openweathermap docs]) +- Don't call update() in constructor ([@fabaff] - [#8276]) ([sensor.openweathermap docs]) +- Update apcaccess to 0.0.13. Add "Percent Load Capacity" to INFERRED_UNITS. ([@michaelarnauts] - [#8277]) ([apcupsd docs]) ([sensor.apcupsd docs]) +- Update knxip to 0.4 (better handling of reconnects) ([@open-homeautomation] - [#8289]) ([knx docs]) +- Add london_underground ([@robmarkcole] - [#8272]) ([sensor.london_underground docs]) (new-platform) +- pytado moved to pypi ([@wmalgadey] - [#8298]) ([tado docs]) ([climate.tado docs]) +- Fix doc link in header ([@robmarkcole] - [#8305]) ([sensor.london_underground docs]) +- Upgrade discord.py to 0.16.8 ([@fabaff] - [#8304]) ([notify.discord docs]) +- zha: Strip whitespace from device names ([@rcloran] - [#8306]) ([zha docs]) +- Upgrade chardet to 3.0.4 ([@fabaff] - [#8313]) +- Upgrade aiohttp to 2.2.2 ([@fabaff] - [#8314]) +- Fix pylint issue ([@fabaff] - [#8325]) ([snips docs]) +- vsure 1.3.7 ([@persandstrom] - [#8321]) ([verisure docs]) +- Update pyEmby to fix media images ([@mezz64] - [#8331]) ([media_player.emby docs]) +- Partially revert #7931 ([@fabaff] - [#8326]) ([sensor.yweather docs]) +- Only allow 'tls_insecure_set()' if cert is present (fixes #8329) ([@fabaff] - [#8337]) ([mqtt docs]) +- Fix issue #8285 ([@Sabesto] - [#8340]) ([modbus docs]) ([binary_sensor.modbus docs]) ([climate.flexit docs]) ([sensor.modbus docs]) ([switch.modbus docs]) +- Bump dlib face_recognition to 0.2.0 ([@pvizeli] - [#8345]) ([image_processing.dlib_face_detect docs]) ([image_processing.dlib_face_identify docs]) +- Update Avion and Decora switches to match upstream changes ([@mjg59] - [#7903]) ([light.avion docs]) ([light.decora docs]) +- Fix the "302" error in the UPC Connect component and remove the need to specify the router password ([@Flavien] - [#8335]) ([device_tracker.upc_connect docs]) (breaking change) +- Add new feature to Apple TV platform ([@postlund] - [#8122]) ([media_player.apple_tv docs]) (breaking change) +- Add citybikes platform ([@aronsky] - [#8202]) ([sensor.citybikes docs]) (new-platform) +- Fix some issues for PyLint 1.7.2 ([@balloob] - [#8356]) +- Fix pylint 1.7.2 no-else-return issues ([@balloob] - [#8361]) +- Upgrade aiohttp to 2.2.3 ([@fabaff] - [#8363]) +- Remove some more usage of run_in_executor ([@balloob] - [#8352]) +- Correct spelling of aliases, deprecate old config options. ([@aequitas] - [#8348]) ([rflink docs]) ([light.rflink docs]) ([sensor.rflink docs]) ([switch.rflink docs]) +- Allow Pilight Binary Sensor to control reset_delay_sec through configuration ([@clarkewd] - [#8358]) ([binary_sensor.pilight docs]) +- Mqtt client_id fix for #8315 ([@heinemml] - [#8366]) ([mqtt docs]) +- Allow all panel urls ([@balloob] - [#8368]) +- Update pyHik to catch XML errors ([@mezz64] - [#8384]) ([binary_sensor.hikvision docs]) +- update version ([@wardcraigj] - [#8380]) ([alarm_control_panel.totalconnect docs]) +- Add One-Time Password sensor (OTP) ([@postlund] - [#8332]) ([sensor.otp docs]) (new-platform) +- buienradar==0.7, fix winddirection/azimuth, logging ([@mjj4791] - [#8281]) ([sensor.buienradar docs]) ([weather.buienradar docs]) +- Add component for xiaomi robot vacuum (switch.xiaomi_vacuum) ([@rytilahti] - [#7913]) ([switch.xiaomi_vacuum docs]) (new-platform) +- Try catch around database updates in recorder. Resolves 6919 ([@mitchese] - [#8349]) ([recorder docs]) +- Fix Amazon Polly with non english voices. #8377 ([@CharlesBlonde] - [#8378]) ([tts.amazon_polly docs]) +- Fix TTS options. #8375 ([@CharlesBlonde] - [#8376]) ([tts docs]) +- Add address-specific KNX listeners that fire events on the HASS bus ([@open-homeautomation] - [#8374]) ([knx docs]) +- GTFS: check start/end date on services ([@Kernald] - [#8373]) ([sensor.gtfs docs]) +- Implement KNX dimming functionality ([@open-homeautomation] - [#8371]) ([light.knx docs]) +- Add Soundtouch support for playing an HTTP url ([@CharlesBlonde] - [#8370]) ([media_player.soundtouch docs]) +- Modbus fixes to work with pymodbus 1.3.1 ([@Sabesto] - [#8365]) ([modbus docs]) ([binary_sensor.modbus docs]) ([sensor.modbus docs]) ([switch.modbus docs]) +- Cleanup the asuswrt component ([@mattsch] - [#8359]) ([device_tracker.asuswrt docs]) +- cover_template:i open/close/stop actions no longer required. Improve tests ([@PhracturedBlue] - [#8344]) ([cover.template docs]) +- Prevent errors on Octoprint sensors and binary_sensors when Octoprint and/or Printer are off ([@w1ll1am23] - [#8343]) ([octoprint docs]) ([binary_sensor.octoprint docs]) ([sensor.octoprint docs]) +- Presence detection for tp link eap225 ([@alexrockt] - [#8322]) ([device_tracker.tplink docs]) +- zha light: Refresh at startup ([@rcloran] - [#8310]) ([light.zha docs]) +- zha: Try multiple reads to get manufacturer/model ([@rcloran] - [#8308]) ([zha docs]) +- Upnp mapping notification ([@dgomes] - [#8303]) ([upnp docs]) +- Use user-set device names for Linksys Smart Wi-Fi routers (3) ([@Klikini] - [#8300]) ([device_tracker.linksys_smart docs]) +- Added support for upload of remote or local files to slack ([@simaosimao] - [#8278]) ([notify.slack docs]) +- Update avion.py ([@pvizeli] - [#8364]) ([light.avion docs]) +- LaMetric platform and notify module ([@open-homeautomation] - [#8230]) ([lametric docs]) ([notify.lametric docs]) (new-platform) +- Sets spotify media_type to music ([@Tommatheussen] - [#8387]) ([media_player.spotify docs]) +- Update waqi sensor ([@andrey-git] - [#8385]) ([sensor.waqi docs]) +- Update aiolifx ([@amelchio] - [#8396]) ([light.lifx docs]) +- Code owners ([@balloob] - [#8393]) +- Add new Dyson sensors ([@CharlesBlonde] - [#8199]) ([dyson docs]) ([fan.dyson docs]) ([sensor.dyson docs]) +- Fix CODEOWNERS z-wave team name ([@armills] - [#8400]) +- Upgrade Sphinx to 1.6.3 ([@fabaff] - [#8405]) +- Use upstream RachioPy, fix manual run switches ([@Klikini] - [#8286]) ([switch.rachio docs]) +- Marrantz SR5006 & SR5006 treated as AVR-X device | Fixed Mapping of Media Player and AUX input functions ([@scarface-4711] - [#8409]) ([media_player.denonavr docs]) +- New component to connect to VELUX KLF 200 Interface ([@Julius2342] - [#8203]) ([velux docs]) ([scene.velux docs]) (new-platform) +- Properly handle the case when a group includes itself. ([@andrey-git] - [#8398]) ([group docs]) +- Add set_operation_mode support to generic_thermostat ([@mtreinish] - [#8392]) ([climate.generic_thermostat docs]) +- Make gzips reproducible by excluding timestamp ([@armills] - [#8420]) +- Do not overwrite a custom hyperion light name with the hostname of the server. ([@doctorjames] - [#8391]) ([light.hyperion docs]) +- Fixed link to documentation ([@Julius2342] - [#8424]) ([velux docs]) ([scene.velux docs]) +- Fix KeyError (fixes #3721, fixes #7241) ([@fabaff] - [#8428]) ([sensor.uber docs]) +- Use HA lat/long for the start (fixes #3971) ([@fabaff] - [#8429]) ([sensor.uber docs]) +- bump python-mirobo requirement to support newer firmwares and more ([@rytilahti] - [#8431]) ([switch.xiaomi_vacuum docs]) +- New service `send_magic_packet` with new component `wake_on_lan` ([@azogue] - [#8397]) ([wake_on_lan docs]) (new-platform) +- Integrate utility functions into restricted Python environment ([@open-homeautomation] - [#8427]) ([python_script docs]) +- Allow Twitter notifications to include media ([@MikeChristianson] - [#8282]) ([notify docs]) ([notify.twitter docs]) +- Fix typo (sending USERNAME instead of PASSWORD) introduced in #7963 ([@thecynic] - [#8433]) ([lutron docs]) +- zha: Handle both input and output clusters ([@rcloran] - [#8410]) ([zha docs]) ([binary_sensor.zha docs]) ([light.zha docs]) ([sensor.zha docs]) +- Add support for Prometheus ([@rcloran] - [#8211]) ([prometheus docs]) (new-platform) +- Refactored Amcrest to use central hub component ([@tchellomello] - [#8184]) ([amcrest docs]) ([camera.amcrest docs]) ([sensor.amcrest docs]) (breaking change) (new-platform) +- Fix radiothermostat -1 value issue ([@aneisch] - [#8395]) ([climate.radiotherm docs]) +- Added media_extractor service ([@minchik] - [#8369]) ([media_extractor docs]) (new-platform) +- Updated pyvera ([@alanfischer] - [#8437]) ([vera docs]) +- Upgrade phue to 1.0 (fixes #7749) ([@fabaff] - [#8444]) ([light.hue docs]) +- Add effects ([@fabaff] - [#8442]) ([light.mystrom docs]) +- Exclude 'TAXI' product (fixes #8401) ([@fabaff] - [#8438]) ([sensor.uber docs]) +- Switch pyW215 to pypi ([@andrey-git] - [#8445]) ([switch.dlink docs]) +- Vizio SmartCast support ([@vkorn] - [#8260]) ([media_player.vizio docs]) (new-platform) +- DHT support for humidity and temperature offset ([@gitmopp] - [#8238]) ([sensor.dht docs]) +- Add support for rain and moisture sensors ([@sdague] - [#8440]) ([sensor.arwn docs]) +- Hass.io: Disable timeout when updating OS/supervisor/hass ([@balloob] - [#8447]) ([hassio docs]) +- Fix Arlo Q not working with 0.48.1 ([@viswa-swami] - [#8446]) ([camera.arlo docs]) +- Support for Plex servers with enforced SSL ([@nmaggioni] - [#8341]) ([media_player.plex docs]) +- Upgrade youtube_dl to 2017.7.9 ([@fabaff] - [#8450]) ([media_extractor docs]) +- Implement a bridge between HASS event bus and KNX bus to send events ([@open-homeautomation] - [#8449]) ([knx docs]) +- LIFX: improve light availability ([@amelchio] - [#8451]) ([light.lifx docs]) +- LIFX: make broadcast address configurable ([@amelchio] - [#8453]) ([light.lifx docs]) +- Backend support for themes ([@andrey-git] - [#8419]) +- upgrade broadlink ([@danielhiversen] - [#8462]) ([sensor.broadlink docs]) ([switch.broadlink docs]) +- upgrade rfxtrx lib ([@danielhiversen] - [#8463]) ([rfxtrx docs]) +- Plex: Add exception handler when connection fails ([@abmantis] - [#8179]) ([media_player.plex docs]) +- HomeMatic dependency upgrade + IP Wall Thermostat support ([@danielperna84] - [#8465]) ([homematic docs]) +- Add kiosk-mode panel ([@andrey-git] - [#8457]) + +[#7903]: https://github.com/home-assistant/home-assistant/pull/7903 +[#7913]: https://github.com/home-assistant/home-assistant/pull/7913 +[#8122]: https://github.com/home-assistant/home-assistant/pull/8122 +[#8179]: https://github.com/home-assistant/home-assistant/pull/8179 +[#8184]: https://github.com/home-assistant/home-assistant/pull/8184 +[#8199]: https://github.com/home-assistant/home-assistant/pull/8199 +[#8202]: https://github.com/home-assistant/home-assistant/pull/8202 +[#8203]: https://github.com/home-assistant/home-assistant/pull/8203 +[#8211]: https://github.com/home-assistant/home-assistant/pull/8211 +[#8230]: https://github.com/home-assistant/home-assistant/pull/8230 +[#8238]: https://github.com/home-assistant/home-assistant/pull/8238 +[#8260]: https://github.com/home-assistant/home-assistant/pull/8260 +[#8266]: https://github.com/home-assistant/home-assistant/pull/8266 +[#8272]: https://github.com/home-assistant/home-assistant/pull/8272 +[#8274]: https://github.com/home-assistant/home-assistant/pull/8274 +[#8276]: https://github.com/home-assistant/home-assistant/pull/8276 +[#8277]: https://github.com/home-assistant/home-assistant/pull/8277 +[#8278]: https://github.com/home-assistant/home-assistant/pull/8278 +[#8281]: https://github.com/home-assistant/home-assistant/pull/8281 +[#8282]: https://github.com/home-assistant/home-assistant/pull/8282 +[#8286]: https://github.com/home-assistant/home-assistant/pull/8286 +[#8289]: https://github.com/home-assistant/home-assistant/pull/8289 +[#8298]: https://github.com/home-assistant/home-assistant/pull/8298 +[#8300]: https://github.com/home-assistant/home-assistant/pull/8300 +[#8303]: https://github.com/home-assistant/home-assistant/pull/8303 +[#8304]: https://github.com/home-assistant/home-assistant/pull/8304 +[#8305]: https://github.com/home-assistant/home-assistant/pull/8305 +[#8306]: https://github.com/home-assistant/home-assistant/pull/8306 +[#8308]: https://github.com/home-assistant/home-assistant/pull/8308 +[#8310]: https://github.com/home-assistant/home-assistant/pull/8310 +[#8313]: https://github.com/home-assistant/home-assistant/pull/8313 +[#8314]: https://github.com/home-assistant/home-assistant/pull/8314 +[#8321]: https://github.com/home-assistant/home-assistant/pull/8321 +[#8322]: https://github.com/home-assistant/home-assistant/pull/8322 +[#8325]: https://github.com/home-assistant/home-assistant/pull/8325 +[#8326]: https://github.com/home-assistant/home-assistant/pull/8326 +[#8331]: https://github.com/home-assistant/home-assistant/pull/8331 +[#8332]: https://github.com/home-assistant/home-assistant/pull/8332 +[#8335]: https://github.com/home-assistant/home-assistant/pull/8335 +[#8337]: https://github.com/home-assistant/home-assistant/pull/8337 +[#8340]: https://github.com/home-assistant/home-assistant/pull/8340 +[#8341]: https://github.com/home-assistant/home-assistant/pull/8341 +[#8343]: https://github.com/home-assistant/home-assistant/pull/8343 +[#8344]: https://github.com/home-assistant/home-assistant/pull/8344 +[#8345]: https://github.com/home-assistant/home-assistant/pull/8345 +[#8348]: https://github.com/home-assistant/home-assistant/pull/8348 +[#8349]: https://github.com/home-assistant/home-assistant/pull/8349 +[#8352]: https://github.com/home-assistant/home-assistant/pull/8352 +[#8356]: https://github.com/home-assistant/home-assistant/pull/8356 +[#8358]: https://github.com/home-assistant/home-assistant/pull/8358 +[#8359]: https://github.com/home-assistant/home-assistant/pull/8359 +[#8361]: https://github.com/home-assistant/home-assistant/pull/8361 +[#8363]: https://github.com/home-assistant/home-assistant/pull/8363 +[#8364]: https://github.com/home-assistant/home-assistant/pull/8364 +[#8365]: https://github.com/home-assistant/home-assistant/pull/8365 +[#8366]: https://github.com/home-assistant/home-assistant/pull/8366 +[#8368]: https://github.com/home-assistant/home-assistant/pull/8368 +[#8369]: https://github.com/home-assistant/home-assistant/pull/8369 +[#8370]: https://github.com/home-assistant/home-assistant/pull/8370 +[#8371]: https://github.com/home-assistant/home-assistant/pull/8371 +[#8373]: https://github.com/home-assistant/home-assistant/pull/8373 +[#8374]: https://github.com/home-assistant/home-assistant/pull/8374 +[#8376]: https://github.com/home-assistant/home-assistant/pull/8376 +[#8378]: https://github.com/home-assistant/home-assistant/pull/8378 +[#8380]: https://github.com/home-assistant/home-assistant/pull/8380 +[#8384]: https://github.com/home-assistant/home-assistant/pull/8384 +[#8385]: https://github.com/home-assistant/home-assistant/pull/8385 +[#8387]: https://github.com/home-assistant/home-assistant/pull/8387 +[#8391]: https://github.com/home-assistant/home-assistant/pull/8391 +[#8392]: https://github.com/home-assistant/home-assistant/pull/8392 +[#8393]: https://github.com/home-assistant/home-assistant/pull/8393 +[#8395]: https://github.com/home-assistant/home-assistant/pull/8395 +[#8396]: https://github.com/home-assistant/home-assistant/pull/8396 +[#8397]: https://github.com/home-assistant/home-assistant/pull/8397 +[#8398]: https://github.com/home-assistant/home-assistant/pull/8398 +[#8400]: https://github.com/home-assistant/home-assistant/pull/8400 +[#8405]: https://github.com/home-assistant/home-assistant/pull/8405 +[#8409]: https://github.com/home-assistant/home-assistant/pull/8409 +[#8410]: https://github.com/home-assistant/home-assistant/pull/8410 +[#8419]: https://github.com/home-assistant/home-assistant/pull/8419 +[#8420]: https://github.com/home-assistant/home-assistant/pull/8420 +[#8424]: https://github.com/home-assistant/home-assistant/pull/8424 +[#8427]: https://github.com/home-assistant/home-assistant/pull/8427 +[#8428]: https://github.com/home-assistant/home-assistant/pull/8428 +[#8429]: https://github.com/home-assistant/home-assistant/pull/8429 +[#8431]: https://github.com/home-assistant/home-assistant/pull/8431 +[#8433]: https://github.com/home-assistant/home-assistant/pull/8433 +[#8437]: https://github.com/home-assistant/home-assistant/pull/8437 +[#8438]: https://github.com/home-assistant/home-assistant/pull/8438 +[#8440]: https://github.com/home-assistant/home-assistant/pull/8440 +[#8442]: https://github.com/home-assistant/home-assistant/pull/8442 +[#8444]: https://github.com/home-assistant/home-assistant/pull/8444 +[#8445]: https://github.com/home-assistant/home-assistant/pull/8445 +[#8446]: https://github.com/home-assistant/home-assistant/pull/8446 +[#8447]: https://github.com/home-assistant/home-assistant/pull/8447 +[#8449]: https://github.com/home-assistant/home-assistant/pull/8449 +[#8450]: https://github.com/home-assistant/home-assistant/pull/8450 +[#8451]: https://github.com/home-assistant/home-assistant/pull/8451 +[#8453]: https://github.com/home-assistant/home-assistant/pull/8453 +[#8457]: https://github.com/home-assistant/home-assistant/pull/8457 +[#8462]: https://github.com/home-assistant/home-assistant/pull/8462 +[#8463]: https://github.com/home-assistant/home-assistant/pull/8463 +[#8465]: https://github.com/home-assistant/home-assistant/pull/8465 +[@CharlesBlonde]: https://github.com/CharlesBlonde +[@Flavien]: https://github.com/Flavien +[@Julius2342]: https://github.com/Julius2342 +[@Kernald]: https://github.com/Kernald +[@Klikini]: https://github.com/Klikini +[@MikeChristianson]: https://github.com/MikeChristianson +[@PhracturedBlue]: https://github.com/PhracturedBlue +[@Sabesto]: https://github.com/Sabesto +[@Tommatheussen]: https://github.com/Tommatheussen +[@abmantis]: https://github.com/abmantis +[@aequitas]: https://github.com/aequitas +[@alanfischer]: https://github.com/alanfischer +[@alexrockt]: https://github.com/alexrockt +[@amelchio]: https://github.com/amelchio +[@andrey-git]: https://github.com/andrey-git +[@aneisch]: https://github.com/aneisch +[@armills]: https://github.com/armills +[@aronsky]: https://github.com/aronsky +[@azogue]: https://github.com/azogue +[@balloob]: https://github.com/balloob +[@clarkewd]: https://github.com/clarkewd +[@danielhiversen]: https://github.com/danielhiversen +[@danielperna84]: https://github.com/danielperna84 +[@dgomes]: https://github.com/dgomes +[@doctorjames]: https://github.com/doctorjames +[@fabaff]: https://github.com/fabaff +[@gitmopp]: https://github.com/gitmopp +[@heinemml]: https://github.com/heinemml +[@mattsch]: https://github.com/mattsch +[@mezz64]: https://github.com/mezz64 +[@michaelarnauts]: https://github.com/michaelarnauts +[@minchik]: https://github.com/minchik +[@mitchese]: https://github.com/mitchese +[@mjg59]: https://github.com/mjg59 +[@mjj4791]: https://github.com/mjj4791 +[@mtreinish]: https://github.com/mtreinish +[@nmaggioni]: https://github.com/nmaggioni +[@open-homeautomation]: https://github.com/open-homeautomation +[@persandstrom]: https://github.com/persandstrom +[@postlund]: https://github.com/postlund +[@pvizeli]: https://github.com/pvizeli +[@rcloran]: https://github.com/rcloran +[@robmarkcole]: https://github.com/robmarkcole +[@rytilahti]: https://github.com/rytilahti +[@scarface-4711]: https://github.com/scarface-4711 +[@sdague]: https://github.com/sdague +[@simaosimao]: https://github.com/simaosimao +[@tchellomello]: https://github.com/tchellomello +[@thecynic]: https://github.com/thecynic +[@viswa-swami]: https://github.com/viswa-swami +[@vkorn]: https://github.com/vkorn +[@w1ll1am23]: https://github.com/w1ll1am23 +[@wardcraigj]: https://github.com/wardcraigj +[@wmalgadey]: https://github.com/wmalgadey +[alarm_control_panel.totalconnect docs]: https://home-assistant.io/components/alarm_control_panel.totalconnect/ +[amcrest docs]: https://home-assistant.io/components/amcrest/ +[apcupsd docs]: https://home-assistant.io/components/apcupsd/ +[binary_sensor.hikvision docs]: https://home-assistant.io/components/binary_sensor.hikvision/ +[binary_sensor.modbus docs]: https://home-assistant.io/components/binary_sensor.modbus/ +[binary_sensor.octoprint docs]: https://home-assistant.io/components/binary_sensor.octoprint/ +[binary_sensor.pilight docs]: https://home-assistant.io/components/binary_sensor.pilight/ +[binary_sensor.zha docs]: https://home-assistant.io/components/binary_sensor.zha/ +[camera.amcrest docs]: https://home-assistant.io/components/camera.amcrest/ +[camera.arlo docs]: https://home-assistant.io/components/camera.arlo/ +[climate.flexit docs]: https://home-assistant.io/components/climate.flexit/ +[climate.generic_thermostat docs]: https://home-assistant.io/components/climate.generic_thermostat/ +[climate.radiotherm docs]: https://home-assistant.io/components/climate.radiotherm/ +[climate.tado docs]: https://home-assistant.io/components/climate.tado/ +[cover.template docs]: https://home-assistant.io/components/cover.template/ +[device_tracker.asuswrt docs]: https://home-assistant.io/components/device_tracker.asuswrt/ +[device_tracker.linksys_smart docs]: https://home-assistant.io/components/device_tracker.linksys_smart/ +[device_tracker.tplink docs]: https://home-assistant.io/components/device_tracker.tplink/ +[device_tracker.upc_connect docs]: https://home-assistant.io/components/device_tracker.upc_connect/ +[dyson docs]: https://home-assistant.io/components/dyson/ +[fan.dyson docs]: https://home-assistant.io/components/fan.dyson/ +[group docs]: https://home-assistant.io/components/group/ +[hassio docs]: https://home-assistant.io/hassio/ +[homematic docs]: https://home-assistant.io/components/homematic/ +[image_processing.dlib_face_detect docs]: https://home-assistant.io/components/image_processing.dlib_face_detect/ +[image_processing.dlib_face_identify docs]: https://home-assistant.io/components/image_processing.dlib_face_identify/ +[knx docs]: https://home-assistant.io/components/knx/ +[lametric docs]: https://home-assistant.io/components/lametric/ +[light.avion docs]: https://home-assistant.io/components/light.avion/ +[light.decora docs]: https://home-assistant.io/components/light.decora/ +[light.hue docs]: https://home-assistant.io/components/light.hue/ +[light.hyperion docs]: https://home-assistant.io/components/light.hyperion/ +[light.knx docs]: https://home-assistant.io/components/light.knx/ +[light.lifx docs]: https://home-assistant.io/components/light.lifx/ +[light.mystrom docs]: https://home-assistant.io/components/light.mystrom/ +[light.rflink docs]: https://home-assistant.io/components/light.rflink/ +[light.zha docs]: https://home-assistant.io/components/light.zha/ +[lutron docs]: https://home-assistant.io/components/lutron/ +[media_extractor docs]: https://home-assistant.io/components/media_extractor/ +[media_player.apple_tv docs]: https://home-assistant.io/components/media_player.apple_tv/ +[media_player.denonavr docs]: https://home-assistant.io/components/media_player.denonavr/ +[media_player.emby docs]: https://home-assistant.io/components/media_player.emby/ +[media_player.plex docs]: https://home-assistant.io/components/media_player.plex/ +[media_player.soundtouch docs]: https://home-assistant.io/components/media_player.soundtouch/ +[media_player.spotify docs]: https://home-assistant.io/components/media_player.spotify/ +[media_player.vizio docs]: https://home-assistant.io/components/media_player.vizio/ +[modbus docs]: https://home-assistant.io/components/modbus/ +[mqtt docs]: https://home-assistant.io/components/mqtt/ +[notify docs]: https://home-assistant.io/components/notify/ +[notify.discord docs]: https://home-assistant.io/components/notify.discord/ +[notify.lametric docs]: https://home-assistant.io/components/notify.lametric/ +[notify.slack docs]: https://home-assistant.io/components/notify.slack/ +[notify.twitter docs]: https://home-assistant.io/components/notify.twitter/ +[octoprint docs]: https://home-assistant.io/components/octoprint/ +[prometheus docs]: https://home-assistant.io/components/prometheus/ +[python_script docs]: https://home-assistant.io/components/python_script/ +[recorder docs]: https://home-assistant.io/components/recorder/ +[rflink docs]: https://home-assistant.io/components/rflink/ +[rfxtrx docs]: https://home-assistant.io/components/rfxtrx/ +[scene.velux docs]: https://home-assistant.io/components/scene.velux/ +[sensor.amcrest docs]: https://home-assistant.io/components/sensor.amcrest/ +[sensor.apcupsd docs]: https://home-assistant.io/components/sensor.apcupsd/ +[sensor.arwn docs]: https://home-assistant.io/components/sensor.arwn/ +[sensor.broadlink docs]: https://home-assistant.io/components/sensor.broadlink/ +[sensor.buienradar docs]: https://home-assistant.io/components/sensor.buienradar/ +[sensor.citybikes docs]: https://home-assistant.io/components/sensor.citybikes/ +[sensor.dht docs]: https://home-assistant.io/components/sensor.dht/ +[sensor.dyson docs]: https://home-assistant.io/components/sensor.dyson/ +[sensor.gtfs docs]: https://home-assistant.io/components/sensor.gtfs/ +[sensor.london_underground docs]: https://home-assistant.io/components/sensor.london_underground/ +[sensor.modbus docs]: https://home-assistant.io/components/sensor.modbus/ +[sensor.octoprint docs]: https://home-assistant.io/components/sensor.octoprint/ +[sensor.openweathermap docs]: https://home-assistant.io/components/sensor.openweathermap/ +[sensor.otp docs]: https://home-assistant.io/components/sensor.otp/ +[sensor.rflink docs]: https://home-assistant.io/components/sensor.rflink/ +[sensor.uber docs]: https://home-assistant.io/components/sensor.uber/ +[sensor.waqi docs]: https://home-assistant.io/components/sensor.waqi/ +[sensor.yweather docs]: https://home-assistant.io/components/sensor.yweather/ +[sensor.zha docs]: https://home-assistant.io/components/sensor.zha/ +[snips docs]: https://home-assistant.io/components/snips/ +[switch.broadlink docs]: https://home-assistant.io/components/switch.broadlink/ +[switch.dlink docs]: https://home-assistant.io/components/switch.dlink/ +[switch.modbus docs]: https://home-assistant.io/components/switch.modbus/ +[switch.rachio docs]: https://home-assistant.io/components/switch.rachio/ +[switch.rflink docs]: https://home-assistant.io/components/switch.rflink/ +[switch.xiaomi_vacuum docs]: https://home-assistant.io/components/switch.xiaomi_vacuum/ +[tado docs]: https://home-assistant.io/components/tado/ +[tts docs]: https://home-assistant.io/components/tts/ +[tts.amazon_polly docs]: https://home-assistant.io/components/tts.amazon_polly/ +[upnp docs]: https://home-assistant.io/components/upnp/ +[velux docs]: https://home-assistant.io/components/velux/ +[frontend docs]: https://home-assistant.io/components/frontend/ +[vera docs]: https://home-assistant.io/components/vera/ +[verisure docs]: https://home-assistant.io/components/verisure/ +[wake_on_lan docs]: https://home-assistant.io/components/wake_on_lan/ +[weather.buienradar docs]: https://home-assistant.io/components/weather.buienradar/ +[weather.openweathermap docs]: https://home-assistant.io/components/weather.openweathermap/ +[zha docs]: https://home-assistant.io/components/zha/ +[zha.const docs]: https://home-assistant.io/components/zha.const/ +[forum]: https://community.home-assistant.io/ +[issue]: https://github.com/home-assistant/home-assistant/issues +[discord]: https://discord.gg/c5DvZ4e +[#8497]: https://github.com/home-assistant/home-assistant/pull/8497 +[#8511]: https://github.com/home-assistant/home-assistant/pull/8511 +[#8516]: https://github.com/home-assistant/home-assistant/pull/8516 +[#8517]: https://github.com/home-assistant/home-assistant/pull/8517 +[#8523]: https://github.com/home-assistant/home-assistant/pull/8523 +[#8539]: https://github.com/home-assistant/home-assistant/pull/8539 +[#8543]: https://github.com/home-assistant/home-assistant/pull/8543 +[#8553]: https://github.com/home-assistant/home-assistant/pull/8553 +[#8594]: https://github.com/home-assistant/home-assistant/pull/8594 +[#8610]: https://github.com/home-assistant/home-assistant/pull/8610 +[@clkao]: https://github.com/clkao +[@maikelwever]: https://github.com/maikelwever +[@ypollart]: https://github.com/ypollart +[binary_sensor.rfxtrx docs]: https://home-assistant.io/components/binary_sensor.rfxtrx/ +[telegram_bot docs]: https://home-assistant.io/components/telegram_bot/ +[#8545]: https://github.com/home-assistant/home-assistant/pull/8545 +[#8571]: https://github.com/home-assistant/home-assistant/pull/8571 +[#8601]: https://github.com/home-assistant/home-assistant/pull/8601 +[#8615]: https://github.com/home-assistant/home-assistant/pull/8615 +[#8621]: https://github.com/home-assistant/home-assistant/pull/8621 +[#8624]: https://github.com/home-assistant/home-assistant/pull/8624 +[@filcole]: https://github.com/filcole +[@glance-]: https://github.com/glance- +[@jawilson]: https://github.com/jawilson +[@schaal]: https://github.com/schaal +[device_tracker.ubus docs]: https://home-assistant.io/components/device_tracker.ubus/ +[keyboard_remote docs]: https://home-assistant.io/components/keyboard_remote/ +[switch.flux docs]: https://home-assistant.io/components/switch.flux/ diff --git a/source/_posts/2017-07-17-hasspodcast-ep-4.markdown b/source/_posts/2017-07-17-hasspodcast-ep-4.markdown new file mode 100644 index 00000000000..565a3755748 --- /dev/null +++ b/source/_posts/2017-07-17-hasspodcast-ep-4.markdown @@ -0,0 +1,18 @@ +--- +layout: post +title: "Home Assistant Podcast #4" +description: "We quickly cover off a few community items including the move to Discord and Carlo talks with Phil about his use of Floorplan." +date: 2017-07-17 00:01:00 +0000 +date_formatted: "July 17, 2017" +author: Phil Hawthorne +author_twitter: philhawthorne +comments: true +categories: Media +og_image: /images/hasspodcast.jpg +--- + +We quickly cover off a few community items including the move to Discord and Carlo talks with Phil about his use of Floorplan. + +[Listen online][episode] + +[episode]: https://hasspodcast.io/ha004/ diff --git a/source/_posts/2017-07-25-introducing-hassio.markdown b/source/_posts/2017-07-25-introducing-hassio.markdown new file mode 100644 index 00000000000..3a181997f61 --- /dev/null +++ b/source/_posts/2017-07-25-introducing-hassio.markdown @@ -0,0 +1,97 @@ +--- +layout: post +title: "Introducing Hass.io" +description: "The ultimate home automation hub has arrived." +date: 2017-07-25 00:02:05 +0000 +date_formatted: "July 25, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Announcements +og_image: /images/hassio/screenshots/dashboard.png +--- + +**TL;DR:** Today we're introducing [Hass.io]. Hass.io is an operating system that will take care of installing and updating Home Assistant, is managed from the Home Assistant UI, allows creating/restoring snapshots of your configuration and can easily be extended using [Hass.io add-ons][addons] including [Google Assistant] and [Let's Encrypt]. + +---- + +Home Assistant is 2 months away from being 4 years old. In that time the Internet of Things has really taken off and we've seen many new devices and services. We saw the introduction of voice assistants like Google Home and new standards like Apple HomeKit. + +Some things have been supported natively in Home Assistant, others have been integrated into Home Assistant via third party applications. All these moving parts caused our users to spend a lot of time maintaining their systems and applications instead of automating their homes. + +So we decided to take a step back from day-to-day Home Assistant development and see if we could offer a solution that makes updating a breeze for our users. A solution that you can flash to your Raspberry Pi and no longer worry about. A solution that would still be local first and respect the user's privacy. + +And this is how [Pascal Vizeli] came up with Hass.io, an operating system based on [ResinOS] and [Docker]. Hass.io will take care of installing and updating Home Assistant, is managed from the Home Assistant UI, allows taking/restoring snapshots of your configuration and can easily be extended using [Hass.io add-ons][addons]. + +

    + +Hass.io dashboard +

    + +To install add-ons, a user can browse the built-in add-on store and install, configure and update any available application. Want to turn your device into a Google Assistant or make your configuration accessible via Samba/Windows networking? Both are a couple of clicks away! ([Video demo - 38s, no audio][install-demo]) + +At launch we have included a couple of [built-in add-ons][addons] like [Google Assistant], [Let's Encrypt] and [Duck DNS]. Besides our internal add-ons, it is also possible to create and share your own add-on repositories. During our beta period we've already seen some great add-ons being shared: [Homebridge][olivierg], [InfluxDB][bestlibre], [HASS Configurator][danielperna] and [AppDaemon][vkorn]. + +As we strongly believe in the openness of technology, we are releasing Hass.io as [open source] under the Apache 2.0 license. That way any user can make sure that the code that runs in their homes is secure and safe. + +- [Learn more about Hass.io][Hass.io] +- [Install Hass.io][install] +- [Available add-ons][addons] + +_Some frequently asked questions are answered below in the read more section._ + +
    + +
    + +Hass.io has been built by [Pascal Vizeli], the UI has been made by [Paulus Schoutsen] and [BRUHAutomation] made the introduction video. Big thanks to [Resin.io] for building ResinOS and helping us get started with it. Also a big thanks to the community for early feedback, helping out with the documentation and add-on development ❤️ + + + +#### {% linkable_title Will Hass.io be the only way to run Home Assistant? %} + +Hass.io is and will always be optional. You can still run Home Assistant wherever you can run Python. + +#### {% linkable_title Which devices are supported at launch? %} + +Initially we support the Raspberry Pi 1, 2, 3 and Intel NUC. Advanced users can also [install Hass.io on a Linux server][advanced-install]. + +#### {% linkable_title Can I install packages or scripts on the machine? %} + +No, this is not possible as we're using stateless Docker containers. To install a package you'll have to write a local add-on that interacts with Home Assistant. See [our tutorial][run-local]. + +#### {% linkable_title Can I restore a snapshot on a different device? %} + +Yes, any Hass.io snapshot can be restored on any device. + +#### {% linkable_title The Hass.io configuration panel contains powerful tools. Why is there no extra security besides the Home Assistant login? %} + +This is in the works. We have already implemented [the backend](https://github.com/home-assistant/hassio/pull/41) and plan to release the UI soon. + +#### {% linkable_title Is there a roadmap? %} + +We use [Pivotal Tracker] to track things that are in progress and what we might work on. + +[Hass.io]: /hassio +[install]: /hassio/installation +[Homebridge]: https://github.com/nfarina/homebridge +[hb-hass]: https://github.com/home-assistant/homebridge-homeassistant +[Pascal Vizeli]: https://github.com/pvizeli/ +[Paulus Schoutsen]: https://github.com/balloob/ +[ResinOS]: https://resinos.io/ +[Docker]: https://www.docker.com/ +[addons]: /addons/ +[bestlibre]: https://community.home-assistant.io/t/repository-bestlibre-addons-repository/18037 +[danielperna]: https://community.home-assistant.io/t/repository-hass-configurator/17838 +[olivierg]: https://community.home-assistant.io/t/repository-homebridge-add-on/18569 +[vkorn]: https://community.home-assistant.io/t/repository-few-addons/20659 +[install-demo]: https://youtu.be/NfyavpAg4as +[BRUHAutomation]: https://www.youtube.com/channel/UCLecVrux63S6aYiErxdiy4w +[open source]: https://github.com/home-assistant/hassio +[Google Assistant]: /addons/google_assistant/ +[Let's Encrypt]: /addons/lets_encrypt/ +[Duck DNS]: /addons/duckdns/ +[advanced-install]: /hassio/installation/#alternative-install-on-generic-linux-server +[Pivotal Tracker]: https://www.pivotaltracker.com/n/projects/2020851 +[run-local]: /hassio/run_local/ +[Resin.io]: https://resin.io diff --git a/source/_posts/2017-07-27-talk-python-podcast.markdown b/source/_posts/2017-07-27-talk-python-podcast.markdown new file mode 100644 index 00000000000..9b364cb1ed6 --- /dev/null +++ b/source/_posts/2017-07-27-talk-python-podcast.markdown @@ -0,0 +1,22 @@ +--- +layout: post +title: "Talk Python interview with Paulus Schoutsen" +description: "In this episode of Talk Python, Michael Kennedy interviews Paulus Schoutsen about Hass.io and the perfect home automation." +date: 2017-07-27 02:00:00 +date_formatted: "July 27, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Media +og_image: /images/blog/2017-07-talk-python/logo.png +--- + + + +Join Michael Kennedy at the Talk Python podcast for an hour long interview with Paulus Schoutsen, the founder of Home Assistant, as they discuss the release of Hass.io and the vision for the perfect home automation. + + + Visit the episode page on Talk Python + diff --git a/source/_posts/2017-07-29-release-50.markdown b/source/_posts/2017-07-29-release-50.markdown new file mode 100644 index 00000000000..3de112daf6f --- /dev/null +++ b/source/_posts/2017-07-29-release-50.markdown @@ -0,0 +1,424 @@ +--- +layout: post +title: "0.50: Voice control, History improvements, and Xiaomi" +description: "Use your voice to control your Home." +date: 2017-07-29 00:11:05 +date_formatted: "July 29, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2017-07-0.50/components.png +--- + + + +Last Wednesday we released [Hass.io](https://home-assistant.io/hassio/), an operating system to take care of all the updating hassles that come with running home automation at home and so much more. This is a major milestone for Home Assistant as it is our first step to offering a fully integrated solution using a bring your own hardware approach. + +The launch has been crazy successful. The [20 minute introduction video][hassio-intro] by BRUHAutomation already has 12.5k views in just 4 days with no less than 150 comments. + +Hass.io will be a great foundation for bigger and better integrated features. Stay tuned. + +### {% linkable_title Adding the power of voice to integrations %} + +But enough about Hass.io, let's not forget about Home Assistant. This release has completely revamped the way how we deal with voice integrations. We turned Home Assistant into a platform to write voice apps, no matter where the processing of the voice happens. This can be done by Alexa, Google Assistant or in the Home Assistant user interface. + +We are super excited about the new functionality and hope that it will trigger a new type of applications and systems to be built on top of Home Assistant. This release includes a shopping list to show the new functionality. As a user you can add any item to the shopping list with your voice and also ask what is on your shopping list. + +```yaml +# Example configuration.yaml entry +shopping_list: +``` + +To make testing these applications easier, we've updated the conversation component. The component will now allow sentences to be configured that hook directly into the new voice functionality. Combined with the new interface it will allow for some great interactions! Check out the [developer docs][intent docs] for more information. + +
    + +
    + +### {% linkable_title History improvements %} + +[@OverloadUT] has been recently spending a lot of time on optimizing the history database queries. This release includes PR [#8632], the first in a list of improvements that he is working on. This PR greatly improves requests for single entities by using an optimized query for this use case. + +The performance change in some of his tests shows this change to be about 300x faster (30 seconds to 0.1 seconds!) (There is no theoretical upper limit due to the issue with multi-entity queries getting worse the longer the current recorder run has been going.) + +[hassio-intro]: https://www.youtube.com/watch?v=XWPluWcYRMI&feature=youtu.be + +### {% linkable_title Xiaomi integration %} + +Yes, it has happened! After being in beta for a while, the Xiaomi support is now available to all. [@danielhiversen] did an amazing job and we now support sensors, switches, lights and covers. + +### {% linkable_title Velbus integration %} + +Another awesome integration is that of the Velbus home automation system which has been contributed by [@thomasdelaet]. It integrates their sensors, covers, fans, lights and switches. + +### {% linkable_title Manual alarm with MQTT control %} + +A new version of the manual alarm component is now available with full MQTT control thanks to [@colinodell]. Using this you can build your own control panel to remotely arm/disarm the alarm. For example, using a [Raspberry Pi to create an alarm](https://www.hackster.io/colinodell/diy-alarm-control-panel-for-home-assistant-ac1813). + +## {% linkable_title New Platforms %} + +- Initial support for Google Wifi/OnHub ([@fronzbot] - [#8485]) ([sensor.google_wifi docs]) (new-platform) +- Xiaomi gw support ([@danielhiversen] - [#8555]) ([xiaomi docs]) ([binary_sensor.xiaomi docs]) ([cover.xiaomi docs]) ([light.xiaomi docs]) ([sensor.xiaomi docs]) ([switch.xiaomi docs]) (new-platform) +- Add Intent component ([@balloob] - [#8434]) ([alexa docs]) ([intent_script docs]) ([shopping_list docs]) ([snips docs]) (breaking change) (new-platform) +- Manual alarm with MQTT control ([@colinodell] - [#8257]) ([alarm_control_panel.manual_mqtt docs]) (new-platform) +- Add component Light TPLink ([@gollo] - [#8643]) ([light.tplink docs]) (new-platform) +- Velbus ([@thomasdelaet] - [#8076]) ([velbus docs]) ([binary_sensor.velbus docs]) ([light.velbus docs]) (new-platform) +- Add uk_transport component. ([@robmarkcole] - [#8600]) ([sensor.uk_transport docs]) (new-platform) + +## {% linkable_title Release 0.50.2 - July 31 %} + +Straight to 0.50.2. We released 0.50 as 0.50.1 due to an upload error to PyPi. + +- Fix TP-Link light brightness issue #8744. ([@gollo] - [#8755]) +- Fix typo in script error ([@n8henrie] - [#8754]) +- Fix tradfri error spam ([@MartinHjelmare] - [#8738]) ([light.tradfri docs]) +- Media Player - Pioneer: Suppress exception if host is not available (fixes #8684) ([@fabaff] - [#8732]) ([media_player.pioneer docs]) +- Telegram Bot: Retry set_webhook up to three times, reduce timeout to 5s again ([@azogue] - [#8716]) ([telegram_bot.webhooks docs]) +- Fixed sensor issue with Google Wifi routers in bridge mode ([@fronzbot] - [#8710]) ([sensor.google_wifi docs]) +- Fix alexa cards ([@balloob] - [#8708]) ([alexa docs]) +- Fix Kodi reconnection after websocket disconnect ([@armills] - [#8704]) ([media_player.kodi docs]) +- Move I/O outside of properties for light/tplink platform ([@gollo] - [#8699]) ([light.tplink docs]) (new-platform) +- Correctly discover GE Fan Controllers ([@armills] - [#8682]) ([zwave docs]) +- Fix Z-Wave barrier discovery for new API ([@armills] - [#8706]) ([zwave docs]) ([cover.zwave docs]) + +## {% linkable_title If you need help... %} +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} +Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. + + +## {% linkable_title Breaking Changes %} + +- Automations: The state trigger keyword `state` and the time trigger keyword `after` were deprecated in 0.46. They have now been removed. Use `to` and `at` instead. ([@amelchio] - [#8510]) ([automation.state docs]) ([automation.time docs]) (breaking change) +- Wink: the component is no longer supporting the `access_token` in the config. Use the new OAuth authentication or add your username and password to the config. ([@w1ll1am23] - [#8208]) ([wink docs]) (breaking change) +- Alexa/API.AI/Snips.ai/Conversation: configuring responses to intents/sentences has been moved to a new component called `intent_script`. Conversation now allows configuring sentences to map to intents. ([@balloob] - [#8434]) ([alexa docs]) ([intent docs]) ([intent_script docs]) + ([shopping_list docs]) ([snips docs]) (breaking change) (new-platform) + +```yaml +alexa: +snips: +apiai: + +intent_script: + LightKitchen: + speech: + type: plain + text: I did the work, yay. + card: + type: simple + title: Lights Card + content: I have turned on the lights. + action: + service: light.turn_on + data: + entity_id: light.kitchen + +conversation: + intents: + LightKitchen: + - The kitchen is magic +``` + +- Switch fritzdect: attributes have been renamed to use underscores and no capital letters ([@thomasklingbeil] - [#8436]) ([switch.fritzdect docs]) (breaking change) +- Yahoo Weather: no longer allow configuring forecasts but include all instead. ([@fanthos] - [#8626]) ([weather.yweather docs]) (breaking change) +- The Home Assistant Z-Wave Cover implementation has been updated to support the latest development version of OpenZWave. If you are currently applying a workaround to your OpenZWave installation to support the barrier command class, you'll need to make sure you update your workaround to the latest development version of OpenZWave. ([@firstof9] - [#8574]) ([cover docs]) ([cover.zwave docs]) (breaking change) + +## {% linkable_title All changes %} + +- Make deps directory persistent over upgrades ([@MartinHjelmare] - [#7801]) +- Fix check for running inside venv ([@MartinHjelmare] - [#8481]) +- Bump to KNXIP 0.5 ([@open-homeautomation] - [#8492]) ([knx docs]) +- Expose all components on hass [Concept] ([@balloob] - [#8490]) ([light docs]) +- Add bind_hass to components ([@balloob] - [#8502]) +- Persistent notification import ([@balloob] - [#8507]) +- Added additional attributes to OwnTracks device_tracker ([@binarybucks] - [#8503]) ([device_tracker.owntracks docs]) +- Added sensor state rounding ([@fronzbot] - [#8499]) ([sensor.pi_hole docs]) +- fix for a bug introduced with media support in #8282 ([@MikeChristianson] - [#8513]) ([notify.twitter docs]) +- handle timeout errors without logging.exception when updating hue lights; double quotes in log msgs ([@azogue] - [#8524]) ([light.hue docs]) +- Remove deprecated automation keywords ([@amelchio] - [#8510]) ([automation.state docs]) ([automation.time docs]) (breaking change) +- Citybikes: Allow None as result for empty slots ([@janLo] - [#8528]) ([sensor.citybikes docs]) +- Return a 0 temperature value when none is found ([@phil-lavin] - [#8518]) ([climate.maxcube docs]) +- Fix #6469 and #6828 ([@titilambert] - [#8537]) ([sensor.hydroquebec docs]) +- Update docstrings ([@fabaff] - [#8536]) +- Upgrade TwitterAPI to 2.4.6 ([@fabaff] - [#8535]) ([notify.twitter docs]) +- Decora: Fix set brightness and improve reconnection ([@titilambert] - [#8522]) ([light.decora docs]) +- Initial support for Google Wifi/OnHub ([@fronzbot] - [#8485]) ([sensor.google_wifi docs]) (new-platform) +- Fix exception dlib_face_identify when image is not recognized by face_recognition module ([@tchellomello] - [#8552]) ([image_processing.dlib_face_identify docs]) +- [media_extractor] Add support for custom stream queries for media_extractor ([@minchik] - [#8538]) ([media_extractor docs]) +- Report Harmony remote off if state is unknown ([@jawilson] - [#8547]) ([remote.harmony docs]) +- Upgrade the alarmdecoder dependency library from 0.12.1 to 0.12.3. ([@viswa-swami] - [#8542]) ([alarmdecoder docs]) +- turn_on_action and turn_off_action with script syntax ([@azogue] - [#8558]) ([media_player.kodi docs]) +- Extends Pi-hole sensor to support the new sensors: ([@tchellomello] - [#8549]) ([sensor.pi_hole docs]) +- Support for Wink Switch and Light groups also fix fan speed selection ([@w1ll1am23] - [#8501]) ([wink docs]) ([fan.wink docs]) ([light.wink docs]) ([switch.wink docs]) +- Added a service to write to KNX group addressed including documentation ([@open-homeautomation] - [#8491]) ([knx docs]) +- Handle manual edits to emulated_hue_ids.json ([@jawilson] - [#8560]) ([emulated_hue docs]) +- Enhance python_script to support "_getitem_" ([@sdague] - [#8541]) ([python_script docs]) +- Update persistent deps dir version in config.py ([@balloob] - [#8479]) +- Xiaomi gw support ([@danielhiversen] - [#8555]) ([xiaomi docs]) ([binary_sensor.xiaomi docs]) ([cover.xiaomi docs]) ([light.xiaomi docs]) ([sensor.xiaomi docs]) ([switch.xiaomi docs]) (new-platform) +- fix #8263 corrected Adafruit DHT library version from 1.3.0 to 1.3.2 ([@namadori] - [#8562]) ([sensor.dht docs]) +- xiaomi bug fix ([@danielhiversen] - [#8576]) ([binary_sensor.xiaomi docs]) +- Bumped python-simplisafe version ([@bachya] - [#8578]) ([alarm_control_panel.simplisafe docs]) +- Added Time Remaining and Time Elapsed sensors for octoprint ([@w1ll1am23] - [#8581]) ([sensor.octoprint docs]) +- upgade xiaomi lib to 0.2 ([@danielhiversen] - [#8584]) ([xiaomi docs]) +- Device support for different new sensors of the xiaomi aqara gateway ([@syssi] - [#8577]) ([xiaomi docs]) ([binary_sensor.xiaomi docs]) ([sensor.xiaomi docs]) ([switch.xiaomi docs]) +- Extends Fitbit sensors to track the device battery level ([@tchellomello] - [#8583]) ([sensor.fitbit docs]) +- xiaomi binary sensor bug fix ([@danielhiversen] - [#8586]) ([binary_sensor.xiaomi docs]) +- upgrade pywebpush and PyJWT ([@perosb] - [#8588]) ([notify.html5 docs]) +- Support for Wink oauth application authorization ([@w1ll1am23] - [#8208]) ([wink docs]) (breaking change) +- Add Intent component ([@balloob] - [#8434]) ([alexa docs]) ([intent docs]) ([intent_script docs]) ([shopping_list docs]) ([snips docs]) (breaking change) (new-platform) +- Remove code in wink.py overwriting hass.data configurator ([@w1ll1am23] - [#8595]) ([wink docs]) +- bump python-mirobo version for more robust protocol handling, make the platform to update on startup ([@rytilahti] - [#8602]) ([switch.xiaomi_vacuum docs]) +- Binary sensor ping fixed for hassio ([@gollo] - [#8573]) ([binary_sensor.ping docs]) +- Simplified percent conversion, better logging ([@open-homeautomation] - [#8568]) ([sensor.knx docs]) +- make attributes in the fritzdect module easier to process ([@thomasklingbeil] - [#8436]) ([switch.fritzdect docs]) (breaking change) +- Allow set_cover_position in scenes ([@peckham] - [#8613]) +- better but still not great ([@cribbstechnologies] - [#8618]) +- Upgrade youtube_dl to 2017.7.23 ([@fabaff] - [#8617]) ([media_extractor docs]) +- Upgrade mypy to 0.520 ([@fabaff] - [#8616]) +- REST binary sensor value_template optional ([@philhawthorne] - [#8596]) ([binary_sensor.rest docs]) +- added onvif camera fix for non-virtual env installations ([@matt2005] - [#8592]) ([camera.onvif docs]) +- Cleanup old device_tracker stuff ([@pvizeli] - [#8627]) +- Add support for using credstash as a secret store ([@justin8] - [#8494]) +- Added support for default value when environment variable is missing ([@devspacenine] - [#8484]) +- Manual alarm with MQTT control ([@colinodell] - [#8257]) ([alarm_control_panel.manual_mqtt docs]) (new-platform) +- Catch and log Lyft API errors ([@armills] - [#8635]) ([sensor.lyft docs]) +- Tweak conversation/intent/shopping list ([@balloob] - [#8636]) ([conversation docs]) ([shopping_list docs]) +- Update dependencies cast + discovery ([@balloob] - [#8646]) ([media_player.cast docs]) +- Add component Light TPLink ([@gollo] - [#8643]) ([light.tplink docs]) (new-platform) +- Fixes Fitbit sensor to report battery level with the expected device ([@tchellomello] - [#8647]) ([sensor.fitbit docs]) +- Upgrade aiolifx ([@amelchio] - [#8648]) ([light.lifx docs]) +- Velbus ([@thomasdelaet] - [#8076]) ([velbus docs]) ([binary_sensor.velbus docs]) ([light.velbus docs]) (new-platform) +- Yahoo Weather update, supports forecast for more days ([@fanthos] - [#8626]) ([weather.yweather docs]) (breaking change) +- History performance improvements for single-entity requests ([@OverloadUT] - [#8632]) ([history docs]) +- Add transition support to light.zha ([@jawilson] - [#8548]) ([light.zha docs]) +- Add uk_transport component. ([@robmarkcole] - [#8600]) ([sensor.uk_transport docs]) (new-platform) +- Added support for SerenaHoneycombShades to Lutron Caseta ([@809694+kfcook] - [#8662]) ([cover.lutron_caseta docs]) +- MQTT Switch: add availability_topic for online/offline status ([@abmantis] - [#8593]) ([mqtt docs]) ([switch.mqtt docs]) +- Adding support for mapping keys to value in statsd ([@Khabi] - [#8665]) ([statsd docs]) +- Upgrade fuzzywuzzy to 0.15.1 ([@fabaff] - [#8671]) ([conversation docs]) +- Upgrade libnacl to 1.5.2 ([@fabaff] - [#8670]) ([device_tracker.owntracks docs]) +- Upgrade sqlalchemy to 1.1.12 ([@fabaff] - [#8669]) ([recorder docs]) +- Upgrade pyhomematic to 0.1.30 ([@danielperna84] - [#8673]) ([homematic docs]) +- Hass.io: logo support / timeout handling ([@pvizeli] - [#8668]) ([hassio docs]) +- Updated pysnmp to 4.3.9 ([@bgehrich] - [#8675]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) +- Fix COMMAND_CLASS_BARRIER_OPERATOR for dev branch of OpenZwave ([@firstof9] - [#8574]) ([cover docs]) ([cover.zwave docs]) (breaking change) +- Shopping List: edit name / complete status ([@balloob] - [#8666]) ([shopping_list docs]) +- Support for Wink local control ([@w1ll1am23] - [#8607]) ([wink docs]) +- Persist shopping list + clear completed ([@balloob] - [#8697]) ([shopping_list docs]) + +[#7801]: https://github.com/home-assistant/home-assistant/pull/7801 +[#8076]: https://github.com/home-assistant/home-assistant/pull/8076 +[#8208]: https://github.com/home-assistant/home-assistant/pull/8208 +[#8257]: https://github.com/home-assistant/home-assistant/pull/8257 +[#8434]: https://github.com/home-assistant/home-assistant/pull/8434 +[#8436]: https://github.com/home-assistant/home-assistant/pull/8436 +[#8479]: https://github.com/home-assistant/home-assistant/pull/8479 +[#8481]: https://github.com/home-assistant/home-assistant/pull/8481 +[#8484]: https://github.com/home-assistant/home-assistant/pull/8484 +[#8485]: https://github.com/home-assistant/home-assistant/pull/8485 +[#8490]: https://github.com/home-assistant/home-assistant/pull/8490 +[#8491]: https://github.com/home-assistant/home-assistant/pull/8491 +[#8492]: https://github.com/home-assistant/home-assistant/pull/8492 +[#8494]: https://github.com/home-assistant/home-assistant/pull/8494 +[#8499]: https://github.com/home-assistant/home-assistant/pull/8499 +[#8501]: https://github.com/home-assistant/home-assistant/pull/8501 +[#8502]: https://github.com/home-assistant/home-assistant/pull/8502 +[#8503]: https://github.com/home-assistant/home-assistant/pull/8503 +[#8507]: https://github.com/home-assistant/home-assistant/pull/8507 +[#8510]: https://github.com/home-assistant/home-assistant/pull/8510 +[#8513]: https://github.com/home-assistant/home-assistant/pull/8513 +[#8518]: https://github.com/home-assistant/home-assistant/pull/8518 +[#8522]: https://github.com/home-assistant/home-assistant/pull/8522 +[#8524]: https://github.com/home-assistant/home-assistant/pull/8524 +[#8528]: https://github.com/home-assistant/home-assistant/pull/8528 +[#8535]: https://github.com/home-assistant/home-assistant/pull/8535 +[#8536]: https://github.com/home-assistant/home-assistant/pull/8536 +[#8537]: https://github.com/home-assistant/home-assistant/pull/8537 +[#8538]: https://github.com/home-assistant/home-assistant/pull/8538 +[#8541]: https://github.com/home-assistant/home-assistant/pull/8541 +[#8542]: https://github.com/home-assistant/home-assistant/pull/8542 +[#8547]: https://github.com/home-assistant/home-assistant/pull/8547 +[#8548]: https://github.com/home-assistant/home-assistant/pull/8548 +[#8549]: https://github.com/home-assistant/home-assistant/pull/8549 +[#8552]: https://github.com/home-assistant/home-assistant/pull/8552 +[#8555]: https://github.com/home-assistant/home-assistant/pull/8555 +[#8558]: https://github.com/home-assistant/home-assistant/pull/8558 +[#8560]: https://github.com/home-assistant/home-assistant/pull/8560 +[#8562]: https://github.com/home-assistant/home-assistant/pull/8562 +[#8568]: https://github.com/home-assistant/home-assistant/pull/8568 +[#8573]: https://github.com/home-assistant/home-assistant/pull/8573 +[#8574]: https://github.com/home-assistant/home-assistant/pull/8574 +[#8576]: https://github.com/home-assistant/home-assistant/pull/8576 +[#8577]: https://github.com/home-assistant/home-assistant/pull/8577 +[#8578]: https://github.com/home-assistant/home-assistant/pull/8578 +[#8581]: https://github.com/home-assistant/home-assistant/pull/8581 +[#8583]: https://github.com/home-assistant/home-assistant/pull/8583 +[#8584]: https://github.com/home-assistant/home-assistant/pull/8584 +[#8586]: https://github.com/home-assistant/home-assistant/pull/8586 +[#8588]: https://github.com/home-assistant/home-assistant/pull/8588 +[#8592]: https://github.com/home-assistant/home-assistant/pull/8592 +[#8593]: https://github.com/home-assistant/home-assistant/pull/8593 +[#8595]: https://github.com/home-assistant/home-assistant/pull/8595 +[#8596]: https://github.com/home-assistant/home-assistant/pull/8596 +[#8600]: https://github.com/home-assistant/home-assistant/pull/8600 +[#8602]: https://github.com/home-assistant/home-assistant/pull/8602 +[#8607]: https://github.com/home-assistant/home-assistant/pull/8607 +[#8613]: https://github.com/home-assistant/home-assistant/pull/8613 +[#8616]: https://github.com/home-assistant/home-assistant/pull/8616 +[#8617]: https://github.com/home-assistant/home-assistant/pull/8617 +[#8618]: https://github.com/home-assistant/home-assistant/pull/8618 +[#8626]: https://github.com/home-assistant/home-assistant/pull/8626 +[#8627]: https://github.com/home-assistant/home-assistant/pull/8627 +[#8632]: https://github.com/home-assistant/home-assistant/pull/8632 +[#8635]: https://github.com/home-assistant/home-assistant/pull/8635 +[#8636]: https://github.com/home-assistant/home-assistant/pull/8636 +[#8643]: https://github.com/home-assistant/home-assistant/pull/8643 +[#8646]: https://github.com/home-assistant/home-assistant/pull/8646 +[#8647]: https://github.com/home-assistant/home-assistant/pull/8647 +[#8648]: https://github.com/home-assistant/home-assistant/pull/8648 +[#8662]: https://github.com/home-assistant/home-assistant/pull/8662 +[#8665]: https://github.com/home-assistant/home-assistant/pull/8665 +[#8666]: https://github.com/home-assistant/home-assistant/pull/8666 +[#8668]: https://github.com/home-assistant/home-assistant/pull/8668 +[#8669]: https://github.com/home-assistant/home-assistant/pull/8669 +[#8670]: https://github.com/home-assistant/home-assistant/pull/8670 +[#8671]: https://github.com/home-assistant/home-assistant/pull/8671 +[#8673]: https://github.com/home-assistant/home-assistant/pull/8673 +[#8675]: https://github.com/home-assistant/home-assistant/pull/8675 +[#8697]: https://github.com/home-assistant/home-assistant/pull/8697 +[@809694+kfcook]: https://github.com/809694+kfcook +[@Khabi]: https://github.com/Khabi +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MikeChristianson]: https://github.com/MikeChristianson +[@OverloadUT]: https://github.com/OverloadUT +[@abmantis]: https://github.com/abmantis +[@amelchio]: https://github.com/amelchio +[@armills]: https://github.com/armills +[@azogue]: https://github.com/azogue +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bgehrich]: https://github.com/bgehrich +[@binarybucks]: https://github.com/binarybucks +[@colinodell]: https://github.com/colinodell +[@cribbstechnologies]: https://github.com/cribbstechnologies +[@danielhiversen]: https://github.com/danielhiversen +[@danielperna84]: https://github.com/danielperna84 +[@devspacenine]: https://github.com/devspacenine +[@fabaff]: https://github.com/fabaff +[@fanthos]: https://github.com/fanthos +[@firstof9]: https://github.com/firstof9 +[@fronzbot]: https://github.com/fronzbot +[@gollo]: https://github.com/gollo +[@janLo]: https://github.com/janLo +[@jawilson]: https://github.com/jawilson +[@justin8]: https://github.com/justin8 +[@matt2005]: https://github.com/matt2005 +[@minchik]: https://github.com/minchik +[@namadori]: https://github.com/namadori +[@open-homeautomation]: https://github.com/open-homeautomation +[@peckham]: https://github.com/peckham +[@perosb]: https://github.com/perosb +[@phil-lavin]: https://github.com/phil-lavin +[@philhawthorne]: https://github.com/philhawthorne +[@pvizeli]: https://github.com/pvizeli +[@robmarkcole]: https://github.com/robmarkcole +[@rytilahti]: https://github.com/rytilahti +[@sdague]: https://github.com/sdague +[@syssi]: https://github.com/syssi +[@tchellomello]: https://github.com/tchellomello +[@thomasdelaet]: https://github.com/thomasdelaet +[@thomasklingbeil]: https://github.com/thomasklingbeil +[@titilambert]: https://github.com/titilambert +[@viswa-swami]: https://github.com/viswa-swami +[@w1ll1am23]: https://github.com/w1ll1am23 +[alarm_control_panel.manual_mqtt docs]: https://home-assistant.io/components/alarm_control_panel.manual_mqtt/ +[alarm_control_panel.simplisafe docs]: https://home-assistant.io/components/alarm_control_panel.simplisafe/ +[alarmdecoder docs]: https://home-assistant.io/components/alarmdecoder/ +[alexa docs]: https://home-assistant.io/components/alexa/ +[automation.state docs]: https://home-assistant.io/docs/automation/trigger/#state-trigger +[automation.time docs]: https://home-assistant.io/docs/automation/trigger/#time-trigger +[binary_sensor.ping docs]: https://home-assistant.io/components/binary_sensor.ping/ +[binary_sensor.rest docs]: https://home-assistant.io/components/binary_sensor.rest/ +[binary_sensor.velbus docs]: https://home-assistant.io/components/binary_sensor.velbus/ +[binary_sensor.xiaomi docs]: https://home-assistant.io/components/binary_sensor.xiaomi/ +[camera.onvif docs]: https://home-assistant.io/components/camera.onvif/ +[climate.maxcube docs]: https://home-assistant.io/components/climate.maxcube/ +[conversation docs]: https://home-assistant.io/components/conversation/ +[cover docs]: https://home-assistant.io/components/cover/ +[cover.lutron_caseta docs]: https://home-assistant.io/components/cover.lutron_caseta/ +[cover.xiaomi docs]: https://home-assistant.io/components/cover.xiaomi/ +[cover.zwave docs]: https://home-assistant.io/components/cover.zwave/ +[device_tracker.owntracks docs]: https://home-assistant.io/components/device_tracker.owntracks/ +[device_tracker.snmp docs]: https://home-assistant.io/components/device_tracker.snmp/ +[emulated_hue docs]: https://home-assistant.io/components/emulated_hue/ +[fan.wink docs]: https://home-assistant.io/components/fan.wink/ +[hassio docs]: https://home-assistant.io/hassio/ +[history docs]: https://home-assistant.io/components/history/ +[homematic docs]: https://home-assistant.io/components/homematic/ +[image_processing.dlib_face_identify docs]: https://home-assistant.io/components/image_processing.dlib_face_identify/ +[intent docs]: https://home-assistant.io/developers/intent/ +[intent_script docs]: https://home-assistant.io/components/intent_script/ +[knx docs]: https://home-assistant.io/components/knx/ +[light docs]: https://home-assistant.io/components/light/ +[light.decora docs]: https://home-assistant.io/components/light.decora/ +[light.hue docs]: https://home-assistant.io/components/light.hue/ +[light.lifx docs]: https://home-assistant.io/components/light.lifx/ +[light.tplink docs]: https://home-assistant.io/components/light.tplink/ +[light.velbus docs]: https://home-assistant.io/components/light.velbus/ +[light.wink docs]: https://home-assistant.io/components/light.wink/ +[light.xiaomi docs]: https://home-assistant.io/components/light.xiaomi/ +[light.zha docs]: https://home-assistant.io/components/light.zha/ +[media_extractor docs]: https://home-assistant.io/components/media_extractor/ +[media_player.cast docs]: https://home-assistant.io/components/media_player.cast/ +[media_player.kodi docs]: https://home-assistant.io/components/media_player.kodi/ +[mqtt docs]: https://home-assistant.io/components/mqtt/ +[notify.html5 docs]: https://home-assistant.io/components/notify.html5/ +[notify.twitter docs]: https://home-assistant.io/components/notify.twitter/ +[python_script docs]: https://home-assistant.io/components/python_script/ +[recorder docs]: https://home-assistant.io/components/recorder/ +[remote.harmony docs]: https://home-assistant.io/components/remote.harmony/ +[sensor.citybikes docs]: https://home-assistant.io/components/sensor.citybikes/ +[sensor.dht docs]: https://home-assistant.io/components/sensor.dht/ +[sensor.fitbit docs]: https://home-assistant.io/components/sensor.fitbit/ +[sensor.google_wifi docs]: https://home-assistant.io/components/sensor.google_wifi/ +[sensor.hydroquebec docs]: https://home-assistant.io/components/sensor.hydroquebec/ +[sensor.knx docs]: https://home-assistant.io/components/sensor.knx/ +[sensor.lyft docs]: https://home-assistant.io/components/sensor.lyft/ +[sensor.octoprint docs]: https://home-assistant.io/components/sensor.octoprint/ +[sensor.pi_hole docs]: https://home-assistant.io/components/sensor.pi_hole/ +[sensor.snmp docs]: https://home-assistant.io/components/sensor.snmp/ +[sensor.uk_transport docs]: https://home-assistant.io/components/sensor.uk_transport/ +[sensor.xiaomi docs]: https://home-assistant.io/components/sensor.xiaomi/ +[shopping_list docs]: https://home-assistant.io/components/shopping_list/ +[snips docs]: https://home-assistant.io/components/snips/ +[statsd docs]: https://home-assistant.io/components/statsd/ +[switch.fritzdect docs]: https://home-assistant.io/components/switch.fritzdect/ +[switch.mqtt docs]: https://home-assistant.io/components/switch.mqtt/ +[switch.wink docs]: https://home-assistant.io/components/switch.wink/ +[switch.xiaomi docs]: https://home-assistant.io/components/switch.xiaomi/ +[switch.xiaomi_vacuum docs]: https://home-assistant.io/components/switch.xiaomi_vacuum/ +[velbus docs]: https://home-assistant.io/components/velbus/ +[weather.yweather docs]: https://home-assistant.io/components/weather.yweather/ +[wink docs]: https://home-assistant.io/components/wink/ +[xiaomi docs]: https://home-assistant.io/components/xiaomi/ +[forum]: https://community.home-assistant.io/ +[issue]: https://github.com/home-assistant/home-assistant/issues +[discord]: https://discord.gg/c5DvZ4e +[#8682]: https://github.com/home-assistant/home-assistant/pull/8682 +[#8699]: https://github.com/home-assistant/home-assistant/pull/8699 +[#8704]: https://github.com/home-assistant/home-assistant/pull/8704 +[#8706]: https://github.com/home-assistant/home-assistant/pull/8706 +[#8708]: https://github.com/home-assistant/home-assistant/pull/8708 +[#8710]: https://github.com/home-assistant/home-assistant/pull/8710 +[#8716]: https://github.com/home-assistant/home-assistant/pull/8716 +[#8732]: https://github.com/home-assistant/home-assistant/pull/8732 +[#8738]: https://github.com/home-assistant/home-assistant/pull/8738 +[#8754]: https://github.com/home-assistant/home-assistant/pull/8754 +[#8755]: https://github.com/home-assistant/home-assistant/pull/8755 +[@n8henrie]: https://github.com/n8henrie +[light.tradfri docs]: https://home-assistant.io/components/light.tradfri/ +[media_player.pioneer docs]: https://home-assistant.io/components/media_player.pioneer/ +[telegram_bot.webhooks docs]: https://home-assistant.io/components/telegram_bot.webhooks/ +[zwave docs]: https://home-assistant.io/components/zwave/ diff --git a/source/_posts/2017-08-01-hasspodcast-ep-5.markdown b/source/_posts/2017-08-01-hasspodcast-ep-5.markdown new file mode 100644 index 00000000000..9df9be08c7a --- /dev/null +++ b/source/_posts/2017-08-01-hasspodcast-ep-5.markdown @@ -0,0 +1,20 @@ +--- +layout: post +title: "Home Assistant Podcast #5" +description: "We cover off AppDaemon/HADashboard and all the fun stuff introduced in 0.49 and 0.50" +date: 2017-08-01 00:01:00 +0000 +date_formatted: "August 1, 2017" +author: Phil Hawthorne +author_twitter: philhawthorne +comments: true +categories: Media +og_image: /images/hasspodcast.jpg +--- + +We cover off AppDaemon/HADashboard and all the fun stuff introduced in 0.49 and 0.50. + +Show notes available on the [Home Assistant Podcast Website](https://hasspodcast.io/ha005/) + +[Listen online][episode] + +[episode]: https://hasspodcast.io/ha005/ diff --git a/source/_posts/2017-08-12-release-51.markdown b/source/_posts/2017-08-12-release-51.markdown new file mode 100644 index 00000000000..36b32d9ad93 --- /dev/null +++ b/source/_posts/2017-08-12-release-51.markdown @@ -0,0 +1,466 @@ +--- +layout: post +title: "0.51: Massive history speed up, finished automation editor and official vacuum cleaner support" +description: "Lots of frontend bugs have been squashed, the automation editor now supports all triggers and actions and vacuum cleaners are now an official component." +date: 2017-08-12 00:11:05 +date_formatted: "August 12, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2017-08-0.51/components.png +--- + + + +

    This release has to do a one time database migration which can take a long time on big databases (20 minutes). During this time the frontend will not work. Do not stop Home Assistant while it is in progress.

    + +Release 0.51 is around the corner and it contains some really great updates. + +## {% linkable_title Database speed up %} + +The first one is more amazing database updates [#8748] by [@OverloadUT]. Every query that has been tested executes in well under 1 second, even on a RPi using MySQL with 6 million rows and around 300 entities. This is true even when you're getting an unrealistically huge date range! + +Updating the database will take some time when you start Home Assistant. During that time, the Home Assistant frontend is not accessible. Please let it complete and do not turn Home Assistant off. + +## {% linkable_title Frontend update %} + +We have finished the migration of our frontend to be powered by Polymer 2. This has given us a big speed boost on Safari/iOS devices and has fixed a wide range of bugs. + +We have also finished the automation editor. All triggers and actions are now implemented and so are most conditions (missing are `and`, `or`). The automation editor is also no longer Chrome only, it can now also be used in Safari. + +Another change to the frontend is that we have reorganized the panels. The Z-Wave and automation configuration panels have been merged into the configuration panel. + +
    + +
    + +## {% linkable_title Vacuum cleaners %} + +As we have seen more vacuum cleaners land in Home Assistant, it was time to create an official component for them. That's why [@azogue] introduced the new vacuum cleaner component in [#8623]. This allows first class integration of vacuum cleaners in Home Assistant. Out of the box we will have Dyson, Xiamo and Roomba as supported platforms. + +## {% linkable_title New Platforms %} + +- Added Lutron Caseta Scene Support ([@809694+kfcook] - [#8690]) ([lutron_caseta docs]) ([scene.lutron_caseta docs]) (new-platform) +- New media_player platform for Russound devices using the RIO protocol ([@wickerwaka] - [#8448]) ([media_player.russound_rio docs]) (new-platform) +- New component: bluesound ([@thrawnarn] - [#7192]) ([media_player.bluesound docs]) (new-platform) +- Add mochad light component ([@mtreinish] - [#8476]) ([light.mochad docs]) (new-platform) +- geizhals sensor component ([@JulianKahnert] - [#8458]) ([sensor.geizhals docs]) (new-platform) +- Xiaomi vacuum as platform of new `vacuum` component derived from ToggleEntity, and services ([@azogue] - [#8623]) (breaking change) (new-platform) +- Wi-Fi enabled Roomba support ([@pschmitt] - [#8825]) ([vacuum.roomba docs]) (new-platform) +- Add support to Dyson 360 Eye robot vacuum using new vacuum platform ([@CharlesBlonde] - [#8852]) ([dyson docs]) ([vacuum docs]) ([fan.dyson docs]) ([sensor.dyson docs]) ([vacuum.dyson docs]) (new-platform) +- Add Initial Mailbox panel and sensor ([@PhracturedBlue] - [#8233]) ([asterisk_mbox docs]) (new-platform) +- Add Leviton Decora Smart WiFi Device Platform ([@tlyakhov] - [#8529]) ([light.decora_wifi docs]) (new-platform) +- Add RainMachine switch platform ([@bachya] - [#8827]) ([switch.rainmachine docs]) (new-platform) +- Add new device tracker for Huawei Routers. ([@abmantis] - [#8488]) ([device_tracker.huawei_router docs]) (new-platform) +- Add Shodan sensor ([@fabaff] - [#8902]) ([sensor.shodan docs]) (new-platform) + +## {% linkable_title Release 0.51.1 - August 12 %} + + - Fixed a bug in the automation editor that would break if no conditions available in the config file. ([@balloob]) + +## {% linkable_title Release 0.51.2 - August 14 %} + +- Fix zwave power_consumption attribute ([@andrey-git] - [#8968]) ([zwave docs]) +- Turn foscam verbose mode off ([@andrey-git] - [#8967]) ([camera.foscam docs]) +- fix stack trace in pushbullet ([@Danielhiversen] - [#8965]) ([notify.pushbullet docs]) +- Harmoney remote: Fix call to ha_send_commands ([@MartinHjelmare] - [#8956]) ([remote.harmony docs]) +- fix DeviceException handling when updating xiaomi vacuum ([@azogue] - [#8954]) ([vacuum.xiaomi docs]) +- Sabnzbd: do not assume discovery info is a dict ([@balloob] - [#8951]) ([sensor.sabnzbd docs]) +- Fix login button ([@balloob]) +- Add workaround for broken toggles in Safari ([@balloob]) +- Fix weblink opening twice ([@azogue]) + +## {% linkable_title If you need help... %} +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} +Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. + + +## {% linkable_title Breaking Changes %} + +- Efergy sensors: change units from KW to W ([@emlt] - [#8761]) ([sensor.efergy docs]) (breaking change) +- Xiaomi vacuum is now a platform of new `vacuum` component derived from ToggleEntity, and services ([@azogue] - [#8623]) (breaking change) (new-platform) + +```yaml +vacuum: +- platform: xiaomi + name: Vacuum cleaner + host: !secret xiaomi_vacuum_robot_ip + token: !secret xiaomi_vacuum_robot_token +``` + +## {% linkable_title All changes %} + +- Upgrade pushbullet.py to 0.11.0 ([@fabaff] - [#8691]) ([notify.pushbullet docs]) +- Upgrade mypy to 0.521 ([@fabaff] - [#8692]) +- Added Lutron Caseta Scene Support ([@809694+kfcook] - [#8690]) ([lutron_caseta docs]) ([scene.lutron_caseta docs]) (new-platform) +- Remove deprecated host and ssl logic from Kodi ([@armills] - [#8700]) ([media_player.kodi docs]) +- Remove deprecated substitute interfaces ([@armills] - [#8701]) ([binary_sensor docs]) ([media_player docs]) +- Remove deprecated sensor_class config options ([@armills] - [#8702]) +- directv: add configuration glue for Genie slaves ([@sielicki] - [#8713]) ([media_player.directv docs]) +- bump python-telegram-bot to 7.0.1 for fully support Bot API 3.2 ([@azogue] - [#8715]) ([telegram_bot docs]) +- Add proxy support for telegram_bot ([@azogue] - [#8717]) ([telegram_bot docs]) +- python-insteonplm module version bump ([@nugget] - [#8736]) ([insteon_plm docs]) +- New media_player platform for Russound devices using the RIO protocol ([@wickerwaka] - [#8448]) ([media_player.russound_rio docs]) (new-platform) +- Add toggle to remotes ([@alanfischer] - [#8483]) ([remote docs]) ([remote.apple_tv docs]) ([remote.harmony docs]) ([remote.itach docs]) +- added invert_state optional parameter ([@gwhiteCL] - [#8695]) ([cover.rpi_gpio docs]) +- buienradar dates tz-aware ([@mjj4791] - [#8767]) ([sensor.buienradar docs]) ([weather.buienradar docs]) +- Change units from KW to W ([@emlt] - [#8761]) ([sensor.efergy docs]) (breaking change) +- Clean up remote component ([@MartinHjelmare] - [#8728]) ([remote docs]) ([remote.apple_tv docs]) ([remote.harmony docs]) ([remote.itach docs]) ([remote.kira docs]) +- Wink discovery ([@w1ll1am23] - [#8739]) ([wink docs]) +- Enable/Disable Motion detection for Foscam Cameras ([@viswa-swami] - [#8582]) ([camera.foscam docs]) +- Allow sonos to select playlists as a source ([@mcolyer] - [#8258]) ([media_player.sonos docs]) +- mpd improvements ([@StevenLooman] - [#8655]) ([media_player.mpd docs]) +- Add support for file attachments in pushbullet ([@tsvi] - [#8763]) ([notify.pushbullet docs]) +- Honeywell fixes and improvements ([@dansarginson] - [#8756]) ([climate.honeywell docs]) +- Catch exception (fixes #8724) ([@fabaff] - [#8731]) ([sensor.google_wifi docs]) +- use updated osram lightify 1.0.6 component, including bugfix allowing more than 27 devices ([@tfriedel] - [#8774]) ([light.osramlightify docs]) +- flux_led: support for property "available" ([@pezinek] - [#8764]) ([light.flux_led docs]) +- New component: bluesound ([@thrawnarn] - [#7192]) ([media_player.bluesound docs]) (new-platform) +- Add 'forecast' ability to yr weather sensor ([@tinloaf] - [#8650]) ([sensor.yr docs]) +- Feature alexa launch request ([@steverhoades] - [#8730]) ([alexa docs]) +- Fixes UnboundLocalError: local variable 'setting' referenced before assignment ([@syssi] - [#8782]) ([climate.tado docs]) +- Upgrade pyasn1 to 0.3.1 and pyasn1-modules to 0.0.10 ([@fabaff] - [#8787]) ([notify.xmpp docs]) +- Upgrade sphinx-autodoc-typehints to 1.2.1 ([@fabaff] - [#8783]) +- Improvements (configuration and validation) ([@fabaff] - [#8785]) ([sensor.yr docs]) +- Fix referencing unset variable in tado climate component (causes update to fail when tado zone is in manual mode) ([@luukd] - [#8723]) ([climate.tado docs]) +- mqtt switch: add voluptuous for availability topic ([@abmantis] - [#8797]) ([switch.mqtt docs]) +- Add mochad light component ([@mtreinish] - [#8476]) ([light.mochad docs]) (new-platform) +- Update numpy 1.13.1 ([@pvizeli] - [#8806]) ([image_processing.opencv docs]) +- Upgrade aiohttp to 2.2.4 ([@fabaff] - [#8805]) +- Catch divide by zero errors when a sleep type is 0 ([@mezz64] - [#8809]) ([sensor.eight_sleep docs]) +- InfluxDB component improvements ([@hageltech] - [#8633]) ([influxdb docs]) +- When Sonos gets a tts source - dont't show an image ([@andrey-git] - [#8777]) ([media_player.sonos docs]) +- Polymer 2 ([@balloob] - [#8815]) ([group docs]) +- geizhals sensor component ([@JulianKahnert] - [#8458]) ([sensor.geizhals docs]) (new-platform) +- Xiaomi vacuum as platform of new `vacuum` component derived from ToggleEntity, and services ([@azogue] - [#8623]) (breaking change) (new-platform) +- Update yweather.py ([@fanthos] - [#8820]) ([weather.yweather docs]) +- Make HA discover sabnzbd and add it to the Configurator ([@Hellowlol] - [#8634]) ([sensor.sabnzbd docs]) +- Fix Dyson sensors if devices are configured without standby monitoring. Fixes #8569 ([@CharlesBlonde] - [#8826]) ([dyson docs]) ([fan.dyson docs]) ([sensor.dyson docs]) +- Block dependencies that depend on enum34 ([@balloob] - [#8698]) +- Upgrade aiohttp to 2.2.5 ([@fabaff] - [#8828]) +- History query and schema optimizations for huge performance boost ([@OverloadUT] - [#8748]) ([history docs]) (breaking change) +- Update xiaomi vacuum tests and include in coverage ([@azogue] - [#8845]) ([vacuum docs]) ([vacuum.xiaomi docs]) +- Egardia ([@jeroenterheerdt] - [#8389]) +- Do not call update() in constructor. ([@fabaff] - [#8837]) ([sensor.systemmonitor docs]) +- Upgrade sendgrid to 4.2.1 ([@fabaff] - [#8839]) +- Do not call update() in constructor ([@fabaff] - [#8840]) ([sensor.vasttrafik docs]) +- Make 'monitored_conditions' optional ([@fabaff] - [#8843]) ([sensor.radarr docs]) +- Do not call update() in constructor ([@fabaff] - [#8849]) ([sensor.synologydsm docs]) +- Make 'monitored_conditions' optional ([@fabaff] - [#8848]) ([sensor.sonarr docs]) +- Do not call update() in constructor ([@fabaff] - [#8847]) ([sensor.pocketcasts docs]) +- Catch ConnectionRefusedError ([@fabaff] - [#8844]) ([sensor.supervisord docs]) +- Upgrade sqlalchemy to 1.1.13 ([@fabaff] - [#8850]) ([recorder docs]) +- Upgrade pylast to 1.9.0 ([@fabaff] - [#8854]) ([sensor.lastfm docs]) +- Wi-Fi enabled Roomba support ([@pschmitt] - [#8825]) ([vacuum.roomba docs]) (new-platform) +- Add support to Dyson 360 Eye robot vacuum using new vacuum platform ([@CharlesBlonde] - [#8852]) ([dyson docs]) ([vacuum docs]) ([fan.dyson docs]) ([sensor.dyson docs]) ([vacuum.dyson docs]) (new-platform) +- Upgrade pyasn1 to 0.3.2 and pyasn1-modules to 0.0.11 ([@fabaff] - [#8856]) ([notify.xmpp docs]) +- Allow to set coordinates ([@fabaff] - [#8858]) ([sensor.zamg docs]) ([weather.zamg docs]) +- Added rounding to Google Wifi ([@fronzbot] - [#8866]) ([sensor.google_wifi docs]) +- Fix off_delay for zwave trigger sensors ([@turbokongen] - [#8864]) ([zwave docs]) ([binary_sensor.zwave docs]) +- Do not use pychromecast.Chromecast for Cast Groups ([@foxel] - [#8786]) ([media_player.cast docs]) +- Allow get local ip to work without internet ([@balloob] - [#8855]) +- Do not call update() in constructor ([@fabaff] - [#8859]) +- Add new service `clean_spot` to vacuums ([@azogue] - [#8862]) ([vacuum docs]) ([vacuum.xiaomi docs]) +- Warn instead of raise on duplicate YAML key ([@balloob] - [#8834]) +- Add Initial Mailbox panel and sensor ([@PhracturedBlue] - [#8233]) ([asterisk_mbox docs]) (new-platform) +- Add Leviton Decora Smart WiFi Device Platform ([@tlyakhov] - [#8529]) ([light.decora_wifi docs]) (new-platform) +- Consolidate config panels ([@balloob] - [#8857]) ([automation docs]) ([zwave docs]) +- Fix spelling error and update link ([@Klikini] - [#8869]) +- Implement Roomba fan speed ([@pschmitt] - [#8863]) ([vacuum.roomba docs]) +- Add nuki lock'n'go and unlatch services and add attributes ([@pschmitt] - [#8687]) ([lock.nuki docs]) +- RFLink: Add send_command service ([@leppa] - [#8876]) ([rflink docs]) +- Do not call update() in constructor ([@fabaff] - [#8881]) ([binary_sensor.rest docs]) ([sensor.rest docs]) +- Add RainMachine switch platform ([@bachya] - [#8827]) ([switch.rainmachine docs]) (new-platform) +- Allow usage of colorlog 3.0.1 ([@fabaff] - [#8885]) +- Change level ([@fabaff] - [#8883]) ([sensor.statistics docs]) +- Upgrade youtube_dl to 2017.8.6 ([@fabaff] - [#8880]) ([media_extractor docs]) +- Fix media_extractor for some sites ([@Spirit-X] - [#8887]) ([media_extractor docs]) +- Do not call update() in constructor ([@fabaff] - [#8878]) +- Do not call update() in constructor ([@fabaff] - [#8892]) ([binary_sensor.command_line docs]) ([sensor.command_line docs]) ([switch.command_line docs]) +- Changed Pi-hole graphs from stacked bar to line ([@bachya] - [#8896]) ([sensor.pi_hole docs]) +- Add longer text strings to mailbox demo to test string truncation ([@PhracturedBlue] - [#8893]) ([mailbox.demo docs]) ([mailbox.demo.txt docs]) +- added support for setting/getting position of lutron caseta covers ([@809694+kfcook] - [#8898]) ([cover.lutron_caseta docs]) +- Fix for Neato D3 Connected state obtaining ([@karlkar] - [#8817]) ([sensor.neato docs]) ([switch.neato docs]) +- Update simplisafe-python version ([@w1ll1am23] - [#8908]) ([alarm_control_panel.simplisafe docs]) +- LIFX: improve performance of multi-light transitions ([@amelchio] - [#8873]) ([light.lifx docs]) +- Support media position and media duration (will display progressbar in ui) ([@molobrakos] - [#8904]) ([media_player.squeezebox docs]) +- Add new device tracker for Huawei Routers. ([@abmantis] - [#8488]) ([device_tracker.huawei_router docs]) (new-platform) +- Add Shodan sensor ([@fabaff] - [#8902]) ([sensor.shodan docs]) (new-platform) +- Added possibilities to use template in the command_line sensor ([@mar-schmidt] - [#8505]) ([sensor.command_line docs]) +- Honor PEP8 naming convention ([@fabaff] - [#8909]) ([updater docs]) +- Remove not needed call to update ([@MartinHjelmare] - [#8930]) ([switch.rachio docs]) +- fixing emulated hue issue and testing it ([@cribbstechnologies] - [#8928]) ([emulated_hue docs]) +- Update roombapy to 1.3.1 to avoid installing all the mapping dependencies ([@pschmitt] - [#8925]) ([vacuum.roomba docs]) +- Update python-wink version to fix Dome water valve bug. ([@w1ll1am23] - [#8923]) ([wink docs]) ([switch.wink docs]) +- Fix SET_TEMPERATURE_SCHEMA in climate component ([@MartinHjelmare] - [#8879]) ([climate docs]) + +[#7192]: https://github.com/home-assistant/home-assistant/pull/7192 +[#8233]: https://github.com/home-assistant/home-assistant/pull/8233 +[#8258]: https://github.com/home-assistant/home-assistant/pull/8258 +[#8389]: https://github.com/home-assistant/home-assistant/pull/8389 +[#8448]: https://github.com/home-assistant/home-assistant/pull/8448 +[#8458]: https://github.com/home-assistant/home-assistant/pull/8458 +[#8476]: https://github.com/home-assistant/home-assistant/pull/8476 +[#8483]: https://github.com/home-assistant/home-assistant/pull/8483 +[#8488]: https://github.com/home-assistant/home-assistant/pull/8488 +[#8505]: https://github.com/home-assistant/home-assistant/pull/8505 +[#8529]: https://github.com/home-assistant/home-assistant/pull/8529 +[#8582]: https://github.com/home-assistant/home-assistant/pull/8582 +[#8623]: https://github.com/home-assistant/home-assistant/pull/8623 +[#8633]: https://github.com/home-assistant/home-assistant/pull/8633 +[#8634]: https://github.com/home-assistant/home-assistant/pull/8634 +[#8650]: https://github.com/home-assistant/home-assistant/pull/8650 +[#8655]: https://github.com/home-assistant/home-assistant/pull/8655 +[#8687]: https://github.com/home-assistant/home-assistant/pull/8687 +[#8690]: https://github.com/home-assistant/home-assistant/pull/8690 +[#8691]: https://github.com/home-assistant/home-assistant/pull/8691 +[#8692]: https://github.com/home-assistant/home-assistant/pull/8692 +[#8695]: https://github.com/home-assistant/home-assistant/pull/8695 +[#8698]: https://github.com/home-assistant/home-assistant/pull/8698 +[#8700]: https://github.com/home-assistant/home-assistant/pull/8700 +[#8701]: https://github.com/home-assistant/home-assistant/pull/8701 +[#8702]: https://github.com/home-assistant/home-assistant/pull/8702 +[#8713]: https://github.com/home-assistant/home-assistant/pull/8713 +[#8715]: https://github.com/home-assistant/home-assistant/pull/8715 +[#8717]: https://github.com/home-assistant/home-assistant/pull/8717 +[#8723]: https://github.com/home-assistant/home-assistant/pull/8723 +[#8728]: https://github.com/home-assistant/home-assistant/pull/8728 +[#8730]: https://github.com/home-assistant/home-assistant/pull/8730 +[#8731]: https://github.com/home-assistant/home-assistant/pull/8731 +[#8736]: https://github.com/home-assistant/home-assistant/pull/8736 +[#8739]: https://github.com/home-assistant/home-assistant/pull/8739 +[#8748]: https://github.com/home-assistant/home-assistant/pull/8748 +[#8756]: https://github.com/home-assistant/home-assistant/pull/8756 +[#8761]: https://github.com/home-assistant/home-assistant/pull/8761 +[#8763]: https://github.com/home-assistant/home-assistant/pull/8763 +[#8764]: https://github.com/home-assistant/home-assistant/pull/8764 +[#8767]: https://github.com/home-assistant/home-assistant/pull/8767 +[#8774]: https://github.com/home-assistant/home-assistant/pull/8774 +[#8777]: https://github.com/home-assistant/home-assistant/pull/8777 +[#8782]: https://github.com/home-assistant/home-assistant/pull/8782 +[#8783]: https://github.com/home-assistant/home-assistant/pull/8783 +[#8785]: https://github.com/home-assistant/home-assistant/pull/8785 +[#8786]: https://github.com/home-assistant/home-assistant/pull/8786 +[#8787]: https://github.com/home-assistant/home-assistant/pull/8787 +[#8797]: https://github.com/home-assistant/home-assistant/pull/8797 +[#8805]: https://github.com/home-assistant/home-assistant/pull/8805 +[#8806]: https://github.com/home-assistant/home-assistant/pull/8806 +[#8809]: https://github.com/home-assistant/home-assistant/pull/8809 +[#8815]: https://github.com/home-assistant/home-assistant/pull/8815 +[#8817]: https://github.com/home-assistant/home-assistant/pull/8817 +[#8820]: https://github.com/home-assistant/home-assistant/pull/8820 +[#8825]: https://github.com/home-assistant/home-assistant/pull/8825 +[#8826]: https://github.com/home-assistant/home-assistant/pull/8826 +[#8827]: https://github.com/home-assistant/home-assistant/pull/8827 +[#8828]: https://github.com/home-assistant/home-assistant/pull/8828 +[#8834]: https://github.com/home-assistant/home-assistant/pull/8834 +[#8837]: https://github.com/home-assistant/home-assistant/pull/8837 +[#8839]: https://github.com/home-assistant/home-assistant/pull/8839 +[#8840]: https://github.com/home-assistant/home-assistant/pull/8840 +[#8843]: https://github.com/home-assistant/home-assistant/pull/8843 +[#8844]: https://github.com/home-assistant/home-assistant/pull/8844 +[#8845]: https://github.com/home-assistant/home-assistant/pull/8845 +[#8847]: https://github.com/home-assistant/home-assistant/pull/8847 +[#8848]: https://github.com/home-assistant/home-assistant/pull/8848 +[#8849]: https://github.com/home-assistant/home-assistant/pull/8849 +[#8850]: https://github.com/home-assistant/home-assistant/pull/8850 +[#8852]: https://github.com/home-assistant/home-assistant/pull/8852 +[#8854]: https://github.com/home-assistant/home-assistant/pull/8854 +[#8855]: https://github.com/home-assistant/home-assistant/pull/8855 +[#8856]: https://github.com/home-assistant/home-assistant/pull/8856 +[#8857]: https://github.com/home-assistant/home-assistant/pull/8857 +[#8858]: https://github.com/home-assistant/home-assistant/pull/8858 +[#8859]: https://github.com/home-assistant/home-assistant/pull/8859 +[#8862]: https://github.com/home-assistant/home-assistant/pull/8862 +[#8863]: https://github.com/home-assistant/home-assistant/pull/8863 +[#8864]: https://github.com/home-assistant/home-assistant/pull/8864 +[#8866]: https://github.com/home-assistant/home-assistant/pull/8866 +[#8869]: https://github.com/home-assistant/home-assistant/pull/8869 +[#8873]: https://github.com/home-assistant/home-assistant/pull/8873 +[#8876]: https://github.com/home-assistant/home-assistant/pull/8876 +[#8878]: https://github.com/home-assistant/home-assistant/pull/8878 +[#8879]: https://github.com/home-assistant/home-assistant/pull/8879 +[#8880]: https://github.com/home-assistant/home-assistant/pull/8880 +[#8881]: https://github.com/home-assistant/home-assistant/pull/8881 +[#8883]: https://github.com/home-assistant/home-assistant/pull/8883 +[#8885]: https://github.com/home-assistant/home-assistant/pull/8885 +[#8887]: https://github.com/home-assistant/home-assistant/pull/8887 +[#8892]: https://github.com/home-assistant/home-assistant/pull/8892 +[#8893]: https://github.com/home-assistant/home-assistant/pull/8893 +[#8896]: https://github.com/home-assistant/home-assistant/pull/8896 +[#8898]: https://github.com/home-assistant/home-assistant/pull/8898 +[#8902]: https://github.com/home-assistant/home-assistant/pull/8902 +[#8904]: https://github.com/home-assistant/home-assistant/pull/8904 +[#8908]: https://github.com/home-assistant/home-assistant/pull/8908 +[#8909]: https://github.com/home-assistant/home-assistant/pull/8909 +[#8923]: https://github.com/home-assistant/home-assistant/pull/8923 +[#8925]: https://github.com/home-assistant/home-assistant/pull/8925 +[#8928]: https://github.com/home-assistant/home-assistant/pull/8928 +[#8930]: https://github.com/home-assistant/home-assistant/pull/8930 +[@809694+kfcook]: https://github.com/809694+kfcook +[@CharlesBlonde]: https://github.com/CharlesBlonde +[@Hellowlol]: https://github.com/Hellowlol +[@JulianKahnert]: https://github.com/JulianKahnert +[@Klikini]: https://github.com/Klikini +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@OverloadUT]: https://github.com/OverloadUT +[@PhracturedBlue]: https://github.com/PhracturedBlue +[@Spirit-X]: https://github.com/Spirit-X +[@StevenLooman]: https://github.com/StevenLooman +[@abmantis]: https://github.com/abmantis +[@alanfischer]: https://github.com/alanfischer +[@amelchio]: https://github.com/amelchio +[@andrey-git]: https://github.com/andrey-git +[@armills]: https://github.com/armills +[@azogue]: https://github.com/azogue +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@cribbstechnologies]: https://github.com/cribbstechnologies +[@dansarginson]: https://github.com/dansarginson +[@emlt]: https://github.com/emlt +[@fabaff]: https://github.com/fabaff +[@fanthos]: https://github.com/fanthos +[@foxel]: https://github.com/foxel +[@fronzbot]: https://github.com/fronzbot +[@gwhiteCL]: https://github.com/gwhiteCL +[@hageltech]: https://github.com/hageltech +[@jeroenterheerdt]: https://github.com/jeroenterheerdt +[@karlkar]: https://github.com/karlkar +[@leppa]: https://github.com/leppa +[@luukd]: https://github.com/luukd +[@mar-schmidt]: https://github.com/mar-schmidt +[@mcolyer]: https://github.com/mcolyer +[@mezz64]: https://github.com/mezz64 +[@mjj4791]: https://github.com/mjj4791 +[@molobrakos]: https://github.com/molobrakos +[@mtreinish]: https://github.com/mtreinish +[@nugget]: https://github.com/nugget +[@pezinek]: https://github.com/pezinek +[@pschmitt]: https://github.com/pschmitt +[@pvizeli]: https://github.com/pvizeli +[@sielicki]: https://github.com/sielicki +[@steverhoades]: https://github.com/steverhoades +[@syssi]: https://github.com/syssi +[@tfriedel]: https://github.com/tfriedel +[@thrawnarn]: https://github.com/thrawnarn +[@tinloaf]: https://github.com/tinloaf +[@tlyakhov]: https://github.com/tlyakhov +[@tsvi]: https://github.com/tsvi +[@turbokongen]: https://github.com/turbokongen +[@viswa-swami]: https://github.com/viswa-swami +[@w1ll1am23]: https://github.com/w1ll1am23 +[@wickerwaka]: https://github.com/wickerwaka +[alarm_control_panel.simplisafe docs]: https://home-assistant.io/components/alarm_control_panel.simplisafe/ +[alexa docs]: https://home-assistant.io/components/alexa/ +[asterisk_mbox docs]: https://home-assistant.io/components/asterisk_mbox/ +[automation docs]: https://home-assistant.io/components/automation/ +[binary_sensor docs]: https://home-assistant.io/components/binary_sensor/ +[binary_sensor.command_line docs]: https://home-assistant.io/components/binary_sensor.command_line/ +[binary_sensor.rest docs]: https://home-assistant.io/components/binary_sensor.rest/ +[binary_sensor.zwave docs]: https://home-assistant.io/components/binary_sensor.zwave/ +[camera.foscam docs]: https://home-assistant.io/components/camera.foscam/ +[climate docs]: https://home-assistant.io/components/climate/ +[climate.honeywell docs]: https://home-assistant.io/components/climate.honeywell/ +[climate.tado docs]: https://home-assistant.io/components/climate.tado/ +[config.zwave docs]: https://home-assistant.io/components/config.zwave/ +[cover.lutron_caseta docs]: https://home-assistant.io/components/cover.lutron_caseta/ +[cover.rpi_gpio docs]: https://home-assistant.io/components/cover.rpi_gpio/ +[device_tracker.huawei_router docs]: https://home-assistant.io/components/device_tracker.huawei_router/ +[dyson docs]: https://home-assistant.io/components/dyson/ +[emulated_hue docs]: https://home-assistant.io/components/emulated_hue/ +[fan.dyson docs]: https://home-assistant.io/components/fan.dyson/ +[group docs]: https://home-assistant.io/components/group/ +[history docs]: https://home-assistant.io/components/history/ +[image_processing.opencv docs]: https://home-assistant.io/components/image_processing.opencv/ +[influxdb docs]: https://home-assistant.io/components/influxdb/ +[insteon_plm docs]: https://home-assistant.io/components/insteon_plm/ +[light.decora_wifi docs]: https://home-assistant.io/components/light.decora_wifi/ +[light.flux_led docs]: https://home-assistant.io/components/light.flux_led/ +[light.lifx docs]: https://home-assistant.io/components/light.lifx/ +[light.mochad docs]: https://home-assistant.io/components/light.mochad/ +[light.osramlightify docs]: https://home-assistant.io/components/light.osramlightify/ +[lock.nuki docs]: https://home-assistant.io/components/lock.nuki/ +[lutron_caseta docs]: https://home-assistant.io/components/lutron_caseta/ +[mailbox.demo docs]: https://home-assistant.io/components/mailbox.demo/ +[mailbox.demo.txt docs]: https://home-assistant.io/components/mailbox.demo.txt/ +[media_extractor docs]: https://home-assistant.io/components/media_extractor/ +[media_player docs]: https://home-assistant.io/components/media_player/ +[media_player.bluesound docs]: https://home-assistant.io/components/media_player.bluesound/ +[media_player.cast docs]: https://home-assistant.io/components/media_player.cast/ +[media_player.directv docs]: https://home-assistant.io/components/media_player.directv/ +[media_player.kodi docs]: https://home-assistant.io/components/media_player.kodi/ +[media_player.mpd docs]: https://home-assistant.io/components/media_player.mpd/ +[media_player.russound_rio docs]: https://home-assistant.io/components/media_player.russound_rio/ +[media_player.sonos docs]: https://home-assistant.io/components/media_player.sonos/ +[media_player.squeezebox docs]: https://home-assistant.io/components/media_player.squeezebox/ +[notify.pushbullet docs]: https://home-assistant.io/components/notify.pushbullet/ +[notify.xmpp docs]: https://home-assistant.io/components/notify.xmpp/ +[recorder docs]: https://home-assistant.io/components/recorder/ +[recorder.migration docs]: https://home-assistant.io/components/recorder.migration/ +[recorder.models docs]: https://home-assistant.io/components/recorder.models/ +[recorder.purge docs]: https://home-assistant.io/components/recorder.purge/ +[recorder.util docs]: https://home-assistant.io/components/recorder.util/ +[remote docs]: https://home-assistant.io/components/remote/ +[remote.apple_tv docs]: https://home-assistant.io/components/remote.apple_tv/ +[remote.demo docs]: https://home-assistant.io/components/remote.demo/ +[remote.harmony docs]: https://home-assistant.io/components/remote.harmony/ +[remote.itach docs]: https://home-assistant.io/components/remote.itach/ +[remote.kira docs]: https://home-assistant.io/components/remote.kira/ +[rflink docs]: https://home-assistant.io/components/rflink/ +[scene.lutron_caseta docs]: https://home-assistant.io/components/scene.lutron_caseta/ +[sensor.asterisk_mbox docs]: https://home-assistant.io/components/sensor.asterisk_mbox/ +[sensor.buienradar docs]: https://home-assistant.io/components/sensor.buienradar/ +[sensor.command_line docs]: https://home-assistant.io/components/sensor.command_line/ +[sensor.dyson docs]: https://home-assistant.io/components/sensor.dyson/ +[sensor.efergy docs]: https://home-assistant.io/components/sensor.efergy/ +[sensor.eight_sleep docs]: https://home-assistant.io/components/sensor.eight_sleep/ +[sensor.geizhals docs]: https://home-assistant.io/components/sensor.geizhals/ +[sensor.google_wifi docs]: https://home-assistant.io/components/sensor.google_wifi/ +[sensor.lastfm docs]: https://home-assistant.io/components/sensor.lastfm/ +[sensor.neato docs]: https://home-assistant.io/components/sensor.neato/ +[sensor.pi_hole docs]: https://home-assistant.io/components/sensor.pi_hole/ +[sensor.pocketcasts docs]: https://home-assistant.io/components/sensor.pocketcasts/ +[sensor.radarr docs]: https://home-assistant.io/components/sensor.radarr/ +[sensor.rest docs]: https://home-assistant.io/components/sensor.rest/ +[sensor.sabnzbd docs]: https://home-assistant.io/components/sensor.sabnzbd/ +[sensor.shodan docs]: https://home-assistant.io/components/sensor.shodan/ +[sensor.sonarr docs]: https://home-assistant.io/components/sensor.sonarr/ +[sensor.statistics docs]: https://home-assistant.io/components/sensor.statistics/ +[sensor.supervisord docs]: https://home-assistant.io/components/sensor.supervisord/ +[sensor.synologydsm docs]: https://home-assistant.io/components/sensor.synologydsm/ +[sensor.systemmonitor docs]: https://home-assistant.io/components/sensor.systemmonitor/ +[sensor.vasttrafik docs]: https://home-assistant.io/components/sensor.vasttrafik/ +[sensor.yr docs]: https://home-assistant.io/components/sensor.yr/ +[sensor.zamg docs]: https://home-assistant.io/components/sensor.zamg/ +[switch.command_line docs]: https://home-assistant.io/components/switch.command_line/ +[switch.mqtt docs]: https://home-assistant.io/components/switch.mqtt/ +[switch.neato docs]: https://home-assistant.io/components/switch.neato/ +[switch.rachio docs]: https://home-assistant.io/components/switch.rachio/ +[switch.rainmachine docs]: https://home-assistant.io/components/switch.rainmachine/ +[switch.wink docs]: https://home-assistant.io/components/switch.wink/ +[switch.xiaomi_vacuum docs]: https://home-assistant.io/components/switch.xiaomi_vacuum/ +[telegram_bot docs]: https://home-assistant.io/components/telegram_bot/ +[updater docs]: https://home-assistant.io/components/updater/ +[vacuum docs]: https://home-assistant.io/components/vacuum/ +[vacuum.demo docs]: https://home-assistant.io/components/vacuum.demo/ +[vacuum.dyson docs]: https://home-assistant.io/components/vacuum.dyson/ +[vacuum.roomba docs]: https://home-assistant.io/components/vacuum.roomba/ +[vacuum.xiaomi docs]: https://home-assistant.io/components/vacuum.xiaomi/ +[weather.buienradar docs]: https://home-assistant.io/components/weather.buienradar/ +[weather.yweather docs]: https://home-assistant.io/components/weather.yweather/ +[weather.zamg docs]: https://home-assistant.io/components/weather.zamg/ +[wink docs]: https://home-assistant.io/components/wink/ +[zwave docs]: https://home-assistant.io/components/zwave/ +[forum]: https://community.home-assistant.io/ +[issue]: https://github.com/home-assistant/home-assistant/issues +[discord]: https://discord.gg/c5DvZ4e +[#8951]: https://github.com/home-assistant/home-assistant/pull/8951 +[#8954]: https://github.com/home-assistant/home-assistant/pull/8954 +[#8956]: https://github.com/home-assistant/home-assistant/pull/8956 +[#8965]: https://github.com/home-assistant/home-assistant/pull/8965 +[#8967]: https://github.com/home-assistant/home-assistant/pull/8967 +[#8968]: https://github.com/home-assistant/home-assistant/pull/8968 +[@Danielhiversen]: https://github.com/Danielhiversen diff --git a/source/_posts/2017-08-26-release-0-52.markdown b/source/_posts/2017-08-26-release-0-52.markdown new file mode 100644 index 00000000000..c6bcb3e4860 --- /dev/null +++ b/source/_posts/2017-08-26-release-0-52.markdown @@ -0,0 +1,400 @@ +--- +layout: post +title: "0.52: Scripts editor, Nello.io locks, HipChat and Abode Home Security" +description: "The summer is not holding development back at all. A brand new release including bug fixes and goodies." +date: 2017-08-26 00:11:05 +date_formatted: "August 26, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2017-08-0.52/components.png +--- + + + +Although the summer is in full progress, the development hasn't stalled. This release brings bug fixes, clean ups and another 8 new integrations. On top of that we are also introducing a new [script editor](/docs/scripts/editor/)! + +To use the scripts editor, create a new file in your config directory named `scripts.yaml` and copy your existing scripts over: + +```yaml +# scripts.yaml +turn_on_some_lights: + alias: Turn on the lights + sequence: + - data: {} + service: light.turn_on +``` + + Than update your `configuration.yaml` to look like this: + +```yaml +# Configuration.yaml example +script: !include scripts.yaml +``` + +
    + +
    + +## New Platforms + +- Add version sensor ([@fabaff] - [#8912]) ([sensor.version docs]) (new-platform) +- Nello.io lock support ([@pschmitt] - [#8957]) ([lock.nello docs]) (new-platform) +- Add HipChat notify service. ([@BioSehnsucht] - [#8918]) ([notify.hipchat docs]) (new-platform) +- Refactor USPS into component with Sensors+Camera ([@mezz64] - [#8679]) ([usps docs]) ([camera.usps docs]) ([sensor.usps docs]) (breaking change) (new-platform) +- Adds London_air component ([@robmarkcole] - [#9020]) ([sensor.london_air docs]) (new-platform) +- Add Abode home security component ([@arsaboo] - [#9030]) ([abode docs]) ([alarm_control_panel.abode docs]) ([binary_sensor.abode docs]) (new-platform) +- Add support for Prowl notifications. ([@mbrrg] - [#9028]) ([notify.prowl docs]) (new-platform) +- Add worldtidesinfo sensor component ([@aetolus] - [#8860]) ([sensor.worldtidesinfo docs]) (new-platform) + +## {% linkable_title Release 0.52.1 - August 28 %} + +- Close stream request once we end up with proxy ([@foxel] - [#9110]) +- Fix issue #9116 in pushbullet ([@danielhiversen] - [#9128]) ([notify.pushbullet docs]) +- bug fix pushbullet ([@danielhiversen] - [#9139]) ([notify.pushbullet docs]) +- Fix import for foscam ([@sdague] - [#9140]) ([camera.foscam docs]) +- Bump aioautomatic to prevent leaking exceptions ([@armills] - [#9148]) ([device_tracker.automatic docs]) +- Wrap state when iterating a domain in templates ([@balloob] - [#9157]) +- Prevent iCloud exceptions in logfile ([@mjj4791] - [#9179]) ([device_tracker.icloud docs]) +- bump ecobee version to fix issue 9190 ([@nkgilley] - [#9191]) ([ecobee docs]) ([climate.ecobee docs]) + +## {% linkable_title If you need help... %} +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} +Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. + + +## Breaking Changes + +- Remove spaces from Xiami switch attributes ([@syssi] - [#8952]) ([switch.xiaomi docs]) (breaking change) +- MQTT Switch: command and availability payload are now no longer linked. Command and availability payload default to ON/OFF and must be configured individually if custom values are required. ([@timstanley1985] - [#8934]) ([switch.mqtt docs]) (breaking change) + +```yaml + - platform: mqtt + name: "Kitchen" + state_topic: "stat/sonoff_1/POWER" + command_topic: "cmnd/sonoff_1/POWER" + availability_topic: "tele/sonoff_1/LWT" + payload_available: "Online" + payload_not_available: "Offline" + retain: true +``` + +- Refactor USPS into component with Sensors+Camera ([@mezz64] - [#8679]) ([usps docs]) ([camera.usps docs]) ([sensor.usps docs]) (breaking change) (new-platform) + +```yaml +usps: + username: user + password: pass + name: optional +``` + +- eliqonline: The optional channel_id configuration variable of the Eliqonline sensor needs to be a positive integer. ([@molobrakos] - [#9072]) ([sensor.eliqonline docs]) (breaking change) +- MySensors: Not a breaking change per se but users that have not been following the mysensors [serial API](https://www.mysensors.org/download/serial_api_20) could face dropped messages after this change. Messages are now validated according to the API before being passed along from/to devices. See [0.11 release notes](https://github.com/theolind/pymysensors/releases/tag/0.11) for more info. ([@MartinHjelmare] - [#9069]) ([mysensors docs]) ([binary_sensor.mysensors docs]) ([climate.mysensors docs]) ([cover.mysensors docs]) ([device_tracker.mysensors docs]) ([light.mysensors docs]) ([notify.mysensors docs]) ([sensor.mysensors docs]) ([switch.mysensors docs]) (breaking change) +- Automatic has disabled password authentication on their API. Home Assistant will now use OAuth2 to authenticate accounts. The following steps must be taken to transition your setup: + 1) Log in to your Automatic developer account. In the Automatic Developer Apps Manager, specify the OAuth Redirect URL in the developer page. This should be configured to `/api/automatic/callback`. (Example: `http://hassio.local:8123/api/automatic/callback`) Note that this URL only needs to be accessible from the browser you use to perform the authentication. + 2) Remove username/password from your automatic device tracker configuration in configuration.yaml. + 3) If you have authorized your account for `scope:current_location`, add `current_location: true` to your automatic device tracker configuration in configuration.yaml. + 4) When you restart Home Assistant, click on the Automatic Configure link in the Configurator card, and follow the instructions to authorize Home Assistant.

    NOTE: Automatic's API is currently not correctly authorizing with refresh tokens, so Step 4 currently needs to be performed after every restart. ([@armills] - [#8962] [#9002]) ([configurator docs]) ([device_tracker.automatic docs]) (breaking change) + +## All changes + +- Add version sensor ([@fabaff] - [#8912]) ([sensor.version docs]) (new-platform) +- Fix hue lights for Philips and non-philips lights ([@groth-its] - [#8905]) ([light.hue docs]) +- Fixed cert_expiry sensor to delay firing on HA startup ([@arsaboo] - [#8920]) ([sensor.cert_expiry docs]) +- Remove spaces from Xiami switch attributes ([@syssi] - [#8952]) ([switch.xiaomi docs]) (breaking change) +- Add service to alarm control panel for night mode arming ([@schmittx] - [#8614]) ([alarm_control_panel docs]) ([alarm_control_panel.totalconnect docs]) +- Add support for Automatic OAuth2 authentication ([@armills] - [#8962]) ([configurator docs]) ([device_tracker.automatic docs]) (breaking change) +- Nello.io lock support ([@pschmitt] - [#8957]) ([lock.nello docs]) (new-platform) +- Added continue-on-errors, added value template ([@iamjackg] - [#8971]) ([sensor.snmp docs]) +- Is_allowed_path raise for None path ([@danielhiversen] - [#8953]) +- Fix #8960 - Decora Wi-Fi Switch unable to set brightness ([@tlyakhov] - [#8989]) ([light.decora_wifi docs]) +- Adds port/SSL config options for RainMachine ([@bachya] - [#8986]) ([switch.rainmachine docs]) +- Automatic device tracker remove password ([@armills] - [#9002]) ([device_tracker.automatic docs]) (breaking change) +- Add scripts editor backend ([@balloob] - [#8993]) ([config docs]) ([script docs]) (new-platform) +- MQTT Switch - Add configurable availability payload ([@timstanley1985] - [#8934]) ([switch.mqtt docs]) (breaking change) +- Buienradar newconditions ([@mjj4791] - [#8897]) ([sensor.buienradar docs]) ([weather.buienradar docs]) +- Pushbullet, fix multiple messages sent when url param is set ([@karlkar] - [#9006]) ([notify.pushbullet docs]) +- Update to pyenvisalink 2.2, and remove range validation on zonedump i… ([@Cinntax] - [#8981]) ([envisalink docs]) +- Fix #9010 - Swiss Public Transportation shows departure time in the past ([@michaelhertig] - [#9011]) ([sensor.swiss_public_transport docs]) +- Add HipChat notify service. ([@BioSehnsucht] - [#8918]) ([notify.hipchat docs]) (new-platform) +- Update onkyo-eiscp to 1.2.3 ([@danieljkemp] - [#9019]) ([media_player.onkyo docs]) +- Check if album image(s) exist in spotify ([@Tommatheussen] - [#9024]) ([media_player.spotify docs]) +- Update ffmpeg to 1.7 to fix severals problems ([@pvizeli] - [#9029]) +- Add state_with_unit property to state objects in templates ([@balloob] - [#9014]) +- Fix Geizhals index issue when not 4 prices available ([@celeroll] - [#9035]) ([sensor.geizhals docs]) +- Refactor USPS into component with Sensors+Camera ([@mezz64] - [#8679]) ([usps docs]) ([camera.usps docs]) ([sensor.usps docs]) (breaking change) (new-platform) +- Set password after connecting. Fixes #8983 ([@StevenLooman] - [#9039]) ([media_player.mpd docs]) +- Update iOS sensor (battery icon fix and format updates) ([@schmittx] - [#9032]) +- Adds London_air component ([@robmarkcole] - [#9020]) ([sensor.london_air docs]) (new-platform) +- Update pwmled to 1.2.1. ([@soldag] - [#9040]) ([light.rpi_gpio_pwm docs]) +- Configurable timeout for webostv. ([@soldag] - [#9042]) ([media_player.webostv docs]) +- Update ios.py ([@schmittx] - [#9041]) ([sensor.ios docs]) +- Support Windows in UPNP discovery ([@kabongsteve] - [#8936]) +- Upgrade python-pushover to 0.3 ([@fanaticDavid] - [#9045]) ([notify.pushover docs]) +- Add speeds to fan dropdown in ISY fan component ([@boojew] - [#9004]) ([fan.isy994 docs]) +- Update Fitbit sensor (icons, formatting, client update) ([@schmittx] - [#9031]) ([sensor.fitbit docs]) +- Add Abode home security component ([@arsaboo] - [#9030]) ([abode docs]) ([alarm_control_panel.abode docs]) ([binary_sensor.abode docs]) (new-platform) +- LIFX: avoid rare NoneType errors ([@amelchio] - [#9054]) ([light.lifx docs]) +- Bump dlib face_recognition to 0.2.2 ([@arsaboo] - [#9060]) ([image_processing.dlib_face_detect docs]) ([image_processing.dlib_face_identify docs]) +- Update fitbit.py ([@schmittx] - [#9064]) ([sensor.fitbit docs]) +- Upgrade sendgrid to 5.0.0 ([@fabaff] - [#9062]) ([notify.sendgrid docs]) +- Upgrade slacker to 0.9.60 ([@fabaff] - [#9065]) ([notify.slack docs]) +- Add support for Prowl notifications. ([@mbrrg] - [#9028]) ([notify.prowl docs]) (new-platform) +- Upgrade onkyo-eiscp to 1.2.4 (fixes #8995) ([@fabaff] - [#9068]) ([media_player.onkyo docs]) +- Workday sensor offset ([@LaStrada] - [#8824]) ([binary_sensor.workday docs]) +- eliqonline: channel id is an integer ([@molobrakos] - [#9072]) ([sensor.eliqonline docs]) (breaking change) +- Use builtin constants for Abode alarm_control_panel ([@arsaboo] - [#9059]) ([alarm_control_panel.abode docs]) +- bump python-ecobee-api version to 0.0.8 ([@nkgilley] - [#9074]) ([ecobee docs]) +- Bump abodepy to 0.7.1 ([@arsaboo] - [#9077]) ([abode docs]) +- async_query returns False if connection to server failed, handle this properly ([@molobrakos] - [#9070]) ([media_player.squeezebox docs]) +- Added insteonplm device_override multiple capabilities ([@teharris1] - [#9078]) ([insteon_plm docs]) +- Upgrade uber_rides to 0.5.1 ([@fabaff] - [#9080]) ([sensor.uber docs]) +- Upgrade discord.py to 0.16.10 ([@fabaff] - [#9082]) ([notify.discord docs]) +- Fix `device` attribute in fritz_callmonitor.py (fixes #9055) ([@870074+max-te] - [#9081]) ([sensor.fritzbox_callmonitor docs]) +- Upgrade youtube_dl to 2017.8.18 ([@fabaff] - [#9079]) ([media_extractor docs]) +- Remove dash ([@fabaff] - [#9089]) +- Upgrade credstash to 1.13.3 ([@fabaff] - [#9088]) +- 9043 Fixed error while running dev docker ([@MungoRae] - [#9044]) +- Don't redefine consts ([@fabaff] - [#9086]) ([notify.hipchat docs]) +- Fix octoprint errors when printer is off/disconnected ([@w1ll1am23] - [#8988]) ([octoprint docs]) ([sensor.octoprint docs]) +- Pilight switch: restore last state after restart ([@janLo] - [#8580]) ([switch.pilight docs]) +- Fix netdata system_load and add disk_free. ([@michaelarnauts] - [#9091]) ([sensor.netdata docs]) +- Add worldtidesinfo sensor component ([@aetolus] - [#8860]) ([sensor.worldtidesinfo docs]) (new-platform) +- Support changing the bulb color for tplink smartbulbs, fixes #8766 ([@rytilahti] - [#8780]) ([light.tplink docs]) +- bump snapcast version ([@happyleavesaoc] - [#9100]) ([media_player.snapcast docs]) +- bump fedex version ([@happyleavesaoc] - [#9099]) ([sensor.fedex docs]) +- Yeelight fix updates on hsv mode ([@rytilahti] - [#9093]) ([light.yeelight docs]) +- Catch exceptions ([@fabaff] - [#9085]) ([notify.discord docs]) +- Fix issue 8894 with uk_transport component if no next_buses or next_trains ([@robmarkcole] - [#9046]) ([sensor.uk_transport docs]) +- upgrade Xiaomi Gateway lib to 0.3 ([@danielhiversen] - [#9101]) ([xiaomi docs]) +- pythonegardia package requirement to .18 ([@jeroenterheerdt] - [#9104]) ([alarm_control_panel.egardia docs]) +- Simplisafe unknown status fix ([@lekobob] - [#9111]) ([alarm_control_panel.simplisafe docs]) +- Update flux_led.py ([@danielhiversen] - [#9122]) ([light.flux_led docs]) +- Xiaomi ([@danielhiversen] - [#9126]) ([xiaomi docs]) +- refactor pushbullet ([@danielhiversen] - [#9125]) ([notify.pushbullet docs]) +- optimistic mode for template covers (w/o timed movement) ([@PhracturedBlue] - [#8402]) ([cover.template docs]) +- Use const ([@fabaff] - [#9127]) ([prometheus docs]) +- Refactor mysensors callback and add validation ([@MartinHjelmare] - [#9069]) ([mysensors docs]) ([binary_sensor.mysensors docs]) ([climate.mysensors docs]) ([cover.mysensors docs]) ([device_tracker.mysensors docs]) ([light.mysensors docs]) ([notify.mysensors docs]) ([sensor.mysensors docs]) ([switch.mysensors docs]) (breaking change) + +[#8402]: https://github.com/home-assistant/home-assistant/pull/8402 +[#8580]: https://github.com/home-assistant/home-assistant/pull/8580 +[#8614]: https://github.com/home-assistant/home-assistant/pull/8614 +[#8679]: https://github.com/home-assistant/home-assistant/pull/8679 +[#8780]: https://github.com/home-assistant/home-assistant/pull/8780 +[#8824]: https://github.com/home-assistant/home-assistant/pull/8824 +[#8860]: https://github.com/home-assistant/home-assistant/pull/8860 +[#8897]: https://github.com/home-assistant/home-assistant/pull/8897 +[#8905]: https://github.com/home-assistant/home-assistant/pull/8905 +[#8912]: https://github.com/home-assistant/home-assistant/pull/8912 +[#8918]: https://github.com/home-assistant/home-assistant/pull/8918 +[#8920]: https://github.com/home-assistant/home-assistant/pull/8920 +[#8934]: https://github.com/home-assistant/home-assistant/pull/8934 +[#8936]: https://github.com/home-assistant/home-assistant/pull/8936 +[#8952]: https://github.com/home-assistant/home-assistant/pull/8952 +[#8953]: https://github.com/home-assistant/home-assistant/pull/8953 +[#8957]: https://github.com/home-assistant/home-assistant/pull/8957 +[#8962]: https://github.com/home-assistant/home-assistant/pull/8962 +[#8971]: https://github.com/home-assistant/home-assistant/pull/8971 +[#8981]: https://github.com/home-assistant/home-assistant/pull/8981 +[#8986]: https://github.com/home-assistant/home-assistant/pull/8986 +[#8988]: https://github.com/home-assistant/home-assistant/pull/8988 +[#8989]: https://github.com/home-assistant/home-assistant/pull/8989 +[#8993]: https://github.com/home-assistant/home-assistant/pull/8993 +[#9002]: https://github.com/home-assistant/home-assistant/pull/9002 +[#9004]: https://github.com/home-assistant/home-assistant/pull/9004 +[#9006]: https://github.com/home-assistant/home-assistant/pull/9006 +[#9011]: https://github.com/home-assistant/home-assistant/pull/9011 +[#9014]: https://github.com/home-assistant/home-assistant/pull/9014 +[#9019]: https://github.com/home-assistant/home-assistant/pull/9019 +[#9020]: https://github.com/home-assistant/home-assistant/pull/9020 +[#9024]: https://github.com/home-assistant/home-assistant/pull/9024 +[#9028]: https://github.com/home-assistant/home-assistant/pull/9028 +[#9029]: https://github.com/home-assistant/home-assistant/pull/9029 +[#9030]: https://github.com/home-assistant/home-assistant/pull/9030 +[#9031]: https://github.com/home-assistant/home-assistant/pull/9031 +[#9032]: https://github.com/home-assistant/home-assistant/pull/9032 +[#9035]: https://github.com/home-assistant/home-assistant/pull/9035 +[#9039]: https://github.com/home-assistant/home-assistant/pull/9039 +[#9040]: https://github.com/home-assistant/home-assistant/pull/9040 +[#9041]: https://github.com/home-assistant/home-assistant/pull/9041 +[#9042]: https://github.com/home-assistant/home-assistant/pull/9042 +[#9044]: https://github.com/home-assistant/home-assistant/pull/9044 +[#9045]: https://github.com/home-assistant/home-assistant/pull/9045 +[#9046]: https://github.com/home-assistant/home-assistant/pull/9046 +[#9054]: https://github.com/home-assistant/home-assistant/pull/9054 +[#9059]: https://github.com/home-assistant/home-assistant/pull/9059 +[#9060]: https://github.com/home-assistant/home-assistant/pull/9060 +[#9062]: https://github.com/home-assistant/home-assistant/pull/9062 +[#9064]: https://github.com/home-assistant/home-assistant/pull/9064 +[#9065]: https://github.com/home-assistant/home-assistant/pull/9065 +[#9068]: https://github.com/home-assistant/home-assistant/pull/9068 +[#9069]: https://github.com/home-assistant/home-assistant/pull/9069 +[#9070]: https://github.com/home-assistant/home-assistant/pull/9070 +[#9072]: https://github.com/home-assistant/home-assistant/pull/9072 +[#9074]: https://github.com/home-assistant/home-assistant/pull/9074 +[#9077]: https://github.com/home-assistant/home-assistant/pull/9077 +[#9078]: https://github.com/home-assistant/home-assistant/pull/9078 +[#9079]: https://github.com/home-assistant/home-assistant/pull/9079 +[#9080]: https://github.com/home-assistant/home-assistant/pull/9080 +[#9081]: https://github.com/home-assistant/home-assistant/pull/9081 +[#9082]: https://github.com/home-assistant/home-assistant/pull/9082 +[#9085]: https://github.com/home-assistant/home-assistant/pull/9085 +[#9086]: https://github.com/home-assistant/home-assistant/pull/9086 +[#9088]: https://github.com/home-assistant/home-assistant/pull/9088 +[#9089]: https://github.com/home-assistant/home-assistant/pull/9089 +[#9091]: https://github.com/home-assistant/home-assistant/pull/9091 +[#9093]: https://github.com/home-assistant/home-assistant/pull/9093 +[#9099]: https://github.com/home-assistant/home-assistant/pull/9099 +[#9100]: https://github.com/home-assistant/home-assistant/pull/9100 +[#9101]: https://github.com/home-assistant/home-assistant/pull/9101 +[#9104]: https://github.com/home-assistant/home-assistant/pull/9104 +[#9111]: https://github.com/home-assistant/home-assistant/pull/9111 +[#9122]: https://github.com/home-assistant/home-assistant/pull/9122 +[#9125]: https://github.com/home-assistant/home-assistant/pull/9125 +[#9126]: https://github.com/home-assistant/home-assistant/pull/9126 +[#9127]: https://github.com/home-assistant/home-assistant/pull/9127 +[@870074+max-te]: https://github.com/870074+max-te +[@BioSehnsucht]: https://github.com/BioSehnsucht +[@Cinntax]: https://github.com/Cinntax +[@LaStrada]: https://github.com/LaStrada +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MungoRae]: https://github.com/MungoRae +[@PhracturedBlue]: https://github.com/PhracturedBlue +[@StevenLooman]: https://github.com/StevenLooman +[@Tommatheussen]: https://github.com/Tommatheussen +[@aetolus]: https://github.com/aetolus +[@amelchio]: https://github.com/amelchio +[@armills]: https://github.com/armills +[@arsaboo]: https://github.com/arsaboo +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@boojew]: https://github.com/boojew +[@celeroll]: https://github.com/celeroll +[@danielhiversen]: https://github.com/danielhiversen +[@danieljkemp]: https://github.com/danieljkemp +[@fabaff]: https://github.com/fabaff +[@fanaticDavid]: https://github.com/fanaticDavid +[@groth-its]: https://github.com/groth-its +[@happyleavesaoc]: https://github.com/happyleavesaoc +[@iamjackg]: https://github.com/iamjackg +[@janLo]: https://github.com/janLo +[@jeroenterheerdt]: https://github.com/jeroenterheerdt +[@kabongsteve]: https://github.com/kabongsteve +[@karlkar]: https://github.com/karlkar +[@lekobob]: https://github.com/lekobob +[@mbrrg]: https://github.com/mbrrg +[@mezz64]: https://github.com/mezz64 +[@michaelarnauts]: https://github.com/michaelarnauts +[@michaelhertig]: https://github.com/michaelhertig +[@mjj4791]: https://github.com/mjj4791 +[@molobrakos]: https://github.com/molobrakos +[@nkgilley]: https://github.com/nkgilley +[@pschmitt]: https://github.com/pschmitt +[@pvizeli]: https://github.com/pvizeli +[@robmarkcole]: https://github.com/robmarkcole +[@rytilahti]: https://github.com/rytilahti +[@schmittx]: https://github.com/schmittx +[@soldag]: https://github.com/soldag +[@syssi]: https://github.com/syssi +[@teharris1]: https://github.com/teharris1 +[@timstanley1985]: https://github.com/timstanley1985 +[@tlyakhov]: https://github.com/tlyakhov +[@w1ll1am23]: https://github.com/w1ll1am23 +[abode docs]: https://home-assistant.io/components/abode/ +[alarm_control_panel docs]: https://home-assistant.io/components/alarm_control_panel/ +[alarm_control_panel.abode docs]: https://home-assistant.io/components/alarm_control_panel.abode/ +[alarm_control_panel.egardia docs]: https://home-assistant.io/components/alarm_control_panel.egardia/ +[alarm_control_panel.simplisafe docs]: https://home-assistant.io/components/alarm_control_panel.simplisafe/ +[alarm_control_panel.totalconnect docs]: https://home-assistant.io/components/alarm_control_panel.totalconnect/ +[binary_sensor.abode docs]: https://home-assistant.io/components/binary_sensor.abode/ +[binary_sensor.mysensors docs]: https://home-assistant.io/components/binary_sensor.mysensors/ +[binary_sensor.workday docs]: https://home-assistant.io/components/binary_sensor.workday/ +[camera.usps docs]: https://home-assistant.io/components/camera.usps/ +[climate.mysensors docs]: https://home-assistant.io/components/climate.mysensors/ +[config docs]: https://home-assistant.io/components/config/ +[configurator docs]: https://home-assistant.io/components/configurator/ +[cover.mysensors docs]: https://home-assistant.io/components/cover.mysensors/ +[cover.template docs]: https://home-assistant.io/components/cover.template/ +[device_tracker.automatic docs]: https://home-assistant.io/components/device_tracker.automatic/ +[device_tracker.mysensors docs]: https://home-assistant.io/components/device_tracker.mysensors/ +[ecobee docs]: https://home-assistant.io/components/ecobee/ +[emulated_hue.upnp docs]: https://home-assistant.io/components/emulated_hue.upnp/ +[envisalink docs]: https://home-assistant.io/components/envisalink/ +[fan.isy994 docs]: https://home-assistant.io/components/fan.isy994/ +[image_processing.dlib_face_detect docs]: https://home-assistant.io/components/image_processing.dlib_face_detect/ +[image_processing.dlib_face_identify docs]: https://home-assistant.io/components/image_processing.dlib_face_identify/ +[insteon_plm docs]: https://home-assistant.io/components/insteon_plm/ +[light.decora_wifi docs]: https://home-assistant.io/components/light.decora_wifi/ +[light.flux_led docs]: https://home-assistant.io/components/light.flux_led/ +[light.hue docs]: https://home-assistant.io/components/light.hue/ +[light.lifx docs]: https://home-assistant.io/components/light.lifx/ +[light.mysensors docs]: https://home-assistant.io/components/light.mysensors/ +[light.rpi_gpio_pwm docs]: https://home-assistant.io/components/light.rpi_gpio_pwm/ +[light.tplink docs]: https://home-assistant.io/components/light.tplink/ +[light.yeelight docs]: https://home-assistant.io/components/light.yeelight/ +[lock.nello docs]: https://home-assistant.io/components/lock.nello/ +[media_extractor docs]: https://home-assistant.io/components/media_extractor/ +[media_player.mpd docs]: https://home-assistant.io/components/media_player.mpd/ +[media_player.onkyo docs]: https://home-assistant.io/components/media_player.onkyo/ +[media_player.snapcast docs]: https://home-assistant.io/components/media_player.snapcast/ +[media_player.spotify docs]: https://home-assistant.io/components/media_player.spotify/ +[media_player.squeezebox docs]: https://home-assistant.io/components/media_player.squeezebox/ +[media_player.webostv docs]: https://home-assistant.io/components/media_player.webostv/ +[mysensors docs]: https://home-assistant.io/components/mysensors/ +[notify.discord docs]: https://home-assistant.io/components/notify.discord/ +[notify.hipchat docs]: https://home-assistant.io/components/notify.hipchat/ +[notify.mysensors docs]: https://home-assistant.io/components/notify.mysensors/ +[notify.prowl docs]: https://home-assistant.io/components/notify.prowl/ +[notify.pushbullet docs]: https://home-assistant.io/components/notify.pushbullet/ +[notify.pushover docs]: https://home-assistant.io/components/notify.pushover/ +[notify.sendgrid docs]: https://home-assistant.io/components/notify.sendgrid/ +[notify.slack docs]: https://home-assistant.io/components/notify.slack/ +[octoprint docs]: https://home-assistant.io/components/octoprint/ +[prometheus docs]: https://home-assistant.io/components/prometheus/ +[script docs]: https://home-assistant.io/components/script/ +[sensor.buienradar docs]: https://home-assistant.io/components/sensor.buienradar/ +[sensor.cert_expiry docs]: https://home-assistant.io/components/sensor.cert_expiry/ +[sensor.eliqonline docs]: https://home-assistant.io/components/sensor.eliqonline/ +[sensor.fedex docs]: https://home-assistant.io/components/sensor.fedex/ +[sensor.fitbit docs]: https://home-assistant.io/components/sensor.fitbit/ +[sensor.fritzbox_callmonitor docs]: https://home-assistant.io/components/sensor.fritzbox_callmonitor/ +[sensor.geizhals docs]: https://home-assistant.io/components/sensor.geizhals/ +[sensor.ios docs]: https://home-assistant.io/components/sensor.ios/ +[sensor.london_air docs]: https://home-assistant.io/components/sensor.london_air/ +[sensor.mysensors docs]: https://home-assistant.io/components/sensor.mysensors/ +[sensor.netdata docs]: https://home-assistant.io/components/sensor.netdata/ +[sensor.octoprint docs]: https://home-assistant.io/components/sensor.octoprint/ +[sensor.snmp docs]: https://home-assistant.io/components/sensor.snmp/ +[sensor.swiss_public_transport docs]: https://home-assistant.io/components/sensor.swiss_public_transport/ +[sensor.uber docs]: https://home-assistant.io/components/sensor.uber/ +[sensor.uk_transport docs]: https://home-assistant.io/components/sensor.uk_transport/ +[sensor.usps docs]: https://home-assistant.io/components/sensor.usps/ +[sensor.version docs]: https://home-assistant.io/components/sensor.version/ +[sensor.worldtidesinfo docs]: https://home-assistant.io/components/sensor.worldtidesinfo/ +[switch.mqtt docs]: https://home-assistant.io/components/switch.mqtt/ +[switch.mysensors docs]: https://home-assistant.io/components/switch.mysensors/ +[switch.pilight docs]: https://home-assistant.io/components/switch.pilight/ +[switch.rainmachine docs]: https://home-assistant.io/components/switch.rainmachine/ +[switch.xiaomi docs]: https://home-assistant.io/components/switch.xiaomi/ +[usps docs]: https://home-assistant.io/components/usps/ +[weather.buienradar docs]: https://home-assistant.io/components/weather.buienradar/ +[xiaomi docs]: https://home-assistant.io/components/xiaomi/ +[forum]: https://community.home-assistant.io/ +[issue]: https://github.com/home-assistant/home-assistant/issues +[discord]: https://discord.gg/c5DvZ4e +[#9110]: https://github.com/home-assistant/home-assistant/pull/9110 +[#9128]: https://github.com/home-assistant/home-assistant/pull/9128 +[#9139]: https://github.com/home-assistant/home-assistant/pull/9139 +[#9140]: https://github.com/home-assistant/home-assistant/pull/9140 +[#9148]: https://github.com/home-assistant/home-assistant/pull/9148 +[#9157]: https://github.com/home-assistant/home-assistant/pull/9157 +[#9179]: https://github.com/home-assistant/home-assistant/pull/9179 +[#9191]: https://github.com/home-assistant/home-assistant/pull/9191 +[@foxel]: https://github.com/foxel +[@sdague]: https://github.com/sdague +[camera.foscam docs]: https://home-assistant.io/components/camera.foscam/ +[climate.ecobee docs]: https://home-assistant.io/components/climate.ecobee/ +[device_tracker.icloud docs]: https://home-assistant.io/components/device_tracker.icloud/ diff --git a/source/_posts/2017-09-09-release-53.markdown b/source/_posts/2017-09-09-release-53.markdown new file mode 100644 index 00000000000..acf3836b08b --- /dev/null +++ b/source/_posts/2017-09-09-release-53.markdown @@ -0,0 +1,462 @@ +--- +layout: post +title: "0.53: Tesla, Customize editor, and super fast KNX rewrite" +description: "Also now supports a text input UI component, Mopar and Geofency." +date: 2017-09-09 00:11:05 +date_formatted: "September 9, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2017-09-0.53/components.png +--- + + + +The Home Assistant community has been super busy in the last two weeks to bring you this amazing release. 60 different contributors have done over a 100 PRs filled with new features, bug fixes and performance improvements. + +9 days away from our 4th birthday, we've just accomplished a couple of great milestones that I would love to share with you. We've hit over 8000 stars 🌟 on GitHub and starting this release we now ship over 800 platforms and components! + +## {% linkable_title Customize editor %} + +Another step in making Home Assistant configurable via the frontend has been contributed by @andrey-git: a customization editor! You are now able to inspect all (possible) customizations of an entity and update them with just a few taps. Want to change the name or icon of an entity? All possible in mere seconds. + +

    + +Screenshot of the new customize editor. +

    + +New Home Assistant configurations will be created correctly automatically. If you are an existing user, make sure you have the config screen enabled and that you include customizations from `customize.yaml`. + +```yaml +# Example configuration.yaml entry +homeassistant: + # Include the customizations. + customize: !include customize.yaml + +# Enable the config screen +config: +``` + +## {% linkable_title Tesla %} + +Thanks to the contribution by @zabuldon, you will now be able to control your Tesla car from Home Assistant. You're able to check the temperature inside and outside your car, control your AC and unlock the car. + +## {% linkable_title Input text %} + +This release introduces a new input component: `input_text` contributed by @BioSehnsucht. With this component you will be able to set free form from the UI and then let that be used by your automations or templates. + +## {% linkable_title KNX %} + +This release ships a new KNX implementation thanks to @Julius2342. It will instantly show all changed states of KNX devices within Home Assistant. Additionally it brings support for HVAC devices and notification services. It also adds a service for direct communication with the KNX bus. You can connect to KNX/IP routing and tunnelling devices. In the background it uses asyncio communication. Check the climate integration in action [here](https://www.youtube.com/watch?v=JI0VJzlGpx4) and see the lights in action below: + +
    + +
    + +## {% linkable_title New Platforms %} + +- Xiaomi Philips Lights integration ([@syssi] - [#9087]) ([light.xiaomi_philipslight docs]) (new-platform) +- Mycroft notify/component ([@btotharye] - [#9173]) ([mycroft docs]) ([notify.mycroft docs]) (new-platform) +- Add counter component ([@fabaff] - [#9146]) ([counter docs]) (new-platform) +- Support for season sensor ([@w1ll1am23] - [#8958]) ([sensor.season docs]) (new-platform) +- Abode push events and lock, cover, and switch components ([@1091741+MisterWil] - [#9095]) ([abode docs]) ([alarm_control_panel.abode docs]) ([binary_sensor.abode docs]) ([cover.abode docs]) ([lock.abode docs]) ([switch.abode docs]) (new-platform) +- Bayesian Binary Sensor ([@jlmcgehee21] - [#8810]) ([binary_sensor.bayesian docs]) (new-platform) +- Add Tank Utility sensor ([@krismolendyke] - [#9132]) ([sensor.tank_utility docs]) (new-platform) +- Tesla platform ([@zabuldon] - [#9211]) ([tesla docs]) ([binary_sensor.tesla docs]) ([climate.tesla docs]) ([device_tracker.tesla docs]) ([lock.tesla docs]) ([sensor.tesla docs]) (new-platform) +- mopar sensor ([@happyleavesaoc] - [#9136]) ([sensor.mopar docs]) (new-platform) +- Add Geofency device tracker ([@gunnarhelgason] - [#9106]) ([device_tracker.geofency docs]) (new-platform) +- Added DWD WarnApp Sensor ([@runningman84] - [#8657]) ([sensor.dwdwarnapp docs]) (new-platform) +- Add input_text component ([@BioSehnsucht] - [#9112]) ([input_text docs]) (new-platform) +- Introducing a media_player component for Yamaha Multicast devices ([@jalmeroth] - [#9258]) ([media_player.yamaha_musiccast docs]) (new-platform) +- Stable and asynchronous KNX library. ([@Julius2342] - [#8725]) ([knx docs]) ([binary_sensor.knx docs]) ([climate.knx docs]) ([cover.knx docs]) ([light.knx docs]) ([sensor.knx docs]) ([switch.knx docs]) (new-platform) +- Adds the AirVisual air quality sensor platform ([@bachya] - [#9320]) ([sensor.airvisual docs]) (new-platform) + +## {% linkable_title Release 0.53.1 - September 12 %} + +- Fix Twitter notifications with certain media such as small images ([@MikeChristianson] - [#9354]) ([notify.twitter docs]) +- Added additional string check in Wunderground sensor ([@arsaboo] - [#9380]) ([sensor.wunderground docs]) +- Fixing foscam library dependency/requirements ([@viswa-swami] - [#9387]) ([camera.foscam docs]) +- Fixes for customize editor ([@andrey-git]) + +## {% linkable_title If you need help... %} +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} +Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- The new customize editor is using the file `customize.yaml` in your config folder. If you are using this file today for other config, make sure to rename it before using the new customize UI editor. ([@andrey-git] - [#9134]) ([config docs]) (breaking change) (new-platform) +- The frontend component now supports loading custom html files when Home Assistant front end starts ([@andrey-git] - [#9150]) (breaking change). It could be Javascript, CSS or custom Web Components. Along there was a breaking change in the way Custom UI is used: + * `custom_ui_state_card` now specifies the exact element name and not a suffix after `state-card`. So if you had `state_card_custom_ui: custom-ui` in your config, you should change it to `state_card_custom_ui: state-card-custom-ui` + * `custom_ui_state_card` no longer makes the html fetch, you should make it separately: + +``` +frontend: + extra_html_url: + - /local/custom_ui/state-card-custom-ui.html +``` + +- The Egardia alarm control panel now defaults to port 52010 instead of 85. ([@jeroenterheerdt] - [#9225]) ([alarm_control_panel.egardia docs]) (breaking change) +- The Homematic `delay` option has been dropped because it is no longer necessary ([@pvizeli] - [#9058]) ([homematic docs]) ([binary_sensor.homematic docs]) ([climate.homematic docs]) ([cover.homematic docs]) ([light.homematic docs]) ([sensor.homematic docs]) ([switch.homematic docs]) (breaking change) +- Switch - Dlink: Remove spaces and capital letters from attribute names for consistency ([@emlt] - [#9277]) ([switch.dlink docs]) (breaking change) + +## {% linkable_title All changes %} + +- Xiaomi Philips Lights integration ([@syssi] - [#9087]) ([light.xiaomi_philipslight docs]) (new-platform) +- Backend changes for customize config panel. ([@andrey-git] - [#9134]) ([config docs]) (breaking change) +- Upgrade async_timeout to 1.3.0 ([@fabaff] - [#9156]) +- Remove links to gitter ([@fabaff] - [#9155]) +- Upgrade sphinx-autodoc-typehints to 1.2.3 ([@fabaff] - [#9151]) +- Upgrade uber_rides to 0.5.2 ([@fabaff] - [#9149]) ([sensor.uber docs]) +- Allow specifying custom html urls to load. ([@andrey-git] - [#9150]) (breaking change) +- Allow getting number of available states in template ([@balloob] - [#9158]) +- upgrade xiaomi lib to 0.3.1 to supprt water sensor ([@danielhiversen] - [#9168]) ([xiaomi docs]) +- Use node_modules gulp in script/build_frontend ([@armills] - [#9170]) +- Mysensors nodes can be renamed in config file ([@EmitKiwi] - [#9123]) ([mysensors docs]) +- Xiaomi gateway: Device support for the Aqara Water Leak Sensor (sensor_wleak.aq1) ([@syssi] - [#9172]) ([xiaomi docs]) ([binary_sensor.xiaomi docs]) +- "TypeError: write_to_hub() takes 2 positional arguments but 4 were given" fixed. ([@syssi] - [#9174]) ([cover.xiaomi docs]) +- Mycroft notify/component ([@btotharye] - [#9173]) ([mycroft docs]) ([notify.mycroft docs]) (new-platform) +- Fix dht22 when no data was read initially #8976 ([@maweki] - [#9198]) ([sensor.dht docs]) +- Update pushbullet.py ([@bobnwk] - [#9200]) ([notify.pushbullet docs]) +- fix worldtidesinfo #9184 ([@aetolus] - [#9201]) ([sensor.worldtidesinfo docs]) +- Add "status" to Sonarr sensor ([@tboyce021] - [#9204]) ([sensor.radarr docs]) ([sensor.sonarr docs]) +- Prevent error when no forecast data was available ([@mjj4791] - [#9176]) ([sensor.buienradar docs]) +- Fix and optimize digitalloggers platform ([@dale3h] - [#9203]) ([switch.digitalloggers docs]) +- Add counter component ([@fabaff] - [#9146]) ([counter docs]) (new-platform) +- Support for season sensor ([@w1ll1am23] - [#8958]) ([sensor.season docs]) (new-platform) +- Issue #6893 in rfxtrx ([@danielhiversen] - [#9130]) ([rfxtrx docs]) +- Refactor rfxtrx ([@danielhiversen] - [#9117]) ([rfxtrx docs]) ([cover.rfxtrx docs]) ([light.rfxtrx docs]) ([switch.rfxtrx docs]) +- Upgrade pymysensors to 0.11.1 ([@MartinHjelmare] - [#9212]) ([mysensors docs]) +- Abode push events and lock, cover, and switch components ([@1091741+MisterWil] - [#9095]) ([abode docs]) ([alarm_control_panel.abode docs]) ([binary_sensor.abode docs]) ([cover.abode docs]) ([lock.abode docs]) ([switch.abode docs]) (new-platform) +- Add cloud auth support ([@balloob] - [#9208]) +- Bayesian Binary Sensor ([@jlmcgehee21] - [#8810]) ([binary_sensor.bayesian docs]) (new-platform) +- directv: extended discovery via REST api, bug fix ([@sielicki] - [#8800]) ([media_player.directv docs]) +- Upgrade pyasn1 to 0.3.3 and pyasn1-modules to 0.1.1 ([@fabaff] - [#9216]) ([notify.xmpp docs]) +- Upgrade sendgrid to 5.0.1 ([@fabaff] - [#9215]) ([notify.sendgrid docs]) +- Fix fitbit error when trying to access token after upgrade. ([@tchellomello] - [#9183]) ([sensor.fitbit docs]) +- Allow sonos to select album as a source ([@commento] - [#9221]) ([media_player.sonos docs]) +- Add max_age to statistics sensor ([@tinloaf] - [#8790]) ([sensor.statistics docs]) +- Egardia package to .19 and change in port number for egardiaserver ([@jeroenterheerdt] - [#9225]) ([alarm_control_panel.egardia docs]) (breaking change) +- pushbullet, send a file from url ([@danielhiversen] - [#9189]) ([notify.pushbullet docs]) +- Add Tank Utility sensor ([@krismolendyke] - [#9132]) ([sensor.tank_utility docs]) (new-platform) +- Upgrade shodan to 1.7.5 ([@fabaff] - [#9228]) ([sensor.shodan docs]) +- Tesla platform ([@zabuldon] - [#9211]) ([tesla docs]) ([binary_sensor.tesla docs]) ([climate.tesla docs]) ([device_tracker.tesla docs]) ([lock.tesla docs]) ([sensor.tesla docs]) (new-platform) +- [light.tradfri] Full range of white spectrum lightbulbs support ([@matemaciek] - [#9224]) ([tradfri docs]) ([light.tradfri docs]) +- Allow panels with external URL ([@andrey-git] - [#9214]) +- Use ZCL mandatory attribute to determine ZHA light capabilities ([@jkl1337] - [#9232]) ([light.zha docs]) +- A bugfix for pushbullet ([@danielhiversen] - [#9237]) ([notify.pushbullet docs]) +- mopar sensor ([@happyleavesaoc] - [#9136]) ([sensor.mopar docs]) (new-platform) +- Upgrade discord.py to 0.16.11 ([@fabaff] - [#9239]) ([notify.discord docs]) +- Skip automatic events older than latest data ([@armills] - [#9230]) ([device_tracker.automatic docs]) +- title and message was swapped in pushbullet ([@danielhiversen] - [#9241]) ([notify.pushbullet docs]) +- Fix possible KeyError ([@MartinHjelmare] - [#9242]) ([mysensors docs]) +- WIP: Homematic improvements with new hass interfaces ([@pvizeli] - [#9058]) ([homematic docs]) ([binary_sensor.homematic docs]) ([climate.homematic docs]) ([cover.homematic docs]) ([light.homematic docs]) ([sensor.homematic docs]) ([switch.homematic docs]) (breaking change) +- Add available to sonos ([@pvizeli] - [#9243]) ([media_player.sonos docs]) +- Make sure Ring binary_sensor state will update only if device_id matches ([@tchellomello] - [#9247]) ([binary_sensor.ring docs]) +- Added configurable timeout for receiver HTTP requests | Additional AV… ([@scarface-4711] - [#9244]) ([media_player.denonavr docs]) +- upgrade xiaomi lib ([@danielhiversen] - [#9250]) ([xiaomi docs]) +- Fix nello.io login ([@pschmitt] - [#9251]) ([lock.nello docs]) +- This is to fix #6386: Manual Alarm not re-arm after 2nd trigger ([@snjoetw] - [#9249]) ([alarm_control_panel.manual docs]) +- Version bump of DLink switch to v0.6.0 ([@LinuxChristian] - [#9252]) ([switch.dlink docs]) +- Upgrade sendgrid to 5.2.0 ([@fabaff] - [#9254]) ([notify.sendgrid docs]) +- Upgrade psutil to 5.3.0 ([@fabaff] - [#9253]) ([sensor.systemmonitor docs]) +- Adding ZWave CentralScene activation handler. ([@sirmalloc] - [#9178]) ([zwave docs]) +- Add Geofency device tracker ([@gunnarhelgason] - [#9106]) ([device_tracker.geofency docs]) (new-platform) +- flux: fix for when stop_time is after midnight ([@abmantis] - [#8932]) +- Change attribute names ([@emlt] - [#9277]) ([switch.dlink docs]) (breaking change) +- insteon_plm: fix typo in attributes ([@drkp] - [#9284]) ([insteon_plm docs]) +- discovery: If unknown NetDisco service discovered, log about it. ([@pfalcon] - [#9280]) +- Upgrade youtube_dl to 2017.9.2 ([@fabaff] - [#9279]) ([media_extractor docs]) +- Upgrade python-telegram-bot to 8.0.0 ([@fabaff] - [#9282]) ([telegram_bot docs]) ([switch.rest docs]) +- rfxtrx lib upgrade ([@danielhiversen] - [#9288]) ([rfxtrx docs]) +- Fixing bug when using egardiaserver - package requirement updated to 1.0.20. ([@jeroenterheerdt] - [#9294]) ([alarm_control_panel.egardia docs]) +- Added intent_type to exception log ([@andreasjacobsen93] - [#9289]) ([snips docs]) +- Handle spotify failing to refresh access_token ([@Tommatheussen] - [#9295]) ([media_player.spotify docs]) +- Core track same state for a period / Allow on platforms ([@pvizeli] - [#9273]) +- Improved Lutron Caseta shade support ([@30200174+upsert] - [#9302]) ([lutron_caseta docs]) ([cover.lutron_caseta docs]) ([light.lutron_caseta docs]) ([switch.lutron_caseta docs]) +- Upgrade mycroftapi to 2.0 ([@btotharye] - [#9309]) ([mycroft docs]) +- Fix for Honeywell Round thermostats ([@dansarginson] - [#9308]) ([climate.honeywell docs]) +- Update jinja to 2.9.6 ([@pvizeli] - [#9306]) +- Ensure display-name does not exceed 12 characters for CecAdapter. ([@gollo] - [#9268]) ([hdmi_cec docs]) +- Expose hue group 0 ([@filcole] - [#8663]) ([light.hue docs]) +- Added DWD WarnApp Sensor ([@runningman84] - [#8657]) ([sensor.dwdwarnapp docs]) (new-platform) +- Add input_text component ([@BioSehnsucht] - [#9112]) ([input_text docs]) (new-platform) +- Introducing a media_player component for Yamaha Multicast devices ([@jalmeroth] - [#9258]) ([media_player.yamaha_musiccast docs]) (new-platform) +- Handle the case where no registration number is available (instead display VIN (vehicle identification number)). ([@molobrakos] - [#9073]) ([volvooncall docs]) ([device_tracker.volvooncall docs]) +- Add post_pending_state attribute to manual alarm_control_panel ([@snjoetw] - [#9291]) ([alarm_control_panel.manual docs]) +- Add new config variable to MQTT light ([@belyalov] - [#9304]) ([light.mqtt docs]) +- Follow Twitter guidelines for media upload by conforming to the "STATUS" phase, when required, and by providing "media_category" information. These will, for example, allow users to upload videos that exceed the basic 30 second limit. ([@MikeChristianson] - [#9261]) ([notify.twitter docs]) +- Optionally disable ssl certificate validity check. ([@1868995+ohmer1] - [#9181]) ([notify.xmpp docs]) +- Version bump dlib to 1.0.0 ([@arsaboo] - [#9316]) ([image_processing.dlib_face_detect docs]) ([image_processing.dlib_face_identify docs]) +- Fixed bug with devices not being discovered correctly. ([@1091741+MisterWil] - [#9311]) ([abode docs]) +- Platform not ready behavior fixed. ([@syssi] - [#9325]) ([light.xiaomi_philipslight docs]) +- Stable and asynchronous KNX library. ([@Julius2342] - [#8725]) ([knx docs]) ([binary_sensor.knx docs]) ([climate.knx docs]) ([cover.knx docs]) ([light.knx docs]) ([sensor.knx docs]) ([switch.knx docs]) (new-platform) +- Fix for potential issue with tesla initialization ([@zabuldon] - [#9307]) ([tesla docs]) +- Adds the AirVisual air quality sensor platform ([@bachya] - [#9320]) ([sensor.airvisual docs]) (new-platform) +- Cleanup input_text ([@balloob] - [#9326]) ([input_text docs]) +- Bump pyHik version to add IO support ([@mezz64] - [#9341]) ([binary_sensor.hikvision docs]) + +[#8657]: https://github.com/home-assistant/home-assistant/pull/8657 +[#8663]: https://github.com/home-assistant/home-assistant/pull/8663 +[#8725]: https://github.com/home-assistant/home-assistant/pull/8725 +[#8790]: https://github.com/home-assistant/home-assistant/pull/8790 +[#8800]: https://github.com/home-assistant/home-assistant/pull/8800 +[#8810]: https://github.com/home-assistant/home-assistant/pull/8810 +[#8932]: https://github.com/home-assistant/home-assistant/pull/8932 +[#8958]: https://github.com/home-assistant/home-assistant/pull/8958 +[#9058]: https://github.com/home-assistant/home-assistant/pull/9058 +[#9073]: https://github.com/home-assistant/home-assistant/pull/9073 +[#9087]: https://github.com/home-assistant/home-assistant/pull/9087 +[#9095]: https://github.com/home-assistant/home-assistant/pull/9095 +[#9106]: https://github.com/home-assistant/home-assistant/pull/9106 +[#9112]: https://github.com/home-assistant/home-assistant/pull/9112 +[#9117]: https://github.com/home-assistant/home-assistant/pull/9117 +[#9123]: https://github.com/home-assistant/home-assistant/pull/9123 +[#9130]: https://github.com/home-assistant/home-assistant/pull/9130 +[#9132]: https://github.com/home-assistant/home-assistant/pull/9132 +[#9134]: https://github.com/home-assistant/home-assistant/pull/9134 +[#9136]: https://github.com/home-assistant/home-assistant/pull/9136 +[#9146]: https://github.com/home-assistant/home-assistant/pull/9146 +[#9149]: https://github.com/home-assistant/home-assistant/pull/9149 +[#9150]: https://github.com/home-assistant/home-assistant/pull/9150 +[#9151]: https://github.com/home-assistant/home-assistant/pull/9151 +[#9155]: https://github.com/home-assistant/home-assistant/pull/9155 +[#9156]: https://github.com/home-assistant/home-assistant/pull/9156 +[#9158]: https://github.com/home-assistant/home-assistant/pull/9158 +[#9168]: https://github.com/home-assistant/home-assistant/pull/9168 +[#9170]: https://github.com/home-assistant/home-assistant/pull/9170 +[#9172]: https://github.com/home-assistant/home-assistant/pull/9172 +[#9173]: https://github.com/home-assistant/home-assistant/pull/9173 +[#9174]: https://github.com/home-assistant/home-assistant/pull/9174 +[#9176]: https://github.com/home-assistant/home-assistant/pull/9176 +[#9178]: https://github.com/home-assistant/home-assistant/pull/9178 +[#9181]: https://github.com/home-assistant/home-assistant/pull/9181 +[#9183]: https://github.com/home-assistant/home-assistant/pull/9183 +[#9189]: https://github.com/home-assistant/home-assistant/pull/9189 +[#9198]: https://github.com/home-assistant/home-assistant/pull/9198 +[#9200]: https://github.com/home-assistant/home-assistant/pull/9200 +[#9201]: https://github.com/home-assistant/home-assistant/pull/9201 +[#9203]: https://github.com/home-assistant/home-assistant/pull/9203 +[#9204]: https://github.com/home-assistant/home-assistant/pull/9204 +[#9208]: https://github.com/home-assistant/home-assistant/pull/9208 +[#9211]: https://github.com/home-assistant/home-assistant/pull/9211 +[#9212]: https://github.com/home-assistant/home-assistant/pull/9212 +[#9214]: https://github.com/home-assistant/home-assistant/pull/9214 +[#9215]: https://github.com/home-assistant/home-assistant/pull/9215 +[#9216]: https://github.com/home-assistant/home-assistant/pull/9216 +[#9221]: https://github.com/home-assistant/home-assistant/pull/9221 +[#9224]: https://github.com/home-assistant/home-assistant/pull/9224 +[#9225]: https://github.com/home-assistant/home-assistant/pull/9225 +[#9228]: https://github.com/home-assistant/home-assistant/pull/9228 +[#9230]: https://github.com/home-assistant/home-assistant/pull/9230 +[#9232]: https://github.com/home-assistant/home-assistant/pull/9232 +[#9237]: https://github.com/home-assistant/home-assistant/pull/9237 +[#9239]: https://github.com/home-assistant/home-assistant/pull/9239 +[#9241]: https://github.com/home-assistant/home-assistant/pull/9241 +[#9242]: https://github.com/home-assistant/home-assistant/pull/9242 +[#9243]: https://github.com/home-assistant/home-assistant/pull/9243 +[#9244]: https://github.com/home-assistant/home-assistant/pull/9244 +[#9247]: https://github.com/home-assistant/home-assistant/pull/9247 +[#9249]: https://github.com/home-assistant/home-assistant/pull/9249 +[#9250]: https://github.com/home-assistant/home-assistant/pull/9250 +[#9251]: https://github.com/home-assistant/home-assistant/pull/9251 +[#9252]: https://github.com/home-assistant/home-assistant/pull/9252 +[#9253]: https://github.com/home-assistant/home-assistant/pull/9253 +[#9254]: https://github.com/home-assistant/home-assistant/pull/9254 +[#9258]: https://github.com/home-assistant/home-assistant/pull/9258 +[#9261]: https://github.com/home-assistant/home-assistant/pull/9261 +[#9268]: https://github.com/home-assistant/home-assistant/pull/9268 +[#9273]: https://github.com/home-assistant/home-assistant/pull/9273 +[#9277]: https://github.com/home-assistant/home-assistant/pull/9277 +[#9279]: https://github.com/home-assistant/home-assistant/pull/9279 +[#9280]: https://github.com/home-assistant/home-assistant/pull/9280 +[#9282]: https://github.com/home-assistant/home-assistant/pull/9282 +[#9284]: https://github.com/home-assistant/home-assistant/pull/9284 +[#9288]: https://github.com/home-assistant/home-assistant/pull/9288 +[#9289]: https://github.com/home-assistant/home-assistant/pull/9289 +[#9291]: https://github.com/home-assistant/home-assistant/pull/9291 +[#9294]: https://github.com/home-assistant/home-assistant/pull/9294 +[#9295]: https://github.com/home-assistant/home-assistant/pull/9295 +[#9302]: https://github.com/home-assistant/home-assistant/pull/9302 +[#9304]: https://github.com/home-assistant/home-assistant/pull/9304 +[#9306]: https://github.com/home-assistant/home-assistant/pull/9306 +[#9307]: https://github.com/home-assistant/home-assistant/pull/9307 +[#9308]: https://github.com/home-assistant/home-assistant/pull/9308 +[#9309]: https://github.com/home-assistant/home-assistant/pull/9309 +[#9311]: https://github.com/home-assistant/home-assistant/pull/9311 +[#9316]: https://github.com/home-assistant/home-assistant/pull/9316 +[#9320]: https://github.com/home-assistant/home-assistant/pull/9320 +[#9325]: https://github.com/home-assistant/home-assistant/pull/9325 +[#9326]: https://github.com/home-assistant/home-assistant/pull/9326 +[#9341]: https://github.com/home-assistant/home-assistant/pull/9341 +[@1091741+MisterWil]: https://github.com/1091741+MisterWil +[@1868995+ohmer1]: https://github.com/1868995+ohmer1 +[@30200174+upsert]: https://github.com/30200174+upsert +[@BioSehnsucht]: https://github.com/BioSehnsucht +[@EmitKiwi]: https://github.com/EmitKiwi +[@Julius2342]: https://github.com/Julius2342 +[@LinuxChristian]: https://github.com/LinuxChristian +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MikeChristianson]: https://github.com/MikeChristianson +[@Tommatheussen]: https://github.com/Tommatheussen +[@abmantis]: https://github.com/abmantis +[@aetolus]: https://github.com/aetolus +[@andreasjacobsen93]: https://github.com/andreasjacobsen93 +[@andrey-git]: https://github.com/andrey-git +[@armills]: https://github.com/armills +[@arsaboo]: https://github.com/arsaboo +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@belyalov]: https://github.com/belyalov +[@bobnwk]: https://github.com/bobnwk +[@btotharye]: https://github.com/btotharye +[@commento]: https://github.com/commento +[@dale3h]: https://github.com/dale3h +[@danielhiversen]: https://github.com/danielhiversen +[@dansarginson]: https://github.com/dansarginson +[@drkp]: https://github.com/drkp +[@emlt]: https://github.com/emlt +[@fabaff]: https://github.com/fabaff +[@filcole]: https://github.com/filcole +[@gollo]: https://github.com/gollo +[@gunnarhelgason]: https://github.com/gunnarhelgason +[@happyleavesaoc]: https://github.com/happyleavesaoc +[@jalmeroth]: https://github.com/jalmeroth +[@jeroenterheerdt]: https://github.com/jeroenterheerdt +[@jkl1337]: https://github.com/jkl1337 +[@jlmcgehee21]: https://github.com/jlmcgehee21 +[@krismolendyke]: https://github.com/krismolendyke +[@matemaciek]: https://github.com/matemaciek +[@maweki]: https://github.com/maweki +[@mezz64]: https://github.com/mezz64 +[@mjj4791]: https://github.com/mjj4791 +[@molobrakos]: https://github.com/molobrakos +[@pfalcon]: https://github.com/pfalcon +[@pschmitt]: https://github.com/pschmitt +[@pvizeli]: https://github.com/pvizeli +[@runningman84]: https://github.com/runningman84 +[@scarface-4711]: https://github.com/scarface-4711 +[@sielicki]: https://github.com/sielicki +[@sirmalloc]: https://github.com/sirmalloc +[@snjoetw]: https://github.com/snjoetw +[@syssi]: https://github.com/syssi +[@tboyce021]: https://github.com/tboyce021 +[@tchellomello]: https://github.com/tchellomello +[@tinloaf]: https://github.com/tinloaf +[@w1ll1am23]: https://github.com/w1ll1am23 +[@zabuldon]: https://github.com/zabuldon +[abode docs]: https://home-assistant.io/components/abode/ +[alarm_control_panel.abode docs]: https://home-assistant.io/components/alarm_control_panel.abode/ +[alarm_control_panel.egardia docs]: https://home-assistant.io/components/alarm_control_panel.egardia/ +[alarm_control_panel.manual docs]: https://home-assistant.io/components/alarm_control_panel.manual/ +[binary_sensor.abode docs]: https://home-assistant.io/components/binary_sensor.abode/ +[binary_sensor.bayesian docs]: https://home-assistant.io/components/binary_sensor.bayesian/ +[binary_sensor.hikvision docs]: https://home-assistant.io/components/binary_sensor.hikvision/ +[binary_sensor.homematic docs]: https://home-assistant.io/components/binary_sensor.homematic/ +[binary_sensor.ring docs]: https://home-assistant.io/components/binary_sensor.ring/ +[binary_sensor.tesla docs]: https://home-assistant.io/components/binary_sensor.tesla/ +[binary_sensor.xiaomi docs]: https://home-assistant.io/components/binary_sensor.xiaomi/ +[binary_sensor.knx docs]: https://home-assistant.io/components/binary_sensor.knx/ +[climate.homematic docs]: https://home-assistant.io/components/climate.homematic/ +[climate.honeywell docs]: https://home-assistant.io/components/climate.honeywell/ +[climate.tesla docs]: https://home-assistant.io/components/climate.tesla/ +[climate.knx docs]: https://home-assistant.io/components/climate.knx/ +[cloud docs]: https://home-assistant.io/components/cloud/ +[cloud.cloud_api docs]: https://home-assistant.io/components/cloud.cloud_api/ +[cloud.const docs]: https://home-assistant.io/components/cloud.const/ +[cloud.http_api docs]: https://home-assistant.io/components/cloud.http_api/ +[cloud.util docs]: https://home-assistant.io/components/cloud.util/ +[config docs]: https://home-assistant.io/components/config/ +[config.customize docs]: https://home-assistant.io/components/config.customize/ +[counter docs]: https://home-assistant.io/components/counter/ +[cover.abode docs]: https://home-assistant.io/components/cover.abode/ +[cover.homematic docs]: https://home-assistant.io/components/cover.homematic/ +[cover.lutron_caseta docs]: https://home-assistant.io/components/cover.lutron_caseta/ +[cover.rfxtrx docs]: https://home-assistant.io/components/cover.rfxtrx/ +[cover.xiaomi docs]: https://home-assistant.io/components/cover.xiaomi/ +[cover.knx docs]: https://home-assistant.io/components/cover.knx/ +[device_tracker.automatic docs]: https://home-assistant.io/components/device_tracker.automatic/ +[device_tracker.geofency docs]: https://home-assistant.io/components/device_tracker.geofency/ +[device_tracker.tesla docs]: https://home-assistant.io/components/device_tracker.tesla/ +[device_tracker.volvooncall docs]: https://home-assistant.io/components/device_tracker.volvooncall/ +[hdmi_cec docs]: https://home-assistant.io/components/hdmi_cec/ +[homematic docs]: https://home-assistant.io/components/homematic/ +[image_processing.dlib_face_detect docs]: https://home-assistant.io/components/image_processing.dlib_face_detect/ +[image_processing.dlib_face_identify docs]: https://home-assistant.io/components/image_processing.dlib_face_identify/ +[input_text docs]: https://home-assistant.io/components/input_text/ +[insteon_plm docs]: https://home-assistant.io/components/insteon_plm/ +[light.homematic docs]: https://home-assistant.io/components/light.homematic/ +[light.hue docs]: https://home-assistant.io/components/light.hue/ +[light.lutron_caseta docs]: https://home-assistant.io/components/light.lutron_caseta/ +[light.mqtt docs]: https://home-assistant.io/components/light.mqtt/ +[light.xiaomi_philipslight docs]: https://home-assistant.io/components/light.xiaomi_philipslight/ +[light.rfxtrx docs]: https://home-assistant.io/components/light.rfxtrx/ +[light.tradfri docs]: https://home-assistant.io/components/light.tradfri/ +[light.knx docs]: https://home-assistant.io/components/light.knx/ +[light.zha docs]: https://home-assistant.io/components/light.zha/ +[lock.abode docs]: https://home-assistant.io/components/lock.abode/ +[lock.nello docs]: https://home-assistant.io/components/lock.nello/ +[lock.tesla docs]: https://home-assistant.io/components/lock.tesla/ +[lutron_caseta docs]: https://home-assistant.io/components/lutron_caseta/ +[media_extractor docs]: https://home-assistant.io/components/media_extractor/ +[media_player.denonavr docs]: https://home-assistant.io/components/media_player.denonavr/ +[media_player.directv docs]: https://home-assistant.io/components/media_player.directv/ +[media_player.sonos docs]: https://home-assistant.io/components/media_player.sonos/ +[media_player.spotify docs]: https://home-assistant.io/components/media_player.spotify/ +[media_player.yamaha_musiccast docs]: https://home-assistant.io/components/media_player.yamaha_musiccast/ +[mycroft docs]: https://home-assistant.io/components/mycroft/ +[mysensors docs]: https://home-assistant.io/components/mysensors/ +[notify.discord docs]: https://home-assistant.io/components/notify.discord/ +[notify.mycroft docs]: https://home-assistant.io/components/notify.mycroft/ +[notify.pushbullet docs]: https://home-assistant.io/components/notify.pushbullet/ +[notify.sendgrid docs]: https://home-assistant.io/components/notify.sendgrid/ +[notify.twitter docs]: https://home-assistant.io/components/notify.twitter/ +[notify.xmpp docs]: https://home-assistant.io/components/notify.xmpp/ +[rfxtrx docs]: https://home-assistant.io/components/rfxtrx/ +[sensor.airvisual docs]: https://home-assistant.io/components/sensor.airvisual/ +[sensor.buienradar docs]: https://home-assistant.io/components/sensor.buienradar/ +[sensor.dht docs]: https://home-assistant.io/components/sensor.dht/ +[sensor.dwdwarnapp docs]: https://home-assistant.io/components/sensor.dwdwarnapp/ +[sensor.fitbit docs]: https://home-assistant.io/components/sensor.fitbit/ +[sensor.homematic docs]: https://home-assistant.io/components/sensor.homematic/ +[sensor.mopar docs]: https://home-assistant.io/components/sensor.mopar/ +[sensor.radarr docs]: https://home-assistant.io/components/sensor.radarr/ +[sensor.season docs]: https://home-assistant.io/components/sensor.season/ +[sensor.shodan docs]: https://home-assistant.io/components/sensor.shodan/ +[sensor.sonarr docs]: https://home-assistant.io/components/sensor.sonarr/ +[sensor.statistics docs]: https://home-assistant.io/components/sensor.statistics/ +[sensor.systemmonitor docs]: https://home-assistant.io/components/sensor.systemmonitor/ +[sensor.tank_utility docs]: https://home-assistant.io/components/sensor.tank_utility/ +[sensor.tesla docs]: https://home-assistant.io/components/sensor.tesla/ +[sensor.uber docs]: https://home-assistant.io/components/sensor.uber/ +[sensor.worldtidesinfo docs]: https://home-assistant.io/components/sensor.worldtidesinfo/ +[sensor.knx docs]: https://home-assistant.io/components/sensor.knx/ +[snips docs]: https://home-assistant.io/components/snips/ +[switch.abode docs]: https://home-assistant.io/components/switch.abode/ +[switch.digitalloggers docs]: https://home-assistant.io/components/switch.digitalloggers/ +[switch.dlink docs]: https://home-assistant.io/components/switch.dlink/ +[switch.homematic docs]: https://home-assistant.io/components/switch.homematic/ +[switch.lutron_caseta docs]: https://home-assistant.io/components/switch.lutron_caseta/ +[switch.rest docs]: https://home-assistant.io/components/switch.rest/ +[switch.rfxtrx docs]: https://home-assistant.io/components/switch.rfxtrx/ +[switch.knx docs]: https://home-assistant.io/components/switch.knx/ +[telegram_bot docs]: https://home-assistant.io/components/telegram_bot/ +[tesla docs]: https://home-assistant.io/components/tesla/ +[tradfri docs]: https://home-assistant.io/components/tradfri/ +[volvooncall docs]: https://home-assistant.io/components/volvooncall/ +[xiaomi docs]: https://home-assistant.io/components/xiaomi/ +[knx docs]: https://home-assistant.io/components/knx/ +[zwave docs]: https://home-assistant.io/components/zwave/ +[forum]: https://community.home-assistant.io/ +[issue]: https://github.com/home-assistant/home-assistant/issues +[discord]: https://discord.gg/c5DvZ4e +[#9354]: https://github.com/home-assistant/home-assistant/pull/9354 +[#9380]: https://github.com/home-assistant/home-assistant/pull/9380 +[#9387]: https://github.com/home-assistant/home-assistant/pull/9387 +[@viswa-swami]: https://github.com/viswa-swami +[camera.foscam docs]: https://home-assistant.io/components/camera.foscam/ +[sensor.wunderground docs]: https://home-assistant.io/components/sensor.wunderground/ diff --git a/source/_posts/2017-09-23-release-54.markdown b/source/_posts/2017-09-23-release-54.markdown new file mode 100644 index 00000000000..97fb51ea0c8 --- /dev/null +++ b/source/_posts/2017-09-23-release-54.markdown @@ -0,0 +1,355 @@ +--- +layout: post +title: "0.54: Todoist, DoorBird, Abode cameras" +description: "4 years of Home Assistant is celebrated with another great release." +date: 2017-09-23 00:11:05 +date_formatted: "September 23, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2017-09-0.54/components.png +--- + + + +We're approaching the end of September and that means that it was our birthday! We are now officially 4 years old and are getting more amazing with every release. This release too will include some great new stuff and tons of bugfixes. Included is a bug fix by [@fanthos] that should fix the frontend in some browsers. If you had issues with your browser before, make sure to check out this release. + +This release we've started the work to make our Xiaomi integrations more robust. This meant that we've had to rename the components to make it more clear which of the Xiaomi protocols are being used. We have some developers working on making this very affordable home automation solution a first class citizen in the Home Assistant ecosystem, stay tuned for more integrations! + +Another cool thing in this release is the new [`mqtt_statestream`][mqtt_statestream docs] component to export state changes to MQTT. Each entity will be exported on their own topic which makes it very easy to subscribe to individual entity updates. + +## {% linkable_title New Platforms %} + +- Added mqtt_statestream component ([@mw-white] - [#9286]) ([mqtt_statestream docs]) (new-platform) +- Add support for Todoist platform ([@Jay2645] - [#9236]) ([calendar.todoist docs]) (new-platform) +- DoorBird Component ([@Klikini] - [#9281]) ([doorbird docs]) ([binary_sensor.doorbird docs]) ([camera.doorbird docs]) ([switch.doorbird docs]) (new-platform) +- Basic MQTT vacuum support ([@johnboiles] - [#9386]) ([vacuum docs]) ([vacuum.mqtt docs]) (new-platform) +- Added Zyxel Keenetic NDMS2 based routers support for device tracking ([@foxel] - [#9315]) ([device_tracker.keenetic_ndms2 docs]) (new-platform) +- Telnet switch ([@multiholle] - [#8913]) ([switch.telnet docs]) (new-platform) +- Abode services, events, lights, cameras, automations, quick actions. ([@MisterWil] - [#9310]) ([abode docs]) ([alarm_control_panel.abode docs]) ([binary_sensor.abode docs]) ([camera.abode docs]) ([cover.abode docs]) ([light.abode docs]) ([lock.abode docs]) ([switch.abode docs]) (new-platform) +- Added satel_integra alarm panel and binary sensor platform ([@c-soft] - [#9336]) ([satel_integra docs]) ([alarm_control_panel.satel_integra docs]) ([binary_sensor.satel_integra docs]) (new-platform) +- Worx Landroid sensor ([@nilzen] - [#9416]) ([sensor.worxlandroid docs]) (new-platform) + +## {% linkable_title If you need help... %} +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} +Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- Sensor - OneWire: This update changes the names of the sensors from `` to ` ` ([@tcastberg] - [#9404]) ([sensor.onewire docs]) (breaking change) +- Renamed Xiaomi platforms to include their protocol names. xiaomi -> xiaomi_aqara, xiaomi_aqara.switch, xiaomi_aqara.light, xiaomi_aqara.binary_sensor, ... and vacuum.xiaomi, xiaomi_philipslight -> xiaomi_miio, vacuum.xiaomi_miio, light.xiaomi_miio ([@danielhiversen] - [#9426]) (breaking change) +- Swiss Public Transport sensor: All times handled by the Swiss Public Transport sensor are now in ISO 8601 format. Please update your templates sensors and automations. ([@fabaff] - [#9129]) ([sensor.swiss_public_transport docs]) (breaking change) +- iOS: All category identifiers need to be lowercase. If you do not update, it will break actionable notifications to IOS devices sent by scripts/automations. ([@rbflurry] - [#9427]) (breaking change) +- Fitbit: Put endpoints behind `/api` like the other oauth-using components ([@happyleavesaoc] - [#9460]) ([sensor.fitbit docs]) (breaking change) +- Version 0.53 introduced a bug in the HomeMatic component which breaks the usage of system variables on the CCU / Homegear. This has not been fixed yet. If you are using these variables in your automations you should skip updates until the bug has been resolved. Upgrading is safe however if you only interact with devices. + +## {% linkable_title All changes %} + +- Add HTTP Basic auth to RESTful Switch ([@amelchio] - [#9162]) ([switch.rest docs]) +- Bump pywebpush and pyJWT versions ([@fanaticDavid] - [#9355]) ([notify.html5 docs]) +- Add /usr/sbin to PATH ([@morberg] - [#9364]) +- Add polling interval service and setting available through zwave node entity panel ([@turbokongen] - [#9056]) ([zwave docs]) +- Round off probability to 2 decimals. ([@arsaboo] - [#9365]) ([binary_sensor.bayesian docs]) +- Added mqtt_statestream component ([@mw-white] - [#9286]) ([mqtt_statestream docs]) (new-platform) +- typo in waypoint import topic preventing waypoint import ([@diplix] - [#9338]) ([device_tracker.owntracks docs]) +- Cleanup and simplitfy the async state update ([@pvizeli] - [#9390]) +- Update cloud auth ([@balloob] - [#9357]) +- Allow multiple observations of same entity ([@jlmcgehee21] - [#9391]) ([binary_sensor.bayesian docs]) +- Break up Alexa per functionality ([@balloob] - [#9400]) ([alexa docs]) +- Upgrade psutil to 5.3.1 ([@fabaff] - [#9403]) ([sensor.systemmonitor docs]) +- fix mopar sensor ([@happyleavesaoc] - [#9389]) ([sensor.mopar docs]) +- Support specifying no Apple TVs ([@postlund] - [#9394]) ([apple_tv docs]) +- Update netdisco to 1.2.0 ([@balloob] - [#9408]) +- components/xiaomi: Add initial discovery using NetDisco. ([@pfalcon] - [#9283]) +- Fix copy&paste mistake ([@tinloaf] - [#9378]) +- Added log-file command line flag ([@TD22057] - [#9422]) +- Add LC_CTYPE to environment variables in macOS ([@morberg] - [#9227]) +- Added more devices and types to onewire ([@tcastberg] - [#9404]) ([sensor.onewire docs]) (breaking change) +- Bump uvcclient to 0.10.1 to work with beta NVR releases ([@antonym] - [#9423]) ([camera.uvc docs]) +- full RGB support for users of tradfri GW ([@spektren] - [#9411]) ([light.tradfri docs]) +- Add support for Todoist platform ([@Jay2645] - [#9236]) ([calendar.todoist docs]) (new-platform) +- Fix artwork bug in Apple TV ([@postlund] - [#9415]) ([media_player.apple_tv docs]) +- Bump python-mirobo for improved device support and introduce API changes. ([@syssi] - [#9424]) +- MPD small improvements ([@pdanilew] - [#9301]) ([media_player.mpd docs]) +- update broadlink.py to add support for MP1 switch ([@giangvo] - [#9222]) ([switch.broadlink docs]) +- Fix displaying of friendly_name for light template component ([@rollbrettler] - [#9413]) ([light.template docs]) +- Improve Python script ([@doudz] - [#9417]) ([python_script docs]) +- Add manual alarm_control_panel pending time per state ([@snjoetw] - [#9264]) ([alarm_control_panel.manual docs]) +- Rename xiaomi #9425 ([@danielhiversen] - [#9426]) (breaking change) +- Bump version of aioautomatic ([@armills] - [#9435]) ([device_tracker.automatic docs]) +- Fix russound_rio for python 3.4 ([@wickerwaka] - [#9428]) ([media_player.russound_rio docs]) +- Basic MQTT vacuum support ([@johnboiles] - [#9386]) ([vacuum docs]) ([vacuum.mqtt docs]) (new-platform) +- Optimaze vacuum mqtt platform ([@pvizeli] - [#9439]) ([vacuum.mqtt docs]) +- Polymer access to log file broken when using new log file command line ([@TD22057] - [#9437]) +- Allow empty hostnames when detecting devices with the aruba device_tracker. ([@michaelarnauts] - [#9440]) ([device_tracker.aruba docs]) +- mqtt_statestream: Update to append 'state' to topic for future use with mqtt discovery ([@mw-white] - [#9446]) ([mqtt_statestream docs]) +- Fix for DTE Energy Bridge returning the wrong units from time to time ([@kylehendricks] - [#9246]) ([sensor.dte_energy_bridge docs]) +- Refactor Swiss Public Transport sensor ([@fabaff] - [#9129]) ([sensor.swiss_public_transport docs]) (breaking change) +- Added Zyxel Keenetic NDMS2 based routers support for device tracking ([@foxel] - [#9315]) ([device_tracker.keenetic_ndms2 docs]) (new-platform) +- Add city/state/country options and fix bugs for airvisual ([@bachya] - [#9436]) ([sensor.airvisual docs]) +- Fix emulated hue warning message ([@astone123] - [#9452]) ([emulated_hue docs]) +- Alexa smart home native support ([@pvizeli] - [#9443]) +- fix for Twitter notifications without media ([@MikeChristianson] - [#9448]) +- Load WebComponent polyfill on header. ([@fanthos] - [#9438]) +- Fix issue 5728: Emulated Hue UPnP crashes on special characters. ([@SqyD] - [#9453]) +- Ios notify camera fix ([@rbflurry] - [#9427]) (breaking change) +- Adds MQTT Fan Discovery ([@hufman] - [#9463]) +- Upgrade sqlalchemy to 1.1.14 ([@fabaff] - [#9458]) +- Upgrade uber_rides to 0.6.0 ([@fabaff] - [#9457]) ([sensor.uber docs]) +- Upgrade youtube_dl to 2017.9.15 ([@fabaff] - [#9456]) +- DoorBird Component ([@Klikini] - [#9281]) ([doorbird docs]) ([binary_sensor.doorbird docs]) ([camera.doorbird docs]) ([switch.doorbird docs]) (new-platform) +- Fix recorder does not vacuum SQLite DB on purge ([@milanvo] - [#9469]) +- fitbit fixes ([@happyleavesaoc] - [#9460]) ([sensor.fitbit docs]) (breaking change) +- Fix typo in services.yaml ([@mika] - [#9475]) +- Upgrade pyasn1 to 0.3.5 and pyasn1-modules to 0.1.4 ([@fabaff] - [#9474]) ([notify.xmpp docs]) +- Xiaomi Gateway: Allow static configuration of a gateway without discovery ([@syssi] - [#9464]) ([xiaomi_aqara docs]) +- Added support for the DTE Energy Bridge v2 ([@Blender3D] - [#9431]) ([sensor.dte_energy_bridge docs]) +- Telnet switch ([@multiholle] - [#8913]) ([switch.telnet docs]) (new-platform) +- Abode services, events, lights, cameras, automations, quick actions. ([@MisterWil] - [#9310]) ([abode docs]) ([alarm_control_panel.abode docs]) ([binary_sensor.abode docs]) ([camera.abode docs]) ([cover.abode docs]) ([light.abode docs]) ([lock.abode docs]) ([switch.abode docs]) (new-platform) +- Added satel_integra alarm panel and binary sensor platform ([@c-soft] - [#9336]) ([satel_integra docs]) ([alarm_control_panel.satel_integra docs]) ([binary_sensor.satel_integra docs]) (new-platform) +- Worx Landroid sensor ([@nilzen] - [#9416]) ([sensor.worxlandroid docs]) (new-platform) +- Fix universal media_player mute ([@colindunn] - [#9462]) ([media_player.universal docs]) +- Small improvement of KNX Covers ([@Julius2342] - [#9476]) +- Upgrade async_timeout to 1.4.0 ([@fabaff] - [#9488]) +- Bump version of abodepy ([@MisterWil] - [#9491]) ([abode docs]) +- Upgrade coinmarketcap to 4.1.1 ([@fabaff] - [#9490]) ([sensor.coinmarketcap docs]) +- Upgrade blockchain to 1.4.0 ([@fabaff] - [#9489]) +- Solve Recorder component failing when using Axis component ([@Kane610] - [#9293]) ([axis docs]) ([camera.axis docs]) +- switch to pypi for xiaomi gw ([@danielhiversen] - [#9498]) ([xiaomi_aqara docs]) +- renamed add_devices to async_add_devices according to hass naming scheme ([@Julius2342] - [#9485]) ([binary_sensor.knx docs]) ([climate.knx docs]) ([light.knx docs]) ([sensor.knx docs]) ([switch.knx docs]) +- Revert "renamed add_devices to async_add_devices according to hass naming scheme (#9485)" ([@pvizeli] - [#9503]) ([alarm_control_panel.spc docs]) ([binary_sensor.knx docs]) ([binary_sensor.spc docs]) ([climate.knx docs]) ([light.knx docs]) ([sensor.citybikes docs]) ([sensor.knx docs]) ([sensor.worxlandroid docs]) ([switch.knx docs]) +- LIFX: fix multi-zone color restore after effects ([@amelchio] - [#9492]) ([light.lifx docs]) +- renamed add_devices to async_add_devices according to hass naming scheme (second try after failed #9485) ([@Julius2342] - [#9505]) ([alarm_control_panel.spc docs]) ([binary_sensor.knx docs]) ([binary_sensor.spc docs]) ([climate.knx docs]) ([light.knx docs]) ([sensor.citybikes docs]) ([sensor.knx docs]) ([sensor.worxlandroid docs]) ([switch.knx docs]) +- Xiaomi pycryptodome ([@danielhiversen] - [#9511]) ([xiaomi_aqara docs]) +- Bumped pyhomematic, additional device support ([@danielperna84] - [#9506]) ([homematic docs]) ([sensor.homematic docs]) +- abode: Bump abodepy dependency to 0.11.7 ([@vickyg3] - [#9504]) ([abode docs]) +- abode: Set device_type in state attributes ([@vickyg3] - [#9515]) ([abode docs]) +- update xiaomi aqara lib ([@danielhiversen] - [#9520]) ([xiaomi_aqara docs]) +- added services.yaml integration for input_boolean ([@skalavala] - [#9519]) ([input_boolean docs]) +- Add reload service to python_script ([@doudz] - [#9512]) ([python_script docs]) +- MQTT Binary Sensor - Add availability_topic for online/offline status ([@marthoc] - [#9507]) ([binary_sensor.mqtt docs]) +- Fix typo within cover/knx https://github.com/XKNX/xknx/issues/64 ([@Julius2342] - [#9527]) ([cover.knx docs]) +- LIFX: improve performance of setting multi-zone lights to a single color ([@amelchio] - [#9526]) ([light.lifx docs]) + +[#8913]: https://github.com/home-assistant/home-assistant/pull/8913 +[#9056]: https://github.com/home-assistant/home-assistant/pull/9056 +[#9129]: https://github.com/home-assistant/home-assistant/pull/9129 +[#9162]: https://github.com/home-assistant/home-assistant/pull/9162 +[#9222]: https://github.com/home-assistant/home-assistant/pull/9222 +[#9227]: https://github.com/home-assistant/home-assistant/pull/9227 +[#9236]: https://github.com/home-assistant/home-assistant/pull/9236 +[#9246]: https://github.com/home-assistant/home-assistant/pull/9246 +[#9264]: https://github.com/home-assistant/home-assistant/pull/9264 +[#9281]: https://github.com/home-assistant/home-assistant/pull/9281 +[#9283]: https://github.com/home-assistant/home-assistant/pull/9283 +[#9286]: https://github.com/home-assistant/home-assistant/pull/9286 +[#9293]: https://github.com/home-assistant/home-assistant/pull/9293 +[#9301]: https://github.com/home-assistant/home-assistant/pull/9301 +[#9310]: https://github.com/home-assistant/home-assistant/pull/9310 +[#9315]: https://github.com/home-assistant/home-assistant/pull/9315 +[#9336]: https://github.com/home-assistant/home-assistant/pull/9336 +[#9338]: https://github.com/home-assistant/home-assistant/pull/9338 +[#9355]: https://github.com/home-assistant/home-assistant/pull/9355 +[#9357]: https://github.com/home-assistant/home-assistant/pull/9357 +[#9364]: https://github.com/home-assistant/home-assistant/pull/9364 +[#9365]: https://github.com/home-assistant/home-assistant/pull/9365 +[#9378]: https://github.com/home-assistant/home-assistant/pull/9378 +[#9386]: https://github.com/home-assistant/home-assistant/pull/9386 +[#9389]: https://github.com/home-assistant/home-assistant/pull/9389 +[#9390]: https://github.com/home-assistant/home-assistant/pull/9390 +[#9391]: https://github.com/home-assistant/home-assistant/pull/9391 +[#9394]: https://github.com/home-assistant/home-assistant/pull/9394 +[#9400]: https://github.com/home-assistant/home-assistant/pull/9400 +[#9403]: https://github.com/home-assistant/home-assistant/pull/9403 +[#9404]: https://github.com/home-assistant/home-assistant/pull/9404 +[#9408]: https://github.com/home-assistant/home-assistant/pull/9408 +[#9411]: https://github.com/home-assistant/home-assistant/pull/9411 +[#9413]: https://github.com/home-assistant/home-assistant/pull/9413 +[#9415]: https://github.com/home-assistant/home-assistant/pull/9415 +[#9416]: https://github.com/home-assistant/home-assistant/pull/9416 +[#9417]: https://github.com/home-assistant/home-assistant/pull/9417 +[#9422]: https://github.com/home-assistant/home-assistant/pull/9422 +[#9423]: https://github.com/home-assistant/home-assistant/pull/9423 +[#9424]: https://github.com/home-assistant/home-assistant/pull/9424 +[#9426]: https://github.com/home-assistant/home-assistant/pull/9426 +[#9427]: https://github.com/home-assistant/home-assistant/pull/9427 +[#9428]: https://github.com/home-assistant/home-assistant/pull/9428 +[#9431]: https://github.com/home-assistant/home-assistant/pull/9431 +[#9435]: https://github.com/home-assistant/home-assistant/pull/9435 +[#9436]: https://github.com/home-assistant/home-assistant/pull/9436 +[#9437]: https://github.com/home-assistant/home-assistant/pull/9437 +[#9438]: https://github.com/home-assistant/home-assistant/pull/9438 +[#9439]: https://github.com/home-assistant/home-assistant/pull/9439 +[#9440]: https://github.com/home-assistant/home-assistant/pull/9440 +[#9443]: https://github.com/home-assistant/home-assistant/pull/9443 +[#9446]: https://github.com/home-assistant/home-assistant/pull/9446 +[#9448]: https://github.com/home-assistant/home-assistant/pull/9448 +[#9452]: https://github.com/home-assistant/home-assistant/pull/9452 +[#9453]: https://github.com/home-assistant/home-assistant/pull/9453 +[#9456]: https://github.com/home-assistant/home-assistant/pull/9456 +[#9457]: https://github.com/home-assistant/home-assistant/pull/9457 +[#9458]: https://github.com/home-assistant/home-assistant/pull/9458 +[#9460]: https://github.com/home-assistant/home-assistant/pull/9460 +[#9462]: https://github.com/home-assistant/home-assistant/pull/9462 +[#9463]: https://github.com/home-assistant/home-assistant/pull/9463 +[#9464]: https://github.com/home-assistant/home-assistant/pull/9464 +[#9469]: https://github.com/home-assistant/home-assistant/pull/9469 +[#9474]: https://github.com/home-assistant/home-assistant/pull/9474 +[#9475]: https://github.com/home-assistant/home-assistant/pull/9475 +[#9476]: https://github.com/home-assistant/home-assistant/pull/9476 +[#9485]: https://github.com/home-assistant/home-assistant/pull/9485 +[#9488]: https://github.com/home-assistant/home-assistant/pull/9488 +[#9489]: https://github.com/home-assistant/home-assistant/pull/9489 +[#9490]: https://github.com/home-assistant/home-assistant/pull/9490 +[#9491]: https://github.com/home-assistant/home-assistant/pull/9491 +[#9492]: https://github.com/home-assistant/home-assistant/pull/9492 +[#9498]: https://github.com/home-assistant/home-assistant/pull/9498 +[#9503]: https://github.com/home-assistant/home-assistant/pull/9503 +[#9504]: https://github.com/home-assistant/home-assistant/pull/9504 +[#9505]: https://github.com/home-assistant/home-assistant/pull/9505 +[#9506]: https://github.com/home-assistant/home-assistant/pull/9506 +[#9507]: https://github.com/home-assistant/home-assistant/pull/9507 +[#9511]: https://github.com/home-assistant/home-assistant/pull/9511 +[#9512]: https://github.com/home-assistant/home-assistant/pull/9512 +[#9515]: https://github.com/home-assistant/home-assistant/pull/9515 +[#9519]: https://github.com/home-assistant/home-assistant/pull/9519 +[#9520]: https://github.com/home-assistant/home-assistant/pull/9520 +[#9526]: https://github.com/home-assistant/home-assistant/pull/9526 +[#9527]: https://github.com/home-assistant/home-assistant/pull/9527 +[@MisterWil]: https://github.com/MisterWil +[@pdanilew]: https://github.com/pdanilew +[@marthoc]: https://github.com/marthoc +[@spektren]: https://github.com/spektren +[@Blender3D]: https://github.com/Blender3D +[@Jay2645]: https://github.com/Jay2645 +[@Julius2342]: https://github.com/Julius2342 +[@Kane610]: https://github.com/Kane610 +[@Klikini]: https://github.com/Klikini +[@MikeChristianson]: https://github.com/MikeChristianson +[@SqyD]: https://github.com/SqyD +[@TD22057]: https://github.com/TD22057 +[@amelchio]: https://github.com/amelchio +[@antonym]: https://github.com/antonym +[@armills]: https://github.com/armills +[@arsaboo]: https://github.com/arsaboo +[@astone123]: https://github.com/astone123 +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@c-soft]: https://github.com/c-soft +[@colindunn]: https://github.com/colindunn +[@danielhiversen]: https://github.com/danielhiversen +[@danielperna84]: https://github.com/danielperna84 +[@diplix]: https://github.com/diplix +[@doudz]: https://github.com/doudz +[@fabaff]: https://github.com/fabaff +[@fanaticDavid]: https://github.com/fanaticDavid +[@fanthos]: https://github.com/fanthos +[@foxel]: https://github.com/foxel +[@giangvo]: https://github.com/giangvo +[@happyleavesaoc]: https://github.com/happyleavesaoc +[@hufman]: https://github.com/hufman +[@jlmcgehee21]: https://github.com/jlmcgehee21 +[@johnboiles]: https://github.com/johnboiles +[@kylehendricks]: https://github.com/kylehendricks +[@michaelarnauts]: https://github.com/michaelarnauts +[@mika]: https://github.com/mika +[@milanvo]: https://github.com/milanvo +[@morberg]: https://github.com/morberg +[@multiholle]: https://github.com/multiholle +[@mw-white]: https://github.com/mw-white +[@nilzen]: https://github.com/nilzen +[@pfalcon]: https://github.com/pfalcon +[@postlund]: https://github.com/postlund +[@pvizeli]: https://github.com/pvizeli +[@rbflurry]: https://github.com/rbflurry +[@rollbrettler]: https://github.com/rollbrettler +[@skalavala]: https://github.com/skalavala +[@snjoetw]: https://github.com/snjoetw +[@syssi]: https://github.com/syssi +[@tcastberg]: https://github.com/tcastberg +[@tinloaf]: https://github.com/tinloaf +[@turbokongen]: https://github.com/turbokongen +[@vickyg3]: https://github.com/vickyg3 +[@wickerwaka]: https://github.com/wickerwaka +[abode docs]: /components/abode/ +[alarm_control_panel.abode docs]: /components/alarm_control_panel.abode/ +[alarm_control_panel.manual docs]: /components/alarm_control_panel.manual/ +[alarm_control_panel.satel_integra docs]: /components/alarm_control_panel.satel_integra/ +[alarm_control_panel.spc docs]: /components/alarm_control_panel.spc/ +[alexa docs]: /components/alexa/ +[api docs]: /components/api/ +[apple_tv docs]: /components/apple_tv/ +[axis docs]: /components/axis/ +[binary_sensor.abode docs]: /components/binary_sensor.abode/ +[binary_sensor.bayesian docs]: /components/binary_sensor.bayesian/ +[binary_sensor.doorbird docs]: /components/binary_sensor.doorbird/ +[binary_sensor.knx docs]: /components/binary_sensor.knx/ +[binary_sensor.mqtt docs]: /components/binary_sensor.mqtt/ +[binary_sensor.satel_integra docs]: /components/binary_sensor.satel_integra/ +[binary_sensor.spc docs]: /components/binary_sensor.spc/ +[calendar.todoist docs]: /components/calendar.todoist/ +[camera.abode docs]: /components/camera.abode/ +[camera.axis docs]: /components/camera.axis/ +[camera.doorbird docs]: /components/camera.doorbird/ +[camera.uvc docs]: /components/camera.uvc/ +[climate.knx docs]: /components/climate.knx/ +[config.zwave docs]: /components/config.zwave/ +[cover.abode docs]: /components/cover.abode/ +[cover.knx docs]: /components/cover.knx/ +[device_tracker.aruba docs]: /components/device_tracker.aruba/ +[device_tracker.automatic docs]: /components/device_tracker.automatic/ +[device_tracker.keenetic_ndms2 docs]: /components/device_tracker.keenetic_ndms2/ +[device_tracker.owntracks docs]: /components/device_tracker.owntracks/ +[doorbird docs]: /components/doorbird/ +[emulated_hue docs]: /components/emulated_hue/ +[homematic docs]: /components/homematic/ +[input_boolean docs]: /components/input_boolean/ +[light.abode docs]: /components/light.abode/ +[light.knx docs]: /components/light.knx/ +[light.lifx docs]: /components/light.lifx/ +[light.template docs]: /components/light.template/ +[light.tradfri docs]: /components/light.tradfri/ +[light.xiaomi_philipslight docs]: /components/light.xiaomi_philipslight/ +[lock.abode docs]: /components/lock.abode/ +[media_player.apple_tv docs]: /components/media_player.apple_tv/ +[media_player.mpd docs]: /components/media_player.mpd/ +[media_player.russound_rio docs]: /components/media_player.russound_rio/ +[media_player.universal docs]: /components/media_player.universal/ +[mqtt_statestream docs]: /components/mqtt_statestream/ +[notify.html5 docs]: /components/notify.html5/ +[notify.xmpp docs]: /components/notify.xmpp/ +[python_script docs]: /components/python_script/ +[satel_integra docs]: /components/satel_integra/ +[sensor.airvisual docs]: /components/sensor.airvisual/ +[sensor.citybikes docs]: /components/sensor.citybikes/ +[sensor.coinmarketcap docs]: /components/sensor.coinmarketcap/ +[sensor.dte_energy_bridge docs]: /components/sensor.dte_energy_bridge/ +[sensor.fitbit docs]: /components/sensor.fitbit/ +[sensor.homematic docs]: /components/sensor.homematic/ +[sensor.knx docs]: /components/sensor.knx/ +[sensor.mopar docs]: /components/sensor.mopar/ +[sensor.onewire docs]: /components/sensor.onewire/ +[sensor.swiss_public_transport docs]: /components/sensor.swiss_public_transport/ +[sensor.systemmonitor docs]: /components/sensor.systemmonitor/ +[sensor.uber docs]: /components/sensor.uber/ +[sensor.worxlandroid docs]: /components/sensor.worxlandroid/ +[switch.abode docs]: /components/switch.abode/ +[switch.broadlink docs]: /components/switch.broadlink/ +[switch.doorbird docs]: /components/switch.doorbird/ +[switch.knx docs]: /components/switch.knx/ +[switch.rest docs]: /components/switch.rest/ +[switch.telnet docs]: /components/switch.telnet/ +[vacuum docs]: /components/vacuum/ +[vacuum.mqtt docs]: /components/vacuum.mqtt/ +[vacuum.xiaomi docs]: /components/vacuum.xiaomi/ +[xiaomi docs]: /components/xiaomi/ +[xiaomi_aqara docs]: /components/xiaomi_aqara/ +[zwave docs]: /components/zwave/ +[forum]: https://community.home-assistant.io/ +[issue]: https://github.com/home-assistant/home-assistant/issues +[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-09-27-effortless-encryption-with-lets-encrypt-and-duckdns.markdown b/source/_posts/2017-09-27-effortless-encryption-with-lets-encrypt-and-duckdns.markdown new file mode 100644 index 00000000000..14340b81268 --- /dev/null +++ b/source/_posts/2017-09-27-effortless-encryption-with-lets-encrypt-and-duckdns.markdown @@ -0,0 +1,53 @@ +--- +layout: post +title: "Effortless encryption with Let's Encrypt and DuckDNS" +description: "Get Home Assistant encrypted in less than 5 minutes." +date: 2017-09-27 00:05:00 +0000 +date_formatted: "September 27, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: How-To +og_image: /images/blog/2015-12-lets-encrypt/letsencrypt-secured-fb.png +--- + +When Let's Encrypt launched we were estatic: finally an easy and free way for our users to securely access their homes remotely. Let's Encrypt signifianctly lowered the bar to get and renew SSL certificates. However, this process could still be quite an obstacle for our users. It required opening ports on the router and remembering to renew the certificate every so often. + +Thanks to a [blog post][splitbrain] by Andreas Gohr I realized that DuckDNS supports setting TXT records, making it compatible with the DNS-01 challenge of Let's Encrypt. The DNS-01 challenge is using the DNS record of the domain instead of interacting with the server. This means that it's not needed for the user to open any ports! + +I have worked together with [Pascal Vizeli][pvizeli] on updating the DuckDNS add-on for Hass.io and today we're proud to announce it now includes automatic generation and updating of Let's Encrypt certificates for your DuckDNS domain. The only thing that you have to add to your DuckDNS configuration is that you accept the Let's Encrypt [terms of service][terms] and point Home Assistant at the generated certificates and you're good to go. No other work is required. + +To get started today, start with making sure that you have [Hass.io installed][hassio]. After that, go to the Hass.io panel in Home Assistant, open the add-on store, scroll down to DuckDNS and install it. In the DuckDNS settings change "accept_terms" to true and start it. + +Next up is to configure Home Assistant with the config below and restart it. You're now good to go! Make sure to use the right protocol when browsing to your instance: `https://.duckdns.org`. Happy secure controlling your house! + +```yaml +# Example configuration.yaml entry for the HTTP component +http: + ssl_certificate: /ssl/fullchain.pem + ssl_key: /ssl/privkey.pem +``` + +If you're not using Hass.io, check out the [blog post][splitbrain] by Andreas for instructions. + +If you enjoy the free service provided by DuckDNS and Let's Encrypt, consider donating to their cause: + + - [Become a Patreon of DuckDNS](https://www.patreon.com/user?u=3209735) + - [Donate to Let's Encrypt](https://letsencrypt.org/donate/) + +More information: + + - [Hass.io][hassio] + - [Installing Hass.io][hassio-install] + - [DuckDNS add-on][addon-duckdns] + - [DuckDNS][duckdns] + - [Let's Encrypt][le] + +[splitbrain]: https://www.splitbrain.org/blog/2017-08/10-homeassistant_duckdns_letsencrypt +[terms]: https://letsencrypt.org/repository/ +[pvizeli]: https://github.com/pvizeli +[hassio]: /hassio/ +[hassio-install]: /hassio/installation/ +[addon-duckdns]: /addons/duckdns/ +[duckdns]: http://www.duckdns.org/ +[le]: https://letsencrypt.org/ diff --git a/source/_posts/2017-09-29-hacktoberfest.markdown b/source/_posts/2017-09-29-hacktoberfest.markdown new file mode 100644 index 00000000000..a57eaba03f1 --- /dev/null +++ b/source/_posts/2017-09-29-hacktoberfest.markdown @@ -0,0 +1,46 @@ +--- +layout: post +title: "Participating in Hacktoberfest" +description: "Home Assistant will be participating in Hacktoberfest to help people to get started with open-source." +date: 2017-09-29 08:00:00 +0000 +date_formatted: "September 29, 2017" +author: Fabian Affolter +author_twitter: fabaff +comments: true +categories: Community +og_image: /images/blog/2017-09-hacktoberfest/hacktoberfest-2017.png +--- + +For the second year in a row, Home Assistant will be participating in [Hacktoberfest]. Hacktoberfest is an event organized by DigitalOcean and GitHub to support and celebrate open source. The idea is that open source projects like Home Assistant will gather a bunch of entry-level bugs, features, and documentation enhancements and that you, a current or future contributor, will help us fix them. If you submit four pull-requests during October, you will have earned yourself a limited edition Hacktoberfest T-shirt! + +Why contribute to Home Assistant? + + - Written in Python 3 with 94% test coverage + - Active and helpful community + - Friendly to new contributors + +Resources to get started: + + - [Sign up for Hacktoberfest][Hacktoberfest-reg] + - [List of entry-level issues for Home Assistant][issues] + - [Instructions to setup your development environment][dev-env] + - [Home Assistant Development Chat][dev-chat] + - [Home Assistant Development Forums][dev-forum] + - [Hacktoberfest website][Hacktoberfest] + +Are you not a programmer but still want to contribute to Home Assistant? Check out our [list of entry-level issues for the Home Assistant website][issues-doc]. + +Our participation for [Hacktoberfest 2016][hackt-2016] was a huge success. Join us to repeat it this year. + +[![Hacktober fest logo][logo]][Hacktoberfest] + +[logo]: /images/blog/2016-10-hacktoberfest/hacktoberfest.png +[Hacktoberfest]: https://hacktoberfest.digitalocean.com/ +[Hacktoberfest-reg]: https://hacktoberfest.digitalocean.com/sign_up/register +[issues]: https://github.com/home-assistant/home-assistant/labels/Hacktoberfest +[issues-doc]: https://github.com/home-assistant/home-assistant.github.io/labels/Hacktoberfest +[dev-env]: /developers/development_environment/ +[dev-chat]: https://discord.gg/8X8DTH4 +[dev-forum]: https://community.home-assistant.io/c/development +[hackt-2016]: https://home-assistant.io/blog/2016/11/05/hacktoberfest-influxdb-weather/#hacktoberfest + diff --git a/source/_posts/2017-10-01-hass-podcast-ep9.markdown b/source/_posts/2017-10-01-hass-podcast-ep9.markdown new file mode 100644 index 00000000000..956ab958275 --- /dev/null +++ b/source/_posts/2017-10-01-hass-podcast-ep9.markdown @@ -0,0 +1,22 @@ +--- +layout: post +title: "Home Assistant Podcast #9" +description: "Dale (dale3h) joins Rohan and Dan to talk about Dale’s involvement in the project as a community + leader and his contributions. Dale and Rohan also cover off the 0.54 release." +date: 2017-10-01 00:01:000000 +date_formatted: "October 1, 2017" +author: Dan Faulknor +author_twitter: dangeek +comments: true +categories: Media +og_image: /images/hasspodcast.jpg +--- + +Dale ([dale3h](https://github.com/dale3h)) joins Rohan and Dan to talk about Dale’s involvement in the project as a community + leader and his contributions. Dale and Rohan also cover off the 0.54 release. + +Show notes available on the [Home Assistant Podcast Website](https://hasspodcast.io/ha009/). + +[Listen online][episode] + +[episode]: https://hasspodcast.io/ha009/ diff --git a/source/_posts/2017-10-06-deprecating-python-3.4-support.markdown b/source/_posts/2017-10-06-deprecating-python-3.4-support.markdown new file mode 100644 index 00000000000..8d9364a1438 --- /dev/null +++ b/source/_posts/2017-10-06-deprecating-python-3.4-support.markdown @@ -0,0 +1,31 @@ +--- +layout: post +title: "Deprecating Python 3.4 support" +description: "Starting release 0.55, Python 3.4 support will be deprecated. Support is planned to be removed at the beginning of 2018." +date: 2017-10-06 0:36 +0000 +date_formatted: "October 6, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Technology +--- + +Starting with our next release, 0.55, we will deprecate Python 3.4 support. The current plan is to remove support for Python 3.4 at the beginning of 2018. + +Python 3.5 was released on September 13th, 2015. It has since then become the default Python installation on the stable releases of Debian, Ubuntu, Raspbian and Hassbian. Our other own operating system, Hass.io, is more advanced and is already running the greatly improved Python 3.6. + +The jump to Python 3.5 as a minimum version is driven by the Home Assistant core, which is based on asyncio. Starting with Python 3.5, asyncio got improved support in the language with dedicated keywords `async` and `await`. As this is the proper way of doing async in Python, we're seeing a move by async libraries to either only support the new syntax from the beginning or dropping support for the Python 3.4 approach. Not moving along means an increased maintenance burden as we cannot use the latest releases of our libraries. Next to that it will prevent our users from being able to leverage the bug fixes and performance improvements that come with Python 3.5. + +#### Hass.io +If you're running Hass.io, you don't have to do anything. Your system will always stay up to date. + +#### Hassbian +If you're running Hassbian it's recommended that you make a backup of your configuration files and restore them on a fresh install. Upgrading an existing installation isn't recommended. + +#### Windows +If you're on Windows, you're fine as our minimum version for Windows has been 3.5 for a while now. + +#### Other Debian based systems +If you're running a Debian based system, follow [these instructions][dist-upgrade] to upgrade. + +[dist-upgrade]: https://linuxconfig.org/raspbian-gnu-linux-upgrade-from-jessie-to-raspbian-stretch-9 diff --git a/source/_posts/2017-10-07-release-55.markdown b/source/_posts/2017-10-07-release-55.markdown new file mode 100644 index 00000000000..bbe1bc77380 --- /dev/null +++ b/source/_posts/2017-10-07-release-55.markdown @@ -0,0 +1,412 @@ +--- +layout: post +title: "0.55: Tibber, DuckDNS, The Things Network, Owntrack" +description: "Support for Tibber and the Things Network a long with new Owntracks and DuckDNS features" +date: 2017-10-07 10:00:00 +date_formatted: "October 7, 2017" +author: Fabian Affolter +author_twitter: fabaff +comments: true +categories: Release-Notes +og_image: /images/blog/2017-10-0.55/components.png +--- + + + +Beside the improved Wink support which was contributed by [@w1ll1am23], ships this release a wide variety of new components and platforms. The `input_slider` components has received a makeover by [@BioSehnsucht] and is now [`input_number`][input_number docs]. [@tinloaf] added a feature that allows you to enter dates: [`input_datetime`][input_datetime docs]. Both will help you to improve your automation rules. + +## {% linkable_title DuckDNS %} +Using Home Assistant with [DuckDNS](http://www.duckdns.org) for Dynamic DNS (DDNS or DynDNS) is an [old story](https://home-assistant.io/blog/2015/12/13/setup-encryption-using-lets-encrypt/). DuckDNS is also integrated in [Hass.io](https://home-assistant.io/addons/duckdns/). 0.55 ships a component for non Hass.io users to get a similar feature. + +## {% linkable_title Recorder %} +The purging of data was [improved][recorder docs]. With `purge_interval` you can schedule regular purges of older events and states. In combination you can specify with `purge_keep_days` the amount of days you want to keep. The new service `recorder.purge` allows you to handle this task when needed. + +## {% linkable_title Owntracks %} +[Owntracks](http://owntracks.org/) is an easy way to track your devices. For some times we have the device tracker which depends on [MQTT][device_tracker.owntracks docs] but thanks to a new feature in Owntracks we can now offer support for HTTP. The [new platform][device_tracker.owntracks_http docs] doesn't require a MQTT broker but sends messages directly as HTTP requests to Home Assistant. + +## {% linkable_title Tibber %} +This release introduces a new sensor: [Tibber][sensor.tibber docs]. The sensor provides the current electricity price if you are a [Tibber](https://tibber.com/) customer. This will allow you to make automation for turning off the heater when the electricity price is high or only charge your electric car when the prices are low. We further plan to add support for showing future electricity prices and historic electricity consumption data. Tibber is currently only available in Norway and Sweden + +## {% linkable_title The Things Network %} +[The Things Network](https://www.thethingsnetwork.org/) (TTN) is a [LoRaWAN](https://www.thethingsnetwork.org/wiki/LoRaWAN/Home) based network especially designed for IoT devices. With this [integration][thethingsnetwork docs] one can observe the state of devices which are out of range of the local WiFi network as long as they are connected to a TTN gateway. + +## {% linkable_title New Platforms %} + +- GeoRSS sensor ([@exxamalte] - [#9331]) ([sensor.geo_rss_events docs]) (new-platform) +- Add DuckDNS component ([@balloob] - [#9556]) ([duckdns docs]) (new-platform) +- Add OwnTracks over HTTP ([@balloob] - [#9582]) ([http docs]) ([device_tracker.owntracks docs]) ([device_tracker.owntracks_http docs]) (new-platform) +- Add an input_datetime ([@tinloaf] - [#9313]) ([input_datetime docs]) (new-platform) +- Cover component for RFlink ([@passie] - [#9432]) ([rflink docs]) ([cover.rflink docs]) (new-platform) +- Introducing support to Melnor RainCloud sprinkler systems ([@tchellomello] - [#9287]) ([raincloud docs]) ([binary_sensor.raincloud docs]) ([sensor.raincloud docs]) ([switch.raincloud docs]) (new-platform) +- MQTT climate platform [continuation of #8750] ([@tinloaf] - [#9589]) ([climate.mqtt docs]) (new-platform) +- Add Tibber sensor ([@danielhiversen] - [#9661]) ([sensor.tibber docs]) (new-platform) +- Updating clicksendaudio component based on feedback ([@jeroenterheerdt] - [#9692]) ([notify.clicksendaudio docs]) (new-platform) +- Support for The Things Network ([@fabaff] - [#9627]) ([thethingsnetwork docs]) ([sensor.thethingsnetwork docs]) (new-platform) + +## {% linkable_title 0.55.1 - October 15 %} + +- Fix for TypeError in synology camera ([@snjoetw] - [#9754]) ([camera.synology docs]) +- missing is_closed ( rflink cover fix ) ([@passie] - [#9776]) ([cover.rflink docs]) +- [light.tradfri] Fix transition time ([@lwis] - [#9785]) ([light.tradfri docs]) +- OwnTracks: Fix handler is None checking ([@balloob] - [#9794]) ([device_tracker.owntracks docs]) +- Changed yaml.load into yaml.safe_load ([@GenericStudent] - [#9841]) ([google docs]) +- Bugfix/9811 jinja autoescape ([@GenericStudent] - [#9842]) +- Livebox Play TV bug: fix #9839 ([@pschmitt] - [#9880]) ([media_player.liveboxplaytv docs]) + +## {% linkable_title If you need help... %} +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][discord]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} +Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- history_graph component: If your component used `history.get_significant_states` function then you need to adjust the string `entitity_id` parameter has been changed to a list of strings `entity_ids` parameter. ([@andrey-git] - [#9472]) ([history_graph docs]) (breaking change) +- UPNP component: The `external_port` configuration option was removed. ([@balloob] - [#9560]) ([upnp docs]) (breaking change) +- New Wink services: pair new device, rename, delete and add new lock key code. All device attributes that are multi-words are now separated by "_" and no longer " ". ([@w1ll1am23] - [#9303]) ([wink docs]) ([binary_sensor.wink docs]) ([lock.wink docs]) (breaking change) +- TP-Link Switch: Attribute names now uses underscores and unnecessary capitalization was removed. ([@djchen] - [#9607]) ([switch.tplink docs]) (breaking change) +- Renamed `input_slider` to `input_number` which has now a numeric text box option. ([@BioSehnsucht] - [#9494]) ([demo docs]) ([input_number docs]) (breaking change) +- Recorder: Add new purge service and interval. The recorder component no longer accepts a `purge_days` parameter. If you are using `purge_days` you must use `purge_interval` and `purge_keep_days`. ([@milanvo] - [#9523]) ([recorder docs]) (breaking change) +- OpenCV image processing: Typo in classifier was fixed. ([@arsaboo] - [#9697]) ([image_processing.opencv docs]) (breaking change) +- Tradfri Lights: Async support with resource observation. ([@lwis] - [#7815]) ([tradfri docs]) ([light.tradfri docs]) (breaking change) + +## {% linkable_title All changes %} + +- flux led lib 0.20 ([@danielhiversen] - [#9533]) ([light.flux_led docs]) +- Update AbodePy to 0.11.8 ([@MisterWil] - [#9537]) ([abode docs]) +- Bump python_openzwave to 0.4.0.35 ([@arsaboo] - [#9542]) ([zwave docs]) +- update usps ([@happyleavesaoc] - [#9540]) ([usps docs]) ([camera.usps docs]) ([sensor.usps docs]) +- Bugfix Homematic hub object ([@pvizeli] - [#9544]) ([homematic docs]) +- Fix a bunch of typos ([@mika] - [#9545]) +- Catch no longer existing process in systemmonitor ([@Tommatheussen] - [#9535]) ([sensor.systemmonitor docs]) +- Upgrade pyasn1 to 0.3.6 ([@fabaff] - [#9548]) +- Add history_graph component ([@andrey-git] - [#9472]) (breaking change) +- GeoRSS sensor ([@exxamalte] - [#9331]) ([sensor.geo_rss_events docs]) (new-platform) +- Fixed bug with all switch devices being excluded ([@MisterWil] - [#9555]) ([switch.abode docs]) +- fix usps? ([@happyleavesaoc] - [#9557]) ([usps docs]) ([sensor.usps docs]) +- Added support for ARM_NIGHT for manual_mqtt alarm ([@snjoetw] - [#9358]) ([alarm_control_panel.manual_mqtt docs]) +- Various AirVisual bugfixes ([@bachya] - [#9554]) ([sensor.airvisual docs]) +- Updated Arlo cameras with new attributes ([@bachya] - [#9565]) ([arlo docs]) ([camera.arlo docs]) +- Allow specifying multiple ports for UPNP component ([@balloob] - [#9560]) ([upnp docs]) (breaking change) +- Update yeelight to 0.3.3. ([@pfalcon] - [#9561]) ([light.yeelight docs]) +- Add test cases and fix for device_defaults fire_event option. ([@aequitas] - [#9567]) ([light.rflink docs]) ([switch.rflink docs]) +- Use simplepush module, enable event, and allow encrypted communication ([@fabaff] - [#9568]) ([notify.simplepush docs]) +- Add DuckDNS component ([@balloob] - [#9556]) ([duckdns docs]) (new-platform) +- Clean up OwnTracks ([@balloob] - [#9569]) ([device_tracker.owntracks docs]) +- MQTT Cover: Add availability topic and configurable payloads ([@marthoc] - [#9445]) ([cover.mqtt docs]) +- Upgrade dsmr_parser to 0.11 ([@fabaff] - [#9576]) ([sensor.dsmr docs]) +- Added new statistic attributes ([@sti0] - [#9433]) ([vacuum.xiaomi docs]) +- Upgrade youtube_dl to 2017.9.24 ([@fabaff] - [#9575]) ([media_extractor docs]) +- Upgrade lyft_rides to 0.2 ([@enriquegh] - [#9578]) ([sensor.lyft docs]) +- Increase Comed timeout since it sometimes takes a long time for the API to respond ([@joe248] - [#9536]) ([sensor.comed_hourly_pricing docs]) +- Allow customizable turn on action for LG WebOS tv ([@cmsimike] - [#9206]) ([media_player.webostv docs]) (breaking change) +- IMAP Unread sensor updated for async and push ([@amelchio] - [#9562]) ([sensor.imap docs]) +- Replace emulated_hue: with emulated_hue_hidden: for consistency. ([@rbflurry] - [#9382]) ([emulated_hue docs]) +- Upgrade Sphinx to 1.6.4 ([@fabaff] - [#9584]) +- Bump pyatv to 0.3.5 ([@postlund] - [#9586]) ([apple_tv docs]) ([media_player.apple_tv docs]) +- New Wink services. pair new device, rename, and delete, add new lock key code. Add water heater support ([@w1ll1am23] - [#9303]) ([wink docs]) ([binary_sensor.wink docs]) ([lock.wink docs]) (breaking change) +- Fixes UPS MyChoice exception ([@bachya] - [#9587]) ([sensor.ups docs]) +- FedEx: Adds "packages" as a unit ([@bachya] - [#9588]) ([sensor.fedex docs]) +- Cleanup entity & remove warning ([@pvizeli] - [#9606]) +- Add OwnTracks over HTTP ([@balloob] - [#9582]) ([http docs]) ([device_tracker.owntracks docs]) ([device_tracker.owntracks_http docs]) (new-platform) +- upgrade python-ecobee-api ([@nkgilley] - [#9612]) ([ecobee docs]) +- Change TP-Link Switch power statistics attribute names ([@djchen] - [#9607]) ([switch.tplink docs]) (breaking change) +- Migrate Alexa smart home to registry ([@balloob] - [#9616]) ([alexa.smart_home docs]) +- Add an input_datetime ([@tinloaf] - [#9313]) ([input_datetime docs]) (new-platform) +- Cover component for RFlink ([@passie] - [#9432]) ([rflink docs]) ([cover.rflink docs]) (new-platform) +- Introducing support to Melnor RainCloud sprinkler systems ([@tchellomello] - [#9287]) ([raincloud docs]) ([binary_sensor.raincloud docs]) ([sensor.raincloud docs]) ([switch.raincloud docs]) (new-platform) +- Rewrite synology camera by using py-synology package ([@snjoetw] - [#9583]) ([camera.synology docs]) +- yeelight: allow turn_off transitions, fixes #9602 ([@rytilahti] - [#9605]) ([light.yeelight docs]) +- Move 'voltage' to const ([@fabaff] - [#9621]) ([sensor.pvoutput docs]) ([switch.tplink docs]) +- Yamaha MusicCast: check known_hosts ([@jalmeroth] - [#9580]) ([media_player.yamaha_musiccast docs]) +- Fixed away_mode for Ecobee thermostat. ([@etsinko] - [#9559]) ([climate.ecobee docs]) +- Switched VeraSensor to use category ids ([@alanfischer] - [#9624]) ([sensor.vera docs]) +- splunk: Handle datetime objects in event payload ([@philk] - [#9628]) ([splunk docs]) +- MQTT climate platform [continuation of #8750] ([@tinloaf] - [#9589]) ([climate.mqtt docs]) (new-platform) +- wunderground: fix supported language codes #9631 ([@szogi] - [#9633]) ([sensor.wunderground docs]) +- add myself to codeowners ([@rytilahti] - [#9642]) +- raspihats: unmet dependency fix ([@szogi] - [#9638]) ([raspihats docs]) +- Fixes broken source links in API docs ([@David-Byrne] - [#9636]) +- Move group services into their own YAML ([@balloob] - [#9597]) ([group docs]) +- Facebook Messenger notify component: add support for sending messages to specific page user IDs ([@mweimerskirch] - [#9643]) ([notify.facebook docs]) +- arlo: Add battery level sensor ([@vickyg3] - [#9637]) ([sensor.arlo docs]) +- Add hysteresis attribute to threshold binary sensor ([@hotplot] - [#9596]) ([binary_sensor.threshold docs]) +- Upgrade numpy to 1.13.3 ([@fabaff] - [#9646]) ([image_processing.opencv docs]) +- Upgrade youtube_dl to 2017.10.01 ([@fabaff] - [#9647]) ([media_extractor docs]) +- Upgrade discord.py to 0.16.12 ([@fabaff] - [#9648]) ([notify.discord docs]) +- Upgrade netdisco to 1.2.2 ([@fabaff] - [#9649]) +- Upgrade influxdb to 4.1.1 ([@fabaff] - [#9652]) ([influxdb docs]) +- Upgrade googlemaps to 2.5.1 ([@fabaff] - [#9653]) ([sensor.google_travel_time docs]) +- mqtt_statestream: Add options to publish attributes/timestamps ([@mw-white] - [#9645]) ([mqtt_statestream docs]) +- Fixed bugs related to exception handling in pythonegardia. Updating package requirement accordingly ([@jeroenterheerdt] - [#9663]) ([alarm_control_panel.egardia docs]) +- Update google-api-python-client to 1.6.4 ([@arsaboo] - [#9658]) ([google docs]) +- Bump abode to 0.11.9 ([@MisterWil] - [#9660]) ([abode docs]) +- Unit tests to improve core coverage ([@armills] - [#9659]) +- Upgrade pyitachip2ir to 0.0.7 ([@alanfischer] - [#9669]) ([remote.itach docs]) +- Fix typo in cancel_command description ([@FletcherAU] - [#9671]) +- Rename input_slider to input_number and add numeric text box option ([@BioSehnsucht] - [#9494]) ([demo docs]) ([input_number docs]) (breaking change) +- Properly handle an invalid end_time ([@alanfischer] - [#9675]) ([history docs]) +- Support new feature to push API data to hassio ([@pvizeli] - [#9679]) ([hassio docs]) +- Adding ignore capability to Egardia component ([@jeroenterheerdt] - [#9676]) ([alarm_control_panel.egardia docs]) +- Fix Google Calendar/oauth2client warning ([@mbrrg] - [#9677]) ([google docs]) +- Implement DSMR5 support. ([@aequitas] - [#9686]) ([sensor.dsmr docs]) +- Add Tibber sensor ([@danielhiversen] - [#9661]) ([sensor.tibber docs]) (new-platform) +- Add recorder purge service, rework purge timer ([@milanvo] - [#9523]) (breaking change) +- Fix restore state by filter out null value row from DB query ([@milanvo] - [#9690]) ([history docs]) +- Updating clicksendaudio component based on feedback ([@jeroenterheerdt] - [#9692]) ([notify.clicksendaudio docs]) (new-platform) +- Refactoring of onewire sensor component ([@bestlibre] - [#9691]) ([sensor.onewire docs]) +- HassIO replace config changes ([@pvizeli] - [#9695]) ([hassio docs]) +- Fixed typo in opencv ([@arsaboo] - [#9697]) ([image_processing.opencv docs]) (breaking change) +- [light.tradfri] async support with resource observation. ([@lwis] - [#7815]) ([tradfri docs]) ([light.tradfri docs]) (breaking change) +- Create secrets file in default config ([@balloob] - [#9685]) +- Support for The Things Network ([@fabaff] - [#9627]) ([thethingsnetwork docs]) ([sensor.thethingsnetwork docs]) (new-platform) +- Deprecate Python 3.4 support ([@balloob] - [#9684]) +- Fix coap commit ([@balloob] - [#9712]) +- [light.tradfri] Clone all of aiocoap to ensure pinned commit will be present ([@lwis] - [#9713]) + +[#7815]: https://github.com/home-assistant/home-assistant/pull/7815 +[#9206]: https://github.com/home-assistant/home-assistant/pull/9206 +[#9287]: https://github.com/home-assistant/home-assistant/pull/9287 +[#9303]: https://github.com/home-assistant/home-assistant/pull/9303 +[#9313]: https://github.com/home-assistant/home-assistant/pull/9313 +[#9331]: https://github.com/home-assistant/home-assistant/pull/9331 +[#9358]: https://github.com/home-assistant/home-assistant/pull/9358 +[#9382]: https://github.com/home-assistant/home-assistant/pull/9382 +[#9432]: https://github.com/home-assistant/home-assistant/pull/9432 +[#9433]: https://github.com/home-assistant/home-assistant/pull/9433 +[#9445]: https://github.com/home-assistant/home-assistant/pull/9445 +[#9472]: https://github.com/home-assistant/home-assistant/pull/9472 +[#9494]: https://github.com/home-assistant/home-assistant/pull/9494 +[#9523]: https://github.com/home-assistant/home-assistant/pull/9523 +[#9533]: https://github.com/home-assistant/home-assistant/pull/9533 +[#9535]: https://github.com/home-assistant/home-assistant/pull/9535 +[#9536]: https://github.com/home-assistant/home-assistant/pull/9536 +[#9537]: https://github.com/home-assistant/home-assistant/pull/9537 +[#9540]: https://github.com/home-assistant/home-assistant/pull/9540 +[#9542]: https://github.com/home-assistant/home-assistant/pull/9542 +[#9544]: https://github.com/home-assistant/home-assistant/pull/9544 +[#9545]: https://github.com/home-assistant/home-assistant/pull/9545 +[#9548]: https://github.com/home-assistant/home-assistant/pull/9548 +[#9554]: https://github.com/home-assistant/home-assistant/pull/9554 +[#9555]: https://github.com/home-assistant/home-assistant/pull/9555 +[#9556]: https://github.com/home-assistant/home-assistant/pull/9556 +[#9557]: https://github.com/home-assistant/home-assistant/pull/9557 +[#9559]: https://github.com/home-assistant/home-assistant/pull/9559 +[#9560]: https://github.com/home-assistant/home-assistant/pull/9560 +[#9561]: https://github.com/home-assistant/home-assistant/pull/9561 +[#9562]: https://github.com/home-assistant/home-assistant/pull/9562 +[#9565]: https://github.com/home-assistant/home-assistant/pull/9565 +[#9567]: https://github.com/home-assistant/home-assistant/pull/9567 +[#9568]: https://github.com/home-assistant/home-assistant/pull/9568 +[#9569]: https://github.com/home-assistant/home-assistant/pull/9569 +[#9575]: https://github.com/home-assistant/home-assistant/pull/9575 +[#9576]: https://github.com/home-assistant/home-assistant/pull/9576 +[#9578]: https://github.com/home-assistant/home-assistant/pull/9578 +[#9580]: https://github.com/home-assistant/home-assistant/pull/9580 +[#9582]: https://github.com/home-assistant/home-assistant/pull/9582 +[#9583]: https://github.com/home-assistant/home-assistant/pull/9583 +[#9584]: https://github.com/home-assistant/home-assistant/pull/9584 +[#9586]: https://github.com/home-assistant/home-assistant/pull/9586 +[#9587]: https://github.com/home-assistant/home-assistant/pull/9587 +[#9588]: https://github.com/home-assistant/home-assistant/pull/9588 +[#9589]: https://github.com/home-assistant/home-assistant/pull/9589 +[#9596]: https://github.com/home-assistant/home-assistant/pull/9596 +[#9597]: https://github.com/home-assistant/home-assistant/pull/9597 +[#9605]: https://github.com/home-assistant/home-assistant/pull/9605 +[#9606]: https://github.com/home-assistant/home-assistant/pull/9606 +[#9607]: https://github.com/home-assistant/home-assistant/pull/9607 +[#9612]: https://github.com/home-assistant/home-assistant/pull/9612 +[#9616]: https://github.com/home-assistant/home-assistant/pull/9616 +[#9621]: https://github.com/home-assistant/home-assistant/pull/9621 +[#9624]: https://github.com/home-assistant/home-assistant/pull/9624 +[#9627]: https://github.com/home-assistant/home-assistant/pull/9627 +[#9628]: https://github.com/home-assistant/home-assistant/pull/9628 +[#9633]: https://github.com/home-assistant/home-assistant/pull/9633 +[#9636]: https://github.com/home-assistant/home-assistant/pull/9636 +[#9637]: https://github.com/home-assistant/home-assistant/pull/9637 +[#9638]: https://github.com/home-assistant/home-assistant/pull/9638 +[#9642]: https://github.com/home-assistant/home-assistant/pull/9642 +[#9643]: https://github.com/home-assistant/home-assistant/pull/9643 +[#9645]: https://github.com/home-assistant/home-assistant/pull/9645 +[#9646]: https://github.com/home-assistant/home-assistant/pull/9646 +[#9647]: https://github.com/home-assistant/home-assistant/pull/9647 +[#9648]: https://github.com/home-assistant/home-assistant/pull/9648 +[#9649]: https://github.com/home-assistant/home-assistant/pull/9649 +[#9652]: https://github.com/home-assistant/home-assistant/pull/9652 +[#9653]: https://github.com/home-assistant/home-assistant/pull/9653 +[#9658]: https://github.com/home-assistant/home-assistant/pull/9658 +[#9659]: https://github.com/home-assistant/home-assistant/pull/9659 +[#9660]: https://github.com/home-assistant/home-assistant/pull/9660 +[#9661]: https://github.com/home-assistant/home-assistant/pull/9661 +[#9663]: https://github.com/home-assistant/home-assistant/pull/9663 +[#9669]: https://github.com/home-assistant/home-assistant/pull/9669 +[#9671]: https://github.com/home-assistant/home-assistant/pull/9671 +[#9675]: https://github.com/home-assistant/home-assistant/pull/9675 +[#9676]: https://github.com/home-assistant/home-assistant/pull/9676 +[#9677]: https://github.com/home-assistant/home-assistant/pull/9677 +[#9679]: https://github.com/home-assistant/home-assistant/pull/9679 +[#9684]: https://github.com/home-assistant/home-assistant/pull/9684 +[#9685]: https://github.com/home-assistant/home-assistant/pull/9685 +[#9686]: https://github.com/home-assistant/home-assistant/pull/9686 +[#9690]: https://github.com/home-assistant/home-assistant/pull/9690 +[#9691]: https://github.com/home-assistant/home-assistant/pull/9691 +[#9692]: https://github.com/home-assistant/home-assistant/pull/9692 +[#9695]: https://github.com/home-assistant/home-assistant/pull/9695 +[#9697]: https://github.com/home-assistant/home-assistant/pull/9697 +[#9712]: https://github.com/home-assistant/home-assistant/pull/9712 +[#9713]: https://github.com/home-assistant/home-assistant/pull/9713 +[@BioSehnsucht]: https://github.com/BioSehnsucht +[@David-Byrne]: https://github.com/David-Byrne +[@FletcherAU]: https://github.com/FletcherAU +[@MisterWil]: https://github.com/MisterWil +[@Tommatheussen]: https://github.com/Tommatheussen +[@aequitas]: https://github.com/aequitas +[@alanfischer]: https://github.com/alanfischer +[@amelchio]: https://github.com/amelchio +[@andrey-git]: https://github.com/andrey-git +[@armills]: https://github.com/armills +[@arsaboo]: https://github.com/arsaboo +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bestlibre]: https://github.com/bestlibre +[@cmsimike]: https://github.com/cmsimike +[@danielhiversen]: https://github.com/danielhiversen +[@djchen]: https://github.com/djchen +[@enriquegh]: https://github.com/enriquegh +[@etsinko]: https://github.com/etsinko +[@exxamalte]: https://github.com/exxamalte +[@fabaff]: https://github.com/fabaff +[@happyleavesaoc]: https://github.com/happyleavesaoc +[@hotplot]: https://github.com/hotplot +[@jalmeroth]: https://github.com/jalmeroth +[@jeroenterheerdt]: https://github.com/jeroenterheerdt +[@joe248]: https://github.com/joe248 +[@lwis]: https://github.com/lwis +[@marthoc]: https://github.com/marthoc +[@mbrrg]: https://github.com/mbrrg +[@mika]: https://github.com/mika +[@milanvo]: https://github.com/milanvo +[@mw-white]: https://github.com/mw-white +[@mweimerskirch]: https://github.com/mweimerskirch +[@nkgilley]: https://github.com/nkgilley +[@passie]: https://github.com/passie +[@pfalcon]: https://github.com/pfalcon +[@philk]: https://github.com/philk +[@postlund]: https://github.com/postlund +[@pvizeli]: https://github.com/pvizeli +[@rbflurry]: https://github.com/rbflurry +[@rytilahti]: https://github.com/rytilahti +[@snjoetw]: https://github.com/snjoetw +[@sti0]: https://github.com/sti0 +[@szogi]: https://github.com/szogi +[@tchellomello]: https://github.com/tchellomello +[@tinloaf]: https://github.com/tinloaf +[@vickyg3]: https://github.com/vickyg3 +[@w1ll1am23]: https://github.com/w1ll1am23 +[abode docs]: https://home-assistant.io/components/abode/ +[alarm_control_panel.egardia docs]: https://home-assistant.io/components/alarm_control_panel.egardia/ +[alarm_control_panel.manual_mqtt docs]: https://home-assistant.io/components/alarm_control_panel.manual_mqtt/ +[alexa.smart_home docs]: https://home-assistant.io/components/alexa/ +[apple_tv docs]: https://home-assistant.io/components/apple_tv/ +[arlo docs]: https://home-assistant.io/components/arlo/ +[binary_sensor.raincloud docs]: https://home-assistant.io/components/binary_sensor.raincloud/ +[binary_sensor.threshold docs]: https://home-assistant.io/components/binary_sensor.threshold/ +[binary_sensor.wink docs]: https://home-assistant.io/components/binary_sensor.wink/ +[camera.arlo docs]: https://home-assistant.io/components/camera.arlo/ +[camera.synology docs]: https://home-assistant.io/components/camera.synology/ +[camera.usps docs]: https://home-assistant.io/components/camera.usps/ +[climate.ecobee docs]: https://home-assistant.io/components/climate.ecobee/ +[climate.mqtt docs]: https://home-assistant.io/components/climate.mqtt/ +[cover.mqtt docs]: https://home-assistant.io/components/cover.mqtt/ +[cover.rflink docs]: https://home-assistant.io/components/cover.rflink/ +[demo docs]: https://home-assistant.io/components/demo/ +[device_tracker.owntracks docs]: https://home-assistant.io/components/device_tracker.owntracks/ +[device_tracker.owntracks_http docs]: https://home-assistant.io/components/device_tracker.owntracks_http/ +[duckdns docs]: https://home-assistant.io/components/duckdns/ +[ecobee docs]: https://home-assistant.io/components/ecobee/ +[emulated_hue docs]: https://home-assistant.io/components/emulated_hue/ +[google docs]: https://home-assistant.io/components/calendar.google/ +[group docs]: https://home-assistant.io/components/group/ +[hassio docs]: https://home-assistant.io/hassio/ +[history docs]: https://home-assistant.io/components/history/ +[homematic docs]: https://home-assistant.io/components/homematic/ +[http docs]: https://home-assistant.io/components/http/ +[image_processing.opencv docs]: https://home-assistant.io/components/image_processing.opencv/ +[influxdb docs]: https://home-assistant.io/components/influxdb/ +[input_datetime docs]: https://home-assistant.io/components/input_datetime/ +[input_number docs]: https://home-assistant.io/components/input_number/ +[light.flux_led docs]: https://home-assistant.io/components/light.flux_led/ +[light.rflink docs]: https://home-assistant.io/components/light.rflink/ +[light.tradfri docs]: https://home-assistant.io/components/light.tradfri/ +[light.yeelight docs]: https://home-assistant.io/components/light.yeelight/ +[lock.wink docs]: https://home-assistant.io/components/lock.wink/ +[media_extractor docs]: https://home-assistant.io/components/media_extractor/ +[media_player.apple_tv docs]: https://home-assistant.io/components/media_player.apple_tv/ +[media_player.webostv docs]: https://home-assistant.io/components/media_player.webostv/ +[media_player.yamaha_musiccast docs]: https://home-assistant.io/components/media_player.yamaha_musiccast/ +[mqtt_statestream docs]: https://home-assistant.io/components/mqtt_statestream/ +[notify.clicksendaudio docs]: https://home-assistant.io/components/notify.clicksendaudio/ +[notify.discord docs]: https://home-assistant.io/components/notify.discord/ +[notify.facebook docs]: https://home-assistant.io/components/notify.facebook/ +[notify.simplepush docs]: https://home-assistant.io/components/notify.simplepush/ +[raincloud docs]: https://home-assistant.io/components/raincloud/ +[raspihats docs]: https://home-assistant.io/components/raspihats/ +[recorder docs]: https://home-assistant.io/components/recorder/ +[remote.itach docs]: https://home-assistant.io/components/remote.itach/ +[rflink docs]: https://home-assistant.io/components/rflink/ +[sensor.airvisual docs]: https://home-assistant.io/components/sensor.airvisual/ +[sensor.arlo docs]: https://home-assistant.io/components/sensor.arlo/ +[sensor.comed_hourly_pricing docs]: https://home-assistant.io/components/sensor.comed_hourly_pricing/ +[sensor.dsmr docs]: https://home-assistant.io/components/sensor.dsmr/ +[sensor.fedex docs]: https://home-assistant.io/components/sensor.fedex/ +[sensor.geo_rss_events docs]: https://home-assistant.io/components/sensor.geo_rss_events/ +[sensor.google_travel_time docs]: https://home-assistant.io/components/sensor.google_travel_time/ +[sensor.imap docs]: https://home-assistant.io/components/sensor.imap/ +[sensor.lyft docs]: https://home-assistant.io/components/sensor.lyft/ +[sensor.onewire docs]: https://home-assistant.io/components/sensor.onewire/ +[sensor.pvoutput docs]: https://home-assistant.io/components/sensor.pvoutput/ +[sensor.raincloud docs]: https://home-assistant.io/components/sensor.raincloud/ +[sensor.systemmonitor docs]: https://home-assistant.io/components/sensor.systemmonitor/ +[sensor.thethingsnetwork docs]: https://home-assistant.io/components/sensor.thethingsnetwork/ +[sensor.tibber docs]: https://home-assistant.io/components/sensor.tibber/ +[sensor.ups docs]: https://home-assistant.io/components/sensor.ups/ +[sensor.usps docs]: https://home-assistant.io/components/sensor.usps/ +[sensor.vera docs]: https://home-assistant.io/components/sensor.vera/ +[sensor.wunderground docs]: https://home-assistant.io/components/sensor.wunderground/ +[splunk docs]: https://home-assistant.io/components/splunk/ +[switch.abode docs]: https://home-assistant.io/components/switch.abode/ +[switch.raincloud docs]: https://home-assistant.io/components/switch.raincloud/ +[switch.rflink docs]: https://home-assistant.io/components/switch.rflink/ +[switch.tplink docs]: https://home-assistant.io/components/switch.tplink/ +[thethingsnetwork docs]: https://home-assistant.io/components/thethingsnetwork/ +[tradfri docs]: https://home-assistant.io/components/tradfri/ +[upnp docs]: https://home-assistant.io/components/upnp/ +[usps docs]: https://home-assistant.io/components/usps/ +[vacuum.xiaomi docs]: https://home-assistant.io/components/vacuum.xiaomi_miio/ +[wink docs]: https://home-assistant.io/components/wink/ +[zwave docs]: https://home-assistant.io/components/zwave/ +[forum]: https://community.home-assistant.io/ +[issue]: https://github.com/home-assistant/home-assistant/issues +[discord]: https://discord.gg/c5DvZ4e +[history_graph docs]: https://home-assistant.io/components/history_graph/ +[#9754]: https://github.com/home-assistant/home-assistant/pull/9754 +[#9776]: https://github.com/home-assistant/home-assistant/pull/9776 +[#9785]: https://github.com/home-assistant/home-assistant/pull/9785 +[#9794]: https://github.com/home-assistant/home-assistant/pull/9794 +[#9841]: https://github.com/home-assistant/home-assistant/pull/9841 +[#9842]: https://github.com/home-assistant/home-assistant/pull/9842 +[#9880]: https://github.com/home-assistant/home-assistant/pull/9880 +[@GenericStudent]: https://github.com/GenericStudent +[@balloob]: https://github.com/balloob +[@lwis]: https://github.com/lwis +[@passie]: https://github.com/passie +[@pschmitt]: https://github.com/pschmitt +[@snjoetw]: https://github.com/snjoetw +[camera.synology docs]: https://home-assistant.io/components/camera.synology/ +[cover.rflink docs]: https://home-assistant.io/components/cover.rflink/ +[device_tracker.owntracks docs]: https://home-assistant.io/components/device_tracker.owntracks/ +[google docs]: https://home-assistant.io/components/google/ +[light.tradfri docs]: https://home-assistant.io/components/light.tradfri/ +[media_player.liveboxplaytv docs]: https://home-assistant.io/components/media_player.liveboxplaytv/ diff --git a/source/_posts/2017-10-14-templating-date-time.markdown b/source/_posts/2017-10-14-templating-date-time.markdown new file mode 100644 index 00000000000..1af3ecff8bc --- /dev/null +++ b/source/_posts/2017-10-14-templating-date-time.markdown @@ -0,0 +1,38 @@ +--- +layout: post +title: "Templates, dates and times" +description: "Using templates for seconds and years in Home Assistant." +date: 2017-10-15 08:00:00 +0200 +date_formatted: "October 15, 2017" +author: Fabian Affolter +comments: true +categories: Community +og_image: /images/blog/2017-10-template/social.png +--- + +This [Pull Request](https://github.com/home-assistant/home-assistant/pull/9868) shows in a clear way what happens if the documentation is not as good as it should be. In short, it's about [Templating](/docs/configuration/templating/) and how people start to think about creative ways to solve it if it's not documented. Let's assume that we want the current year. There are a couple of options available to do that: + +- Query [JSON Test](http://date.jsontest.com/) with a [`rest` sensor](/components/sensor.rest/) and a `value_template:`. +- Use a [`time_date` sensor ](/components/sensor.time_date/) and a template {% raw %}`{{ strptime(states('sensor.date'), '%Y-%m-%d').year }}`{% endraw %}. +- Write a script in language X and use it with the [`command` sensor](/components/sensor.command_line/) or use `date +"%Y"` as a `command:`. + + + +We want it simpler, right? [Templating](/docs/configuration/templating/) offers `now()` and `utcnow()`. We will stick with `now()` in this blog post but it applies to `utcnow()` as well. Our documentation said: + +
    + `now()` will be rendered as current time in your time zone. +
    + +Hmmm, ...OK, that's a start. How to get the year? {% raw %}`{{ now() }}`{% endraw %} gives you `2017-10-14 20:27:23.700401+02:00` which is far more than we are looking for. As an user you don't want to dive into the code but there would you find the solution. You will get a [Python `datetime` object](https://docs.python.org/3.6/library/datetime.html#datetime.datetime) from {% raw %}`{{ now() }}`{% endraw %}. This means that you can access more than you think in a template: + +- For the time: `now().microsecond`, `now().second`, `now().minute` and `now().hour` +- For the date: `now().day`, `now().month` and `now().year` +- Misc: `now().weekday()` and `now().isoweekday()` + +For the year it would be: {% raw %}`{{ now().year }}`{% endraw %}. I guess that there are rare use cases for `now().resolution`, `now().min` and `now().max` too. + +[Hacktoberfest](/blog/2017/09/29/hacktoberfest/) is still running. Working on the documentation is pretty easy. If you know a nice [trick](/cookbook/), want to help improving the page of a platform or just fix typo then please do. Our [Website/Documentation section](/developers/documentation/) contains some requirements which are defined in the [Documentation Standards](/developers/documentation/standards/) and the "[Create a page](/developers/documentation/create_page/)" documentation for other useful details. + +Thanks to [Egor Tsinko](https://github.com/etsinko) for bringing this issue to our attention. + diff --git a/source/_posts/2017-10-18-hasspodcast-ep-10.markdown b/source/_posts/2017-10-18-hasspodcast-ep-10.markdown new file mode 100644 index 00000000000..295702ce37a --- /dev/null +++ b/source/_posts/2017-10-18-hasspodcast-ep-10.markdown @@ -0,0 +1,18 @@ +--- +layout: post +title: "Home Assistant Podcast #10" +description: "0.55 and bye bye Python 3.4" +date: 2017-10-18 00:01:00 +0000 +date_formatted: "October 18, 2017" +author: Phil Hawthorne +author_twitter: philhawthorne +comments: true +categories: Media +og_image: /images/hasspodcast.jpg +--- + +Show notes available on the [Home Assistant Podcast Website](https://hasspodcast.io/HA010/) + +[Listen online][episode] + +[episode]: https://hasspodcast.io/ha010/ diff --git a/source/_posts/2017-10-21-release-56.markdown b/source/_posts/2017-10-21-release-56.markdown new file mode 100644 index 00000000000..97699b6b47d --- /dev/null +++ b/source/_posts/2017-10-21-release-56.markdown @@ -0,0 +1,548 @@ +--- +layout: post +title: "0.56: Skybell, Google Assistant, Travis CI and Toon" +description: "Support for Skybell, Toon, Travis CI and Google Assistant" +date: 2017-10-21 10:00:00 +date_formatted: "October 21, 2017" +author: Fabian Affolter +author_twitter: fabaff +comments: true +categories: Release-Notes +og_image: /images/blog/2017-10-0.56/components.png +--- + + + + +We reached another milestone aka number: 10000. GitHub is assigning numbers to pull requests and issues and the "10000" is a [PR](https://github.com/home-assistant/home-assistant/pull/10000). Our ratio is around 1/3 issues and 2/3 pull requests. To be more precise: 64% pull requests and 36% issues. + +If you haven't noticed, there is now a [glossary](https://home-assistant.io/docs/glossary/) that collects some Home Assistant relevant terms. Talking about the documentation: [@DubhAd](https://github.com/DubhAd) rewrote large parts of the [Z-Wave section](https://home-assistant.io/docs/z-wave/). More structure to get started and to find details during the setup and the configuration. + +## {% linkable_title Google Assistant / Google Home integration %} +This release includes a new component to integrate Home Assistant with Google Assistant by [Phil Kates][@philk]. We integrate via the Smart Home API, this means that you will be able to control your devices in Home Assistant via any device that has Google Assistant. Learn more in [the documentation][google_assistant docs]. + +## {% linkable_title Hacktoberfest %} +[Hacktoberfest](https://home-assistant.io/blog/2017/09/29/hacktoberfest/) is still on and so far we have received a lot improvements. We can't make any promises to review everything by the end of October, but we are trying to make sure that you will get your t-shirt. + +## {% linkable_title Map %} +The [map][map docs] is now its own component. Similar to [configuration (`config:`)](https://home-assistant.io/components/config/), it will not show up without adding it to your `configuration.yaml` file. + +```yaml +map: +``` + +## {% linkable_title Travis CI %} +Why not observe your [Travis CI](https://travis-ci.org) jobs with Home Assistant? [@tchellomello] created a [Travis CI][sensor.travisci docs] sensor which allows one to check on the current state of Travis jobs. Now you can make sure that the [coffee](https://home-assistant.io/blog/2017/01/28/face-coffee-wink/#first-coffee-maker-supported) is ready when the build passed. + +## {% linkable_title New Platforms %} + +- Add Arlo alarm control panel component ([@vickyg3] - [#9711]) ([alarm_control_panel.arlo docs]) (new-platform) +- Abode Temp, Humidity, and Light Sensor ([@MisterWil] - [#9709]) ([abode docs]) ([sensor.abode docs]) (new-platform) +- Introducing support to Travis-CI ([@tchellomello] - [#9701]) ([sensor.travisci docs]) (new-platform) +- Skybell ([@MisterWil] - [#9681]) ([skybell docs]) ([binary_sensor.skybell docs]) ([camera.skybell docs]) ([light.skybell docs]) ([sensor.skybell docs]) ([switch.skybell docs]) (new-platform) +- Xiaomi Smart WiFi Socket and Smart Power Strip integration ([@syssi] - [#9138]) ([switch.xiaomi_miio docs]) (new-platform) +- Add notification platform for Rocket.Chat ([@webworxshop] - [#9553]) ([notify.rocketchat docs]) (new-platform) +- Tesla bug fixes. ([@zabuldon] - [#9774]) ([tesla docs]) ([binary_sensor.tesla docs]) ([climate.tesla docs]) ([lock.tesla docs]) ([sensor.tesla docs]) ([switch.tesla docs]) (new-platform) +- Split map panel out into its own component ([@cgarwood] - [#9814]) ([map docs]) (breaking change) (new-platform) +- Support for Yi cameras ([@bachya] - [#9787]) ([camera.yi docs]) (new-platform) +- Add namecheap DNS component ([@Munsio] - [#9821]) ([namecheapdns docs]) (new-platform) +- Uptime sensor ([@fronzbot] - [#9856]) ([sensor.uptime docs]) (new-platform) +- Cloud connection via aiohttp ([@balloob] - [#9860]) (new-platform) +- Google Actions for Assistant ([@philk] - [#9632]) ([google_assistant docs]) ([http docs]) (new-platform) +- A new platform for controlling Monoprice 6-Zone amplifier ([@etsinko] - [#9662]) ([media_player.monoprice docs]) (new-platform) +- Add serial sensor ([@fabaff] - [#9861]) ([sensor.serial docs]) (new-platform) +- Add Toon support ([@Boltgolt] - [#9483]) ([toon docs]) ([climate.toon docs]) ([sensor.toon docs]) ([switch.toon docs]) (new-platform) + +## {% linkable_title 0.56.1 - October 22 %} + +- Fix device update / entity_id with names ([@pvizeli] - [#10029]) +- fix temperature/humidity sensors valid values ([@bieniu] - [#10024]) ([sensor.xiaomi_aqara docs]) + +## {% linkable_title 0.56.2 - October 23 %} + +- Fix gateway illumination sensor value ([@bieniu] - [#10045]) ([sensor.xiaomi_aqara docs]) +- Fix device update/`entity_id` with names ([@rytilahti] - [#10053]) ([switch.tplink docs]) +- Remove warning component / Update event trigger for UI created ([@pvizeli] - [#10060]) + + +## {% linkable_title If you need help... %} + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- Simplify track_same_state ([@balloob] - [#9795]) ([automation.numeric_state docs]) ([automation.state docs]) ([binary_sensor.template docs]) (breaking change) +- Split map panel out into its own component ([@cgarwood] - [#9814]) ([map docs]) (breaking change) (new-platform) +- Fix ISY994 fan platform overwriting state property ([@balloob] - [#9817]) (breaking change) +- Changing name of clicksendaudio component to clicksend_tts ([@jeroenterheerdt] - [#9859]) ([notify.clicksend_tts docs]) (breaking change) +- Fix load of components without any config from packages ([@azogue] - [#9901]) (breaking change) +- Fix the resource naming in the UI ([@cgtobi] - [#9916]) ([sensor.systemmonitor docs]) (breaking change) +- Align away state tag with device_trackers ([@PeteBa] - [#9884]) ([sensor.mqtt_room docs]) (breaking change) +- Moved siren to Wink from switch ([@w1ll1am23] - [#9879]) ([wink docs]) ([switch.wink docs]) (breaking change) + +## {% linkable_title All changes %} + +- fixed duplicate words ([@flowolf] - [#9705]) ([light.hue docs]) ([light.mqtt_json docs]) ([media_player.denon docs]) ([media_player.dunehd docs]) +- move icon battery function from util to helpers ([@happyleavesaoc] - [#9708]) ([vacuum docs]) ([sensor.android_ip_webcam docs]) ([sensor.fitbit docs]) ([sensor.ios docs]) ([sensor.raincloud docs]) ([vacuum.dyson docs]) ([vacuum.mqtt docs]) +- Updating helper's icon_for_battery_level location ([@tchellomello] - [#9594]) ([sensor.ring docs]) +- Upgrade pyhomematic, add path setting and HM-CC-VG-1 support ([@danielperna84] - [#9707]) ([homematic docs]) +- bump the version and catch all exceptions to avoid showing backtraces… ([@rytilahti] - [#9720]) ([climate.eq3btsmart docs]) +- More netdata sensors ([@fronzbot] - [#9719]) ([sensor.netdata docs]) +- Upgrade pysnmp to 4.3.10 ([@fabaff] - [#9722]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) +- arlo: Add alarm control panel component ([@vickyg3] - [#9711]) ([alarm_control_panel.arlo docs]) (new-platform) +- Abode Temp, Humidity, and Light Sensor ([@MisterWil] - [#9709]) ([abode docs]) ([sensor.abode docs]) (new-platform) +- Arlo clean-up ([@fabaff] - [#9725]) ([arlo docs]) ([alarm_control_panel.arlo docs]) ([camera.arlo docs]) ([sensor.arlo docs]) +- Introducing support to Travis-CI ([@tchellomello] - [#9701]) ([sensor.travisci docs]) (new-platform) +- Add show_on_map config option to AirVisual ([@bachya] - [#9654]) ([sensor.airvisual docs]) +- Move 'show_on_map' to const ([@fabaff] - [#9727]) ([binary_sensor.iss docs]) ([sensor.airvisual docs]) +- Bump release to 0.56.0dev ([@fabaff] - [#9726]) +- Add andrey-git to codeowners ([@andrey-git] - [#9718]) +- Fix: Last Played Media Title persists in plex ([@ryanm101] - [#9664]) ([media_player.plex docs]) +- Event trigger nested conditions ([@armills] - [#9732]) ([automation.event docs]) +- Rewrite Alexa Smart-Home skill to v3 ([@pvizeli] - [#9699]) ([alexa.smart_home docs]) +- Fix I/O in event loop by Arlo alarm control panel ([@balloob] - [#9738]) ([alarm_control_panel.arlo docs]) +- Make Arlo battery_level icon dynamic ([@tchellomello] - [#9747]) ([sensor.arlo docs]) +- Fix for TypeError in synology camera ([@snjoetw] - [#9754]) ([camera.synology docs]) +- switch.tplink, light.tplink: bump the pyhs100 version and adapt to api changes ([@rytilahti] - [#9454]) ([light.tplink docs]) ([switch.tplink docs]) +- RFC: Use bind_hass for helpers ([@balloob] - [#9745]) +- Skybell ([@MisterWil] - [#9681]) ([skybell docs]) ([binary_sensor.skybell docs]) ([camera.skybell docs]) ([light.skybell docs]) ([sensor.skybell docs]) ([switch.skybell docs]) (new-platform) +- add myself to yeelight owners, too ([@rytilahti] - [#9759]) +- Update CODEOWNERS ([@danielhiversen] - [#9760]) +- Adding my contributions ([@bachya] - [#9761]) +- Initializing statistics sensor with data from database ([@ChristianKuehnel] - [#9753]) ([sensor.statistics docs]) +- Match test requirements by full package name. ([@andrey-git] - [#9764]) +- yeelight: implement min_mireds and max_mireds, fixes #9509 ([@rytilahti] - [#9763]) ([light.yeelight docs]) +- Bump raincloudy version 0.0.3 ([@tchellomello] - [#9767]) ([raincloud docs]) ([sensor.raincloud docs]) +- Xiaomi Smart WiFi Socket and Smart Power Strip integration ([@syssi] - [#9138]) ([switch.xiaomi_miio docs]) (new-platform) +- fix for LocationParseError in netgear platform ([@etsinko] - [#9683]) ([device_tracker docs]) ([device_tracker.netgear docs]) +- Expose time module in Python Scripts ([@balloob] - [#9736]) ([python_script docs]) +- Add notification platform for Rocket.Chat. ([@webworxshop] - [#9553]) ([notify.rocketchat docs]) (new-platform) +- Updating pythonegardia package requirement to .22 because of fixed bug in passing default value for parameter SSL for egardiaserver ([@jeroenterheerdt] - [#9770]) ([alarm_control_panel.egardia docs]) +- Adding myself as codeowner for egardia alarm control panel. ([@jeroenterheerdt] - [#9772]) +- WIP: Fix Arlo Camera blocking IO ([@bachya] - [#9758]) ([camera.arlo docs]) +- Tesla bug fixes. ([@zabuldon] - [#9774]) ([tesla docs]) ([binary_sensor.tesla docs]) ([climate.tesla docs]) ([lock.tesla docs]) ([sensor.tesla docs]) ([switch.tesla docs]) (new-platform) +- Fix off by one error in arwn platform ([@sdague] - [#9781]) ([sensor.arwn docs]) +- missing is_closed ( rflink cover fix ) ([@passie] - [#9776]) ([cover.rflink docs]) +- Wink dome siren support ([@w1ll1am23] - [#9667]) ([wink docs]) ([switch.wink docs]) +- Bump rxv library to 0.5.1 ([@sdague] - [#9784]) ([media_player.yamaha docs]) +- Communication timeout support in modbus hub. ([@ziotibia81] - [#9780]) ([modbus docs]) +- [light.tradfri] Fix transition time ([@lwis] - [#9785]) ([light.tradfri docs]) +- OwnTracks: Fix handler is None checking ([@balloob] - [#9794]) ([device_tracker.owntracks docs]) +- Simplify track_same_state ([@balloob] - [#9795]) ([automation.numeric_state docs]) ([automation.state docs]) ([binary_sensor.template docs]) (breaking change) +- Optimize event matcher ([@balloob] - [#9798]) +- Resolving bug that prevents ssl_verify option for Unifi device_tracker ([@GenericStudent] - [#9788]) ([device_tracker.unifi docs]) +- Upgrade pyasn1 to 0.3.7 and pyasn1-modules to 0.1.5 ([@fabaff] - [#9810]) +- Split map panel out into its own component ([@cgarwood] - [#9814]) ([map docs]) (breaking change) (new-platform) +- Restore home-assistant-polymer pointer from #9720 ([@armills] - [#9825]) +- Fix ISY994 fan platform overwriting state property ([@balloob] - [#9817]) (breaking change) +- Wait_template - support for 'trigger.entity_id' and data_template values ([@cdce8p] - [#9807]) +- Adds image attribute to html5 notify (#9832) ([@cgarwood] - [#9835]) ([notify.html5 docs]) +- OwnTracks: Handle lwt message ([@balloob] - [#9831]) ([device_tracker.owntracks docs]) +- Upgrade libnacl ([@fabaff] - [#9769]) ([device_tracker.owntracks docs]) +- Fixed reporting of vera UV sensors ([@alanfischer] - [#9838]) ([sensor.vera docs]) +- Update CODEOWNERS */axis.py ([@Kane610] - [#9823]) +- fix climate services (missing indentation, wrongly formatted example) ([@rytilahti] - [#9805]) +- Run initial generation for development mode ([@armills] - [#9826]) +- Add service descriptions ([@cgarwood] - [#9806]) ([__init__ docs]) +- Bugfix: Include MQTT schema ([@tinloaf] - [#9802]) ([climate.mqtt docs]) +- Bugfix/9811 jinja autoescape ([@GenericStudent] - [#9842]) +- Changed yaml.load into yaml.safe_load ([@GenericStudent] - [#9841]) +- New PR ([@bachya] - [#9787]) ([camera.yi docs]) (new-platform) +- Do not auto-install credstash ([@balloob] - [#9844]) +- Add namecheap DNS component ([@Munsio] - [#9821]) ([namecheapdns docs]) (new-platform) +- Remove namecheap dns service ([@balloob] - [#9845]) ([namecheapdns docs]) +- Use the Last Seen attribute in unify ([@rbflurry] - [#8998]) ([device_tracker.unifi docs]) +- Add CAPSman master to mikrotik presence detection ([@icovada] - [#9729]) ([device_tracker.mikrotik docs]) +- File permissions fix ([@cgarwood] - [#9847]) ([map docs]) +- HassIO - TimeZone / Host services ([@pvizeli] - [#9846]) ([hassio docs]) +- Changing name of clicksendaudio component to clicksend_tts ([@jeroenterheerdt] - [#9859]) ([notify.clicksend_tts docs]) (breaking change) +- Upgrade youtube_dl to 2017.10.12 ([@fabaff] - [#9862]) ([media_extractor docs]) +- Uptime sensor ([@fronzbot] - [#9856]) ([sensor.uptime docs]) (new-platform) +- Darksky enhancements ([@rdbahm] - [#9851]) ([sensor.darksky docs]) +- Upgrade psutil to 5.4.0 ([@fabaff] - [#9869]) ([sensor.systemmonitor docs]) +- minimal fixes in the owntracks mqtt device tracker ([@azogue] - [#9866]) ([device_tracker.owntracks docs]) +- Cloud connection via aiohttp ([@balloob] - [#9860]) (new-platform) +- handle OWM API error calls ([@azogue] - [#9865]) ([sensor.openweathermap docs]) ([weather.openweathermap docs]) +- Upgrade paho-mqtt to 1.3.1 ([@fabaff] - [#9874]) ([mqtt docs]) ([shiftr docs]) +- Fix for TypeError in synology camera ([@snjoetw] - [#9754]) ([camera.synology docs]) +- missing is_closed ( rflink cover fix ) ([@passie] - [#9776]) ([cover.rflink docs]) +- [light.tradfri] Fix transition time ([@lwis] - [#9785]) ([light.tradfri docs]) +- OwnTracks: Fix handler is None checking ([@balloob] - [#9794]) ([device_tracker.owntracks docs]) +- Changed yaml.load into yaml.safe_load ([@GenericStudent] - [#9841]) +- Bugfix/9811 jinja autoescape ([@GenericStudent] - [#9842]) +- Fix #9839 ([@pschmitt] - [#9880]) ([media_player.liveboxplaytv docs]) +- Upgrade python-telegram-bot to 8.1.1 ([@azogue] - [#9882]) ([telegram_bot docs]) +- Xknx improvements ([@Julius2342] - [#9871]) ([knx docs]) ([climate.knx docs]) +- zha: Update to bellows 0.4.0 ([@rcloran] - [#9890]) ([zha docs]) ([sensor.zha docs]) +- Changing clicksendaudio to clicksend_tts in .coveragerc ([@jeroenterheerdt] - [#9900]) +- Added super attributes to Wink binary sensors ([@w1ll1am23] - [#9824]) ([binary_sensor.wink docs]) +- Release 0.55.2 ([@pvizeli] - [#9904]) +- Dependemcy version bump. ([@zabuldon] - [#9899]) ([device_tracker.mikrotik docs]) +- Update osramlightify.py ([@Bahnburner] - [#9905]) ([light.osramlightify docs]) +- Fixes ([@bachya] - [#9912]) ([switch.rainmachine docs]) +- Fix load of components without any config from packages ([@azogue] - [#9901]) (breaking change) +- Fixes ([@bachya] - [#9911]) ([sensor.airvisual docs]) +- add last_action for xiaomi cube ([@danielhiversen] - [#9897]) ([binary_sensor.xiaomi_aqara docs]) +- Added support for Denon AVR-4810. ([@scarface-4711] - [#9887]) ([media_player.denonavr docs]) +- Recorder: Extra check to incoming connections which could be not sqlite3 ones ([@azogue] - [#9867]) +- Fix the resource naming in the UI ([@cgtobi] - [#9916]) ([sensor.systemmonitor docs]) (breaking change) +- Update xiaomi_aqara.py ([@danielhiversen] - [#9920]) ([sensor.xiaomi_aqara docs]) +- Fix the resource naming in the UI ([@cgtobi] - [#9927]) ([sensor.glances docs]) +- Add transmission sensor: number of active torrents ([@mclem] - [#9914]) ([sensor.transmission docs]) +- Google Actions for Assistant ([@philk] - [#9632]) ([google_assistant docs]) ([http docs]) (new-platform) +- Allow flexible relayer url ([@balloob] - [#9939]) ([cloud.iot docs]) +- update async_timeout from v1.4.0 tp v2.0.0 ([@TopdRob] - [#9938]) +- Bump py-synology to 0.1.5 ([@arsaboo] - [#9932]) ([camera.synology docs]) +- Update aioimaplib from v0.7.12 to v0.7.13 ([@TopdRob] - [#9930]) ([sensor.imap docs]) +- A new platform for controlling Monoprice 6-Zone amplifier ([@etsinko] - [#9662]) ([media_player.monoprice docs]) (new-platform) +- Align away state tag with device_trackers ([@PeteBa] - [#9884]) ([sensor.mqtt_room docs]) (breaking change) +- Add serial sensor ([@fabaff] - [#9861]) ([sensor.serial docs]) (new-platform) +- Fix missing timeout for Netatmo binary sensor ([@jabesq] - [#9850]) ([binary_sensor.netatmo docs]) +- Xiaomi config validation ([@danielhiversen] - [#9941]) ([xiaomi_aqara docs]) +- using defusedxml ElementTree for safer parsing of untrusted XML data ([@danielwelch] - [#9934]) ([device_tracker.upc_connect docs]) +- notify.xmpp - Add support for MUC ([@ldvc] - [#9931]) ([notify.xmpp docs]) +- FFmpeg 1.8 ([@pvizeli] - [#9944]) ([ffmpeg docs]) ([camera.ffmpeg docs]) ([camera.onvif docs]) ([camera.yi docs]) +- Changed returned attribute from "Game" to "game" ([@itchaboy] - [#9945]) ([sensor.steam_online docs]) +- Move 'lights' to const.py ([@fabaff] - [#9929]) ([abode docs]) ([vera docs]) ([light.template docs]) ([switch.flux docs]) +- Update directpy to 0.2 ([@arsaboo] - [#9948]) +- Update enocean to 0.40 ([@arsaboo] - [#9949]) ([enocean docs]) +- Update hikvision to 1.2 ([@arsaboo] - [#9953]) ([switch.hikvisioncam docs]) +- Update fritzhome to 1.0.3 ([@arsaboo] - [#9951]) ([switch.fritzdect docs]) +- Update fritzconnection to 0.6.5 ([@arsaboo] - [#9950]) ([device_tracker.fritz docs]) ([sensor.fritzbox_callmonitor docs]) ([sensor.fritzbox_netmonitor docs]) +- Upgraded pyhomematic ([@danielperna84] - [#9956]) ([homematic docs]) +- Add emeter attributes ([@gollo] - [#9903]) ([light.tplink docs]) +- Use default clientsession to stream synology video ([@snjoetw] - [#9959]) ([camera.synology docs]) +- Update ffmpeg 1.9 ([@pvizeli] - [#9963]) +- Improve SSL certs used by aiohttp ([@balloob] - [#9958]) ([cloud.iot docs]) +- Fix async probs ([@pvizeli] - [#9924]) +- Add Toon support ([@Boltgolt] - [#9483]) ([toon docs]) ([climate.toon docs]) ([sensor.toon docs]) ([switch.toon docs]) (new-platform) +- [tradfri] Update pytradfri, simplify dependencies. ([@lwis] - [#9875]) ([tradfri docs]) ([light.tradfri docs]) ([sensor.tradfri docs]) +- Moved siren to Wink from switch ([@w1ll1am23] - [#9879]) ([wink docs]) ([switch.wink docs]) (breaking change) +- Remove async_update ([@pvizeli] - [#9997]) + +[#8998]: https://github.com/home-assistant/home-assistant/pull/8998 +[#9138]: https://github.com/home-assistant/home-assistant/pull/9138 +[#9454]: https://github.com/home-assistant/home-assistant/pull/9454 +[#9483]: https://github.com/home-assistant/home-assistant/pull/9483 +[#9553]: https://github.com/home-assistant/home-assistant/pull/9553 +[#9594]: https://github.com/home-assistant/home-assistant/pull/9594 +[#9632]: https://github.com/home-assistant/home-assistant/pull/9632 +[#9654]: https://github.com/home-assistant/home-assistant/pull/9654 +[#9662]: https://github.com/home-assistant/home-assistant/pull/9662 +[#9664]: https://github.com/home-assistant/home-assistant/pull/9664 +[#9667]: https://github.com/home-assistant/home-assistant/pull/9667 +[#9681]: https://github.com/home-assistant/home-assistant/pull/9681 +[#9683]: https://github.com/home-assistant/home-assistant/pull/9683 +[#9699]: https://github.com/home-assistant/home-assistant/pull/9699 +[#9701]: https://github.com/home-assistant/home-assistant/pull/9701 +[#9705]: https://github.com/home-assistant/home-assistant/pull/9705 +[#9707]: https://github.com/home-assistant/home-assistant/pull/9707 +[#9708]: https://github.com/home-assistant/home-assistant/pull/9708 +[#9709]: https://github.com/home-assistant/home-assistant/pull/9709 +[#9711]: https://github.com/home-assistant/home-assistant/pull/9711 +[#9718]: https://github.com/home-assistant/home-assistant/pull/9718 +[#9719]: https://github.com/home-assistant/home-assistant/pull/9719 +[#9720]: https://github.com/home-assistant/home-assistant/pull/9720 +[#9722]: https://github.com/home-assistant/home-assistant/pull/9722 +[#9725]: https://github.com/home-assistant/home-assistant/pull/9725 +[#9726]: https://github.com/home-assistant/home-assistant/pull/9726 +[#9727]: https://github.com/home-assistant/home-assistant/pull/9727 +[#9729]: https://github.com/home-assistant/home-assistant/pull/9729 +[#9732]: https://github.com/home-assistant/home-assistant/pull/9732 +[#9736]: https://github.com/home-assistant/home-assistant/pull/9736 +[#9738]: https://github.com/home-assistant/home-assistant/pull/9738 +[#9745]: https://github.com/home-assistant/home-assistant/pull/9745 +[#9747]: https://github.com/home-assistant/home-assistant/pull/9747 +[#9753]: https://github.com/home-assistant/home-assistant/pull/9753 +[#9754]: https://github.com/home-assistant/home-assistant/pull/9754 +[#9758]: https://github.com/home-assistant/home-assistant/pull/9758 +[#9759]: https://github.com/home-assistant/home-assistant/pull/9759 +[#9760]: https://github.com/home-assistant/home-assistant/pull/9760 +[#9761]: https://github.com/home-assistant/home-assistant/pull/9761 +[#9763]: https://github.com/home-assistant/home-assistant/pull/9763 +[#9764]: https://github.com/home-assistant/home-assistant/pull/9764 +[#9767]: https://github.com/home-assistant/home-assistant/pull/9767 +[#9769]: https://github.com/home-assistant/home-assistant/pull/9769 +[#9770]: https://github.com/home-assistant/home-assistant/pull/9770 +[#9772]: https://github.com/home-assistant/home-assistant/pull/9772 +[#9774]: https://github.com/home-assistant/home-assistant/pull/9774 +[#9776]: https://github.com/home-assistant/home-assistant/pull/9776 +[#9780]: https://github.com/home-assistant/home-assistant/pull/9780 +[#9781]: https://github.com/home-assistant/home-assistant/pull/9781 +[#9784]: https://github.com/home-assistant/home-assistant/pull/9784 +[#9785]: https://github.com/home-assistant/home-assistant/pull/9785 +[#9787]: https://github.com/home-assistant/home-assistant/pull/9787 +[#9788]: https://github.com/home-assistant/home-assistant/pull/9788 +[#9794]: https://github.com/home-assistant/home-assistant/pull/9794 +[#9795]: https://github.com/home-assistant/home-assistant/pull/9795 +[#9798]: https://github.com/home-assistant/home-assistant/pull/9798 +[#9802]: https://github.com/home-assistant/home-assistant/pull/9802 +[#9805]: https://github.com/home-assistant/home-assistant/pull/9805 +[#9806]: https://github.com/home-assistant/home-assistant/pull/9806 +[#9807]: https://github.com/home-assistant/home-assistant/pull/9807 +[#9810]: https://github.com/home-assistant/home-assistant/pull/9810 +[#9814]: https://github.com/home-assistant/home-assistant/pull/9814 +[#9817]: https://github.com/home-assistant/home-assistant/pull/9817 +[#9821]: https://github.com/home-assistant/home-assistant/pull/9821 +[#9823]: https://github.com/home-assistant/home-assistant/pull/9823 +[#9824]: https://github.com/home-assistant/home-assistant/pull/9824 +[#9825]: https://github.com/home-assistant/home-assistant/pull/9825 +[#9826]: https://github.com/home-assistant/home-assistant/pull/9826 +[#9831]: https://github.com/home-assistant/home-assistant/pull/9831 +[#9835]: https://github.com/home-assistant/home-assistant/pull/9835 +[#9838]: https://github.com/home-assistant/home-assistant/pull/9838 +[#9841]: https://github.com/home-assistant/home-assistant/pull/9841 +[#9842]: https://github.com/home-assistant/home-assistant/pull/9842 +[#9844]: https://github.com/home-assistant/home-assistant/pull/9844 +[#9845]: https://github.com/home-assistant/home-assistant/pull/9845 +[#9846]: https://github.com/home-assistant/home-assistant/pull/9846 +[#9847]: https://github.com/home-assistant/home-assistant/pull/9847 +[#9850]: https://github.com/home-assistant/home-assistant/pull/9850 +[#9851]: https://github.com/home-assistant/home-assistant/pull/9851 +[#9856]: https://github.com/home-assistant/home-assistant/pull/9856 +[#9859]: https://github.com/home-assistant/home-assistant/pull/9859 +[#9860]: https://github.com/home-assistant/home-assistant/pull/9860 +[#9861]: https://github.com/home-assistant/home-assistant/pull/9861 +[#9862]: https://github.com/home-assistant/home-assistant/pull/9862 +[#9865]: https://github.com/home-assistant/home-assistant/pull/9865 +[#9866]: https://github.com/home-assistant/home-assistant/pull/9866 +[#9867]: https://github.com/home-assistant/home-assistant/pull/9867 +[#9869]: https://github.com/home-assistant/home-assistant/pull/9869 +[#9871]: https://github.com/home-assistant/home-assistant/pull/9871 +[#9874]: https://github.com/home-assistant/home-assistant/pull/9874 +[#9875]: https://github.com/home-assistant/home-assistant/pull/9875 +[#9879]: https://github.com/home-assistant/home-assistant/pull/9879 +[#9880]: https://github.com/home-assistant/home-assistant/pull/9880 +[#9882]: https://github.com/home-assistant/home-assistant/pull/9882 +[#9884]: https://github.com/home-assistant/home-assistant/pull/9884 +[#9887]: https://github.com/home-assistant/home-assistant/pull/9887 +[#9890]: https://github.com/home-assistant/home-assistant/pull/9890 +[#9897]: https://github.com/home-assistant/home-assistant/pull/9897 +[#9899]: https://github.com/home-assistant/home-assistant/pull/9899 +[#9900]: https://github.com/home-assistant/home-assistant/pull/9900 +[#9901]: https://github.com/home-assistant/home-assistant/pull/9901 +[#9903]: https://github.com/home-assistant/home-assistant/pull/9903 +[#9904]: https://github.com/home-assistant/home-assistant/pull/9904 +[#9905]: https://github.com/home-assistant/home-assistant/pull/9905 +[#9911]: https://github.com/home-assistant/home-assistant/pull/9911 +[#9912]: https://github.com/home-assistant/home-assistant/pull/9912 +[#9914]: https://github.com/home-assistant/home-assistant/pull/9914 +[#9916]: https://github.com/home-assistant/home-assistant/pull/9916 +[#9920]: https://github.com/home-assistant/home-assistant/pull/9920 +[#9924]: https://github.com/home-assistant/home-assistant/pull/9924 +[#9927]: https://github.com/home-assistant/home-assistant/pull/9927 +[#9929]: https://github.com/home-assistant/home-assistant/pull/9929 +[#9930]: https://github.com/home-assistant/home-assistant/pull/9930 +[#9931]: https://github.com/home-assistant/home-assistant/pull/9931 +[#9932]: https://github.com/home-assistant/home-assistant/pull/9932 +[#9934]: https://github.com/home-assistant/home-assistant/pull/9934 +[#9938]: https://github.com/home-assistant/home-assistant/pull/9938 +[#9939]: https://github.com/home-assistant/home-assistant/pull/9939 +[#9941]: https://github.com/home-assistant/home-assistant/pull/9941 +[#9944]: https://github.com/home-assistant/home-assistant/pull/9944 +[#9945]: https://github.com/home-assistant/home-assistant/pull/9945 +[#9948]: https://github.com/home-assistant/home-assistant/pull/9948 +[#9949]: https://github.com/home-assistant/home-assistant/pull/9949 +[#9950]: https://github.com/home-assistant/home-assistant/pull/9950 +[#9951]: https://github.com/home-assistant/home-assistant/pull/9951 +[#9953]: https://github.com/home-assistant/home-assistant/pull/9953 +[#9956]: https://github.com/home-assistant/home-assistant/pull/9956 +[#9958]: https://github.com/home-assistant/home-assistant/pull/9958 +[#9959]: https://github.com/home-assistant/home-assistant/pull/9959 +[#9963]: https://github.com/home-assistant/home-assistant/pull/9963 +[#9997]: https://github.com/home-assistant/home-assistant/pull/9997 +[#10045]: https://github.com/home-assistant/home-assistant/pull/10045 +[#10053]: https://github.com/home-assistant/home-assistant/pull/10053 +[#10060]: https://github.com/home-assistant/home-assistant/pull/10060 +[@Bahnburner]: https://github.com/Bahnburner +[@Boltgolt]: https://github.com/Boltgolt +[@ChristianKuehnel]: https://github.com/ChristianKuehnel +[@GenericStudent]: https://github.com/GenericStudent +[@Julius2342]: https://github.com/Julius2342 +[@Kane610]: https://github.com/Kane610 +[@MisterWil]: https://github.com/MisterWil +[@Munsio]: https://github.com/Munsio +[@PeteBa]: https://github.com/PeteBa +[@TopdRob]: https://github.com/TopdRob +[@alanfischer]: https://github.com/alanfischer +[@andrey-git]: https://github.com/andrey-git +[@armills]: https://github.com/armills +[@arsaboo]: https://github.com/arsaboo +[@azogue]: https://github.com/azogue +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@cdce8p]: https://github.com/cdce8p +[@cgarwood]: https://github.com/cgarwood +[@cgtobi]: https://github.com/cgtobi +[@danielhiversen]: https://github.com/danielhiversen +[@danielperna84]: https://github.com/danielperna84 +[@danielwelch]: https://github.com/danielwelch +[@etsinko]: https://github.com/etsinko +[@fabaff]: https://github.com/fabaff +[@flowolf]: https://github.com/flowolf +[@fronzbot]: https://github.com/fronzbot +[@gollo]: https://github.com/gollo +[@happyleavesaoc]: https://github.com/happyleavesaoc +[@icovada]: https://github.com/icovada +[@itchaboy]: https://github.com/itchaboy +[@jabesq]: https://github.com/jabesq +[@jeroenterheerdt]: https://github.com/jeroenterheerdt +[@ldvc]: https://github.com/ldvc +[@lwis]: https://github.com/lwis +[@mclem]: https://github.com/mclem +[@passie]: https://github.com/passie +[@philk]: https://github.com/philk +[@pschmitt]: https://github.com/pschmitt +[@pvizeli]: https://github.com/pvizeli +[@rbflurry]: https://github.com/rbflurry +[@rcloran]: https://github.com/rcloran +[@rdbahm]: https://github.com/rdbahm +[@ryanm101]: https://github.com/ryanm101 +[@rytilahti]: https://github.com/rytilahti +[@scarface-4711]: https://github.com/scarface-4711 +[@sdague]: https://github.com/sdague +[@snjoetw]: https://github.com/snjoetw +[@syssi]: https://github.com/syssi +[@tchellomello]: https://github.com/tchellomello +[@tinloaf]: https://github.com/tinloaf +[@vickyg3]: https://github.com/vickyg3 +[@w1ll1am23]: https://github.com/w1ll1am23 +[@webworxshop]: https://github.com/webworxshop +[@zabuldon]: https://github.com/zabuldon +[@ziotibia81]: https://github.com/ziotibia81 +[__init__ docs]: https://home-assistant.io/components/__init__/ +[abode docs]: https://home-assistant.io/components/abode/ +[alarm_control_panel.arlo docs]: https://home-assistant.io/components/alarm_control_panel.arlo/ +[alarm_control_panel.egardia docs]: https://home-assistant.io/components/alarm_control_panel.egardia/ +[alexa.smart_home docs]: https://home-assistant.io/components/alexa.smart_home/ +[arlo docs]: https://home-assistant.io/components/arlo/ +[automation.event docs]: https://home-assistant.io/docs/automation/trigger/#event-trigger +[automation.numeric_state docs]: https://home-assistant.io/docs/automation/trigger/#numeric-state-trigger +[automation.state docs]: https://home-assistant.io/docs/automation/trigger/#state-trigger +[binary_sensor.iss docs]: https://home-assistant.io/components/binary_sensor.iss/ +[binary_sensor.netatmo docs]: https://home-assistant.io/components/binary_sensor.netatmo/ +[binary_sensor.skybell docs]: https://home-assistant.io/components/binary_sensor.skybell/ +[binary_sensor.template docs]: https://home-assistant.io/components/binary_sensor.template/ +[binary_sensor.tesla docs]: https://home-assistant.io/components/binary_sensor.tesla/ +[binary_sensor.wink docs]: https://home-assistant.io/components/binary_sensor.wink/ +[binary_sensor.xiaomi_aqara docs]: https://home-assistant.io/components/binary_sensor.xiaomi_aqara/ +[camera.arlo docs]: https://home-assistant.io/components/camera.arlo/ +[camera.ffmpeg docs]: https://home-assistant.io/components/camera.ffmpeg/ +[camera.onvif docs]: https://home-assistant.io/components/camera.onvif/ +[camera.skybell docs]: https://home-assistant.io/components/camera.skybell/ +[camera.synology docs]: https://home-assistant.io/components/camera.synology/ +[camera.yi docs]: https://home-assistant.io/components/camera.yi/ +[climate.eq3btsmart docs]: https://home-assistant.io/components/climate.eq3btsmart/ +[climate.knx docs]: https://home-assistant.io/components/climate.knx/ +[climate.mqtt docs]: https://home-assistant.io/components/climate.mqtt/ +[climate.tesla docs]: https://home-assistant.io/components/climate.tesla/ +[climate.toon docs]: https://home-assistant.io/components/climate.toon/ +[cloud.iot docs]: https://home-assistant.io/components/cloud.iot/ +[cover.rflink docs]: https://home-assistant.io/components/cover.rflink/ +[device_tracker docs]: https://home-assistant.io/components/device_tracker/ +[device_tracker.fritz docs]: https://home-assistant.io/components/device_tracker.fritz/ +[device_tracker.mikrotik docs]: https://home-assistant.io/components/device_tracker.mikrotik/ +[device_tracker.netgear docs]: https://home-assistant.io/components/device_tracker.netgear/ +[device_tracker.owntracks docs]: https://home-assistant.io/components/device_tracker.owntracks/ +[device_tracker.snmp docs]: https://home-assistant.io/components/device_tracker.snmp/ +[device_tracker.unifi docs]: https://home-assistant.io/components/device_tracker.unifi/ +[device_tracker.upc_connect docs]: https://home-assistant.io/components/device_tracker.upc_connect/ +[enocean docs]: https://home-assistant.io/components/enocean/ +[ffmpeg docs]: https://home-assistant.io/components/ffmpeg/ +[google_assistant docs]: https://home-assistant.io/components/google_assistant/ +[hassio docs]: https://home-assistant.io/components/hassio/ +[homematic docs]: https://home-assistant.io/components/homematic/ +[http docs]: https://home-assistant.io/components/http/ +[knx docs]: https://home-assistant.io/components/knx/ +[light.hue docs]: https://home-assistant.io/components/light.hue/ +[light.mqtt_json docs]: https://home-assistant.io/components/light.mqtt_json/ +[light.osramlightify docs]: https://home-assistant.io/components/light.osramlightify/ +[light.skybell docs]: https://home-assistant.io/components/light.skybell/ +[light.template docs]: https://home-assistant.io/components/light.template/ +[light.tplink docs]: https://home-assistant.io/components/light.tplink/ +[light.tradfri docs]: https://home-assistant.io/components/light.tradfri/ +[light.yeelight docs]: https://home-assistant.io/components/light.yeelight/ +[lock.tesla docs]: https://home-assistant.io/components/lock.tesla/ +[map docs]: https://home-assistant.io/components/map/ +[media_extractor docs]: https://home-assistant.io/components/media_extractor/ +[media_player.denon docs]: https://home-assistant.io/components/media_player.denon/ +[media_player.denonavr docs]: https://home-assistant.io/components/media_player.denonavr/ +[media_player.dunehd docs]: https://home-assistant.io/components/media_player.dunehd/ +[media_player.liveboxplaytv docs]: https://home-assistant.io/components/media_player.liveboxplaytv/ +[media_player.monoprice docs]: https://home-assistant.io/components/media_player.monoprice/ +[media_player.plex docs]: https://home-assistant.io/components/media_player.plex/ +[media_player.yamaha docs]: https://home-assistant.io/components/media_player.yamaha/ +[modbus docs]: https://home-assistant.io/components/modbus/ +[mqtt docs]: https://home-assistant.io/components/mqtt/ +[namecheapdns docs]: https://home-assistant.io/components/namecheapdns/ +[notify.clicksend_tts docs]: https://home-assistant.io/components/notify.clicksend_tts/ +[notify.html5 docs]: https://home-assistant.io/components/notify.html5/ +[notify.rocketchat docs]: https://home-assistant.io/components/notify.rocketchat/ +[notify.xmpp docs]: https://home-assistant.io/components/notify.xmpp/ +[python_script docs]: https://home-assistant.io/components/python_script/ +[raincloud docs]: https://home-assistant.io/components/raincloud/ +[sensor.abode docs]: https://home-assistant.io/components/sensor.abode/ +[sensor.airvisual docs]: https://home-assistant.io/components/sensor.airvisual/ +[sensor.android_ip_webcam docs]: https://home-assistant.io/components/sensor.android_ip_webcam/ +[sensor.arlo docs]: https://home-assistant.io/components/sensor.arlo/ +[sensor.arwn docs]: https://home-assistant.io/components/sensor.arwn/ +[sensor.darksky docs]: https://home-assistant.io/components/sensor.darksky/ +[sensor.fitbit docs]: https://home-assistant.io/components/sensor.fitbit/ +[sensor.fritzbox_callmonitor docs]: https://home-assistant.io/components/sensor.fritzbox_callmonitor/ +[sensor.fritzbox_netmonitor docs]: https://home-assistant.io/components/sensor.fritzbox_netmonitor/ +[sensor.glances docs]: https://home-assistant.io/components/sensor.glances/ +[sensor.imap docs]: https://home-assistant.io/components/sensor.imap/ +[sensor.ios docs]: https://home-assistant.io/components/sensor.ios/ +[sensor.mqtt_room docs]: https://home-assistant.io/components/sensor.mqtt_room/ +[sensor.netdata docs]: https://home-assistant.io/components/sensor.netdata/ +[sensor.openweathermap docs]: https://home-assistant.io/components/sensor.openweathermap/ +[sensor.raincloud docs]: https://home-assistant.io/components/sensor.raincloud/ +[sensor.ring docs]: https://home-assistant.io/components/sensor.ring/ +[sensor.serial docs]: https://home-assistant.io/components/sensor.serial/ +[sensor.skybell docs]: https://home-assistant.io/components/sensor.skybell/ +[sensor.snmp docs]: https://home-assistant.io/components/sensor.snmp/ +[sensor.statistics docs]: https://home-assistant.io/components/sensor.statistics/ +[sensor.steam_online docs]: https://home-assistant.io/components/sensor.steam_online/ +[sensor.systemmonitor docs]: https://home-assistant.io/components/sensor.systemmonitor/ +[sensor.tesla docs]: https://home-assistant.io/components/sensor.tesla/ +[sensor.toon docs]: https://home-assistant.io/components/sensor.toon/ +[sensor.tradfri docs]: https://home-assistant.io/components/sensor.tradfri/ +[sensor.transmission docs]: https://home-assistant.io/components/sensor.transmission/ +[sensor.travisci docs]: https://home-assistant.io/components/sensor.travisci/ +[sensor.uptime docs]: https://home-assistant.io/components/sensor.uptime/ +[sensor.vera docs]: https://home-assistant.io/components/sensor.vera/ +[sensor.xiaomi_aqara docs]: https://home-assistant.io/components/sensor.xiaomi_aqara/ +[sensor.zha docs]: https://home-assistant.io/components/sensor.zha/ +[shiftr docs]: https://home-assistant.io/components/shiftr/ +[skybell docs]: https://home-assistant.io/components/skybell/ +[switch.flux docs]: https://home-assistant.io/components/switch.flux/ +[switch.fritzdect docs]: https://home-assistant.io/components/switch.fritzdect/ +[switch.hikvisioncam docs]: https://home-assistant.io/components/switch.hikvisioncam/ +[switch.rainmachine docs]: https://home-assistant.io/components/switch.rainmachine/ +[switch.skybell docs]: https://home-assistant.io/components/switch.skybell/ +[switch.tesla docs]: https://home-assistant.io/components/switch.tesla/ +[switch.toon docs]: https://home-assistant.io/components/switch.toon/ +[switch.tplink docs]: https://home-assistant.io/components/switch.tplink/ +[switch.wink docs]: https://home-assistant.io/components/switch.wink/ +[switch.xiaomi_miio docs]: https://home-assistant.io/components/switch.xiaomi_miio/ +[telegram_bot docs]: https://home-assistant.io/components/telegram_bot/ +[tesla docs]: https://home-assistant.io/components/tesla/ +[toon docs]: https://home-assistant.io/components/toon/ +[tradfri docs]: https://home-assistant.io/components/tradfri/ +[vacuum docs]: https://home-assistant.io/components/vacuum/ +[vacuum.dyson docs]: https://home-assistant.io/components/vacuum.dyson/ +[vacuum.mqtt docs]: https://home-assistant.io/components/vacuum.mqtt/ +[vera docs]: https://home-assistant.io/components/vera/ +[weather.openweathermap docs]: https://home-assistant.io/components/weather.openweathermap/ +[wink docs]: https://home-assistant.io/components/wink/ +[xiaomi_aqara docs]: https://home-assistant.io/components/xiaomi_aqara/ +[zha docs]: https://home-assistant.io/components/zha/ +[#10024]: https://github.com/home-assistant/home-assistant/pull/10024 +[#10029]: https://github.com/home-assistant/home-assistant/pull/10029 +[@bieniu]: https://github.com/bieniu diff --git a/source/_posts/2017-10-23-simple-analog-sensor.markdown b/source/_posts/2017-10-23-simple-analog-sensor.markdown new file mode 100644 index 00000000000..10ae33715af --- /dev/null +++ b/source/_posts/2017-10-23-simple-analog-sensor.markdown @@ -0,0 +1,93 @@ +--- +layout: post +title: "Serial analog sensor" +description: "Using a Digispark with Home Assistant." +date: 2017-10-23 08:00:00 +0200 +date_formatted: "October 23, 2017" +author: Fabian Affolter +comments: true +categories: How-To +og_image: /images/blog/2017-10-analog-sensor/analog-sensor.png +--- + + +This blog post is about building a super simple analog sensor for Home Assistant. The physical sensor will send the data over its virtual serial port as it will be connected over USB. The concept is similar to the [TEMPer USB](/components/sensor.temper/) devices. The attatched sensor type to the microcontroller can be any kind of sensor which gives you an analog signal from brightness over soil moisture to temperature. + +The microcontroller will only transfer the voltage of an analog input pin which will be between 0 and 1024. Home Assistant will use the new [`serial`](/components/sensor.serial/) sensor platform to read the data and perform actions to convert the raw reading into a real measurement. This means that you don't have to adjust the code of your microcontroller if you change the attached sensor type. + +

    + + The assembled sensor +

    + + + +All parts needed in this how-to can be bought for less than 2 Euro or 2 USD from China. I'm going to use the following items which were already available in my craft crate: + +- [Digispark USB Development Board](http://digistump.com/category/1) +- Temperature sensor [TMP36](http://www.analog.com/media/en/technical-documentation/data-sheets/TMP35_36_37.pdf) (or any other sensor that gives you an analog signal) +- Cables (if you don't want to connect the sensor directly to the board) + +The cabling is easy. + +| Sensor | Digispark | +|--------|-----------| +| GND | GND | +| VCC | 5V | +| VOUT | P4 | + +There are other boards with the same size available. Like those with the far more powerful Mega32U4 chip. However, it would work with boards from the Arduino family as well if you adjust the code provided below. + +The sketch is pretty simple. We are going to send the readings to a virtual [serial output](https://digistump.com/wiki/digispark/tutorials/digicdc) every 5 seconds. No logic needed. A little plus is that the onboard LED is blinking as an indicator that the board is working. [Upload](https://digistump.com/wiki/digispark) the code to your Digispark board. Keep in mind that the upload process is different than with Arduino or ESP8266 boards. + +```cpp +#include + +#define LED_PIN 1 +#define INPUT_PIN 2 // Physical pin P4 is analog input 2 + +void setup() { + SerialUSB.begin(); + pinMode(LED_PIN, OUTPUT); +} + +void loop() { + if (SerialUSB.available()) { + digitalWrite(LED_PIN, HIGH); + SerialUSB.delay(250); + + int reading = analogRead(INPUT_PIN); + SerialUSB.println(reading); + + digitalWrite(LED_PIN, LOW); + SerialUSB.delay(5000); + } +} +``` + +To make it work with other boards simply use [`Serial.begin(115200);`](https://www.arduino.cc/en/Reference/Serial) and [`Serial.println(reading);`](https://www.arduino.cc/en/Serial/Println). + +If you connect with a tool like `minicom` to your system's serial port `/dev/ttyACM0`, then you will get the data. To use the sensor with Home Assistant the [`serial`](/components/sensor.serial/) sensor platform needs to be set up. + +```yaml +sensor: + - platform: serial + port: /dev/ttyACM0 +``` + +The physical sensor reads the current voltage of the pin. A [template sensor](/components/sensor.template/) takes the reading and converts it into a measurement. The data sheet of the sensor unit usually contains details about the involved calculations. + +{% raw %} +```yaml + - platform: template + sensors: + temperature: + friendly_name: Temperature + unit_of_measurement: "°C" + value_template: "{{ (((states('sensor.serial_sensor') | float * 5 / 1024 ) - 0.5) * 100) | round(1) }}" +``` +{% endraw %} + +Hide the serial sensor if you don't want to see the raw data in the frontend and you are done. The whole setup with a Digispark is not very reliable because there is no hardware USB support. As a showcase and if you don't build your automation rules around it does the sensor what it should for a very small price. + + diff --git a/source/_posts/2017-10-28-demo.markdown b/source/_posts/2017-10-28-demo.markdown new file mode 100644 index 00000000000..d6d9d895827 --- /dev/null +++ b/source/_posts/2017-10-28-demo.markdown @@ -0,0 +1,106 @@ +--- +layout: post +title: "Home Assistant Demo" +description: "Showing a demo of Home Assistant to an audience." +date: 2017-10-28 10:00:00 +0200 +date_formatted: "October 28, 2017" +author: Fabian Affolter +author_twitter: fabaff +comments: true +categories: How-To +og_image: /images/blog/2017-10-interactive-demo/demo-random.png +--- + +If you are planning to host a Home Assistant meetup or doing a talk, then you probably want to show Home Assistant to an audience. You could use a Wireless router, bulbs, switches, and a single board computer to do a realistic demo. For a workshop, this is what I usually do because I think that working with physical hardware is more fun for the participants. The issue is that you need time to set up, power and space. For a talk or in a location, where you only have a beamer and a table or a lectern, the physical hardware approach is not very convenient. + +The simplest way to show Home Assistant to others is the online demo at [https://home-assistant.io/demo/](https://home-assistant.io/demo/) + +

    + + Home Assistant's online demo +

    + + + +## {% linkable_title `--demo-mode` and Demo platform %} +To be safe for your talk, you don't want to depend on an internet connection. The demo mode [`--demo-mode`](/docs/tools/hass/) allows you to run a demo locally including the latest features. Make sure that you have a backup of your configuration. + +```bash +$ hass --demo-mode +``` + +If you already have a `configuration.yaml` file in place then you will get a combination of your setup with all available [`demo`](/components/demo/) platforms. This can be overwhelming for the audience. The suggestion is that you tailor the demo to your needs by only showing a few selected platforms. For example: + +```yaml +sensor: + - platform: demo +binary_sensor: + - platform: demo +switch: + - platform: demo +``` + +

    + + Home Assistant's demo platforms +

    + +## {% linkable_title `random` platforms %} +Till now the frontend is static. Nothing is changing over time. Starting with 0.57 we ship a [`random` binary sensor](https://github.com/home-assistant/home-assistant.github.io/blob/next/source/_components/binary_sensor.random.markdown) platform in addition to the already available [`random` sensor](/components/sensor.random/). + +By adding those platform to your `configuration.yaml` file, your demo will become more interactive. + +```yaml +sensor: + - platform: demo + name: Temperature + unit_of_measurement: "°C" +binary_sensor: + - platform: random + name: Front Door + - platform: random + name: Back Door + scan_interval: 5 +``` + +

    + + Demo with `random` platforms +

    + +The `random` and the `demo` platforms can, of course, be used together. With a little work and some of the [`template`](/components/#search/template) platforms or the [`input_*`](/components/#search/input) components it would even be possible to simulate a complete apartment or a house. For a hint check the sample below: + +{% raw %} +```yaml +input_boolean: + on_off: + name: On or off +binary_sensor: + - platform: template + sensors: + on_tester: + value_template: "{{ states.input_boolean.on_off.state == 'on' }}" + friendly_name: 'Movement' + device_class: motion +``` +{% endraw %} + +## {% linkable_title MQTT Discovery %} +This is a section for advanced users as it will require to run a separate script. Instead of adding `demo` platforms to the configuration this setup make use of [MQTT discovery](/docs/mqtt/discovery/) and the [embedded MQTT broker](/docs/mqtt/broker/#embedded-broker). Simply add MQTT to your `configuration.yaml` file with `discovery:` + +```yaml +mqtt: + discovery: true +``` + +Download the [sample script](https://github.com/home-assistant/home-assistant-dev-helper/blob/master/ha-mqtt-demo.py). It depends on [paho-mqtt](https://pypi.python.org/pypi/paho-mqtt). If you run the script inside your [Home Assistant's virtual environment](/docs/installation/virtualenv/) then you are good to go as the dependency should be present if you have used MQTT before. Otherwise, install it with `$ pip3 install paho-mqtt`. The same applies to the embedded broker. + +```bash +(ha)[ha-demo]$ python3 ha-mqtt-demo.py +Demo is running... -> CTRL + C to shutdown +``` + +It will create sensors, a light, and a switch and update the states as long the script is running. It possible to stop and restart script without losing the entities. + +Some users share their slides and other documents in [our assets repository](https://github.com/home-assistant/home-assistant-assets). Also, take a look at that repository if you need a logo for your slides. + diff --git a/source/_posts/2017-11-02-secure-shell-tunnel.markdown b/source/_posts/2017-11-02-secure-shell-tunnel.markdown new file mode 100644 index 00000000000..0d346e5389a --- /dev/null +++ b/source/_posts/2017-11-02-secure-shell-tunnel.markdown @@ -0,0 +1,69 @@ +--- +layout: post +title: "Home Assistant and SSH" +description: "Accessing Home Assistant through a secure shell tunnel." +date: 2017-11-02 10:00:00 +0200 +date_formatted: "November 02, 2017" +author: Fabian Affolter +author_twitter: fabaff +comments: true +categories: How-To +og_image: /images/blog/2017-11-ssh/social.png +--- + +Most system engineers are very familiar with [SSH (Secure shell)](https://en.wikipedia.org/wiki/Secure_Shell). This tool which contains a server part and a client part is used to access a remote system in a secure way. It can also help you if your are running Home Assistant but don't want to expose it to the public. On a Linux system SSH is often available by default. If you are using a Windows installation additional steps are required which are not covered here. + +In this blog post we are going to use the tunneling option of SSH to create a secure connection and forward the Home Assistant frontend to a local system. + + + +The involved parties are: + +- **Remote system**: Where Home Assistant is running, usually in your home network. +- **Local system**: Where you want to see the frontend. + +The prerequirements are that you need to allow the forwarding of port 22 from your router to the system where Home Assistant is running in your network. It might also be needed that you enable the SSH daemon by `$ sudo systemctl start sshd` on the remote system and to adjust the host firewall. If you are running [Hass.io](https://home-assistant.io/hassio/) then enable the [SSH Server add-on](https://home-assistant.io/addons/ssh/). You must also have a public IP address or hostname which can be provided by dynamic DNS (e.g., [NO-IP](https://www.noip.com/) or [DuckDNS](https://www.duckdns.org/)). +On your local system you need only a SSH client and you need to be in a network where SSH is allowed. + +First let's have a look at the command we are going to use. Use `man ssh` to get more information. + +```bash +$ ssh -L 8000:localhost:8123 user@[IP_ADDRESS_REMOTE] + | | | | | | + | | | | | |_ IP address or hostname of your router. + | | | | |_ Username on the remote system. + | | | |_ Port where the application is running. + | | |_ We want the frontend on this system. + | |_ The port on our local system to use (above 1024). + |_ We want to do local port forwarding. +``` + +A possible example could look like the command below. + +```bash +$ ssh -L 8000:localhost:8123 ha@192.168.0.11 +``` + +The first time you establish the connection you need to accept the fingerprint. + +```bash +The authenticity of host '192.168.0.11 (192.168.0.11)' can't be established. +ECDSA key fingerprint is SHA256:asdf2faasd4gk45454fadr78wfadfasdfeg4vvvsae33. +ECDSA key fingerprint is MD5:44:d4:f7:44:d4:aa:b8:de:ef:09:3e:0d:4e:12:11:09. +Are you sure you want to continue connecting (yes/no)? +Warning: Permanently added '192.168.0.162' (ECDSA) to the list of known hosts. +ha@192.168.0.11's password: +Last login: Fri Oct 27 17:50:09 2017 +[ha@home-assistant ~]$ +``` + +Now you are able to use your frontend on your local system: [http://localhost:8000](http://localhost:8000) + +Things to keep in mind: + +- You need a public IP address or hostname (Dynamic DNS will work) if you want to use it from the internet. +- You need to setup port forwarding on your router. +- Don't allow `root` to use SSH. Set `PermitRootLogin no` on the remote system. +- Your local port must be above 1024. Only `root` is allowed to forward privileged ports which are below 1024. +- Use [SSH keys for authentication](https://docs-old.fedoraproject.org/en-US/Fedora/14/html/Deployment_Guide/s2-ssh-configuration-keypairs.html) instead of passwords to avoid bruteforce attacks. + diff --git a/source/_posts/2017-11-04-release-57.markdown b/source/_posts/2017-11-04-release-57.markdown new file mode 100644 index 00000000000..0a0e117979f --- /dev/null +++ b/source/_posts/2017-11-04-release-57.markdown @@ -0,0 +1,636 @@ +--- +layout: post +title: "0.57: Translations, Hacktoberfest, Timers" +description: "Due to Hacktoberfest we had to ship more fixes, improvements and components than usual." +date: 2017-11-04 04:00:00 +date_formatted: "November 4, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2017-11-0.57/languages.png +--- + +

    +The Home Assistant sidebar in 12 different languages +The Home Assistant sidebar in 12 different languages. +

    + +Whaaaaaats up everyone?! 😁 It's been another crazy 2 weeks here at the virtual Home Assistant headquarters with a ton of great contributions from all over the world. New features, bug fixes, performance improvements. It's a lot so let's jump right in. + +## {% linkable_title Translations %} + +The first great feature, if you haven't guessed it yet from the screenshot above: we are now able to translate the UI! Currently the translations are limited to the sidebar menu items. Even without a translation tool available, our contributors have jumped in and submitted translations for these menu items in over twenty languages! Home Assistant will automatically pick an available translation based on your browser settings, or a translation can be manually selected in the configuration panel. + +We're currently working on an integration with the web based translation tool [lokalise.co](https://lokalise.co), to make the translation process accessible to anyone who would like to contribute. Stay tuned for a blog post with more documentation soon. + +## {% linkable_title Frontend improvements %} + +As part of getting translations to work, we did a lot of cleanup work on the frontend side. The re-organization should allow us to iterate faster on the frontend. We've already seen a lot of clean up as part of this thanks to @armills and @andrey-git for keep raising the quality! + +## {% linkable_title Hacktoberfest %} + +[Hacktoberfest](https://hacktoberfest.digitalocean.com/) 2017 is over! FINALLY. Each year we're attracting more developers that want to contribute to Home Assistant. This is great but also very exhausting to our code reviewers. I want to give an enormous gigantic huge big shout out to our reviewers @pvizeli, @andrey-git, @armills, @MartinHjelmare, @fabaff. You have all done an amazing job and we couldn't run Home Assistant without any of you! ❤ + +Hacktoberfest is obviously about the people contributing to open source. Big thanks to everyone that has taken the time to learn our code base and make contributions. We hope it was a pleasant experience and show how great open source can be. Hope to see many contributions in the future 👍 + +Here are our Hacktoberfest 2017 stats. It's a miracle everyone is still alive: + +- Main repo: [273 Pull requests](https://github.com/home-assistant/home-assistant/pulls?utf8=%E2%9C%93&q=merged%3A%3E2017-10-01%20is%3Apr%20label%3AHacktoberfest%20is%3Aclosed%20) were merged out of 307. +- Docs repo: [295 Pull requests](https://github.com/home-assistant/home-assistant.github.io/pulls?page=1&q=merged%3A%3E2017-10-01+is%3Apr+label%3AHacktoberfest+is%3Aclosed&utf8=%E2%9C%93) merged out of 310. +- Frontend: [57 pull requests](https://github.com/home-assistant/home-assistant-polymer/pulls?utf8=%E2%9C%93&q=merged%3A%3E2017-10-01%20is%3Apr%20label%3AHacktoberfest%20is%3Aclosed%20) merged. + +This means that we processed over 20 Pull requests per day. The result was already visible in 0.56. This release is almost the same. In those releases we were able to add over 40 new integrations. + +## {% linkable_title IKEA TRÅDFRI %} + +Good news and bad news on this front. The bad news is that IKEA changed the internal API for TRÅDFRI with a firmware update, breaking the Home Assistant integration. The good news is that they were nice enough to [email us with instructions on the breaking changes][ikea email]. + +Long time contributor [@lwis] jumped on the case and managed to migrate our integration in Home Assistant in time for this release. Great work! + +

    +Pumpkin with Home Assistant logo carved in. +@clhett01 made us a pumpkin ([via Twitter](https://twitter.com/clhett01/status/925481848612032512)) +

    + + +## {% linkable_title Timer %} + +Okay, one more highlight before we'll let you check out the changelog. Contributor [@danielperna84] (famous for creating the [HASS Configurator](https://home-assistant.io/addons/configurator/)), had another great component up his sleeve: the Timer component. With the timer component you'll be able to start countdown timers. A neat tool for your automation toolbox! More info in the [timer docs]. + +## {% linkable_title New Platforms %} + + + +- Introducing Ring Door Bell Camera (including StickUp cameras) and WiFi sensors ([@tchellomello] - [#9962]) ([ring docs]) ([binary_sensor.ring docs]) ([camera.ring docs]) ([sensor.ring docs]) (new-platform) +- add irish rail transport sensor ([@ttroy50] - [#9883]) ([sensor.irish_rail_transport docs]) (new-platform) +- Add fail2ban sensor ([@fronzbot] - [#9975]) ([sensor.fail2ban docs]) (new-platform) +- add eph ember controls ([@ttroy50] - [#9721]) ([climate.ephember docs]) (new-platform) +- whois domain lookup sensor ([@GenericStudent] - [#10000]) ([sensor.whois docs]) (new-platform) +- Add Deluge Switch Component ([@HydrelioxGitHub] - [#9979]) ([switch.deluge docs]) (new-platform) +- SNMP switch ([@kirichkov] - [#9840]) ([switch.snmp docs]) (new-platform) +- Microsoft tts ([@jeroenterheerdt] - [#9973]) ([tts.microsoft docs]) (new-platform) +- Telldus Live: Device without methods is a binary sensor ([@rasmusbe] - [#10106]) ([tellduslive docs]) ([binary_sensor.tellduslive docs]) (new-platform) +- Support for NO-IP ([@fabaff] - [#10155]) ([no_ip docs]) (new-platform) +- Linode ([@ryanm101] - [#9936]) ([linode docs]) ([binary_sensor.linode docs]) (new-platform) +- Nederlandse spoorwegen ([@b10m] - [#10136]) ([sensor.nederlandse_spoorwegen docs]) (new-platform) +- added Yesss SMS platform ([@flowolf] - [#10177]) ([notify.yessssms docs]) (new-platform) +- Add Sytadin Traffic component ([@gautric] - [#9524]) ([sensor.sytadin docs]) (new-platform) +- Added new Clickatell SMS messaging Notify Platform ([@davlloyd] - [#9775]) ([notify.clickatell docs]) (new-platform) +- Add Random binary sensor ([@fabaff] - [#10164]) ([binary_sensor.random docs]) (new-platform) +- Add gc100 platforms and component ([@davegravy] - [#10159]) ([gc100 docs]) ([binary_sensor.gc100 docs]) ([switch.gc100 docs]) (new-platform) +- Timer component ([@danielperna84] - [#9889]) ([timer docs]) (new-platform) +- integration with Remember The Milk. ([@ChristianKuehnel] - [#9803]) ([remember_the_milk docs]) (new-platform) +- Luftdaten sensor ([@lichtteil] - [#10274]) ([sensor.luftdaten docs]) (new-platform) + +## {% linkable_title If you need help... %} + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- IKEA TRÅDFRI: We no longer support entering the key in the configuration. ([@lwis] - [#10282]) ([tradfri docs]) (breaking change) +- API.AI was renamed to [Dialogflow](https://home-assistant.io/components/dialogflow/). This requires to rename the entry in your `configuration.yaml` file from `apiai:` to `dialogflow`. ([@fabaff] - [#10006]) ([dialogflow docs]) (breaking change) +- Wink: Removed support for entering your `username` and `password` in your config. Use the [new authentication method][wink-auth] instead. ([@w1ll1am23] - [#10277]) ([wink docs]) (breaking change) +- Use feed name assigned in EmonCMS if there is one. This changes the default behavior but still uses configured 'name' if it's set, so it won't break the configuration of people who have customized their feed names in HA config. ([@KlaasH] - [#10021]) ([sensor.emoncms docs]) (breaking change) +- The `namecheapdns` now uses `password:` instead of `access_token` in the configuration. Also, `host` is now optional which allow people who are not using subdomains to keep their configuration shorter. ([@fabaff] - [#10063]) ([namecheapdns docs]) (breaking change) +- Fix recorder crash for long state string - enforce a maximum state of 255 characters at core level ([@milanvo] - [#9696]) (breaking change) +- Add display currency setting to CoinMarketCap sensor. The name of the sensor attribute '24h_volume_usd' is changed to '24h_volume'. ([@R1chardTM] - [#10093]) ([sensor.coinmarketcap docs]) (breaking change) +- MQTT Statestream now serializes all data to JSON before publishing. This means that string attributes and values will be quoted from now on (e.g.: '"on"' instead of 'on'). You can still read these strings without the quotes by using 'value_json' instead of 'value' where applicable (e.g., templates). This causes automatic JSON deserialization. Other simple types are not affected. + + This fixes errors when an entity has an attribute that is not "a string, bytearray, int, float or None" and mqtt_statestream is used. As of now, the attribute is just handed over to paho, and paho can only send the aforementioned types. This patch fixes the issue by just casting everything to string before handing it over to paho. + + There are a number of components / entities which have "other" attributes, e.g. light that have an RGB attribute which is a list. ([@tinloaf] - [#9872]) ([mqtt_statestream docs]) (breaking change) +- Generic thermostat: the configuration option `tolerance` has been removed and has been replaced by `cold_tolerance` and `hot_tolerance`. This allows on and off states to have different error bands. ([@biggms] - [#9843]) ([climate.generic_thermostat docs]) (breaking change) +- Developers only: frontend has been refactored. The method `register_panel` has been turned into a coroutine function called `async_register_panel`. The parameter `url_path` has been renamed to `frontend_url_path`. For frontend, development, you no longer pass `development: 1` to the http component but instead configure the frontend component to be in development mode by pointing it at a local checkout of the Polymer repo: ([@balloob] - [#9915]) (breaking change) + +## {% linkable_title All changes %} + +- Update requests requirement ([@TopdRob] - [#9876]) +- Update `screenshot-components.png` file. ([@quamilek] - [#9987]) +- Upgrade speedtest-cli to 1.0.7 ([@fabaff] - [#9984]) ([sensor.speedtest docs]) +- Upgrade gitterpy to 0.1.6 ([@fabaff] - [#9983]) ([sensor.gitter docs]) +- Add optional attribute option to scrape sensor ([@DarkFox] - [#10001]) ([sensor.scrape docs]) +- Introducing Ring Door Bell Camera (including StickUp cameras) and WiFi sensors ([@tchellomello] - [#9962]) ([ring docs]) ([binary_sensor.ring docs]) ([camera.ring docs]) ([sensor.ring docs]) (new-platform) +- Add support for multiple disks to be monitored. ([@cgtobi] - [#9977]) ([sensor.hddtemp docs]) +- Update the Russound RNET component to use enhanced Russound.py ([@altersis] - [#9739]) ([media_player.russound_rnet docs]) +- Fix spelling error ([@SilvrrGIT] - [#10009]) +- Change persistent notification to avoid long text in entity state ([@milanvo] - [#9967]) ([persistent_notification docs]) +- Renaming API.AI to Dialogflow ([@fabaff] - [#10006]) ([dialogflow docs]) (breaking change) +- Bump dev to 0.57.0.dev0 ([@fabaff] - [#10010]) +- Add xy attribute to Yeelight ([@HydrelioxGitHub] - [#9957]) ([light.yeelight docs]) +- Added gaction script to support the new Google Assistant component in Docker ([@chriskacerguis] - [#10019]) +- Json api fix ([@alanfischer] - [#10017]) +- Upgrade mypy to 0.540 ([@fabaff] - [#10013]) +- Xiaomi Aqara: New xiaomi wireless button (sensor_switch.aq3) introduced ([@syssi] - [#10008]) ([binary_sensor.xiaomi_aqara docs]) +- Upgrade youtube_dl to 2017.10.20 ([@fabaff] - [#10014]) ([media_extractor docs]) +- switch.flux: add interval and transition attributes ([@abmantis] - [#9700]) ([switch.flux docs]) +- Use feed name assigned in EmonCMS if there is one ([@KlaasH] - [#10021]) ([sensor.emoncms docs]) (breaking change) +- add irish rail transport sensor ([@ttroy50] - [#9883]) ([sensor.irish_rail_transport docs]) (new-platform) +- RGB Tradfri simple support ([@matemaciek] - [#9703]) ([light.tradfri docs]) +- Add regression test for entity ID update bug ([@armills] - [#10037]) +- Aioautomatic bump and scope update ([@armills] - [#10043]) ([device_tracker.automatic docs]) +- Fix no data event triggers ([@armills] - [#10049]) ([automation.event docs]) +- fixing a typo in the old library which broke hub gen2 compatibility ([@sander76] - [#9990]) +- Add fail2ban sensor ([@fronzbot] - [#9975]) ([sensor.fail2ban docs]) (new-platform) +- Show current program thumbnail as media_image ([@pschmitt] - [#10033]) ([media_player.liveboxplaytv docs]) +- Add link to docs and update ordering ([@fabaff] - [#10062]) ([duckdns docs]) +- Remove STATE_UNKNOWN ([@fabaff] - [#10064]) ([sensor.glances docs]) +- update library for xiaomi_aqara, change from pyCrypto to cryptography ([@danielhiversen] - [#10066]) ([xiaomi_aqara docs]) +- Make host optional ([@fabaff] - [#10063]) ([namecheapdns docs]) (breaking change) +- Change deprecated use of maintainer tag in Dockerfile. ([@R1chardTM] - [#10068]) +- add eph ember controls ([@ttroy50] - [#9721]) ([climate.ephember docs]) (new-platform) +- EntityComponent: revert warning ([@pvizeli] - [#10078]) +- Upgrade Sphinx to 1.6.5 ([@fabaff] - [#10090]) +- Support for Entity.available in sensor/rest ([@pezinek] - [#10073]) ([sensor.rest docs]) +- whois domain lookup sensor ([@GenericStudent] - [#10000]) ([sensor.whois docs]) (new-platform) +- Update CODEOWNERS ([@danielhiversen] - [#10103]) +- fixed typo ([@iMarkus] - [#10110]) +- Revert gactions in Docker ([@balloob] - [#10115]) +- Add Deluge Switch Component ([@HydrelioxGitHub] - [#9979]) ([switch.deluge docs]) (new-platform) +- Fix PEP8 and PEP257 issues ([@fabaff] - [#10108]) ([toon docs]) ([climate.toon docs]) ([sensor.toon docs]) ([switch.toon docs]) +- Fixes #10030. Extented Network Exceptions handling. ([@zabuldon] - [#10116]) ([tesla docs]) +- Consolidate frontend ([@balloob] - [#9915]) (breaking change) +- Rfxtrx fix ([@danielhiversen] - [#10128]) ([rfxtrx docs]) +- Xiaomi MiIO Fan: Xiaomi Air Purifier 2 integration ([@syssi] - [#9837]) ([fan.xiaomi_miio docs]) +- WIP: Refactor Axis component removing external dependencies ([@Kane610] - [#9791]) ([axis docs]) ([binary_sensor.axis docs]) +- Allow folder selection for IMAP unread sensor ([@amelchio] - [#10126]) ([sensor.imap docs]) +- Fix Sonarr and Radarr divide by zero ([@tboyce021] - [#10101]) ([sensor.radarr docs]) ([sensor.sonarr docs]) +- Plex refactor Part 1 - Update plexapi to 3.0.3 ([@ryanm101] - [#9988]) ([media_player.plex docs]) +- Add Google Domains component ([@tboyce021] - [#9996]) +- Add Deluge Sensor ([@HydrelioxGitHub] - [#10117]) +- Added increment + decrement to input_number ([@danielperna84] - [#9870]) ([input_number docs]) +- Fix lint google-domains ([@pvizeli] - [#10135]) ([google_domains docs]) +- Fire numeric_state action when first state change matches criteria ([@amelchio] - [#10125]) ([automation.numeric_state docs]) +- SNMP switch ([@kirichkov] - [#9840]) ([switch.snmp docs]) (new-platform) +- Binary sensor for detecting linear trends ([@hotplot] - [#9808]) ([binary_sensor.trend docs]) +- Fix recorder crash for long state string - enforce at core level ([@milanvo] - [#9696]) (breaking change) +- Microsoft tts ([@jeroenterheerdt] - [#9973]) ([tts.microsoft docs]) (new-platform) +- Upgrade pysnmp to 4.4.1 ([@fabaff] - [#10138]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) ([switch.snmp docs]) +- Telldus Live: Device without methods is a binary sensor ([@rasmusbe] - [#10106]) ([tellduslive docs]) ([binary_sensor.tellduslive docs]) (new-platform) +- Add last action to xiaomi aqara button ([@danielhiversen] - [#10131]) ([binary_sensor.xiaomi_aqara docs]) +- Add display currency setting to CoinMarketCap sensor ([@R1chardTM] - [#10093]) ([sensor.coinmarketcap docs]) (breaking change) +- Xiaomi MiIO Switch: Support for different device types ([@syssi] - [#9836]) ([switch.xiaomi_miio docs]) +- Core POC support for polymer i18n ([@armills] - [#6344]) ([history docs]) ([logbook docs]) +- Don't use pypi package in dev mode. Allow non-fingerprinted mdi. ([@andrey-git] - [#10144]) +- added platform discovery code back into device_tracker ([@etsinko] - [#10169]) ([device_tracker docs]) +- Upgrade sendgrid to 5.3.0 ([@fabaff] - [#10166]) ([notify.sendgrid docs]) +- Upgrade python_opendata_transport to 0.0.3 ([@fabaff] - [#10162]) ([sensor.swiss_public_transport docs]) +- Upgrade libnacl to 1.6.1 ([@fabaff] - [#10161]) ([device_tracker.owntracks docs]) +- New DTLSSocket version that fixes Cython dependency for Trådfri ([@flowolf] - [#10123]) ([tradfri docs]) +- Rfxtrx binary sensor rewrite ([@ypollart] - [#10152]) ([rfxtrx docs]) ([binary_sensor.rfxtrx docs]) +- Support for NO-IP ([@fabaff] - [#10155]) ([no_ip docs]) (new-platform) +- Reduce album art flickering in media player UI ([@amelchio] - [#10163]) ([media_player docs]) +- Avoid Sonos errors for tracks with no artist information ([@amelchio] - [#10160]) ([media_player.sonos docs]) +- MPD now uses the filename if song doesn't have metadata ([@C0DK] - [#10085]) +- Updated denon component to play nice with the 3808CI that doesn't support NSFRN command ([@randellhodges] - [#10157]) +- Fix for issue #9240 ([@bastshoes] - [#10173]) ([fan.mqtt docs]) +- Linode ([@ryanm101] - [#9936]) ([linode docs]) ([binary_sensor.linode docs]) (new-platform) +- Cast attribute values to string before publishing to MQTT ([@tinloaf] - [#9872]) ([mqtt_statestream docs]) (breaking change) +- Xiaomi MiIO Light: Philips Eyecare Lamp 2 support ([@syssi] - [#10007]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) +- Nederlandse spoorwegen ([@b10m] - [#10136]) ([sensor.nederlandse_spoorwegen docs]) (new-platform) +- Added capability to pass a filename to the downloader component ([@tchellomello] - [#10059]) ([downloader docs]) +- Limits of the favorite level updated. Values between 0 and 16 will be accepted. ([@syssi] - [#10186]) ([fan.xiaomi_miio docs]) +- added Yesss SMS platform ([@flowolf] - [#10177]) ([notify.yessssms docs]) (new-platform) +- Add Sytadin Traffic component ([@gautric] - [#9524]) ([sensor.sytadin docs]) (new-platform) +- media_title property now returns current source ([@etsinko] - [#10120]) ([media_player.monoprice docs]) +- Added new Clickatell SMS messaging Notify Platform ([@davlloyd] - [#9775]) ([notify.clickatell docs]) (new-platform) +- update boto3 to 1.4.7 and botocore to 1.7.34 ([@TopdRob] - [#10121]) ([notify.aws_lambda docs]) ([notify.aws_sns docs]) ([notify.aws_sqs docs]) ([tts.amazon_polly docs]) +- Add Random binary sensor ([@fabaff] - [#10164]) ([binary_sensor.random docs]) (new-platform) +- Add clickatell ([@fabaff] - [#10199]) +- Update CODEOWNERS ([@ggravlingen] - [#10198]) +- Add unit test for hddtemp sensor. ([@cgtobi] - [#10154]) +- Upgrade pylast to 2.0.0 ([@fabaff] - [#10200]) ([sensor.lastfm docs]) +- Move constant to 'const.py' and use already definied ones ([@fabaff] - [#10204]) ([input_number docs]) ([climate.honeywell docs]) ([device_tracker.asuswrt docs]) ([image_processing.openalpr_local docs]) ([sensor.google_travel_time docs]) ([sensor.uk_transport docs]) ([switch.flux docs]) +- Upgrade youtube_dl to 2017.10.29 ([@fabaff] - [#10202]) ([media_extractor docs]) +- Bump pyvera to 0.2.38. ([@pavoni] - [#10206]) ([vera docs]) +- Move constant to 'const.py' and use already defined ones ([@fabaff] - [#10211]) +- Add new service 'snapshot' for camera ([@pvizeli] - [#10207]) ([camera docs]) +- Upgrade restrictedpython to 4.0b2 ([@fabaff] - [#10179]) +- Google Assistant Script Support ([@epleypa] - [#10148]) ([google_assistant docs]) +- Raincloudy version bump ([@tchellomello] - [#10225]) ([raincloud docs]) +- Add gc100 platforms and component ([@davegravy] - [#10159]) ([gc100 docs]) ([binary_sensor.gc100 docs]) ([switch.gc100 docs]) (new-platform) +- Librouteros capsman fix ([@nicolaevladescu] - [#10217]) ([device_tracker.mikrotik docs]) +- Add entity_picture_template options to Template Cover, Template Light, Template Sensor, and Template Switch ([@bachya] - [#9854]) ([cover.template docs]) +- Xiaomi Aqara: Remove/Add device service added ([@syssi] - [#10150]) ([xiaomi_aqara docs]) +- Introducing multi-zone support for yamaha_musiccast devices ([@jalmeroth] - [#9968]) +- Clarify yamaha play_media parameters ([@sdague] - [#10228]) ([media_player.yamaha docs]) +- Update services.yaml files ([@fabaff] - [#10229]) +- Add priority attribute for hyperion ([@ImEmJay] - [#10102]) ([light.hyperion docs]) +- OwnTracks work. Beacon logic and testcases ([@ehagan] - [#10183]) ([device_tracker.owntracks docs]) +- Sytadin default value must be a list #10233 ([@gautric] - [#10234]) ([sensor.sytadin docs]) +- Use theme color in loading screen. ([@andrey-git] - [#10248]) +- Move constant to 'const.py' ([@fabaff] - [#10249]) ([sensor.hddtemp docs]) ([sensor.synologydsm docs]) +- Add support for odhcpd DHCP server ([@chemicalstorm] - [#9858]) ([device_tracker.ubus docs]) +- Changed single tolerance value to COLD and HOT tolerances. Allows on and off states to have different error bands. ([@biggms] - [#9843]) ([climate.generic_thermostat docs]) (breaking change) +- Add support for 'Send Current Position' feature in Geofency 5.1 ([@gunnarhelgason] - [#10012]) ([device_tracker.geofency docs]) +- input_text - Added service doc ([@cdce8p] - [#10238]) ([input_text docs]) +- Mqtt light options to fix #9330 and #7810 ([@TD22057] - [#9829]) ([light.mqtt docs]) +- WIP: Timer component ([@danielperna84] - [#9889]) ([timer docs]) (new-platform) +- Use translated panel names on frontend ([@armills] - [#10197]) +- Alexa SmartHome API extend ([@pvizeli] - [#10251]) +- integration with Remember The Milk. ([@ChristianKuehnel] - [#9803]) ([remember_the_milk docs]) (new-platform) +- Google Assistant: make it possible to set a custom domain/type ([@perosb] - [#10188]) ([google_assistant docs]) +- Add EntityFilter helper ([@mw-white] - [#10221]) +- Avoid Sonos error during startup ([@amelchio] - [#10146]) ([media_player.sonos docs]) +- Update netdisco to 1.2.3 ([@balloob] - [#10266]) +- Extracted json saving and loading ([@molobrakos] - [#10216]) ([media_player.plex docs]) +- Change introduction card to use persistent notification ([@balloob] - [#10265]) ([introduction docs]) +- Add unit test for wake on lan component. ([@cgtobi] - [#10262]) +- Add link to docs ([@fabaff] - [#10272]) +- Add xy support to Alexa HomeAPI v3 ([@pvizeli] - [#10268]) +- Remove http.development ([@balloob] - [#10267]) ([http docs]) +- Add setup platform tests for the season sensor component. ([@cgtobi] - [#10270]) +- Add Google Assistant support for setting climate temperature and operation mode. ([@emosenkis] - [#10174]) ([google_assistant docs]) +- WIP: Cleanup async stuff on templates ([@pvizeli] - [#10275]) ([switch.template docs]) +- Removed username/password auth and moved to new save/load json ([@w1ll1am23] - [#10277]) ([wink docs]) (breaking change) +- Support new tradfri individual DTLS identification method ([@lwis] - [#10282]) ([tradfri docs]) (breaking change) +- Update plant for dealing with float values ([@dominikandreas] - [#10246]) ([plant docs]) +- Fixed Tradfri whitebulbs handling after #9703 ([@matemaciek] - [#10040]) ([light.tradfri docs]) +- Luftdaten sensor ([@lichtteil] - [#10274]) ([sensor.luftdaten docs]) (new-platform) +- Improve unit tests for season sensor component. ([@cgtobi] - [#10288]) +- Better scene handling ([@joaqtor] - [#10213]) +- Follow-up: Replace emulated_hue: with emulated_hue_hidden ([@vatir] - [#9894]) ([light.hue docs]) +- Maintain recorder purge schedule ([@PeteBa] - [#10279]) +- update mask-icon to a working mask-icon.svg ([@NovapaX] - [#10290]) +- Cleanup Xiaomi Aqara ([@balloob] - [#10302]) ([xiaomi_aqara docs]) +- Fix panel_custom ([@balloob] - [#10303]) ([panel_custom docs]) +- Cloud: Authenticate with id token ([@balloob] - [#10304]) +- Allow an empty MAC address at the Xiaomi Aqara Gateway configuration. ([@syssi] - [#10307]) ([xiaomi_aqara docs]) +- Upgrade credstash to 1.14.0 ([@fabaff] - [#10310]) +- TellStick / Remove async flavor / add hassio ([@pvizeli] - [#10315]) ([tellstick docs]) +- Strip white space from configurator input ([@w1ll1am23] - [#10317]) ([wink docs]) +- Fix recorder purge ([@pvizeli] - [#10318]) +- Fix formatting invalid config text ([@balloob] - [#10319]) +- Tc update ([@wardcraigj] - [#10322]) ([alarm_control_panel.totalconnect docs]) +- Move timer into correct folder ([@pvizeli] - [#10324]) ([timer docs]) + +[#10000]: https://github.com/home-assistant/home-assistant/pull/10000 +[#10001]: https://github.com/home-assistant/home-assistant/pull/10001 +[#10006]: https://github.com/home-assistant/home-assistant/pull/10006 +[#10007]: https://github.com/home-assistant/home-assistant/pull/10007 +[#10008]: https://github.com/home-assistant/home-assistant/pull/10008 +[#10009]: https://github.com/home-assistant/home-assistant/pull/10009 +[#10010]: https://github.com/home-assistant/home-assistant/pull/10010 +[#10012]: https://github.com/home-assistant/home-assistant/pull/10012 +[#10013]: https://github.com/home-assistant/home-assistant/pull/10013 +[#10014]: https://github.com/home-assistant/home-assistant/pull/10014 +[#10017]: https://github.com/home-assistant/home-assistant/pull/10017 +[#10019]: https://github.com/home-assistant/home-assistant/pull/10019 +[#10021]: https://github.com/home-assistant/home-assistant/pull/10021 +[#10033]: https://github.com/home-assistant/home-assistant/pull/10033 +[#10037]: https://github.com/home-assistant/home-assistant/pull/10037 +[#10040]: https://github.com/home-assistant/home-assistant/pull/10040 +[#10043]: https://github.com/home-assistant/home-assistant/pull/10043 +[#10049]: https://github.com/home-assistant/home-assistant/pull/10049 +[#10059]: https://github.com/home-assistant/home-assistant/pull/10059 +[#10062]: https://github.com/home-assistant/home-assistant/pull/10062 +[#10063]: https://github.com/home-assistant/home-assistant/pull/10063 +[#10064]: https://github.com/home-assistant/home-assistant/pull/10064 +[#10066]: https://github.com/home-assistant/home-assistant/pull/10066 +[#10068]: https://github.com/home-assistant/home-assistant/pull/10068 +[#10073]: https://github.com/home-assistant/home-assistant/pull/10073 +[#10078]: https://github.com/home-assistant/home-assistant/pull/10078 +[#10085]: https://github.com/home-assistant/home-assistant/pull/10085 +[#10090]: https://github.com/home-assistant/home-assistant/pull/10090 +[#10093]: https://github.com/home-assistant/home-assistant/pull/10093 +[#10101]: https://github.com/home-assistant/home-assistant/pull/10101 +[#10102]: https://github.com/home-assistant/home-assistant/pull/10102 +[#10103]: https://github.com/home-assistant/home-assistant/pull/10103 +[#10106]: https://github.com/home-assistant/home-assistant/pull/10106 +[#10108]: https://github.com/home-assistant/home-assistant/pull/10108 +[#10110]: https://github.com/home-assistant/home-assistant/pull/10110 +[#10115]: https://github.com/home-assistant/home-assistant/pull/10115 +[#10116]: https://github.com/home-assistant/home-assistant/pull/10116 +[#10117]: https://github.com/home-assistant/home-assistant/pull/10117 +[#10120]: https://github.com/home-assistant/home-assistant/pull/10120 +[#10121]: https://github.com/home-assistant/home-assistant/pull/10121 +[#10123]: https://github.com/home-assistant/home-assistant/pull/10123 +[#10125]: https://github.com/home-assistant/home-assistant/pull/10125 +[#10126]: https://github.com/home-assistant/home-assistant/pull/10126 +[#10128]: https://github.com/home-assistant/home-assistant/pull/10128 +[#10131]: https://github.com/home-assistant/home-assistant/pull/10131 +[#10135]: https://github.com/home-assistant/home-assistant/pull/10135 +[#10136]: https://github.com/home-assistant/home-assistant/pull/10136 +[#10138]: https://github.com/home-assistant/home-assistant/pull/10138 +[#10144]: https://github.com/home-assistant/home-assistant/pull/10144 +[#10146]: https://github.com/home-assistant/home-assistant/pull/10146 +[#10148]: https://github.com/home-assistant/home-assistant/pull/10148 +[#10150]: https://github.com/home-assistant/home-assistant/pull/10150 +[#10152]: https://github.com/home-assistant/home-assistant/pull/10152 +[#10154]: https://github.com/home-assistant/home-assistant/pull/10154 +[#10155]: https://github.com/home-assistant/home-assistant/pull/10155 +[#10157]: https://github.com/home-assistant/home-assistant/pull/10157 +[#10159]: https://github.com/home-assistant/home-assistant/pull/10159 +[#10160]: https://github.com/home-assistant/home-assistant/pull/10160 +[#10161]: https://github.com/home-assistant/home-assistant/pull/10161 +[#10162]: https://github.com/home-assistant/home-assistant/pull/10162 +[#10163]: https://github.com/home-assistant/home-assistant/pull/10163 +[#10164]: https://github.com/home-assistant/home-assistant/pull/10164 +[#10166]: https://github.com/home-assistant/home-assistant/pull/10166 +[#10169]: https://github.com/home-assistant/home-assistant/pull/10169 +[#10173]: https://github.com/home-assistant/home-assistant/pull/10173 +[#10174]: https://github.com/home-assistant/home-assistant/pull/10174 +[#10177]: https://github.com/home-assistant/home-assistant/pull/10177 +[#10179]: https://github.com/home-assistant/home-assistant/pull/10179 +[#10183]: https://github.com/home-assistant/home-assistant/pull/10183 +[#10186]: https://github.com/home-assistant/home-assistant/pull/10186 +[#10188]: https://github.com/home-assistant/home-assistant/pull/10188 +[#10197]: https://github.com/home-assistant/home-assistant/pull/10197 +[#10198]: https://github.com/home-assistant/home-assistant/pull/10198 +[#10199]: https://github.com/home-assistant/home-assistant/pull/10199 +[#10200]: https://github.com/home-assistant/home-assistant/pull/10200 +[#10202]: https://github.com/home-assistant/home-assistant/pull/10202 +[#10204]: https://github.com/home-assistant/home-assistant/pull/10204 +[#10206]: https://github.com/home-assistant/home-assistant/pull/10206 +[#10207]: https://github.com/home-assistant/home-assistant/pull/10207 +[#10211]: https://github.com/home-assistant/home-assistant/pull/10211 +[#10213]: https://github.com/home-assistant/home-assistant/pull/10213 +[#10216]: https://github.com/home-assistant/home-assistant/pull/10216 +[#10217]: https://github.com/home-assistant/home-assistant/pull/10217 +[#10221]: https://github.com/home-assistant/home-assistant/pull/10221 +[#10225]: https://github.com/home-assistant/home-assistant/pull/10225 +[#10228]: https://github.com/home-assistant/home-assistant/pull/10228 +[#10229]: https://github.com/home-assistant/home-assistant/pull/10229 +[#10234]: https://github.com/home-assistant/home-assistant/pull/10234 +[#10238]: https://github.com/home-assistant/home-assistant/pull/10238 +[#10246]: https://github.com/home-assistant/home-assistant/pull/10246 +[#10248]: https://github.com/home-assistant/home-assistant/pull/10248 +[#10249]: https://github.com/home-assistant/home-assistant/pull/10249 +[#10251]: https://github.com/home-assistant/home-assistant/pull/10251 +[#10262]: https://github.com/home-assistant/home-assistant/pull/10262 +[#10265]: https://github.com/home-assistant/home-assistant/pull/10265 +[#10266]: https://github.com/home-assistant/home-assistant/pull/10266 +[#10267]: https://github.com/home-assistant/home-assistant/pull/10267 +[#10268]: https://github.com/home-assistant/home-assistant/pull/10268 +[#10270]: https://github.com/home-assistant/home-assistant/pull/10270 +[#10272]: https://github.com/home-assistant/home-assistant/pull/10272 +[#10274]: https://github.com/home-assistant/home-assistant/pull/10274 +[#10275]: https://github.com/home-assistant/home-assistant/pull/10275 +[#10277]: https://github.com/home-assistant/home-assistant/pull/10277 +[#10279]: https://github.com/home-assistant/home-assistant/pull/10279 +[#10282]: https://github.com/home-assistant/home-assistant/pull/10282 +[#10288]: https://github.com/home-assistant/home-assistant/pull/10288 +[#10290]: https://github.com/home-assistant/home-assistant/pull/10290 +[#10302]: https://github.com/home-assistant/home-assistant/pull/10302 +[#10303]: https://github.com/home-assistant/home-assistant/pull/10303 +[#10304]: https://github.com/home-assistant/home-assistant/pull/10304 +[#10307]: https://github.com/home-assistant/home-assistant/pull/10307 +[#10310]: https://github.com/home-assistant/home-assistant/pull/10310 +[#10315]: https://github.com/home-assistant/home-assistant/pull/10315 +[#10317]: https://github.com/home-assistant/home-assistant/pull/10317 +[#10318]: https://github.com/home-assistant/home-assistant/pull/10318 +[#10319]: https://github.com/home-assistant/home-assistant/pull/10319 +[#10322]: https://github.com/home-assistant/home-assistant/pull/10322 +[#10324]: https://github.com/home-assistant/home-assistant/pull/10324 +[#6344]: https://github.com/home-assistant/home-assistant/pull/6344 +[#9524]: https://github.com/home-assistant/home-assistant/pull/9524 +[#9696]: https://github.com/home-assistant/home-assistant/pull/9696 +[#9700]: https://github.com/home-assistant/home-assistant/pull/9700 +[#9703]: https://github.com/home-assistant/home-assistant/pull/9703 +[#9721]: https://github.com/home-assistant/home-assistant/pull/9721 +[#9739]: https://github.com/home-assistant/home-assistant/pull/9739 +[#9775]: https://github.com/home-assistant/home-assistant/pull/9775 +[#9791]: https://github.com/home-assistant/home-assistant/pull/9791 +[#9803]: https://github.com/home-assistant/home-assistant/pull/9803 +[#9808]: https://github.com/home-assistant/home-assistant/pull/9808 +[#9829]: https://github.com/home-assistant/home-assistant/pull/9829 +[#9836]: https://github.com/home-assistant/home-assistant/pull/9836 +[#9837]: https://github.com/home-assistant/home-assistant/pull/9837 +[#9840]: https://github.com/home-assistant/home-assistant/pull/9840 +[#9843]: https://github.com/home-assistant/home-assistant/pull/9843 +[#9854]: https://github.com/home-assistant/home-assistant/pull/9854 +[#9858]: https://github.com/home-assistant/home-assistant/pull/9858 +[#9870]: https://github.com/home-assistant/home-assistant/pull/9870 +[#9872]: https://github.com/home-assistant/home-assistant/pull/9872 +[#9876]: https://github.com/home-assistant/home-assistant/pull/9876 +[#9883]: https://github.com/home-assistant/home-assistant/pull/9883 +[#9889]: https://github.com/home-assistant/home-assistant/pull/9889 +[#9894]: https://github.com/home-assistant/home-assistant/pull/9894 +[#9915]: https://github.com/home-assistant/home-assistant/pull/9915 +[#9936]: https://github.com/home-assistant/home-assistant/pull/9936 +[#9957]: https://github.com/home-assistant/home-assistant/pull/9957 +[#9962]: https://github.com/home-assistant/home-assistant/pull/9962 +[#9967]: https://github.com/home-assistant/home-assistant/pull/9967 +[#9968]: https://github.com/home-assistant/home-assistant/pull/9968 +[#9973]: https://github.com/home-assistant/home-assistant/pull/9973 +[#9975]: https://github.com/home-assistant/home-assistant/pull/9975 +[#9977]: https://github.com/home-assistant/home-assistant/pull/9977 +[#9979]: https://github.com/home-assistant/home-assistant/pull/9979 +[#9983]: https://github.com/home-assistant/home-assistant/pull/9983 +[#9984]: https://github.com/home-assistant/home-assistant/pull/9984 +[#9987]: https://github.com/home-assistant/home-assistant/pull/9987 +[#9988]: https://github.com/home-assistant/home-assistant/pull/9988 +[#9990]: https://github.com/home-assistant/home-assistant/pull/9990 +[#9996]: https://github.com/home-assistant/home-assistant/pull/9996 +[@C0DK]: https://github.com/C0DK +[@ChristianKuehnel]: https://github.com/ChristianKuehnel +[@DarkFox]: https://github.com/DarkFox +[@GenericStudent]: https://github.com/GenericStudent +[@HydrelioxGitHub]: https://github.com/HydrelioxGitHub +[@ImEmJay]: https://github.com/ImEmJay +[@Kane610]: https://github.com/Kane610 +[@KlaasH]: https://github.com/KlaasH +[@NovapaX]: https://github.com/NovapaX +[@PeteBa]: https://github.com/PeteBa +[@R1chardTM]: https://github.com/R1chardTM +[@SilvrrGIT]: https://github.com/SilvrrGIT +[@TD22057]: https://github.com/TD22057 +[@TopdRob]: https://github.com/TopdRob +[@abmantis]: https://github.com/abmantis +[@alanfischer]: https://github.com/alanfischer +[@altersis]: https://github.com/altersis +[@amelchio]: https://github.com/amelchio +[@andrey-git]: https://github.com/andrey-git +[@armills]: https://github.com/armills +[@b10m]: https://github.com/b10m +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bastshoes]: https://github.com/bastshoes +[@biggms]: https://github.com/biggms +[@cdce8p]: https://github.com/cdce8p +[@cgtobi]: https://github.com/cgtobi +[@chemicalstorm]: https://github.com/chemicalstorm +[@chriskacerguis]: https://github.com/chriskacerguis +[@danielhiversen]: https://github.com/danielhiversen +[@danielperna84]: https://github.com/danielperna84 +[@davegravy]: https://github.com/davegravy +[@davlloyd]: https://github.com/davlloyd +[@dominikandreas]: https://github.com/dominikandreas +[@ehagan]: https://github.com/ehagan +[@emosenkis]: https://github.com/emosenkis +[@epleypa]: https://github.com/epleypa +[@etsinko]: https://github.com/etsinko +[@fabaff]: https://github.com/fabaff +[@flowolf]: https://github.com/flowolf +[@fronzbot]: https://github.com/fronzbot +[@gautric]: https://github.com/gautric +[@ggravlingen]: https://github.com/ggravlingen +[@gunnarhelgason]: https://github.com/gunnarhelgason +[@hotplot]: https://github.com/hotplot +[@iMarkus]: https://github.com/iMarkus +[@jalmeroth]: https://github.com/jalmeroth +[@jeroenterheerdt]: https://github.com/jeroenterheerdt +[@joaqtor]: https://github.com/joaqtor +[@kirichkov]: https://github.com/kirichkov +[@lichtteil]: https://github.com/lichtteil +[@lwis]: https://github.com/lwis +[@matemaciek]: https://github.com/matemaciek +[@milanvo]: https://github.com/milanvo +[@molobrakos]: https://github.com/molobrakos +[@mw-white]: https://github.com/mw-white +[@nicolaevladescu]: https://github.com/nicolaevladescu +[@pavoni]: https://github.com/pavoni +[@perosb]: https://github.com/perosb +[@pezinek]: https://github.com/pezinek +[@pschmitt]: https://github.com/pschmitt +[@pvizeli]: https://github.com/pvizeli +[@quamilek]: https://github.com/quamilek +[@randellhodges]: https://github.com/randellhodges +[@rasmusbe]: https://github.com/rasmusbe +[@ryanm101]: https://github.com/ryanm101 +[@sander76]: https://github.com/sander76 +[@sdague]: https://github.com/sdague +[@syssi]: https://github.com/syssi +[@tboyce021]: https://github.com/tboyce021 +[@tchellomello]: https://github.com/tchellomello +[@tinloaf]: https://github.com/tinloaf +[@ttroy50]: https://github.com/ttroy50 +[@vatir]: https://github.com/vatir +[@w1ll1am23]: https://github.com/w1ll1am23 +[@wardcraigj]: https://github.com/wardcraigj +[@ypollart]: https://github.com/ypollart +[@zabuldon]: https://github.com/zabuldon +[alarm_control_panel.totalconnect docs]: https://home-assistant.io/components/alarm_control_panel.totalconnect/ +[alexa.smart_home docs]: https://home-assistant.io/components/alexa.smart_home/ +[api docs]: https://home-assistant.io/components/api/ +[automation.event docs]: https://home-assistant.io/docs/automation/trigger/#event-trigger +[automation.numeric_state docs]: https://home-assistant.io/docs/automation/trigger/#numeric-state-trigger +[axis docs]: https://home-assistant.io/components/axis/ +[binary_sensor.axis docs]: https://home-assistant.io/components/binary_sensor.axis/ +[binary_sensor.gc100 docs]: https://home-assistant.io/components/binary_sensor.gc100/ +[binary_sensor.linode docs]: https://home-assistant.io/components/binary_sensor.linode/ +[binary_sensor.random docs]: https://home-assistant.io/components/binary_sensor.random/ +[binary_sensor.rfxtrx docs]: https://home-assistant.io/components/binary_sensor.rfxtrx/ +[binary_sensor.ring docs]: https://home-assistant.io/components/binary_sensor.ring/ +[binary_sensor.tellduslive docs]: https://home-assistant.io/components/binary_sensor.tellduslive/ +[binary_sensor.trend docs]: https://home-assistant.io/components/binary_sensor.trend/ +[binary_sensor.xiaomi_aqara docs]: https://home-assistant.io/components/binary_sensor.xiaomi_aqara/ +[camera docs]: https://home-assistant.io/components/camera/ +[camera.ring docs]: https://home-assistant.io/components/camera.ring/ +[climate.ephember docs]: https://home-assistant.io/components/climate.ephember/ +[climate.generic_thermostat docs]: https://home-assistant.io/components/climate.generic_thermostat/ +[climate.honeywell docs]: https://home-assistant.io/components/climate.honeywell/ +[climate.toon docs]: https://home-assistant.io/components/climate.toon/ +[cloud docs]: https://home-assistant.io/components/cloud/ +[cloud.iot docs]: https://home-assistant.io/components/cloud.iot/ +[cover.template docs]: https://home-assistant.io/components/cover.template/ +[device_tracker docs]: https://home-assistant.io/components/device_tracker/ +[device_tracker.asuswrt docs]: https://home-assistant.io/components/device_tracker.asuswrt/ +[device_tracker.automatic docs]: https://home-assistant.io/components/device_tracker.automatic/ +[device_tracker.geofency docs]: https://home-assistant.io/components/device_tracker.geofency/ +[device_tracker.mikrotik docs]: https://home-assistant.io/components/device_tracker.mikrotik/ +[device_tracker.owntracks docs]: https://home-assistant.io/components/device_tracker.owntracks/ +[device_tracker.snmp docs]: https://home-assistant.io/components/device_tracker.snmp/ +[device_tracker.ubus docs]: https://home-assistant.io/components/device_tracker.ubus/ +[dialogflow docs]: https://home-assistant.io/components/dialogflow/ +[downloader docs]: https://home-assistant.io/components/downloader/ +[duckdns docs]: https://home-assistant.io/components/duckdns/ +[fan.mqtt docs]: https://home-assistant.io/components/fan.mqtt/ +[fan.xiaomi_miio docs]: https://home-assistant.io/components/fan.xiaomi_miio/ +[gc100 docs]: https://home-assistant.io/components/gc100/ +[google_assistant docs]: https://home-assistant.io/components/google_assistant/ +[google_domains docs]: https://home-assistant.io/components/google_domains/ +[hassio docs]: https://home-assistant.io/components/hassio/ +[history docs]: https://home-assistant.io/components/history/ +[http docs]: https://home-assistant.io/components/http/ +[image_processing.openalpr_local docs]: https://home-assistant.io/components/image_processing.openalpr_local/ +[input_number docs]: https://home-assistant.io/components/input_number/ +[input_text docs]: https://home-assistant.io/components/input_text/ +[introduction docs]: https://home-assistant.io/components/introduction/ +[light.hue docs]: https://home-assistant.io/components/light.hue/ +[light.hyperion docs]: https://home-assistant.io/components/light.hyperion/ +[light.mqtt docs]: https://home-assistant.io/components/light.mqtt/ +[light.tradfri docs]: https://home-assistant.io/components/light.tradfri/ +[light.xiaomi_miio docs]: https://home-assistant.io/components/light.xiaomi_miio/ +[light.yeelight docs]: https://home-assistant.io/components/light.yeelight/ +[linode docs]: https://home-assistant.io/components/linode/ +[logbook docs]: https://home-assistant.io/components/logbook/ +[mailbox docs]: https://home-assistant.io/components/mailbox/ +[media_extractor docs]: https://home-assistant.io/components/media_extractor/ +[media_player docs]: https://home-assistant.io/components/media_player/ +[media_player.liveboxplaytv docs]: https://home-assistant.io/components/media_player.liveboxplaytv/ +[media_player.monoprice docs]: https://home-assistant.io/components/media_player.monoprice/ +[media_player.plex docs]: https://home-assistant.io/components/media_player.plex/ +[media_player.russound_rnet docs]: https://home-assistant.io/components/media_player.russound_rnet/ +[media_player.sonos docs]: https://home-assistant.io/components/media_player.sonos/ +[media_player.yamaha docs]: https://home-assistant.io/components/media_player.yamaha/ +[mqtt_statestream docs]: https://home-assistant.io/components/mqtt_statestream/ +[namecheapdns docs]: https://home-assistant.io/components/namecheapdns/ +[no_ip docs]: https://home-assistant.io/components/no_ip/ +[notify.aws_lambda docs]: https://home-assistant.io/components/notify.aws_lambda/ +[notify.aws_sns docs]: https://home-assistant.io/components/notify.aws_sns/ +[notify.aws_sqs docs]: https://home-assistant.io/components/notify.aws_sqs/ +[notify.clickatell docs]: https://home-assistant.io/components/notify.clickatell/ +[notify.sendgrid docs]: https://home-assistant.io/components/notify.sendgrid/ +[notify.yessssms docs]: https://home-assistant.io/components/notify.yessssms/ +[panel_custom docs]: https://home-assistant.io/components/panel_custom/ +[persistent_notification docs]: https://home-assistant.io/components/persistent_notification/ +[plant docs]: https://home-assistant.io/components/plant/ +[raincloud docs]: https://home-assistant.io/components/raincloud/ +[remember_the_milk docs]: https://home-assistant.io/components/remember_the_milk/ +[rfxtrx docs]: https://home-assistant.io/components/rfxtrx/ +[ring docs]: https://home-assistant.io/components/ring/ +[sensor.coinmarketcap docs]: https://home-assistant.io/components/sensor.coinmarketcap/ +[sensor.emoncms docs]: https://home-assistant.io/components/sensor.emoncms/ +[sensor.fail2ban docs]: https://home-assistant.io/components/sensor.fail2ban/ +[sensor.gitter docs]: https://home-assistant.io/components/sensor.gitter/ +[sensor.glances docs]: https://home-assistant.io/components/sensor.glances/ +[sensor.google_travel_time docs]: https://home-assistant.io/components/sensor.google_travel_time/ +[sensor.hddtemp docs]: https://home-assistant.io/components/sensor.hddtemp/ +[sensor.imap docs]: https://home-assistant.io/components/sensor.imap/ +[sensor.irish_rail_transport docs]: https://home-assistant.io/components/sensor.irish_rail_transport/ +[sensor.lastfm docs]: https://home-assistant.io/components/sensor.lastfm/ +[sensor.luftdaten docs]: https://home-assistant.io/components/sensor.luftdaten/ +[sensor.nederlandse_spoorwegen docs]: https://home-assistant.io/components/sensor.nederlandse_spoorwegen/ +[sensor.radarr docs]: https://home-assistant.io/components/sensor.radarr/ +[sensor.rest docs]: https://home-assistant.io/components/sensor.rest/ +[sensor.ring docs]: https://home-assistant.io/components/sensor.ring/ +[sensor.scrape docs]: https://home-assistant.io/components/sensor.scrape/ +[sensor.snmp docs]: https://home-assistant.io/components/sensor.snmp/ +[sensor.sonarr docs]: https://home-assistant.io/components/sensor.sonarr/ +[sensor.speedtest docs]: https://home-assistant.io/components/sensor.speedtest/ +[sensor.swiss_public_transport docs]: https://home-assistant.io/components/sensor.swiss_public_transport/ +[sensor.synologydsm docs]: https://home-assistant.io/components/sensor.synologydsm/ +[sensor.sytadin docs]: https://home-assistant.io/components/sensor.sytadin/ +[sensor.toon docs]: https://home-assistant.io/components/sensor.toon/ +[sensor.uk_transport docs]: https://home-assistant.io/components/sensor.uk_transport/ +[sensor.whois docs]: https://home-assistant.io/components/sensor.whois/ +[shopping_list docs]: https://home-assistant.io/components/shopping_list/ +[switch.deluge docs]: https://home-assistant.io/components/switch.deluge/ +[switch.flux docs]: https://home-assistant.io/components/switch.flux/ +[switch.gc100 docs]: https://home-assistant.io/components/switch.gc100/ +[switch.snmp docs]: https://home-assistant.io/components/switch.snmp/ +[switch.template docs]: https://home-assistant.io/components/switch.template/ +[switch.toon docs]: https://home-assistant.io/components/switch.toon/ +[switch.xiaomi_miio docs]: https://home-assistant.io/components/switch.xiaomi_miio/ +[tellduslive docs]: https://home-assistant.io/components/tellduslive/ +[tellstick docs]: https://home-assistant.io/components/tellstick/ +[tesla docs]: https://home-assistant.io/components/tesla/ +[timer docs]: https://home-assistant.io/components/timer/ +[toon docs]: https://home-assistant.io/components/toon/ +[tradfri docs]: https://home-assistant.io/components/tradfri/ +[tts.amazon_polly docs]: https://home-assistant.io/components/tts.amazon_polly/ +[tts.microsoft docs]: https://home-assistant.io/components/tts.microsoft/ +[vacuum.xiaomi_miio docs]: https://home-assistant.io/components/vacuum.xiaomi_miio/ +[vera docs]: https://home-assistant.io/components/vera/ +[wink docs]: https://home-assistant.io/components/wink/ +[xiaomi_aqara docs]: https://home-assistant.io/components/xiaomi_aqara/ +[ikea email]: https://twitter.com/home_assistant/status/925373865802502144 +[wink-auth]: https://home-assistant.io/components/wink/#authenticate-using-developerwinkcomhttpsdeveloperwinkcom \ No newline at end of file diff --git a/source/_posts/2019-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown b/source/_posts/2019-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown new file mode 100644 index 00000000000..8d1c4732c8a --- /dev/null +++ b/source/_posts/2019-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown @@ -0,0 +1,36 @@ +--- +layout: post +title: "Hassbian 1.3 - A bit of a stretch" +description: "Raspbian Stretch release of the HASSbian Raspberry Pi Image for Home Assistant" +date: 2017-09-16 16:00:00 +0100 +date_formatted: "September 16, 2017" +author: Fredrik Lindqvist +comments: true +categories: Technology +--- + +This new release finally brings us the release of Hassbian based on the release of Raspbian Stretch. The most significant change with this is that we now run Home Assistant on Python 3.5. +Other than that the changes are mostly to our tool `hassbian-config`. + +### {% linkable_title Hassbian-config %} + +To allow you to customize your installation further, we have made a few additions to our tool called `hassbian-config`. Majority of these changes where contributed by [@Ludeeus][ludeeus]. + +#### {% linkable_title Upgrade scripts %} + +[@Ludeeus][ludeeus] contributed the possibility to run upgrade scripts to the `hassbian-config` tool. + + - Upgrade Hassbian: Upgrades packages of the base operating system. Contributed by [@Landrash][landrash]. + - Upgrade Hassbian-script: Downloads and upgrades the latest release of Hassbian-scripts. Contributed by [@Ludeeus][ludeeus]. + - Upgrade Home-assistant: Upgrades the Home Assistant installation to the latest release. Contributed by [@Ludeeus][ludeeus]. + +To follow discussions about the development of the HASSbian image or to contribute join our [Discord chat server][discord-hassbian]. + +To get started with the new image, check out the installation instructions on the [installing Hassbian page][install]. + +[landrash]: http://github.com/landrash +[ludeeus]: http://github.com/ludeeus +[hassbian-repo]: https://github.com/home-assistant/hassbian-scripts/ +[hassbian-config-release]: https://github.com/home-assistant/hassbian-scripts/releases/latest +[install]: https://home-assistant.io/docs/installation/hassbian/installation/ +[discord-hassbian]: https://discord.gg/RkajcgS diff --git a/source/_posts/2019-09-25-new-hassio-build-system.markdown b/source/_posts/2019-09-25-new-hassio-build-system.markdown new file mode 100644 index 00000000000..b36c19a4039 --- /dev/null +++ b/source/_posts/2019-09-25-new-hassio-build-system.markdown @@ -0,0 +1,57 @@ +--- +layout: post +title: "Improved Hass.io build system" +description: "We're introducing a new and improved Hass.io build system for Hass.io and add-ons." +date: 2017-09-26 04:00:00 +0100 +date_formatted: "September 26, 2017" +author: Pascal Vizeli +comments: true +categories: Technology +--- + +

    +This is going to be a technical post for Hass.io add-on developers and people that run locally build add-ons (not the default). +

    + +Two months ago we [introduced Hass.io][intro], allowing our users to easily install, update and manage their Home Assistant installation. In this short time we've seen great adoption from the community. Around 20% of our users are choosing Hass.io as their method of running Home Assistant today. We've also seen many add-ons being made available on [the forums][addon-repos]. There are currently 14 reposities full of add-ons being shared! + +Hass.io is built on top of Docker, a container runtime. One thing that Docker did not support was dynamic build environements. That was annoying for Hass.io because by supporting multiple CPU architectures, that was exactly what we needed! Luckily this feature has been added in Docker 17.05. By moving to Docker 17.05 as the minimum supported version we will be able to replace our templated Dockerfile approach with standard Dockerfiles that work out of the box. Thanks to [Frenck][frenck] for notifying us of this new build feature. + +This change only impacts people that build add-ons or use add-ons that are built locally. You can check if your add-on is building locally on the detail page of add-ons. + +

    +If you are an add-on developer, read [the documentation][publishing-addons] on how to publish your add-ons to Docker Hub. This will greatly improve the user experience. +

    + +### {% linkable_title Template changes %} + +As an add-on developer, you will only have to change one line in your template to make it compatible with the new system. If you wish, you can also change the default build options for your image using the new [`build.json`][build-file] file. + +Old: + +``` +FROM %%BASE_IMAGE%% +``` + +New: + +``` +ARG BUILD_FROM +FROM $BUILD_FROM +``` + +### {% linkable_title When %} + +The new system will become active with Hass.io 0.64 and Host OS 1.1. Host OS 1.1 is available today. Navigate to Advanced Settings in the Hass.io panel to start the OTA update. + +We have also updated our build scripts and replaced it with a [builder docker engine][builder]. This builder makes deploying Hass.io components very easy. All basic functionality is supported. If you want more functionality, check out [the builder by the Community Hass.io Add-ons project][community-builder]. + +[hassio-hardware-image-release]: https://github.com/home-assistant/hassio-build/releases/tag/1.1 +[install]: /hassio/installation/ +[builder]: https://github.com/home-assistant/hassio-build/tree/master/builder +[frenck]: https://github.com/frenck +[build-file]: /developers/hassio/addon_config/#add-on-extended-build +[addon-repos]: https://community.home-assistant.io/tags/hassio-repository +[community-builder]: https://github.com/hassio-addons/build-env +[intro]: /blog/2017/07/25/introducing-hassio/ +[publishing-addons]: /developers/hassio/addon_publishing/#custom-add-ons diff --git a/source/addons/index.html b/source/addons/index.html index 1950e807b23..5abc6504b76 100644 --- a/source/addons/index.html +++ b/source/addons/index.html @@ -7,15 +7,35 @@ sidebar: true comments: false sharing: true footer: true -regenerate: true +regenerate: false --- -

    Add-ons for Hass.io allows the user to extend the functionality around Home Assistant. This can be running an application that Home Assistant can integrate with (like an MQTT broker) or to share the configuration via Samba for easy editing from other computers. Add-ons can be configured via the Hass.io panel in Home Assistant.

    +

    Add-ons for Hass.io allow the user to extend the functionality around Home Assistant. This can be running an application that Home Assistant can integrate with (like an MQTT broker) or to share the configuration via Samba for easy editing from other computers. Add-ons can be configured via the Hass.io panel in Home Assistant.

    + +

    + Check the Hass.io forums for add-on repositories managed by the community. +

    {% assign addons = site.addons | sort: 'title' %} +

    {% linkable_title Featured add-ons %}

    +
      -{% for addon in addons %} -
    • {{ addon.title }}
    • -{% endfor %} +{% for addon in addons %}{% if addon.featured %} +
    • + {{ addon.title }}
      + {{ addon.description }} +
    • +{% endif %}{% endfor %} +
    + +

    {% linkable_title Other add-ons %}

    + +
      +{% for addon in addons %}{% if addon.featured != true %} +
    • + {{ addon.title }}
      + {{ addon.description }} +
    • +{% endif %}{% endfor %}
    diff --git a/source/developers/code_of_conduct.markdown b/source/code_of_conduct/index.markdown similarity index 91% rename from source/developers/code_of_conduct.markdown rename to source/code_of_conduct/index.markdown index 786694b7da9..f67555210bd 100644 --- a/source/developers/code_of_conduct.markdown +++ b/source/code_of_conduct/index.markdown @@ -1,15 +1,16 @@ --- layout: page -title: "Contributor Covenant Code of Conduct" +title: "Code of Conduct" description: "The Code of Conduct for Home Assistant projects." date: 2017-01-21 15:05:00 -0800 -sidebar: true +sidebar: false comments: false sharing: true footer: true +redirect_from: /developers/code_of_conduct/ --- -## Our Pledge +## {% linkable_title Our Pledge %} In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and @@ -18,7 +19,7 @@ size, disability, ethnicity, gender identity and expression, level of experience nationality, personal appearance, race, religion, or sexual identity and orientation. -## Our Standards +## {% linkable_title Our Standards %} Examples of behavior that contributes to creating a positive environment include: @@ -40,7 +41,7 @@ advances * Other conduct which could reasonably be considered inappropriate in a professional setting -## Our Responsibilities +## {% linkable_title Our Responsibilities %} Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in @@ -52,7 +53,7 @@ that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. -## Scope +## {% linkable_title Scope %} This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of @@ -61,7 +62,7 @@ address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. -## Enforcement +## {% linkable_title Enforcement %} Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [safety@home-assistant.io][email]. All @@ -74,12 +75,12 @@ Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. -## Attribution +## {% linkable_title Attribution %} This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available [here][version]. -## Adoption +## {% linkable_title Adoption %} This Code of Conduct was first adopted January 21st, 2017 and announced in [this][coc-blog] blog post. diff --git a/source/components/index.html b/source/components/index.html index b0b6dfed3e8..836e3152dcb 100644 --- a/source/components/index.html +++ b/source/components/index.html @@ -10,7 +10,7 @@ footer: true is_homepage: true hide_github_edit: true body_id: components-page -regenerate: true +regenerate: false --- {% assign count = site.components | size %} @@ -257,3 +257,13 @@ allComponents.pop(); // remove placeholder element at the end applyFilter(); })(); + + diff --git a/source/cookbook/index.markdown b/source/cookbook/index.markdown index c2d9bb37b3f..3bdc79511bf 100644 --- a/source/cookbook/index.markdown +++ b/source/cookbook/index.markdown @@ -13,6 +13,8 @@ hide_github_edit: true This is a community curated list of different ways to use Home Assistant. Most of these examples are using the [automation] component and other built-in [automation related][sec-automation] and [organization] components available. +For [`python_script:` examples](/components/python_script/) visit the [Scripts section](https://community.home-assistant.io/c/projects/scripts) in our forum. + [automation]: /getting-started/automation/ [sec-automation]: /components/#automation [organization]: /components/#organization diff --git a/source/demo/frontend.html b/source/demo/frontend.html index ca813ce680a..0cb5b148868 100644 --- a/source/demo/frontend.html +++ b/source/demo/frontend.html @@ -1,5 +1,5 @@ \ No newline at end of file +t},updateStyles:function(e){e&&this.mixin(this.customStyle,e),i?t.updateNativeStyleProperties(this,this.customStyle):(this.isAttached?this._needsStyleProperties()?this._updateStyleProperties():this._styleProperties=null:this.__stylePropertiesInvalid=!0,this._styleCache&&this._styleCache.clear(),this._updateRootStyles())},_updateRootStyles:function(e){e=e||this.root;for(var t,n=Polymer.dom(e)._query(function(e){return e.shadyRoot||e.shadowRoot}),r=0,s=n.length;r0&&l.push(t);return[{removed:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collections.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e,t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array},as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Function,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"},observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount:{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initializeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Number,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatizer],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],this._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._renderChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e=0;t--){var n=this._instances[t];n.isPlaceholder&&t=this._limit&&(n=this._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProperty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._instances.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:function(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];var n=this.items;if(n)for(var r=0;r=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){return e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={},i=0;i=0;i--){var h=a[i];void 0!==h&&this._detachAndRemoveInstance(h)}var c=this;if(l.length){this._filterFn&&(l=l.filter(function(e){return c._filterFn(r.getItem(e))})),l.sort(function(e,t){return c._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;else{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i},_applySplicesArrayOrder:function(e){for(var t,n=0;n=0?(e=this.as+"."+e.substring(n+1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:function(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function(e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function(e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array-selector",_template:null,properties:{items:{type:Array,observer:"clearSelection"},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}},clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e diff --git a/source/developers/api.markdown b/source/developers/api.markdown index feb599063b9..b46b1fdc4d4 100644 --- a/source/developers/api.markdown +++ b/source/developers/api.markdown @@ -11,8 +11,8 @@ footer: true Home Assistant provides various APIs. For detail please refer to [Home Assistant API](https://dev-docs.home-assistant.io/en/dev/) documentation. + * [Python API](https://dev-docs.home-assistant.io/) * [Websocket API](/developers/websocket_api/) - * [RESTful API](/developers/rest_api/) - * [Python API](/developers/python_api/) + * [REST API](/developers/rest_api/) + * [Python REST API](/developers/python_api/) * [Server-sent events](/developers/server_sent_events/) - diff --git a/source/developers/architecture.markdown b/source/developers/architecture.markdown index 2e967a087c5..422777573b4 100644 --- a/source/developers/architecture.markdown +++ b/source/developers/architecture.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +og_image: /images/architecture/ha_architecture.png --- Before we dive into the Home Assistant architecture, let's get a clear overview of the home automation landscape as a whole. This way, we can show how the different parts of Home Assistant fit into the picture. diff --git a/source/developers/architecture_components.markdown b/source/developers/architecture_components.markdown index 9bf4bff3e37..095a4f73781 100644 --- a/source/developers/architecture_components.markdown +++ b/source/developers/architecture_components.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +og_image: /images/architecture/component_interaction.png --- Home Assistant can be extended with **components**. Each component is responsible for a specific domain within Home Assistant. Components can listen for or trigger events, offer services, and maintain states. Components are written in Python and can do all the goodness that Python has to offer. Out of the box, Home Assistant offers a bunch of [built-in components]({{site_root}}/components/). @@ -32,22 +33,22 @@ These components provide small pieces of home automation logic or involve servic For example, the [`device_sun_light_trigger` component](/components/device_sun_light_trigger/) tracks the state of devices and the sun to make sure that the lights are turned on when it gets dark and people are home. The component uses logic like this: -```plain - In the event that device 'Paulus Nexus 5' changes to the 'Home' state: - If the sun has set and the lights are not on: - Turn on the lights +```text +In the event that device 'Paulus Nexus 5' changes to the 'Home' state: + If the sun has set and the lights are not on: + Turn on the lights ``` -```plain - In the event that the combined state of all tracked devices changes to 'Not Home': - If the lights are on: - Turn off the lights +```text +In the event that the combined state of all tracked devices changes to 'Not Home': + If the lights are on: + Turn off the lights ``` -```plain - In the event of the sun setting: - If the lights are off and the combined state of all tracked device equals 'Home': - Turn on the lights +```text +In the event of the sun setting: + If the lights are off and the combined state of all tracked device equals 'Home': + Turn on the lights ``` Look [here](https://github.com/home-assistant/home-assistant/blob/master/config/custom_components/example.py) for a comprehensive example of a home automation component. diff --git a/source/developers/asyncio_categorizing_functions.markdown b/source/developers/asyncio_categorizing_functions.markdown index bd3ff859b8b..6fe74ad359d 100644 --- a/source/developers/asyncio_categorizing_functions.markdown +++ b/source/developers/asyncio_categorizing_functions.markdown @@ -30,7 +30,7 @@ def async_look_my_coroutine(target): if result: print("hello {}".format(target)) -hass.loop.create_task(async_look_my_coroutine("world") +hass.loop.create_task(async_look_my_coroutine("world")) ``` In this example, we schedule the coroutine by calling `hass.loop.create_task`. This will add the coroutine to the queue of tasks to be run. When the event loop is running `async_look_my_coroutine` it will suspend the task when `yield from entity.async_turn_on()` is called. At that point a new task will be scheduled to execute `entity.async_turn_on()`. When that job has been executed, `async_look_my_coroutine` will resume. diff --git a/source/developers/asyncio_working_with_async.markdown b/source/developers/asyncio_working_with_async.markdown index 4936a0c0647..40fd82b2466 100644 --- a/source/developers/asyncio_working_with_async.markdown +++ b/source/developers/asyncio_working_with_async.markdown @@ -56,7 +56,7 @@ def async_setup_platform(hass, config, async_add_entities, # Setup your platform inside of the event loop ``` -The only difference with the original parameters is that the add_entities function has been replaced by the async friendly callback `async_add_entities`. +The only difference with the original parameters is that the `add_entities` function has been replaced by the async friendly callback `async_add_entities`. ## {% linkable_title Implementing an async entity %} diff --git a/source/developers/cla_sign.html b/source/developers/cla_sign.html index 02e6f76fdbd..0c546c76cca 100644 --- a/source/developers/cla_sign.html +++ b/source/developers/cla_sign.html @@ -91,7 +91,7 @@ footer: true ``` diff --git a/source/developers/frontend_creating_custom_ui.markdown b/source/developers/frontend_creating_custom_ui.markdown index a7816cbd529..85dcae24e46 100644 --- a/source/developers/frontend_creating_custom_ui.markdown +++ b/source/developers/frontend_creating_custom_ui.markdown @@ -9,27 +9,73 @@ sharing: true footer: true ha_release: 0.38 --- + If you would like to use your own [State card](/developers/frontend_add_card/) without merging your code into [home-assistant-polymer](https://github.com/home-assistant/home-assistant-polymer/) you can create your own implementation. -- Put the element source file and its dependencies in `www/custom_ui/` directory under your homeassistant config directory. +Put the element source file and its dependencies in `www/custom_ui/` directory under your Home Assistant [configuration](/docs/configuration/) directory. -For example if creating a state card for the `light` domain named `my_custom_light_card` put `state-card-my_custom_light_card.html` in `www/custom_ui/`. +For example if creating a state card for the `light` domain named `state-card-my-custom-light` put `state-card-my-custom-light.html` in `www/custom_ui/`. -That file should implement `` tag with Polymer. +That file should implement `` tag with Polymer. -In `state-card-my_custom_light_card.html` you should use `` to import all the dependencies **not** used by Homeassistant UI. -Do not import any dependencies used by Homeassistant UI. +In `state-card-my-custom-light.html` you should use `` to import all the dependencies **not** used by Home Assistant's UI. +Do not import any dependencies used by the Home Assistant UI. Importing those will work in `development: 1` mode, but will fail in production mode. -- In the `customize:` section of `configuration.yaml` put `custom_ui_state_card: `. +1. In the `customize:` section of the `configuration.yaml` file put `custom_ui_state_card: state-card-my-custom-light`. +2. In the `frontend` section use `extra_html_url` to specify the URL to load. + +Example: + +`configuration.yaml`: -For example: ```yaml homeassistant: customize: - - entity_id: light - custom_ui_state_card: my_custom_light_card + light.bedroom: + custom_ui_state_card: state-card-my-custom-light + +frontend: + extra_html_url: + - /local/custom_ui/state-card-my-custom-light.html ``` +`www\custom_ui\state-card-my-custom-light.html`: + +```javascript + + + + + +``` For more possibilities, see the [Custom UI section](/cookbook/#user-interface) on our Examples page. diff --git a/source/developers/hassio/addon_communication.markdown b/source/developers/hassio/addon_communication.markdown new file mode 100644 index 00000000000..dd658870f12 --- /dev/null +++ b/source/developers/hassio/addon_communication.markdown @@ -0,0 +1,34 @@ +--- +layout: page +title: "Add-On Communication" +description: "Description of the internal communication of Hass.io." +date: 2017-04-30 13:28 +sidebar: true +comments: false +sharing: true +footer: true +redirect_from: /hassio/addon_config/ +--- + +There are different ways to communication between add-ons inside Home Assistant. + +## {% linkable_title Network %} + +We use a internal network. That allow to speak with every add-on or from Home Assistant to add-on by name or alias. Only the add-ons which runs on the host network are a bit limited. They can speak with all internal add-ons over their name but all other add-on can't address the add-on in question with its name. But using an alias work well. Thus the name/alias is used to communicate inside Hass.io. The name have the following format `{REPO}-{SLUG}`, e.g. `local-xy` or `3283fh-myaddon`. + +Use `hassio` to speak with the internal API. + +## {% linkable_title Home Assistant %} + +An add-on can speak to the [Home Assistant API][hass-api] with our internal proxy. That makes it very easy to communicate with the API without knowing the password, port or any other information of the Home Assistant instance. Use this URL: `http://hassio/homeassistant/api` and internal communication is redirected to the right place. The next stept is to add `homeassistant_api: true` to `config.json`. + +It is also possible to speak direct to the Home Assistant instance which is named `homeassistant` over our internal network. But you need to know the configuration that is used by the running instance. + +We have severals services for Hass.io inside Home Assistant to execute tasks. To send data over STDIN to an add-on.l simply use `hassio.addon_stdin`. + +## {% linkable_title Hass.io API %} + +To enables calls to the [Hass.io API][hassio-api], add `hassio_api: true` to `config.json`. Now you can use the API over the URL: `http://hassio/`. + +[hass-api]: https://home-assistant.io/developers/rest_api/ +[hassio-api]: https://github.com/home-assistant/hassio/blob/master/API.md diff --git a/source/developers/hassio/addon_config.markdown b/source/developers/hassio/addon_config.markdown new file mode 100644 index 00000000000..9ec5bae332f --- /dev/null +++ b/source/developers/hassio/addon_config.markdown @@ -0,0 +1,197 @@ +--- +layout: page +title: "Add-On Configuration" +description: "Steps on how-to create an add-on for Hass.io." +date: 2017-04-30 13:28 +sidebar: true +comments: false +sharing: true +footer: true +redirect_from: /hassio/addon_config/ +--- + +Each add-on is stored in a folder. The file structure looks like this: + +``` +addon_name/ + Dockerfile + config.json + run.sh +``` + +## {% linkable_title Add-on script %} + +As with every Docker container, you will need a script to run when the container is started. A user might run many add-ons, so it is encouraged to try to stick to Bash scripts if you're doing simple things. + +When developing your script: + + - `/data` is a volume for persistent storage. + - `/data/options.json` contains the user configuration. You can use `jq` inside your shell script to parse this data. However, you might have to install `jq` as a separate package in your container (see `Dockerfile` below). + +```bash +CONFIG_PATH=/data/options.json + +TARGET="$(jq --raw-output '.target' $CONFIG_PATH)" +``` + +So if your `options` contain +```json +{ "target": "beer" } +``` +then there will be a variable `TARGET` containing `beer` in the environment of your bash file afterwards. + +## {% linkable_title Add-on Docker file %} + +All add-ons are based on Alpine Linux 3.6. Hass.io will automatically substitute the right base image based on the machine architecture. Add `tzdata` if you need run in a different timezone. `tzdata` Is is already added to our base images. + +``` +ARG BUILD_FROM +FROM $BUILD_FROM + +ENV LANG C.UTF-8 + +# Install requirements for add-on +RUN apk add --no-cache jq + +# Copy data for add-on +COPY run.sh / +RUN chmod a+x /run.sh + +CMD [ "/run.sh" ] +``` + +If you don't use local build on device or our build script, make sure that the Dockerfile have also a set of labels include: +``` +LABEL io.hass.version="VERSION" io.hass.type="addon" io.hass.arch="armhf|aarch64|i386|amd64" +``` + +It is possible to use own base image with `build.json` or if you do not need support for automatic multi-arch building you can also use a simple docker `FROM`. + +### {% linkable_title Build Args %} + +We support the following build arguments by default: + +| ARG | Description | +|-----|-------------| +| BUILD_FROM | Hold image for dynamic builds or buildings over our systems. +| BUILD_VERSION | Add-on version (read from `config.json`). +| BUILD_ARCH | Hold current build arch inside. + +## {% linkable_title Add-on config %} + +The config for an add-on is stored in `config.json`. + +```json +{ + "name": "xy", + "version": "1.2", + "slug": "folder", + "description": "long description", + "arch": ["amd64"], + "url": "website with more information about add-on (ie a forum thread for support)", + "startup": "application", + "boot": "auto", + "ports": { + "123/tcp": 123 + }, + "map": ["config:rw", "ssl"], + "options": {}, + "schema": {}, + "image": "repo/{arch}-my-custom-addon" +} +``` + +| Key | Required | Description | +| --- | -------- | ----------- | +| name | yes | Name of the add-on +| version | yes | Version of the add-on +| slug | yes | Slug of the add-on +| description | yes | Description of the add-on +| arch | no | List of supported arch: `armhf`, `aarch64`, `amd64`, `i386`. Default all. +| url | no | Homepage of the addon. Here you can explain the add-ons and options. +| startup | yes | `initialize` will start addon on setup of Hass.io. `system` is for things like databases and not dependent on other things. `services` will start before Home Assistant, while `application` is started afterwards. Finally `once` is for applications that don't run as a daemon. +| webui | no | A URL for web interface of this add-on. Like `http://[HOST]:[PORT:2839]/dashboard`, the port needs the internal port, which will be replaced with the effective port. It is also possible to bind the proto part to a config options with: `[PROTO:option_name]://[HOST]:[PORT:2839]/dashboard` and he lookup if they is True and going to `https`. +| boot | yes | `auto` by system and manual or only `manual` +| ports | no | Network ports to expose from the container. Format is `"container-port/type": host-port`. +| host_network | no | If that is True, the add-on run on host network. +| devices | no | Device list to map into the add-on. Format is: `::`. i.e. `/dev/ttyAMA0:/dev/ttyAMA0:rwm` +| hassio_api | no | This add-on can access to Hass.io REST API. It set the host alias `hassio`. +| homeassistant_api | no | This add-on can access to Hass.io Home-Assistant REST API proxy. Use `http://hassio/homeassistant/api`. +| privileged | no | Privilege for access to hardware/system. Available access: `NET_ADMIN`, `SYS_ADMIN`, `SYS_RAWIO` +| map | no | List of maps for additional Hass.io folders. Possible values: `config`, `ssl`, `addons`, `backup`, `share`. Defaults to `ro`, which you can change by adding `:rw` to the end of the name. +| environment | no | A dict of environment variable to run add-on. +| audio | no | Boolean. Mark this add-on to use internal an audio system. The available environment variables are `ALSA_INPUT` and `ALSA_OUTPUT` which provide internal information to access alsa. +| gpio | no | Boolean. If this is set to True, `/sys/class/gpio` will map into add-on for access to GPIO interface from kernel. Some library need also `/dev/mem` and `SYS_RAWIO` for read/write access to this device. +| stdin | no | Boolean. If that is enable, you can use the STDIN with Hass.io API. +| legacy | no | Boolean. If the docker image have no hass.io labels, you can enable the legacy mode to use the config data. +| options | yes | Default options value of the add-on +| schema | yes | Schema for options value of the add-on. It can be `False` to disable schema validation and use custom options. +| image | no | For use with Docker Hub. +| timeout | no | Default 10 (second). The timeout to wait until the docker is done or will be killed. +| tmpfs | no | Mount a tmpfs file system in `/tmpfs`. Valide format for this option is : `size=XXXu,uid=N,rw`. Size is mandatory, valid units (`u`) are `k`, `m` and `g` and `XXX` has to be replaced by a number. `uid=N` (with `N` the uid number) and `rw` are optional. + +### {% linkable_title Options / Schema %} + +The `options` dictionary contains all available options and their default value. Set the default value to `null` if the value is required to be given by the user before the add-on can start, and it show it inside default values. Only nested arrays and dictionaries are supported with a deep of two size. If you want make a option optional, put `?` to the end of data type, otherwise it will be a required value. + +```json +{ + "message": "custom things", + "logins": [ + { "username": "beer", "password": "123456" }, + { "username": "cheep", "password": "654321" } + ], + "random": ["haha", "hihi", "huhu", "hghg"], + "link": "http://example.com/", + "size": 15, + "count": 1.2 +} +``` + +The `schema` looks like `options` but describes how we should validate the user input. For example: + +```json +{ + "message": "str", + "logins": [ + { "username": "str", "password": "str" } + ], + "random": ["match(^\w*$)"], + "link": "url", + "size": "int(5,20)", + "count": "float", + "not_need": "str?" +} +``` + +We support: +- str +- bool +- int / int(min,) / int(,max) / int(min,max) +- float / float(min,) / float(,max) / float(min,max) +- email +- url +- port +- match(REGEX) + +## {% linkable_title Add-on extended build %} + +Additional build options for an add-on is stored in `build.json`. This file will be read from our build systems. + +```json +{ + "build_from": { + "armhf": "homeassistant/armhf-base:latest" + }, + "squash": false, + "args": { + "my_build_arg": "xy" + } +} +``` + +| Key | Required | Description | +| --- | -------- | ----------- | +| build_from | no | A dictionary with the hardware architecture as the key and the base Docker image as value. +| squash | no | Default `False`. Be carfully with this option, you can not use the image for caching stuff after that! +| args | no | Allow to set additional Docker build arguments as a dictionary. diff --git a/source/developers/hassio/addon_development.markdown b/source/developers/hassio/addon_development.markdown new file mode 100644 index 00000000000..40680cd1415 --- /dev/null +++ b/source/developers/hassio/addon_development.markdown @@ -0,0 +1,24 @@ +--- +layout: page +title: "Developing an add-on" +description: "Steps on how-to create an add-on for Hass.io." +date: 2017-04-30 13:28 +sidebar: true +comments: false +sharing: true +footer: true +redirect_from: /hassio/addon_development/ +--- + +Add-ons for Hass.io allow the user to extend the functionality around Home Assistant. This can be running an application that Home Assistant can integrate with (like an MQTT broker) or to share the configuration via Samba for easy editing from other computers. Add-ons can be configured via the Hass.io panel in Home Assistant. + +Under the hood, add-ons are Docker images published in [Docker Hub](https://hub.docker.com/). Developers can create [GitHub](https://github.com) repositories that contain multiple references to add-ons for easy sharing with the community. + +
      +
    1. Tutorial: Making your first add-on
    2. +
    3. Configuration
    4. +
    5. Communication
    6. +
    7. Local Testing
    8. +
    9. Publishing
    10. +
    11. Repositories
    12. +
    diff --git a/source/hassio/addon_publishing.markdown b/source/developers/hassio/addon_publishing.markdown similarity index 72% rename from source/hassio/addon_publishing.markdown rename to source/developers/hassio/addon_publishing.markdown index 6ca8bff3b98..4d77c53bc8c 100644 --- a/source/hassio/addon_publishing.markdown +++ b/source/developers/hassio/addon_publishing.markdown @@ -7,16 +7,19 @@ sidebar: true comments: false sharing: true footer: true +redirect_from: /hassio/addon_publishing/ --- There are two different ways of publishing add-ons. One is to publish pre-build containers to Docker Hub and the other option is to have users build the containers locally on their Hass.io instance. -**Pre-build containers**
    +#### {% linkable_title Pre-build containers %} + With pre-build containers, the developer is responsible for building the images for each architecture on their machine and push the results out to Docker Hub. This has a lot of advantages for the user. As a user it will only have to download the final container and be up and running once the download finishes. This makes the installation process fast and almost no chance of failure. This is the preferred method. We have automated the process of building and publishing add-ons. See below for the instructions. -**Locally build containers**
    +#### {% linkable_title Locally build containers %} + Starting Hass.io 0.26, it is possible to distribute add-ons that will be built on the users machine. The advantage is that as a developer it is easy to test an idea and see if people are interested in your add-ons. This method includes installing and potentially compiling code. This means that installing such an add-on is slow and adds more wear and tear to users SD card/hard drive than the above mentioned pre-build solution. It also has a higher chance of failure if one of the dependencies of the container has changed or is no longer available. Use this option when you are playing with add-ons and seeing if someone is interested in your work. Once you're an established repository, please migrate to pushing builds to Docker Hub as it greatly improves the user experience. In the future we will mark locally built add-ons in the add-on store to warn users. @@ -27,43 +30,32 @@ All add-ons are simple docker containers. Inside your add-on `config.json` you s ```json { - … + ... "image": "myhub/image-{arch}-addon-name", - … + ... } ``` -You can use `{arch}` inside the image name to support multiple architectures with 1 configuration file. It will be replaced with the architecture of the user when we load the image. +You can use `{arch}` inside the image name to support multiple architectures with 1 configuration file. It will be replaced with the architecture of the user when we load the image. If you use `Buildargs` you can use the `build.json` to overwrite our default args. -Hass.io assumes that the `master` branch of your add-on repository matches the latest tag on Docker Hub. When you're building a new version, it's suggested that you use another branch, ie `build`. After you push the add-on to [Docker Hub](https://hub.docker.com/), you can merge this branch to master. +Hass.io assumes that the `master` branch of your add-on repository matches the latest tag on Docker Hub. When you're building a new version, it's suggested that you use another branch, ie `build` or do it with a PR on GitHub. After you push the add-on to [Docker Hub](https://hub.docker.com/), you can merge this branch to master. ## {% linkable_title Custom Add-ons %} -You need a Docker Hub account to make your own add-ons. Download our [build script][builder] and run one of the following commands. +You need a Docker Hub account to make your own add-ons. You can build your docker images with docker `build` command or use our script that make it simple. Pull our [builder docker engine][builder] and run one of the following commands. For a git repository: ```bash -# Test only: -./create_hassio_addon.sh -a amd64 -s addon-slug -r https://github.com/xy/addons -b branchname - -# push to docker hub: -./create_hassio_addon.sh -a amd64 -s addon-slug -r https://github.com/xy/addons -b branchname -p - -# create for all supported arch: -./create_addon_all.sh -s addon-slug -r https://github.com/xy/addons -b branchname -p +$ docker run --rm --privileged -v ~/.docker:/root/.docker homeassistant/amd64-builder --all -t addon-folder -r https://github.com/xy/addons -b branchname ``` For a local repository: ```bash -# Test only: -./create_hassio_addon.sh -a amd64 -s addon-slug -l /home/xy/my_local_repo - -# push to docker hub: -./create_hassio_addon.sh -a amd64 -s addon-slug -l /home/xy/my_local_repo -p +$ docker run --rm --privileged -v ~/.docker:/root/.docker -v /my_addon:/data homeassistant/amd64-builder --all -t /data ``` -[builder]: https://github.com/home-assistant/hassio-build/tree/master/build-scripts/addons +[builder]: https://github.com/home-assistant/hassio-build/tree/master/builder diff --git a/source/hassio/addon_repository.markdown b/source/developers/hassio/addon_repository.markdown similarity index 57% rename from source/hassio/addon_repository.markdown rename to source/developers/hassio/addon_repository.markdown index 8059225125a..3ad7da57fe1 100644 --- a/source/hassio/addon_repository.markdown +++ b/source/developers/hassio/addon_repository.markdown @@ -7,19 +7,20 @@ sidebar: true comments: false sharing: true footer: true +redirect_from: /hassio/addon_repository/ --- -Add-ons repository can contain one or more add-ons. Each add-on is stored in it's own unique folder. For it to be indentified as a repository, a repository contains a configuration file. +An Add-on repository can contain one or more add-ons. Each add-on is stored in it's own unique folder. To be indentified as a repository, the repository must contain a configuration file. -[Example add-on repository](https://github.com/home-assistant/hassio-addons-example). +Check the [Example add-on repository](https://github.com/home-assistant/hassio-addons-example) for further details. -## Installing a repository +## {% linkable_title Installing a repository %} -A user can add a repository by going to the Hass.io panel in Home Assistant, clicking on the store icon in the top right, copy/paste the url of your repostory into the repository textarea and click on "Save". +A user can add a repository by going to the Hass.io panel in Home Assistant, clicking on the store icon in the top right, copy/paste the URL of your repostory into the repository textarea and click on **Save**. -## Repository configuration +## {% linkable_title Repository configuration %} -Each repository is required to contain `repository.json` at the root of the Git repository. +Each repository is required to contain `repository.json` at the root in the git repository. ```json { diff --git a/source/hassio/addon_testing.markdown b/source/developers/hassio/addon_testing.markdown similarity index 54% rename from source/hassio/addon_testing.markdown rename to source/developers/hassio/addon_testing.markdown index 101c98107a3..d1a2dfc17f8 100644 --- a/source/hassio/addon_testing.markdown +++ b/source/developers/hassio/addon_testing.markdown @@ -1,35 +1,37 @@ --- layout: page title: "Local add-on testing" -description: "Instructions how to test your add-on locally." +description: "Instructions on how to test your add-on locally." date: 2017-04-30 13:28 sidebar: true comments: false sharing: true footer: true +redirect_from: /hassio/addon_testing/ --- The fastest way to develop add-ons is by adding them to your local add-on repository. To access your local add-on repository, install either the [Samba add-on] or [SSH add-on]. Right now add-ons will work with images that are stored on Docker Hub (using `image` from add-on config). Without `image` inside local add-ons repository it to be built on the device. +## {% linkable_title Local build %} + +You can build an try the addon on your developer machine also. Move all addon stuff into a temp folder. If you use `FROM $BUILD_FROM` you need set a base image with build args. Normally you can use follow base images: + +- armhf: `homeassistant/armhf-base:latest` +- aarch64: `homeassistant/aarch64-base:latest` +- amd64: `homeassistant/amd64-base:latest` +- i386: `homeassistant/i386-base:latest` + +Use `docker` to build the test addon: `docker build --build-arg BUILD_FROM="homeassistant/amd64-base:latest" -t local/my-test-addon .` + ## {% linkable_title Local run %} -You can build an try the addon on your developer machine also. Move all addon stuff into a temp folder. Replace in the Dockerfile `%%BASE_IMAGE%%` with: - -- armhf: `resin/armhf-alpine:3.5` -- aarch64: `resin/aarch64-alpine:3.5` -- amd64: `resin/amd64-alpine:3.5` -- i386: `resin/i386-alpine:3.5` - -Add also a `LABEL io.hass.version="xy"` into your dockerfile. -Use `docker` to build the test addon: `docker build -t local/my-test-addon .` - Create a new folder for data and add a test _options.json_ file. After that you can run your add-on with: `docker run --rm -v /tmp/my_test_data:/data -p PORT_STUFF_IF_NEEDED local/my-test-addon` ## {% linkable_title Logs %} -All stdout and stderr is redirected to the Docker logs. The logs can be fetched from the add-on page inside the Hass.io panel in Home Assistant. +All stdout and stderr are redirected to the Docker logs. The logs can be fetched from the add-on page inside the Hass.io panel in Home Assistant. [Samba add-on]: /addons/samba/ [SSH add-on]: /addons/ssh/ diff --git a/source/hassio/addon_tutorial.markdown b/source/developers/hassio/addon_tutorial.markdown similarity index 96% rename from source/hassio/addon_tutorial.markdown rename to source/developers/hassio/addon_tutorial.markdown index 11ea9d13e7f..ebd8dd646bf 100644 --- a/source/hassio/addon_tutorial.markdown +++ b/source/developers/hassio/addon_tutorial.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +redirect_from: /hassio/addon_tutorial/ --- So you've got Home Assistant going and you've been enjoying the built-in add-ons but you're missing this one application. Time to make your own add-on! In Hass.io 0.24 we introduced the option to have local add-ons be build on your device. This is great for developing new add-ons locally. @@ -15,6 +16,8 @@ To get started with developing add-ons, we first need access to where Hass.io lo For Samba, once you have enabled and started it, your Hass.io instance will show up in your local network tab and share a folder called "addons". This is the folder to store your custom add-ons. +If you are on macOS and the folder is not showing up automatically, go to Finder and press CMD+K then enter 'smb://hassio.local' +

    With Samba add-on enabled, you can browse to your Hass.io server over the local network. It will contain an addons folder to store your local add-ons. @@ -38,7 +41,8 @@ Once you have located your add-on directory, it's time to get started! `Dockerfile`: ``` -FROM %%BASE_IMAGE%% +ARG BUILD_FROM +FROM $BUILD_FROM ENV LANG C.UTF-8 @@ -201,4 +205,4 @@ Refresh the add-on store and re-install your add-on. You will now see the option - [Learn more about the available schema options.](/hassio/addon_config/#options--schema) - [See how options.json can be used inside `run.sh`](https://github.com/home-assistant/hassio-addons/blob/master/mosquitto/run.sh#L4-L6) -### [Next step: Add-on config reference »](/hassio/addon_config/) +### [Next step: Add-on config reference »](/developers/hassio/addon_config/) diff --git a/source/hassio/architecture.markdown b/source/developers/hassio/architecture.markdown similarity index 97% rename from source/hassio/architecture.markdown rename to source/developers/hassio/architecture.markdown index 5dbb1c4354e..173e3657ae3 100644 --- a/source/hassio/architecture.markdown +++ b/source/developers/hassio/architecture.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +redirect_from: /hassio/architecture/ ---

    diff --git a/source/developers/hassio/debugging.markdown b/source/developers/hassio/debugging.markdown new file mode 100644 index 00000000000..01a92c98ea8 --- /dev/null +++ b/source/developers/hassio/debugging.markdown @@ -0,0 +1,55 @@ +--- +layout: page +title: "Debugging Hass.io" +description: "Tips and tricks for when things go wrong." +date: 2017-04-30 13:28 +sidebar: true +comments: false +sharing: true +footer: true +redirect_from: /hassio/debugging/ +--- + +

    +This section is not for users. Use the [SSH add-on] to SSH into Hass.io. This is for developers of Hass.io. Do not ask for support if you are using these options. +

    + +[SSH add-on]: /addons/ssh/ + +The following debug tips and tricks are for people who are running the Hass.io image and are working on the base image. If you use the generic Linux installer script, you should be able to access your host and logs as per your host. + +## {% linkable_title SSH access to the host %} + +Create an `authorized_keys` file containing your public key, and place it in the root of the boot partition of your SD card. Once the device is booted, you can access your device as root over SSH on port 22222. + +Windows instructions how to generate and use private/public keys with Putty are [here][windows-keys]. Instead of the droplet instructions, add the public key as per above instructions. + +Alternative instructions, for Mac, Windows and Linux can be found [here](https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#platform-mac). + +Follow steps 1-4 under 'Generating a new SSH key' (The other sections are not applicable to Hass.io and can be ignored.) + +Step 3 in the link above, shows the path to the private key file `id_rsa` for your chosen operating system. Your public key, `id_rsa.pub`, is saved in the same folder. Next, copy your public key file to the root of your SD card as `authorized_keys`. + +

    +Make sure when you are copying the public key to the root of the /resin-boot partition of the SD card that you rename the file correctly to `authorized_keys` with no `.pub` file extension. +

    + +You should then be able to SSH into your Hass.io device. On mac/linux, use: +``` +ssh root@hassio.local -p 22222 +``` + +## {% linkable_title Checking the logs %} + +```bash +# Logs from the supervisor service on the Host OS +journalctl -f -u resin-supervisor.service + +# Hass.io supervisor logs +docker logs hassio_supervisor + +# Home Assistant logs +docker logs homeassistant +``` + +[windows-keys]: https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-putty-on-digitalocean-droplets-windows-users diff --git a/source/developers/helpers.markdown b/source/developers/helpers.markdown index 390bf17b242..4b9e7f59b97 100644 --- a/source/developers/helpers.markdown +++ b/source/developers/helpers.markdown @@ -9,10 +9,18 @@ sharing: true footer: true --- -There are a bunch of online services which can help you if you are developing for Home Assistant or maintaining components. Some of these are directly connected to Pull Requests and the repositories, while others publish details and updates in our [Gitter.im](https://gitter.im/home-assistant/home-assistant/devs) chatroom. +There are a bunch of online services which can help you if you are developing for Home Assistant or maintaining components. Some of these are directly connected to Pull Requests and the repositories, while others publish details and updates on our [Discord chat server][discord-devs]. -- [Coveralls](https://coveralls.io/github/home-assistant/home-assistant) -- [Travis CI](https://travis-ci.org/home-assistant/home-assistant) -- [gemnasium](https://gemnasium.com/github.com/home-assistant/home-assistant) -- [Requires.io](https://requires.io/github/home-assistant/home-assistant/requirements/?branch=dev) -- [Pivotal Tracker](https://www.pivotaltracker.com/n/projects/1250084) +- [Coveralls][coveralls] +- [Travis CI][travis-ci] +- [gemnasium][gemnasium] +- [Requires.io][requires-io] +- [Pivotal Tracker][pivotal] + +[coveralls]: https://coveralls.io/github/home-assistant/home-assistant +[travis-ci]: https://travis-ci.org/home-assistant/home-assistant +[gemnasium]: https://gemnasium.com/github.com/home-assistant/home-assistant +[requires-io]: https://requires.io/github/home-assistant/home-assistant/requirements/?branch=dev +[pivotal]: https://www.pivotaltracker.com/n/projects/1250084 + +[discord-devs]: https://discord.gg/8X8DTH4 diff --git a/source/developers/index.markdown b/source/developers/index.markdown index f1fb27273db..c801866e6aa 100644 --- a/source/developers/index.markdown +++ b/source/developers/index.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +og_image: /images/architecture/component_interaction.png --- Welcome to the Home Assistant development documentation. This is the place to learn all about how Home Assistant works and how you can extend it with support for your devices and services! diff --git a/source/developers/intent/conversation.markdown b/source/developers/intent/conversation.markdown new file mode 100644 index 00000000000..38d02fe337a --- /dev/null +++ b/source/developers/intent/conversation.markdown @@ -0,0 +1,27 @@ +--- +layout: page +title: "Registering sentences" +description: "Register sentences with the conversation component." +date: 2017-07-23 20:00 +sidebar: true +comments: false +sharing: true +footer: true +--- + +The conversation component handles incoming commands from the frontend and converts them to intents. It does this based on registered sentences. + +As a component, you can register sentences with the conversation component to allow it to be remote controlled. Refer to named slots by putting the slot name between curly braces: `{item}`. + +Example code: + +```python +@asyncio.coroutine +def async_setup(hass, config): + hass.components.conversation.async_register('MyCoolIntent', [ + 'I think that {object} is very cool', + 'Nothing is cooler than {object}' + ]) +``` + +If a sentence like "I think that beer is very cool" comes in, the conversation component will generate an intent of type `MyCoolIntent` and with 1 slot, named `object` and value `beer`. diff --git a/source/developers/intent/firing.markdown b/source/developers/intent/firing.markdown new file mode 100644 index 00000000000..17e80678b4b --- /dev/null +++ b/source/developers/intent/firing.markdown @@ -0,0 +1,59 @@ +--- +layout: page +title: "Firing intents" +description: "How to fire intents to be handled by Home Assistant." +date: 2017-07-23 20:00 +sidebar: true +comments: false +sharing: true +footer: true +--- + +When you fire an intent, you will get a response back or an error will be raised. It is up to the component to return the result to the user. + +Example code to handle an intent in Home Assistant. + +```python +from homeassistant.helpers import intent + +intent_type = 'TurnLightOn' +slots = { + 'entity': { 'value': 'Kitchen' } +} + +try: + intent_response = yield from intent.async_handle( + hass, 'example_component', intent_type, slots + ) + +except intent.UnknownIntent as err: + _LOGGER.warning('Received unknown intent %s', intent_type) + +except intent.InvalidSlotInfo as err: + _LOGGER.error('Received invalid slot data: %s', err) + +except intent.IntentError: + _LOGGER.exception('Error handling request for %s', intent_type) +``` + +The intent response is an instance of `homeassistant.helpers.intent.IntentResponse`. + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `intent` | Intent | Instance of intent that triggered response. | +| `speech` | Dictionary | Speech responses. Each key is a type. Allowed types are `plain` and `ssml`. | +| `card` | Dictionary | Card responses. Each key is a type. | + +Speech dictionary values: + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `speech` | String | The text to say +| `extra_data` | Any | Extra information related to this speech. + +Card dictionary values: + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `title` | String | The title of the card +| `content` | Any | The content of the card diff --git a/source/developers/intent/handling.markdown b/source/developers/intent/handling.markdown new file mode 100644 index 00000000000..c341f6ef178 --- /dev/null +++ b/source/developers/intent/handling.markdown @@ -0,0 +1,49 @@ +--- +layout: page +title: "Handling intents" +description: "How to handle intents that are fired in Home Assistant." +date: 2017-07-23 20:00 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Any component can register to handle intents. This allows a single component to handle intents fired from multiple voice assistants. + +A component has to register an intent handler for each type that it wants to handle. Intent handlers have to extend `homeassistant.helpers.intent.IntentHandler` + +```python +import asyncio +from homeassistant.helpers import intent + +DATA_KEY = 'example_key' + +@asyncio.coroutine +def async_setup(hass, config): + hass.data[DATA_KEY] = 0 + intent.async_register(hass, CountInvocationIntent()) + + +class CountInvocationIntent(intent.IntentHandler): + """Handle CountInvocationIntent intents.""" + + # Type of intent to handle + intent_type = 'CountInvocationIntent' + + # Optional. A validation schema for slots + # slot_schema = { + # 'item': cv.string + # } + + @asyncio.coroutine + def async_handle(self, intent_obj): + """Handle the intent.""" + intent_obj.hass.data[DATA_KEY] += 1 + + response = intent_obj.create_response() + response.async_set_speech( + "This intent has been invoked {} times".format( + intent_obj.hass.data[DATA_KEY])) + return response +``` diff --git a/source/developers/intent/index.markdown b/source/developers/intent/index.markdown new file mode 100644 index 00000000000..a454deecbcc --- /dev/null +++ b/source/developers/intent/index.markdown @@ -0,0 +1,37 @@ +--- +layout: page +title: "Intents" +description: "Intents are helping Home Assistant to gather " +date: 2017-07-23 20:00 +sidebar: true +comments: false +sharing: true +footer: true +--- + +An intent is a description of a user's intention. Intents are generated by user actions, like asking Amazon Echo to turn on a light. + +

    + +Architectural overview of intents in Home Assistant +

    + +Intents are fired by components that receive them from external sources/services. Conversation, Alexa, API.ai and Snips are currently sourcing intents. + +Any component can handle intents. This makes it very easy for developers to integrate with all voice assistants at once. + +Intents are implemented using the `homeassistant.helpers.intent.Intent` class. It contains the following properties: + +| Name | Type | Description | +| ---- | ---- | ----------- | +| `hass` | Home Assistant | The Home Assistant instance that fired the intent. +| `platform` | string | The platform that fired the intent +| `intent_type` | string | The type (name) of the intent +| `slots` | dictionary | Contains the slot values keyed by slot name. +| `text_input` | string | Optional. The raw text input that initiated the intent. + +Description of the slots dictionary values. + +| Name | Type | Description | +| ---- | ---- | ----------- | +| Value | anything | Value of the slot. diff --git a/source/developers/maintenance.markdown b/source/developers/maintenance.markdown index 7b1d9d59a4f..4f48326ceb3 100644 --- a/source/developers/maintenance.markdown +++ b/source/developers/maintenance.markdown @@ -36,7 +36,7 @@ If you update the requirements of a component/platform through the `REQUIREMENTS $ script/gen_requirements_all.py ``` -Start a test run of Home Assistant if that was successful include all files in a Pull Request. Add a short summary of the changes, a sample configuration entry, details about the tests, and other useful information to the description. +Start a test run of Home Assistant. If that was successful, include all files in a Pull Request. Add a short summary of the changes, a sample configuration entry, details about the tests you performed to ensure the update works, and other useful information to the description. diff --git a/source/developers/python_api.markdown b/source/developers/python_api.markdown index 727e94f071e..2e752f80b4c 100644 --- a/source/developers/python_api.markdown +++ b/source/developers/python_api.markdown @@ -40,7 +40,7 @@ print(remote.get_config(api)) ### {% linkable_title Get details about services, events, and entitites %} -The output from this is similar to the output you'd find via the frontend, using the DevTools console. +The output from this is similar to the output you'd find via the frontend, using the [Developer Tools](/docs/tools/dev-tools/). ```python import homeassistant.remote as remote @@ -71,12 +71,11 @@ To get the details of a single entity, use `get_state`: import homeassistant.remote as remote api = remote.API('127.0.0.1', 'YOUR_PASSWORD') -office_temperature = remote.get_state(api, 'sensor.office_temperature') -print('{} is {} {}.'.format(office_temperature.name, - office_temperature.state, - office_temperature.attributes['unit_of_measurement'] - ) - ) +office_temp = remote.get_state(api, 'sensor.office_temperature') +print('{} is {} {}.'.format( + office_temp.name, office_temp.state, + office_temp.attributes['unit_of_measurement']) +) ``` This outputs the details which are stored for this entity, ie: @@ -92,10 +91,9 @@ import homeassistant.remote as remote api = remote.API('127.0.0.1', 'YOUR_PASSWORD') switch_livingroom = remote.get_state(api, 'switch.livingroom_pin_2') -print('{} is {}.'.format(switch_livingroom.name, - switch_livingroom.state - ) - ) +print('{} is {}.'.format( + switch_livingroom.name, switch_livingroom.state) +) ``` ### {% linkable_title Set the state of an entity %} @@ -184,3 +182,55 @@ data = {"title":"Test", "message":"A simple test message from HA."} remote.call_service(api, domain, 'jabber', data) ``` + +## {% linkable_title Examples %} + +This section contains a couple of sample scripts. + +### {% linkable_title List all sensors and their value %} + +If you want to see, export or list all sensor states then an easy way to do it, is to get all entities and filter for the one you are looking for. + +```python +import homeassistant.remote as remote + +api = remote.API('127.0.0.1', 'YOUR_PASSWORD') +entities = remote.get_states(api) +for entity in entities: + if entity.entity_id.startswith('sensor'): + data = remote.get_state(api, entity.entity_id) + print('{}: {}'.format(data.attributes['friendly_name'], data.state)) +``` + +### {% linkable_title Show difference between `last_changed` and `last_updated` %} + +The documentation about the [State Objects](/docs/configuration/state_object/) describes the +`last_changed` and `last_updated` fields. This example shows how it works in practice. + +```python +import time + +from prettytable import PrettyTable +import homeassistant.remote as remote + +api = remote.API('127.0.0.1', 'YOUR_PASSWORD') + +ACTIONS = { + 'Create sensor': [21, 'Test'], + 'No new sensor value': [21, 'Test'], + 'New sensor value': [22, 'Test'], + 'Update attribute': [22, 'Test1'], +} + +output = PrettyTable(['Action', 'Last changed', 'Last updated']) + +for key, value in ACTIONS.items(): + remote.set_state(api, 'sensor.test', new_state=value[0], + attributes={'friendly_name': value[1]}) + data = remote.get_state(api, 'sensor.test') + output.add_row([key, data.last_changed, data.last_updated]) + time.sleep(2) + +print(output) +``` + diff --git a/source/developers/releasing.markdown b/source/developers/releasing.markdown index c4dd92b88c1..55ef646a995 100644 --- a/source/developers/releasing.markdown +++ b/source/developers/releasing.markdown @@ -9,36 +9,46 @@ sharing: true footer: true --- -This page describes the steps for publishing a new Home Assistant release. +This page describes the steps for publishing a new Home Assistant release. Those steps requires that you don't use forks but work with the repositories themself. The [hass-release](https://github.com/home-assistant/hass-release) script is a helper to do a release. -### {% linkable_title GitHub (3 days before release) %} - -1. Merge `master` into `dev` to make the PR mergeable. -2. Cut a release branch from `dev`. Example name `release-0-46`. -3. Create a pull request from release branch to `master` with the upcoming release number as the title. PR message contains intro, highlighting major changes, and an overview of all changes tagging each author. Use [hass-release]https://github.com/home-assistant/hass-release) to collect the details. -4. Update `homeassistant/const.py` with the correct version number (remove the `dev` tag) and push that commit to release branch. -5. From now until the release branch has been merged, we tag bugfixes with the milestone for the release (create if doesn't exist). - -### {% linkable_title Website (3 days before release) %} - -1. Merge `current` into `next` -2. Cut release branch of `next`. For example `release-0-46`. -3. Open a PR from release branch to `current` with the upcoming release number as the title. +### {% linkable_title Release preparation (3 days before release) %} ### {% linkable_title GitHub %} -1. Merge pull request (DO NOT SQUASH!). -2. Go to [releases](https://github.com/home-assistant/home-assistant/releases) and tag a new release on the `master` branch. "Tag version" and "Release title" are the version number (`O.x` for major version, `0.x.y` for minor and bug fix releases). Release description is the text from PR. Press "Publish release" to finish the process. -3. Merge `master` into `dev`. +1. Merge `master` into `dev` to make the PR mergeable. +2. Cut a release branch from `dev`. Example name `release-0-57`. +3. Create a pull request from the release branch to `master` with the upcoming release number as the title. +4. Update `homeassistant/const.py` with the correct version number (remove the `dev` tag) and push that commit to release branch. + +### {% linkable_title Website %} + +1. Merge `current` into `next` +2. Cut release branch of `next`. For example `release-0-57`. +3. Open a PR from release branch to `current` with the upcoming release number as the title. + +## {% linkable_title Release day %} + +From creating the release branch till it has been merged, we tag bugfixes with the milestone for the release (create if doesn't exist). + +### {% linkable_title GitHub %} + +1. Cherry-pick the milestoned PRs that need to get into the release `python3 -m hassrelease milestone_cherry_pick 0.57` +2. Run `python3 -m hassrelease release_notes 0.56` for the release notes. +3. Once the release notes has been generated, issue `python3 -m hassrelease milestone_close 0.56` +4. Merge pull request (DO NOT SQUASH!). Use `Merge pull request`. +5. Go to [releases](https://github.com/home-assistant/home-assistant/releases), click `Draft a new release` and tag a new release on the `master` branch. "Tag version" and "Release title" are the version number (`O.x` for major version, `0.x.y` for minor and bug fix releases). Release description is the text from PR. Press "Publish release" to finish the process. +6. Merge `master` into `dev`. +7. Update `homeassistant/const.py` with the upcoming version number (including the `dev` tag) and push that commit to the `dev` branch. ### {% linkable_title Website %} 1. Create a blog post in the release branch and base it on the text of the PR in the main repository. Add images, additional text, links, etc. if it adds value. Tag each platform/component in a message to documentation. 2. Create missing documentation as stubs. -3. Update `config.yml` with link to the new release blog post and version number (at the bottom of the file). -4. Merge `current` into release branch (`$ git checkout release-0-40 && git merge current`) to make the PR mergeable. -5. Merge pull request (blog post, updated frontpage, and all new documentation) to `current`. DO NOT SQUASH! -6. Merge `current` into `next`. +3. Run `credits_generator`. +4. Update `_config.yml` with a link to the new release blog post and version number (at the bottom of the file). +5. Merge `current` into release branch (`$ git checkout release-0-40 && git merge current`) to make the PR mergeable. +6. Merge pull request (blog post, updated frontpage, and all new documentation) to `current`. DO NOT SQUASH! +7. Merge `current` into `next`. ### {% linkable_title Docker Hub %} @@ -50,6 +60,15 @@ Checkout the `master` branch and run `script/release` to publish the new release ### {% linkable_title Social media %} -1. Use [hootsuite] to publish a link to the release post on social media. +1. Use [hootsuite](https://hootsuite.com/dashboard) to publish a link to the release post on social media. -[hootsuite]: https://hootsuite.com/dashboard +## {% linkable_title Bugfix Release %} + +1. Checkout `master` and update it. `git checkout master && git pull --rebase` +2. Create a new release branch from `master`. `git checkout -b release-0-56-2` +3. Cherry-pick the PRs which were milestoned. +4. Update `homeassistant/const.py` with the correct version number (increment `PATCH_VERSION`) and push that commit to release branch. +5. Create a pull request from the release branch to `master` with the upcoming release number as the title. +6. Merge pull request (DO NOT SQUASH!). Use `Merge pull request`. +7. Go to [releases](https://github.com/home-assistant/home-assistant/releases), click `Draft a new release` and tag a new release on the `master` branch. "Tag version" and "Release title" are the version number (`O.x` for major version, `0.x.y` for minor and bug fix releases). Release description is the text from PR. Press "Publish release" to finish the process. +8. [Publish](/developers/releasing/#python-package-index) the new release on PyPI. diff --git a/source/developers/rest_api.markdown b/source/developers/rest_api.markdown index f4046b3cb9a..8f620814d5a 100644 --- a/source/developers/rest_api.markdown +++ b/source/developers/rest_api.markdown @@ -39,7 +39,7 @@ print(response.text) ```

    -You can append `?api_password=YOUR_PASSWORD` to any url to log in automatically. +You can append `?api_password=YOUR_PASSWORD` to any URL to log in automatically.

    Successful calls will return status code 200 or 201. Other status codes that can return are: @@ -73,33 +73,43 @@ $ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \ Returns the current configuration as JSON. ```json -{ - "components": [ - "recorder", - "http", - "weather.openweathermap", - "api", - "websocket_api", - "frontend", - "sensor.time_date", - "sun", - "device_tracker", - "group", - "automation" - ], - "config_dir": "/home/ha/.homeassistant", - "elevation": 590, - "latitude": 45.92, - "location_name": "Home", - "longitude": 6.52, - "time_zone": "Europe/Zurich", - "unit_system": { - "length": "km", - "mass": "g", - "temperature": "\\u00b0C", - "volume": "L" - }, - "version": "0.37.0.dev0" +{ + "components":[ + "sensor.cpuspeed", + "frontend", + "config.core", + "http", + "map", + "api", + "sun", + "config", + "discovery", + "conversation", + "recorder", + "group", + "sensor", + "websocket_api", + "automation", + "config.automation", + "config.customize" + ], + "config_dir":"/home/ha/.homeassistant", + "elevation":510, + "latitude":45.8781529, + "location_name":"Home", + "longitude":8.458853651, + "time_zone":"Europe/Zurich", + "unit_system":{ + "length":"km", + "mass":"g", + "temperature":"\u00b0C", + "volume":"L" + }, + "version":"0.56.2", + "whitelist_external_dirs":[ + "/home/ha/.homeassistant/www", + "/home/ha/.homeassistant/" + ] } ``` @@ -115,10 +125,10 @@ Returns basic information about the Home Assistant instance as JSON. ```json { - "base_url": "http://127.0.0.1:8123", + "base_url": "http://192.168.0.2:8123", "location_name": "Home", "requires_api_password": true, - "version": "0.20.0.dev0" + "version": "0.56.2" } ``` @@ -202,11 +212,11 @@ $ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \ #### {% linkable_title GET /api/history/period/<timestamp> %} Returns an array of state changes in the past. Each object contains further details for the entities. -The `` is optional and defaults to 1 day before the time of the request. It determines the beginning of the period. +The `` (`YYYY-MM-DDThh:mm:ssTZD`) is optional and defaults to 1 day before the time of the request. It determines the beginning of the period. You can pass the following optional GET parameters: - `filter_entity_id=` to filter on a single entity - - `end_time=` to choose the end of the period (defaults to 1 day) + - `end_time=` to choose the end of the period in URL encoded format (defaults to 1 day). ```json [ @@ -227,8 +237,8 @@ You can pass the following optional GET parameters: "unit_of_measurement": "\u00b0C" }, "entity_id": "sensor.weather_temperature", - "last_changed": "2016-02-06T22:15:00+00:00"", - "last_updated": "2016-02-06T22:15:00+00:00"", + "last_changed": "2016-02-06T22:15:00+00:00", + "last_updated": "2016-02-06T22:15:00+00:00", "state": "-1.9" }, ] @@ -249,6 +259,12 @@ $ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \ http://localhost:8123/api/history/period/2016-12-29T00:00:00+02:00?filter_entity_id=sensor.temperature ``` +```bash +$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \ + -H "Content-Type: application/json" \ + http://localhost:8123/api/history/period/2016-12-29T00:00:00+02:00?end_time=2016-12-31T00%3A00%3A00%2B02%3A00 +``` + #### {% linkable_title GET /api/states %} Returns an array of state objects. Each state has the following attributes: entity_id, state, last_changed and attributes. diff --git a/source/developers/website.markdown b/source/developers/website.markdown deleted file mode 100644 index 4650540a8d4..00000000000 --- a/source/developers/website.markdown +++ /dev/null @@ -1,128 +0,0 @@ ---- -layout: page -title: "Website home-assistant.io" -description: "home-assistant.io web presence" -date: 2015-06-17 08:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -The website you are reading now is the home of Home Assistant: [https://home-assistant.io](https://home-assistant.io). This is the place where we provide documentation and additional details about Home Assistant for end users and developers. - -home-assistant.io is built using [Jekyll](http://github.com/mojombo/jekyll) and [these available dependencies](https://pages.github.com/versions/). The pages are written in [markdown](http://daringfireball.net/projects/markdown/). To add a page, you don't need to know about HTML. - -You can use the "**Edit this page on GitHub**" link to edit pages without creating a fork. Keep in mind that you can't upload images while working this way. - -For larger changes, we suggest that you clone the website repository. This way, you can review your changes locally. The process for working on the website is no different from working on Home Assistant itself. You work on your change and propose it via a pull request. - -To test your changes locally, you need to install **Ruby** and its dependencies (gems): - -- [Install Ruby](https://www.ruby-lang.org/en/documentation/installation/) if you don't have it already. -- Install `bundler`, a dependency manager for Ruby: `$ gem install bundler` -- In your home-assistant.github.io root directory, run `$ bundle` to install the gems you need. - -Short cut for Fedora: `$ sudo dnf -y install gcc-c++ ruby ruby-devel rubygem-bundler && bundle` - -Then you can work on the documentation: - -- Fork home-assistant.io [git repository](https://github.com/home-assistant/home-assistant.github.io). -- Create/edit/update a page in the directory `source/_components/` for your platform/component. -- Test your changes to home-assistant.io locally: run `rake preview` and navigate to [http://127.0.0.1:4000](http://127.0.0.1:4000) -- Create a Pull Request (PR) against the **next** branch of home-assistant.github.io if your documentation is a new feature, platform, or component. -- Create a Pull Request (PR) against the **current** branch of home-assistant.github.io if you fix stuff, create Cookbook entries, or expand existing documentation. - -

    -It could be necessary that you run `rake generate` prior to `rake preview` for the very first preview. -

    -

    -Site generated by `rake` is only available locally. If you are developing on a headless machine use port forwarding: -`ssh -L 4000:localhost:4000 user_on_headless_machine@ip_of_headless_machine` -

    - -### {% linkable_title Create a page %} - -For a platform page, the fastest way is to make a copy of an existing page and edit it. The [Component overview](/components/) and the [Examples section](/cookbook/) are generated automatically, so there is no need to add a link to those pages. - -If you start from scratch with a page, you need to add a header. Different sections of the documentation may need different headers. - -```text ---- -layout: page -title: "Website home-assistant.io" -description: "home-assistant.io web presence" -date: 2015-06-17 08:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_release: "0.38" ---- - -Content...Written in markdown. - -{% raw %}### {% linkable_title Linkable Header %}{% endraw %} -... -``` - -There are [pre-definied variables](https://jekyllrb.com/docs/variables/) available but usually, it's not necessary to use them when writing documentation. - -A couple of points to remember: - -- Document the needed steps to retrieve API keys or access token for the third party service or device if needed. -- Keep the configuration sample minimal by only adding the `Required` options. Full configuration details with further explanations should go into a seperate section. -- The description of all the configuration variables should contains information about the used defaults. -- If you're adding a new component, for the `ha_release` part of the header, just increment off the current release. If the current release is 0.37, make `ha_release` 0.38. - -### {% linkable_title Embedding Code %} - -You can use the default markdown syntax to generate syntax highlighted code. For inline code wrap your code in \`. For multi-line, syntax wrap your code as shown below. - -```text -{% raw %} ```yaml - sensor: - platform: template - ```{% endraw %} -``` - -Note that you can replace `yaml` next to \`\`\` with the language that is within the block. - -When you're writing code that is to be executed on the terminal, prefix it with `$`. - -### {% linkable_title Templates %} - -For the [configuration templating](/topics/templating/) is [Jinja](http://jinja.pocoo.org/) used. - -If you are using templates then those parts needs to be [escaped](http://stackoverflow.com/a/24102537). Otherwise they will be rendered and appear blank on the website. - -### {% linkable_title HTML %} - -The direct usage of HTML is supported but not recommended. The note boxes are an exception. - -```html -

    - You need to enable telnet on your router. -

    -``` - -### {% linkable_title Redirects %} -If you rename or move an existing platform or component, create the redirect. Add the old location of the page to the header of the new one. - -```test ---- -... -redirect_from: /getting-started/android/ ---- -``` - -### {% linkable_title Images, icons, and logos %} - -The images which are displayed on the pages are stored in various directories according to their purpose. - -| Type | Location | -| :----------- |:----------------------------------------------| -| screenshots | source/images/screenshots | -| logos | source/images/supported_brands | - -Not everything (product, component, etc.) has a logo. To show something for internal parts of Home Assistant we are using the [Material Design Icons](https://materialdesignicons.com/). diff --git a/source/developers/websocket_api.markdown b/source/developers/websocket_api.markdown index 0331e2c6bbc..fb538f7e89b 100644 --- a/source/developers/websocket_api.markdown +++ b/source/developers/websocket_api.markdown @@ -21,11 +21,11 @@ Connect your websocket implementation to `ws://localhost:8123/api/websocket`. 1. Client connects 2. Authentication phase starts - a. If no further authentication necessary for the user: go to 3 - b. Server sends `auth_required` message - c. Client sends `auth` message - d. If `auth` message correct: go to 3. - e. Server sends `auth_invalid`. Go to 6. + - If no further authentication necessary for the user: go to 3 + - Server sends `auth_required` message + - Client sends `auth` message + - If `auth` message correct: go to 3. + - Server sends `auth_invalid`. Go to 6. 3. Send `auth_ok` message 4. Authentication phase ends. 5. Command phase starts. @@ -222,7 +222,7 @@ The server will respond with a result message to indicate that unsubscribing was This will call a service in Home Assistant. Right now there is no return value. The client can listen to `state_changed` events if it is interested in changed entities as a result of a service call. -```json5 +```json { "id": 24, "type": "call_service", diff --git a/source/docs/index.markdown b/source/docs/index.markdown index 4c743e1b121..65a6e87c6b9 100644 --- a/source/docs/index.markdown +++ b/source/docs/index.markdown @@ -12,11 +12,11 @@ footer: true The documentation covers from beginner to advanced topic around the installation, the setup, the configuration, and the usage of Home Assistant.
    - +
    - +
    -
    Hassbian
    +
    Hass.io
    diff --git a/source/faq/index.markdown b/source/faq/index.markdown new file mode 100644 index 00000000000..cdf865abf48 --- /dev/null +++ b/source/faq/index.markdown @@ -0,0 +1,29 @@ +--- +layout: page +title: "FAQ" +description: "Home Assistant's FAQ" +date: 2015-10-08 19:05 +sidebar: true +comments: false +sharing: true +footer: true +regenerate: true +hide_github_edit: true +--- + +This is a community curated list of frequently asked questions (FAQ) about the installation, setup, and usage of Home Assistant. + +{% assign faq = site.faq | sort: 'title' %} +{% assign categories = faq | map: 'ha_category' | uniq | sort %} + +{% for category in categories %} +## {% linkable_title {{ category }} %} + + {% for entry in faq %} + {% if entry.ha_category == category %} +### {% linkable_title {{ entry.title }} %} +{{entry.content}} + {% endif %} + {% endfor %} +{% endfor %} + diff --git a/source/getting-started/automation-2.markdown b/source/getting-started/automation-2.markdown index 71c32304f8d..6e179e7e37d 100644 --- a/source/getting-started/automation-2.markdown +++ b/source/getting-started/automation-2.markdown @@ -17,7 +17,7 @@ We are defining a [trigger](/docs/automation/trigger/) to track the sunset and t ```yaml # Example configuration.yaml entry automation: - alias: Turn on light when sun sets + alias: Turn on the lights when the sun sets initial_state: True hide_entity: False trigger: @@ -27,14 +27,14 @@ automation: service: light.turn_on ``` -Starting with 0.28 automation rules can be reloaded from the [frontend](/components/automation/) and are shown by default. With [`hide_entity:`](/components/automation/) you can control this behaviour. It's very handy if you are working on your rules but when a rule is finished and you don't want to see that rule in your frontend, you can set `hide_entity:` to `True`. To set an automation to be disabled when Home Assistant starts set `initial_state:` to `False`. +Starting with 0.28 automation rules can be reloaded from the [frontend](/components/automation/) and are shown by default. With [`hide_entity:`](/components/automation/) you can control this behavior. It's convenient if you are working on your rules, but when a rule is finished, and you don't want to see that rule in your frontend, you can set `hide_entity:` to `True`. To set an automation to be disabled when Home Assistant starts set `initial_state:` to `False`. -After a few days of running this automation rule, you come to realize that this automation rule is not good enough. It was already dark when the lights went on and the one day you weren't home, the lights turned on anyway. Time for some tweaking. Let's add an offset to the sunset trigger and a [condition](/docs/automation/condition/) to only turn on the lights if anyone is home. +After a few days of running this automation rule, you come to realize that this automation rule is not sufficient. It was already dark when the lights went on, and the one day you weren't home, the lights turned on anyway. Time for some tweaking. Let's add an offset to the sunset trigger and a [condition](/docs/automation/condition/) to only turn on the lights if anyone is home. ```yaml # Example configuration.yaml entry automation: - alias: Turn on light when sun sets + alias: Turn on the lights when the sun sets trigger: platform: sun event: sunset @@ -47,9 +47,9 @@ automation: service: light.turn_on ``` -Now you're happy and all is good. You start to like this automation business and buy some more lights, this time you put them in the bedroom. But what you now realize is that when the sun is setting, the lights in the bedroom are also being turned on! Time to tweak the automation to only turn on the living room lights. +Now you're happy, and all is good. You start to like this automation business and buy some more lights, this time you put them in the bedroom. But what you now realize is that when the sun is setting, the lights in the bedroom are also being turned on! Time to tweak the automation to only turn on the living room lights. -The first thing you do is to look at the entities in the developer tools (second icon) in the app. You see the names of your lights and you write them down: `light.table_lamp`, `light.bedroom`, `light.ceiling`. +The first thing you do is to look at the entities in the developer tools (second icon) in the app. You see the names of your lights, and you write them down: `light.table_lamp`, `light.bedroom`, `light.ceiling`. Instead of hard coding the entity IDs of the lights in the automation rule, we will set up a group. This will allow us to see the living room separate in the app and be able to address it from automation rules. @@ -63,7 +63,7 @@ group: - light.ceiling automation: - alias: Turn on light when sun sets + alias: Turn on the light when the sun sets trigger: platform: sun event: sunset @@ -77,9 +77,9 @@ automation: entity_id: group.living_room ``` -Christmas is coming along and you decide to buy a remote switch to control the Christmas lights from Home Assistant. You can't claim to live in the house of the future if you're still manually turning on your Christmas lights! +Christmas is coming along, and you decide to buy a remote switch to control the Christmas lights from Home Assistant. You can't claim to live in the house of the future if you're still manually turning on your Christmas lights! -We hook the switch up to Home Assistant and grab the entity ID from the developer tools: `switch.christmas_lights`. We will update the group to include the switch and will change our [action](/docs/automation/action/). We are no longer able to call `light.turn_on` because we also want to turn on a switch. This is where `homeassistant.turn_on` comes to the rescue. This service is capable of turning any entity on. +We hook the switch up to Home Assistant and grab the entity ID from the developer tools: `switch.christmas_lights`. We will update the group to include the switch and will change our [action](/docs/automation/action/). We are no longer able to call `light.turn_on` because we also want to turn on a switch. This is where `homeassistant.turn_on` comes to the rescue. This service is capable of turning on any entity. ```yaml # Example configuration.yaml entry @@ -90,7 +90,7 @@ group: - switch.christmas_lights automation: - alias: Turn on light when sun sets + alias: Turn on the lights when the sun sets hide_entity: True trigger: platform: sun @@ -106,4 +106,3 @@ automation: ``` ### [Next step: Presence detection »](/getting-started/presence-detection/) - diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown index 036ef14abd0..360ef56f009 100644 --- a/source/getting-started/configuration.markdown +++ b/source/getting-started/configuration.markdown @@ -13,14 +13,14 @@ When launched for the first time, Home Assistant will write a default configurat The `configuration.yaml` is written in [YAML](/docs/configuration/yaml/), stored in [`.homeassistant`](/docs/configuration/), and can be modified with a text editor. -See the [components overview page](/components/) to find sample entries for your devices and services. For a sensor that is showing [random values](/components/sensor.random/), the entry would looks like the sample below: +See the [components overview page](/components/) to find sample entries for your devices and services. For a sensor that is showing [random values](/components/sensor.random/), the entry would look like the sample below: ```yaml sensor: - platform: random ``` -The [Setting up devices part](/docs/configuration/devices/) contains of the documentation additional details about adding device and services and [customization](/docs/configuration/customizing-devices/). +The [Setting up devices part](/docs/configuration/devices/) contains the additional documentation details about adding devices and services and [customization](/docs/configuration/customizing-devices/). For further details about configuration, please take a look at the [configuration documentation](/docs/configuration/). diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index 35f02859150..eec9fdc2354 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -9,14 +9,14 @@ sharing: true footer: true --- -You will need to install Home Assistant before we can get started. You can install Home Assistant on your computer or you can turn a Raspberry Pi into a dedicated Home Assistant hub. +You will need to install Home Assistant before we can get started. You can install Home Assistant on your computer, or you can turn a Raspberry Pi into a dedicated Home Assistant hub.
    - +
    - +
    -
    Install Hassbian on your Raspberry Pi 3
    +
    Install Hass.io on your Raspberry Pi 3
    +
    -For alternative installation methods please take a look at the [installation documentation](/docs/installation/). +For alternative installation methods, please take a look at the [installation documentation](/docs/installation/). If you run into any issues, please see [the troubleshooting page](/docs/installation/troubleshooting/) or [communication channels](/help/). It contains solutions to many commonly encountered issues. diff --git a/source/getting-started/presence-detection.markdown b/source/getting-started/presence-detection.markdown index 0f1a3d21a48..8fe44b35c7a 100644 --- a/source/getting-started/presence-detection.markdown +++ b/source/getting-started/presence-detection.markdown @@ -13,7 +13,7 @@ footer: true We care about privacy. Collected data is only stored in your instance of Home Assistant.

    -Presence detection detects if people are home, which is the most important input for automation. Knowing who is home or where they are will open a whole range of other automation options: +Presence detection detects if people are home, which is the most valuable input for automation. Knowing who is home or where they are, will open a whole range of other automation options: - Send me a notification when my child arrives at school - Turn on the AC when I leave work @@ -27,7 +27,7 @@ Screenshot of Home Assistant showing a school, work and home zone and two people The device tracker component offers presence detection for Home Assistant. It supports two different methods for presence detection: scan for connected devices on the local network and connect to third party service. -Scanning for connected devices is easy to setup. See the instructions for our [supported routers][routers] or [scan the network using nmap][nmap]. This approach does have its limitations, however: it will only be able to detect if a device is home, and iPhones may show as not home inaccurately (as iPhones disconnect from WiFi if idle). +Scanning for connected devices is easy to setup. See the instructions for our [supported routers][routers] or [scan the network using nmap][nmap]. This approach does have its limitations, however: it will only be able to detect if a device is at home, and iPhones may show as not home inaccurately (as iPhones disconnect from WiFi if idle). Home Assistant currently supports multiple third-party services for presence detection: [OwnTracks][ha-owntracks], [GPSLogger][ha-gpslogger] and [Locative][ha-locative]. OwnTracks is an app that you install on your iPhone or Android phone that allows you to push the location of your device to Home Assistant using an MQTT broker. An MQTT broker is an Internet of Things communication platform that you can [freely host yourself][mqtt-self] or get [a private instance for free in the cloud](/components/mqtt/#run-your-own). @@ -53,4 +53,3 @@ Home Assistant will know the location of your device if you are using OwnTracks. [condition]: /getting-started/automation-condition/#zone-condition ### [Next step: Use Home Assistant »](/getting-started/use/) - diff --git a/source/getting-started/use.markdown b/source/getting-started/use.markdown index 24890c4bf0c..1b6da436ab7 100644 --- a/source/getting-started/use.markdown +++ b/source/getting-started/use.markdown @@ -17,4 +17,4 @@ To reload your configuration, go to **Configuration** in your side panel, and ch

    -Now that you saw a glimpse of what is possible, take a look at the [documentation](/docs/), ask your questions in our [forum](https://community.home-assistant.io/), join us for a [chat](https://gitter.im/home-assistant/home-assistant), or report your [issues](https://github.com/home-assistant/home-assistant/issues). +Now that you saw a glimpse of what is possible, take a look at the [documentation](/docs/), ask your questions in our [forum](https://community.home-assistant.io/), join us for a [chat](https://discord.gg/c5DvZ4e), or report your [issues](https://github.com/home-assistant/home-assistant/issues). diff --git a/source/hassio/addon_config.markdown b/source/hassio/addon_config.markdown deleted file mode 100644 index 382bf4be477..00000000000 --- a/source/hassio/addon_config.markdown +++ /dev/null @@ -1,138 +0,0 @@ ---- -layout: page -title: "Add-On Configuration" -description: "Steps on how-to create an add-on for Hass.io." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Each add-on is stored in a folder. The file structure looks like this: - -``` -addon_name/ - Dockerfile - config.json - run.sh -``` - -## {% linkable_title Add-on script %} - -As with every Docker container, you will need a script to run when the container is started. A user might run many add-ons, so it is encouraged to try to stick to Bash scripts if you're doing simple things. - -When developing your script: - - - `/data` is a volume for persistent storage. - - `/data/options.json` contains the user configuration. You can use `jq` inside your shell script to parse this data. - -```bash -echo '{ "target": "beer" }' | jq -r ".target" -``` - -## {% linkable_title Add-on Docker file %} - -All add-ons are based on Alpine Linux 3.5. Hass.io will automatically substitute the right base image based on the machine architecture. Add `tzdata` if you need run in correct timezone. - -``` -FROM %%BASE_IMAGE%% - -ENV LANG C.UTF-8 - -# Install requirements for add-on -RUN apk add --no-cache tzdata jq - -# Copy data for add-on -COPY run.sh / -RUN chmod a+x /run.sh - -CMD [ "/run.sh" ] -``` - -If you don't use local build on device or our build script, make sure that the Dockerfile have also a set of labels include: -``` -LABEL io.hass.version="VERSION" io.hass.type="addon" io.hass.arch="armhf|aarch64|i386|amd64" -``` - -## {% linkable_title Add-on config %} - -The config for an add-on is stored in `config.json`. - -```json -{ - "name": "xy", - "version": "1.2", - "slug": "folder", - "description": "long descripton", - "arch": ["amd64"], - "url": "website with more information about add-on (ie a forum thread for support)", - "startup": "before", - "boot": "auto", - "ports": { - "123/tcp": 123 - }, - "map": ["config:rw", "ssl"], - "options": {}, - "schema": {}, - "image": "repo/{arch}-my-custom-addon" -} -``` - -| Key | Required | Description | -| --- | -------- | ----------- | -| name | yes | Name of the add-on -| version | yes | Version of the add-on -| slug | yes | Slug of the add-on -| description | yes | Description of the add-on -| arch | no | List of supported arch: `armhf`, `aarch64`, `amd64`, `i386`. Default all. -| url | no | Homepage of the addon. Here you can explain the add-ons and options. -| startup | yes | `initialize` will start addon on setup of hassio. `before` homeassistant will start. `after` homeassistant will start or `once` for application they don't run as deamon. -| boot | yes | `auto` by system and manual or only `manual` -| ports | no | Network ports to expose from the container. Format is `"container-port/type": host-port`. -| host_network | no | If that is True, the add-on run on host network. -| devices | no | Device list to map into add-on. Format is: `::`. i.e. `/dev/ttyAMA0:/dev/ttyAMA0:rwm` -| privileged | no | Privilege for access to hardware/system. Available access: `NET_ADMIN` -| map | no | List of maps for additional hass.io folders. Possible values: `config`, `ssl`, `addons`, `backup`, `share`. Default it map it `ro`, you can change that if you add a ":rw" at the end of name. -| environment | no | A dict of environment variable to run add-on. -| options | yes | Default options value of the add-on -| schema | yes | Schema for options value of the add-on -| image | no | For use dockerhub. -| tmpfs | no | Mount a tmpfs file system in `/tmpfs`. Valide format for this option is : `size=XXXu,uid=N,rw`. Size is mandatory, valid units (`u`) are `k`, `m` and `g` and `XXX` has to be replaced by a number. `uid=N` (with `N` the uid number) and `rw` are optional. - -### {% linkable_title Options / Schema %} - -The `options` dict contains all available options and their default value. Set the default value to `null` if the value is required to be given by the user before the add-on can start. Only non-nested arrays are supported. - -```json -{ - "message": "custom things", - "logins": [ - { "username": "beer", "password": "123456" }, - { "username": "cheep", "password": "654321" } - ], - "random": ["haha", "hihi", "huhu", "hghg"], - "link": "http://blebla.com/" -} -``` - -The `schema` looks like `options` but describes how we should validate the user input. For example: - -```json -{ - "message": "str", - "logins": [ - { "username": "str", "password": "str" } - ], - "random": ["str"], - "link": "url" -} -``` - -We support: -- str -- bool -- int -- float -- email -- url diff --git a/source/hassio/addon_development.markdown b/source/hassio/addon_development.markdown deleted file mode 100644 index dc0c3eda648..00000000000 --- a/source/hassio/addon_development.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Developing an add-on" -description: "Steps on how-to create an add-on for Hass.io." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Add-ons for Hass.io allows the user to extend the functionality around Home Assistant. This can be running an application that Home Assistant can integrate with (like an MQTT broker) or to share the configuration via Samba for easy editing from other computers. Add-ons can be configured via the Hass.io panel in Home Assistant. - -Under the hood, add-ons are Docker images published in [Docker Hub](https://hub.docker.com/). Developers can create [GitHub](https://github.com) repositories that contain multiple references to add-ons for easy sharing with the community. diff --git a/source/hassio/debugging.markdown b/source/hassio/debugging.markdown deleted file mode 100644 index b7f942f4d59..00000000000 --- a/source/hassio/debugging.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "Debugging Hass.io" -description: "Tips and tricks for when things go wrong." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -footer: true ---- - -The following debug tips and tricks are for people who are running the Hass.io image and are working on the base image. If you use the generic Linux installer script, you should be able to access your host and logs as per your host. - -## {% linkable_title SSH access to the host %} - -Create an `authorized_keys` file in the root of your SD card with your public key. Once the device is booted, you can access your device as root over SSH on port 22222. - -Windows instructions how to generate and use private/public keys with Putty are [here][windows-keys]. Instead of the droplet instructions, add the public key as per above instructions. - -## {% linkable_title Checking the logs %} - -```bash -# Logs from the supervisor service on the Host OS -journalctl -f -u resin-supervisor.service - -# Hass.io supervisor logs -docker logs hassio_supervisor - -# Home Assistant logs -docker logs homeassistant -``` - -[windows-keys]: https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-putty-on-digitalocean-droplets-windows-users diff --git a/source/hassio/external_storage.markdown b/source/hassio/external_storage.markdown index 43a6bba3a6f..a69b7b8a783 100644 --- a/source/hassio/external_storage.markdown +++ b/source/hassio/external_storage.markdown @@ -12,12 +12,11 @@ footer: true ### {% linkable_title ResinOS / Generic %} -Map the usb drive into add-on with `devices` options. If you need it on multiple add-ons you can use the `/share` folder which is accessable from multiple add-ons. -It is also possible to create a add-on that only mount stuff to `share`. +Map the USB drive into add-on with `devices` options. If you need it on multiple add-ons, you can use the `/share` folder which is accessible from various add-ons. +It is also possible to create an add-on that only mounts stuff to `share`. -You can format the usb device with multiple volumes and map it to the specific add-on. +You can format the USB device with multiple volumes and map it to a specific add-on. ### {% linkable_title Generic %} -The `share` is default on `/usr/share/hassio/share` so you can mount your volumes into this folder. - +The `share` defaults to `/usr/share/hassio/share` so you can mount your volumes into this folder. diff --git a/source/hassio/index.markdown b/source/hassio/index.markdown index 5265840726d..35eb09a523b 100644 --- a/source/hassio/index.markdown +++ b/source/hassio/index.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Hass.io" -description: "Manage your Home Assistant and custom addons over Samba." +description: "Manage your Home Assistant and custom addons." date: 2017-04-30 13:28 sidebar: true comments: false @@ -9,4 +9,47 @@ sharing: true footer: true --- -Hass.io turns your Raspberry Pi (or other device) into the ultimate Home Automation hub. It takes away all the hassle of installing Home Assistant and related applications and keeping them up to date. Updates to the operating system, Home Assistant, and any add-ons can be done via the Home Assistant UI with a single click. +Hass.io turns your Raspberry Pi (or another device) into the ultimate home automation hub powered by Home Assistant. With Hass.io you can focus on integrating your devices and writing automations. + +[Go to the installation instructions »][install] + +The advantages of using Hass.io: + + - Free and open source + - Optimized for embedded devices like Raspberry Pi + - 100% local home automation + - Easy installation and updates (powered by [ResinOS] and [Docker]) + - Management user interface integrated into Home Assistant + - Easily create and restore full backups of your whole configuration. + - Easily install many popular add-ons including [Google Assistant], encryption via [Let's Encrypt] and dynamic DNS via [Duck DNS].

    [Browse available add-ons »][all]

    + - Active community that is helpful and sharing add-ons including AppDaemon, Homebridge and InfluxDB.

    [Browse the forums »][forums]
    [Join the Hass.io chat »][chat]
    [Browse community add-on repositories »][comm-add-ons]

    + +
    + +
    + +### {% linkable_title Upgrading %} + +Hass.io users can update Home Assistant via the 'Hass.io' page in the UI. However please note that Home Assistant updates take time to roll into the Hass.io builds. Therefore there is often a slight delay between the availability of a Home Assistant update and an update being available in Hass.io, be patient. When a Hass.io update is available it will be shown as available on the ‘Hass.io' page in your UI. + +

    + +Hass.io dashboard with upgrade notification (under the hamburger menu -> Hass.io) +

    + +

    + +Hass.io upgrade process from the SSH command line +

    + +[Google Assistant]: /addons/google_assistant/ +[Snips.ai]: /addons/snips/ +[Let's Encrypt]: /addons/lets_encrypt/ +[Duck DNS]: /addons/duckdns/ +[forums]: https://community.home-assistant.io/c/hass-io +[comm-add-ons]: https://community.home-assistant.io/tags/hassio-repository +[all]: /addons/ +[chat]: https://discord.gg/K3UVxJd +[ResinOS]: https://resinos.io/ +[Docker]: https://www.docker.com/ +[install]: /hassio/installation/ diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index 43c4632c250..2211ba4381f 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -9,31 +9,43 @@ sharing: true footer: true --- -Hass.io images are available for all available Raspberry Pi and intel nuc platforms. +Hass.io images are available for all available Raspberry Pi and Intel NUC platforms. -- Download the appropriate image for your Raspberry Pi / intel nuc: +- Download the appropriate image for your Raspberry Pi / Intel NUC: - [Raspberry Pi / Zero][pi1] - [Raspberry Pi 2][pi2] - [Raspberry Pi 3][pi3] - - [Intel Nuc][nuc] + - [Intel NUC][nuc] - Flash the downloaded image to an SD card using [Etcher]. -- Optional - Setup the WiFi or static ip: On the SD-card, edit the `system-connections/resin-sample` file and follow the [ResinOS howto][resinos-network]. -- Insert SD card to Raspberry Pi and turn it on. On first boot, it downloads the latest version of Home Assistant which can take some time. +- Optional - Setup the WiFi or static IP: On the SD-card, edit the `system-connections/resin-sample` file and follow the [ResinOS howto][resinos-network]. +- Insert SD card to Raspberry Pi and turn it on. On first boot, it downloads the latest version of Home Assistant which takes ~20 minutes (slower/faster depending on the platform). + +

    +Please remember to ensure you're using an [appropriate power supply](https://www.raspberrypi.org/help/faqs/#powerReqs) with your Pi. Mobile chargers may not be suitable, since some are designed to only provide the full power with that manufacturer's handsets. +

    + + + - You will be able to reach your installation at [http://hassio.local:8123][local]. +- Enable either the [Samba add-on][samba] or the [SSH add-on][ssh] to manage your configuration in `/config/` (From the UI choose **Hass.io** which is located in the sidebar).

    If you copy over your existing Home Assistant configuration, make sure to enable the Hass.io panel by adding either `discovery:` or `hassio:` to your configuration.

    -### {% linkable_title Alternative: install on generic Linux server %} +## {% linkable_title Alternative: install on generic Linux server %} For advanced users, it is also possible to try Hass.io on your Linux server or inside a VM. To do so, [follow these instructions][linux]. +

    When you use this installation method, some add-ons will not be available and the documentation might not work for your installation.

    + [Etcher]: https://etcher.io/ [resinos-network]: https://docs.resin.io/deployment/network/2.0.0/ -[pi1]: https://github.com/home-assistant/hassio-build/releases/download/0.8/resinos-hassio-0.8-raspberrypi.img.bz2 -[pi2]: https://github.com/home-assistant/hassio-build/releases/download/0.8/resinos-hassio-0.8-raspberrypi2.img.bz2 -[pi3]: https://github.com/home-assistant/hassio-build/releases/download/0.8/resinos-hassio-0.8-raspberrypi3.img.bz2 -[nuc]: https://github.com/home-assistant/hassio-build/releases/download/0.8/resinos-hassio-0.8-intel-nuc.img.bz2 +[pi1]: https://github.com/home-assistant/hassio-build/releases/download/1.1/resinos-hassio-1.1-raspberrypi.img.bz2 +[pi2]: https://github.com/home-assistant/hassio-build/releases/download/1.1/resinos-hassio-1.1-raspberrypi2.img.bz2 +[pi3]: https://github.com/home-assistant/hassio-build/releases/download/1.1/resinos-hassio-1.1-raspberrypi3.img.bz2 +[nuc]: https://github.com/home-assistant/hassio-build/releases/download/1.1/resinos-hassio-1.1-intel-nuc.img.bz2 [linux]: https://github.com/home-assistant/hassio-build/tree/master/install#install-hassio [local]: http://hassio.local:8123 +[samba]: /addons/samba/ +[ssh]: /addons/ssh/ diff --git a/source/hassio/installing_third_party_addons.markdown b/source/hassio/installing_third_party_addons.markdown index 8db74287763..0bf6cb3166c 100644 --- a/source/hassio/installing_third_party_addons.markdown +++ b/source/hassio/installing_third_party_addons.markdown @@ -9,7 +9,11 @@ sharing: true footer: true --- -Hass.io allows anyone to create add-on repositories to easily share their add-ons for Hass.io. To try this locally, you can use our example add-on repository at `https://github.com/home-assistant/hassio-addons-example`. +Hass.io allows anyone to create add-on repositories to share their add-ons for Hass.io easily. To try this locally, you can use our example add-on repository at + +```text +https://github.com/home-assistant/hassio-addons-example +```

    Home Assistant cannot guarantee the quality or security of third party add-ons. Use at your own risk. @@ -22,9 +26,9 @@ From the Hass.io main panel open the add-on store.

    -Add the urls of repositories (one per line) and then press "Save". A new card for the repository will appear. +Add the URLs of repositories (one per line) and then press "Save". A new card for the repository will appear.

    ### {% linkable_title Help: Repository is not showing up %} -If you have added a repository but it's not showing up, it means that the repository contains invalid configuration. Go to the Hass.io panel -> Supervisor card -> View logs and scroll to the bottom. It should tell you what went wrong. Report this information to the repository author. +If you have added a repository, but it's not showing up, it means that the repository contains invalid configuration. Go to the Hass.io panel -> Three dot menu -> Advanced Settings -> Supervisor card -> View logs and scroll to the bottom. It should tell you what went wrong. Report this information to the repository author. diff --git a/source/hassio/run_local.markdown b/source/hassio/run_local.markdown index 2ca379ae32b..6dbd4781bf0 100644 --- a/source/hassio/run_local.markdown +++ b/source/hassio/run_local.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Run local script" +title: "Run local scripts" description: "Instructions on how-to run local script for Home Assistant." date: 2017-04-30 13:28 sidebar: true @@ -9,23 +9,30 @@ sharing: true footer: true --- -On a normal Home Assistant installation you have access to the base machine and can install or add scripts that you can call with a `command_line` sensor/switch. Since Hass.IO uses Docker, you can not use this old way to perform local stuff. On its face, it looks quite restrictive, but it makes the whole system stable. +Hass.io is a managed environment, which means that you can't install applications that can be embedded into Home Assistant using the `command_line` sensor/switch. -However, if you need to run a script to read data for a sensor or send commands to other devices on Hass.IO, you can do that with a add-on or on inside the Home Assistant container with a custom component. Here is one way to accomplish that using an add-on. For custom component, look at the [devoloper site][custom-component] and also read the [add-ons tutorial][addons-tutorial]. Now you can get started with your custom component in the right way. +There are three options if you need to run a script to read data from a sensor or send commands to other devices on Hass.io. -First you need install a MQTT broker. You can use our [MQTT broker add-on][mqtt-addon]. Make sure you use logins and disable anonymous access if you want to secure the system. We provide no Hass.IO way to exchange data, that will be not realy good for security and is also to slow to exchange data between containers or stop and go stuff. That is the reason why we use a mqtt broker for it. +The first option is to write a custom component for Home Assistant. Using Python, you can communicate with your device. For more information about developing a custom component, take a look at the [developer documentation][custom-component]. + +The second option is to use STDIN inside add-on and use the service `hassio.addon_stdin` to send data. More about this options look into [developer documentation][communication] for internal add-on communication. There is also describe how do you can easy access to Home-Assistant Rest API. + +The third option is to make a local add-on for Hass.io that sends the data to Home Assistant via MQTT. Before we dive into this, read up on [Hass.io add-on development][addons-tutorial] first. + +For security and speed, Hass.io does not provide a way for containers to communicate directly. So the first step is to set up a communication channel. We're going to use MQTT for this using the [MQTT broker add-on][mqtt-addon]. ### {% linkable_title Sensors %} -Short story of that caption: We loop in our script to fetch data and push it to MQTT and wait until next process is ready. Here is a basic example and structure for that process. +We loop in our script to fetch data and push it to MQTT and wait until the next process is ready. Here is a basic example and structure for that process. Our Dockerfile need to install: ``` -RUN apk --no-cache add tzdata jq mosquitto-clients +RUN apk --no-cache add jq mosquitto-clients ``` Now we can process it with `run.sh`: + ```bash #!/bin/bash set -e @@ -52,16 +59,16 @@ do sleep "$WAIT_TIME" done - ``` ### {% linkable_title Commands %} -Short story of that caption: We wait for incoming data from MQTT broker. We can also use an `input_boolean` that triggers an automation to publish a custom command to MQTT topic that can process multiple things in one add-on. + +We wait for incoming data from the MQTT broker. We can also use an `input_boolean` that triggers an automation to publish a custom command to MQTT topic that can process multiple things in one add-on. Our Dockerfile need to install: ``` -RUN apk --no-cache add tzdata jq mosquitto-clients +RUN apk --no-cache add jq mosquitto-clients ``` Now we can process it with `run.sh`: @@ -88,10 +95,9 @@ do fi done < <(mosquitto_sub -h "$MQTT_SERVER" -p "$MQTT_PORT" -u "$USER" -P "$PASSWORD" -t "$TOPIC" -q 1) - ``` - [MQTT-addon]: /addons/mosquitto/ [custom-component]: /developers/component_loading/ -[addons-tutorial]: /hassio/addon_tutorial/ +[addons-tutorial]: /developers/hassio/addon_tutorial/ +[communication]: /developers/hassio/addon_communication/ diff --git a/source/hassio/zwave.markdown b/source/hassio/zwave.markdown new file mode 100644 index 00000000000..119a2928f56 --- /dev/null +++ b/source/hassio/zwave.markdown @@ -0,0 +1,46 @@ +--- +layout: page +title: "Z-Wave" +description: "Instructions on how-to enable Z-Wave with Hass.io." +date: 2017-04-30 13:28 +sidebar: true +comments: false +sharing: true +footer: true +--- + +To enable Z-Wave, plug your Z-Wave USB stick into your Raspberry Pi 3 and add the following to your `configuration.yaml`: + +```yaml +zwave: + usb_path: /dev/ttyACM0 +``` + +If you need GPIO on Raspberry Pi 3 for your Z-Wave module, add the following line into `config.txt`: + +``` +dtoverlay=pi3-miniuart-bt +``` + +For some devices the `/dev/ttyAMA0` device is not detected by udev and is therefore not mapped by Docker. To explicitly set this device for mapping to Home-Assistant, execute the following command using the ssh add-on: + +```bash +$ curl -d '{"devices": ["ttyAMA0"]}' http://hassio/homeassistant/options +``` + +After that, you need to change `usb_path` to `/dev/ttyAMA0`. + +### HUSBZB-1: + +```yaml +zwave: + usb_path: /dev/ttyUSB0 + +zha: + usb_path: /dev/ttyUSB1 + database_path: /config/zigbee.db +``` + +## {% linkable_title Further reading %} + +For more information on using Z-Wave, see the [main documentation](/docs/z-wave/). diff --git a/source/help/index.markdown b/source/help/index.markdown index ac07445b152..aecf32601f7 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -13,11 +13,11 @@ There are various ways to get in touch with the Home Assistant community. It doe ### {% linkable_title Communication channels %} - - [Forum](https://community.home-assistant.io/) - - [Gitter Chatroom](https://gitter.im/home-assistant/home-assistant) for general Home Assistant discussions and questions. - - Follow us on [Twitter](https://twitter.com/home_assistant), use [@home_assistant](https://twitter.com/home_assistant) - - Join the [Google+ community](https://plus.google.com/u/0/b/110560654828510104551/communities/106562234893511202708) - - Join the [Reddit subreddit](https://reddit.com/r/homeassistant) in [/r/homeassistant](https://reddit.com/r/homeassistant) + - [Forum][forum] + - [Discord Chat Server][discord] for general Home Assistant discussions and questions. + - Follow us on [Twitter][twitter], use [@home_assistant][twitter] + - Join the [Google+ community][google-plus] + - Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] ### {% linkable_title Bugs, Feature requests, and alike %} @@ -29,7 +29,10 @@ Have you found an issue in your Home Assistant installation? Please report it. R ### {% linkable_title Videos, talks, workshops and alike %} -- [Home Automation with Home Assistant](https://github.com/jjmontesl/talk-hass-pydaygalicia2017) at [PyDay Galicia 2017](https://pyday2017.python-vigo.es/gl/)- June 2017 +- [Home Assistant](https://github.com/home-assistant/home-assistant-assets/tree/master/english/2017-qecampX) at QECampX 2017 - October 2017 +- [Open Source Heimautomation mit Home Assistant](https://github.com/home-assistant/home-assistant-assets/tree/master/german/2017-maker-faire-zurich) at [Mini Maker Faire Zurich 2017](https://www.makerfairezurich.ch/en/) - September 2017 +- [Why we can't have the Internet of Nice Things: A home automation primer](https://www.openwest.org/custom/description.php?id=92) at [OpenWest 2017](https://www.openwest.org) - July 2017 +- [Home Automation with Home Assistant](https://github.com/jjmontesl/talk-hass-pydaygalicia2017) at [PyDay Galicia 2017](https://pyday2017.python-vigo.es/gl/) - June 2017 - [Home Automation with Python](https://www.youtube.com/watch?v=KNFZSSCPUyM) at [GLT 2017](https://glt17.linuxtage.at) - April 2017 - [Home Assistant workshop](https://github.com/home-assistant/home-assistant-assets/tree/master/german/2017-clt-workshop) at [CLT 2017](https://chemnitzer.linux-tage.de/2017/de/) - March 2017 - [Home Assistant - Erweiterungen (Platforms/Components)](https://github.com/home-assistant/home-assistant-assets/tree/master/german/2016-puzzle) at [Puzzle ITC](https://www.puzzle.ch/de/) - December 2016 @@ -43,7 +46,18 @@ Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)? ### {% linkable_title Media coverage %} +Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/). + +- [Using Home Assistant the ARTIK Cloud](https://developer.artik.io/documentation/developer-guide/wireless-iot/hass.html) - September 2017 +- [Control home automation hardware with Home Assistant](http://www.linux-magazine.com/Issues/2017/203/Home-Assistant) - August 2017 +- [Smart Home Home Assistant KNX Alexa Sprachsteuerung](http://onesmarthome.de/smart-home-home-assistant-knx-alexa-sprachsteuerung/) - August 2017 +- [Episode #122: Home Assistant: Pythonic Home Automation](https://talkpython.fm/episodes/show/122/home-assistant-pythonic-home-automation) - July 2017 +- [Smart Home Home Assistant Konfiguration mit YAML](http://onesmarthome.de/smart-home-home-assistant-konfiguration/) - July 2017 +- [Why can't we have the Internet of Nice Things?](https://opensource.com/article/17/7/home-automation-primer) - July 2017 +- [Smart Home Home Assistant Raspberry Pi Installation Hassbian](http://onesmarthome.de/smart-home-home-assistant-raspberry-pi-installation-hassbian/) - July 2017 +- [Integrating Snips with Home Assistant](https://medium.com/snips-ai/integrating-snips-with-home-assistant-314723645c77) - June 2017 - [Jupiter Broadcasting - No Privacy Compromise Home Automation](http://www.jupiterbroadcasting.com/115566/no-privacy-compromise-home-automation/) - June 2017 +- [Monitor IoT devices with Home Assistant and Datadog](https://www.datadoghq.com/blog/monitor-home-assistant/) - June 2017 - [Castálio Podcast - Episódio 102: Marcelo Mello - Red Hat e Automação Residencial com Home Assistant](https://youtu.be/hZq8ucpzjCs) - May 2017 - [Paulus Schoutsen and Home Assistant - Episode 8](http://codepop.com/open-sourcecraft/episodes/paulus-schoutsen/) - March 2017 - [Zammad, Home Assistant und Freifunk - are the winner of the Thomas-Krenn-Awards 2017](https://www.thomas-krenn.com/de/tkmag/allgemein/zammad-home-assistant-und-freifunk-das-sind-die-gewinner-des-thomas-krenn-awards-2017/) - March 2017 @@ -51,6 +65,7 @@ Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)? - [A Look at HASSbian: Raspberry Pi for Home Automation](http://www.piboards.com/2017/03/07/a-look-at-hassbian-raspberry-pi-for-home-automation/)- March 2017 - [Home Assistant with Paulus Schoutsen - Episode 94](https://www.podcastinit.com/episode-94-home-assistant-with-paulus-schoutsen/) - January 2017 - [Episode #11](https://pythonbytes.fm/episodes/show/11/django-2.0-is-dropping-python-2-entirely-pipenv-for-profile-functionality-and-pythonic-home-automation) at minute 15:20 by [Python Bytes](https://pythonbytes.fm/) - January 2017 +- [Now you can hide your smart home on the darknet](https://www.wired.com/2016/07/now-can-hide-smart-home-darknet/) - July 2016 - [Home Assistant: The Python Approach to Home Automation](https://www.linux.com/news/home-assistant-python-approach-home-automation-video) - June 2016 - [Secure home automation, without clouds or dedicated hubs](http://linuxgizmos.com/secure-home-automation-without-clouds-or-dedicated-hubs/) - June 2016 - [Weekend Project: Setting up Home Assistant on your PC or Mac](http://www.automatedhome.co.uk/software/weekend-project-setting-up-home-assistant-on-your-pc-or-mac.html) by [automated home](http://www.automatedhome.co.uk/) - April 2016 @@ -58,10 +73,12 @@ Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)? - [5 open source home automation tools](https://opensource.com/life/16/3/5-open-source-home-automation-tools) by [opensource.com](https://opensource.com) - March 2016 - [Home Assistant – Open Source Python Home Automation Platform](http://www.automatedhome.co.uk/new-products/home-assistant-open-source-python-home-automation-platform.html) - January 2015 -### {% linkable_title Site Search %} - -There is not currently a site search for Home-Assistant.io but it's in the works. For now, you can use this [Google link](https://cse.google.com/cse/publicurl?cx=005053695590750500199:dtrfi8yigbi) which will narrow your search to this specific site. - ### {% linkable_title Roadmap %} There is no explicit roadmap available but the public [tracker](https://www.pivotaltracker.com/n/projects/1250084) can give you some insight into what is going on. + +[forum]: https://community.home-assistant.io/ +[twitter]: https://twitter.com/home_assistant +[google-plus]: https://plus.google.com/u/0/b/110560654828510104551/communities/106562234893511202708 +[reddit]: https://reddit.com/r/homeassistant +[discord]: https://discord.gg/c5DvZ4e diff --git a/source/help/talking-points.markdown b/source/help/talking-points.markdown index 4c1a952f0c9..24f587f3928 100644 --- a/source/help/talking-points.markdown +++ b/source/help/talking-points.markdown @@ -12,9 +12,9 @@ footer: true People are starting to present Home Assistant at meetings and get-togethers. Below you find a couple of bullet points for your presentation. - [Numbers, numbers, numbers](/help/trivia/) and other details -- Over 600 implementations +- Over 750 implementations - Not depending on cloud services. We like to keep your privacy private -- Control all your devices from a single, mobile-friendly, interface +- Control all your devices from a single, mobile-friendly interface - Written in Python3 with 94% test coverage - Active and helpful community diff --git a/source/help/trivia.markdown b/source/help/trivia.markdown index 5b6f776c9da..64089ecf5fd 100644 --- a/source/help/trivia.markdown +++ b/source/help/trivia.markdown @@ -13,7 +13,7 @@ This page contains only irrelevant and unhelpful information about Home Assistan ### {% linkable_title Name %} -Isn't it obvious? Home Assistant is the good soul that is assisting you in your home. It's also common to refer to Home Assistant simply as HA or hass (not to be confused with the German word "Hass", it's more like the abbreviation of **H**ome **A**ssistant **S**erver **S**ervice). +Isn't it obvious? Home Assistant is the good soul that is assisting you in your home. It's common to refer to Home Assistant simply as HA or `hass` (not to be confused with the German word "Hass", it's more like the abbreviation of **H**ome **A**ssistant **S**erver **S**ervice). [`hass`](/docs/tools/hass/) is also the name of the command-line part. ### {% linkable_title Website %} @@ -33,7 +33,7 @@ This sections just contains some random numbers of the Home Assistant eco-system | Description | 2015 | 2016 | |---|---| -| [Gitter.io](https://gitter.im/home-assistant/home-assistant) | 334 | 2367 | +| [Gitter.io](https://discord.gg/c5DvZ4e) | 334 | 2367 | | [Forum posts](https://community.home-assistant.io/) | 352 | 33004 | | [Forum topics](https://community.home-assistant.io/) | 83 | 4863 | | [Forum members](https://community.home-assistant.io/) | 92 | 3931 | @@ -43,7 +43,7 @@ This sections just contains some random numbers of the Home Assistant eco-system ### {% linkable_title Commit per year %} -The numbers below only covers the [main git repository](https://github.com/home-assistant/home-assistant/) and doesn't take the helpers ([home-assistant.io](https://github.com/home-assistant/home-assistant.io), [home-assistant-polymer](https://github.com/home-assistant/home-assistant-polymer), and [home-assistant-js](https://github.com/home-assistant/home-assistant-js)) into account. +The numbers below only covers the [main git repository](https://github.com/home-assistant/home-assistant/) and doesn't take the helpers ([home-assistant.io](https://github.com/home-assistant/home-assistant.io), [home-assistant-polymer](https://github.com/home-assistant/home-assistant-polymer), etc.) into account. ```bash 2013: 147 diff --git a/source/images/architecture/intents.png b/source/images/architecture/intents.png new file mode 100644 index 00000000000..555cb7be8c6 Binary files /dev/null and b/source/images/architecture/intents.png differ diff --git a/source/images/blog/2017-06-0.47/components.png b/source/images/blog/2017-06-0.47/components.png new file mode 100644 index 00000000000..779ab195340 Binary files /dev/null and b/source/images/blog/2017-06-0.47/components.png differ diff --git a/source/images/blog/2017-06-senic-covi/covi-kickstarter-screenshot.png b/source/images/blog/2017-06-senic-covi/covi-kickstarter-screenshot.png new file mode 100644 index 00000000000..d9bc49f8c24 Binary files /dev/null and b/source/images/blog/2017-06-senic-covi/covi-kickstarter-screenshot.png differ diff --git a/source/images/blog/2017-06-senic-covi/email-senic.png b/source/images/blog/2017-06-senic-covi/email-senic.png new file mode 100644 index 00000000000..4636437ce3e Binary files /dev/null and b/source/images/blog/2017-06-senic-covi/email-senic.png differ diff --git a/source/images/blog/2017-06-senic-covi/senic-docs-screenshot.png b/source/images/blog/2017-06-senic-covi/senic-docs-screenshot.png new file mode 100644 index 00000000000..ad524b4061d Binary files /dev/null and b/source/images/blog/2017-06-senic-covi/senic-docs-screenshot.png differ diff --git a/source/images/blog/2017-07-0.48/components.png b/source/images/blog/2017-07-0.48/components.png new file mode 100644 index 00000000000..d29afcfe63d Binary files /dev/null and b/source/images/blog/2017-07-0.48/components.png differ diff --git a/source/images/blog/2017-07-0.49/components.png b/source/images/blog/2017-07-0.49/components.png new file mode 100644 index 00000000000..86629d6dff4 Binary files /dev/null and b/source/images/blog/2017-07-0.49/components.png differ diff --git a/source/images/blog/2017-07-0.49/green-theme.png b/source/images/blog/2017-07-0.49/green-theme.png new file mode 100644 index 00000000000..d9672ab9558 Binary files /dev/null and b/source/images/blog/2017-07-0.49/green-theme.png differ diff --git a/source/images/blog/2017-07-0.50/components.png b/source/images/blog/2017-07-0.50/components.png new file mode 100644 index 00000000000..6d032df96fa Binary files /dev/null and b/source/images/blog/2017-07-0.50/components.png differ diff --git a/source/images/blog/2017-07-talk-python/logo.png b/source/images/blog/2017-07-talk-python/logo.png new file mode 100644 index 00000000000..fcb79ab03cc Binary files /dev/null and b/source/images/blog/2017-07-talk-python/logo.png differ diff --git a/source/images/blog/2017-08-0.51/components.png b/source/images/blog/2017-08-0.51/components.png new file mode 100644 index 00000000000..9b6931e29e2 Binary files /dev/null and b/source/images/blog/2017-08-0.51/components.png differ diff --git a/source/images/blog/2017-08-0.52/components.png b/source/images/blog/2017-08-0.52/components.png new file mode 100644 index 00000000000..4143b7119c4 Binary files /dev/null and b/source/images/blog/2017-08-0.52/components.png differ diff --git a/source/images/blog/2017-09-0.53/components.png b/source/images/blog/2017-09-0.53/components.png new file mode 100644 index 00000000000..6cbcb055f2e Binary files /dev/null and b/source/images/blog/2017-09-0.53/components.png differ diff --git a/source/images/blog/2017-09-0.53/customize-editor.png b/source/images/blog/2017-09-0.53/customize-editor.png new file mode 100644 index 00000000000..066ff547bdd Binary files /dev/null and b/source/images/blog/2017-09-0.53/customize-editor.png differ diff --git a/source/images/blog/2017-09-0.54/components.png b/source/images/blog/2017-09-0.54/components.png new file mode 100644 index 00000000000..4e217aa3ded Binary files /dev/null and b/source/images/blog/2017-09-0.54/components.png differ diff --git a/source/images/blog/2017-09-hacktoberfest/hacktoberfest-2017.png b/source/images/blog/2017-09-hacktoberfest/hacktoberfest-2017.png new file mode 100644 index 00000000000..e7863e14b0f Binary files /dev/null and b/source/images/blog/2017-09-hacktoberfest/hacktoberfest-2017.png differ diff --git a/source/images/blog/2017-10-0.55/components.png b/source/images/blog/2017-10-0.55/components.png new file mode 100644 index 00000000000..e358afa6bd8 Binary files /dev/null and b/source/images/blog/2017-10-0.55/components.png differ diff --git a/source/images/blog/2017-10-0.56/components.png b/source/images/blog/2017-10-0.56/components.png new file mode 100644 index 00000000000..c84f98f9223 Binary files /dev/null and b/source/images/blog/2017-10-0.56/components.png differ diff --git a/source/images/blog/2017-10-analog-sensor/analog-sensor.png b/source/images/blog/2017-10-analog-sensor/analog-sensor.png new file mode 100644 index 00000000000..dd08809aae9 Binary files /dev/null and b/source/images/blog/2017-10-analog-sensor/analog-sensor.png differ diff --git a/source/images/blog/2017-10-interactive-demo/demo-platforms.png b/source/images/blog/2017-10-interactive-demo/demo-platforms.png new file mode 100644 index 00000000000..eb984c8a5f5 Binary files /dev/null and b/source/images/blog/2017-10-interactive-demo/demo-platforms.png differ diff --git a/source/images/blog/2017-10-interactive-demo/demo-random.png b/source/images/blog/2017-10-interactive-demo/demo-random.png new file mode 100644 index 00000000000..1ef1f82c526 Binary files /dev/null and b/source/images/blog/2017-10-interactive-demo/demo-random.png differ diff --git a/source/images/blog/2017-10-interactive-demo/online-demo.png b/source/images/blog/2017-10-interactive-demo/online-demo.png new file mode 100644 index 00000000000..08e3778399a Binary files /dev/null and b/source/images/blog/2017-10-interactive-demo/online-demo.png differ diff --git a/source/images/blog/2017-10-template/social.png b/source/images/blog/2017-10-template/social.png new file mode 100644 index 00000000000..7e2c58b0015 Binary files /dev/null and b/source/images/blog/2017-10-template/social.png differ diff --git a/source/images/blog/2017-11-0.57/components.png b/source/images/blog/2017-11-0.57/components.png new file mode 100644 index 00000000000..8a0c383f468 Binary files /dev/null and b/source/images/blog/2017-11-0.57/components.png differ diff --git a/source/images/blog/2017-11-0.57/languages.png b/source/images/blog/2017-11-0.57/languages.png new file mode 100644 index 00000000000..c53cce787b6 Binary files /dev/null and b/source/images/blog/2017-11-0.57/languages.png differ diff --git a/source/images/blog/2017-11-0.57/pumpkin.jpeg b/source/images/blog/2017-11-0.57/pumpkin.jpeg new file mode 100644 index 00000000000..3c2be6d4c2b Binary files /dev/null and b/source/images/blog/2017-11-0.57/pumpkin.jpeg differ diff --git a/source/images/blog/2017-11-ssh/social.png b/source/images/blog/2017-11-ssh/social.png new file mode 100644 index 00000000000..3fd6e8bc20d Binary files /dev/null and b/source/images/blog/2017-11-ssh/social.png differ diff --git a/source/images/components/apple_tv/auth_pin.jpg b/source/images/components/apple_tv/auth_pin.jpg new file mode 100644 index 00000000000..b87b2a7d6ca Binary files /dev/null and b/source/images/components/apple_tv/auth_pin.jpg differ diff --git a/source/images/components/apple_tv/auth_start.jpg b/source/images/components/apple_tv/auth_start.jpg new file mode 100644 index 00000000000..6a35609c996 Binary files /dev/null and b/source/images/components/apple_tv/auth_start.jpg differ diff --git a/source/images/components/apple_tv/authenticate.png b/source/images/components/apple_tv/authenticate.png new file mode 100644 index 00000000000..4a9a4020f77 Binary files /dev/null and b/source/images/components/apple_tv/authenticate.png differ diff --git a/source/images/components/apple_tv/credentials.png b/source/images/components/apple_tv/credentials.png new file mode 100644 index 00000000000..90b04fb5560 Binary files /dev/null and b/source/images/components/apple_tv/credentials.png differ diff --git a/source/images/components/apple_tv/scan_result.jpg b/source/images/components/apple_tv/scan_result.jpg new file mode 100644 index 00000000000..0051f451666 Binary files /dev/null and b/source/images/components/apple_tv/scan_result.jpg differ diff --git a/source/images/components/apple_tv/scan_start.jpg b/source/images/components/apple_tv/scan_start.jpg new file mode 100644 index 00000000000..2b40fbf2265 Binary files /dev/null and b/source/images/components/apple_tv/scan_start.jpg differ diff --git a/source/images/components/calendar/todoist-108x108.png b/source/images/components/calendar/todoist-108x108.png new file mode 100755 index 00000000000..c42b03442ab Binary files /dev/null and b/source/images/components/calendar/todoist-108x108.png differ diff --git a/source/images/components/calendar/todoist-512x512.png b/source/images/components/calendar/todoist-512x512.png new file mode 100755 index 00000000000..a13789ee76d Binary files /dev/null and b/source/images/components/calendar/todoist-512x512.png differ diff --git a/source/images/components/gpslogger/custom-url.png b/source/images/components/gpslogger/custom-url.png new file mode 100644 index 00000000000..13a20ecd2c5 Binary files /dev/null and b/source/images/components/gpslogger/custom-url.png differ diff --git a/source/images/components/gpslogger/logging-details.png b/source/images/components/gpslogger/logging-details.png new file mode 100644 index 00000000000..ff5e3c84599 Binary files /dev/null and b/source/images/components/gpslogger/logging-details.png differ diff --git a/source/images/components/gpslogger/performance.png b/source/images/components/gpslogger/performance.png new file mode 100644 index 00000000000..958b0574f9d Binary files /dev/null and b/source/images/components/gpslogger/performance.png differ diff --git a/source/images/components/gpslogger/settings.png b/source/images/components/gpslogger/settings.png new file mode 100644 index 00000000000..c752c7df3ec Binary files /dev/null and b/source/images/components/gpslogger/settings.png differ diff --git a/source/images/components/ifttt/setup_service.png b/source/images/components/ifttt/setup_service.png index ab9685921b9..c4fc848b182 100644 Binary files a/source/images/components/ifttt/setup_service.png and b/source/images/components/ifttt/setup_service.png differ diff --git a/source/images/components/pyload/pyload_speed.png b/source/images/components/pyload/pyload_speed.png new file mode 100644 index 00000000000..a4251c04025 Binary files /dev/null and b/source/images/components/pyload/pyload_speed.png differ diff --git a/source/images/components/thethingsnetwork/access_key.png b/source/images/components/thethingsnetwork/access_key.png new file mode 100644 index 00000000000..16017540bc3 Binary files /dev/null and b/source/images/components/thethingsnetwork/access_key.png differ diff --git a/source/images/components/thethingsnetwork/add_integration.png b/source/images/components/thethingsnetwork/add_integration.png new file mode 100644 index 00000000000..8b48b3338d0 Binary files /dev/null and b/source/images/components/thethingsnetwork/add_integration.png differ diff --git a/source/images/components/thethingsnetwork/applications.png b/source/images/components/thethingsnetwork/applications.png new file mode 100644 index 00000000000..00dd6a1be1a Binary files /dev/null and b/source/images/components/thethingsnetwork/applications.png differ diff --git a/source/images/components/thethingsnetwork/choose_integration.png b/source/images/components/thethingsnetwork/choose_integration.png new file mode 100644 index 00000000000..0bdd41ea7ea Binary files /dev/null and b/source/images/components/thethingsnetwork/choose_integration.png differ diff --git a/source/images/components/thethingsnetwork/confirm_integration.png b/source/images/components/thethingsnetwork/confirm_integration.png new file mode 100644 index 00000000000..436514c192e Binary files /dev/null and b/source/images/components/thethingsnetwork/confirm_integration.png differ diff --git a/source/images/components/thethingsnetwork/devices.png b/source/images/components/thethingsnetwork/devices.png new file mode 100644 index 00000000000..36864146e11 Binary files /dev/null and b/source/images/components/thethingsnetwork/devices.png differ diff --git a/source/images/components/thethingsnetwork/storage_integration.png b/source/images/components/thethingsnetwork/storage_integration.png new file mode 100644 index 00000000000..8e5058911d2 Binary files /dev/null and b/source/images/components/thethingsnetwork/storage_integration.png differ diff --git a/source/images/hadashboard/dash.png b/source/images/hadashboard/dash.png deleted file mode 100755 index 5f5a4c3d546..00000000000 Binary files a/source/images/hadashboard/dash.png and /dev/null differ diff --git a/source/images/hadashboard/dash1.png b/source/images/hadashboard/dash1.png new file mode 100755 index 00000000000..4d64b37cd07 Binary files /dev/null and b/source/images/hadashboard/dash1.png differ diff --git a/source/images/hadashboard/dash2.png b/source/images/hadashboard/dash2.png new file mode 100755 index 00000000000..300af6bbd2b Binary files /dev/null and b/source/images/hadashboard/dash2.png differ diff --git a/source/images/hadashboard/dash3.png b/source/images/hadashboard/dash3.png new file mode 100755 index 00000000000..94c9c395be6 Binary files /dev/null and b/source/images/hadashboard/dash3.png differ diff --git a/source/images/hadashboard/dash4.png b/source/images/hadashboard/dash4.png new file mode 100755 index 00000000000..5ff6489a024 Binary files /dev/null and b/source/images/hadashboard/dash4.png differ diff --git a/source/images/hadashboard/dash5.png b/source/images/hadashboard/dash5.png new file mode 100755 index 00000000000..c66001ec2c4 Binary files /dev/null and b/source/images/hadashboard/dash5.png differ diff --git a/source/images/hassio/screenshots/addon-hass-configurator.png b/source/images/hassio/screenshots/addon-hass-configurator.png new file mode 100644 index 00000000000..e705423f3d3 Binary files /dev/null and b/source/images/hassio/screenshots/addon-hass-configurator.png differ diff --git a/source/images/hassio/screenshots/addon_repository_editor.png b/source/images/hassio/screenshots/addon_repository_editor.png deleted file mode 100644 index e0e2b212886..00000000000 Binary files a/source/images/hassio/screenshots/addon_repository_editor.png and /dev/null differ diff --git a/source/images/hassio/screenshots/dashboard.png b/source/images/hassio/screenshots/dashboard.png new file mode 100644 index 00000000000..997fad3d223 Binary files /dev/null and b/source/images/hassio/screenshots/dashboard.png differ diff --git a/source/images/hassio/screenshots/first-start.png b/source/images/hassio/screenshots/first-start.png new file mode 100644 index 00000000000..a8166e119cc Binary files /dev/null and b/source/images/hassio/screenshots/first-start.png differ diff --git a/source/images/hassio/screenshots/main_panel_store_icon.png b/source/images/hassio/screenshots/main_panel_store_icon.png index a6b04be1134..27e650fdf9d 100644 Binary files a/source/images/hassio/screenshots/main_panel_store_icon.png and b/source/images/hassio/screenshots/main_panel_store_icon.png differ diff --git a/source/images/hassio/screenshots/repositories_editor.png b/source/images/hassio/screenshots/repositories_editor.png index a02427d1659..9c3df30568c 100644 Binary files a/source/images/hassio/screenshots/repositories_editor.png and b/source/images/hassio/screenshots/repositories_editor.png differ diff --git a/source/images/hassio/screenshots/ssh-upgrade.png b/source/images/hassio/screenshots/ssh-upgrade.png new file mode 100644 index 00000000000..c4f7bf42825 Binary files /dev/null and b/source/images/hassio/screenshots/ssh-upgrade.png differ diff --git a/source/images/press/LinuxMagazine.png b/source/images/press/LinuxMagazine.png new file mode 100644 index 00000000000..d548fc01ce9 Binary files /dev/null and b/source/images/press/LinuxMagazine.png differ diff --git a/source/images/press/linux.com.png b/source/images/press/linux.com.png new file mode 100644 index 00000000000..e9b56143186 Binary files /dev/null and b/source/images/press/linux.com.png differ diff --git a/source/images/press/opensource.com.svg b/source/images/press/opensource.com.svg new file mode 100644 index 00000000000..1f0df7a6365 --- /dev/null +++ b/source/images/press/opensource.com.svg @@ -0,0 +1 @@ + diff --git a/source/images/press/producthunt.com.png b/source/images/press/producthunt.com.png new file mode 100644 index 00000000000..eeca2f43a18 Binary files /dev/null and b/source/images/press/producthunt.com.png differ diff --git a/source/images/press/wired.com.svg b/source/images/press/wired.com.svg new file mode 100644 index 00000000000..0ff161d90f0 --- /dev/null +++ b/source/images/press/wired.com.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/images/screenshots/discord-api.png b/source/images/screenshots/discord-api.png new file mode 100644 index 00000000000..6ba73027993 Binary files /dev/null and b/source/images/screenshots/discord-api.png differ diff --git a/source/images/screenshots/discord-auth.png b/source/images/screenshots/discord-auth.png new file mode 100644 index 00000000000..a34c06dc629 Binary files /dev/null and b/source/images/screenshots/discord-auth.png differ diff --git a/source/images/screenshots/discord-bot.png b/source/images/screenshots/discord-bot.png new file mode 100644 index 00000000000..11da0c9764a Binary files /dev/null and b/source/images/screenshots/discord-bot.png differ diff --git a/source/images/screenshots/geo-rss-incidents-group-screenshot.png b/source/images/screenshots/geo-rss-incidents-group-screenshot.png new file mode 100644 index 00000000000..cca54f6d751 Binary files /dev/null and b/source/images/screenshots/geo-rss-incidents-group-screenshot.png differ diff --git a/source/images/screenshots/history_graph.png b/source/images/screenshots/history_graph.png new file mode 100644 index 00000000000..2478ff77e83 Binary files /dev/null and b/source/images/screenshots/history_graph.png differ diff --git a/source/images/screenshots/netatmo_api.png b/source/images/screenshots/netatmo_api.png index 8f0a1802307..932a066a1c2 100644 Binary files a/source/images/screenshots/netatmo_api.png and b/source/images/screenshots/netatmo_api.png differ diff --git a/source/images/screenshots/netatmo_app.png b/source/images/screenshots/netatmo_app.png index 95cd21e12e0..e94e1486848 100644 Binary files a/source/images/screenshots/netatmo_app.png and b/source/images/screenshots/netatmo_app.png differ diff --git a/source/images/screenshots/netatmo_create.png b/source/images/screenshots/netatmo_create.png index f268b27aad5..5f5a4ea2815 100644 Binary files a/source/images/screenshots/netatmo_create.png and b/source/images/screenshots/netatmo_create.png differ diff --git a/source/images/screenshots/sabnzbd-configure.png b/source/images/screenshots/sabnzbd-configure.png new file mode 100644 index 00000000000..570b0f18fb1 Binary files /dev/null and b/source/images/screenshots/sabnzbd-configure.png differ diff --git a/source/images/screenshots/snips_modules.png b/source/images/screenshots/snips_modules.png new file mode 100644 index 00000000000..60235f65681 Binary files /dev/null and b/source/images/screenshots/snips_modules.png differ diff --git a/source/images/screenshots/snips_nlu.png b/source/images/screenshots/snips_nlu.png new file mode 100644 index 00000000000..b589f3f1cfc Binary files /dev/null and b/source/images/screenshots/snips_nlu.png differ diff --git a/source/images/screenshots/supervisor.png b/source/images/screenshots/supervisor.png new file mode 100644 index 00000000000..36e71bc34e1 Binary files /dev/null and b/source/images/screenshots/supervisor.png differ diff --git a/source/images/supported_brands/abode.jpg b/source/images/supported_brands/abode.jpg new file mode 100644 index 00000000000..51a0ac77c06 Binary files /dev/null and b/source/images/supported_brands/abode.jpg differ diff --git a/source/images/supported_brands/airvisual.jpg b/source/images/supported_brands/airvisual.jpg new file mode 100644 index 00000000000..ddce6892ae7 Binary files /dev/null and b/source/images/supported_brands/airvisual.jpg differ diff --git a/source/images/supported_brands/apiai.png b/source/images/supported_brands/apiai.png deleted file mode 100644 index d0d1e5fe764..00000000000 Binary files a/source/images/supported_brands/apiai.png and /dev/null differ diff --git a/source/images/supported_brands/bluesound.png b/source/images/supported_brands/bluesound.png new file mode 100644 index 00000000000..6fe2bc494a0 Binary files /dev/null and b/source/images/supported_brands/bluesound.png differ diff --git a/source/images/supported_brands/buienradar.png b/source/images/supported_brands/buienradar.png new file mode 100644 index 00000000000..2ef0a65fd0e Binary files /dev/null and b/source/images/supported_brands/buienradar.png differ diff --git a/source/images/supported_brands/cisco.png b/source/images/supported_brands/cisco.png index 7aff7da2e0b..f69f9682f7b 100644 Binary files a/source/images/supported_brands/cisco.png and b/source/images/supported_brands/cisco.png differ diff --git a/source/images/supported_brands/citybikes.png b/source/images/supported_brands/citybikes.png new file mode 100644 index 00000000000..e214866fef4 Binary files /dev/null and b/source/images/supported_brands/citybikes.png differ diff --git a/source/images/supported_brands/clickatell.png b/source/images/supported_brands/clickatell.png new file mode 100644 index 00000000000..6483c877aa0 Binary files /dev/null and b/source/images/supported_brands/clickatell.png differ diff --git a/source/images/supported_brands/clicksend.png b/source/images/supported_brands/clicksend.png new file mode 100644 index 00000000000..ba157f03980 Binary files /dev/null and b/source/images/supported_brands/clicksend.png differ diff --git a/source/images/supported_brands/deluge.png b/source/images/supported_brands/deluge.png new file mode 100644 index 00000000000..75f4a16a182 Binary files /dev/null and b/source/images/supported_brands/deluge.png differ diff --git a/source/images/supported_brands/dialogflow.png b/source/images/supported_brands/dialogflow.png new file mode 100644 index 00000000000..8be89e7af99 Binary files /dev/null and b/source/images/supported_brands/dialogflow.png differ diff --git a/source/images/supported_brands/doorbird.png b/source/images/supported_brands/doorbird.png new file mode 100644 index 00000000000..64078a710b8 Binary files /dev/null and b/source/images/supported_brands/doorbird.png differ diff --git a/source/images/supported_brands/dublin_bus.png b/source/images/supported_brands/dublin_bus.png new file mode 100644 index 00000000000..2916158ca24 Binary files /dev/null and b/source/images/supported_brands/dublin_bus.png differ diff --git a/source/images/supported_brands/dweet.png b/source/images/supported_brands/dweet.png index 8877fa9d320..7f6a695c890 100644 Binary files a/source/images/supported_brands/dweet.png and b/source/images/supported_brands/dweet.png differ diff --git a/source/images/supported_brands/egardia.png b/source/images/supported_brands/egardia.png new file mode 100644 index 00000000000..52669046457 Binary files /dev/null and b/source/images/supported_brands/egardia.png differ diff --git a/source/images/supported_brands/ephcontrolsember.png b/source/images/supported_brands/ephcontrolsember.png new file mode 100644 index 00000000000..e57df2a577e Binary files /dev/null and b/source/images/supported_brands/ephcontrolsember.png differ diff --git a/source/images/supported_brands/etherscan.png b/source/images/supported_brands/etherscan.png index 3d7aaa29512..182494e16d3 100755 Binary files a/source/images/supported_brands/etherscan.png and b/source/images/supported_brands/etherscan.png differ diff --git a/source/images/supported_brands/fail2ban.png b/source/images/supported_brands/fail2ban.png new file mode 100644 index 00000000000..e834a38bf86 Binary files /dev/null and b/source/images/supported_brands/fail2ban.png differ diff --git a/source/images/supported_brands/geizhals.png b/source/images/supported_brands/geizhals.png new file mode 100644 index 00000000000..d31300465b3 Binary files /dev/null and b/source/images/supported_brands/geizhals.png differ diff --git a/source/images/supported_brands/geofency.png b/source/images/supported_brands/geofency.png new file mode 100644 index 00000000000..e8cd6b49508 Binary files /dev/null and b/source/images/supported_brands/geofency.png differ diff --git a/source/images/supported_brands/google-assistant.png b/source/images/supported_brands/google-assistant.png new file mode 100644 index 00000000000..16a47ab4884 Binary files /dev/null and b/source/images/supported_brands/google-assistant.png differ diff --git a/source/images/supported_brands/google_domains.png b/source/images/supported_brands/google_domains.png new file mode 100644 index 00000000000..a8b6ca94610 Binary files /dev/null and b/source/images/supported_brands/google_domains.png differ diff --git a/source/images/supported_brands/google_wifi.png b/source/images/supported_brands/google_wifi.png new file mode 100644 index 00000000000..5a644851668 Binary files /dev/null and b/source/images/supported_brands/google_wifi.png differ diff --git a/source/images/supported_brands/hipchat.png b/source/images/supported_brands/hipchat.png new file mode 100644 index 00000000000..b6ad5b06a05 Binary files /dev/null and b/source/images/supported_brands/hipchat.png differ diff --git a/source/images/supported_brands/huawei.svg b/source/images/supported_brands/huawei.svg new file mode 100644 index 00000000000..657e365869e --- /dev/null +++ b/source/images/supported_brands/huawei.svg @@ -0,0 +1,475 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/images/supported_brands/icann.png b/source/images/supported_brands/icann.png new file mode 100644 index 00000000000..47c422601d4 Binary files /dev/null and b/source/images/supported_brands/icann.png differ diff --git a/source/images/supported_brands/irishrail.png b/source/images/supported_brands/irishrail.png new file mode 100644 index 00000000000..204e1c2f899 Binary files /dev/null and b/source/images/supported_brands/irishrail.png differ diff --git a/source/images/supported_brands/irobot_roomba.png b/source/images/supported_brands/irobot_roomba.png new file mode 100644 index 00000000000..aeabd8c459d Binary files /dev/null and b/source/images/supported_brands/irobot_roomba.png differ diff --git a/source/images/supported_brands/keenetic.png b/source/images/supported_brands/keenetic.png new file mode 100644 index 00000000000..4a5b720018b Binary files /dev/null and b/source/images/supported_brands/keenetic.png differ diff --git a/source/images/supported_brands/lametric.png b/source/images/supported_brands/lametric.png new file mode 100644 index 00000000000..5e8e319a6bf Binary files /dev/null and b/source/images/supported_brands/lametric.png differ diff --git a/source/images/supported_brands/linode.png b/source/images/supported_brands/linode.png new file mode 100644 index 00000000000..c776faa744b Binary files /dev/null and b/source/images/supported_brands/linode.png differ diff --git a/source/images/supported_brands/london_underground.png b/source/images/supported_brands/london_underground.png new file mode 100644 index 00000000000..8c4528ccbfd Binary files /dev/null and b/source/images/supported_brands/london_underground.png differ diff --git a/source/images/supported_brands/luftdaten.png b/source/images/supported_brands/luftdaten.png new file mode 100644 index 00000000000..16218ae6a76 Binary files /dev/null and b/source/images/supported_brands/luftdaten.png differ diff --git a/source/images/supported_brands/monoprice.svg b/source/images/supported_brands/monoprice.svg new file mode 100644 index 00000000000..c65cabf1877 --- /dev/null +++ b/source/images/supported_brands/monoprice.svg @@ -0,0 +1,105 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/source/images/supported_brands/mopar.png b/source/images/supported_brands/mopar.png new file mode 100644 index 00000000000..3e3b411d8ef Binary files /dev/null and b/source/images/supported_brands/mopar.png differ diff --git a/source/images/supported_brands/mycroft.png b/source/images/supported_brands/mycroft.png new file mode 100644 index 00000000000..b1febebe866 Binary files /dev/null and b/source/images/supported_brands/mycroft.png differ diff --git a/source/images/supported_brands/namecheap.png b/source/images/supported_brands/namecheap.png new file mode 100644 index 00000000000..d700d390ad8 Binary files /dev/null and b/source/images/supported_brands/namecheap.png differ diff --git a/source/images/supported_brands/nederlandse_spoorwegen.png b/source/images/supported_brands/nederlandse_spoorwegen.png new file mode 100644 index 00000000000..f18ddb15ed7 Binary files /dev/null and b/source/images/supported_brands/nederlandse_spoorwegen.png differ diff --git a/source/images/supported_brands/nello.png b/source/images/supported_brands/nello.png new file mode 100644 index 00000000000..a815d8730cb Binary files /dev/null and b/source/images/supported_brands/nello.png differ diff --git a/source/images/supported_brands/noip.png b/source/images/supported_brands/noip.png new file mode 100644 index 00000000000..862b4fcaa59 Binary files /dev/null and b/source/images/supported_brands/noip.png differ diff --git a/source/images/supported_brands/onvif.png b/source/images/supported_brands/onvif.png new file mode 100644 index 00000000000..4030b2fe273 Binary files /dev/null and b/source/images/supported_brands/onvif.png differ diff --git a/source/images/supported_brands/openhardwaremonitor.png b/source/images/supported_brands/openhardwaremonitor.png new file mode 100644 index 00000000000..1d34eda76f8 Binary files /dev/null and b/source/images/supported_brands/openhardwaremonitor.png differ diff --git a/source/images/supported_brands/polly.png b/source/images/supported_brands/polly.png index e3719853e91..850ccb14068 100644 Binary files a/source/images/supported_brands/polly.png and b/source/images/supported_brands/polly.png differ diff --git a/source/images/supported_brands/prometheus.png b/source/images/supported_brands/prometheus.png new file mode 100644 index 00000000000..2ef61724233 Binary files /dev/null and b/source/images/supported_brands/prometheus.png differ diff --git a/source/images/supported_brands/prowl.png b/source/images/supported_brands/prowl.png new file mode 100644 index 00000000000..c913e8dfe85 Binary files /dev/null and b/source/images/supported_brands/prowl.png differ diff --git a/source/images/supported_brands/pyload.png b/source/images/supported_brands/pyload.png new file mode 100644 index 00000000000..d7740588ae7 Binary files /dev/null and b/source/images/supported_brands/pyload.png differ diff --git a/source/images/supported_brands/rainbird.png b/source/images/supported_brands/rainbird.png new file mode 100644 index 00000000000..fee1def08e8 Binary files /dev/null and b/source/images/supported_brands/rainbird.png differ diff --git a/source/images/supported_brands/raincloud.jpg b/source/images/supported_brands/raincloud.jpg new file mode 100644 index 00000000000..81957811fb7 Binary files /dev/null and b/source/images/supported_brands/raincloud.jpg differ diff --git a/source/images/supported_brands/rainmachine.png b/source/images/supported_brands/rainmachine.png new file mode 100644 index 00000000000..15fd5faaa64 Binary files /dev/null and b/source/images/supported_brands/rainmachine.png differ diff --git a/source/images/supported_brands/rememberthemilk.png b/source/images/supported_brands/rememberthemilk.png new file mode 100644 index 00000000000..04bbc33fcbb Binary files /dev/null and b/source/images/supported_brands/rememberthemilk.png differ diff --git a/source/images/supported_brands/rocketchat.png b/source/images/supported_brands/rocketchat.png new file mode 100644 index 00000000000..912112d2c97 Binary files /dev/null and b/source/images/supported_brands/rocketchat.png differ diff --git a/source/images/supported_brands/rss.png b/source/images/supported_brands/rss.png new file mode 100644 index 00000000000..7a6881c3319 Binary files /dev/null and b/source/images/supported_brands/rss.png differ diff --git a/source/images/supported_brands/satel.jpg b/source/images/supported_brands/satel.jpg new file mode 100644 index 00000000000..2c47cdcc0e9 Binary files /dev/null and b/source/images/supported_brands/satel.jpg differ diff --git a/source/images/supported_brands/shodan.png b/source/images/supported_brands/shodan.png new file mode 100644 index 00000000000..2df58bcd660 Binary files /dev/null and b/source/images/supported_brands/shodan.png differ diff --git a/source/images/supported_brands/skybell.png b/source/images/supported_brands/skybell.png new file mode 100644 index 00000000000..98ee75fbc66 Binary files /dev/null and b/source/images/supported_brands/skybell.png differ diff --git a/source/images/supported_brands/slack.png b/source/images/supported_brands/slack.png index 07654fbc9f8..90c8c17a41b 100644 Binary files a/source/images/supported_brands/slack.png and b/source/images/supported_brands/slack.png differ diff --git a/source/images/supported_brands/snips.png b/source/images/supported_brands/snips.png new file mode 100644 index 00000000000..ec98a5f2a6f Binary files /dev/null and b/source/images/supported_brands/snips.png differ diff --git a/source/images/supported_brands/sytadin.png b/source/images/supported_brands/sytadin.png new file mode 100644 index 00000000000..407749e4546 Binary files /dev/null and b/source/images/supported_brands/sytadin.png differ diff --git a/source/images/supported_brands/tank_utility.png b/source/images/supported_brands/tank_utility.png new file mode 100644 index 00000000000..2dbdf66f182 Binary files /dev/null and b/source/images/supported_brands/tank_utility.png differ diff --git a/source/images/supported_brands/tesla.png b/source/images/supported_brands/tesla.png new file mode 100644 index 00000000000..947cd01e813 Binary files /dev/null and b/source/images/supported_brands/tesla.png differ diff --git a/source/images/supported_brands/thethingsnetwork.png b/source/images/supported_brands/thethingsnetwork.png new file mode 100644 index 00000000000..5fff0d35a40 Binary files /dev/null and b/source/images/supported_brands/thethingsnetwork.png differ diff --git a/source/images/supported_brands/tibber.png b/source/images/supported_brands/tibber.png new file mode 100644 index 00000000000..68825065a04 Binary files /dev/null and b/source/images/supported_brands/tibber.png differ diff --git a/source/images/supported_brands/todoist.png b/source/images/supported_brands/todoist.png new file mode 100755 index 00000000000..f48db3d8e29 Binary files /dev/null and b/source/images/supported_brands/todoist.png differ diff --git a/source/images/supported_brands/toon.png b/source/images/supported_brands/toon.png new file mode 100644 index 00000000000..a0661cad885 Binary files /dev/null and b/source/images/supported_brands/toon.png differ diff --git a/source/images/supported_brands/travisci.svg b/source/images/supported_brands/travisci.svg new file mode 100644 index 00000000000..338571a7c43 --- /dev/null +++ b/source/images/supported_brands/travisci.svg @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/images/supported_brands/twitter.png b/source/images/supported_brands/twitter.png index c9b89357977..58a43c64218 100644 Binary files a/source/images/supported_brands/twitter.png and b/source/images/supported_brands/twitter.png differ diff --git a/source/images/supported_brands/uber.png b/source/images/supported_brands/uber.png index 7a201cd47d5..75dccc056e6 100644 Binary files a/source/images/supported_brands/uber.png and b/source/images/supported_brands/uber.png differ diff --git a/source/images/supported_brands/vanderbilt_spc.png b/source/images/supported_brands/vanderbilt_spc.png index f3409d0c9f2..6d1136ef7d7 100644 Binary files a/source/images/supported_brands/vanderbilt_spc.png and b/source/images/supported_brands/vanderbilt_spc.png differ diff --git a/source/images/supported_brands/velbus.png b/source/images/supported_brands/velbus.png new file mode 100644 index 00000000000..ce95d1308a3 Binary files /dev/null and b/source/images/supported_brands/velbus.png differ diff --git a/source/images/supported_brands/velux.png b/source/images/supported_brands/velux.png new file mode 100644 index 00000000000..fd5a1fa183b Binary files /dev/null and b/source/images/supported_brands/velux.png differ diff --git a/source/images/supported_brands/vizio-smartcast.png b/source/images/supported_brands/vizio-smartcast.png new file mode 100644 index 00000000000..a4b78ca45bf Binary files /dev/null and b/source/images/supported_brands/vizio-smartcast.png differ diff --git a/source/images/supported_brands/vultr.png b/source/images/supported_brands/vultr.png new file mode 100644 index 00000000000..86595f312c1 Binary files /dev/null and b/source/images/supported_brands/vultr.png differ diff --git a/source/images/supported_brands/woonveilig.png b/source/images/supported_brands/woonveilig.png new file mode 100644 index 00000000000..727de7b31f9 Binary files /dev/null and b/source/images/supported_brands/woonveilig.png differ diff --git a/source/images/supported_brands/worldtidesinfo.png b/source/images/supported_brands/worldtidesinfo.png new file mode 100644 index 00000000000..79ae85527ae Binary files /dev/null and b/source/images/supported_brands/worldtidesinfo.png differ diff --git a/source/images/supported_brands/worx.png b/source/images/supported_brands/worx.png new file mode 100644 index 00000000000..884fb79be77 Binary files /dev/null and b/source/images/supported_brands/worx.png differ diff --git a/source/images/supported_brands/yahoo_finance.png b/source/images/supported_brands/yahoo_finance.png index 6f73f5e4be4..6b3d40bff08 100644 Binary files a/source/images/supported_brands/yahoo_finance.png and b/source/images/supported_brands/yahoo_finance.png differ diff --git a/source/images/supported_brands/yeelight.png b/source/images/supported_brands/yeelight.png index 27c7c9a86a5..9469552c65d 100644 Binary files a/source/images/supported_brands/yeelight.png and b/source/images/supported_brands/yeelight.png differ diff --git a/source/images/supported_brands/yesssat.png b/source/images/supported_brands/yesssat.png new file mode 100644 index 00000000000..76da7a8b0a7 Binary files /dev/null and b/source/images/supported_brands/yesssat.png differ diff --git a/source/images/supported_brands/yi.png b/source/images/supported_brands/yi.png new file mode 100644 index 00000000000..c7029bea791 Binary files /dev/null and b/source/images/supported_brands/yi.png differ diff --git a/source/images/supported_brands/zehnder.png b/source/images/supported_brands/zehnder.png new file mode 100644 index 00000000000..fd910207c19 Binary files /dev/null and b/source/images/supported_brands/zehnder.png differ diff --git a/source/index.html b/source/index.html index 89efb8db56e..63e1dde1083 100644 --- a/source/index.html +++ b/source/index.html @@ -9,7 +9,6 @@ is_homepage: true regenerate: true hide_github_edit: true description: Open-source home automation platform running on Python 3. Track and control all devices at home and automate control. Installation in less than a minute. -hide_github_edit: true --- {% assign recent_release_post = site.categories['Release-Notes'].first %} @@ -31,10 +30,13 @@ hide_github_edit: true
    + + + Read our founder's vision for the perfect home automation +
    -
    + +
    +
    +

    Home Assistant in the press

    + + ProductHunt.com logo + + Linux.com logo + + Wired.com logo + + OpenSource.com logo + + Linux Magazine logo + +
    +
    diff --git a/source/privacy/index.markdown b/source/privacy/index.markdown new file mode 100644 index 00000000000..fc63d2812bb --- /dev/null +++ b/source/privacy/index.markdown @@ -0,0 +1,55 @@ +--- +layout: page +title: "Privacy Policy" +description: "Your privacy is super important to us. We will never gather any information from you unless we truly need it." +date: 2017-10-19 01:00 +sidebar: false +comments: false +sharing: true +footer: true +--- + +Your privacy is critically important to us. At Home Assistant, we have a few fundamental principles: + + - We don’t ask you for personal information unless we truly need it. (We can’t stand services that ask you for things like your gender or income level for no apparent reason.) + - We don’t share your personal information with anyone except to comply with the law, develop our products, or protect our rights. + - We don’t store personal information on our servers unless required for the ongoing operation of one of our services. + +If you have questions about deleting or correcting your personal data please contact our support team. + +## {% linkable_title Website Visitors %} +Like most website operators, Home Assistant collects non-personally-identifying information of the sort that web browsers and servers typically make available, such as the browser type, language preference, referring site, and the date and time of each visitor request. Home Assistant’s purpose in collecting non-personally identifying information is to better understand how Home Assistant’s visitors use its website. From time to time, Home Assistant may release non-personally-identifying information in the aggregate, e.g., by publishing a report on trends in the usage of its website. + +Home Assistant also collects potentially personally-identifying information like Internet Protocol (IP) addresses for logged in users and for users leaving comments on the blog or forums. Home Assistant only discloses logged in user and commenter IP addresses under the same circumstances that it uses and discloses personally-identifying information as described below. + +## {% linkable_title Gathering of Personally-Identifying Information %} +Certain visitors to Home Assistant’s websites choose to interact with Home Assistant in ways that require Home Assistant to gather personally-identifying information. The amount and type of information that Home Assistant gathers depends on the nature of the interaction. For example, we ask visitors who create a forum account to provide a username and an email address. Those who engage in transactions with Home Assistant are asked to provide additional information, including as necessary the personal and financial information required to process those transactions. In each case, Home Assistant collects such information only insofar as is necessary or appropriate to fulfill the purpose of the visitor’s interaction with Home Assistant. Home Assistant does not disclose personally-identifying information other than as described below. And visitors can always refuse to supply personally-identifying information, with the caveat that it may prevent them from engaging in certain website-related activities. + +## {% linkable_title Aggregated Statistics %} +Home Assistant may collect statistics about the behavior of visitors to its websites. For instance, Home Assistant may monitor the most popular component documentation. Home Assistant may display this information publicly or provide it to others. However, Home Assistant does not disclose personally-identifying information other than as described below. + +## {% linkable_title Information We Collect from Other Sources %} +With your authorization, we may also obtain information about you from other sources. For example, if you create or log into your WordPress.com account through a social media service (like Facebook or Google) or if you connect your account to a social media service, we will receive information from that service (such as your username, basic profile information, and friends list) via the authorization procedures used by that service. The information we receive depends on which services you authorize and any options that are available. + +## {% linkable_title Protection of Certain Personally-Identifying Information %} +Home Assistant discloses potentially personally-identifying and personally-identifying information only to those of its employees, contractors and affiliated organizations that (i) need to know that information in order to process it on Home Assistant’s behalf or to provide services available at Home Assistant’s websites, and (ii) that have agreed not to disclose it to others. Some of those employees, contractors and affiliated organizations may be located outside of your home country; by using Home Assistant’s websites, you consent to the transfer of such information to them. Home Assistant will not rent or sell potentially personally-identifying and personally-identifying information to anyone. Other than to its employees, contractors and affiliated organizations, as described above, Home Assistant discloses potentially personally-identifying and personally-identifying information only in response to a subpoena, court order or other governmental request, or when Home Assistant believes in good faith that disclosure is reasonably necessary to protect the property or rights of Home Assistant, third parties or the public at large. If you are a registered user of an Home Assistant website and have supplied your email address, Home Assistant may occasionally send you an email to tell you about new features, solicit your feedback, or just keep you up to date with what’s going on with Home Assistant and our products. We primarily use our various product blogs to communicate this type of information, so we expect to keep this type of email to a minimum. If you send us a request (for example via a support email or via one of our feedback mechanisms), we reserve the right to publish it in order to help us clarify or respond to your request or to help us support other users. Home Assistant takes all measures reasonably necessary to protect against the unauthorized access, use, alteration or destruction of potentially personally-identifying and personally-identifying information. + +## {% linkable_title Cookies %} +A cookie is a string of information that a website stores on a visitor’s computer, and that the visitor’s browser provides to the website each time the visitor returns. Home Assistant uses cookies to help Home Assistant identify and track visitors, their usage of Home Assistant website, and their website access preferences. Home Assistant visitors who do not wish to have cookies placed on their computers should set their browsers to refuse cookies before using Home Assistant’s websites, with the drawback that certain features of Home Assistant’s websites may not function properly without the aid of cookies. + +## {% linkable_title Business Transfers %} +If Home Assistant, or substantially all of its assets, were acquired, or in the unlikely event that Home Assistant goes out of business or enters bankruptcy, user information would be one of the assets that is transferred or acquired by a third party. You acknowledge that such transfers may occur, and that any acquirer of Home Assistant may continue to use your personal information as set forth in this policy. + +## {% linkable_title Ads %} +Ads appearing on any of our websites may be delivered to users by advertising partners, who may set cookies. These cookies allow the ad server to recognize your computer each time they send you an online advertisement to compile information about you or others who use your computer. This information allows ad networks to, among other things, deliver targeted advertisements that they believe will be of most interest to you. This Privacy Policy covers the use of cookies by Home Assistant and does not cover the use of cookies by any advertisers. + +## {% linkable_title Privacy Policy Changes %} +Although most changes are likely to be minor, Home Assistant may change its Privacy Policy from time to time, and in Home Assistant’s sole discretion. Home Assistant encourages visitors to frequently check this page for any changes to its Privacy Policy. Your continued use of this site after any change in this Privacy Policy will constitute your acceptance of such change. + +### {% linkable_title Change log %} + - October 19, 2017: Initial version + +_This privacy policy has been adapted from the [Automattic privacy policy][Home Assistant] and is licensed [Creative Commons ShareAlike][cc]._ + +[Home Assistant]: https://automattic.com/privacy/ +[cc]: https://creativecommons.org/licenses/by-sa/4.0/ \ No newline at end of file diff --git a/source/tos/index.markdown b/source/tos/index.markdown new file mode 100644 index 00000000000..cadd9cd4421 --- /dev/null +++ b/source/tos/index.markdown @@ -0,0 +1,109 @@ +--- +layout: page +title: "Terms of Service" +description: "The Terms of Service that should be accepted to own a Home Assistant account." +date: 2017-10-19 01:00 +sidebar: false +comments: false +sharing: true +footer: true +--- + +The following terms and conditions govern all use of the Home Assistant website and all content, services and products available at or through the website, including, but not limited to, Home Assistant Forum Software, Home Assistant Support Forums and the Home Assistant Hosting service ("Hosting"), (taken together, the Website). The Website is owned and operated by Home Assistant. The Website is offered subject to your acceptance without modification of all of the terms and conditions contained herein and all other operating rules, policies (including, without limitation, Home Assistant’s [Privacy Policy](/privacy/) and [Code of Conduct](/code_of_conduct/)) and procedures that may be published from time to time on this Site by Home Assistant (collectively, the "Agreement"). + +Please read this Agreement carefully before accessing or using the Website. By accessing or using any part of the web site, you agree to become bound by the terms and conditions of this agreement. If you do not agree to all the terms and conditions of this agreement, then you may not access the Website or use any services. If these terms and conditions are considered an offer by Home Assistant, acceptance is expressly limited to these terms. The Website is available only to individuals who are at least 13 years old. + +## {% linkable_title 1. Your Home Assistant Account %} + +If you create an account on the Website, you are responsible for maintaining the security of your account and you are fully responsible for all activities that occur under the account. You must immediately notify Home Assistant of any unauthorized uses of your account or any other breaches of security. Home Assistant will not be liable for any acts or omissions by you, including any damages of any kind incurred as a result of such acts or omissions. + +## {% linkable_title 2. Responsibility of Contributors %} + +If you post material to the Website, post links on the Website, or otherwise make (or allow any third party to make) material available by means of the Website (any such material, "Content"), You are entirely responsible for the content of, and any harm resulting from, that Content. That is the case regardless of whether the Content in question constitutes text, graphics, an audio file, or computer software. By making Content available, you represent and warrant that: + +* the downloading, copying and use of the Content will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark or trade secret rights, of any third party; +* if your employer has rights to intellectual property you create, you have either (i) received permission from your employer to post or make available the Content, including but not limited to any software, or (ii) secured from your employer a waiver as to all rights in or to the Content; +* you have fully complied with any third-party licenses relating to the Content, and have done all things necessary to successfully pass through to end users any required terms; +* the Content does not contain or install any viruses, worms, malware, Trojan horses or other harmful or destructive content; +* the Content is not spam, is not machine- or randomly-generated, and does not contain unethical or unwanted commercial content designed to drive traffic to third party sites or boost the search engine rankings of third party sites, or to further unlawful acts (such as phishing) or mislead recipients as to the source of the material (such as spoofing); +* the Content is not pornographic, does not contain threats or incite violence, and does not violate the privacy or publicity rights of any third party; +* your content is not getting advertised via unwanted electronic messages such as spam links on newsgroups, email lists, blogs and web sites, and similar unsolicited promotional methods; +* your content is not named in a manner that misleads your readers into thinking that you are another person or company; and +* you have, in the case of Content that includes computer code, accurately categorized and/or described the type, nature, uses and effects of the materials, whether requested to do so by Home Assistant or otherwise. + +## {% linkable_title 3. User Content License %} + +User contributions are licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License](http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_US). Without limiting any of those representations or warranties, Home Assistant has the right (though not the obligation) to, in Home Assistant’s sole discretion (i) refuse or remove any content that, in Home Assistant’s reasonable opinion, violates any Home Assistant policy or is in any way harmful or objectionable, or (ii) terminate or deny access to and use of the Website to any individual or entity for any reason, in Home Assistant’s sole discretion. Home Assistant will have no obligation to provide a refund of any amounts previously paid. + + +## {% linkable_title 4. Payment and Renewal %} + +### General Terms + +Optional paid services or upgrades may be available on the Website. When utilizing an optional paid service or upgrade, you agree to pay Home Assistant the monthly or annual subscription fees indicated. Payments will be charged on a pre-pay basis on the day you begin utilizing the service or upgrade and will cover the use of that service or upgrade for a monthly or annual subscription period as indicated. These fees are not refundable. + +### Automatic Renewal + +Unless you notify Home Assistant before the end of the applicable subscription period that you want to cancel a service or upgrade, your subscription will automatically renew and you authorize us to collect the then-applicable annual or monthly subscription fee (as well as any taxes) using any credit card or other payment mechanism we have on record for you. Subscriptions can be canceled at any time. + +## {% linkable_title 5. Services %} + +### Hosting, Support Services + +Optional Hosting and Support services may be provided by Home Assistant under the terms and conditions for each such service. By signing up for a Hosting/Support or Support services account, you agree to abide by such terms and conditions. + +## {% linkable_title 6. Responsibility of Website Visitors %} + +Home Assistant has not reviewed, and cannot review, all of the material, including computer software, posted to the Website, and cannot therefore be responsible for that material’s content, use or effects. By operating the Website, Home Assistant does not represent or imply that it endorses the material there posted, or that it believes such material to be accurate, useful or non-harmful. You are responsible for taking precautions as necessary to protect yourself and your computer systems from viruses, worms, Trojan horses, and other harmful or destructive content. The Website may contain content that is offensive, indecent, or otherwise objectionable, as well as content containing technical inaccuracies, typographical mistakes, and other errors. The Website may also contain material that violates the privacy or publicity rights, or infringes the intellectual property and other proprietary rights, of third parties, or the downloading, copying or use of which is subject to additional terms and conditions, stated or unstated. Home Assistant disclaims any responsibility for any harm resulting from the use by visitors of the Website, or from any downloading by those visitors of content there posted. + +## {% linkable_title 7. Content Posted on Other Websites %} + +We have not reviewed, and cannot review, all of the material, including computer software, made available through the websites and webpages to which Home Assistant links, and that link to Home Assistant. Home Assistant does not have any control over those non-Home Assistant websites and webpages, and is not responsible for their contents or their use. By linking to a non-Home Assistant website or webpage, Home Assistant does not represent or imply that it endorses such website or webpage. You are responsible for taking precautions as necessary to protect yourself and your computer systems from viruses, worms, Trojan horses, and other harmful or destructive content. Home Assistant disclaims any responsibility for any harm resulting from your use of non-Home Assistant websites and webpages. + +## {% linkable_title 8. Copyright Infringement and DMCA Policy %} + +As Home Assistant asks others to respect its intellectual property rights, it respects the intellectual property rights of others. If you believe that material located on or linked to by Home Assistant violates your copyright, and if this website resides in the USA, you are encouraged to notify Home Assistant in accordance with Home Assistant’s [Digital Millennium Copyright Act](http://en.wikipedia.org/wiki/Digital_Millennium_Copyright_Act) ("DMCA") Policy. Home Assistant will respond to all such notices, including as required or appropriate by removing the infringing material or disabling all links to the infringing material. Home Assistant will terminate a visitor’s access to and use of the Website if, under appropriate circumstances, the visitor is determined to be a repeat infringer of the copyrights or other intellectual property rights of Home Assistant or others. In the case of such termination, Home Assistant will have no obligation to provide a refund of any amounts previously paid to Home Assistant. + +## {% linkable_title 9. Intellectual Property %} + +This Agreement does not transfer from Home Assistant to you any Home Assistant or third party intellectual property, and all right, title and interest in and to such property will remain (as between the parties) solely with Home Assistant. Home Assistant, Home Assistant, the Home Assistant logo, and all other trademarks, service marks, graphics and logos used in connection with Home Assistant, or the Website are trademarks or registered trademarks of Home Assistant or Home Assistant’s licensors. Other trademarks, service marks, graphics and logos used in connection with the Website may be the trademarks of other third parties. Your use of the Website grants you no right or license to reproduce or otherwise use any Home Assistant or third-party trademarks. + +## {% linkable_title 10. Advertisements %} + +Home Assistant reserves the right to display advertisements on your content unless you have purchased an Ad-free Upgrade or a Services account. + +## {% linkable_title 11. Attribution %} + +Home Assistant reserves the right to display attribution links such as ‘Powered by Home Assistant,’ theme author, and font attribution in your content footer or toolbar. Footer credits and the Home Assistant toolbar may not be removed regardless of upgrades purchased. + +## {% linkable_title 12. Changes %} + +Home Assistant reserves the right, at its sole discretion, to modify or replace any part of this Agreement. It is your responsibility to check this Agreement periodically for changes. Your continued use of or access to the Website following the posting of any changes to this Agreement constitutes acceptance of those changes. Home Assistant may also, in the future, offer new services and/or features through the Website (including, the release of new tools and resources). Such new features and/or services shall be subject to the terms and conditions of this Agreement. + +## {% linkable_title 13. Termination %} + +Home Assistant may terminate your access to all or any part of the Website at any time, with or without cause, with or without notice, effective immediately. If you wish to terminate this Agreement or your Home Assistant account (if you have one), you may simply discontinue using the Website. All provisions of this Agreement which by their nature should survive termination shall survive termination, including, without limitation, ownership provisions, warranty disclaimers, indemnity and limitations of liability. + +## {% linkable_title 14. Disclaimer of Warranties %} + +The Website is provided "as is". Home Assistant and its suppliers and licensors hereby disclaim all warranties of any kind, express or implied, including, without limitation, the warranties of merchantability, fitness for a particular purpose and non-infringement. Neither Home Assistant nor its suppliers and licensors, makes any warranty that the Website will be error free or that access thereto will be continuous or uninterrupted. If you’re actually reading this, here’s [a treat](http://www.newyorker.com/online/blogs/shouts/2012/12/the-hundred-best-lists-of-all-time.html). You understand that you download from, or otherwise obtain content or services through, the Website at your own discretion and risk. + +## {% linkable_title 15. Limitation of Liability %} + +In no event will Home Assistant, or its suppliers or licensors, be liable with respect to any subject matter of this agreement under any contract, negligence, strict liability or other legal or equitable theory for: (i) any special, incidental or consequential damages; (ii) the cost of procurement for substitute products or services; (iii) for interruption of use or loss or corruption of data; or (iv) for any amounts that exceed the fees paid by you to Home Assistant under this agreement during the twelve (12) month period prior to the cause of action. Home Assistant shall have no liability for any failure or delay due to matters beyond their reasonable control. The foregoing shall not apply to the extent prohibited by applicable law. + +## {% linkable_title 16. General Representation and Warranty %} + +You represent and warrant that (i) your use of the Website will be in strict accordance with the Home Assistant [Privacy Policy](/privacy), [Community Guidelines](/guidelines), with this Agreement and with all applicable laws and regulations (including without limitation any local laws or regulations in your country, state, city, or other governmental area, regarding online conduct and acceptable content, and including all applicable laws regarding the transmission of technical data exported from the country in which this website resides or the country in which you reside) and (ii) your use of the Website will not infringe or misappropriate the intellectual property rights of any third party. + +## {% linkable_title 17. Indemnification %} + +You agree to indemnify and hold harmless Home Assistant, its contractors, and its licensors, and their respective directors, officers, employees and agents from and against any and all claims and expenses, including attorneys’ fees, arising out of your use of the Website, including but not limited to your violation of this Agreement. + +## {% linkable_title 18. Miscellaneous %} + +This Agreement constitutes the entire agreement between Home Assistant and you concerning the subject matter hereof, and they may only be modified by a written amendment signed by an authorized executive of Home Assistant, or by the posting by Home Assistant of a revised version. Except to the extent applicable law, if any, provides otherwise, this Agreement, any access to or use of the Website will be governed by the laws of the state of California, U.S.A., excluding its conflict of law provisions, and the proper venue for any disputes arising out of or relating to any of the same will be the state and federal courts located in San Francisco County, California. Except for claims for injunctive or equitable relief or claims regarding intellectual property rights (which may be brought in any competent court without the posting of a bond), any dispute arising under this Agreement shall be finally settled in accordance with the Comprehensive Arbitration Rules of the Judicial Arbitration and Mediation Service, Inc. (“JAMS”) by three arbitrators appointed in accordance with such Rules. The arbitration shall take place in San Francisco, California, in the English language and the arbitral decision may be enforced in any court. The prevailing party in any action or proceeding to enforce this Agreement shall be entitled to costs and attorneys’ fees. If any part of this Agreement is held invalid or unenforceable, that part will be construed to reflect the parties’ original intent, and the remaining portions will remain in full force and effect. A waiver by either party of any term or condition of this Agreement or any breach thereof, in any one instance, will not waive such term or condition or any subsequent breach thereof. You may assign your rights under this Agreement to any party that consents to, and agrees to be bound by, its terms and conditions; Home Assistant may assign its rights under this Agreement without condition. This Agreement will be binding upon and will inure to the benefit of the parties, their successors and permitted assigns. + +This document is CC-BY-SA. It was last updated February 20, 2017. + +Originally adapted from the [WordPress Terms of Service](http://en.wordpress.com/tos/). \ No newline at end of file